Skip to content

Unify CALM authoring and visualisation tooling (Hub, VS Code, Studio) #3036

Description

@rocketstack-matt

Feature Proposal

Important

This issue supersedes #2600 (Consolidate the CALM platform) and #2857 (CalmStudio roadmap H2 2026). Both are closed in favour of this one. The direction agreed on 2026-07-28 (#2857 comment, WG 2026-07-28) is the starting point here, not the desktop-Studio target state in #2600.

Target Project:

Cross-cutting: calm-hub, calm-hub-ui, calm-plugins/vscode, calm-widgets, shared, calm-models, calm-studio. Led by @byrash, with @jpgough-ms and @initcron contributing.

Description of Feature:

Unify the CALM authoring and visualisation tooling onto one stack:

Layer Target
Visualisation One React Flow visualisation package, used by CALM Hub UI and the VS Code extension
Layout One layout model (x, y, w, h per node), persisted identically by Hub and VS Code
Editing Hub gains a studio mode (edit node/relationship properties, save through the Hub API); VS Code extension edits the same documents
Backend CALM Hub API decoupled from Hub UI; OIDC and Git/SCM backing stores
CalmStudio Useful pieces (node packs, palette, validation panel, nested containers) move into Hub; the SvelteKit app retires at parity

Enterprises that must stay read-only get Hub in standalone mode; studio mode is opt-in.

User Stories:

  • As an architect, I want the same diagram in Hub and VS Code so that a layout I save in one renders identically in the other.
  • As an architect, I want to edit an architecture visually in Hub or VS Code so that I do not need a third tool.
  • As a platform owner, I want one visualisation stack so that a rendering fix is made in one place.
  • As an enterprise admin, I want Hub to run read-only so that governed content cannot be edited in place.

Current Limitations:

  • Three renderers (Hub UI, VS Code extension, CalmStudio) with divergent layout formats.
  • CalmStudio duplicates validation, MCP, and node packs the platform already owns.
  • Hub UI and Hub API are coupled; Hub has no edit surface.

Proposed Implementation:

Tracked as sub-issues of this issue. Existing issues are attached as-is; new ones are opened as phases start.

Phase Scope Issue
1 VS Code extension on React Flow, with editing #2869
1 Layout persistence parity Hub ↔ VS Code #2953
1 Controls at interface level #2868
1 SVG import in VS Code #3025
2 Extract shared React Flow visualisation package new
2 Hub API independent of Hub UI #2943
2 Multi-IDP developer experience #2944
2 OIDC + Git/SCM backing store #2867, PR #3001
3 Studio mode MVP in Hub new
3 Modes design note (standalone vs studio) new
4 Migrate node packs, palette, validation panel, nested containers from CalmStudio new
4 Retire the SvelteKit app new

Disposition of the #2600 track issues:

Issue Disposition
#2649 Track A structural cleanup Stays open; still valid
#2650 Track B capability convergence Stays open; validator/MCP convergence still applies
#2651 Track C Studio as desktop editor Close; superseded by phases 3–4
#2652 Track D docs consolidation Stays open
#2690 RFC shared semantics layer Folds into the phase 2 visualisation package

Testing Strategy:

Per sub-issue. The shared visualisation package needs a render-parity test between Hub UI and the VS Code extension.

Documentation Requirements:

Implementation Checklist:

  • Design reviewed and approved
  • Implementation completed
  • Tests written and passing
  • Documentation updated
  • Relevant workflows updated (if needed)
  • Performance impact assessed

Additional Context:

The static render path (calm-widgets, docs embed, SVG export) stays separate from the interactive React Flow canvas: one set of view semantics, two render targets. Views (#2344) are the common contract.

The #2857 thread proposed @jpgough-ms as lead. I would like input from the other maintainers here on whether @byrash leads overall with Jim owning the Hub pieces, or the reverse.

Activity

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

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions