Files
kandev/docs/plans/sidebar-task-edit/task-01-shared-sidebar-edit-flow.md
T
2026-08-23 17:34:52 +00:00

4.3 KiB

id, title, status, wave, depends_on, plan, spec
id title status wave depends_on plan spec
01-shared-sidebar-edit-flow Add shared sidebar edit flow done 1
plan.md ../../specs/tasks/requirements/sidebar-task-edit.md

Task 01: Add shared sidebar edit flow

Acceptance

  • A live single-task sidebar menu exposes localized Edit alongside Rename, while archived rows and multi-task menus do not.
  • Desktop, phone, and tablet task lists open the existing TaskCreateDialog for the clicked task using its own workflow, step, lifecycle state, description, and primary repository without changing the active route/task.
  • Phone selection closes the task drawer before the editor opens; tablet selection retains the sheet behind the editor.

Verification

Run in Red-Green-Refactor order, observing the focused tests fail before production changes:

(cd apps && pnpm install --frozen-lockfile)
(cd apps && pnpm --filter @kandev/web test -- components/task/task-switcher.test.tsx components/task/task-session-sidebar-edit.test.ts components/task/mobile/session-task-switcher-sheet.test.tsx)
(cd apps/web && pnpm run typecheck)
(cd apps/web && pnpm run i18n:check)
(cd apps/web && pnpm run i18n:ratchet)
git diff --check

Files likely touched

  • apps/web/components/task/task-switcher.tsx
  • apps/web/components/task/task-switcher-context-menu.tsx
  • apps/web/components/task/task-switcher.test.tsx
  • apps/web/components/task/task-session-sidebar-edit.tsx
  • apps/web/components/task/task-session-sidebar-edit.test.tsx
  • apps/web/components/task/task-session-sidebar.tsx
  • apps/web/components/task/task-session-sidebar-switcher-props.ts
  • apps/web/components/task/task-session-sidebar-dialogs.tsx
  • apps/web/components/task/mobile/session-task-switcher-sheet.tsx
  • apps/web/components/task/mobile/session-task-switcher-sheet.test.tsx
  • apps/web/src/locales/en/common.json
  • apps/web/src/locales/pseudo/common.json

Dependencies

None.

Parallelism

Sequential. The menu contract, shared edit controller, and both responsive hosts share types and files and should land as one vertical slice.

Inputs

  • Spec sections: What, Failure modes, and all desktop/phone/tablet scenarios.
  • Plan sections: Shared single-task menu contract, Shared edit controller and dialog, Desktop sidebar wiring, Phone and tablet wiring, and Mobile design contract.
  • Existing patterns: useTaskCRUD() / KanbanBoardDialogs for Kanban edit props, findTaskInSnapshots() for sidebar target resolution, and surfaceAction() for phone-versus-tablet overlay behavior.

Risks

  • Do not initialize the dialog from global kanban.workflowId; the clicked task may come from another workflow snapshot.
  • Do not duplicate TaskCreateDialog validation/submission or add a second cache mutation path.
  • New user-facing copy must use i18n at render time.

Output contract

Report the red test evidence, final files changed, exact commands and outcomes, blockers, responsive behavior, and remaining risks. Reconcile this file's likely-file list with the actual diff, set this task to done, and synchronize its checkbox plus verification results in plan.md.

Results

  • RED evidence: before the production menu/controller wiring, the focused switcher run reported 2 expected missing-Edit failures and 16 passing tests.
  • GREEN evidence: cd apps && pnpm --filter @kandev/web test -- components/task/task-switcher.test.tsx components/task/task-session-sidebar-edit.test.ts components/task/mobile/session-task-switcher-sheet.test.tsx passed all 24 tests, including the unresolved-source, missing-workflow, and selection-clear guards added during PR review.
  • cd apps/web && pnpm run typecheck passed. The i18n checks passed from apps/web (i18n:check confirmed 1464 referenced keys and pseudo locale sync; i18n:ratchet reported zero added or modified violations). The original cd apps && pnpm run i18n:check path was corrected because the scripts are owned by @kandev/web.
  • Targeted ESLint across the changed task/sidebar files passed with no warnings, and git diff --check passed.
  • The actual implementation spans the shared switcher/context menu, shared edit controller/dialog, desktop sidebar hosts, mobile/tablet sheet host, locale files, and focused unit tests. Phone selection closes the drawer before opening the editor; tablet keeps the sheet mounted behind it. No duplicate task update/cache path was added.