Skip to content

Issues panel + coordinator extension: host shared quadraui Board (Phase 0, read-only) #521

Description

@JDonaghy

Summary

Add an Issues activity-bar panel + coordinator extension to vimcode that hosts the
shared quadraui::Board component, sources its data from coord board --json, and routes
board actions to coord subcommands. This is Phase 0 (read-only board) of the
coordinator integration: the goal is that the full pipeline can eventually be driven from
vimcode at parity with coord-tui.

Design doc: docs/COORDINATOR_INTEGRATION.md (§3, §6, §7, §11).

Why

vimcode and coord-tui are both quadraui apps. We want users who live in either one to do
everything from it. coordinator owns the issue lifecycle (the verb); vimcode owns the code
(the noun). Hosting the board in vimcode is the first step toward the real differentiator —
reviewing the agent's work as real code, in a real editor (Phase 2+, follow-on issues).

Blocks / depends on

  • quadraui — reusable Board component (render + input; BoardModel in / BoardAction
    out). JDonaghy/quadraui (filed alongside).
  • claude-coordinatorcoord board --json projection. JDonaghy/claude-coordinator
    (filed alongside).

Scope (Phase 0 — read-only)

Follow the platform-neutrality rule: shared logic in render.rs/engine, 1–3 lines of
wiring per backend
, no bespoke GTK/TUI board code.

  • src/render.rsBoardData view model built from the coord board --json payload,
    handed to quadraui::Board; new ScreenLayout.board slot (model on ext_sidebar).
  • src/core/ — engine fields for the panel (selection, focus, last fetched model, poll
    receiver). Pure; no Python/GTK. New src/core/coord_client.rs isolates the coord …
    subprocess + JSON parse so core stays testable (mock the client in tests).
  • src/gtk/ + src/tui_main/ — register the Issues entry in the activity bar (the SC
    and Extensions panels are the template — TuiPanel, ext_sidebar, PanelRegistration)
    and draw quadraui::Board. Key/click → BoardAction (no actions wired yet in Phase 0
    beyond selection/open).
  • Poll loop — refresh coord board --json on a timer using the existing
    poll_ext_registry / poll_sc_diff pattern (try_recv on a background receiver).
  • Lua extension bundle — packaging/glue only: registers the Issues activity entry and
    :Coord* commands. Does not render the board and holds no pipeline logic.

Out of scope (later phases, separate issues)

  • Actions (dispatch / test / review / merge) wired to coord subprocess — Phase 0 is
    read-only.
  • Issue authoring as markdown buffers (:CoordRefine) — Phase 1.
  • In-editor diff review tab + coord report-result round-trip — Phase 2 (the differentiator).
  • Running coord notify from vimcode — opt-in, later.

Acceptance

  • Selecting Issues in the activity bar renders the coordinator board (shared quadraui
    component) in both the TUI and GTK backends.
  • The board reflects coord board --json and refreshes on the poll timer.
  • No board-specific drawing code in src/gtk/ or src/tui_main/ beyond activity-bar
    registration + a quadraui::Board draw call.
  • cargo build, cargo test --no-default-features, cargo clippy -- -D warnings,
    cargo fmt all pass.

Related

  • Design doc: docs/COORDINATOR_INTEGRATION.md
  • quadraui Board component, coordinator coord board --json (filed alongside).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions