Skip to content

canvas: build the accessible infinite-canvas workspace #31

Description

@guicybercode

Context

The graph document needs a spatial UI similar to design tools while preserving terminal performance, keyboard access, and the daemon ownership boundary.

Goal

Implement an infinite canvas with pan, zoom, minimap, selection, grouping, alignment, snapping, and typed nodes.

Scope

  • Render Terminal, Note, Task, Agent Team, and File Tree nodes.
  • Draw typed connections with accessible labels and selection.
  • Preserve mounted terminal controllers when nodes move, group, or change visibility.
  • Add keyboard navigation, multi-select, zoom controls, focus management, and reduced-motion behavior.
  • Persist layout through the CanvasDocument revision API.
  • Virtualize non-terminal nodes outside the viewport where appropriate.
  • Provide an overview/list alternative for users who cannot use a spatial canvas.

Acceptance criteria

  • PTY bytes never enter React state.
  • Moving or hiding a terminal node never stops its session.
  • At least 100 mixed nodes and 10 live terminal nodes remain responsive under a documented performance budget.
  • Keyboard-only users can select, move, connect, group, and open node details.
  • Zoom does not make text permanently unreadable; focused content can be opened at usable scale.
  • Minimap and connections have non-color-only state indicators.
  • Layout writes are debounced and revision-safe.
  • Automated tests cover graph commands and accessibility; performance has a repeatable benchmark.

Dependencies

The CanvasDocument issue and the production xterm/event-stream integration must be complete.

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

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions