ticket: record panel and plugin followups
This commit is contained in:
parent
169f29e960
commit
6d4b700181
|
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
title: 'Plugin distribution package format and discovery'
|
title: 'Plugin distribution package format and discovery'
|
||||||
state: 'done'
|
state: 'closed'
|
||||||
created_at: '2026-06-01T06:49:53Z'
|
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_by: 'workspace-panel'
|
||||||
queued_at: '2026-06-14T15:40:15Z'
|
queued_at: '2026-06-14T15:40:15Z'
|
||||||
---
|
---
|
||||||
|
|
|
||||||
3
.yoi/tickets/00001KT0Z4BK8/resolution.md
Normal file
3
.yoi/tickets/00001KT0Z4BK8/resolution.md
Normal file
|
|
@ -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 は開始されていません。
|
||||||
|
|
@ -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.
|
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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- event: state_changed author: hare at: 2026-06-15T06:33:50Z from: done to: closed reason: closed field: state -->
|
||||||
|
|
||||||
|
## State changed
|
||||||
|
|
||||||
|
Ticket を closed にしました。
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- event: close author: hare at: 2026-06-15T06:33:50Z status: closed -->
|
||||||
|
|
||||||
|
## 完了
|
||||||
|
|
||||||
|
Ticket `00001KT0Z4BK8` (`Plugin distribution package format and discovery`) はすでに `state: done` に到達していたため、workspace Panel から close しました。
|
||||||
|
|
||||||
|
この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
title: "Preserve active workflows across compaction"
|
title: "Preserve active workflows across compaction"
|
||||||
state: 'done'
|
state: 'closed'
|
||||||
created_at: "2026-06-07T02:23:28Z"
|
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_by: 'workspace-panel'
|
||||||
queued_at: '2026-06-14T15:23:07Z'
|
queued_at: '2026-06-14T15:23:07Z'
|
||||||
---
|
---
|
||||||
|
|
|
||||||
3
.yoi/tickets/00001KTFY8V80/resolution.md
Normal file
3
.yoi/tickets/00001KTFY8V80/resolution.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
Ticket `00001KTFY8V80` (`Preserve active workflows across compaction`) はすでに `state: done` に到達していたため、workspace Panel から close しました。
|
||||||
|
|
||||||
|
この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。
|
||||||
|
|
@ -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.
|
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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- event: state_changed author: hare at: 2026-06-15T06:33:44Z from: done to: closed reason: closed field: state -->
|
||||||
|
|
||||||
|
## State changed
|
||||||
|
|
||||||
|
Ticket を closed にしました。
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- event: close author: hare at: 2026-06-15T06:33:44Z status: closed -->
|
||||||
|
|
||||||
|
## 完了
|
||||||
|
|
||||||
|
Ticket `00001KTFY8V80` (`Preserve active workflows across compaction`) はすでに `state: done` に到達していたため、workspace Panel から close しました。
|
||||||
|
|
||||||
|
この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
title: 'Workspace panel: show Ticket-associated Intake Pods adjacent to Ticket rows'
|
title: 'Workspace panel: show Ticket-associated Intake Pods adjacent to Ticket rows'
|
||||||
state: 'done'
|
state: 'closed'
|
||||||
created_at: '2026-06-13T10:54:31Z'
|
created_at: '2026-06-13T10:54:31Z'
|
||||||
updated_at: '2026-06-14T15:55:36Z'
|
updated_at: '2026-06-15T06:33:52Z'
|
||||||
assignee: null
|
assignee: null
|
||||||
readiness: 'implementation_ready'
|
readiness: 'implementation_ready'
|
||||||
risk_flags: ['panel-ux', 'local-role-session-registry', 'pod-session-state']
|
risk_flags: ['panel-ux', 'local-role-session-registry', 'pod-session-state']
|
||||||
|
|
|
||||||
3
.yoi/tickets/00001KV09WYC6/resolution.md
Normal file
3
.yoi/tickets/00001KV09WYC6/resolution.md
Normal file
|
|
@ -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 は開始されていません。
|
||||||
|
|
@ -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.
|
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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- event: state_changed author: hare at: 2026-06-15T06:33:52Z from: done to: closed reason: closed field: state -->
|
||||||
|
|
||||||
|
## State changed
|
||||||
|
|
||||||
|
Ticket を closed にしました。
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- event: close author: hare at: 2026-06-15T06:33:52Z status: 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 は開始されていません。
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
title: 'Panel: invalid Ticket があっても Ticket 機能全体を無効化しない'
|
title: 'Panel: invalid Ticket があっても Ticket 機能全体を無効化しない'
|
||||||
state: 'done'
|
state: 'closed'
|
||||||
created_at: '2026-06-14T14:56:51Z'
|
created_at: '2026-06-14T14:56:51Z'
|
||||||
updated_at: '2026-06-14T16:38:01Z'
|
updated_at: '2026-06-15T04:12:40Z'
|
||||||
assignee: null
|
assignee: null
|
||||||
readiness: 'implementation_ready'
|
readiness: 'implementation_ready'
|
||||||
risk_flags: ['tui-panel', 'ticket-backend', 'partial-failure', 'diagnostics']
|
risk_flags: ['tui-panel', 'ticket-backend', 'partial-failure', 'diagnostics']
|
||||||
|
|
|
||||||
3
.yoi/tickets/00001KV3A5CNH/resolution.md
Normal file
3
.yoi/tickets/00001KV3A5CNH/resolution.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
Ticket `00001KV3A5CNH` (`Panel: invalid Ticket があっても Ticket 機能全体を無効化しない`) はすでに `state: done` に到達していたため、workspace Panel から close しました。
|
||||||
|
|
||||||
|
この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。
|
||||||
|
|
@ -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.
|
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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- event: state_changed author: hare at: 2026-06-15T04:12:40Z from: done to: closed reason: closed field: state -->
|
||||||
|
|
||||||
|
## State changed
|
||||||
|
|
||||||
|
Ticket を closed にしました。
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- event: close author: hare at: 2026-06-15T04:12:40Z status: closed -->
|
||||||
|
|
||||||
|
## 完了
|
||||||
|
|
||||||
|
Ticket `00001KV3A5CNH` (`Panel: invalid Ticket があっても Ticket 機能全体を無効化しない`) はすでに `state: done` に到達していたため、workspace Panel から close しました。
|
||||||
|
|
||||||
|
この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
title: '対象 TUI/Panel merge commit の挙動を現行 E2E で確認する'
|
title: '対象 TUI/Panel merge commit の挙動を現行 E2E で確認する'
|
||||||
state: 'done'
|
state: 'closed'
|
||||||
created_at: '2026-06-14T15:24:05Z'
|
created_at: '2026-06-14T15:24:05Z'
|
||||||
updated_at: '2026-06-14T16:54:05Z'
|
updated_at: '2026-06-15T06:33:44Z'
|
||||||
assignee: null
|
assignee: null
|
||||||
readiness: 'implementation_ready'
|
readiness: 'implementation_ready'
|
||||||
risk_flags: ['e2e', 'tui', 'panel', 'regression-evidence']
|
risk_flags: ['e2e', 'tui', 'panel', 'regression-evidence']
|
||||||
|
|
|
||||||
3
.yoi/tickets/00001KV3BQ7Q3/resolution.md
Normal file
3
.yoi/tickets/00001KV3BQ7Q3/resolution.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
Ticket `00001KV3BQ7Q3` (`対象 TUI/Panel merge commit の挙動を現行 E2E で確認する`) はすでに `state: done` に到達していたため、workspace Panel から close しました。
|
||||||
|
|
||||||
|
この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。
|
||||||
|
|
@ -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.
|
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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- event: state_changed author: hare at: 2026-06-15T06:33:44Z from: done to: closed reason: closed field: state -->
|
||||||
|
|
||||||
|
## State changed
|
||||||
|
|
||||||
|
Ticket を closed にしました。
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- event: close author: hare at: 2026-06-15T06:33:44Z status: closed -->
|
||||||
|
|
||||||
|
## 完了
|
||||||
|
|
||||||
|
Ticket `00001KV3BQ7Q3` (`対象 TUI/Panel merge commit の挙動を現行 E2E で確認する`) はすでに `state: done` に到達していたため、workspace Panel から close しました。
|
||||||
|
|
||||||
|
この Close action によって、実装作業、state 変更、Orchestrator/Companion launch、worker invocation は開始されていません。
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
0
.yoi/tickets/00001KV4YAAVY/artifacts/.gitkeep
Normal file
0
.yoi/tickets/00001KV4YAAVY/artifacts/.gitkeep
Normal file
21
.yoi/tickets/00001KV4YAAVY/artifacts/relations.json
Normal file
21
.yoi/tickets/00001KV4YAAVY/artifacts/relations.json
Normal file
|
|
@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
108
.yoi/tickets/00001KV4YAAVY/item.md
Normal file
108
.yoi/tickets/00001KV4YAAVY/item.md
Normal file
|
|
@ -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.
|
||||||
7
.yoi/tickets/00001KV4YAAVY/thread.md
Normal file
7
.yoi/tickets/00001KV4YAAVY/thread.md
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<!-- event: create author: "yoi ticket" at: 2026-06-15T06:08:19Z -->
|
||||||
|
|
||||||
|
## 作成
|
||||||
|
|
||||||
|
LocalTicketBackend によって作成されました。
|
||||||
|
|
||||||
|
---
|
||||||
0
.yoi/tickets/00001KV4ZDMV1/artifacts/.gitkeep
Normal file
0
.yoi/tickets/00001KV4ZDMV1/artifacts/.gitkeep
Normal file
83
.yoi/tickets/00001KV4ZDMV1/item.md
Normal file
83
.yoi/tickets/00001KV4ZDMV1/item.md
Normal file
|
|
@ -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`
|
||||||
7
.yoi/tickets/00001KV4ZDMV1/thread.md
Normal file
7
.yoi/tickets/00001KV4ZDMV1/thread.md
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<!-- event: create author: LocalTicketBackend at: 2026-06-15T06:27:36Z -->
|
||||||
|
|
||||||
|
## 作成
|
||||||
|
|
||||||
|
LocalTicketBackend によって作成されました。
|
||||||
|
|
||||||
|
---
|
||||||
0
.yoi/tickets/00001KV4ZPAD3/artifacts/.gitkeep
Normal file
0
.yoi/tickets/00001KV4ZPAD3/artifacts/.gitkeep
Normal file
115
.yoi/tickets/00001KV4ZPAD3/item.md
Normal file
115
.yoi/tickets/00001KV4ZPAD3/item.md
Normal file
|
|
@ -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`
|
||||||
23
.yoi/tickets/00001KV4ZPAD3/thread.md
Normal file
23
.yoi/tickets/00001KV4ZPAD3/thread.md
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
<!-- event: create author: ticket-intake at: 2026-06-15T06:32:21Z -->
|
||||||
|
|
||||||
|
## 作成
|
||||||
|
|
||||||
|
LocalTicketBackend によって作成されました。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- event: intake_summary author: ticket-intake at: 2026-06-15T06:32:36Z -->
|
||||||
|
|
||||||
|
## 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 はない。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- event: state_changed author: ticket-intake at: 2026-06-15T06:32:36Z from: planning to: ready reason: planning_ready field: state -->
|
||||||
|
|
||||||
|
## State changed
|
||||||
|
|
||||||
|
Intake で要件・受け入れ条件・binding decisions / invariants・implementation latitude・escalation conditions・validation が整理され、ユーザー承認済み。Orchestrator が routing 可能な ready 状態にする。
|
||||||
|
|
||||||
|
---
|
||||||
Loading…
Reference in New Issue
Block a user