## 作成 LocalTicketBackend によって作成されました。 --- ## Intake summary ユーザー合意により ready 化。Ticket は `implementation_ready` で、初回 `yoi panel` 表示時から未選択、`Esc` 後の no-selection を reload が復活させない、未選択 + `TicketIntake` composer submit を global/new Intake に流す、という要件・受け入れ条件・validation が明記されている。未決定点なし。 --- ## State changed ユーザーから `readyにして` の明示指示があり、対象 Ticket の item/thread を確認した。要件・受け入れ条件・risk flags・validation が揃っており、Orchestrator が routing 可能なため `ready` に遷移する。 --- ## State changed Ticket を `workspace-panel` が queued にしました。 --- ## Decision Routing decision: `implementation_ready_parallel` Reason: - Ticket body has concrete Dashboard selection semantics and focused test requirements。 - No relations / blockers / orchestration plan records exist。 - Active queued Workspace identity Ticket is backend/workspace-server focused and separate from TUI Dashboard row-selection code, so parallel implementation is acceptable。 - Orchestrator worktree is clean on `orchestration` at `13e76d35`; target worktree / branch is not present。 - Code map from Ticket body points to `crates/tui/src/dashboard/mod.rs`, `tests.rs`, and `render.rs`。 IntentPacket: Intent: - Treat no-selection as a first-class Dashboard UX state: initial panel display and reload/background refresh must not auto-select rows, while explicit keyboard/mouse selection still works。 Binding decisions / invariants: - Initial `yoi panel` display should have `selected_row = None` even when rows are visible。 - `Esc` clear must persist across reload/snapshot refresh; reload must not recreate selection after explicit no-selection。 - If a user explicitly selected a row and it remains visible after reload, that selection may be preserved。 - If selected row disappears after reload, fall back safely to no-selection。 - Composer draft must survive selection clear/reload。 - Existing row actions, queue/close/open operations, Ticket workflow state semantics, and row-click-is-selection-only policy must remain unchanged。 - No broad Dashboard layout redesign in this Ticket。 Requirements / acceptance criteria: - Initial Dashboard state has no selected row when rows exist。 - Esc clear -> reload completion -> still no selected row。 - No-selection + `TicketIntake` composer submit routes to global/new Intake, not selected Ticket refinement。 - Keyboard navigation or mouse click can explicitly create selection again。 - Focused tests cover the above semantics。 Implementation latitude: - Use an explicit no-selection flag or refine selection visibility correction conditions。 - The key is to make selection creation happen only from explicit user navigation/click/action paths, not from reload/init visibility correction。 Escalate if: - Initial no-selection substantially breaks keyboard-only navigation or blank Enter action contract。 - Existing selection visibility correction has safety roles that cannot be preserved with a local change。 - Real terminal / PTY behavior is required beyond focused tests。 Validation plan: - `cargo fmt --check` - `cargo test -q -p tui workspace_panel` - Dashboard focused tests as needed。 - `git diff --check` - `cargo run -p yoi -- ticket doctor`。 --- ## State changed Human authorized queue routing from Workspace Dashboard. Ticket has concrete Dashboard selection semantics and no recorded blockers, so Orchestrator accepts implementation. --- ## Implementation report Implementation start report: - Created child implementation worktree: - `/home/hare/Projects/yoi/.worktree/00001KVSKJ0EA-dashboard-no-auto-selection` - Created branch: - `impl/00001KVSKJ0EA-dashboard-no-auto-selection` - Base commit: - `4cda83b7 ticket: accept workspace identity and selection work` - Confirmed tracked Ticket project records are visible in the child worktree。 - Confirmed `.yoi/memory` has no tracked/untracked entries in the child worktree check。 - Spawned sibling Coder Pod: - `yoi-coder-00001KVSKJ0EA` - Coder scope: - read: `/home/hare/Projects/yoi` - write: `/home/hare/Projects/yoi/.worktree/00001KVSKJ0EA-dashboard-no-auto-selection` Parallelization note: - `00001KVSKGDYS` is active separately and targets Workspace backend identity persistence. This Ticket should stay limited to TUI Dashboard selection semantics。 Next action: - Wait for Coder implementation report, then spawn Reviewer read-only for the implementation diff。 --- ## Implementation report Coder implementation report received from `yoi-coder-00001KVSKJ0EA`. Implementation commit: - `5c242d96 fix: keep dashboard row selection explicit` Changed areas: - `crates/tui/src/dashboard/mod.rs` - Reload/snapshot reconciliation preserves only an explicitly selected visible row。 - Initial/reload visibility correction no longer auto-selects a row。 - Stale/disappeared selections fall back to `None`。 - `Esc` clear state remains no-selection across reload。 - Keyboard navigation from no-selection explicitly creates selection on first visible row。 - `list.selected_name` stays aligned with actual Pod row selection and clears for non-Pod/no-selection states。 - `crates/tui/src/dashboard/tests.rs` - Added focused coverage for initial visible rows with no selected row。 - Added `Esc` clear surviving reload while preserving composer draft。 - Added no-selection + `TicketIntake` submit routing to global/new Intake。 - Added keyboard navigation creating selection explicitly。 - Added reload fallback to no-selection when selected row disappears。 - Updated existing Dashboard tests to explicitly select rows where previous behavior depended on auto-selection。 Coder validation reported: - `cargo fmt --check`: passed - `cargo test -q -p tui workspace_panel`: passed - `cargo test -q -p tui dashboard`: passed - `git diff --check`: passed - `cargo run -p yoi -- ticket doctor`: passed (`doctor: ok`) Orchestrator evidence checked: - Worktree clean on `impl/00001KVSKJ0EA-dashboard-no-auto-selection` at `5c242d96`。 - Diff `4cda83b7..HEAD` touches expected Dashboard model/tests only。 - `git diff --check 4cda83b7..HEAD`: passed。 Next action: - Route to read-only Reviewer Pod for acceptance review。 --- ## Comment Review routing: Spawned read-only Reviewer Pod: - `yoi-reviewer-00001KVSKJ0EA-r1` Review target: - Worktree: `/home/hare/Projects/yoi/.worktree/00001KVSKJ0EA-dashboard-no-auto-selection` - Branch: `impl/00001KVSKJ0EA-dashboard-no-auto-selection` - Baseline: `4cda83b7` - Implementation commit: `5c242d96 fix: keep dashboard row selection explicit` - Diff: `4cda83b7..5c242d96` Reviewer scope: - read-only `/home/hare/Projects/yoi` Reviewer focus: - Initial/reload no-auto-selection semantics。 - Esc clear persistence and composer draft preservation。 - Explicit keyboard/mouse selection still works。 - Stale selection falls back to none。 - No-selection TicketIntake composer routing。 - `list.selected_name` sync and no stale Pod selection。 - No row-action / workflow semantic regressions。 Orchestrator will wait for reviewer verdict before integration。 --- ## Review: approve Reviewer Pod `yoi-reviewer-00001KVSKJ0EA-r1` approved the implementation. Reviewed target: - Worktree: `/home/hare/Projects/yoi/.worktree/00001KVSKJ0EA-dashboard-no-auto-selection` - Branch: `impl/00001KVSKJ0EA-dashboard-no-auto-selection` - Implementation: `5c242d96 fix: keep dashboard row selection explicit` - Diff: `4cda83b7..5c242d96` Reviewer evidence: - 初期表示 / reload path は row selection を自動生成しない。 - `selected_row = None` は `Esc` 後も reload/snapshot reconciliation を跨いで維持される。 - 明示的な keyboard navigation は no-selection から selection を作成できる。 - 明示的 selection は row が visible な間は維持される。 - 消えた / stale row selection は `None` へ落ちる。 - `list.selected_name` は no-selection / non-Pod selection で clear され、実際の Pod row selection のみで設定される。 - no-selection + `TicketIntake` submit は global/new Intake launch へ進む。 - mouse click は selection-only のまま。 - 差分は Dashboard selection logic と focused tests に限定され、layout / render / workflow semantic の不要変更はない。 Blocking issues: - なし。 Non-blocking concerns: - なし。 Reviewer validation: - `cargo fmt --check`: passed - `git diff --check 4cda83b7..HEAD`: passed - `cargo test -q -p tui workspace_panel`: passed (`27 passed`) - `cargo test -q -p tui dashboard`: passed (`111 passed`) - `cargo run -q -p yoi -- ticket doctor`: passed (`doctor: ok`) - `cargo test -q -p tui`: passed (`372 passed`) Worktree status: - clean at `5c242d96`。 --- ## Implementation report Merge and validation completed. Merged implementation: - Merge commit: `58904c44 merge: dashboard no auto selection` - Implementation commit: `5c242d96 fix: keep dashboard row selection explicit` Post-merge validation in orchestration worktree: - `cargo fmt --check`: passed - `git diff --check HEAD^1..HEAD`: passed - `cargo test -q -p tui workspace_panel`: passed (`27 passed`) - `cargo test -q -p tui dashboard`: passed (`111 passed`) - `cargo run -q -p yoi -- ticket doctor`: passed (`doctor: ok`) Outcome: - 初期表示と reload/snapshot reconciliation が row selection を自動生成しなくなった。 - `Esc` 後の no-selection は reload を跨いで維持される。 - 明示的 keyboard navigation による selection 作成は維持された。 - `TicketIntake` composer の no-selection submit は global/new Intake route になる。 - stale selection は安全に `None` へ落ちる。 - Ticket lifecycle / row action semantics は変更していない。 --- ## State changed 実装は reviewer approval 後に orchestration worktree へ merge され、post-merge validation も通過したため done とする。 --- ## State changed Ticket を closed にしました。 --- ## 完了 Dashboard の row selection を明示的 user action の結果として扱うように修正した。 完了内容: - 初期表示で visible row があっても自動選択しない。 - reload / snapshot reconciliation で `selected_row = None` を勝手に selection へ戻さない。 - `Esc` による no-selection が reload を跨いで維持される。 - 選択中 row が消えた場合は `None` へ安全に落とす。 - keyboard navigation では no-selection から明示的に selection を作成できる。 - `list.selected_name` は実際の Pod row selection と同期し、no-selection / non-Pod selection では clear する。 - no-selection + `TicketIntake` composer submit が既存 Ticket refinement ではなく global/new Intake route へ進むことを focused test で確認した。 統合: - Implementation: `5c242d96 fix: keep dashboard row selection explicit` - Merge: `58904c44 merge: dashboard no auto selection` 検証: - Reviewer approval: `yoi-reviewer-00001KVSKJ0EA-r1` - `cargo fmt --check`: passed - `git diff --check HEAD^1..HEAD`: passed - `cargo test -q -p tui workspace_panel`: passed (`27 passed`) - `cargo test -q -p tui dashboard`: passed (`111 passed`) - reviewer 側追加確認 `cargo test -q -p tui`: passed (`372 passed`) - `cargo run -q -p yoi -- ticket doctor`: passed (`doctor: ok`) 残作業: - なし。 ---