Skip to content

Plugin: Canvas view (tracking) #342

Description

@KrasForge

Summary

An installable Canvas view: a freeform, pan-and-zoom board where you arrange note cards spatially and draw connections between them.

This is the heaviest of the view-plugin ideas, so it is split into the sub-issues below. Each is independently shippable and builds on the one before it. Track overall progress here.

Sub-issues

Contribution point

View: a full workspace view plus a nav item, provided by an installable plugin (builtin: false, not pre-installed).

Target behavior (across the sub-issues)

  • Infinite pan and zoom canvas; drag note cards to position them; draw links between cards.
  • Add existing notes to the canvas from a picker; double-click a card to open the note.
  • Layout (positions and connections) persists client-side, keyed per canvas, consistent with how the note tree and plugin install state are stored.
  • Support more than one named canvas.

Shared implementation notes

  • Register with the plugin runtime: ctx.addView({ id: 'canvas', label: 'Canvas', icon: (a frame or layout icon), order, component }) as a lazy-loaded builtin.
  • Add a marketplace catalog entry in plugins.ts and a load in catalog.ts; builtin: false.
  • Persist canvas state (card positions, links) to localStorage, keyed per canvas; read notes from data.notes.
  • The existing GraphView already implements canvas pan, zoom, and drag with a view {x,y,k} transform; reuse that approach rather than pulling in a new dependency.

References

Plugin runtime: frontend/src/features/workspace/plugins/. Reference interactions: frontend/src/features/workspace/GraphView.tsx. Catalog: plugins.ts and catalog.ts.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions