1.7 KiB
1.7 KiB
id, title, status, wave, depends_on, plan, spec
| id | title | status | wave | depends_on | plan | spec | |
|---|---|---|---|---|---|---|---|
| 02-responsive-close-feedback | Responsive optimistic terminal close | done | 2 |
|
plan.md | ../../specs/ui/requirements/terminal-close-feedback.md |
Task 02: Responsive optimistic terminal close
Intent
Apply the shared immediate-removal contract to tablet and phone without changing their established navigation or terminal-picker composition.
Acceptance
- Tablet tabs derive directly from the optimistically filtered terminal list and expose no teardown spinner or pending metadata.
- Phone rows disappear with their mounted terminal content before transport settles.
- Phone close remains a visible touch target at least 44px in each active dimension.
- Busy phone close morphs within the target row into touch-sized Cancel and Close terminal actions; no nested modal, popover, or drawer is added.
- The final-terminal auto-create guard remains background success bookkeeping and never keeps the row visible.
Files
apps/web/components/task/task-right-panel.tsxapps/web/components/task/mobile/mobile-terminal-pane.tsxapps/web/components/task/mobile/mobile-terminals-section.tsxapps/web/components/task/mobile/mobile-terminal-row.tsx- Focused tests alongside those files
Verification
cd apps
pnpm --filter @kandev/web test -- --run components/task/mobile/mobile-terminal-row.test.tsx
cd web && pnpm run typecheck
Results
- Teardown-pending presentation was removed from shared tabs and phone rows.
- Phone retains its 44px close action and existing picker, scroll, safe-area, and selection model; required confirmation morphs that action in place.
- Typecheck passed; responsive tests are included in the 4-file, 12-test focused run.