4.5 KiB
4.5 KiB
spec, created, status
| spec | created | status |
|---|---|---|
| docs/specs/workspaces/creation.md | 2026-07-23 | implemented |
Implementation Plan: Creation flow reliability
Overview
Fix the task-create repository tooltip regression independently from the Kanban workspace bootstrap behavior, then verify both through their existing user-facing creation flows. The backend change keeps Office onboarding separate while the frontend change preserves the current desktop and mobile dialog composition.
Related requirement: docs/specs/tasks/multi-branch/spec.md task-creation scenarios.
Backend
Kanban workspace bootstrap
- Extend
service.CreateWorkspaceRequestwith an internal creation-mode signal used only by the standard HTTP and WebSocket Kanban handlers. - When that signal is set, persist the workspace, a
Kanbanworkflow from templatesimple, and its template-derived steps in one repository transaction. Return an error without publishing either resource if any part of the transaction fails. - Set the signal in
internal/task/handlers/workspace_handlers.go; leaveinternal/backendapp/adapters_office.gounchanged so Office onboarding does not opt in. - Preserve the existing workspace response shape and publish the existing workspace/workflow events.
Frontend
Repository chip tooltip
- In
components/task-create-dialog-pill.tsx, replace the fixed post-popover suppression timer with suppression that lasts until the pointer leaves the trigger. - Make repository-path tooltip content wrap unbroken paths and cap its width to the viewport.
- Keep the existing dialog, searchable popover, keyboard focus, and touch behavior unchanged.
Mobile design contract
- Desktop outcome and mobile entry point remain the existing New Task dialog and repository chips.
- Nearest shipped mobile exemplar:
e2e/tests/task/mobile-create-task-repository-selection.spec.ts; reuse its same dialog/pill flow. - Presentation remains the existing dialog and touch-usable picker popover because this fix changes disclosure timing and path containment, not navigation, hierarchy, scrolling, or primary action.
- Shared
Pillstate owns the behavior on all viewports. No mobile-only state or persisted fallback is introduced. - The dialog remains the scroll owner; tooltip width is viewport-safe and no document horizontal overflow is introduced.
Tests
- Post-selection suppression: update
components/task-create-dialog-pill.test.tsxto prove a closed picker ignores tooltip-open requests until pointer leave, then allows a later deliberate hover. - Long path containment: assert the repository tooltip receives wrapping and viewport-width classes.
- Kanban workspace bootstrap: add a focused backend handler/integration regression proving a
standard workspace creation produces one
Kanbanworkflow with template-derived steps. - Office exclusion: add or extend an adapter/onboarding test proving the direct Office creation path does not opt into Kanban bootstrap.
E2E Tests
- Add a desktop fine-pointer regression that renders the real Radix tooltip for a long unbroken repository path, proves post-selection suppression through a deliberate leave/re-hover, and checks its bounding box against the viewport.
- Extend
apps/web/e2e/tests/task/mobile-create-task-repository-selection.spec.tswith the post-selection no-tooltip and viewport containment assertions. - Add or extend the workspace settings creation flow to create a workspace through the UI, then verify its workflow is visible and the task-create flow is immediately usable.
Implementation Waves
Wave 1 (parallel):
- task-01-repository-tooltip — implementer, balanced tier
- task-02-kanban-workspace-bootstrap — implementer, balanced tier
Wave 2:
- Integrate, run focused E2E, simplify, commit, and run delegated change-aware verification.
Verification
cd apps && pnpm --filter @kandev/web test -- --run components/task-create-dialog-pill.test.tsxcd apps/backend && go test -run 'Test.*CreateWorkspace.*Kanban|Test.*Office.*Workspace' ./internal/task/handlers ./internal/backendappmake build-backend build-webcd apps/web && pnpm e2e --project=chromium tests/task/create-task-repository-tooltip.spec.tscd apps/web && pnpm e2e -- tests/task/mobile-create-task-repository-selection.spec.ts- Focused workspace-creation Playwright spec selected during implementation from the nearest existing settings coverage.