2.7 KiB
2.7 KiB
id, title, status, wave, depends_on, plan, spec
| id | title | status | wave | depends_on | plan | spec | |
|---|---|---|---|---|---|---|---|
| 03-frontend-api-hook-reorder | Frontend queue API and hook reorder | done | 3 |
|
plan.md | ../../specs/ui/requirements/message-queue-reorder.md |
Task 03: Frontend queue API and hook reorder
Acceptance
reorderQueuedEntries({ session_id, ordered_ids })sendsmessage.queue.reordervia the WS client and maps thequeue_changederror code to a dedicatedQueueReorderError.useQueueexposesreorderEntries(orderedIds)that optimistically reorders the store entries, refetches on success, refetches and swallowsQueueReorderError, and refetches + rethrows other failures.QueueAffordance/useQueuePanelHandlersexposehandleReorderthat toastschat:failedToReorderQueuedMessagesfor non-race failures; unit tests cover the payload, error mapping, optimistic order, and reconcile.
Verification
cd apps && pnpm --filter @kandev/web test -- lib/api/domains/queue-api.test.ts hooks/domains/session/use-queue.test.ts components/task/chat/queued-ghost-list.test.tsx
cd apps/web && pnpm run typecheck
Files likely touched
apps/web/lib/api/domains/queue-api.ts—QueueReorderError,reorderQueuedEntries(checkasWSError(err)?.code === "queue_changed"beforerethrowQueueError).apps/web/lib/api/domains/queue-api.test.ts— new cases.apps/web/hooks/domains/session/use-queue.ts—reorderEntriesinuseEntryMutations-adjacent code (oruseQueueActions), exposed fromuseQueue; optimisticsetQueueEntriespreservingmeta.apps/web/hooks/domains/session/use-queue.test.ts— new cases.apps/web/components/task/chat/queued-ghost-list.tsx—handleReorderinuseQueuePanelHandlers(toast wiring only; drag UI is task 04).
Dependencies
Task 02 (wire contract exists; handler returns queue_changed).
Parallelism
Sequential.
Inputs
- Spec:
## API Surface,## Failure Modes. - Plan:
### API client,### Hook,### State slice. - Existing patterns:
mergeQueuedEntry/QueueEntryNotFoundErrorhandling inuseEntryMutations,sendQueuedNow+QueueSendNowErrorinqueue-api.ts.
Output contract
Summary, files changed, exact test commands and outcomes, blockers, risks; update task + plan statuses in the same conversation.
Results
cd apps && pnpm --filter @kandev/web test -- lib/api/domains/queue-api.test.ts hooks/domains/session/use-queue.test.ts→ 43 passed.cd apps/web && pnpm run typecheck→ exit 0.- Files:
lib/api/domains/queue-api.ts(QueueReorderError,reorderQueuedEntries+ tests),hooks/domains/session/use-queue.ts(useReorderEntriesAction,reorderEntriesexposed fromuseQueue+ tests).