a3f75d61ec
Reorganizacion de dev/issues en subcarpetas (completed/, cpp/, gamedev/, kanban/, trading/, imagegen/, matrix/) y cambios acumulados en cmd/fn/pyrunner, .claude/commands y settings. Trabajo de otro LLM/sesion, commiteado a peticion del usuario para desbloquear el working tree. Excluido logs/ardour_mcp_server.log (ruido).
2.2 KiB
2.2 KiB
id, title, status, type, domain, scope, priority, depends, blocks, related, created, updated, tags
| id | title | status | type | domain | scope | priority | depends | blocks | related | created | updated | tags | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0090 | kanban: Seleccionar Aleatorio en columna con animacion de ruleta | pendiente | feature |
|
multi-app | media | 2026-05-17 | 2026-05-17 |
|
Problema
Cuando hay muchas cards en una columna, elegir cual abordar "al azar" es ruido cognitivo. Necesitamos boton "Seleccionar Aleatorio" que respete los filtros activos y excluya cards bloqueadas.
Solucion
Frontend (puro, sin backend)
KanbanColumnmenu contextual: nueva entrada "Seleccionar Aleatorio" (IconDice5),data-test="column-random-pick". Deshabilitada cuandocards.filter(c => !c.locked).length === 0.- Prop
onPickRandom(columnId)propagada desdeKanbanColumnaApp.tsx. App.tsxhandlerhandlePickRandom:- Lee cards del column id via
cardsByColumn(ya respeta los filtros). - Excluye
card.locked === true. - Si
length === 0: notificacion warning. - Si
length === 1: scroll + flash verde directo. - Si
length > 1: ruleta animada.
- Lee cards del column id via
- Ruleta:
- Seleccion criptografica con
crypto.getRandomValues. - Cycle: 2 vueltas completas + offset hasta la ganadora.
- Decay temporal cubic: 50ms inicial -> 220ms final (efecto desacelerar).
- CSS class
.kanban-roulette-activeaplicada a la card en curso,scrollIntoViewautomatico para seguirla. - Al final:
.kanban-roulette-winnercon pulso verde (~1.6s).
- Seleccion criptografica con
- CSS en
src/styles/roulette.css, importado desdemain.tsx.
Tests
- Verificacion manual: probar en columna con varias cards, con y sin filtros activos, con cards bloqueadas. Comportamiento esperado: solo unlocked-and-filtered participan.
- E2E Playwright queda fuera de scope automatizado por timing visual y por necesitar cards reales en una columna concreta.
Criterios de aceptacion
- Menu contextual "Seleccionar Aleatorio" en cada columna.
- Cards bloqueadas excluidas siempre.
- Si hay filtro activo, solo cards visibles participan.
- Animacion ruleta visible, no se queda colgada.
- Ganadora final con flash verde + scroll a su posicion.
Rama / commits
- Rama:
issue/0090-kanban-column-random-pick - Merge
--no-ffa master.