4.0 KiB
4.0 KiB
id, title, status, wave, depends_on, plan, spec
| id | title | status | wave | depends_on | plan | spec |
|---|---|---|---|---|---|---|
| 01-inline-delete-feedback | Inline session delete feedback | done | 1 | plan.md | ../../specs/ui/session-tab-delete-feedback.md |
Task 01: Inline session delete feedback
Intent
Move X-initiated agent-session deletion feedback into the tab close control without changing the confirmation, context-menu feedback, mobile feedback, or successful session cleanup behavior.
Acceptance
- Confirmed X-originated deletion renders a disabled, busy spinner in place of the X and emits no progress or success toast; repeated activation cannot dispatch another request.
- A failed X-originated deletion keeps the tab/session, restores the X, and emits exactly one error toast. Default session-action callers retain their current toast sequence.
- Successful deletion still hands off the active session before removing local session state and the Dockview panel.
Files likely touched
apps/web/hooks/domains/session/use-session-actions.tsapps/web/hooks/domains/session/use-session-actions.test.tsapps/web/components/task/session-tab.tsxapps/web/components/task/session-tab-close-action.tsxapps/web/components/task/session-tab-close-action.test.tsxapps/web/src/locales/en/common.jsonapps/web/src/locales/zh-cn/common.jsonapps/web/src/locales/pseudo/common.json
Dependencies
None.
Parallelism
Sequential. The hook contract, tab integration, and close-action state are one behavior and share the same focused tests.
Inputs
- Spec:
What,Failure modes, and the first fourScenarios. - Plan:
Shared session delete action,Session tab close action, andTests. - Existing patterns:
useSessionActionssuccess-only cleanup ordering,SessionTabTriggerContent,shouldMarkSessionTabUserActivationIntent, andGridSpinnerinapps/web/components/enhance-prompt-button.tsx.
Verification
Bootstrap once if this worktree does not already have dependencies:
cd apps && pnpm install --frozen-lockfile
Run:
cd apps && pnpm --filter @kandev/web test -- hooks/domains/session/use-session-actions.test.ts components/task/session-tab-close-action.test.tsx
cd apps/web && pnpm run typecheck
cd apps/web && pnpm run i18n:check
cd apps/web && pnpm run i18n:ratchet
Output contract
Report the feedback-mode API, close-control behavior, files changed, exact test results, blockers, risks, and synchronized task/plan status. Do not change backend deletion or other lifecycle-action feedback.
Results
- Added the optional
remove({ feedback })contract. Default callers retain loading/success/error toasts; the tab-X mode suppresses progress/success and emits one error toast on failure while preserving success-only store/panel cleanup. - Replaced Dockview's opaque session close icon with a localized repository-owned X/spinner action that preserves the close test ID and activation guard. Confirmation origin tracking limits the inline behavior to tab-X deletes; context-menu and mobile callers remain on toast feedback.
- Added deterministic idle/pending close-action coverage, including disabled state,
aria-busy, and blocked repeat activation. rtk pnpm --filter @kandev/web test -- components/task/session-tab-close-action.test.tsx hooks/domains/session/use-session-actions.test.ts— 2 files, 15 tests passed.rtk pnpm run typecheck— passed.rtk pnpm run i18n:check— passed with pseudo locale in sync (the existing 670 zh-cn parity notices are advisory).rtk pnpm run i18n:ratchet— passed.rtk pnpm exec eslint components/task/session-tab.tsx components/task/session-tab-close-action.tsx hooks/domains/session/use-session-actions.ts hooks/domains/session/use-session-actions.test.ts components/task/session-tab-close-action.test.tsx e2e/tests/session/session-tab-management.spec.ts e2e/tests/session/mobile-session-deletion.spec.ts— passed.rtk git diff --check— passed.
Generated artifact: apps/web/src/locales/pseudo/common.json. No external side effects beyond local
WebSocket test mocks.