From a6f9019eddea7a07606b90f51a1d3b251f0a6890 Mon Sep 17 00:00:00 2001 From: Hare Date: Tue, 23 Jun 2026 14:54:43 +0900 Subject: [PATCH 1/4] ticket: accept kanban lazy rows --- .../artifacts/orchestration-plan.jsonl | 1 + .yoi/tickets/00001KVSGFM65/item.md | 4 +- .yoi/tickets/00001KVSGFM65/thread.md | 70 +++++++++++++++++++ 3 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 .yoi/tickets/00001KVSGFM65/artifacts/orchestration-plan.jsonl diff --git a/.yoi/tickets/00001KVSGFM65/artifacts/orchestration-plan.jsonl b/.yoi/tickets/00001KVSGFM65/artifacts/orchestration-plan.jsonl new file mode 100644 index 00000000..cad0f417 --- /dev/null +++ b/.yoi/tickets/00001KVSGFM65/artifacts/orchestration-plan.jsonl @@ -0,0 +1 @@ +{"id":"orch-plan-20260623-055433-1","ticket_id":"00001KVSGFM65","kind":"accepted_plan","accepted_plan":{"summary":"Refactor Repository Ticket Kanban into grouped frontend component with display-only planning+ready and queued+inprogress groups, priority sort, per-group scroll areas, independent lazy visible counts, original state badges, and design-token styling without backend lifecycle changes.","branch":"impl/00001KVSGFM65-kanban-lazy-rows","worktree":"/home/hare/Projects/yoi/.worktree/00001KVSGFM65-kanban-lazy-rows","role_plan":"Orchestrator creates a dedicated child worktree and spawns a narrow-scope frontend Coder. Reviewer will be spawned read-only after Coder reports implementation commit(s). After approval, Orchestrator integrates into `orchestration`, validates Deno/Nix, records closure, and cleans only the child worktree/branch."},"author":"yoi-orchestrator","at":"2026-06-23T05:54:33Z"} diff --git a/.yoi/tickets/00001KVSGFM65/item.md b/.yoi/tickets/00001KVSGFM65/item.md index eedb8534..0de827ea 100644 --- a/.yoi/tickets/00001KVSGFM65/item.md +++ b/.yoi/tickets/00001KVSGFM65/item.md @@ -1,8 +1,8 @@ --- title: 'Improve Workspace web ticket Kanban grouping and lazy rows' -state: 'queued' +state: 'inprogress' created_at: '2026-06-23T05:50:36Z' -updated_at: '2026-06-23T05:53:22Z' +updated_at: '2026-06-23T05:54:33Z' assignee: null queued_by: 'workspace-panel' queued_at: '2026-06-23T05:53:22Z' diff --git a/.yoi/tickets/00001KVSGFM65/thread.md b/.yoi/tickets/00001KVSGFM65/thread.md index af975d77..2da3a30f 100644 --- a/.yoi/tickets/00001KVSGFM65/thread.md +++ b/.yoi/tickets/00001KVSGFM65/thread.md @@ -30,4 +30,74 @@ Marked ready by `yoi ticket state`. Ticket を `workspace-panel` が queued にしました。 +--- + + + +## Decision + +Routing decision: `implementation_ready_parallel` + +Reason: +- Ticket body has concrete frontend requirements for Repository Ticket Kanban grouping, sort order, per-group independent scroll, lazy row loading, component boundary, and Deno/Nix validation。 +- No relations / blockers / orchestration plan records exist。 +- Active Ticket `00001KVSEBF56` is protocol TypeScript generation and is expected to touch protocol crate / generated types; this Kanban ticket primarily targets Workspace Repository page UI and can proceed in parallel with narrow frontend scope。 +- Current queued Ticket is this Ticket only。 +- Orchestrator worktree is clean on `orchestration` at `2865abb6`; target worktree / branch is not present。 +- Current code map shows Repository Ticket Kanban is currently inline in `web/workspace/src/lib/workspace-pages/WorkspacePage.svelte`, using `repositoryTickets.columns` from `/api/repositories/local/tickets`。 + +IntentPacket: + +Intent: +- Improve Repository Ticket Kanban display so high-volume states do not dominate the page, related states are grouped, and each group lazy-loads independently。 + +Binding decisions / invariants: +- Frontend display behavior only unless absolutely necessary; do not change Ticket lifecycle semantics or add mutation UI。 +- Backend pagination is not required; frontend-only visible count per group is acceptable。 +- Original Ticket state must remain visible on each row。 +- Grouping is display-only: `planning+ready`, `queued+inprogress`, other states independent。 +- Group sort priority: `ready` before `planning`, `inprogress` before `queued`。 +- Each group has independent scroll/visible count state; scrolling one group must not increase other groups。 +- Use existing design tokens from `web/workspace/src/app.css`; avoid raw colors and heavy card chrome。 +- Keep static SPA / Deno tooling boundaries。 +- Do not touch protocol TS generation scope from `00001KVSEBF56` unless unavoidable。 + +Requirements / acceptance criteria: +- `planning` and `ready` display in the same group, with `ready` above `planning`。 +- `queued` and `inprogress` display in the same group, with `inprogress` above `queued`。 +- `done`, `closed`, and other states keep independent display meaning。 +- Each group has an independent scroll area approximately 10 rows tall。 +- Initial visible rows per group are capped at 30。 +- Near-bottom scroll within a group increases only that group’s visible count。 +- `closed` or other high-volume group does not expand page height excessively。 +- Row displays original Ticket state。 +- Kanban display is preferably split into reusable Svelte component(s), moving grouping/sort/visible-count/scroll logic out of `WorkspacePage.svelte`。 +- Deno check/build, `git diff --check`, and `nix build .#yoi --no-link` pass。 + +Implementation latitude: +- Component can live under `web/workspace/src/lib/workspace-pages/` or another clear frontend component path。 +- Backend response shape may remain unchanged; grouping can be performed client-side from returned columns/items。 +- Add minimal frontend tests only if current tooling supports it cheaply; otherwise validation via Svelte check/build is acceptable。 +- CSS can be simple rule/typography/spacing approach; no need for full design system。 + +Escalate if: +- Svelte 5 event/scroll handling requires a broader frontend state management rewrite。 +- Backend response shape prevents group-level lazy display without changing API semantics。 +- Deno build/check breaks due unrelated protocol type generation work。 + +Validation plan: +- `cd web/workspace && deno task check && deno task build` +- `git diff --check` +- `cargo run -p yoi -- ticket doctor` +- `nix build .#yoi --no-link` +- `cargo test -p yoi-workspace-server` only if backend API changes。 + +--- + + + +## State changed + +Human authorized queue routing from Workspace Dashboard. Ticket has concrete frontend acceptance criteria and no recorded blockers; active protocol TypeScript generation work is separate enough for parallel implementation. + --- From f39127b7529fef6412e0af9718e2fed81c9a8a95 Mon Sep 17 00:00:00 2001 From: Hare Date: Tue, 23 Jun 2026 14:55:34 +0900 Subject: [PATCH 2/4] ticket: start kanban lazy rows --- .yoi/tickets/00001KVSGFM65/item.md | 2 +- .yoi/tickets/00001KVSGFM65/thread.md | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/.yoi/tickets/00001KVSGFM65/item.md b/.yoi/tickets/00001KVSGFM65/item.md index 0de827ea..a21dd205 100644 --- a/.yoi/tickets/00001KVSGFM65/item.md +++ b/.yoi/tickets/00001KVSGFM65/item.md @@ -2,7 +2,7 @@ title: 'Improve Workspace web ticket Kanban grouping and lazy rows' state: 'inprogress' created_at: '2026-06-23T05:50:36Z' -updated_at: '2026-06-23T05:54:33Z' +updated_at: '2026-06-23T05:55:23Z' assignee: null queued_by: 'workspace-panel' queued_at: '2026-06-23T05:53:22Z' diff --git a/.yoi/tickets/00001KVSGFM65/thread.md b/.yoi/tickets/00001KVSGFM65/thread.md index 2da3a30f..84273474 100644 --- a/.yoi/tickets/00001KVSGFM65/thread.md +++ b/.yoi/tickets/00001KVSGFM65/thread.md @@ -101,3 +101,31 @@ Validation plan: Human authorized queue routing from Workspace Dashboard. Ticket has concrete frontend acceptance criteria and no recorded blockers; active protocol TypeScript generation work is separate enough for parallel implementation. --- + + + +## Implementation report + +Implementation start report: + +- Created child implementation worktree: + - `/home/hare/Projects/yoi/.worktree/00001KVSGFM65-kanban-lazy-rows` +- Created branch: + - `impl/00001KVSGFM65-kanban-lazy-rows` +- Base commit: + - `a6f9019e ticket: accept kanban lazy rows` +- 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-00001KVSGFM65` +- Coder scope: + - read: `/home/hare/Projects/yoi` + - write: `/home/hare/Projects/yoi/.worktree/00001KVSGFM65-kanban-lazy-rows` + +Parallelization note: +- `00001KVSEBF56` remains active and targets protocol TypeScript generation. This Ticket should stay limited to Workspace Repository Ticket Kanban frontend display。 + +Next action: +- Wait for Coder implementation report, then spawn Reviewer read-only for the implementation diff。 + +--- From c92bc447cc06816dc5f50aa26ec0e6effde03585 Mon Sep 17 00:00:00 2001 From: Hare Date: Tue, 23 Jun 2026 15:06:11 +0900 Subject: [PATCH 3/4] ticket: record kanban lazy rows implementation --- .yoi/tickets/00001KVSGFM65/item.md | 2 +- .yoi/tickets/00001KVSGFM65/thread.md | 46 ++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/.yoi/tickets/00001KVSGFM65/item.md b/.yoi/tickets/00001KVSGFM65/item.md index a21dd205..22abd31e 100644 --- a/.yoi/tickets/00001KVSGFM65/item.md +++ b/.yoi/tickets/00001KVSGFM65/item.md @@ -2,7 +2,7 @@ title: 'Improve Workspace web ticket Kanban grouping and lazy rows' state: 'inprogress' created_at: '2026-06-23T05:50:36Z' -updated_at: '2026-06-23T05:55:23Z' +updated_at: '2026-06-23T06:05:59Z' assignee: null queued_by: 'workspace-panel' queued_at: '2026-06-23T05:53:22Z' diff --git a/.yoi/tickets/00001KVSGFM65/thread.md b/.yoi/tickets/00001KVSGFM65/thread.md index 84273474..17d4f16c 100644 --- a/.yoi/tickets/00001KVSGFM65/thread.md +++ b/.yoi/tickets/00001KVSGFM65/thread.md @@ -129,3 +129,49 @@ Next action: - Wait for Coder implementation report, then spawn Reviewer read-only for the implementation diff。 --- + + + +## Implementation report + +Coder implementation report received from `yoi-coder-00001KVSGFM65`. + +Implementation commit: +- `6f68bb8d web: group repository ticket kanban rows` + +Changed areas: +- `web/workspace/src/lib/workspace-pages/RepositoryTicketKanban.svelte` + - New reusable Kanban component。 + - Groups `ready + planning`, with `ready` sorted above `planning`。 + - Groups `inprogress + queued`, with `inprogress` sorted above `queued`。 + - Keeps `done`, `closed`, and `other` as distinct display groups。 + - Shows each row’s original `ticket.state`。 + - Caps initial rendered rows per group at 30。 + - Adds independent per-group scroll/lazy row expansion。 + - Uses design tokens from `app.css`。 +- `web/workspace/src/lib/workspace-pages/WorkspacePage.svelte` + - Replaced inline Repository Ticket Kanban markup with extracted component。 +- `web/workspace/src/app.css` + - Removed now-unused global inline Kanban styles。 + +Coder validation reported: +- `cd web/workspace && deno task check`: passed +- `cd web/workspace && deno task build`: passed +- `git diff --check HEAD~1..HEAD`: passed +- `cargo run -p yoi -- ticket doctor`: passed +- `nix build .#yoi --no-link`: passed + +Notes: +- No backend API changes; `cargo test -p yoi-workspace-server` was not run。 +- No protocol TypeScript generation scope touched。 + +Orchestrator evidence checked: +- Worktree clean on `impl/00001KVSGFM65-kanban-lazy-rows` at `6f68bb8d`。 +- Diff `a6f9019e..HEAD` touches expected frontend files only。 +- `git diff --check a6f9019e..HEAD`: passed。 +- Validation generated ignored frontend artifacts; Orchestrator removed `web/workspace/node_modules/`, `.svelte-kit/`, and `build/` before Reviewer routing。 + +Next action: +- Route to read-only Reviewer Pod for acceptance review。 + +--- From f1ab40bf0186e2876ad77be0d3111251e67ac52c Mon Sep 17 00:00:00 2001 From: Hare Date: Tue, 23 Jun 2026 15:06:57 +0900 Subject: [PATCH 4/4] ticket: start kanban lazy rows review --- .yoi/tickets/00001KVSGFM65/item.md | 2 +- .yoi/tickets/00001KVSGFM65/thread.md | 31 ++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/.yoi/tickets/00001KVSGFM65/item.md b/.yoi/tickets/00001KVSGFM65/item.md index 22abd31e..b1e11c33 100644 --- a/.yoi/tickets/00001KVSGFM65/item.md +++ b/.yoi/tickets/00001KVSGFM65/item.md @@ -2,7 +2,7 @@ title: 'Improve Workspace web ticket Kanban grouping and lazy rows' state: 'inprogress' created_at: '2026-06-23T05:50:36Z' -updated_at: '2026-06-23T06:05:59Z' +updated_at: '2026-06-23T06:06:45Z' assignee: null queued_by: 'workspace-panel' queued_at: '2026-06-23T05:53:22Z' diff --git a/.yoi/tickets/00001KVSGFM65/thread.md b/.yoi/tickets/00001KVSGFM65/thread.md index 17d4f16c..26473176 100644 --- a/.yoi/tickets/00001KVSGFM65/thread.md +++ b/.yoi/tickets/00001KVSGFM65/thread.md @@ -175,3 +175,34 @@ Next action: - Route to read-only Reviewer Pod for acceptance review。 --- + + + +## Comment + +Review routing: + +Spawned read-only Reviewer Pod: +- `yoi-reviewer-00001KVSGFM65-r1` + +Review target: +- Worktree: `/home/hare/Projects/yoi/.worktree/00001KVSGFM65-kanban-lazy-rows` +- Branch: `impl/00001KVSGFM65-kanban-lazy-rows` +- Baseline: `a6f9019e` +- Implementation commit: `6f68bb8d web: group repository ticket kanban rows` +- Diff: `a6f9019e..6f68bb8d` + +Reviewer scope: +- read-only `/home/hare/Projects/yoi` + +Reviewer focus: +- Display grouping/sort order: `ready > planning`, `inprogress > queued`。 +- Per-group independent visible count and scroll expansion。 +- High-volume `closed` bounded by group scroll area。 +- Original Ticket state visible per row。 +- Component boundary and design-token styling。 +- No backend/lifecycle/protocol scope creep。 + +Orchestrator will wait for reviewer verdict before integration。 + +---