You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[v0.6.2] - 2026-05-12
Fixed
Standalone bundle: foldMode was not forwarded to GraphViewer. The foldMode field on GraphConfig and the initialFoldMode prop on GraphViewer shipped in v0.6.0, but src/standalone/adapter.ts picked config keys out of the embedded pipelex-config JSON explicitly and silently dropped foldMode. Hosts of the IIFE bundle (graph-viewer.{js,css}, including pipelex's reactflow HTML output) couldn't seed the initial fold state — controllers always started fully expanded regardless of what the embedded config said. The adapter now validates foldMode against the FOLD_MODE constants ("folded" / "expanded" / "auto"), falls back to "expanded" on missing or invalid values, and forwards it to GraphViewer as both initialFoldMode and inside config. Config parsing was extracted into a new pure module src/standalone/viewerProps.ts (with buildViewerProps()) so the wire-through is now unit-tested. Third standalone-bundle wire-through gap in the v0.4–v0.6 window after the v0.4.1 / v0.6.1 missing-CSS fixes — consumers of the npm package were unaffected because they pass foldMode to GraphViewer directly.
Internal
Automated regression guards against standalone-bundle drift. Two CI-enforced parity tests close the gap that produced the v0.4.1 / v0.6.1 / v0.6.2 fixes. First: buildViewerProps was refactored to spread the embedded config blob (...cfg) and then override only validated fields (foldMode, direction, showControllers) — any future GraphConfig key now flows through automatically, eliminating the v0.6.2-shape bug class. A new viewerProps.test.ts parity test asserts every key in DEFAULT_GRAPH_CONFIG reaches the output, catching the case where someone reverts to cherry-picking. Second: the hand-maintained cssFiles allow-list in scripts/build-standalone.mjs was extracted into scripts/standaloneCssFiles.mjs (shared by the build and the test), and a new cssManifest.test.ts walks src/**/*.{ts,tsx} for relative .css imports and asserts every resolved path is present in the manifest. Together these prevent the next "wire-through silently dropped" regression from reaching a release.