merge: sync orchestration before queue 00001KVSKJ0EA
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 'Generate Workspace web TypeScript types from protocol crate'
|
||||
state: 'inprogress'
|
||||
state: 'closed'
|
||||
created_at: '2026-06-23T05:13:22Z'
|
||||
updated_at: '2026-06-23T05:42:14Z'
|
||||
updated_at: '2026-06-23T06:22:01Z'
|
||||
assignee: null
|
||||
queued_by: 'workspace-panel'
|
||||
queued_at: '2026-06-23T05:40:01Z'
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
Protocol crate 由来の Workspace web TypeScript type generation を実装し、Orchestrator worktree の `orchestration` branch に統合した。
|
||||
|
||||
主な成果:
|
||||
- `crates/protocol` の `stream` module / tokio dependency を default `stream` feature に分離し、DTO-only build で tokio を不要にした。
|
||||
- Optional `typescript` feature と `ts-rs` による TypeScript export を追加。
|
||||
- Protocol DTOs に `cfg_attr(feature = "typescript", derive(ts_rs::TS))` を追加。
|
||||
- Deterministic generator を追加:
|
||||
- `crates/protocol/src/typescript.rs`
|
||||
- `crates/protocol/examples/generate_typescript.rs`
|
||||
- Drift check を追加:
|
||||
- `cargo test -p protocol --features typescript generated_protocol_types_are_current`
|
||||
- Generated artifact を追加:
|
||||
- `web/workspace/src/lib/generated/protocol.ts`
|
||||
- Workspace web が generated root protocol types を re-export:
|
||||
- `PodProtocolMethod`
|
||||
- `PodProtocolEvent`
|
||||
- `PodProtocolSegment`
|
||||
- Workspace backend extension-point notes に、browser が Pod Unix socket に直接接続せず、将来の backend proxy が Worker identity と method allow/block boundary を enforce する方針を記録。
|
||||
- `Cargo.lock` と `package.nix` cargo hash を更新。
|
||||
|
||||
統合・検証:
|
||||
- Merge commit: `9728b533 merge: protocol typescript generation`
|
||||
- Implementation commit: `a13fb693 protocol: generate workspace TypeScript types`
|
||||
- Reviewer final verdict: approve
|
||||
- Validation passed: `cargo fmt --check`, `git diff --check HEAD^1..HEAD`, `cargo test -p protocol`, `cargo test -p protocol --features typescript generated_protocol_types_are_current`, `cargo test -p protocol --features typescript`, `cargo check -p protocol --target wasm32-unknown-unknown --no-default-features`, `deno task check`, `deno task build`, `cargo run -p yoi -- ticket doctor`, and `nix build .#yoi --no-link`。
|
||||
|
||||
既知の非ブロッキング事項:
|
||||
- `ts-rs` は `#[serde(other)]` on `Segment::Unknown` に warning を出すが、generated artifact には `{ "kind": "unknown" }` が含まれ、current validation は pass。
|
||||
- 一部 `Option<T>` + `skip_serializing_if` fields は TS で optional field ではなく required nullable に出る。将来 UI が該当 field を使う際は注意。
|
||||
@@ -126,3 +126,267 @@ Next action:
|
||||
- Wait for Coder implementation report, then spawn Reviewer read-only for the implementation diff。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-23T06:09:42Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Coder implementation report received from `yoi-coder-00001KVSEBF56`.
|
||||
|
||||
Implementation commit:
|
||||
- `a13fb693 protocol: generate workspace TypeScript types`
|
||||
|
||||
Changed areas:
|
||||
- `crates/protocol`
|
||||
- Made `stream` optional behind default feature `stream`。
|
||||
- Added optional `typescript` feature using `ts-rs`。
|
||||
- Added `cfg_attr(feature = "typescript", derive(ts_rs::TS))` to protocol DTOs。
|
||||
- Added deterministic generator module and example:
|
||||
- `crates/protocol/src/typescript.rs`
|
||||
- `crates/protocol/examples/generate_typescript.rs`
|
||||
- Added drift check:
|
||||
- `cargo test -p protocol --features typescript generated_protocol_types_are_current`
|
||||
- `web/workspace`
|
||||
- Added generated TypeScript artifact:
|
||||
- `web/workspace/src/lib/generated/protocol.ts`
|
||||
- Re-exported generated root protocol types from workspace sidebar types:
|
||||
- `PodProtocolMethod`
|
||||
- `PodProtocolEvent`
|
||||
- `PodProtocolSegment`
|
||||
- `crates/workspace-server`
|
||||
- Updated extension-point notes to explicitly preserve no direct browser-to-Pod socket exposure and require future Workspace-server proxy enforcement of Worker identity / method allow-block boundaries。
|
||||
- Packaging/dependencies:
|
||||
- Updated `Cargo.lock`。
|
||||
- Updated `package.nix` `cargoHash`。
|
||||
|
||||
Coder validation reported:
|
||||
- `cargo fmt --check`: passed
|
||||
- `cargo test -p protocol`: passed
|
||||
- `cargo test -p protocol --features typescript generated_protocol_types_are_current`: passed
|
||||
- `cargo test -p protocol --features typescript`: passed
|
||||
- `cargo check -p protocol --target wasm32-unknown-unknown --no-default-features`: passed
|
||||
- `cd web/workspace && deno task check && deno task build`: passed
|
||||
- `cargo run -p yoi -- ticket doctor`: passed
|
||||
- `git diff --check`: passed
|
||||
- `nix build .#yoi --no-link`: passed
|
||||
|
||||
Generated artifact cleanup:
|
||||
- Only intended generated TypeScript import artifact is tracked。
|
||||
- Orchestrator removed ignored `web/workspace/node_modules/` before Reviewer routing; no ignored frontend artifacts remain under `web/workspace`。
|
||||
|
||||
Orchestrator evidence checked:
|
||||
- Worktree clean on `impl/00001KVSEBF56-protocol-typescript-types` at `a13fb693`。
|
||||
- Diff `746c51c7..HEAD` touches expected protocol/frontend/workspace-server/package files only。
|
||||
- `git diff --check 746c51c7..HEAD`: passed。
|
||||
|
||||
Next action:
|
||||
- Route to read-only Reviewer Pod for acceptance review。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: comment author: yoi-orchestrator at: 2026-06-23T06:10:31Z -->
|
||||
|
||||
## Comment
|
||||
|
||||
Review routing:
|
||||
|
||||
Spawned read-only Reviewer Pod:
|
||||
- `yoi-reviewer-00001KVSEBF56-r1`
|
||||
|
||||
Review target:
|
||||
- Worktree: `/home/hare/Projects/yoi/.worktree/00001KVSEBF56-protocol-typescript-types`
|
||||
- Branch: `impl/00001KVSEBF56-protocol-typescript-types`
|
||||
- Baseline: `746c51c7`
|
||||
- Implementation commit: `a13fb693 protocol: generate workspace TypeScript types`
|
||||
- Diff: `746c51c7..a13fb693`
|
||||
|
||||
Reviewer scope:
|
||||
- read-only `/home/hare/Projects/yoi`
|
||||
|
||||
Reviewer focus:
|
||||
- Generated TS shape vs serde wire shape。
|
||||
- `Method` / `Event` / `Segment` coverage。
|
||||
- Deterministic drift check。
|
||||
- `stream` feature gating and wasm/no-default protocol compile。
|
||||
- No direct browser-to-Pod socket implication。
|
||||
- Package/Nix updates。
|
||||
|
||||
Orchestrator will wait for reviewer verdict before integration。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: review author: yoi-reviewer-00001KVSEBF56-r1 at: 2026-06-23T06:16:54Z status: approve -->
|
||||
|
||||
## Review: approve
|
||||
|
||||
Verdict: `approve`
|
||||
|
||||
確認範囲:
|
||||
- Ticket authority:
|
||||
- `.yoi/tickets/00001KVSEBF56/item.md`
|
||||
- `.yoi/tickets/00001KVSEBF56/thread.md`
|
||||
- Diff `746c51c7..a13fb693`:
|
||||
- `crates/protocol/Cargo.toml`
|
||||
- `crates/protocol/src/lib.rs`
|
||||
- `crates/protocol/src/typescript.rs`
|
||||
- `crates/protocol/examples/generate_typescript.rs`
|
||||
- `web/workspace/src/lib/generated/protocol.ts`
|
||||
- `web/workspace/src/lib/workspace-sidebar/types.ts`
|
||||
- `crates/workspace-server/src/server.rs`
|
||||
- `Cargo.lock`
|
||||
- `package.nix`
|
||||
|
||||
Blocking issues:
|
||||
- None。
|
||||
|
||||
Non-blocking concerns:
|
||||
- `cargo test -p protocol --features typescript` emits `ts-rs` warnings for `#[serde(other)]` on `Segment::Unknown`: `ts-rs failed to parse this attribute. It will be ignored.` The generated artifact still includes `{ "kind": "unknown" }`, and this does not break current validation, but TS generator is not fully understanding serde fallback semantics。
|
||||
- Some `Option<T>` fields with `skip_serializing_if = "Option::is_none"` are generated as required nullable rather than optional nullable, e.g. `RewindTarget.disabled_reason: string | null` and `warning: string | null`. Acceptable for this initial generated-types ticket, but future UI code should be careful because runtime JSON may omit those fields。
|
||||
|
||||
Review findings:
|
||||
- `crates/protocol` remains Rust DTO authority。
|
||||
- `stream` is now an optional default feature:
|
||||
- `default = ["stream"]`
|
||||
- `stream = ["dep:tokio"]`
|
||||
- `tokio` is optional。
|
||||
- DTO-only/no-default protocol build compiles for wasm without `tokio`。
|
||||
- `typescript` feature is optional and uses `ts-rs`。
|
||||
- Generated TS root includes `Method`, `Event`, `Segment`, plus related DTOs such as `PodEvent`, `ScopeRule`, `Greeting`, `InFlight*`, rewind DTOs, completion DTOs, status/result/error enums。
|
||||
- Generated TS file is committed at `web/workspace/src/lib/generated/protocol.ts`。
|
||||
- Workspace web re-exports generated root protocol types as `PodProtocolMethod`, `PodProtocolEvent`, and `PodProtocolSegment`。
|
||||
- Generated TS tagged enums and casing match observed serde wire shape for critical roots:
|
||||
- `Method`: `{ "method": "...", "params": ... }`
|
||||
- `Event`: `{ "event": "...", "data": ... }`
|
||||
- `Segment` / `PodEvent` / `InFlightBlock`: internal `"kind"` tags with snake_case variants。
|
||||
- Drift check `generated_protocol_types_are_current` compares committed generated artifact to deterministic generator output。
|
||||
- Backend proxy stance is represented in Workspace API extension-point notes and does not add direct browser-to-Pod socket access or broad Worker operation UI。
|
||||
|
||||
Reviewer validation:
|
||||
- `cargo fmt --check`: passed
|
||||
- `git diff --check 746c51c7..HEAD`: passed
|
||||
- `cargo test -p protocol`: passed (`40 passed`)
|
||||
- `cargo test -p protocol --features typescript generated_protocol_types_are_current`: passed; emitted non-blocking `ts-rs` warning for `serde(other)`。
|
||||
- `cargo test -p protocol --features typescript`: passed (`41 passed`); emitted same non-blocking warning。
|
||||
- `cargo check -p protocol --target wasm32-unknown-unknown --no-default-features`: passed
|
||||
- `cd web/workspace && deno task check && deno task build`: passed (`svelte-check found 0 errors and 0 warnings`; build succeeded)
|
||||
- `cargo run -p yoi -- ticket doctor`: passed (`doctor: ok`)
|
||||
- `nix build .#yoi --no-link`: passed
|
||||
|
||||
Generated artifact status:
|
||||
- `web/workspace/src/lib/generated/protocol.ts` remained unchanged after validation。
|
||||
- SHA-256 after validation: `3984a043ded1179545656e5402171c49b2d22b5529aa17f016b675e394b7e553`。
|
||||
|
||||
Worktree status:
|
||||
- Clean on `impl/00001KVSEBF56-protocol-typescript-types` at `a13fb693`。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-23T06:20:49Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Reviewer r1 approvalを受けて、実装ブランチを Orchestrator worktree の `orchestration` branch に統合した。
|
||||
|
||||
統合:
|
||||
- Merge commit: `9728b533 merge: protocol typescript generation`
|
||||
- Merged branch: `impl/00001KVSEBF56-protocol-typescript-types`
|
||||
- Implementation commit:
|
||||
- `a13fb693 protocol: generate workspace TypeScript types`
|
||||
|
||||
Orchestrator worktree validation:
|
||||
- `cargo fmt --check`: passed
|
||||
- `git diff --check HEAD^1..HEAD`: passed
|
||||
- `cargo test -p protocol`: passed
|
||||
- `cargo test -p protocol --features typescript generated_protocol_types_are_current`: passed
|
||||
- `cargo test -p protocol --features typescript`: passed
|
||||
- Non-blocking `ts-rs` warning for `#[serde(other)]` on `Segment::Unknown` remains as reviewer noted。
|
||||
- `cargo check -p protocol --target wasm32-unknown-unknown --no-default-features`: passed
|
||||
- `cd web/workspace && rm -rf node_modules .svelte-kit build && deno task check`: passed (`svelte-check found 0 errors and 0 warnings`)
|
||||
- `cd web/workspace && deno task build`: passed
|
||||
- `cargo run -p yoi -- ticket doctor`: passed (`doctor: ok`)
|
||||
- `nix build .#yoi --no-link`: passed
|
||||
|
||||
Validation generated ignored frontend artifacts in Orchestrator worktree:
|
||||
- `web/workspace/node_modules/`
|
||||
- `web/workspace/.svelte-kit/`
|
||||
- `web/workspace/build/`
|
||||
|
||||
These were removed after validation. Final Orchestrator worktree status after validation cleanup is clean on `orchestration` at `9728b533`。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: yoi-orchestrator at: 2026-06-23T06:21:01Z from: inprogress to: done reason: implementation_merged_and_validated field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Reviewer approval、Orchestrator worktree への統合、protocol tests/drift check/wasm no-default check、Deno check/build、Ticket doctor、Nix build が完了したため `done` に遷移する。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: hare at: 2026-06-23T06:21:19Z from: done to: closed reason: closed field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Ticket を closed にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: close author: hare at: 2026-06-23T06:21:19Z status: closed -->
|
||||
|
||||
## 完了
|
||||
|
||||
Protocol crate 由来の Workspace web TypeScript type generation を実装し、Orchestrator worktree の `orchestration` branch に統合した。
|
||||
|
||||
主な成果:
|
||||
- `crates/protocol` の `stream` module / tokio dependency を default `stream` feature に分離し、DTO-only build で tokio を不要にした。
|
||||
- Optional `typescript` feature と `ts-rs` による TypeScript export を追加。
|
||||
- Protocol DTOs に `cfg_attr(feature = "typescript", derive(ts_rs::TS))` を追加。
|
||||
- Deterministic generator を追加:
|
||||
- `crates/protocol/src/typescript.rs`
|
||||
- `crates/protocol/examples/generate_typescript.rs`
|
||||
- Drift check を追加:
|
||||
- `cargo test -p protocol --features typescript generated_protocol_types_are_current`
|
||||
- Generated artifact を追加:
|
||||
- `web/workspace/src/lib/generated/protocol.ts`
|
||||
- Workspace web が generated root protocol types を re-export:
|
||||
- `PodProtocolMethod`
|
||||
- `PodProtocolEvent`
|
||||
- `PodProtocolSegment`
|
||||
- Workspace backend extension-point notes に、browser が Pod Unix socket に直接接続せず、将来の backend proxy が Worker identity と method allow/block boundary を enforce する方針を記録。
|
||||
- `Cargo.lock` と `package.nix` cargo hash を更新。
|
||||
|
||||
統合・検証:
|
||||
- Merge commit: `9728b533 merge: protocol typescript generation`
|
||||
- Implementation commit: `a13fb693 protocol: generate workspace TypeScript types`
|
||||
- Reviewer final verdict: approve
|
||||
- Validation passed: `cargo fmt --check`, `git diff --check HEAD^1..HEAD`, `cargo test -p protocol`, `cargo test -p protocol --features typescript generated_protocol_types_are_current`, `cargo test -p protocol --features typescript`, `cargo check -p protocol --target wasm32-unknown-unknown --no-default-features`, `deno task check`, `deno task build`, `cargo run -p yoi -- ticket doctor`, and `nix build .#yoi --no-link`。
|
||||
|
||||
既知の非ブロッキング事項:
|
||||
- `ts-rs` は `#[serde(other)]` on `Segment::Unknown` に warning を出すが、generated artifact には `{ "kind": "unknown" }` が含まれ、current validation は pass。
|
||||
- 一部 `Option<T>` + `skip_serializing_if` fields は TS で optional field ではなく required nullable に出る。将来 UI が該当 field を使う際は注意。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-23T06:22:01Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Post-close cleanup completed。
|
||||
|
||||
- Stopped child Pods and reclaimed scope:
|
||||
- `yoi-coder-00001KVSEBF56`
|
||||
- `yoi-reviewer-00001KVSEBF56-r1`
|
||||
- Removed ignored frontend validation artifacts from child worktree before worktree removal if present:
|
||||
- `web/workspace/node_modules/`
|
||||
- `web/workspace/.svelte-kit/`
|
||||
- `web/workspace/build/`
|
||||
- Removed implementation worktree:
|
||||
- `/home/hare/Projects/yoi/.worktree/00001KVSEBF56-protocol-typescript-types`
|
||||
- Deleted implementation branch:
|
||||
- `impl/00001KVSEBF56-protocol-typescript-types`
|
||||
- Orchestrator worktree remains clean on `orchestration` at `b547203f`。
|
||||
|
||||
Root/original workspace was not used for merge/validation/cleanup operations。
|
||||
|
||||
---
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"id":"orch-plan-20260623-061132-1","ticket_id":"00001KVSFXY88","kind":"accepted_plan","accepted_plan":{"summary":"Remove redundant Workspace Dashboard title/actionbar key hints and selected-row textual status display while preserving row selection markers and Dashboard keyboard/action semantics, updating render tests accordingly.","branch":"impl/00001KVSFXY88-dashboard-hint-cleanup","worktree":"/home/hare/Projects/yoi/.worktree/00001KVSFXY88-dashboard-hint-cleanup","role_plan":"Orchestrator creates a dedicated child worktree and spawns a narrow-scope Coder. Reviewer will be spawned read-only after Coder reports implementation commit(s). After approval, Orchestrator integrates into `orchestration`, validates TUI tests, records closure, and cleans only the child worktree/branch."},"author":"yoi-orchestrator","at":"2026-06-23T06:11:32Z"}
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 'TUI Dashboard の冗長な key hints と selected-row 状態表示を削る'
|
||||
state: 'queued'
|
||||
state: 'closed'
|
||||
created_at: '2026-06-23T05:40:56Z'
|
||||
updated_at: '2026-06-23T06:08:42Z'
|
||||
updated_at: '2026-06-23T06:33:21Z'
|
||||
assignee: null
|
||||
readiness: 'implementation_ready'
|
||||
risk_flags: ['tui-ux', 'terminal-layout']
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
TUI Dashboard の冗長な key hints と selected-row textual status display を削除し、Orchestrator worktree の `orchestration` branch に統合した。
|
||||
|
||||
主な成果:
|
||||
- Top title line から `Row selection`, `blank Enter`, `Tab target` などの key hint guidance を削除。
|
||||
- Selected Ticket / Pod / Intake / no-row selected textual status line を blank にした。
|
||||
- Composer bottom actionbar を always-on key hints ではなく notices / diagnostics only に最小化。
|
||||
- Row marker / highlighting rendering は維持。
|
||||
- Keyboard/action behavior は変更していない。
|
||||
- Unused selected-row display-status helper を削除。
|
||||
- Dashboard render/unit tests を新 display contract に更新し、selected row marker の visibility assertion は維持。
|
||||
|
||||
統合・検証:
|
||||
- Merge commit: `5abf16f9 merge: dashboard hint cleanup`
|
||||
- Implementation commit: `03ad525f tui: trim dashboard redundant hints`
|
||||
- Reviewer final verdict: approve
|
||||
- Validation passed: `cargo fmt --check`, `git diff --check HEAD^1..HEAD`, `cargo test -p tui dashboard --lib`, `cargo test -p tui workspace_panel --lib`, and `cargo run -p yoi -- ticket doctor`。
|
||||
|
||||
範囲外:
|
||||
- Console / single-Pod TUI hints は変更していない。
|
||||
- Manual/PTY `yoi panel` visual check は実施していない。Focused render/unit tests を主 validation とした。
|
||||
@@ -13,4 +13,294 @@ LocalTicketBackend によって作成されました。
|
||||
Ticket を `workspace-panel` が queued にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: decision author: yoi-orchestrator at: 2026-06-23T06:11:11Z -->
|
||||
|
||||
## Decision
|
||||
|
||||
Routing decision: `implementation_ready_parallel`
|
||||
|
||||
Reason:
|
||||
- Ticket body has concrete Dashboard render targets and acceptance criteria。
|
||||
- No relations / blockers / orchestration plan records exist。
|
||||
- Active work `00001KVSEBF56` (protocol TS generation) and `00001KVSGFM65` (Workspace web Kanban review) are separate from TUI Dashboard render code。
|
||||
- Orchestrator worktree is clean on `orchestration` at `0e635ba6`; target worktree / branch is not present。
|
||||
- Bounded code map confirms relevant functions in `crates/tui/src/dashboard/render.rs`: `draw_title`, `target_status_line`, `actionbar_left_text`, `actionbar_right_text`, `draw_actionbar`, and tests in `crates/tui/src/dashboard/tests.rs`。
|
||||
|
||||
IntentPacket:
|
||||
|
||||
Intent:
|
||||
- Remove redundant Dashboard key hints and selected-row textual status while preserving actual row selection visibility and keyboard behavior。
|
||||
|
||||
Binding decisions / invariants:
|
||||
- This Ticket only changes Dashboard display cleanup。
|
||||
- Console / single-Pod TUI key hints are out of scope。
|
||||
- Do not remove list row selection markers / highlighting / keyboard navigation visibility。
|
||||
- Do not reintroduce direct selected-Pod send。
|
||||
- Companion lifecycle / Orchestrator lifecycle / Ticket workflow semantics must not change。
|
||||
- Existing Dashboard actions must remain: blank Enter row action, text Enter composer-target action, Tab target switching, Esc clear selection, Pod open/attach, Ticket Intake/Queue flows。
|
||||
|
||||
Requirements / acceptance criteria:
|
||||
- Top title line no longer shows key hint guidance such as `Row selection`, `blank Enter`, `Tab target`。
|
||||
- Composer bottom actionbar no longer shows always-on key hint groups, or is minimized to non-redundant notices only。
|
||||
- Selected Ticket / selected Pod / selected Intake Pod / no row selected textual status line is removed or no longer recognized as redundant selected-row status。
|
||||
- List still visibly indicates current selected row。
|
||||
- Related render/unit tests are updated to the new display specification。
|
||||
|
||||
Implementation latitude:
|
||||
- `target_status_line` layout row may be removed, made empty/minimal, or repurposed only if it does not show redundant selected-row status。
|
||||
- Actionbar may be fully removed, notice-only, or otherwise minimized depending on layout/tests。
|
||||
- Keep row markers like `▶` and selected styling unless explicitly escalated。
|
||||
- If layout row removal creates resize/hitbox complications, choose minimal empty/notice behavior and document the tradeoff。
|
||||
|
||||
Escalate if:
|
||||
- Removing status/actionbar rows makes current composer target/action ambiguous enough to require alternative UI。
|
||||
- Row selection marker/visibility also needs removal。
|
||||
- Layout changes cause terminal resize / hitbox / mouse selection side effects that require broader Dashboard layout refactor。
|
||||
|
||||
Validation plan:
|
||||
- `cargo fmt --check`
|
||||
- `cargo test -p tui dashboard --lib`
|
||||
- `cargo test -p tui workspace_panel --lib` if affected by shared tests/helpers。
|
||||
- `git diff --check`
|
||||
- `cargo run -p yoi -- ticket doctor`
|
||||
- Manual/PTY `yoi panel` check if practical, but focused render tests are primary。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: yoi-orchestrator at: 2026-06-23T06:11:22Z from: queued to: inprogress reason: human_authorized_unblocked_dashboard_hint_cleanup field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Human authorized queue routing from Workspace Dashboard. Ticket has concrete Dashboard render acceptance criteria and no recorded blockers, so Orchestrator accepts implementation.
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-23T06:12:36Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Implementation start report:
|
||||
|
||||
- Created child implementation worktree:
|
||||
- `/home/hare/Projects/yoi/.worktree/00001KVSFXY88-dashboard-hint-cleanup`
|
||||
- Created branch:
|
||||
- `impl/00001KVSFXY88-dashboard-hint-cleanup`
|
||||
- Base commit:
|
||||
- `3bfd1ca0 ticket: accept dashboard hint cleanup`
|
||||
- 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-00001KVSFXY88`
|
||||
- Coder scope:
|
||||
- read: `/home/hare/Projects/yoi`
|
||||
- write: `/home/hare/Projects/yoi/.worktree/00001KVSFXY88-dashboard-hint-cleanup`
|
||||
|
||||
Parallelization note:
|
||||
- Active Workspace web / protocol work is separate from TUI Dashboard rendering. This Ticket should stay limited to `crates/tui/src/dashboard/*` unless tests reveal a narrow shared helper impact。
|
||||
|
||||
Next action:
|
||||
- Wait for Coder implementation report, then spawn Reviewer read-only for the implementation diff。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-23T06:28:12Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Coder implementation report received from `yoi-coder-00001KVSFXY88`.
|
||||
|
||||
Implementation commit:
|
||||
- `03ad525f tui: trim dashboard redundant hints`
|
||||
|
||||
Changed areas:
|
||||
- `crates/tui/src/dashboard/render.rs`
|
||||
- Removed top title key-hint guidance。
|
||||
- Made selected-row/composer target status line blank。
|
||||
- Minimized actionbar to notices/diagnostic-only text。
|
||||
- Preserved row marker/highlighting rendering。
|
||||
- `crates/tui/src/dashboard/mod.rs`
|
||||
- Removed now-unused selected-row display-status helper。
|
||||
- `crates/tui/src/dashboard/tests.rs`
|
||||
- Updated render/unit expectations for no redundant hints/status。
|
||||
- Added title guidance cleanup assertion。
|
||||
- Kept assertions that selected rows remain visibly marked。
|
||||
|
||||
Coder validation reported:
|
||||
- `cargo fmt --check`: passed
|
||||
- `cargo test -p tui dashboard --lib`: passed
|
||||
- `cargo test -p tui workspace_panel --lib`: passed
|
||||
- `git diff --check`: passed
|
||||
- `cargo run -p yoi -- ticket doctor`: passed
|
||||
|
||||
Manual/PTY `yoi panel` check:
|
||||
- Not run; focused render/unit tests were used as primary validation。
|
||||
|
||||
Orchestrator evidence checked:
|
||||
- Worktree clean on `impl/00001KVSFXY88-dashboard-hint-cleanup`。
|
||||
- HEAD is `03ad525f`。
|
||||
- Diff `3bfd1ca0..HEAD` touches expected dashboard render/module/tests files only。
|
||||
- `git diff --check 3bfd1ca0..HEAD`: passed。
|
||||
|
||||
Next action:
|
||||
- Route to read-only Reviewer Pod for acceptance review。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: comment author: yoi-orchestrator at: 2026-06-23T06:28:54Z -->
|
||||
|
||||
## Comment
|
||||
|
||||
Review routing:
|
||||
|
||||
Spawned read-only Reviewer Pod:
|
||||
- `yoi-reviewer-00001KVSFXY88-r1`
|
||||
|
||||
Review target:
|
||||
- Worktree: `/home/hare/Projects/yoi/.worktree/00001KVSFXY88-dashboard-hint-cleanup`
|
||||
- Branch: `impl/00001KVSFXY88-dashboard-hint-cleanup`
|
||||
- Baseline: `3bfd1ca0`
|
||||
- Implementation commit: `03ad525f tui: trim dashboard redundant hints`
|
||||
- Diff: `3bfd1ca0..03ad525f`
|
||||
|
||||
Reviewer scope:
|
||||
- read-only `/home/hare/Projects/yoi`
|
||||
|
||||
Reviewer focus:
|
||||
- Removal of redundant title/actionbar key hints and selected-row textual status。
|
||||
- Preservation of visible row selection marker/highlighting。
|
||||
- No keyboard behavior/action semantics changes。
|
||||
- Dashboard render tests updated to new display contract。
|
||||
|
||||
Orchestrator will wait for reviewer verdict before integration。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: review author: yoi-reviewer-00001KVSFXY88-r1 at: 2026-06-23T06:31:21Z status: approve -->
|
||||
|
||||
## Review: approve
|
||||
|
||||
Verdict: `approve`
|
||||
|
||||
確認範囲:
|
||||
- Ticket authority:
|
||||
- `.yoi/tickets/00001KVSFXY88/item.md`
|
||||
- `.yoi/tickets/00001KVSFXY88/thread.md`
|
||||
- Diff `3bfd1ca0..03ad525f`:
|
||||
- `crates/tui/src/dashboard/render.rs`
|
||||
- `crates/tui/src/dashboard/mod.rs`
|
||||
- `crates/tui/src/dashboard/tests.rs`
|
||||
|
||||
Evidence:
|
||||
- Top title guidance was removed; `title_line` now keeps only `workspace dashboard` plus companion/orchestrator status。
|
||||
- `target_status_line` now renders blank, removing selected Ticket / Pod / Intake / no-row textual status。
|
||||
- Actionbar is reduced to sending/refreshing/notices/diagnostic text; always-on key hint groups are gone。
|
||||
- Row marker/highlighting paths remain; tests assert selected row marker strings such as `▶ ready`, `▶ queued`, and ` ▶ live`。
|
||||
- Keyboard/action behavior was not altered in the diff; removed helpers were display-only and no remaining references exist。
|
||||
- No Console/single-Pod TUI files changed。
|
||||
- No direct selected-Pod send was reintroduced; existing dashboard behavior tests still pass。
|
||||
|
||||
Blocking issues:
|
||||
- None。
|
||||
|
||||
Non-blocking concerns:
|
||||
- Manual `yoi panel` PTY visual check was not run; focused render/unit coverage was used as primary validation, as suggested。
|
||||
|
||||
Reviewer validation:
|
||||
- `cargo fmt --check`: passed
|
||||
- `git diff --check 3bfd1ca0..HEAD`: passed
|
||||
- `cargo test -p tui dashboard --lib`: passed (`107 passed`)
|
||||
- `cargo test -p tui workspace_panel --lib`: passed (`23 passed`)
|
||||
- `cargo run -p yoi -- ticket doctor`: passed (`doctor: ok`)
|
||||
|
||||
Worktree status:
|
||||
- Clean on `impl/00001KVSFXY88-dashboard-hint-cleanup` at `03ad525f`。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-23T06:32:25Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Reviewer r1 approvalを受けて、実装ブランチを Orchestrator worktree の `orchestration` branch に統合した。
|
||||
|
||||
統合:
|
||||
- Merge commit: `5abf16f9 merge: dashboard hint cleanup`
|
||||
- Merged branch: `impl/00001KVSFXY88-dashboard-hint-cleanup`
|
||||
- Implementation commit:
|
||||
- `03ad525f tui: trim dashboard redundant hints`
|
||||
|
||||
Orchestrator worktree validation:
|
||||
- `cargo fmt --check`: passed
|
||||
- `git diff --check HEAD^1..HEAD`: passed
|
||||
- `cargo test -p tui dashboard --lib`: passed (`107 passed`)
|
||||
- `cargo test -p tui workspace_panel --lib`: passed (`23 passed`)
|
||||
- `cargo run -p yoi -- ticket doctor`: passed (`doctor: ok`)
|
||||
|
||||
Final Orchestrator worktree status after validation is clean on `orchestration` at `5abf16f9`。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: yoi-orchestrator at: 2026-06-23T06:32:37Z from: inprogress to: done reason: implementation_merged_and_validated field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Reviewer approval、Orchestrator worktree への統合、focused Dashboard / workspace_panel tests、Ticket doctor が完了したため `done` に遷移する。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: hare at: 2026-06-23T06:32:49Z from: done to: closed reason: closed field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Ticket を closed にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: close author: hare at: 2026-06-23T06:32:49Z status: closed -->
|
||||
|
||||
## 完了
|
||||
|
||||
TUI Dashboard の冗長な key hints と selected-row textual status display を削除し、Orchestrator worktree の `orchestration` branch に統合した。
|
||||
|
||||
主な成果:
|
||||
- Top title line から `Row selection`, `blank Enter`, `Tab target` などの key hint guidance を削除。
|
||||
- Selected Ticket / Pod / Intake / no-row selected textual status line を blank にした。
|
||||
- Composer bottom actionbar を always-on key hints ではなく notices / diagnostics only に最小化。
|
||||
- Row marker / highlighting rendering は維持。
|
||||
- Keyboard/action behavior は変更していない。
|
||||
- Unused selected-row display-status helper を削除。
|
||||
- Dashboard render/unit tests を新 display contract に更新し、selected row marker の visibility assertion は維持。
|
||||
|
||||
統合・検証:
|
||||
- Merge commit: `5abf16f9 merge: dashboard hint cleanup`
|
||||
- Implementation commit: `03ad525f tui: trim dashboard redundant hints`
|
||||
- Reviewer final verdict: approve
|
||||
- Validation passed: `cargo fmt --check`, `git diff --check HEAD^1..HEAD`, `cargo test -p tui dashboard --lib`, `cargo test -p tui workspace_panel --lib`, and `cargo run -p yoi -- ticket doctor`。
|
||||
|
||||
範囲外:
|
||||
- Console / single-Pod TUI hints は変更していない。
|
||||
- Manual/PTY `yoi panel` visual check は実施していない。Focused render/unit tests を主 validation とした。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-23T06:33:21Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Post-close cleanup completed。
|
||||
|
||||
- Stopped child Pods and reclaimed scope:
|
||||
- `yoi-coder-00001KVSFXY88`
|
||||
- `yoi-reviewer-00001KVSFXY88-r1`
|
||||
- Removed implementation worktree:
|
||||
- `/home/hare/Projects/yoi/.worktree/00001KVSFXY88-dashboard-hint-cleanup`
|
||||
- Deleted implementation branch:
|
||||
- `impl/00001KVSFXY88-dashboard-hint-cleanup`
|
||||
- Orchestrator worktree remains clean on `orchestration` at `10866666`。
|
||||
|
||||
Root/original workspace was not used for merge/validation/cleanup operations。
|
||||
|
||||
---
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 'Improve Workspace web ticket Kanban grouping and lazy rows'
|
||||
state: 'inprogress'
|
||||
state: 'closed'
|
||||
created_at: '2026-06-23T05:50:36Z'
|
||||
updated_at: '2026-06-23T06:06:45Z'
|
||||
updated_at: '2026-06-23T06:16:10Z'
|
||||
assignee: null
|
||||
queued_by: 'workspace-panel'
|
||||
queued_at: '2026-06-23T05:53:22Z'
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
Workspace web Repository Ticket Kanban の grouping / lazy rows 改善を統合した。
|
||||
|
||||
主な成果:
|
||||
- Repository Ticket Kanban を `RepositoryTicketKanban.svelte` component に分離。
|
||||
- `planning` + `ready` を display-only group とし、`ready` を `planning` より上に表示。
|
||||
- `queued` + `inprogress` を display-only group とし、`inprogress` を `queued` より上に表示。
|
||||
- `done`, `closed`, `other` は独立 group として維持。
|
||||
- 各 row に original Ticket state を表示。
|
||||
- 各 group の初期表示行数を 30 に cap。
|
||||
- 各 group に独立 scroll area と independent lazy visible count を実装。
|
||||
- High-volume `closed` group が page height を無制限に伸ばさないようにした。
|
||||
- `WorkspacePage.svelte` から inline Kanban logic/markup を削減。
|
||||
- Styling は existing design tokens を使い、backend/API/Ticket lifecycle semantics は変更していない。
|
||||
|
||||
統合・検証:
|
||||
- Merge commit: `eea26f91 merge: kanban lazy rows`
|
||||
- Implementation commit: `6f68bb8d web: group repository ticket kanban rows`
|
||||
- Reviewer final verdict: approve
|
||||
- Validation passed: `git diff --check HEAD^1..HEAD`, `deno task check`, `deno task build`, `cargo run -p yoi -- ticket doctor`, and `nix build .#yoi --no-link`。
|
||||
|
||||
範囲外:
|
||||
- Backend pagination、Ticket state mutation UI、drag/drop Kanban、browser/manual scroll E2E tests は追加していない。
|
||||
@@ -206,3 +206,167 @@ Reviewer focus:
|
||||
Orchestrator will wait for reviewer verdict before integration。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: review author: yoi-reviewer-00001KVSGFM65-r1 at: 2026-06-23T06:13:34Z status: approve -->
|
||||
|
||||
## Review: approve
|
||||
|
||||
Verdict: `approve`
|
||||
|
||||
確認範囲:
|
||||
- Ticket authority:
|
||||
- `.yoi/tickets/00001KVSGFM65/item.md`
|
||||
- `.yoi/tickets/00001KVSGFM65/thread.md`
|
||||
- Diff `a6f9019e..6f68bb8d`:
|
||||
- `web/workspace/src/lib/workspace-pages/RepositoryTicketKanban.svelte`
|
||||
- `web/workspace/src/lib/workspace-pages/WorkspacePage.svelte`
|
||||
- `web/workspace/src/app.css`
|
||||
|
||||
Review evidence:
|
||||
- Grouping/sort:
|
||||
- `planning` + `ready` are grouped as `ready-planning`, labelled `Ready / Planning`。
|
||||
- `queued` + `inprogress` are grouped as `inprogress-queued`, labelled `In progress / Queued`。
|
||||
- `statePriority()` places `ready` before `planning`, and `inprogress` before `queued`。
|
||||
- Other states:
|
||||
- `done`, `closed`, and `other` remain separate group keys via `state:${state}` / `state:other`。
|
||||
- Per-group lazy state:
|
||||
- `visibleRowsByGroup` is keyed by group key。
|
||||
- Initial visible rows are `INITIAL_VISIBLE_ROWS = 30`。
|
||||
- Scroll handling updates only `[group.key]`。
|
||||
- Near-bottom threshold is `NEAR_BOTTOM_PX = 96`。
|
||||
- High-volume containment:
|
||||
- Each non-empty group row list has its own `.ticket-list-scroll`。
|
||||
- `.ticket-list-scroll` uses `max-height: 34rem; overflow-y: auto;`, so `closed` cannot expand page vertically without bound。
|
||||
- Original row state:
|
||||
- Each ticket row renders `<span class="ticket-state">{ticket.state}</span>`。
|
||||
- Component boundary:
|
||||
- Kanban logic and row rendering moved into `RepositoryTicketKanban.svelte`。
|
||||
- `WorkspacePage.svelte` now delegates with `<RepositoryTicketKanban tickets={repositoryTickets} />`。
|
||||
- Design / boundary:
|
||||
- Styling uses existing CSS tokens such as `var(--space-*)`, `var(--line)`, `var(--text-muted)`, `var(--text-faint)`, `var(--text-strong)`。
|
||||
- No backend/API/protocol TypeScript generation scope touched。
|
||||
- No mutation UI added。
|
||||
|
||||
Blocking issues:
|
||||
- None found。
|
||||
|
||||
Non-blocking concerns:
|
||||
- No browser/manual scroll interaction test was run; validation is by code inspection plus Svelte check/build. Given the ticket’s frontend-only scope and current test tooling, this is acceptable。
|
||||
|
||||
Reviewer validation:
|
||||
- `git diff --check a6f9019e..6f68bb8d`: passed
|
||||
- `git diff --check a6f9019e..HEAD`: passed
|
||||
- `cd web/workspace && rm -rf node_modules .svelte-kit build && deno task check && deno task build`: passed (`svelte-check found 0 errors and 0 warnings`; static build completed)
|
||||
- `cargo run -p yoi -- ticket doctor`: passed (`doctor: ok`)
|
||||
- `nix build .#yoi --no-link`: passed
|
||||
- `cargo test -p yoi-workspace-server`: not run; no backend/API changes were made。
|
||||
|
||||
Generated artifacts:
|
||||
- Ignored validation artifacts present after review:
|
||||
- `target/`
|
||||
- `web/workspace/.svelte-kit/`
|
||||
- `web/workspace/build/`
|
||||
- `web/workspace/node_modules/`
|
||||
- No generated artifacts are tracked。
|
||||
|
||||
Worktree status:
|
||||
- Clean tracked state on `impl/00001KVSGFM65-kanban-lazy-rows` at `6f68bb8d`。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-23T06:15:01Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Reviewer r1 approvalを受けて、実装ブランチを Orchestrator worktree の `orchestration` branch に統合した。
|
||||
|
||||
統合:
|
||||
- Merge commit: `eea26f91 merge: kanban lazy rows`
|
||||
- Merged branch: `impl/00001KVSGFM65-kanban-lazy-rows`
|
||||
- Implementation commit:
|
||||
- `6f68bb8d web: group repository ticket kanban rows`
|
||||
|
||||
Orchestrator worktree validation:
|
||||
- `git diff --check HEAD^1..HEAD`: passed
|
||||
- `cd web/workspace && rm -rf node_modules .svelte-kit build && deno task check`: passed (`svelte-check found 0 errors and 0 warnings`)
|
||||
- `cd web/workspace && deno task build`: passed
|
||||
- `cargo run -p yoi -- ticket doctor`: passed (`doctor: ok`)
|
||||
- `nix build .#yoi --no-link`: passed
|
||||
|
||||
Validation generated ignored frontend artifacts in Orchestrator worktree:
|
||||
- `web/workspace/node_modules/`
|
||||
- `web/workspace/.svelte-kit/`
|
||||
- `web/workspace/build/`
|
||||
|
||||
These were removed after validation. Final Orchestrator worktree status after validation cleanup is clean on `orchestration` at `eea26f91`。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: yoi-orchestrator at: 2026-06-23T06:15:09Z from: inprogress to: done reason: implementation_merged_and_validated field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Reviewer approval、Orchestrator worktree への統合、Deno check/build、Ticket doctor、Nix build が完了したため `done` に遷移する。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: hare at: 2026-06-23T06:15:22Z from: done to: closed reason: closed field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Ticket を closed にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: close author: hare at: 2026-06-23T06:15:22Z status: closed -->
|
||||
|
||||
## 完了
|
||||
|
||||
Workspace web Repository Ticket Kanban の grouping / lazy rows 改善を統合した。
|
||||
|
||||
主な成果:
|
||||
- Repository Ticket Kanban を `RepositoryTicketKanban.svelte` component に分離。
|
||||
- `planning` + `ready` を display-only group とし、`ready` を `planning` より上に表示。
|
||||
- `queued` + `inprogress` を display-only group とし、`inprogress` を `queued` より上に表示。
|
||||
- `done`, `closed`, `other` は独立 group として維持。
|
||||
- 各 row に original Ticket state を表示。
|
||||
- 各 group の初期表示行数を 30 に cap。
|
||||
- 各 group に独立 scroll area と independent lazy visible count を実装。
|
||||
- High-volume `closed` group が page height を無制限に伸ばさないようにした。
|
||||
- `WorkspacePage.svelte` から inline Kanban logic/markup を削減。
|
||||
- Styling は existing design tokens を使い、backend/API/Ticket lifecycle semantics は変更していない。
|
||||
|
||||
統合・検証:
|
||||
- Merge commit: `eea26f91 merge: kanban lazy rows`
|
||||
- Implementation commit: `6f68bb8d web: group repository ticket kanban rows`
|
||||
- Reviewer final verdict: approve
|
||||
- Validation passed: `git diff --check HEAD^1..HEAD`, `deno task check`, `deno task build`, `cargo run -p yoi -- ticket doctor`, and `nix build .#yoi --no-link`。
|
||||
|
||||
範囲外:
|
||||
- Backend pagination、Ticket state mutation UI、drag/drop Kanban、browser/manual scroll E2E tests は追加していない。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-23T06:16:10Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Post-close cleanup completed。
|
||||
|
||||
- Stopped child Pods and reclaimed scope:
|
||||
- `yoi-coder-00001KVSGFM65`
|
||||
- `yoi-reviewer-00001KVSGFM65-r1`
|
||||
- Removed ignored frontend validation artifacts from child worktree before worktree removal if present:
|
||||
- `web/workspace/node_modules/`
|
||||
- `web/workspace/.svelte-kit/`
|
||||
- `web/workspace/build/`
|
||||
- Removed implementation worktree:
|
||||
- `/home/hare/Projects/yoi/.worktree/00001KVSGFM65-kanban-lazy-rows`
|
||||
- Deleted implementation branch:
|
||||
- `impl/00001KVSGFM65-kanban-lazy-rows`
|
||||
- Orchestrator worktree remains clean on `orchestration` at `9de04f72`。
|
||||
|
||||
Root/original workspace was not used for merge/validation/cleanup operations。
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user