From 91b7dbef4da0cb6676addfc74effe02845d1e20b Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 10 Jun 2026 17:54:40 +0200 Subject: [PATCH] =?UTF-8?q?tickets:=20file=20T-343=20=E2=80=94=20ticket-pa?= =?UTF-8?q?nel=20type=20filter=20chips?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug / Ticket / Epic / Initiative toggle chips at the top of the tickets panel, all on by default. Single-click toggles a type; double-click solos it (chart-legend pattern), double-click again restores all; last-off resets to all-on. Filed under the UI epic T-276 with a Frame0 wireframe. Co-Authored-By: Claude Opus 4.8 (1M context) --- .pql/changelog/ticket_history/2026-06.sql | 1 + .pql/changelog/tickets/2026-06.sql | 56 +++++ .../tickets/ticket-type-filters.json | 230 ++++++++++++++++++ .../tickets/ticket-type-filters.png | Bin 0 -> 31826 bytes 4 files changed, 287 insertions(+) create mode 100644 docs/design/wireframes/tickets/ticket-type-filters.json create mode 100644 docs/design/wireframes/tickets/ticket-type-filters.png diff --git a/.pql/changelog/ticket_history/2026-06.sql b/.pql/changelog/ticket_history/2026-06.sql index 4cf810d8..ebb67c00 100644 --- a/.pql/changelog/ticket_history/2026-06.sql +++ b/.pql/changelog/ticket_history/2026-06.sql @@ -3435,3 +3435,4 @@ SCOPE CLARIFICATION (2026-06-10, from user): - Net behaviour: a fan-out of N agents -> N distinct collapsed cards, each containing its own complete run; surrounding non-agent tool calls still group into their normal Activity card. Test additions: (a) two concurrent agents whose sidechain items interleave -> each agent''s run items land under its own card, none cross-attributed; (b) an unattributable sidechain item (no parent_tool_use_id, broken chain) is NOT swept into the nearest agent''s card; (c) regression: consecutive Bash/Read calls still form one Activity cluster.', NULL, '2026-06-10 15:28:52', '2026-06-10 15:28:52', '2026-06-10 15:28:52', NULL, '0352b24d88a4bf24ede628880fe9b502', 2) ON CONFLICT(hash) DO NOTHING; +INSERT INTO ticket_history (ticket_record_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FB4FDREHRYRR7B9ER72KCQKC', 'status', 'backlog', 'in_progress', NULL, '2026-06-10 15:54:23', '2026-06-10 15:54:23', '2026-06-10 15:54:23', NULL, '8061a1d449acdb1e467239de0dce5d1d', 2) ON CONFLICT(hash) DO NOTHING; diff --git a/.pql/changelog/tickets/2026-06.sql b/.pql/changelog/tickets/2026-06.sql index 51a4d744..3bef95e0 100644 --- a/.pql/changelog/tickets/2026-06.sql +++ b/.pql/changelog/tickets/2026-06.sql @@ -2903,3 +2903,59 @@ SCOPE CLARIFICATION (2026-06-10, from user): - Net behaviour: a fan-out of N agents -> N distinct collapsed cards, each containing its own complete run; surrounding non-agent tool calls still group into their normal Activity card. Test additions: (a) two concurrent agents whose sidechain items interleave -> each agent''s run items land under its own card, none cross-attributed; (b) an unattributable sidechain item (no parent_tool_use_id, broken chain) is NOT swept into the nearest agent''s card; (c) regression: consecutive Bash/Read calls still form one Activity cluster.', 'backlog', 'medium', NULL, NULL, NULL, '2026-06-10 15:26:33', '2026-06-10 15:28:52', NULL, '05bc2daa013de8cf163cdd54c6014f07', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash); +INSERT INTO tickets (record_id, type, parent_record_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FB4FDREHRYRR7B9ER72KCQKC', 'story', '06FB0TNQM5TWC00GW0P3X02HZW', 'Ticket panel: per-type filter chips (Bug / Ticket / Epic / Initiative)', 'Add a row of type-filter toggle chips at the top of the tickets panel, directly below the "Filter tickets…" box (no section header — the chips read on their own). One chip per ticket type the user thinks in: Bug, Ticket, Epic, Initiative. All four ON by default. + +## Behaviour +- Single-click a chip → toggle that type in/out of the list. +- Double-click a chip → isolate (solo) that type: turns it ON and all others OFF. Double-click the same chip again → restore all to ON. This is the chart-legend solo pattern (Plotly/Tableau/Grafana) — learnable and fully reversible. +- Last-off resets to all-on: disabling the final remaining type snaps all chips back ON. An empty type filter means "no filter", so the list is never mysteriously blank. +- Tooltip per chip: "Click to toggle · double-click to isolate". + +## Type mapping (pql → chip) +pql ticket types are initiative, epic, story, task, bug (see lib/builtin/tickets/src/ticket_colors.dart). The four chips map as: +- Bug → bug +- Ticket → story + task (leaf work items) +- Epic → epic +- Initiative → initiative + +Each chip carries its type-colored dot + border using TicketTypeColors (bug #E87D7D, story/task green/grey, epic #78A0F8, initiative #C792EA). + +## Filtering +- Type filter is ANDed with the existing text filter in _TicketsViewState (lib/builtin/tickets/src/tickets_view.dart): a ticket shows only if its type is enabled AND it matches the text filter. +- When the type filter hides all items in a status section, that section collapses out (same as text-filter behaviour today). + +## Implementation notes +- Active-chip visual: filled tint + type-colored border (active) vs muted/no border (inactive) — reuse the _Toggle pattern from lib/builtin/search/src/search_panel_view.dart and ClideTappable. +- Persist nothing across sessions for v1 (always all-on on load); revisit if requested. +- a11y: Semantics(button, toggled) per chip, mirroring the search-panel toggle. + +## Wireframe +docs/design/wireframes/tickets/ticket-type-filters.json (+ .png export)', 'backlog', 'medium', NULL, NULL, NULL, '2026-06-10 15:54:09', '2026-06-10 15:54:09', NULL, '3e7c03bbb536a4c2d45f770abfee8b13', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash); +INSERT INTO tickets (record_id, type, parent_record_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('06FB4FDREHRYRR7B9ER72KCQKC', 'story', '06FB0TNQM5TWC00GW0P3X02HZW', 'Ticket panel: per-type filter chips (Bug / Ticket / Epic / Initiative)', 'Add a row of type-filter toggle chips at the top of the tickets panel, directly below the "Filter tickets…" box (no section header — the chips read on their own). One chip per ticket type the user thinks in: Bug, Ticket, Epic, Initiative. All four ON by default. + +## Behaviour +- Single-click a chip → toggle that type in/out of the list. +- Double-click a chip → isolate (solo) that type: turns it ON and all others OFF. Double-click the same chip again → restore all to ON. This is the chart-legend solo pattern (Plotly/Tableau/Grafana) — learnable and fully reversible. +- Last-off resets to all-on: disabling the final remaining type snaps all chips back ON. An empty type filter means "no filter", so the list is never mysteriously blank. +- Tooltip per chip: "Click to toggle · double-click to isolate". + +## Type mapping (pql → chip) +pql ticket types are initiative, epic, story, task, bug (see lib/builtin/tickets/src/ticket_colors.dart). The four chips map as: +- Bug → bug +- Ticket → story + task (leaf work items) +- Epic → epic +- Initiative → initiative + +Each chip carries its type-colored dot + border using TicketTypeColors (bug #E87D7D, story/task green/grey, epic #78A0F8, initiative #C792EA). + +## Filtering +- Type filter is ANDed with the existing text filter in _TicketsViewState (lib/builtin/tickets/src/tickets_view.dart): a ticket shows only if its type is enabled AND it matches the text filter. +- When the type filter hides all items in a status section, that section collapses out (same as text-filter behaviour today). + +## Implementation notes +- Active-chip visual: filled tint + type-colored border (active) vs muted/no border (inactive) — reuse the _Toggle pattern from lib/builtin/search/src/search_panel_view.dart and ClideTappable. +- Persist nothing across sessions for v1 (always all-on on load); revisit if requested. +- a11y: Semantics(button, toggled) per chip, mirroring the search-panel toggle. + +## Wireframe +docs/design/wireframes/tickets/ticket-type-filters.json (+ .png export)', 'in_progress', 'medium', NULL, NULL, NULL, '2026-06-10 15:54:09', '2026-06-10 15:54:23', NULL, 'f5614424c00196aabab868db75483bf2', 2) ON CONFLICT(record_id) DO UPDATE SET type=excluded.type, parent_record_id=excluded.parent_record_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash); diff --git a/docs/design/wireframes/tickets/ticket-type-filters.json b/docs/design/wireframes/tickets/ticket-type-filters.json new file mode 100644 index 00000000..e25aafc9 --- /dev/null +++ b/docs/design/wireframes/tickets/ticket-type-filters.json @@ -0,0 +1,230 @@ +{ + "name": "Ticket Panel — Type Filters", + "shapes": { + "panel": { + "type": "Rectangle", + "left": 80, "top": 60, "width": 400, "height": 520, + "fillColor": "#0d0d11", + "strokeColor": "#23232b", + "corners": [6, 6, 6, 6] + }, + + "filter-box": { + "type": "Rectangle", + "parent": "panel", + "left": 96, "top": 76, "width": 368, "height": 30, + "fillColor": "#16161c", + "strokeColor": "#2c2c36", + "corners": [5, 5, 5, 5] + }, + "filter-icon": { + "type": "Text", + "parent": "filter-box", + "left": 108, "top": 84, + "text": "⌕", + "fontColor": "#5b5b66", + "fontSize": 13 + }, + "filter-text": { + "type": "Text", + "parent": "filter-box", + "left": 126, "top": 85, + "text": "Filter tickets…", + "fontColor": "#5b5b66", + "fontSize": 12 + }, + "refresh-icon": { + "type": "Text", + "parent": "filter-box", + "left": 442, "top": 84, + "text": "↻", + "fontColor": "#5b5b66", + "fontSize": 13 + }, + + "chip-bug": { + "type": "Rectangle", + "parent": "panel", + "left": 96, "top": 118, "width": 66, "height": 24, + "fillColor": "#211519", + "strokeColor": "#E87D7D", + "corners": [4, 4, 4, 4] + }, + "chip-bug-dot": { + "type": "Ellipse", + "parent": "chip-bug", + "left": 104, "top": 126, "width": 8, "height": 8, + "fillColor": "#E87D7D", + "strokeColor": "#E87D7D" + }, + "chip-bug-label": { + "type": "Text", + "parent": "chip-bug", + "left": 117, "top": 124, + "text": "Bug", + "fontColor": "#e8e8ee", + "fontSize": 11 + }, + + "chip-ticket": { + "type": "Rectangle", + "parent": "panel", + "left": 168, "top": 118, "width": 78, "height": 24, + "fillColor": "#15191d", + "strokeColor": "#7DD3A8", + "corners": [4, 4, 4, 4] + }, + "chip-ticket-dot": { + "type": "Ellipse", + "parent": "chip-ticket", + "left": 176, "top": 126, "width": 8, "height": 8, + "fillColor": "#7DD3A8", + "strokeColor": "#7DD3A8" + }, + "chip-ticket-label": { + "type": "Text", + "parent": "chip-ticket", + "left": 189, "top": 124, + "text": "Ticket", + "fontColor": "#e8e8ee", + "fontSize": 11 + }, + + "chip-epic": { + "type": "Rectangle", + "parent": "panel", + "left": 252, "top": 118, "width": 68, "height": 24, + "fillColor": "#14171f", + "strokeColor": "#78A0F8", + "corners": [4, 4, 4, 4] + }, + "chip-epic-dot": { + "type": "Ellipse", + "parent": "chip-epic", + "left": 260, "top": 126, "width": 8, "height": 8, + "fillColor": "#78A0F8", + "strokeColor": "#78A0F8" + }, + "chip-epic-label": { + "type": "Text", + "parent": "chip-epic", + "left": 273, "top": 124, + "text": "Epic", + "fontColor": "#e8e8ee", + "fontSize": 11 + }, + + "chip-init": { + "type": "Rectangle", + "parent": "panel", + "left": 326, "top": 118, "width": 86, "height": 24, + "fillColor": "#1a151f", + "strokeColor": "#C792EA", + "corners": [4, 4, 4, 4] + }, + "chip-init-dot": { + "type": "Ellipse", + "parent": "chip-init", + "left": 334, "top": 126, "width": 8, "height": 8, + "fillColor": "#C792EA", + "strokeColor": "#C792EA" + }, + "chip-init-label": { + "type": "Text", + "parent": "chip-init", + "left": 347, "top": 124, + "text": "Initiative", + "fontColor": "#e8e8ee", + "fontSize": 11 + }, + + "divider": { + "type": "Line", + "parent": "panel", + "left": 96, "top": 158, "width": 368, "height": 1, + "strokeColor": "#23232b" + }, + + "section-header": { + "type": "Text", + "parent": "panel", + "left": 98, "top": 172, + "text": "▾ BACKLOG · 61", + "fontColor": "#6b6b76", + "fontSize": 10 + }, + + "card-1": { + "type": "Rectangle", + "parent": "panel", + "left": 96, "top": 192, "width": 368, "height": 56, + "fillColor": "#0d0d11", + "strokeColor": "#23232b", + "corners": [4, 4, 4, 4] + }, + "card-1-dot": { + "type": "Ellipse", + "parent": "card-1", + "left": 108, "top": 204, "width": 8, "height": 8, + "fillColor": "#C792EA", + "strokeColor": "#C792EA" + }, + "card-1-id": { + "type": "Text", + "parent": "card-1", + "left": 122, "top": 200, + "text": "T-8", + "fontColor": "#e8e8ee", + "fontSize": 11 + }, + "card-1-title": { + "type": "Text", + "parent": "card-1", + "left": 108, "top": 220, + "text": "Tier 6 — extension API, settings, theming, builds", + "fontColor": "#b8b8c2", + "fontSize": 11 + }, + + "card-2": { + "type": "Rectangle", + "parent": "panel", + "left": 96, "top": 254, "width": 368, "height": 56, + "fillColor": "#0d0d11", + "strokeColor": "#23232b", + "corners": [4, 4, 4, 4] + }, + "card-2-dot": { + "type": "Ellipse", + "parent": "card-2", + "left": 108, "top": 266, "width": 8, "height": 8, + "fillColor": "#E87D7D", + "strokeColor": "#E87D7D" + }, + "card-2-id": { + "type": "Text", + "parent": "card-2", + "left": 122, "top": 262, + "text": "T-19", + "fontColor": "#e8e8ee", + "fontSize": 11 + }, + "card-2-title": { + "type": "Text", + "parent": "card-2", + "left": 108, "top": 282, + "text": "Filter box loses focus on refresh tick", + "fontColor": "#b8b8c2", + "fontSize": 11 + }, + + "caption": { + "type": "Text", + "parent": "panel", + "left": 96, "top": 540, + "text": "All four type filters ON by default — tap a chip to toggle that type out.", + "fontColor": "#56565f", + "fontSize": 10 + } + } +} diff --git a/docs/design/wireframes/tickets/ticket-type-filters.png b/docs/design/wireframes/tickets/ticket-type-filters.png new file mode 100644 index 0000000000000000000000000000000000000000..e92fd3822697051d2757c70abf37c5ab5d2f7293 GIT binary patch literal 31826 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

9MH@SYdM2KvDt-+G_F&6aL?_GOvRnDaHr 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 E06>*6$p8QV literal 0 HcmV?d00001