From 368249d6770b262a7813aa80cc639c3323c5c5ef Mon Sep 17 00:00:00 2001 From: Hare Date: Mon, 15 Jun 2026 15:39:26 +0900 Subject: [PATCH] ticket: route queued tui panel work --- .../artifacts/orchestration-plan.jsonl | 1 + .yoi/tickets/00001KV4YAAVY/item.md | 4 +- .yoi/tickets/00001KV4YAAVY/thread.md | 79 +++++++++++++++++++ .../artifacts/orchestration-plan.jsonl | 1 + .yoi/tickets/00001KV4ZDMV1/item.md | 4 +- .yoi/tickets/00001KV4ZDMV1/thread.md | 71 +++++++++++++++++ .../artifacts/orchestration-plan.jsonl | 2 + .yoi/tickets/00001KV4ZPAD3/item.md | 2 +- .yoi/tickets/00001KV4ZPAD3/thread.md | 24 ++++++ 9 files changed, 183 insertions(+), 5 deletions(-) create mode 100644 .yoi/tickets/00001KV4YAAVY/artifacts/orchestration-plan.jsonl create mode 100644 .yoi/tickets/00001KV4ZDMV1/artifacts/orchestration-plan.jsonl create mode 100644 .yoi/tickets/00001KV4ZPAD3/artifacts/orchestration-plan.jsonl diff --git a/.yoi/tickets/00001KV4YAAVY/artifacts/orchestration-plan.jsonl b/.yoi/tickets/00001KV4YAAVY/artifacts/orchestration-plan.jsonl new file mode 100644 index 00000000..bb066727 --- /dev/null +++ b/.yoi/tickets/00001KV4YAAVY/artifacts/orchestration-plan.jsonl @@ -0,0 +1 @@ +{"id":"orch-plan-20260615-063825-1","ticket_id":"00001KV4YAAVY","kind":"accepted_plan","accepted_plan":{"summary":"Accept single-Pod View text selection/copy work. Implement mouse drag selection, highlight, Esc clear, y copy+clear, deterministic multi-item extraction, and focused tests without changing Panel row selection semantics.","branch":"impl/00001KV4YAAVY-single-pod-text-selection","worktree":"/home/hare/Projects/yoi/.worktree/00001KV4YAAVY-single-pod-text-selection","role_plan":"Orchestrator creates dedicated implementation worktree and spawns Coder with write scope limited to that worktree. Reviewer will run read-only after implementation report. This single-Pod View work is source/logically disjoint from Panel composer work enough for parallel start."},"author":"yoi-orchestrator","at":"2026-06-15T06:38:25Z"} diff --git a/.yoi/tickets/00001KV4YAAVY/item.md b/.yoi/tickets/00001KV4YAAVY/item.md index fec030e2..fede6e9d 100644 --- a/.yoi/tickets/00001KV4YAAVY/item.md +++ b/.yoi/tickets/00001KV4YAAVY/item.md @@ -1,8 +1,8 @@ --- title: 'single-Pod View Item text をマウスドラッグで選択・コピーできるようにする' -state: 'queued' +state: 'inprogress' created_at: '2026-06-15T06:08:19Z' -updated_at: '2026-06-15T06:37:00Z' +updated_at: '2026-06-15T06:39:16Z' assignee: null readiness: 'implementation_ready' risk_flags: ['tui', 'mouse-input', 'selection', 'clipboard', 'single-pod-view'] diff --git a/.yoi/tickets/00001KV4YAAVY/thread.md b/.yoi/tickets/00001KV4YAAVY/thread.md index f1ebd0c7..1040cb50 100644 --- a/.yoi/tickets/00001KV4YAAVY/thread.md +++ b/.yoi/tickets/00001KV4YAAVY/thread.md @@ -13,4 +13,83 @@ LocalTicketBackend によって作成されました。 Ticket を `workspace-panel` が queued にしました。 +--- + + + +## Decision + +Routing decision: implementation_ready + +Reason: +- Panel Queue により routing が明示的に許可され、Ticket は `queued`。 +- Ticket body / thread / relation / OrchestrationPlan / Orchestrator workspace state を確認した。blocking relation はなく、planning に戻す concrete missing information はない。 +- 対象は single-Pod conversation View の text-like Item selection/copy に限定され、Panel row selection とは scope が分かれている。 +- Tool/non-text Item と copy target は implementation-time decision として許容されており、binding invariants / acceptance criteria / escalation conditions が明確。 + +Evidence checked: +- Ticket body/thread: requirements、copy target、tool/non-text handling、acceptance criteria、non-goals、related work を確認。 +- Ticket relations: `00001KV072V89` と `00001KV10SN02` は related のみで blocker ではない。 +- OrchestrationPlan: 既存 record なし。 +- Orchestrator workspace: `/home/hare/Projects/yoi/.worktree/orchestration` は clean、`f0de8413` 上。 +- Visible Pods: implementation child Pod なし。Intake peer は routing blocker ではない。 +- Bounded code map: `crates/tui/src/single_pod.rs`、copy/clipboard abstraction、mouse/selection/key handling tests。 + +IntentPacket: + +Intent: +- single-Pod TUI conversation View で User/System/Assistant など text-like Item の表示テキストを mouse drag で選択し、`y` で copy、`Esc` で clear できるようにする。 + +Binding decisions / invariants: +- 対象は single-Pod View Item text。Panel Ticket/Pod row selection は変更しない。 +- terminal-native text selection preservation は non-goal。View drag は Yoi text selection として扱う。 +- selected/copy text、selection state、clipboard diagnostics は Pod history / model context / session log / Ticket records に残さない。 +- composer input、scroll、rewind picker、modal/popup、normal key handling と衝突させない。 +- bare Panel row mouse selection semantics は regress させない。 +- Tool/non-text Item handling と copy target は実装報告または decision comment に明示する。 + +Requirements / acceptance criteria: +- UserItem / SystemItem / AssistantItem text を drag selection できる。 +- drag start/update/release 後に selection state が残り、View 上で highlight される。 +- `Esc` で selection clear。 +- `y` で selected text を copy し、selection clear。 +- text-like Item を跨いだ selection が deterministic separator で copy される。 +- non-text/tool item handling decision が明示され、test で固定される。 +- copy 成功/失敗が user-visible で、secret-like diagnostics を出さない。 +- tests cover coordinate mapping、selection state、multi-item extraction、Esc、copy+clear、non-text/tool handling。 + +Implementation latitude: +- Existing clipboard abstraction があれば利用。なければ testable な最小 copy path を追加してよい。 +- OSC52/system clipboard/internal copy buffer の選択は既存 TUI architecture に合わせる。 +- rendering/highlight 表現、selection model の internal shape、separator は実装側判断。ただし deterministic にする。 + +Escalate if: +- terminal/crossterm event stream で必要な drag/release を識別できない。 +- existing rendering model から text coordinate mapping を安全に取れない。 +- copy target を追加すると secrets/history/model-context boundary に影響する。 +- rewind/modal/composer key handling と共存できない大きな model change が必要。 + +Validation: +- focused `cargo test -p tui ...` for single_pod selection/copy。 +- `cargo check -p tui --all-targets`。 +- `cargo fmt --check`。 +- `git diff --check`。 +- Panel row mouse selection regression test if related mouse plumbing is touched。 + +Critical risks / reviewer focus: +- selection/copy state の persistence leakage。 +- mouse coordinate -> rendered text mapping correctness。 +- multi-item extraction ordering/separator。 +- composer/scroll/rewind/modal conflict。 +- clipboard path safety and testability。 +- Panel mouse behavior regression absence。 + +--- + + + +## State changed + +Routing decision と accepted implementation plan を記録済み。blocking relation / unresolved OrchestrationPlan blocker はなく、single-Pod View work は同時に開始する Panel composer work と主対象が異なるため、implementation side effects の前に `queued -> inprogress` acceptance を記録する。 + --- diff --git a/.yoi/tickets/00001KV4ZDMV1/artifacts/orchestration-plan.jsonl b/.yoi/tickets/00001KV4ZDMV1/artifacts/orchestration-plan.jsonl new file mode 100644 index 00000000..cfb112d6 --- /dev/null +++ b/.yoi/tickets/00001KV4ZDMV1/artifacts/orchestration-plan.jsonl @@ -0,0 +1 @@ +{"id":"orch-plan-20260615-063902-1","ticket_id":"00001KV4ZDMV1","kind":"accepted_plan","accepted_plan":{"summary":"Accept Panel Alt+Enter newline bugfix. Preserve bare Enter semantics and shared composer key handling while adding focused regression coverage.","branch":"impl/00001KV4ZDMV1-panel-alt-enter-newline","worktree":"/home/hare/Projects/yoi/.worktree/00001KV4ZDMV1-panel-alt-enter-newline","role_plan":"Orchestrator creates dedicated implementation worktree and spawns Coder with write scope limited to that worktree. Reviewer will run read-only after implementation report. Run in parallel with single-Pod selection work; defer Panel row hierarchy visual work to avoid overlapping Panel rendering edits."},"author":"yoi-orchestrator","at":"2026-06-15T06:39:02Z"} diff --git a/.yoi/tickets/00001KV4ZDMV1/item.md b/.yoi/tickets/00001KV4ZDMV1/item.md index d260190c..58643633 100644 --- a/.yoi/tickets/00001KV4ZDMV1/item.md +++ b/.yoi/tickets/00001KV4ZDMV1/item.md @@ -1,8 +1,8 @@ --- title: 'Panel composer で Alt+Enter 改行を SessionView と揃える' -state: 'queued' +state: 'inprogress' created_at: '2026-06-15T06:27:36Z' -updated_at: '2026-06-15T06:37:01Z' +updated_at: '2026-06-15T06:39:16Z' assignee: null readiness: 'implementation_ready' risk_flags: ['tui-input', 'ux-consistency'] diff --git a/.yoi/tickets/00001KV4ZDMV1/thread.md b/.yoi/tickets/00001KV4ZDMV1/thread.md index 389cea42..3b190755 100644 --- a/.yoi/tickets/00001KV4ZDMV1/thread.md +++ b/.yoi/tickets/00001KV4ZDMV1/thread.md @@ -13,4 +13,75 @@ LocalTicketBackend によって作成されました。 Ticket を `workspace-panel` が queued にしました。 +--- + + + +## Decision + +Routing decision: implementation_ready + +Reason: +- Panel Queue により routing が明示的に許可され、Ticket は `queued`。 +- Ticket body / thread / relations / OrchestrationPlan / Orchestrator workspace state を確認した。blocking relation はなく、planning に戻す concrete missing information はない。 +- 既存 shared composer key handling 方針があり、主な不確実性は Panel の Enter 分岐順序/修飾キー処理の local fix と regression coverage に閉じている。 +- 同時 queued の `00001KV4YAAVY` は single-Pod View selection で主対象が異なるため並行開始可能。`00001KV4ZPAD3` は Panel row rendering surface と重なるため待機に回す。 + +Evidence checked: +- Ticket body/thread: Background、requirements、acceptance criteria、binding decisions、validation、related work を確認。 +- Ticket relations: blocker なし。 +- OrchestrationPlan: 既存 record なし。 +- Orchestrator workspace: `/home/hare/Projects/yoi/.worktree/orchestration` は clean、`f0de8413` 上。 +- Visible Pods: implementation child Pod なし。 +- Bounded code map: `crates/tui/src/composer_keys.rs`, `crates/tui/src/multi_pod.rs`, relevant Panel composer tests。 + +IntentPacket: + +Intent: +- Workspace Panel composer で `Alt+Enter` を SessionView / shared composer key handling と同じ改行挿入として扱い、submit/open/dispatch を起こさないようにする。 + +Binding decisions / invariants: +- `Alt+Enter` は composer editing key。Panel action key ではない。 +- bare `Enter` と `Alt+Enter` の意味を明確に分離する。 +- Panel composer は shared `composer_keys` 方針に従う。 +- Panel row selection / Ticket action semantics、Companion / Ticket Intake target semantics は変更しない。 +- bare letter shortcuts は復活させない。 + +Requirements / acceptance criteria: +- Panel composer に text がある状態で `Alt+Enter` が draft newline を挿入する。 +- composer empty / row selected / Ticket action selected でも `Alt+Enter` は submit/open/dispatch しない。 +- bare `Enter` の existing submit/open/dispatch behavior は維持される。 +- SessionView 側の `Alt+Enter` newline behavior は壊さない。 +- focused test で Panel `Alt+Enter` newline and no action を確認する。 + +Implementation latitude: +- `composer_edit_action(key)` を Enter action 分岐より前に適用するか、Enter 分岐で modifiers を除外するかは実装判断。 +- Existing tests への追加または新規 focused regression test のどちらでもよい。 +- UI hint update は必要なら最小限。 + +Escalate if: +- terminal/crossterm が対象環境で `Alt+Enter` を識別できない。 +- edit-first 処理が completion / target switching / row action 前提と衝突する。 +- SessionView 側にも同根の regression が見つかる。 + +Validation: +- `cargo test -p tui composer_keys` +- Panel focused tests / `cargo test -p tui multi_pod --lib` など変更箇所に応じた subset。 +- `cargo fmt --check` +- `git diff --check` + +Critical risks / reviewer focus: +- `Alt+Enter` が action dispatch に落ちないこと。 +- bare `Enter` semantics の regression。 +- shared composer key handling 方針から外れた ad-hoc 実装になっていないこと。 +- Panel target / row selection action identity が変わらないこと。 + +--- + + + +## State changed + +Routing decision と accepted implementation plan を記録済み。blocking relation / unresolved OrchestrationPlan blocker はなく、Panel Alt+Enter bugfix は同時に開始する single-Pod View selection work と主対象が異なるため、implementation side effects の前に `queued -> inprogress` acceptance を記録する。Panel visual hierarchy work `00001KV4ZPAD3` は conflict/capacity 理由で queued のまま待機させる。 + --- diff --git a/.yoi/tickets/00001KV4ZPAD3/artifacts/orchestration-plan.jsonl b/.yoi/tickets/00001KV4ZPAD3/artifacts/orchestration-plan.jsonl new file mode 100644 index 00000000..a66d72f0 --- /dev/null +++ b/.yoi/tickets/00001KV4ZPAD3/artifacts/orchestration-plan.jsonl @@ -0,0 +1,2 @@ +{"id":"orch-plan-20260615-063902-1","ticket_id":"00001KV4ZPAD3","kind":"conflicts_with","related_ticket":"00001KV4ZDMV1","note":"Panel rendering/input surface (`crates/tui/src/multi_pod.rs` / Panel row selection/action display) が `00001KV4ZDMV1` と重なる可能性があるため、Alt+Enter Panel composer work の outcome 後に開始する。","author":"yoi-orchestrator","at":"2026-06-15T06:39:02Z"} +{"id":"orch-plan-20260615-063916-2","ticket_id":"00001KV4ZPAD3","kind":"waiting_capacity_note","note":"`00001KV4YAAVY` と `00001KV4ZDMV1` を並行開始する。`00001KV4ZPAD3` は implementation_ready だが、Panel rendering/input surface の conflict risk と review/integration capacity のため queued のまま待機する。","author":"yoi-orchestrator","at":"2026-06-15T06:39:16Z"} diff --git a/.yoi/tickets/00001KV4ZPAD3/item.md b/.yoi/tickets/00001KV4ZPAD3/item.md index b93a601c..183312c5 100644 --- a/.yoi/tickets/00001KV4ZPAD3/item.md +++ b/.yoi/tickets/00001KV4ZPAD3/item.md @@ -2,7 +2,7 @@ title: 'Panel Ticket / Intake Pod row の視覚階層を改善する' state: 'queued' created_at: '2026-06-15T06:32:21Z' -updated_at: '2026-06-15T06:37:02Z' +updated_at: '2026-06-15T06:39:16Z' assignee: null readiness: 'implementation_ready' risk_flags: ['panel-ux', 'tui-layout', 'accessibility', 'row-selection'] diff --git a/.yoi/tickets/00001KV4ZPAD3/thread.md b/.yoi/tickets/00001KV4ZPAD3/thread.md index a43c4eb3..752db81f 100644 --- a/.yoi/tickets/00001KV4ZPAD3/thread.md +++ b/.yoi/tickets/00001KV4ZPAD3/thread.md @@ -29,4 +29,28 @@ Intake で要件・受け入れ条件・binding decisions / invariants・impleme Ticket を `workspace-panel` が queued にしました。 +--- + + + +## Decision + +Routing decision: implementation_ready_but_waiting_conflict_capacity + +Reason: +- Ticket body / thread / relations / OrchestrationPlan / Orchestrator workspace state を確認した。要件・受け入れ条件・invariants は実装可能な粒度で揃っており、planning に戻す concrete missing information はない。 +- ただし同時に `00001KV4ZDMV1` を Panel composer key handling work として accept する。両者は `crates/tui/src/multi_pod.rs` / Panel rendering・input surface に触れる可能性があり、並行すると row rendering / selected row / action identity regression の確認が曖昧になる。 +- `00001KV4YAAVY` は single-Pod View selection で並行開始するため、現時点では Panel visual hierarchy work を追加 spawn せず、先行 Panel composer work の outcome を待つ。 + +Evidence checked: +- Ticket body/thread: visual hierarchy/readability requirements、accessibility、row-selection invariants、validation を確認。 +- Ticket relations: blocker なし。 +- OrchestrationPlan: 既存 record なし。 +- Orchestrator workspace: `/home/hare/Projects/yoi/.worktree/orchestration` は clean、`f0de8413` 上。 +- Visible Pods: implementation child Pod なし。これから `00001KV4YAAVY` と `00001KV4ZDMV1` を acceptance 予定。 + +Next action: +- `00001KV4ZDMV1` の implementation/review/integration 後、Panel rendering surface を再確認し、unblocked なら `queued -> inprogress` acceptance へ進む。 +- planning return ではなく queued のまま waiting とする。 + ---