Files
pluriwave/openspec/changes/eq-device-autoswitch-ux/explore.md
T
FreeTLab bccc5c48b8
Build & Deploy PluriWave / Análisis de código (push) Successful in 38s
Build & Deploy PluriWave / Build APK + AAB release (push) Successful in 2m30s
docs(openspec): add SDD artifact trail for recent alarm and EQ changes
Persist the exploration, proposal, spec, design, tasks, and
verify/archive reports produced during the multi-device EQ,
alarm-countdown, and notification-visual-polish SDD cycles.
2026-07-04 12:42:11 +02:00

31 lines
1.6 KiB
Markdown

# Exploration: EQ Device Auto-Switch & Settings UX
## Bug: EQ doesn't auto-switch on device connect/disconnect
### Root Cause
`EstadoEcualizador.cargarPersistido()` never calls `obtenerDispositivoActual()` at startup. `_dispositivoActualId` stays `null`, so `_resolverPresetActivo()` always returns `_presetPrincipal` (device preset never applied) until the next physical connect/disconnect event.
### What works correctly
Once `_dispositivoActualId` is set (via a stream event), `_onDispositivoCambiado()` correctly: sets ID, bootstraps first-seen device, re-resolves 4-level hierarchy, applies preset, notifies listeners.
### Fix
Call `obtenerDispositivoActual()` in `cargarPersistido()` after `_configurarSuscripcionDispositivo()` to seed initial device ID.
## Feature: Settings Device List Improvements
### Current state
`_SeccionEcualizadorAvanzado` shows raw device IDs (`bt_a2dp:AA:BB:CC`) + preset name. No connection indicator, no renaming, no EQ editing.
### Needed
1. Connection status indicator (green dot if `entry.key == eq.dispositivoActualId`)
2. Device custom name storage (`eq_nombres_dispositivos_v1` SP key)
3. Display name fallback: `customName ?? platformName (non-empty) ?? deviceId`
4. Modal bottom sheet for device editing: rename TextField + EcualizadorWidget
5. Follows existing modal pattern: `showModalBottomSheet(showDragHandle: true, isScrollControlled: true)`
## Affected Files
- `lib/estado/estado_ecualizador.dart` — fix init + rename API
- `lib/servicios/servicio_ecualizador.dart` — new SP key for names
- `lib/pantallas/pantalla_ajustes.dart` — rewrite device section + new modal
- Tests for all changes