Standard-To-Do-Liste — Prioritäts-Icon zum Durchschalten + Prioritäts-Untermenü in den Einstellungen #152

Closed
opened 2026-09-01 14:13:10 +02:00 by lena · 2 comments
lena commented 2026-09-01 14:13:10 +02:00 (Migrated from git.butzei.de)

Story: Standard-To-Do-Liste — Prioritäts-Icon zum Durchschalten + Prioritäts-Untermenü in den Einstellungen

As a Nutzer der Standard-To-Do-Liste,
I want to die Priorität eines Todos direkt per Klick auf ein Icon in der Zeile durchschalten
können, und alternativ über das "⋯"-Menü gezielt eine Priorität auswählen,
so that ich die Priorität schneller ändern kann, ohne den Bearbeiten-Dialog öffnen zu müssen.

Background

Die Prioritätsstufen selbst existieren bereits (#15). Es fehlt eine schnelle Bedienmöglichkeit
direkt in der Zeile.

Acceptance criteria:

  • Neben dem "⋯"-Menü-Button jeder Todo-Zeile erscheint ein zusätzliches Icon, das die aktuelle
    Priorität visuell darstellt (z. B. Farbe/Symbol je Stufe).
  • Ein Klick auf dieses Icon schaltet die Priorität zur nächsten Stufe in der bestehenden
    Reihenfolge durch (zyklisch).
  • Im "⋯"-Menü gibt es einen neuen Menüpunkt "Priorität", der beim Öffnen/Hovern ein Untermenü
    mit allen verfügbaren Prioritätsstufen zur direkten Auswahl zeigt (nicht nur Durchschalten).
  • Beide Wege lösen denselben Backend-Call aus wie die bestehende Prioritäts-Änderung im
    Bearbeiten-Dialog.
  • Icon und Menüpunkt sind für Screenreader zugänglich beschriftet (aria-label mit
    aktueller/neuer Priorität).

Out of scope for this story:

  • Änderung der Prioritätsstufen selbst (Anzahl, Bezeichnung) — nur die Bedienung.
# Story: Standard-To-Do-Liste — Prioritäts-Icon zum Durchschalten + Prioritäts-Untermenü in den Einstellungen **As a** Nutzer der Standard-To-Do-Liste, **I want to** die Priorität eines Todos direkt per Klick auf ein Icon in der Zeile durchschalten können, und alternativ über das "⋯"-Menü gezielt eine Priorität auswählen, **so that** ich die Priorität schneller ändern kann, ohne den Bearbeiten-Dialog öffnen zu müssen. ## Background Die Prioritätsstufen selbst existieren bereits (`#15`). Es fehlt eine schnelle Bedienmöglichkeit direkt in der Zeile. **Acceptance criteria:** - [ ] Neben dem "⋯"-Menü-Button jeder Todo-Zeile erscheint ein zusätzliches Icon, das die aktuelle Priorität visuell darstellt (z. B. Farbe/Symbol je Stufe). - [ ] Ein Klick auf dieses Icon schaltet die Priorität zur nächsten Stufe in der bestehenden Reihenfolge durch (zyklisch). - [ ] Im "⋯"-Menü gibt es einen neuen Menüpunkt "Priorität", der beim Öffnen/Hovern ein Untermenü mit allen verfügbaren Prioritätsstufen zur direkten Auswahl zeigt (nicht nur Durchschalten). - [ ] Beide Wege lösen denselben Backend-Call aus wie die bestehende Prioritäts-Änderung im Bearbeiten-Dialog. - [ ] Icon und Menüpunkt sind für Screenreader zugänglich beschriftet (aria-label mit aktueller/neuer Priorität). **Out of scope for this story:** - Änderung der Prioritätsstufen selbst (Anzahl, Bezeichnung) — nur die Bedienung.
lena commented 2026-09-02 14:36:36 +02:00 (Migrated from git.butzei.de)

Claiming this issue. Plan: add a per-row priority indicator icon next to the existing "..." menu button on each Standard-Todoliste row that cycles to the next priority level on click, plus a "Priority" submenu inside the existing "..." menu for direct selection of any level. Both paths call the same backend command the edit dialog already uses. Icon/menu item get aria-labels stating current/target priority.

Claiming this issue. Plan: add a per-row priority indicator icon next to the existing "..." menu button on each Standard-Todoliste row that cycles to the next priority level on click, plus a "Priority" submenu inside the existing "..." menu for direct selection of any level. Both paths call the same backend command the edit dialog already uses. Icon/menu item get aria-labels stating current/target priority.
lena commented 2026-09-02 16:59:28 +02:00 (Migrated from git.butzei.de)

Fixed in 1687a2e (with e2e fixes in 055bdae).

Scope: added a clickable priority icon next to each Todo rows "..." menu (replaces the old plain, non-interactive dot) that cycles High/Normal/Low on click; converted the existing single cycling "Priority" menu item into this codebases first Radix DropdownMenuSub submenu, offering direct selection of any level rather than only cycling. Both paths share one setPriority() helper calling the same SetTodoPriorityCommand the old single item used. Icon and menu item both carry aria-labels stating current/next priority (icon) and are accessibly labeled via their visible text (submenu trigger/items).

Added DropdownMenuSub/SubTrigger/SubContent to the shared ui/dropdown-menu.tsx wrapper, following its existing shadcn-style pattern.

Code review (5 parallel finder agents, 8 angles) found and fixed 5 real issues before merging: a stale e2e spec assuming the old single-click-cycles-in-the-menu behavior; the new icon missing this files own established 44px touch-target and focus-visible-ring conventions; no in-flight guard against rapid double-clicks (mirrors the existing titleSavingRef/descriptionSavingRef pattern); and no readOnly guard on an archived list (now a native disabled on both the icon and every submenu item).

Fixing the e2e spec surfaced a second, CI-only issue: a real Playwright click on the new submenu trigger raced Radixs own hover-intent open logic and flaked on the Desktop HD leg. Fixed by opening the submenu via keyboard (focus + ArrowRight) instead, which is deterministic - documented as a QA-agent learned pattern for future Radix submenu testing.

Tests: TodoItem.test.tsx grew from 76 to 79 tests (icon cycling, submenu direct-selection incl. skipping intermediate levels, disabled-current-level, in-flight guard, readOnly guard), all exercised against real Radix primitives via Testing Library, not mocks. Full frontend suite (1133 tests) and dotnet build both green. CI fully green as of 194f07f (backend, frontend, and the full 4-leg E2E matrix including the fixed todo-priority.spec.ts).

Local review container rebuild skipped this cycle - Docker has no working daemon in this sandbox (confirmed via a direct client-vs-server version check), and this change has no backend/DB surface to exercise there anyway; verified instead via the frontend test suite and real Gitea Actions CI.

Fixed in 1687a2e (with e2e fixes in 055bdae). Scope: added a clickable priority icon next to each Todo rows "..." menu (replaces the old plain, non-interactive dot) that cycles High/Normal/Low on click; converted the existing single cycling "Priority" menu item into this codebases first Radix DropdownMenuSub submenu, offering direct selection of any level rather than only cycling. Both paths share one setPriority() helper calling the same SetTodoPriorityCommand the old single item used. Icon and menu item both carry aria-labels stating current/next priority (icon) and are accessibly labeled via their visible text (submenu trigger/items). Added DropdownMenuSub/SubTrigger/SubContent to the shared ui/dropdown-menu.tsx wrapper, following its existing shadcn-style pattern. Code review (5 parallel finder agents, 8 angles) found and fixed 5 real issues before merging: a stale e2e spec assuming the old single-click-cycles-in-the-menu behavior; the new icon missing this files own established 44px touch-target and focus-visible-ring conventions; no in-flight guard against rapid double-clicks (mirrors the existing titleSavingRef/descriptionSavingRef pattern); and no readOnly guard on an archived list (now a native disabled on both the icon and every submenu item). Fixing the e2e spec surfaced a second, CI-only issue: a real Playwright click on the new submenu trigger raced Radixs own hover-intent open logic and flaked on the Desktop HD leg. Fixed by opening the submenu via keyboard (focus + ArrowRight) instead, which is deterministic - documented as a QA-agent learned pattern for future Radix submenu testing. Tests: TodoItem.test.tsx grew from 76 to 79 tests (icon cycling, submenu direct-selection incl. skipping intermediate levels, disabled-current-level, in-flight guard, readOnly guard), all exercised against real Radix primitives via Testing Library, not mocks. Full frontend suite (1133 tests) and dotnet build both green. CI fully green as of 194f07f (backend, frontend, and the full 4-leg E2E matrix including the fixed todo-priority.spec.ts). Local review container rebuild skipped this cycle - Docker has no working daemon in this sandbox (confirmed via a direct client-vs-server version check), and this change has no backend/DB surface to exercise there anyway; verified instead via the frontend test suite and real Gitea Actions CI.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
robert/todo#152
No description provided.