3.9 KiB
3.9 KiB
id, title, status, wave, depends_on, plan, spec
| id | title | status | wave | depends_on | plan | spec |
|---|---|---|---|---|---|---|
| 01-submit-feedback | Add clarification submit spinner | done | 1 | plan.md | ../../specs/ui/requirements/clarification-submit-feedback.md |
Task 01: Add clarification submit spinner
Acceptance
- The shared multi-question clarification Submit button shows the existing
translated
Submitting...label and an animatedSpinnerwhile its response request is pending; it remains disabled and does not show the idle check icon. - Idle and failed submissions retain the current retryable behavior, and the shared change works in task chat and Quick Chat without changing the mobile composition.
- Desktop and mobile Playwright coverage proves the pending loading state.
Verification
Run from the repository root in one sequential block:
cd apps && pnpm install --frozen-lockfile
cd apps/web && pnpm run typecheck
cd apps/web && pnpm e2e:run --project chromium tests/chat/clarification.spec.ts -- --grep "question shortcuts stay disabled while answers are submitting"
cd apps/web && pnpm e2e:run --project mobile-chrome tests/chat/mobile-clarification.spec.ts -- --grep "loading spinner"
cd ../.. && git diff --check
Files likely touched
apps/web/components/task/chat/clarification-overlay-header.tsxapps/web/e2e/tests/chat/clarification.spec.tsapps/web/e2e/tests/chat/mobile-clarification.spec.ts
Dependencies
None.
Parallelism
Sequential. The shared component and its desktop/mobile proof must stay in one vertical slice.
Inputs
docs/specs/ui/requirements/clarification-submit-feedback.mddocs/plans/clarification-submit-feedback/plan.mdapps/web/hooks/domains/session/use-clarification-group.tsapps/web/components/task/chat/clarification-overlay-header.tsx- Existing
Spinnerusage inapps/web/components/settings/system/bundle-customizer.tsx
Risks
- The design-system spinner exposes an accessible status label; tests should scope that status to the submit button so unrelated loading indicators cannot satisfy the assertion.
- The mobile test must use the configured
mobile-chromeproject and the existing causal response-hold pattern, not a fixed sleep.
Results
cd apps && pnpm install --frozen-lockfilepassed.cd apps/web && pnpm run typecheckpassed.cd apps/web && pnpm run lintpassed with no errors or warnings.cd apps/web && pnpm exec prettier --check components/task/chat/clarification-overlay-header.tsx e2e/tests/chat/clarification.spec.ts e2e/tests/chat/mobile-clarification.spec.tspassed.cd apps/web && pnpm e2e:run --project chromium tests/chat/clarification.spec.ts -- --grep "question shortcuts stay disabled while answers are submitting"passed (1 test).cd apps/web && pnpm e2e:run --project mobile-chrome tests/chat/mobile-clarification.spec.ts -- --grep "loading spinner"passed (1 test).cd ../.. && git diff --checkpassed.- Final files:
apps/web/components/task/chat/clarification-overlay-header.tsx,apps/web/e2e/tests/chat/clarification.spec.ts,apps/web/e2e/tests/chat/mobile-clarification.spec.ts,docs/specs/ui/requirements/clarification-submit-feedback.md,docs/plans/clarification-submit-feedback/plan.md, and this task file. - The managed E2E runs rebuilt the backend and pseudo-locale Vite assets and cleaned their isolated test artifacts. No E2E blockers or failure artifacts remain.
- Fresh phone and desktop pending-state screenshots were captured with synthetic E2E data, visually inspected, compressed, and validated through
apps/web/.pr-assets/manifest.json; the disposable capture specs were removed afterward. - Fixup: addressed the P2 accessibility review by adding
aria-hidden="true"to the decorative spinner and asserting that attribute in both desktop and mobile E2E coverage. - Fixup verification passed:
cd apps/web && pnpm run typecheck,cd apps/web && pnpm run lint, and the focused desktop/mobile E2E commands above.