docs(media-player): el handoff recoge las cuatro entregas de la tarde

Waveform visible, velocidad bajable, API de eventos y transporte de lista.
Con la leccion reutilizable: componer un primitivo desde soma deja su receta
fuera, la carga el componente que lo compone.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
alpha-0.1-dir-prefs
dev 2 months ago
parent dbd239bcc2
commit 6f0f438f30

@ -305,8 +305,44 @@ De este hilo quedan **cuatro cosas, y ninguna es código a ciegas**:
4. **El rojo de `audio-player` en `lint.test.ts`** — guard compartido, decisión
pendiente entre categoría nueva o `KNOWN_MISSING_MORFO`.
## Sesión 2026-08-04 (tarde) — cuatro entregas, todas verificadas en navegador
Commits `ee51172d8` · `5cbb03904` · `dbd239bcc` (+ el waveform, `127c4c95b`).
El detalle está en los mensajes y en el README de eidos del componente; aquí
sólo lo que cambia el mapa.
1. **El waveform ya se VE en la demo.** No se veía por dos causas encadenadas:
el scrubber compone el Waveform de _soma_, así que su envoltorio de eidos
nunca montaba y **su receta no se importaba** (onda sin estilar, 255px de
alto); y la muestra local era `whoosh.wav`, de **0,18 s**. El player carga
ahora `waveform.css` igual que ya cargaba `slider.css`, y la demo usa
`/music/t2.wav` (2:44). ⚠️ **Lección reutilizable**: componer un primitivo
desde soma deja su receta fuera — la carga el componente que lo compone.
2. **La velocidad ya se puede BAJAR** (`RateFloat`). El `RateButton` sólo subía
y recortaba en `2×`. Ahora `AudioLayout` compone un `DropdownMenu` +
`RadioGroup`; el disparador sigue siendo el `RateButton` real, con su ciclado
anulado vía `preventDefault()` en la costura. ⚠️ Dos defectos del panel
portado, los mismos que el float de volumen: el suelo de `12rem` del menú, y
**la etiqueta redimensionaba el botón y desplazaba la botonera** (ancho fijo
`4.6em`, medido 64·74·88·121px).
3. **API de eventos para la app** — `onPlay` · `onPause` · `onEnded` ·
`onError`. Antes no había NINGUNA: la única vía era enchufar un
`MediaProvider` entero. Dos divergencias deliberadas respecto a la capa
perceptual, las dos en el test: el `pause` del final natural no se reporta, y
`onEnded` SÍ dispara para un final por salto (que `commit-complete` exime).
4. **Transporte de lista** — `RestartButton` + `SkipButton` (morfo **25** partes,
las dos opt-in, sin eventos sema nuevos por decisión del usuario). El player
**no tiene cola a propósito**: `onPrevious`/`onNext` piden y la app cambia el
`src`. Una dirección sin manejador se pinta deshabilitada, que es justo el
aspecto de los extremos de una cola.
⚠️ **Otra sesión commitea en esta misma rama** (hilo de dirección): verificar
`HEAD` antes de dar nada por perdido, y `git reset -q` + `add` sólo lo propio.
El siguiente ítem de CÓDIGO del componente no es de este hilo sino del handoff
hermano: **`settings-button`**, lo único que separa al morfo de 23/23.
hermano: **`settings-button`**, lo único que separa al morfo de 25/25 — y su
alcance ENCOGIÓ: la velocidad ya tiene su lista, así que al menú de ajustes sólo
le quedan calidad y pista.
Ver [`CONTINUE-player-rtl.md`](./CONTINUE-player-rtl.md) §0.
## Trampas de este repo (verificadas a base de perder tiempo)

Loading…
Cancel
Save

Powered by TurnKey Linux.