diff --git a/.yoi/tickets/00001KT0Z4BK8/item.md b/.yoi/tickets/00001KT0Z4BK8/item.md index c0dbd15e..b9f77ebf 100644 --- a/.yoi/tickets/00001KT0Z4BK8/item.md +++ b/.yoi/tickets/00001KT0Z4BK8/item.md @@ -1,8 +1,8 @@ --- title: 'Plugin distribution package format and discovery' -state: 'done' +state: 'closed' created_at: '2026-06-01T06:49:53Z' -updated_at: '2026-06-14T15:56:45Z' +updated_at: '2026-06-15T06:33:50Z' queued_by: 'workspace-panel' queued_at: '2026-06-14T15:40:15Z' --- diff --git a/.yoi/tickets/00001KT0Z4BK8/resolution.md b/.yoi/tickets/00001KT0Z4BK8/resolution.md new file mode 100644 index 00000000..8bc7d95a --- /dev/null +++ b/.yoi/tickets/00001KT0Z4BK8/resolution.md @@ -0,0 +1,3 @@ +Ticket `00001KT0Z4BK8` (`Plugin distribution package format and discovery`) はすでに `state: done` に到達していたため、workspace Panel から close しました。 + +この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。 diff --git a/.yoi/tickets/00001KT0Z4BK8/thread.md b/.yoi/tickets/00001KT0Z4BK8/thread.md index a5f021e2..b08fbbc7 100644 --- a/.yoi/tickets/00001KT0Z4BK8/thread.md +++ b/.yoi/tickets/00001KT0Z4BK8/thread.md @@ -375,4 +375,24 @@ Cleanup planned: Reviewer approved, documentation/design implementation branch merged into the orchestration branch, and documentation-focused validation passed in the Orchestrator worktree. Marking Ticket done in the orchestration branch. +--- + + + +## State changed + +Ticket を closed にしました。 + + +--- + + + +## 完了 + +Ticket `00001KT0Z4BK8` (`Plugin distribution package format and discovery`) はすでに `state: done` に到達していたため、workspace Panel から close しました。 + +この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。 + + --- diff --git a/.yoi/tickets/00001KTFY8V80/item.md b/.yoi/tickets/00001KTFY8V80/item.md index a2a5147f..cf976cd1 100644 --- a/.yoi/tickets/00001KTFY8V80/item.md +++ b/.yoi/tickets/00001KTFY8V80/item.md @@ -1,8 +1,8 @@ --- title: "Preserve active workflows across compaction" -state: 'done' +state: 'closed' created_at: "2026-06-07T02:23:28Z" -updated_at: '2026-06-14T16:26:01Z' +updated_at: '2026-06-15T06:33:44Z' queued_by: 'workspace-panel' queued_at: '2026-06-14T15:23:07Z' --- diff --git a/.yoi/tickets/00001KTFY8V80/resolution.md b/.yoi/tickets/00001KTFY8V80/resolution.md new file mode 100644 index 00000000..377a7186 --- /dev/null +++ b/.yoi/tickets/00001KTFY8V80/resolution.md @@ -0,0 +1,3 @@ +Ticket `00001KTFY8V80` (`Preserve active workflows across compaction`) はすでに `state: done` に到達していたため、workspace Panel から close しました。 + +この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。 diff --git a/.yoi/tickets/00001KTFY8V80/thread.md b/.yoi/tickets/00001KTFY8V80/thread.md index 2c6b4bd7..5a8d1016 100644 --- a/.yoi/tickets/00001KTFY8V80/thread.md +++ b/.yoi/tickets/00001KTFY8V80/thread.md @@ -414,4 +414,24 @@ Cleanup planned: Reviewer approved after requested fixes, implementation branch merged into the orchestration branch, and focused validation passed in the Orchestrator worktree. Marking Ticket done in the orchestration branch. +--- + + + +## State changed + +Ticket を closed にしました。 + + +--- + + + +## 完了 + +Ticket `00001KTFY8V80` (`Preserve active workflows across compaction`) はすでに `state: done` に到達していたため、workspace Panel から close しました。 + +この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。 + + --- diff --git a/.yoi/tickets/00001KV09WYC6/item.md b/.yoi/tickets/00001KV09WYC6/item.md index 5657f4bc..d88585c7 100644 --- a/.yoi/tickets/00001KV09WYC6/item.md +++ b/.yoi/tickets/00001KV09WYC6/item.md @@ -1,8 +1,8 @@ --- title: 'Workspace panel: show Ticket-associated Intake Pods adjacent to Ticket rows' -state: 'done' +state: 'closed' created_at: '2026-06-13T10:54:31Z' -updated_at: '2026-06-14T15:55:36Z' +updated_at: '2026-06-15T06:33:52Z' assignee: null readiness: 'implementation_ready' risk_flags: ['panel-ux', 'local-role-session-registry', 'pod-session-state'] diff --git a/.yoi/tickets/00001KV09WYC6/resolution.md b/.yoi/tickets/00001KV09WYC6/resolution.md new file mode 100644 index 00000000..dbf99bbe --- /dev/null +++ b/.yoi/tickets/00001KV09WYC6/resolution.md @@ -0,0 +1,3 @@ +Ticket `00001KV09WYC6` (`Workspace panel: show Ticket-associated Intake Pods adjacent to Ticket rows`) はすでに `state: done` に到達していたため、workspace Panel から close しました。 + +この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。 diff --git a/.yoi/tickets/00001KV09WYC6/thread.md b/.yoi/tickets/00001KV09WYC6/thread.md index 23acd578..3652ba80 100644 --- a/.yoi/tickets/00001KV09WYC6/thread.md +++ b/.yoi/tickets/00001KV09WYC6/thread.md @@ -244,4 +244,24 @@ Cleanup planned: Reviewer approved, implementation branch merged into the orchestration branch, focused validation passed in the Orchestrator worktree, and cleanup is ready. Marking Ticket done in the orchestration branch. +--- + + + +## State changed + +Ticket を closed にしました。 + + +--- + + + +## 完了 + +Ticket `00001KV09WYC6` (`Workspace panel: show Ticket-associated Intake Pods adjacent to Ticket rows`) はすでに `state: done` に到達していたため、workspace Panel から close しました。 + +この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。 + + --- diff --git a/.yoi/tickets/00001KV3A5CNH/item.md b/.yoi/tickets/00001KV3A5CNH/item.md index f704b494..2464fc27 100644 --- a/.yoi/tickets/00001KV3A5CNH/item.md +++ b/.yoi/tickets/00001KV3A5CNH/item.md @@ -1,8 +1,8 @@ --- title: 'Panel: invalid Ticket があっても Ticket 機能全体を無効化しない' -state: 'done' +state: 'closed' created_at: '2026-06-14T14:56:51Z' -updated_at: '2026-06-14T16:38:01Z' +updated_at: '2026-06-15T04:12:40Z' assignee: null readiness: 'implementation_ready' risk_flags: ['tui-panel', 'ticket-backend', 'partial-failure', 'diagnostics'] diff --git a/.yoi/tickets/00001KV3A5CNH/resolution.md b/.yoi/tickets/00001KV3A5CNH/resolution.md new file mode 100644 index 00000000..fe7b7722 --- /dev/null +++ b/.yoi/tickets/00001KV3A5CNH/resolution.md @@ -0,0 +1,3 @@ +Ticket `00001KV3A5CNH` (`Panel: invalid Ticket があっても Ticket 機能全体を無効化しない`) はすでに `state: done` に到達していたため、workspace Panel から close しました。 + +この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。 diff --git a/.yoi/tickets/00001KV3A5CNH/thread.md b/.yoi/tickets/00001KV3A5CNH/thread.md index e098ed3c..0fe1f247 100644 --- a/.yoi/tickets/00001KV3A5CNH/thread.md +++ b/.yoi/tickets/00001KV3A5CNH/thread.md @@ -351,4 +351,24 @@ Cleanup planned: Reviewer approved after requested fixes, implementation branch merged into the orchestration branch, and focused validation passed in the Orchestrator worktree. Marking Ticket done in the orchestration branch. +--- + + + +## State changed + +Ticket を closed にしました。 + + +--- + + + +## 完了 + +Ticket `00001KV3A5CNH` (`Panel: invalid Ticket があっても Ticket 機能全体を無効化しない`) はすでに `state: done` に到達していたため、workspace Panel から close しました。 + +この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。 + + --- diff --git a/.yoi/tickets/00001KV3BQ7Q3/item.md b/.yoi/tickets/00001KV3BQ7Q3/item.md index ca483872..6dc82034 100644 --- a/.yoi/tickets/00001KV3BQ7Q3/item.md +++ b/.yoi/tickets/00001KV3BQ7Q3/item.md @@ -1,8 +1,8 @@ --- title: '対象 TUI/Panel merge commit の挙動を現行 E2E で確認する' -state: 'done' +state: 'closed' created_at: '2026-06-14T15:24:05Z' -updated_at: '2026-06-14T16:54:05Z' +updated_at: '2026-06-15T06:33:44Z' assignee: null readiness: 'implementation_ready' risk_flags: ['e2e', 'tui', 'panel', 'regression-evidence'] diff --git a/.yoi/tickets/00001KV3BQ7Q3/resolution.md b/.yoi/tickets/00001KV3BQ7Q3/resolution.md new file mode 100644 index 00000000..61a3738f --- /dev/null +++ b/.yoi/tickets/00001KV3BQ7Q3/resolution.md @@ -0,0 +1,3 @@ +Ticket `00001KV3BQ7Q3` (`対象 TUI/Panel merge commit の挙動を現行 E2E で確認する`) はすでに `state: done` に到達していたため、workspace Panel から close しました。 + +この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。 diff --git a/.yoi/tickets/00001KV3BQ7Q3/thread.md b/.yoi/tickets/00001KV3BQ7Q3/thread.md index 6750f2b8..08c000a9 100644 --- a/.yoi/tickets/00001KV3BQ7Q3/thread.md +++ b/.yoi/tickets/00001KV3BQ7Q3/thread.md @@ -235,4 +235,24 @@ Cleanup planned: Reviewer approved, implementation/evidence branch merged into the orchestration branch, and E2E-focused validation passed in the Orchestrator worktree. Marking Ticket done in the orchestration branch. +--- + + + +## State changed + +Ticket を closed にしました。 + + +--- + + + +## 完了 + +Ticket `00001KV3BQ7Q3` (`対象 TUI/Panel merge commit の挙動を現行 E2E で確認する`) はすでに `state: done` に到達していたため、workspace Panel から close しました。 + +この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。 + + --- diff --git a/.yoi/tickets/00001KV4YAAVY/artifacts/.gitkeep b/.yoi/tickets/00001KV4YAAVY/artifacts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/.yoi/tickets/00001KV4YAAVY/artifacts/relations.json b/.yoi/tickets/00001KV4YAAVY/artifacts/relations.json new file mode 100644 index 00000000..1723defe --- /dev/null +++ b/.yoi/tickets/00001KV4YAAVY/artifacts/relations.json @@ -0,0 +1,21 @@ +{ + "version": 1, + "relations": [ + { + "ticket_id": "00001KV4YAAVY", + "kind": "related", + "target": "00001KV072V89", + "note": "different scope: Panel row click selection vs single-Pod View text selection", + "author": "yoi ticket", + "at": "2026-06-15T06:09:16Z" + }, + { + "ticket_id": "00001KV4YAAVY", + "kind": "related", + "target": "00001KV10SN02", + "note": "mouse behavior/E2E coverage may need follow-up", + "author": "yoi ticket", + "at": "2026-06-15T06:09:17Z" + } + ] +} diff --git a/.yoi/tickets/00001KV4YAAVY/item.md b/.yoi/tickets/00001KV4YAAVY/item.md new file mode 100644 index 00000000..75c2b409 --- /dev/null +++ b/.yoi/tickets/00001KV4YAAVY/item.md @@ -0,0 +1,108 @@ +--- +title: 'single-Pod View Item text をマウスドラッグで選択・コピーできるようにする' +state: 'ready' +created_at: '2026-06-15T06:08:19Z' +updated_at: '2026-06-15T06:09:17Z' +assignee: null +readiness: 'implementation_ready' +risk_flags: ['tui', 'mouse-input', 'selection', 'clipboard', 'single-pod-view'] +--- + +## Background + +single-Pod TUI の View では、端末ネイティブ選択に頼らず、Yoi 自身が View Item の表示テキストをマウスドラッグで選択できるようにする。 + +既存の `00001KV072V89` は `yoi panel` の View item / row click selection であり、この Ticket の対象ではない。この Ticket は Panel ではなく、通常の single-Pod conversation View に表示される Item text の選択・コピーを対象にする。 + +端末ネイティブ選択は不要。View 内でドラッグしたら自動的に Yoi の selection state に入り、`Esc` で解除、選択したまま `y` で copy & selection clear する。 + +## Requirements + +- 対象は single-Pod TUI の View Item text。 +- 主対象 Item は text-like なもの。 + - UserItem + - SystemItem + - AssistantItem +- View 内の text-like Item 上で mouse drag すると、自動的に selection state に入る。 + - drag start が anchor + - drag current/end が focus + - mouse release 後も selection は保持される +- 選択状態は View 上で highlight される。 +- `Esc` で selection を解除する。 +- selection がある状態で `y` を押すと、選択テキストを copy し、selection を解除する。 +- Item を跨いだ selection を可能にする。 + - text-like Item 間を跨ぐ selection は supported behavior とする。 + - Item 間の copied text separator は読みやすく deterministic にする。基本は newline / blank line のどちらかを実装時に選び、test で固定する。 +- 選択 text は model context / Pod history / session log / Ticket に記録しない。 +- composer 入力、scroll、rewind picker、modal/popup、通常 key handling と衝突しない。 +- View に mouse selection を妨げる mode は基本的に置かない。 + - terminal-native text selection preservation はこの Ticket の goal ではない。 + - View の drag 操作は Yoi text selection として扱う。 +- 既存 Panel row click selection と混同しない。 + - Panel row selection behavior を変更しない。 + - single-Pod View Item text selection のみを対象にする。 + +## Tool / non-text Item handling + +Tool 系 Item を selection range に含んだ場合のコピー仕様は未決定であり、実装前または実装中に明示判断する。 + +候補: + +- tool系 Item を non-selectable gap として skip する +- tool系 Item は summary/placeholder text のみコピーする +- tool系 Item に selection が入ったら range boundary をそこで止める + +この Ticket の必須範囲は、UserItem / SystemItem / AssistantItem の text-like Item selection である。Tool 系の扱いで設計判断が必要になった場合は、実装報告または decision comment に記録する。 + +## Copy target + +`y` の copy target は実装時に既存 TUI/clipboard abstraction を確認して選ぶ。 + +優先: + +- 既存 clipboard abstraction があればそれを使う。 +- 無ければ最小の copy path を追加する。 + +OSC52 / system clipboard / internal copy buffer の選択は実装時に判断してよいが、以下を満たすこと: + +- user-visible に copy 成功/失敗が分かる +- secret-like diagnostics を出さない +- selected text が model/history に混入しない +- tests で copy された text を検証できる + +## Acceptance criteria + +- single-Pod View の UserItem / SystemItem / AssistantItem text を mouse drag で選択できる。 +- 選択範囲が View 上で highlight される。 +- mouse release 後も selection が保持される。 +- `Esc` で selection が解除される。 +- `y` で selected text が copy され、selection が解除される。 +- text-like Item を跨いだ selection が deterministic な text として copy される。 +- Tool 系 Item を range に含んだ時の扱いが、実装または decision comment で明示されている。 +- composer / scroll / rewind picker / modal / normal key handling の既存挙動が壊れない。 +- Panel row mouse selection には regression がない。 +- selection/copy state は Pod history、model context、session log、Ticket records に残らない。 +- Focused tests cover: + - mouse coordinate -> View Item text point mapping + - drag start/update/release selection state + - multi-item text selection extraction + - Esc clear + - y copy + clear + - non-text/tool item handling decision +- Validation: focused `cargo test -p tui ...`, `cargo fmt --check` or `cargo fmt -p tui`, `cargo check -p tui --all-targets`, and `git diff --check`. + +## Non-goals + +- Panel Ticket/Pod row selection. +- Terminal-native text selection preservation. +- Generic terminal scrollback selection. +- Full rich text/HTML/markdown semantic selection. +- Double-click word selection / triple-click line selection. +- Selection in every TUI widget. +- Tool item rich output copy semantics beyond the explicit decision made for this Ticket. + +## Related work + +- `00001KV072V89` — Workspace panel の View item をマウスで選択できるようにする。Panel row click selection; not this Ticket's scope. +- `00001KV10SN02` — E2E critical path / mouse behavior coverage. +- `crates/tui/src/single_pod.rs` — single-Pod TUI View / mouse handling area. diff --git a/.yoi/tickets/00001KV4YAAVY/thread.md b/.yoi/tickets/00001KV4YAAVY/thread.md new file mode 100644 index 00000000..d85da2c8 --- /dev/null +++ b/.yoi/tickets/00001KV4YAAVY/thread.md @@ -0,0 +1,7 @@ + + +## 作成 + +LocalTicketBackend によって作成されました。 + +--- diff --git a/.yoi/tickets/00001KV4ZDMV1/artifacts/.gitkeep b/.yoi/tickets/00001KV4ZDMV1/artifacts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/.yoi/tickets/00001KV4ZDMV1/item.md b/.yoi/tickets/00001KV4ZDMV1/item.md new file mode 100644 index 00000000..316b8516 --- /dev/null +++ b/.yoi/tickets/00001KV4ZDMV1/item.md @@ -0,0 +1,83 @@ +--- +title: 'Panel composer で Alt+Enter 改行を SessionView と揃える' +state: 'ready' +created_at: '2026-06-15T06:27:36Z' +updated_at: '2026-06-15T06:27:36Z' +assignee: null +readiness: 'implementation_ready' +risk_flags: ['tui-input', 'ux-consistency'] +--- + +## Background + +Panel の Composer でも、SessionView / 通常チャット composer と同じように `Alt+Enter` で改行できるようにする。 + +既存 Ticket `00001KTNS1AA8` で通常 TUI と workspace Panel の composer key handling を共有する方向が実装・完了済み。thread には shared editing が `Alt+Enter newline` を含む旨も記録されている。 + +一方、現行の Panel key handling では `KeyCode::Enter` の submit/open 分岐が `composer_edit_action(key)` より先に処理されているため、`Alt+Enter` が `InsertNewline` として到達せず、通常 Enter と同じ挙動になる可能性がある。Panel composer でも SessionView と同じ入力体験に揃える。 + +## Requirements + +- Panel composer で `Alt+Enter` が draft 内の改行挿入として動作する。 +- `Alt+Enter` は composer text の submit、Ticket Intake launch、Companion send、selected row open/dispatch を起こさない。 +- 通常の bare `Enter` の既存 semantics は維持する。 + - composer が空なら selected row / open / dispatch。 + - composer に text があるなら current composer target への submit。 +- 通常 SessionView 側の `Alt+Enter` 改行挙動を壊さない。 +- 既存の shared `composer_keys` 方針を保ち、Panel 専用の ad-hoc key handling を増やしすぎない。 + +## Acceptance criteria + +- `yoi panel` の composer に text がある状態で `Alt+Enter` を押すと、draft に newline が入る。 +- composer が空、row selected、Ticket action selected などの Panel 状態でも、`Alt+Enter` は submit/open/dispatch ではなく改行編集として扱われる。 +- bare `Enter` の Panel submit/open/dispatch behavior は regress しない。 +- focused test で `Alt+Enter` が Panel composer newline を挿入し、submit action を返さないことを確認する。 +- 既存 SessionView / normal TUI composer key tests が通る。 + +## Binding decisions / invariants + +- `Alt+Enter` は composer editing key として扱い、Panel action key として扱わない。 +- bare `Enter` と `Alt+Enter` の意味を明確に分ける。 +- Panel composer は通常 TUI composer と同じ shared composer key handling 方針に従う。 +- Panel row selection / Ticket action semantics、Companion / Ticket Intake target semantics は変更しない。 +- bare letter shortcuts は復活させない。 + +## Implementation latitude + +- `composer_edit_action(key)` を Enter submit/open 分岐より前に適用する、または `KeyCode::Enter` 分岐側で modifiers を明示的に見て `Alt+Enter` を除外するなど、実装方法は任せる。 +- Existing tests に追加する形でも、新規 focused regression test を作る形でもよい。 +- UI hint の更新は必要なら最小限に行う。主目的は key behavior の修正。 + +## Readiness + +- readiness: implementation_ready +- priority: P2 相当 +- risk_flags: [tui-input, ux-consistency] +- open_questions: none + +## Escalation conditions + +- terminal / crossterm が対象環境で `Alt+Enter` を識別できない場合は、実装可能範囲と制約を implementation report に明記する。 +- `Alt+Enter` を先に composer edit として処理すると、既存 completion / target switching / row action の前提と衝突する場合は Orchestrator / reviewer に相談する。 +- SessionView 側にも同様の問題がある場合は、Panel 固有 bug ではなく shared composer key handling の regression として扱う。 + +## Validation + +- Focused test: Panel composer で `Alt+Enter` が newline を挿入し、submit/open/dispatch しない。 +- Focused test: bare `Enter` の既存 Panel behavior が維持される。 +- `cargo test -p tui composer_keys` +- `cargo test -p tui` または少なくとも該当 `multi_pod` / Panel focused tests +- `cargo fmt --check` +- `git diff --check` +- 必要に応じて `cargo check --workspace` + +## Related work + +- `00001KTNS1AA8` Improve workspace panel display and composer key handling +- `crates/tui/src/composer_keys.rs` +- `crates/tui/src/multi_pod.rs` + +## Panel handoff + +- workspace: `yoi` +- workspace_orchestrator_pod: `yoi-orchestrator` diff --git a/.yoi/tickets/00001KV4ZDMV1/thread.md b/.yoi/tickets/00001KV4ZDMV1/thread.md new file mode 100644 index 00000000..ff1db890 --- /dev/null +++ b/.yoi/tickets/00001KV4ZDMV1/thread.md @@ -0,0 +1,7 @@ + + +## 作成 + +LocalTicketBackend によって作成されました。 + +--- diff --git a/.yoi/tickets/00001KV4ZPAD3/artifacts/.gitkeep b/.yoi/tickets/00001KV4ZPAD3/artifacts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/.yoi/tickets/00001KV4ZPAD3/item.md b/.yoi/tickets/00001KV4ZPAD3/item.md new file mode 100644 index 00000000..0fd518ca --- /dev/null +++ b/.yoi/tickets/00001KV4ZPAD3/item.md @@ -0,0 +1,115 @@ +--- +title: 'Panel Ticket / Intake Pod row の視覚階層を改善する' +state: 'ready' +created_at: '2026-06-15T06:32:21Z' +updated_at: '2026-06-15T06:32:36Z' +assignee: null +readiness: 'implementation_ready' +risk_flags: ['panel-ux', 'tui-layout', 'accessibility', 'row-selection'] +--- + +## Background + +Workspace Panel では、Ticket row が2行表示になり、Ticket に関連する Intake Pod row も Ticket の隣接 row として表示されるようになっている。 + +しかし現状では、以下の視覚的な区別が弱く、一覧として読んだときに情報の優先順位が掴みにくい。 + +- Ticket 本体の primary line と detail/gate line の強弱。 +- Ticket row と associated Intake Pod row の親子関係。 +- canonical state/title、gate/action/reason、Intake Pod status/open 導線の重要度差。 +- 選択中 row/group と非選択 row/group の境界。 + +今回の作業は Panel 表示の visual hierarchy / readability 改善に限定する。Ticket lifecycle、local role/session registry、claim semantics、automatic launch/spawn policy は変更しない。 + +## Request snapshot + +> 前やった Panel の2行レイアウトと、IntakePod の関連表示の件、表示の強弱がついてなくて見辛いから、改善したい。 + +Panel handoff: + +- workspace: `yoi` +- workspace_orchestrator_pod: `yoi-orchestrator` + +## Requirements + +- Workspace Panel の Ticket 2行 row に視覚的な強弱を付ける。 + - 1行目の canonical state + title は primary 情報として読みやすくする。 + - 2行目の Ticket id / Gate / Action / reason は secondary 情報として、必要な時に読めるが主情報を邪魔しない表示にする。 +- Ticket-associated Intake Pod row が、その Ticket の子/関連 row であると視覚的に分かるようにする。 + - indentation、prefix、dim style、role/status chip、group marker など、既存 Panel UI と整合する方法でよい。 +- 選択状態では、Ticket 2行 + associated Intake row の関係が崩れない。 + - どの logical row / child row が選択されているかが分かる。 + - Ticket 本体と Intake Pod row の操作対象が混同されない。 +- live / restorable / stale など Intake Pod status の表示は残しつつ、Ticket title/gate より過剰に目立たないようにする。 +- narrow terminal / short panel area でも破綻しない。 + - truncate / ellipsis / bounded rendering を維持する。 +- 色だけに依存しない表示にする。 + - terminal theme や monochrome 環境でも、indentation / marker / text label で最低限の関係が分かる。 + +## Acceptance criteria + +- Ticket 2行 row で、primary line と secondary line の視覚的な強弱が確認できる。 +- Ticket-associated Intake Pod row が、隣接する Ticket の関連/子 row として認識できる。 +- Intake Pod row が Ticket 本体や別 Ticket に見えない。 +- selected Ticket row / selected Intake Pod row の見え方が明確で、操作対象が混同されない。 +- `ready`, `planning`, `queued/inprogress`, `done/closed`, `ready+waiting` の Ticket row で可読性が維持される。 +- Intake Pod の `live` / `restorable` / `stale` status が確認できる。 +- pre-Ticket Intake Pod を誤って特定 Ticket の child row のように表示しない。 +- mouse click / keyboard selection の既存 semantics を壊さない。 +- Focused tests で row rendering contract または ViewModel/row ordering/selection contract が確認される。 + +## Binding decisions / invariants + +- Ticket lifecycle state / relation gate semantics は変更しない。 +- persisted `waiting` state や新しい Ticket schema は追加しない。 +- local Pod assignment / Pod name / socket / claim state / runtime status を git-tracked Ticket metadata/frontmatter/thread に保存しない。 +- automatic polling / automatic Intake spawn は追加しない。 +- Ticket と Intake Pod の関係を 1:1 と仮定しない。 +- selected arbitrary Pod direct-send UX を復活させない。 +- 表示改善のために lifecycle action の authority boundary を緩めない。 + +## Implementation latitude + +- exact な UI 表現は実装側判断でよい。 + - dim / bold / color / prefix / indentation / separator / role chip / status chip など。 +- 既存 `PanelRowKind::Ticket` / `PanelRowKind::TicketIntakePod` の rendering を調整してもよい。 +- 必要なら shared row style helper を整理してよい。 +- 色を使う場合でも、marker / label / indentation など非色要素で関係性が分かるようにする。 +- Very small terminal で情報を減らす場合、primary state/title と action safety を優先する。 + +## Readiness + +- readiness: implementation_ready +- risk_flags: [panel-ux, tui-layout, accessibility, row-selection] +- blocking open questions: none + +## Escalation conditions + +- Panel の selection model / keyboard semantics を大きく変える必要が出た場合。 +- Ticket row と Intake Pod row の action identity が曖昧になり、誤操作リスクが出る場合。 +- 色/装飾だけでは accessibility / terminal theme 上の問題を避けられない場合。 +- Row rendering のために local role/session registry や Ticket schema の変更が必要になりそうな場合。 +- bounded row rendering を維持できず、大量 Ticket/Pod で一覧が読みにくくなる場合。 + +## Validation + +- `cargo test -p tui workspace_panel --lib` +- 関連箇所を触る場合: + - `cargo test -p tui multi_pod --lib` + - `cargo test -p tui row_hit_testing --lib` + - `cargo test -p tui mouse_click --lib` +- `cargo fmt --check` +- `git diff --check` +- 可能なら実際の `yoi panel` / PTY で目視確認、または既存 Panel E2E の更新。 + +## Related work + +- `00001KV12W2RT` — Panel Ticket rows を2行表示にして gate 情報を分離する +- `00001KV09WYC6` — Workspace panel: show Ticket-associated Intake Pods adjacent to Ticket rows +- `00001KV3A5CNH` — Panel: invalid Ticket があっても Ticket 機能全体を無効化しない + +Code areas: + +- `crates/tui/src/workspace_panel.rs` +- `crates/tui/src/multi_pod.rs` +- `crates/tui/src/role_session_registry.rs` diff --git a/.yoi/tickets/00001KV4ZPAD3/thread.md b/.yoi/tickets/00001KV4ZPAD3/thread.md new file mode 100644 index 00000000..7499e538 --- /dev/null +++ b/.yoi/tickets/00001KV4ZPAD3/thread.md @@ -0,0 +1,23 @@ + + +## 作成 + +LocalTicketBackend によって作成されました。 + +--- + + + +## Intake summary + +ユーザー承認に基づき、Panel Ticket 2行 row と Ticket-associated Intake Pod row の視覚階層改善を concrete Ticket として作成した。既存 Ticket `00001KV12W2RT` / `00001KV09WYC6` の follow-up であり、目的は visual hierarchy / readability 改善に限定される。Ticket lifecycle、relation gate semantics、local role/session registry、claim semantics、automatic launch/spawn policy は変更しない。readiness: implementation_ready。risk_flags: [panel-ux, tui-layout, accessibility, row-selection]。blocking open questions はない。 + +--- + + + +## State changed + +Intake で要件・受け入れ条件・binding decisions / invariants・implementation latitude・escalation conditions・validation が整理され、ユーザー承認済み。Orchestrator が routing 可能な ready 状態にする。 + +---