4.6 KiB
id, title, status, wave, depends_on, plan, requirements, acceptance_criteria, system_design
| id | title | status | wave | depends_on | plan | requirements | acceptance_criteria | system_design | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 02-task-controls | Task control sweep | complete | 2 |
|
plan.md |
|
|
|
Task 02: Task control sweep
Summary
Normalize ordinary controls throughout task creation and task details. Repair completed-session and recovery actions while preserving compact chat chrome.
In scope
- Disposition all Task surfaces candidates in sweep-inventory.md, including newly discovered callers.
- Repair session-stopped-banner, dynamic-route-recovery, session dialogs, action-message controls, file/preview toolbars, and task-level selectors.
- Keep Start Task at the reference desktop size and preserve its split action and phone composition.
- Inspect workflow disclosure row spacing separately from its already compact Move here action.
- Add task/control-sizing.spec.ts and task/mobile-control-sizing.spec.ts using the shared geometry helper.
Out of scope
- Feature state, callbacks, permission changes, and persistence.
- Unrelated theme, typography, or navigation redesign.
Acceptance
- New Agent, Resume, and Start fresh session render at 28px on desktop and retain touch minimums.
- Task controls have a recorded disposition, including correct compact and mobile-only exceptions.
- Completed/recovery actions, keyboard activation, busy states, and long labels retain their behavior.
Regression first
Seed a completed session through existing isolated fixtures. Confirm that New Agent measures 44px and fails the 28px desktop assertion before the patch.
Use TDD for new helper logic and browser regressions. Run the new regression before production edits and record the expected failure. Rerun the same check after the correction.
Verification
Run from the repository root. The first package command requires installed workspace dependencies. Run desktop and mobile checks sequentially. The mobile command reuses the immediately preceding unchanged production build.
pnpm --dir apps/web exec vitest run components/task/chat/session-stopped-banner.test.tsx components/task-create-dialog-footer.test.ts
pnpm --dir apps/web e2e:run --project chromium tests/task/control-sizing.spec.ts tests/layout/task-topbar-workflow-stepper.spec.ts
pnpm --dir apps/web e2e:run --no-build --project mobile-chrome tests/task/mobile-control-sizing.spec.ts
pnpm --dir apps/web run typecheck
Before completion, run ESLint on the exact changed TypeScript files from apps/web.
Record the expanded file list and command in Results.
Do not substitute class-string checks for browser geometry.
Files likely touched
apps/web/components/task/chat/session-stopped-banner.tsxapps/web/components/task/chat/dynamic-route-recovery.tsxapps/web/components/task-create-dialog-footer.tsxapps/web/components/task/workflow-step-disclosure.tsxapps/web/components/task/chat/session-stopped-banner.test.tsxapps/web/components/task-create-dialog-footer.test.tsapps/web/e2e/tests/task/control-sizing.spec.tsapps/web/e2e/tests/task/mobile-control-sizing.spec.ts
The inventory section Task surfaces defines the remaining file scope.
Dependencies
01-shared-sizes
Risks
Chat menus and selection rows can use button tags without being ordinary actions. Session completion fixtures must expose the actual banner.
Parallelism
sequential
Inputs
- Requirements
- System design
- Sweep inventory
- Existing Start Task, settings typography, and mobile geometry tests.
Results
Completed 2026-09-10.
- Red: the completed-session regression measured the desktop New Agent action at 44px instead of 28px before the migration.
- Green: focused task unit coverage passed; task control sizing passed with 2 desktop and 1 mobile test, and the workflow-stepper suite passed with 2 desktop tests covering fine-pointer and contained tablet touch navigation.
- Session recovery, task creation, action-message, preview, selector, and filter controls now use the standard role or a recorded compact/content exception.
- The final typecheck and exact changed-file ESLint passed with 0 errors; the completed inventory records the task-surface dispositions.