> For the complete documentation index, see [llms.txt](https://faction-os.gitbook.io/faction-os-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://faction-os.gitbook.io/faction-os-docs/.spec_system/archive/sessions/phase18-session10-quest-actions-and-keyboard-shortcuts/tasks.md).

# Task Checklist

**Session ID**: `phase18-session10-quest-actions-and-keyboard-shortcuts` **Total Tasks**: 23 **Estimated Duration**: 3-4 hours **Created**: 2026-06-10

***

## Legend

* `[x]` = Completed
* `[ ]` = Pending
* `[P]` = Parallelizable (can run with other \[P] tasks)
* `[SNNMM]` = Session reference (NN=phase number, MM=session number)
* `TNNN` = Task ID

***

## Progress Summary

| Category       | Total  | Done   | Remaining |
| -------------- | ------ | ------ | --------- |
| Setup          | 3      | 3      | 0         |
| Foundation     | 6      | 6      | 0         |
| Implementation | 10     | 10     | 0         |
| Testing        | 4      | 4      | 0         |
| **Total**      | **23** | **23** | **0**     |

***

## Setup (3 tasks)

Initial configuration and environment preparation.

* [x] T001 \[S1810] Verify the shipped accept, dismiss, issue-dismiss, scan, analysis, project-scan, and status route contracts before building web callers (`apps/server/src/routes/suggestions.ts`)
* [x] T002 \[S1810] Review typed Quest Board card normalization, card IDs, and source-specific metadata before adding action capabilities (`apps/web/src/lib/questBoardModel.ts`)
* [x] T003 \[S1810] Review current Quest Board component and keyboard shortcut routing constraints before adding interactive controls and Alt-key bindings (`apps/web/src/components/QuestBoard.tsx`)

***

## Foundation (6 tasks)

Core structures and base implementations.

* [x] T004 \[S1810] \[P] Create Quest Board action request/result types and HTTP helpers with local auth headers, safe ID validation, AbortController timeout, bounded JSON parsing, and compact error mapping (`apps/web/src/lib/questBoardActions.ts`)
* [x] T005 \[S1810] Implement accept, suggestion-dismiss, issue-dismiss, scan-trigger, analysis-trigger, project-scan-trigger, and status route callers with duplicate-safe payload construction and explicit failure-path handling (`apps/web/src/lib/questBoardActions.ts`)
* [x] T006 \[S1810] Add action capability metadata to typed Quest Board cards for server-backed idle accept/dismiss, codebase issue dismiss-only, and unsupported informational sources with exhaustive enum handling (`apps/web/src/lib/questBoardModel.ts`)
* [x] T007 \[S1810] Preserve action metadata through snapshot and legacy normalization while avoiding raw prompts, absolute paths, tokens, and unsupported fake route claims (`apps/web/src/lib/questBoard.ts`)
* [x] T008 \[S1810] Add Quest Board action pending, trigger pending, feedback, and optimistic-removal state shapes with reset defaults and snapshot reconciliation hooks (`apps/web/src/store/useGameStore.ts`)
* [x] T009 \[S1810] Add pure helper selectors for actionable top cards, idle cards, idle hero options, disabled actions, and bulk-dismiss targets with deterministic ordering (`apps/web/src/store/useGameStore.ts`)

***

## Implementation (10 tasks)

Main feature implementation.

* [x] T010 \[S1810] Implement store-owned accept action with duplicate-trigger prevention while in-flight, local auth route call, send\_prompt/prompt\_sent feedback, and scoped rollback on error (`apps/web/src/store/useGameStore.ts`)
* [x] T011 \[S1810] Implement store-owned assign-to-idle-hero action with unavailable-hero validation, duplicate-trigger prevention while in-flight, explicit mismatch feedback, and snapshot reconciliation (`apps/web/src/store/useGameStore.ts`)
* [x] T012 \[S1810] Implement store-owned idle suggestion and codebase issue dismiss actions with optimistic removal, duplicate-trigger prevention while in-flight, rollback on failure, and explicit error mapping (`apps/web/src/store/useGameStore.ts`)
* [x] T013 \[S1810] Implement store-owned Alt+X bulk idle dismissal with bounded parallel requests, duplicate-trigger prevention while in-flight, partial-failure feedback, and legacy fallback clearing (`apps/web/src/store/useGameStore.ts`)
* [x] T014 \[S1810] Implement store-owned Quest Board scan, analysis, and project-scan triggers with settings-root input, quest ignore patterns, timeout/conflict handling, pending status, and feedback reconciliation (`apps/web/src/store/useGameStore.ts`)
* [x] T015 \[S1810] Render Quest Board card accept, dismiss, and assign controls with platform-appropriate accessibility labels, focus management, disabled in-flight states, and responsive non-overlapping layout (`apps/web/src/components/QuestBoard.tsx`)
* [x] T016 \[S1810] Render Quest Board manual trigger buttons for codebase scan, analysis, and project scan with in-progress status, conflict/offline/error feedback, and duplicate-trigger prevention while in-flight (`apps/web/src/components/QuestBoard.tsx`)
* [x] T017 \[S1810] Add a compact Quest Board reply/composer focus target for Alt+R with stable data-testid, accessible label, state reset on re-entry, and no raw prompt leakage (`apps/web/src/components/QuestBoard.tsx`)
* [x] T018 \[S1810] Extend routeKey and useKeyboardShortcuts for 1/2/3 accept, Alt+X bulk dismiss, and Alt+R composer focus with typing-target guards and no regression to existing shortcuts (`apps/web/src/lib/useKeyboardShortcuts.ts`)
* [x] T019 \[S1810] Update shortcut help entries for 1/2/3, Alt+X, and Alt+R with grouped Quest Board copy while preserving existing overlay grouping (`apps/web/src/lib/useKeyboardShortcuts.ts`)

***

## Testing (4 tasks)

Verification and quality assurance.

* [x] T020 \[S1810] \[P] Write Quest Board action client tests for request construction, local auth, success variants, conflicts, timeouts, offline failures, malformed responses, and redacted errors (`apps/web/tests/questBoardActions.test.ts`)
* [x] T021 \[S1810] \[P] Write normalization and store tests for action capabilities, accept/assign/dismiss/bulk/trigger pending state, optimistic rollback, and snapshot reconciliation (`apps/web/tests/questBoardStore.test.ts`)
* [x] T022 \[S1810] Write Quest Board component and shortcut-help tests for card controls, assignment, trigger buttons, feedback, disabled states, composer focus target, and help rows (`apps/web/tests/QuestBoard.test.tsx`)
* [x] T023 \[S1810] Run focused Quest Board and keyboard tests, `npm --workspace apps/web run typecheck`, ASCII/LF validation, and update implementation notes with evidence (`apps/web/tests/keyboardShortcuts.test.ts`)

***

## Completion Checklist

Before marking session complete:

* [x] All tasks marked `[x]`
* [x] All tests passing
* [x] All files ASCII-encoded
* [x] implementation-notes.md updated
* [x] Ready for the validate workflow step

***

## Next Steps

Run the implement workflow step to begin AI-led implementation.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://faction-os.gitbook.io/faction-os-docs/.spec_system/archive/sessions/phase18-session10-quest-actions-and-keyboard-shortcuts/tasks.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
