3.8 KiB
3.8 KiB
id, title, status, wave, depends_on, plan, spec
| id | title | status | wave | depends_on | plan | spec | ||
|---|---|---|---|---|---|---|---|---|
| 03-frontend-title-flow | Settings and task/subtask dialogs | done | 3 |
|
plan.md | ../../specs/tasks/requirements/agent-generated-titles.md |
Task 03: Settings and task/subtask dialogs
Continuation note: Task 06 makes this shipped prompt-first flow the default while retaining the manual-title flow for explicit opt-outs.
Acceptance
- Task Actions exposes a self-documenting, manually saved setting that defaults false and stays synced through boot, HTTP, and WebSocket settings paths.
- With the setting enabled, create-mode task and subtask dialogs omit title controls, require/focus the
prompt, and send
auto_title:true; disabled and edit modes retain current title behavior. - Desktop and phone reuse the same state, validation, and submit logic while preserving their existing dialog geometry, scroll ownership, touch targets, and non-title actions.
Verification
cd apps && pnpm --filter @kandev/web test -- components/settings/agent-generated-task-title-settings.test.tsx lib/ssr/user-settings.test.ts lib/ws/handlers/users.test.ts components/task-create-dialog.test.tsx components/task-create-dialog-footer.test.ts components/task-create-dialog-form-body.test.tsx components/task-create-dialog-helpers.test.ts components/task-create-dialog-setup.test.ts components/task/new-subtask-form-parts.test.tsx components/task/use-subtask-submit.test.ts
cd apps && pnpm --filter @kandev/web lint
cd apps/web && pnpm run typecheck
The focused Vitest suite passed 108 tests across 10 files; frontend lint (cd apps && pnpm --filter @kandev/web lint) and TypeScript typecheck also passed.
Files likely touched
apps/web/components/settings/general-settings.tsxapps/web/components/settings/agent-generated-task-title-settings.tsx- its focused component test
apps/web/lib/state/slices/settings/types.tsapps/web/lib/state/slices/settings/settings-slice.tsapps/web/lib/types/http-user-settings.tsapps/web/lib/types/backend.tsapps/web/lib/ssr/user-settings.tsapps/web/lib/ssr/user-settings.test.tsapps/web/lib/ws/handlers/users.tsapps/web/lib/ws/handlers/users.test.tsapps/web/components/task-create-dialog.tsxapps/web/components/task-create-dialog-types.tsapps/web/components/task-create-dialog-form-body.tsxapps/web/components/task-create-dialog-footer.tsxapps/web/components/task-create-dialog-submit.tsxapps/web/components/task-create-dialog-helpers.tsapps/web/components/task-create-dialog-prop-builders.tsapps/web/lib/api/domains/kanban-api.ts- focused dialog/helper tests
apps/web/components/task/new-subtask-dialog.tsxapps/web/components/task/new-subtask-form-parts.tsxapps/web/components/task/use-subtask-submit.ts- focused subtask tests
Dependencies
Tasks 01 and 02 define the HTTP and agent-completion contracts the UI opts into.
Parallelism
Sequential. The task spans shared user-settings and task-create types and should remain one coherent frontend change.
Inputs
- Spec sections: What, User settings, desktop/mobile scenarios.
- Plan sections: User setting and hydration, New Task dialog, New Subtask dialog and mobile contract.
- Mobile exemplars: current
TaskCreateDialogandNewSubtaskDialogphone compositions.
Risks
- Avoid a title-field flash by relying on boot-hydrated settings before the dialog opens.
- Do not let hidden Jira/Linear/GitHub autofill values accidentally become submitted manual titles.
- Empty-prompt gating must cover voice submit, split actions, plan mode, and create-only paths.
Output contract
Report behavior implemented, files changed, the exact test/typecheck commands and results, blockers or
risks, and update this task plus plan.md status in the same conversation.