feat(kanban): badges done/locked + drag locked en mismo column + migrations + UX stickers
- badges: locked → tiempo bloqueado; done → fecha completion + total lead time; otherwise → tiempo en columna - locked cards: drag permitido dentro de mismo column (cross-column rejected con notification) - card field: locked_at desde JOIN card_lock_history (open period) - migrations: refactor a embed.FS, archivos 002-005 extraidos de ensureColumns; ensureColumns queda como backstop - stickers UX: opacidad 1, debajo del texto, picker estable (useRef), boton entra directo a modo con 😀, popover cierra outside, cards done filter brightness - format: formatDateTimeShort Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
-- Add stickers column to cards. Idempotent ALTER pattern in db.go ensureColumns.
|
||||
-- Stickers persist as JSON array: [{"emoji":"🔥","x":0.5,"y":0.5}, ...]
|
||||
-- x, y in [0, 1] relative to card dimensions for resize survival.
|
||||
ALTER TABLE cards ADD COLUMN stickers TEXT NOT NULL DEFAULT '[]';
|
||||
@@ -0,0 +1,6 @@
|
||||
-- Columnas extra de `columns` (location, width, wip_limit, is_done).
|
||||
-- Antes vivian en ensureColumns Go. Reextraidas a migration por consistencia.
|
||||
ALTER TABLE columns ADD COLUMN location TEXT NOT NULL DEFAULT 'board';
|
||||
ALTER TABLE columns ADD COLUMN width INTEGER NOT NULL DEFAULT 300;
|
||||
ALTER TABLE columns ADD COLUMN wip_limit INTEGER NOT NULL DEFAULT 0;
|
||||
ALTER TABLE columns ADD COLUMN is_done INTEGER NOT NULL DEFAULT 0;
|
||||
@@ -0,0 +1,9 @@
|
||||
-- Columnas extra de `cards` (color, locked, assignee_id, completed_at, deleted_at, tags).
|
||||
-- Antes vivian en ensureColumns Go. La columna stickers va aparte en 002.
|
||||
ALTER TABLE cards ADD COLUMN color TEXT NOT NULL DEFAULT '';
|
||||
ALTER TABLE cards ADD COLUMN locked INTEGER NOT NULL DEFAULT 0;
|
||||
ALTER TABLE cards ADD COLUMN assignee_id TEXT;
|
||||
ALTER TABLE cards ADD COLUMN completed_at TEXT;
|
||||
ALTER TABLE cards ADD COLUMN deleted_at TEXT;
|
||||
ALTER TABLE cards ADD COLUMN tags TEXT NOT NULL DEFAULT '[]';
|
||||
CREATE INDEX IF NOT EXISTS idx_cards_assignee ON cards(assignee_id);
|
||||
@@ -0,0 +1,3 @@
|
||||
-- actor_id en histories (quien movió la card / quien bloqueó).
|
||||
ALTER TABLE card_column_history ADD COLUMN actor_id TEXT;
|
||||
ALTER TABLE card_lock_history ADD COLUMN actor_id TEXT;
|
||||
Reference in New Issue
Block a user