Skip to content

Make XYG the sole visualization dependency and pass the full GraphForge release matrix #82

Description

@DecisionNerd

Problem

The extension currently bundles separate graph, chart, temporal, and map stacks: Cytoscape, G6, Sigma, Graphology, ForceAtlas2, Plotly, G2, L7, and L7 Maps. This creates duplicated rendering/layout logic, inconsistent interaction/lifecycle behavior, large bundles, and a dependency stack that does not share XYG's native scale and host-parity contract.

This pre-v1 product will standardize on XYG once the required capabilities land.

Objective

Route every GraphForge VS Code visualization through XYG, remove every previous visualization library, and prove the packaged extension across the complete platform, accessibility, export, scale, temporal/spatial, and multi-view release matrix.

Blocked By

Requirements

  • Replace graph, analytical, temporal, and geospatial renderer branches with the XYG-native contract.
  • Remove Cytoscape, G6, Sigma, Graphology, external ForceAtlas2, Plotly, G2, L7, and L7 Maps from dependencies, source, settings, build chunks, notices, and package artifacts.
  • Remove vendor renderer-choice settings and vendor-specific schema fields.
  • Use XYG layouts/geometry/LOD/encoding and the shared TypeScript paint/interaction client; do not reimplement behavior in the extension.
  • Use XYG's inherited file rendering/export for graphs, charts, timelines, and maps.
  • Bundle the XYG client and Node/native host locally under strict CSP; support local and remote extension hosts with explicit platform/architecture/ABI handling.
  • Reassess VSIX size/file budgets based on the actual XYG package set.
  • Update quickstart and real-data fixtures to cover graph, analytical, temporal, and geospatial journeys.
  • This is a pre-v1 clean break: remove old visualization specs/readers rather than translating or preserving third-party payloads.
  • No silent renderer/layout fallback.
  • Keep GraphForge Core free of visualization dependencies.

Release Matrix

Verify at the exact candidate head:

  • macOS, Windows, and Linux;
  • supported CPU architectures;
  • local and remote extension hosts;
  • clean install and packaged VSIX, not only source checkout;
  • multiple concurrent graphs/charts/timelines/maps;
  • graph labels, arrows, routes, self-loops, parallel edges, compounds, CoSE, selection, accessibility;
  • GraphForge analytical result families and identity-linked tables;
  • temporal intervals, playback, time-filtered graphs, streaming/LOD;
  • geospatial projection, offline basemap, layers, spatial selection, temporal-spatial coordination;
  • inherited HTML/static file export;
  • light/dark themes, keyboard-only, screen-reader companion, reduced motion;
  • small, medium, large, and massive preparation/layout/paint/interaction/memory/payload/export evidence;
  • cancellation, disposal, renderer/native failures, and extension reload/revival;
  • package contents, licenses/notices, CSP, no CDN, and no removed renderer bytes.

Acceptance Criteria

  • package.json and lockfile contain none of the removed visualization libraries.
  • Source and built output contain no imports, vendor branches, settings, globals, or renderer adapters for them.
  • Every visualization command and agent workflow emits/opens the XYG-native contract.
  • Clean packaged VSIX tests pass on the supported platform/host matrix.
  • Required real GraphForge fixtures pass the visualization coverage ledger.
  • Accessibility, export, performance, lifecycle, offline/CSP, and failure evidence are attached to the implementation PR.
  • Requirements, architecture, testing, commands, quickstart, packaging, notices, and troubleshooting docs are current.
  • The issue closes only after exact-head CI, VSIX inspection, and platform evidence are green.

BDD Completion Scenarios

Scenario: One visualization stack powers the extension

Given a clean packaged GraphForge VS Code installation
When a user opens a graph, analytical chart, timeline, or map
Then the visualization is composed and rendered by XYG
And no previous visualization library is loaded or present in the package.

Scenario: GraphForge analysis remains faithful at scale

Given canonical GraphForge results across graph, analytical, temporal, and spatial families
When users interact with multiple linked visualizations on each supported platform
Then identities, semantics, selections, ranges, projections, accessibility, and exports remain correct
And resource policy stays within documented bounds.

Scenario: Failure is explicit

Given a missing native artifact, incompatible ABI, invalid data, failed layout, or exhausted resource limit
When visualization begins
Then the correct instance reports a stable actionable failure
And the extension never loads another renderer as fallback.

Observability

Use the instance lifecycle contract's safe phase, count, duration, cancellation, platform/ABI, and stable failure fields. No result content, coordinates, timestamps, vectors, or project paths.

Security And Privacy

Strict CSP; local assets only; safe text/tooltip escaping; bounded buffers; validated native loading; no remote tile/provider default; no credentials in specs; no broad native search paths.

Testing

Unit/protocol/schema tests, extension integration, Extension Development Host, packaged-VSIX E2E, remote host, platform matrix, accessibility, export, scale/performance, cancellation/leaks, package-content/vendor-absence scans, CSP/offline, and quickstart journeys.

Documentation

Update requirements, architecture, testing, commands, agent interoperability, quickstart/sample, settings removal, packaging, supported platforms, troubleshooting, licenses/notices, and release evidence.

Non-Goals

Plotly/AntV/Cytoscape payload compatibility, legacy visualization readers, automatic field/renderer inference, or moving visualization into GraphForge Core.

Related Issues

Rust/WASM Architecture Amendment

  • The sole XYG dependency set includes the version-aligned TypeScript painter, direct-browser WASM artifact/adapter, and exact-platform Node native host where applicable.
  • The extension chooses native or WASM execution explicitly by supported host capability while consuming one Rust-owned canonical scene contract; it never changes visualization semantics or falls back to TypeScript algorithms.
  • Packaged VSIX and remote-host evidence must inventory and validate both native and WASM artifacts, their ABI/protocol compatibility, CSP/offline behavior, lifecycle disposal, and size budgets.
  • Removed-library scans must also prove there is no replacement JavaScript layout, LOD, projection, analytical-join, or export-policy implementation.

This section is authoritative over any earlier host-ownership wording in this issue. It does not broaden third-party payload compatibility or legacy-reader scope.

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationenhancementNew feature or requestjavascriptPull requests that update javascript code

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions