# NaviPort v0.2.0 Beta (PortMaster Edition)

NaviPort es un cliente nativo, ultraligero y de alto rendimiento hecho específicamente para la plataforma PortMaster. Está diseñado para reproducir música en streaming desde servidores Navidrome/Subsonic directamente en consolas portátiles ARM Linux bajo entornos de emulación (Knulli, ArkOS, Batocera, etc.).

## Características Técnicas de la v0.2.0

*   **Motor Asíncrono (Daemon Threads)**: Las llamadas HTTP y la descarga de carátulas se ejecutan en hilos secundarios. Esto elimina los cuellos de botella de red y garantiza una interfaz (Pygame) fluida y sin congelaciones.
*   **Memoria de Navegación (State Stack)**: Pila de historial integrada. Al retroceder entre menús, el sistema recuerda instantáneamente tu posición, la lista cargada y el nivel exacto de scroll.
*   **Telemetría en Tiempo Real**: Lector asíncrono que muestra el porcentaje de batería real del dispositivo y un reloj del sistema actualizados en la esquina superior derecha.
*   **Marquee Engine 2.0**: Renderizado de texto animado cíclico. Tanto los títulos en las listas como el HUD inferior desplazan horizontalmente los nombres largos para asegurar la legibilidad total.
*   **Arquitectura Híbrida e IPC Sockets**: Control de audio preciso mediante comunicación bidireccional por sockets UNIX (`/tmp/naviport_mpv_socket`) con el proceso nativo `mpv`.
*   **Diseño Zero-Write**: El software no realiza escrituras persistentes en la tarjeta SD durante la ejecución. Toda la caché de imágenes y datos se gestiona en memoria volátil (RAM), protegiendo la integridad y vida útil de tu tarjeta SD.

## Estructura de Archivos

`roms/`
`└── ports/`
`    ├── NaviPort.sh                # Script iniciador`
`    └── naviport/`
`        ├── main.py                # Núcleo del programa`
`        ├── config.json            # Credenciales del servidor`
`        └── README.md              # Este manual`

## Configuración Inicial

Edita el archivo `naviport/config.json` con los datos de tu servidor:

`{`
`    "server_url": "http://192.168.1.X:4533",`
`    "username": "tu_usuario",`
`    "password": "tu_contraseña"`
`}`

*Nota: Para evitar que la pantalla se atenúe durante la escucha, asegúrate de configurar el "Tiempo de salvapantallas" en 0 (o "Nunca") desde las opciones de configuración de tu sistema operativo.*

## Estructura de Navegación y Controles

### Menú Principal
*   **Álbumes**: Filtrado rápido por selección Aleatoria, Recientes o Alfabético.
*   **Artistas**: Índice alfabético completo.
*   **Playlists**: Acceso a tus listas de reproducción personales.

### Navegación General
*   **Cruceta Arriba / Abajo**: Moverse de 1 en 1 por los menús o listas. Mantenlo pulsado para activar el scroll acelerado.
*   **Cruceta Izquierda / Derecha**:
    *   **En menús principales**: Salto de página rápido (bloques de 10).
    *   **En lista de canciones**: Salto a la pista anterior o siguiente, interrumpiendo el flujo sonoro actual.

### Acciones de Botones
*   **Botón A**: Entrar a la sección / Cargar contenido / Reproducir selección.
*   **Botón B**: Volver atrás a la pantalla anterior (gestiona el historial de navegación).
*   **Botón Y**: Activar / Desactivar Modo Aleatorio (Shuffle).
*   **Botón X**: Pausar / Reanudar música.

### Control de Volumen (ALSA Backend)
*   **Botón L1**: Bajar volumen del sistema un 5%.
*   **Botón R1**: Subir volumen del sistema un 5%.

### Salida Segura
*   **SELECT + START**: Cierre limpio de subprocesos. Envía la señal de salida al demonio de `mpv` y libera la tarjeta de sonido, devolviendo el control a EmulationStation de forma segura.