From 0fab76bde90e8b72f702b877b3782e9d135fcb6c Mon Sep 17 00:00:00 2001 From: Iwan Kelaiah Date: Sat, 8 Aug 2026 15:04:59 +1000 Subject: [PATCH] feat(v1.8.0): usable local workspace (persistence + dependency filtering) --- .github/workflows/correctness.yml | 8 + README.md | 104 ++++++-- dist/src/app.js | 150 ++++++++++- dist/src/app.js.map | 2 +- dist/src/workspace.js | 243 +++++++++++++++++ dist/src/workspace.js.map | 1 + dist/tests/metrics.js | 19 +- dist/tests/metrics.js.map | 2 +- dist/tests/tests.js | 12 + dist/tests/tests.js.map | 2 +- dist/tests/ui-tests.js | 62 +++++ dist/tests/ui-tests.js.map | 2 +- dist/tests/workspace.js | 214 +++++++++++++++ dist/tests/workspace.js.map | 1 + docs/PR_NOTE_1.8.0.md | 100 +++++++ docs/RELEASE_NOTE_v1.8.0.md | 95 +++++++ ...etrics-v1.7.0.json => metrics-v1.8.0.json} | 6 +- examples/dbo.v180_demo.sql | 62 +++++ index.html | 31 +++ package-lock.json | 4 +- package.json | 2 +- scripts/file-smoke.mjs | 6 + scripts/metrics.mjs | 4 +- src/app.ts | 136 +++++++++- src/types.d.ts | 53 ++++ src/workspace.ts | 239 +++++++++++++++++ styles.css | 14 +- tests/index.html | 2 + tests/metrics.html | 4 +- tests/metrics.ts | 19 +- tests/tests.ts | 15 ++ tests/ui-tests.ts | 64 +++++ tests/workspace.ts | 247 ++++++++++++++++++ 33 files changed, 1866 insertions(+), 59 deletions(-) create mode 100644 dist/src/workspace.js create mode 100644 dist/src/workspace.js.map create mode 100644 dist/tests/workspace.js create mode 100644 dist/tests/workspace.js.map create mode 100644 docs/PR_NOTE_1.8.0.md create mode 100644 docs/RELEASE_NOTE_v1.8.0.md rename docs/{metrics-v1.7.0.json => metrics-v1.8.0.json} (89%) create mode 100644 examples/dbo.v180_demo.sql create mode 100644 src/workspace.ts create mode 100644 tests/workspace.ts diff --git a/.github/workflows/correctness.yml b/.github/workflows/correctness.yml index 4626687..8590600 100644 --- a/.github/workflows/correctness.yml +++ b/.github/workflows/correctness.yml @@ -64,6 +64,14 @@ jobs: echo "Runtime files contain an external URL." exit 1 fi + if grep -REn '\bfetch\(|new XMLHttpRequest|new WebSocket|navigator\.sendBeacon' index.html src dist; then + echo "Runtime files contain a network submission API." + exit 1 + fi + if grep -REn 'localStorage' src --include=*.ts | grep -v 'src/workspace.ts'; then + echo "Browser storage is only touched by the opt-in persistence module (src/workspace.ts)." + exit 1 + fi - name: Start static test server shell: bash diff --git a/README.md b/README.md index b942cfe..382f478 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,8 @@ For the first stable release, see [RELEASE_NOTE_v1.4.0.md](docs/RELEASE_NOTE_v1.4.0.md). For the v1.5.0 release, see [RELEASE_NOTE_v1.5.0.md](docs/RELEASE_NOTE_v1.5.0.md). For the v1.6.0 release, see [RELEASE_NOTE_v1.6.0.md](docs/RELEASE_NOTE_v1.6.0.md). For the v1.7.0 release, see -[RELEASE_NOTE_v1.7.0.md](docs/RELEASE_NOTE_v1.7.0.md). +[RELEASE_NOTE_v1.7.0.md](docs/RELEASE_NOTE_v1.7.0.md). For the v1.8.0 release, see +[RELEASE_NOTE_v1.8.0.md](docs/RELEASE_NOTE_v1.8.0.md). ## Start here @@ -66,7 +67,7 @@ For the first stable release, see ## 60-second quick start -1. Download the `v1.7.0` archive from +1. Download the `v1.8.0` archive from [GitHub Releases](https://github.com/ikelaiah/ProcFlow/releases) or clone this repository. 2. Extract the complete archive. Keep `index.html`, `styles.css`, `dist/`, and @@ -133,7 +134,7 @@ statements. analysis to another engineer. ProcFlow imports SQL text, not report-definition files. SSRS/RDL import is on -the roadmap; for v1.7.0, paste or export the dataset SQL itself. +the roadmap; for v1.8.0, paste or export the dataset SQL itself. ## What ProcFlow can show @@ -214,7 +215,7 @@ than silently disappearing from the diagram. ## Supported SQL -ProcFlow v1.7.0 recognises: +ProcFlow v1.8.0 recognises: - Microsoft T-SQL - IBM DB2 SQL PL @@ -225,7 +226,7 @@ Supported inputs include procedures, functions, triggers, views, plain SQL statements, report dataset queries, and multi-object scripts where those object types apply to the selected dialect. -Dialect-specific v1.7.0 coverage includes: +Dialect-specific v1.8.0 coverage includes: - **T-SQL:** mixed one-line and block `IF`/`WHILE` control flow (single statement and `BEGIN`/`END` bodies in one AST), labelled `GOTO` and labels @@ -260,13 +261,40 @@ low-confidence warning. ## Importing SQL **Import SQL files** accepts multiple `.sql`, `.ddl`, and `.txt` files. Files -are read into memory by the current browser tab; they are not uploaded or -persisted. +are read into memory by the current browser tab; they are not uploaded and are +not persisted automatically. Multi-object scripts are split into selectable objects. If the split cannot be made confidently, ProcFlow keeps the input as one script and reports the uncertainty. +## Workspace + +The **Workspace** menu keeps your work usable across sessions, entirely on your +terms: + +- **Save to this browser** persists the current workspace (files plus analysis + options) to this browser's `localStorage`. This is strictly opt-in — nothing + is written or restored on load. +- **Restore saved workspace** replays the saved files and options into an + identical analysis. +- **Export workspace file** / **Import workspace file** transfer a workspace as + portable JSON. +- **Forget saved workspace** removes the local copy explicitly. + +Saved workspaces are versioned (so future releases can migrate them) and, if +corrupt or unreadable, are recovered by starting fresh rather than crashing. + +## Dependency filtering + +In **Object dependencies** scope, the **Filter dependencies** menu offers +presentation-only filters over the estate diagram: show/hide **Reads**, +**Writes**, and **Calls** edges; show/hide **External objects** and **Temp +tables** nodes; and a **Focus** box that keeps an object and its direct +neighbours. Filtering derives a filtered view at render time and never changes +the underlying analysis graph, so confidence, coverage, diagnostics, and the +reported stats stay exactly as analysed. + ## Exporting and sharing The **Export** menu provides: @@ -291,7 +319,7 @@ endorsed by draw.io. ### Quick answers -| Question | ProcFlow v1.7.0 behavior | +| Question | ProcFlow v1.8.0 behavior | |---|---| | Is SQL uploaded? | No. Analysis and rendering happen in the browser tab. | | Does it connect to a database? | No. There is no driver, connection string, or query execution. | @@ -299,7 +327,8 @@ endorsed by draw.io. | Is there analytics or telemetry? | No. | | Is internet access required? | No for local or internally hosted use. | | Are imported files uploaded? | No. The browser File API reads them into the current tab. | -| Is SQL retained after closing the tab? | No. ProcFlow does not use cookies, `localStorage`, `sessionStorage`, or IndexedDB. | +| Is SQL retained after closing the tab? | No by default. ProcFlow does not use cookies, `sessionStorage`, or IndexedDB, and does not write to `localStorage` on load. A workspace is kept across sessions only when you explicitly choose **Save to this browser** in the Workspace menu. | +| Is a saved workspace stored on this computer? | Only if you choose **Save to this browser**. It is written to this browser's `localStorage`, is local-only, versioned, exportable to a JSON file, and removed by **Forget saved workspace** or by clearing browser site data. | | Does ProcFlow write to the clipboard automatically? | No. Clipboard writes follow an explicit copy action. | | Are exports local? | Yes. SVG and draw.io files are generated in memory and downloaded by the browser. | | Does it call an AI service? | No. It can copy a narration prompt but never submits it. | @@ -316,6 +345,7 @@ dist/src/dialects.js dist/src/lineage.js dist/src/ir.js dist/src/exporters.js +dist/src/workspace.js dist/src/app.js vendor/mermaid/mermaid.min.js ``` @@ -325,7 +355,13 @@ network-submission code. The only bundled third-party runtime is the pinned Mermaid 10.9.1 renderer. Its MIT licence is stored at `vendor/mermaid/LICENSE`. -The SHA-256 of `vendor/mermaid/mermaid.min.js` in v1.7.0 is: +The opt-in persistence module (`dist/src/workspace.js`) is the only runtime +that touches browser storage, and it does so only through explicit +**Workspace** menu actions (Save / Restore / Forget) — never on load. Its +import/export uses the browser download API, which also requires an explicit +action. + +The SHA-256 of `vendor/mermaid/mermaid.min.js` in v1.8.0 is: ```text 61B335A46DF05A7CE1C98378F60E5F3E77A7FB608A1056997E8A649304A936D6 @@ -336,7 +372,7 @@ so the release checksum remains reproducible across operating systems. ### Guidance for security review -1. Review and pin the `v1.7.0` tag or its exact commit. +1. Review and pin the `v1.8.0` tag or its exact commit. 2. Verify the vendored Mermaid checksum. 3. Review the runtime files listed above. 4. Open the reviewed files locally or serve them from an approved internal @@ -374,7 +410,7 @@ and contains no automatic data-submission path. - Some vendor-specific table expressions might not be detected. - Temporary-table data flow is shown within one object; cross-object temp flow, synonym, linked-server, and cross-database resolution is lightweight. -- SSRS/RDL files are not imported in v1.7.0. +- SSRS/RDL files are not imported in v1.8.0. - draw.io layout is deterministic for the documented graph classes at documented size limits; very large or non-planar graphs are laid out without overlapping boxes and reported honestly rather than claimed crossing-free. @@ -442,27 +478,32 @@ Then open: - `http://127.0.0.1:8000/tests/ui.html` — browser interaction and local-runtime tests -The v1.7.0 baseline is: +The v1.8.0 baseline is: -- 206 golden and boundary assertions +- 207 golden and boundary assertions - 400 deterministic mutation cases -- 16 browser interaction tests +- 20 browser interaction tests - 20 export-parity checks (10 fixtures × TD + LR), 11 layout-budget fixtures, and 100 % export-traceability on the export fixtures +- 13 workspace-persistence and dependency-filtering fixtures (save→reload + identity, schema migration, corrupt recovery, explicit clear, non-mutating + filters) Fixture-corpus accuracy metrics (attribution, unresolved-token, tail-unconsumed, fallback, opaque-dynamic, semantic-edge coverage, provenance, -region-diagnostic-to-span, export-parity, export-traceability, and -layout-budget ratios) are published from the checked-in golden -corpus in [docs/metrics-v1.7.0.json](docs/metrics-v1.7.0.json). Generation is +region-diagnostic-to-span, export-parity, export-traceability, layout-budget, +and workspace pass-rate ratios) are published from the checked-in golden +corpus in [docs/metrics-v1.8.0.json](docs/metrics-v1.8.0.json). Generation is deterministic and fixture-only — no user inputs or runtime telemetry are collected — and CI refuses to merge when the snapshot is stale. Regenerate with `npm run metrics:write`. GitHub Actions installs dependencies, type-checks, builds, verifies generated -files, runs the local-file smoke test, checks that the runtime remains -local-only, verifies the metric snapshot, and runs all three served browser -suites on every push and pull request. +files, runs the local-file smoke test (including the opt-in workspace +assertion), checks that the runtime remains local-only (no external URLs or +network APIs, and browser storage confined to the opt-in persistence module), +verifies the metric snapshot, and runs all three served browser suites on every +push and pull request. ### Project structure @@ -488,6 +529,7 @@ docs/ ├── PR_NOTE_1.5.0.md ├── PR_NOTE_1.6.0.md ├── PR_NOTE_1.7.0.md +├── PR_NOTE_1.8.0.md ├── RELEASE_NOTE_1.1.0.md ├── RELEASE_NOTE_1.2.0.md ├── RELEASE_NOTE_1.3.0.md @@ -499,7 +541,8 @@ docs/ ├── RELEASE_NOTE_v1.5.0.md ├── RELEASE_NOTE_v1.6.0.md ├── RELEASE_NOTE_v1.7.0.md -└── metrics-v1.7.0.json # deterministic fixture-only accuracy metrics snapshot +├── RELEASE_NOTE_v1.8.0.md +└── metrics-v1.8.0.json # deterministic fixture-only accuracy metrics snapshot examples/ ├── dbo.v110_demo.sql # per-release outcome demos ├── dbo.v120_demo.sql @@ -507,7 +550,8 @@ examples/ ├── dbo.v140_demo.sql ├── dbo.v150_demo.sql ├── dbo.v160_demo.sql -└── dbo.v170_demo.sql # v1.7.0: clear deterministic exports demo +├── dbo.v170_demo.sql # v1.7.0: clear deterministic exports demo +└── dbo.v180_demo.sql # v1.8.0: usable local workspace demo scripts/ ├── file-smoke.mjs # dependency-free local-file release smoke test └── metrics.mjs # generate/verify the fixture-corpus metric snapshot @@ -518,6 +562,7 @@ src/ ├── lineage.ts # CTE and query dependency extraction ├── ir.ts # graphs, diagnostics, confidence, and estate analysis ├── exporters.ts # Mermaid, draw.io, and narration output +├── workspace.ts # opt-in persistence + presentation-only dependency filtering └── app.ts # browser UI and workspace interaction dist/ # generated JavaScript and source maps ├── src/ @@ -531,6 +576,7 @@ tests/ ├── tsql-fixtures.ts ├── boundary.ts ├── parity.ts +├── workspace.ts ├── tests.ts ├── fuzz.ts ├── ui-tests.ts @@ -569,12 +615,13 @@ Then verify: 3. Generated `dist/` files match their TypeScript sources. 4. The Mermaid SHA-256 matches the value in this README and the workflow. 5. `npm run metrics` reports the metric snapshot is current. -6. `RELEASE_NOTE_v1.7.0.md` matches the final tag contents. -7. The complete archive opens locally with `index.html`. -8. The tag is named `v1.7.0`. +6. `RELEASE_NOTE_v1.8.0.md` matches the final tag contents. +7. The complete archive opens locally with `index.html`, and the local-file + smoke test reports the opt-in workspace assertion. +8. The tag is named `v1.8.0`. -The release can then be created manually from the `v1.7.0` tag using -[RELEASE_NOTE_v1.7.0.md](docs/RELEASE_NOTE_v1.7.0.md). +The release can then be created manually from the `v1.8.0` tag using +[RELEASE_NOTE_v1.8.0.md](docs/RELEASE_NOTE_v1.8.0.md). ## Roadmap after v1.0.0 @@ -585,6 +632,7 @@ The release can then be created manually from the `v1.7.0` tag using 5. Accept database catalogue metadata for more accurate object resolution. 6. Add column-level lineage where it can be resolved safely. 7. Add optional local workspace persistence and dependency filtering. + **Delivered in v1.8.0.** 8. Separate graph, transaction, and estate-analysis internals while preserving the v1.0.0 behavior through golden tests. **Delivered in v1.1.0.** diff --git a/dist/src/app.js b/dist/src/app.js index ad76a79..8636550 100644 --- a/dist/src/app.js +++ b/dist/src/app.js @@ -258,6 +258,66 @@ fanIn: $('opt-fanin').checked, sources: $('opt-sources').checked }; } + /* v1.8.0 dependency filtering — presentation only. currentFilter() reads the + filter panel and run() derives a filtered view at render time; the + underlying estate graph is never mutated. */ + function currentFilter() { + return { + reads: $('f-r').checked, + writes: $('f-w').checked, + calls: $('f-c').checked, + external: $('f-e').checked, + temp: $('f-t').checked, + focus: $('f-focus').value + }; + } + /* v1.8.0 workspace persistence — opt-in, versioned, exportable. Every input + that can change the analysis is captured so Restore reproduces an + identical analysis. */ + function snapshotOptions() { + var o = analysisOptions(); + return { + dialect: $('opt-dialect').value, + scope: $('opt-scope').value, + view: o.mode, + detail: o.detail, + dir: o.dir, + group: o.group, + number: o.number, + fanIn: o.fanIn, + sources: o.sources + }; + } + function applySnapshot(snap) { + var o = snap.options; + $('opt-dialect').value = o.dialect; + $('opt-scope').value = o.scope; + $('opt-view').value = o.view; + $('opt-detail').value = o.detail; + $('opt-dir').value = o.dir; + $('opt-group').checked = !!o.group; + $('opt-number').checked = !!o.number; + $('opt-fanin').checked = !!o.fanIn; + $('opt-sources').checked = !!o.sources; + workspaceFiles = (snap.files && snap.files.length) ? snap.files.slice() : null; + estate = null; + activeObjectId = snap.activeObjectId; + if (workspaceFiles && workspaceFiles.length) + sql.value = workspaceFiles[0].text; + drawGutter(); + run(); + } + function updateWsStatus() { + var el = $('ws-status'); + if (hasSavedWorkspace()) { + el.textContent = 'A workspace is saved in this browser. Use Restore to load it, Export to download it, or Forget to remove it.'; + el.classList.add('has'); + } + else { + el.textContent = 'No workspace is saved in this browser. Save is opt-in and local-only.'; + el.classList.remove('has'); + } + } function showDiagnostics(list, extra) { var lines = (list || []).map(function (d) { return d.message; }); if (extra) @@ -365,6 +425,8 @@ return; } var opts = analysisOptions(), object, result, scope = $('opt-scope').value; + /* v1.8.0: the dependency filter panel is only relevant in dependency scope. */ + $('filter-menu').style.display = scope === 'dependencies' ? '' : 'none'; try { if (!workspaceFiles) workspaceFiles = [{ name: 'Pasted SQL', text: text }]; @@ -381,7 +443,11 @@ return; } if (scope === 'dependencies') { - var dependencyCode = toMermaid(estate.graph, opts.dir || 'TD'); + /* v1.8.0 dependency filtering (presentation-only): derive a filtered + view at render time without touching estate.graph, so toggling a + filter or clearing the focus never changes the analysis. */ + var filtered = filterDependencyGraph(estate.graph, currentFilter()); + var dependencyCode = toMermaid(filtered, opts.dir || 'TD'); $('opt-view').disabled = true; $('lbl-group').style.display = 'none'; $('lbl-number').style.display = 'none'; @@ -399,11 +465,11 @@ showDiagnostics(estate.diagnostics); out.textContent = dependencyCode; lastCode = dependencyCode; - lastGraph = estate.graph; + lastGraph = filtered; lastResult = null; lastTitle = 'procflow-estate'; lastDirection = opts.dir || 'TD'; - render(dependencyCode, estate.graph); + render(dependencyCode, filtered); return; } $('opt-view').disabled = false; @@ -630,6 +696,23 @@ $('opt-number').onchange = run; $('opt-fanin').onchange = run; $('opt-scope').onchange = run; + /* v1.8.0 dependency filter controls (presentation-only; re-run derives a + new filtered view without touching estate.graph). */ + $('f-r').onchange = run; + $('f-w').onchange = run; + $('f-c').onchange = run; + $('f-e').onchange = run; + $('f-t').onchange = run; + $('f-focus').addEventListener('input', schedule); + $('btn-filter-reset').onclick = function () { + $('f-r').checked = true; + $('f-w').checked = true; + $('f-c').checked = true; + $('f-e').checked = true; + $('f-t').checked = true; + $('f-focus').value = ''; + run(); + }; $('object-select').onchange = function () { activeObjectId = this.value; loadObjectSource(activeObject()); @@ -685,6 +768,58 @@ a.click(); setTimeout(function () { URL.revokeObjectURL(a.href); }, 2000); }; + /* v1.8.0 workspace persistence — every action below is an explicit, opt-in + user action. Nothing is ever written to or read from storage on load. */ + $('btn-ws-save').onclick = function () { + var files = workspaceFiles || [{ name: 'Pasted SQL', text: sql.value }]; + var snap = buildWorkspaceSnapshot({ files: files, options: snapshotOptions(), + activeObjectId: activeObjectId }); + var ok = writeWorkspace(snap); + updateWsStatus(); + flash($('btn-ws-save'), ok ? 'Saved' : 'Save failed'); + }; + $('btn-ws-restore').onclick = function () { + var snap = readWorkspace(); + if (!snap) { + flash($('btn-ws-restore'), 'None saved'); + return; + } + applySnapshot(snap); + }; + $('btn-ws-export').onclick = function () { + var snap = readWorkspace(); + if (!snap) { + flash($('btn-ws-export'), 'Nothing saved'); + return; + } + var blob = new Blob([serializeWorkspace(snap)], { type: 'application/json' }); + var a = document.createElement('a'); + a.href = URL.createObjectURL(blob); + a.download = 'procflow-workspace.json'; + a.click(); + setTimeout(function () { URL.revokeObjectURL(a.href); }, 2000); + }; + $('btn-ws-forget').onclick = function () { + clearWorkspace(); + updateWsStatus(); + flash($('btn-ws-forget'), 'Forgotten'); + }; + $('btn-ws-import').onclick = function () { $('ws-file-input').click(); }; + $('ws-file-input').onchange = function () { + var file = (this.files && this.files[0]); + if (!file) + return; + file.text().then(function (text) { + var parsed = parseWorkspace(text); + if (parsed.error || !parsed.snapshot) { + showMsg('That file is not a valid ProcFlow workspace export.'); + return; + } + applySnapshot(parsed.snapshot); + updateWsStatus(); + }).catch(function (err) { showMsg('Could not read that workspace file: ' + err.message); }); + this.value = ''; + }; if (typeof mermaid !== 'undefined') { mermaid.initialize({ startOnLoad: false, theme: 'base', securityLevel: 'strict', @@ -697,10 +832,17 @@ }); } drawGutter(); + updateWsStatus(); + /* Local-only guarantee (v1.8.0): persistence is opt-in only — nothing is + written to or restored from storage on load. This attribute lets the + release smoke test assert the app initialises local-only. */ + document.documentElement.setAttribute('data-workspace-optin', '1'); document.documentElement.setAttribute('data-procflow-ready', String(typeof mermaid !== 'undefined' && typeof tokenize === 'function' && typeof detectDialect === 'function' && typeof analyse === 'function' && - typeof toDrawio === 'function')); + typeof toDrawio === 'function' && + typeof buildWorkspaceSnapshot === 'function' && + typeof filterDependencyGraph === 'function')); })(); //# sourceMappingURL=app.js.map \ No newline at end of file diff --git a/dist/src/app.js.map b/dist/src/app.js.map index 57ff37f..d7beaa8 100644 --- a/dist/src/app.js.map +++ b/dist/src/app.js.map @@ -1 +1 @@ -{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/src/workspace.js b/dist/src/workspace.js new file mode 100644 index 0000000..0a7b45c --- /dev/null +++ b/dist/src/workspace.js @@ -0,0 +1,243 @@ +"use strict"; +/* ===== v1.8.0 Usable local workspace (README post-v1.0.0 item 7) ===== + Optional local workspace persistence and dependency filtering. + + Persistence is opt-in: nothing is ever written to storage automatically. + Save, Restore, Export, Import, and Forget all require an explicit user + action. A saved snapshot is versioned (WORKSPACE_SCHEMA_VERSION) so a future + release can migrate it, and exportable so it never becomes locked to a + browser. Corrupt or malformed stored data is recovered rather than crashing + the app: parseWorkspace returns an error so the caller can drop it and + start clean. + + Dependency filtering is presentation-only: filterDependencyGraph derives a + filtered copy at render time and never mutates the underlying estate graph. + Disabling a filter changes the view only — never the analysis result. +*/ +var WORKSPACE_SCHEMA_VERSION = 1; +var WORKSPACE_STORAGE_KEY = 'procflow.workspace'; /* schema base key; versioned payload */ +var DIALECT_SELECT_ORDER = ['auto', 'tsql', 'db2', 'plpgsql', 'sqlite']; +function defaultWorkspaceOptions() { + return { + dialect: 'auto', + scope: 'internal', + view: 'auto', + detail: 'summary', + dir: 'TD', + group: true, + number: false, + fanIn: false, + sources: true + }; +} +/* Serialize the current in-memory workspace into a plain, JSON-safe, versioned + snapshot. The files array carries every source the estate needs, and options + carry every control that influences analysis, so an identical analysis is + guaranteed on Restore. */ +function buildWorkspaceSnapshot(state) { + var opt = { + dialect: String(state.options.dialect == null ? 'auto' : state.options.dialect), + scope: String(state.options.scope == null ? 'internal' : state.options.scope), + view: String(state.options.view == null ? 'auto' : state.options.view), + detail: String(state.options.detail == null ? 'summary' : state.options.detail), + dir: String(state.options.dir == null ? 'TD' : state.options.dir), + group: !!state.options.group, + number: !!state.options.number, + fanIn: !!state.options.fanIn, + sources: !!state.options.sources + }; + return { + version: WORKSPACE_SCHEMA_VERSION, + savedAt: new Date().toISOString(), + files: (state.files || []).map(function (f) { + return { name: String(f.name || ''), text: String(f.text == null ? '' : f.text) }; + }), + options: opt, + activeObjectId: state.activeObjectId || null + }; +} +function serializeWorkspace(snapshot) { + return JSON.stringify(snapshot); +} +/* Migrate an older-version payload forward to the current schema. Currently + only the initial schema exists, so migration is structural: repair missing + or wrong-shaped fields to current defaults. Future schema versions add their + step here (and bump WORKSPACE_SCHEMA_VERSION). */ +function migrateWorkspace(raw) { + var migrated = { + version: WORKSPACE_SCHEMA_VERSION, + savedAt: raw && raw.savedAt ? String(raw.savedAt) : new Date().toISOString(), + files: Array.isArray(raw && raw.files) ? raw.files.filter(function (f) { + return f && (typeof f.name === 'string') && f.text !== undefined; + }).map(function (f) { return { name: String(f.name), text: String(f.text) }; }) : [], + options: {} + }; + var d = defaultWorkspaceOptions(); + var src = raw && raw.options ? raw.options : {}; + migrated.options = { + dialect: DIALECT_SELECT_ORDER.indexOf(String(src.dialect)) >= 0 ? String(src.dialect) : d.dialect, + scope: ['internal', 'dependencies'].indexOf(String(src.scope)) >= 0 ? String(src.scope) : d.scope, + view: ['auto', 'flow', 'query'].indexOf(String(src.view)) >= 0 ? String(src.view) : d.view, + detail: ['summary', 'full'].indexOf(String(src.detail)) >= 0 ? String(src.detail) : d.detail, + dir: ['TD', 'LR'].indexOf(String(src.dir)) >= 0 ? String(src.dir) : d.dir, + group: src.group === undefined ? d.group : !!src.group, + number: src.number === undefined ? d.number : !!src.number, + fanIn: src.fanIn === undefined ? d.fanIn : !!src.fanIn, + sources: src.sources === undefined ? d.sources : !!src.sources + }; + migrated.activeObjectId = raw && raw.activeObjectId ? String(raw.activeObjectId) : null; + return migrated; +} +/* Parse a serialized or exported workspace string with corrupt-state recovery. + Returns {snapshot} on success, or {error} on corrupt/malformed input so the + caller can drop the bad state and start clean instead of crashing. */ +function parseWorkspace(json) { + var raw; + try { + raw = JSON.parse(String(json == null ? '' : json)); + } + catch (e) { + return { snapshot: null, migrated: false, error: 'corrupt_json' }; + } + if (!raw || typeof raw !== 'object' || Array.isArray(raw)) + return { snapshot: null, migrated: false, error: 'not_workspace' }; + var version = typeof raw.version === 'number' ? raw.version : 0; + var migrated = version !== WORKSPACE_SCHEMA_VERSION; + var snapshot = migrateWorkspace(raw); + if (!snapshot.files.length && !snapshot.activeObjectId) + return { snapshot: null, migrated: false, error: 'empty_workspace' }; + snapshot.version = WORKSPACE_SCHEMA_VERSION; + return { snapshot: snapshot, migrated: migrated }; +} +/* ---- local-only storage (opt-in, versioned) ---- */ +function readWorkspace() { + try { + var raw = window.localStorage.getItem(WORKSPACE_STORAGE_KEY); + if (!raw) + return null; + var parsed = parseWorkspace(raw); + if (parsed.error || !parsed.snapshot) { + try { + window.localStorage.removeItem(WORKSPACE_STORAGE_KEY); + } + catch (e) { } + return null; + } + return parsed.snapshot; + } + catch (e) { + return null; + } +} +function hasSavedWorkspace() { + try { + return !!window.localStorage.getItem(WORKSPACE_STORAGE_KEY); + } + catch (e) { + return false; + } +} +function writeWorkspace(snapshot) { + try { + window.localStorage.setItem(WORKSPACE_STORAGE_KEY, serializeWorkspace(snapshot)); + return true; + } + catch (e) { + return false; + } +} +function clearWorkspace() { + try { + window.localStorage.removeItem(WORKSPACE_STORAGE_KEY); + } + catch (e) { } +} +function workspaceExportText() { + var snap = readWorkspace(); + return snap ? serializeWorkspace(snap) : ''; +} +/* ===== v1.8.0 dependency filtering (presentation-only) ===== */ +function defaultWorkspaceFilter() { + return { reads: true, writes: true, calls: true, external: true, temp: true, focus: '' }; +} +/* Derive a filtered view of the dependency graph. Never mutates the input: + the returned object contains fresh node/edge arrays (shallow-cloned nodes), + so toggling a filter cannot change the underlying estate graph or any later + export. An edge is shown only when its semantic kind passes the matching + toggle and both endpoints survive node-kind filtering. A non-empty focus + keeps matching nodes plus their immediate neighbours (one hop). */ +function filterDependencyGraph(graph, filter) { + var f = { + reads: filter && filter.reads !== undefined ? filter.reads : true, + writes: filter && filter.writes !== undefined ? filter.writes : true, + calls: filter && filter.calls !== undefined ? filter.calls : true, + external: filter && filter.external !== undefined ? filter.external : true, + temp: filter && filter.temp !== undefined ? filter.temp : true, + focus: filter && filter.focus ? String(filter.focus) : '' + }; + if (!graph || !graph.nodes || !graph.nodes.length) + return { nodes: [], edges: [], stats: graph && graph.stats || {} }; + var keep = {}; + graph.nodes.forEach(function (n) { + if (n.provenance === 'external' && !f.external) + return; + if (n.provenance === 'synthetic' && !f.temp) + return; + keep[n.id] = 1; + }); + var focus = String(f.focus || '').trim().toUpperCase(); + if (focus) { + var matched = {}; + var neighbour = {}; + graph.nodes.forEach(function (n) { + if (keep[n.id] && (String(n.text || '').toUpperCase().indexOf(focus) >= 0 || + String(n.objectId || '').toUpperCase().indexOf(focus) >= 0)) + matched[n.id] = 1; + }); + if (focus && !Object.keys(matched).length) { + /* A focus that matches nothing shows no neighbourhood. */ + return { nodes: [], edges: [], stats: graph.stats, empty: true }; + } + graph.edges.forEach(function (e) { + if (matched[e.from]) + neighbour[e.to] = 1; + if (matched[e.to]) + neighbour[e.from] = 1; + }); + var narrowed = {}; + graph.nodes.forEach(function (n) { + if (keep[n.id] && (matched[n.id] || neighbour[n.id])) + narrowed[n.id] = 1; + }); + keep = narrowed; + } + var nodes = (graph.nodes || []).filter(function (n) { + return keep[n.id] === 1; + }).map(function (n) { + var c = {}; + for (var k in n) + c[k] = n[k]; + return c; + }); + function edgePass(e) { + if (e.kind === 'data') + return !!f.writes; + if (e.kind === 'call') + return !!f.calls; + if (e.kind === 'dependency') + return !!f.reads; + return true; + } + var edges = (graph.edges || []).filter(function (e) { + return keep[e.from] === 1 && keep[e.to] === 1 && edgePass(e); + }).map(function (e) { + var c = {}; + for (var k in e) + c[k] = e[k]; + return c; + }); + /* Stats are presentation-independent: keep the original estate stats so a + filter never changes what the analysis reports, only what the view draws. */ + return { nodes: nodes, edges: edges, stats: graph.stats }; +} +//# sourceMappingURL=workspace.js.map \ No newline at end of file diff --git a/dist/src/workspace.js.map b/dist/src/workspace.js.map new file mode 100644 index 0000000..4dc770d --- /dev/null +++ b/dist/src/workspace.js.map @@ -0,0 +1 @@ +{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/workspace.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/metrics.js b/dist/tests/metrics.js index 388dffe..f2afc31 100644 --- a/dist/tests/metrics.js +++ b/dist/tests/metrics.js @@ -1,11 +1,12 @@ "use strict"; -/* v1.7.0 — fixture-corpus metric publishing. +/* v1.8.0 — fixture-corpus metric publishing. Aggregates the "Metrics that matter" over the checked-in golden corpus, including the v1.7.0 export-parity, export-traceability, and layout-budget - pass rates reported by tests/parity.ts. + pass rates reported by tests/parity.ts, plus the v1.8.0 workspace + persistence/dependency-filtering pass rate from tests/workspace.ts. Purely deterministic and fixture-only: no user inputs and no runtime telemetry are ever collected. scripts/metrics.mjs drives this page to - produce or verify docs/metrics-v1.7.0.json. */ + produce or verify docs/metrics-v1.8.0.json. */ (function () { var corpus = PROCFLOW_FIXTURES || []; var totalTokens = 0, attributedAll = 0, unresolvedTokens = 0, opaqueTokens = 0, tailUnconsumed = 0; @@ -84,9 +85,11 @@ `npm run metrics:write`; CI then refuses to merge a stale snapshot. */ golden: corpus.length, fuzz: 400, - ui: 16, + ui: 20, parity: window.PROCFLOW_PARITY_RESULT ? window.PROCFLOW_PARITY_RESULT.total / 2 : 0, - layout: window.PROCFLOW_LAYOUT_RESULT ? window.PROCFLOW_LAYOUT_RESULT.total : 0 + layout: window.PROCFLOW_LAYOUT_RESULT ? window.PROCFLOW_LAYOUT_RESULT.total : 0, + workspace: window.PROCFLOW_WORKSPACE_RESULT + ? window.PROCFLOW_WORKSPACE_RESULT.total : 0 }, attributionRate: rate(attributedAll, totalTokens), unresolvedTokenRate: rate(unresolvedTokens, totalTokens), @@ -109,6 +112,12 @@ layoutBudgetPassRate: window.PROCFLOW_LAYOUT_RESULT ? rate(window.PROCFLOW_LAYOUT_RESULT.passed, window.PROCFLOW_LAYOUT_RESULT.total) : 0, + /* v1.8.0 usable local workspace: persistence round-trip, migration, + corrupt recovery, explicit clearing, and presentation-only dependency + filtering all pass on the checked-in fixture corpus. */ + workspacePassRate: window.PROCFLOW_WORKSPACE_RESULT + ? rate(window.PROCFLOW_WORKSPACE_RESULT.passed, window.PROCFLOW_WORKSPACE_RESULT.total) + : 0, aggregate: { totalTokens: totalTokens, accountedTokens: attributedAll, diff --git a/dist/tests/metrics.js.map b/dist/tests/metrics.js.map index 51fea1c..265f07a 100644 --- a/dist/tests/metrics.js.map +++ b/dist/tests/metrics.js.map @@ -1 +1 @@ -{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../tests/metrics.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../tests/metrics.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/tests.js b/dist/tests/tests.js index 3c71615..708e997 100644 --- a/dist/tests/tests.js +++ b/dist/tests/tests.js @@ -781,6 +781,18 @@ record('v1.7.0 export-parity fixtures round-trip from both exporters', false, String(err && err.stack || err)); record('v1.7.0 layout budget fixtures (deterministic, no overlap, budgets)', false, String(err && err.stack || err)); } + /* v1.8.0: usable local workspace — persistence round-trip, migration, + corrupt recovery, explicit clearing, and presentation-only dependency + filtering run ahead in tests/workspace.ts; gate the whole golden page on + them. */ + try { + record('v1.8.0 workspace persistence, migration, clear, and filter fixtures', window.PROCFLOW_WORKSPACE_PASS === true && + !!window.PROCFLOW_WORKSPACE_RESULT && + window.PROCFLOW_WORKSPACE_RESULT.passed === window.PROCFLOW_WORKSPACE_RESULT.total, window.PROCFLOW_WORKSPACE_RESULT); + } + catch (err) { + record('v1.8.0 workspace persistence, migration, clear, and filter fixtures', false, String(err && err.stack || err)); + } var passed = results.filter(function (r) { return r.pass; }).length; document.body.className = passed === results.length ? 'pass' : 'fail'; document.getElementById('summary').textContent = passed + '/' + results.length + ' tests passed'; diff --git a/dist/tests/tests.js.map b/dist/tests/tests.js.map index be6d6f4..3343591 100644 --- a/dist/tests/tests.js.map +++ b/dist/tests/tests.js.map @@ -1 +1 @@ -{"version":3,"file":"tests.js","sourceRoot":"","sources":["../../tests/tests.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tests.js","sourceRoot":"","sources":["../../tests/tests.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/ui-tests.js b/dist/tests/ui-tests.js index 2e24fe9..0daf171 100644 --- a/dist/tests/ui-tests.js +++ b/dist/tests/ui-tests.js @@ -136,6 +136,68 @@ pass: !!w.mermaid && !Array.prototype.some.call(d.scripts, function (s) { return /^https?:/i.test(s.getAttribute('src') || ''); }) }); + /* v1.8.0 usable local workspace — dependency filtering and opt-in + persistence (save → restore identical, explicit clear). */ + w.clearWorkspace(); + var depSource = [ + 'CREATE VIEW dbo.dep_view AS SELECT id FROM dbo.student;', + 'GO', + 'CREATE PROC dbo.dep_proc AS', + 'BEGIN', + ' EXEC dbo.dep_callee;', + ' UPDATE dbo.student SET x = 1;', + ' SELECT id FROM dbo.dep_view;', + 'END' + ].join('\n'); + get('sql').value = depSource; + get('sql').dispatchEvent(new Event('input')); + get('btn-draw').click(); + get('object-select').options.length; /* analyse estate */ + get('opt-scope').value = 'dependencies'; + get('opt-scope').dispatchEvent(new Event('change')); + var filterShown = get('filter-menu').style.display !== 'none'; + var fullDep = get('mermaid-out').textContent; + get('f-w').checked = false; + get('f-w').dispatchEvent(new Event('change')); + var filteredDep = get('mermaid-out').textContent; + get('btn-filter-reset').click(); + var resetDep = get('mermaid-out').textContent; + results.push({ name: 'dependency filter panel shows only in dependency scope', + pass: filterShown && fullDep.length > 0, + detail: { shown: filterShown, full: fullDep.slice(0, 80) } }); + results.push({ name: 'dependency filtering is presentation-only in the UI', + pass: fullDep !== filteredDep && filteredDep.length < fullDep.length && + resetDep === fullDep, + detail: { full: fullDep.slice(0, 120), filtered: filteredDep.slice(0, 120), + reset: resetDep.slice(0, 120) } }); + var persistenceSource = [ + 'CREATE PROC dbo.ws_persist AS', + 'BEGIN', + ' SELECT 1;', + 'END' + ].join('\n'); + get('opt-scope').value = 'internal'; + get('opt-scope').dispatchEvent(new Event('change')); + get('opt-dialect').value = 'tsql'; + get('sql').value = persistenceSource; + get('sql').dispatchEvent(new Event('input')); + get('btn-draw').click(); + var capturedCode = get('mermaid-out').textContent; + get('btn-ws-save').click(); + get('sql').value = 'SELECT changed;'; + get('sql').dispatchEvent(new Event('input')); + get('btn-draw').click(); + get('btn-ws-restore').click(); + var restoredCode = get('mermaid-out').textContent; + results.push({ name: 'opt-in save then restore reproduces identical analysis', + pass: get('sql').value.indexOf('ws_persist') >= 0 && capturedCode === restoredCode, + detail: { captured: capturedCode.slice(0, 80), restored: restoredCode.slice(0, 80), + sql: get('sql').value.slice(0, 60) } }); + get('btn-ws-forget').click(); + results.push({ name: 'forgetting a saved workspace is explicit', + pass: w.hasSavedWorkspace() === false && + /No workspace is saved/i.test(get('ws-status').textContent || ''), + detail: { saved: w.hasSavedWorkspace(), status: get('ws-status').textContent } }); finish(results); }, 1200); }); diff --git a/dist/tests/ui-tests.js.map b/dist/tests/ui-tests.js.map index a149c6e..3dc5048 100644 --- a/dist/tests/ui-tests.js.map +++ b/dist/tests/ui-tests.js.map @@ -1 +1 @@ -{"version":3,"file":"ui-tests.js","sourceRoot":"","sources":["../../tests/ui-tests.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ui-tests.js","sourceRoot":"","sources":["../../tests/ui-tests.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tests/workspace.js b/dist/tests/workspace.js new file mode 100644 index 0000000..7e5cf9b --- /dev/null +++ b/dist/tests/workspace.js @@ -0,0 +1,214 @@ +"use strict"; +/* proc>flow v1.8.0 — usable local workspace (README post-v1.0.0 item 7). + Fixtures for the two v1.8.0 features: + 1. Persistence — opt-in, versioned, exportable. Save → reload reproduces + an identical analysis; schema-version migration and corrupt-state + recovery behave; clearing is explicit. + 2. Dependency filtering — presentation-only. A filter derives a filtered + view at render time and never mutates the underlying analysis graph. + The pure serialization, migration, and filtering logic is unit-tested here; + browser-storage round-trips (write/read/clear) are exercised when the test + page runs in a browser that provides localStorage. + + After this suite runs, PROCFLOW_WORKSPACE_PASS and PROCFLOW_WORKSPACE_RESULT + gate the golden suite (tests/tests.ts) and feed the fixture-corpus metrics. */ +(function () { + var results = []; + function record(name, pass, detail) { + results.push({ name: name, pass: pass, detail: pass ? '' : detail }); + } + function clone(o) { return JSON.parse(JSON.stringify(o)); } + var src = [ + 'CREATE VIEW dbo.export_students AS SELECT id FROM dbo.student;', + 'GO', + 'CREATE PROCEDURE dbo.refresh_students AS', + 'BEGIN', + ' EXEC dbo.audit_refresh;', + ' UPDATE dbo.student SET refreshed = 1;', + ' SELECT id FROM dbo.export_students;', + 'END' + ].join('\n'); + var files = [{ name: 'report.sql', text: src }]; + var optionsRecord = { + dialect: 'tsql', scope: 'dependencies', view: 'flow', detail: 'full', + dir: 'LR', group: true, number: true, fanIn: true, sources: true + }; + var activeObjectId = 'object-2'; + /* optsFromSnapshot mirrors app.ts's analysisOptions() so a restored snapshot + can be re-analysed identically. */ + function optsFromSnapshot(snap) { + var o = snap.options; + return { dialect: o.dialect, mode: o.view, + dir: o.dir, detail: o.detail, + group: o.group, number: o.number, fanIn: o.fanIn, sources: o.sources }; + } + function graphKey(graph) { + return JSON.stringify([graph.nodes, graph.edges]); + } + try { + var snap = buildWorkspaceSnapshot({ files: files, options: optionsRecord, + activeObjectId: activeObjectId }); + var serialized = serializeWorkspace(snap); + var parsed = parseWorkspace(serialized); + record('v1.8.0 snapshot round-trip preserves every field', parsed.snapshot !== null && !parsed.error && parsed.migrated === false && + parsed.snapshot.version === snap.version && + parsed.snapshot.files.length === 1 && + parsed.snapshot.files[0].name === 'report.sql' && + parsed.snapshot.files[0].text === src && + parsed.snapshot.options.dialect === 'tsql' && + parsed.snapshot.options.scope === 'dependencies' && + parsed.snapshot.options.view === 'flow' && + parsed.snapshot.options.detail === 'full' && + parsed.snapshot.options.dir === 'LR' && + parsed.snapshot.options.group === true && + parsed.snapshot.options.number === true && + parsed.snapshot.options.fanIn === true && + parsed.snapshot.options.sources === true && + parsed.snapshot.activeObjectId === 'object-2' && + parsed.snapshot.files[0].text === snap.files[0].text, { serialized: serialized }); + record('v1.8.0 save → reload reproduces an identical analysis', (function () { + var r1 = analyseEstate(files, optsFromSnapshot(snap)); + if (!parsed.error && parsed.snapshot) { + var r2 = analyseEstate(parsed.snapshot.files, optsFromSnapshot(parsed.snapshot)); + return graphKey(r1.graph) === graphKey(r2.graph) && + JSON.stringify(r1.objects) === JSON.stringify(r2.objects) && + JSON.stringify(r1.diagnostics) === JSON.stringify(r2.diagnostics); + } + return false; + })(), { graph: (parsed.snapshot ? graphKey(analyseEstate(parsed.snapshot.files, optsFromSnapshot(parsed.snapshot)).graph) : ''), + graph2: (parsed.snapshot ? graphKey(analyseEstate(files, optsFromSnapshot(snap)).graph) : '') }); + } + catch (err) { + record('v1.8.0 snapshot round-trip preserves every field', false, String(err && err.stack || err)); + record('v1.8.0 save → reload reproduces an identical analysis', false, String(err && err.stack || err)); + } + /* Schema-version migration: older/missing versions + missing option fields + migrate forward to the current schema with safe defaults. */ + try { + var legacyRaw = JSON.stringify({ savedAt: '2026-01-01T00:00:00.000Z', + files: [{ name: 'old.sql', text: 'SELECT 1;' }], + options: { dialect: 'tsql', scope: 'internal' } }); + var legacy = parseWorkspace(legacyRaw); + record('v1.8.0 older-version snapshots migrate forward with defaults', !!legacy.snapshot && legacy.migrated === true && legacy.snapshot.version === WORKSPACE_SCHEMA_VERSION && + legacy.snapshot.options.view === 'auto' && + legacy.snapshot.options.group === true && + legacy.snapshot.options.sources === true && + legacy.snapshot.files[0].name === 'old.sql', legacy); + record('v1.8.0 current-version snapshots are not migrated', (function () { + var cur = parseWorkspace(serializeWorkspace(buildWorkspaceSnapshot({ files: files, options: optionsRecord, activeObjectId: null }))); + return cur.snapshot !== null && cur.migrated === false; + })()); + } + catch (err) { + record('v1.8.0 older-version snapshots migrate forward with defaults', false, String(err && err.stack || err)); + record('v1.8.0 current-version snapshots are not migrated', false, String(err && err.stack || err)); + } + /* Corrupt-state recovery: bad input yields an error and no snapshot. */ + try { + var corruptJson = parseWorkspace('{not valid json'); + var corruptType = parseWorkspace('[1,2,3]'); + var corruptEmpty = parseWorkspace(JSON.stringify({ version: 1, files: [], activeObjectId: null })); + record('v1.8.0 corrupt-state recovery returns an error instead of throwing', corruptJson.error === 'corrupt_json' && corruptJson.snapshot === null && + corruptType.error === 'not_workspace' && corruptType.snapshot === null && + corruptEmpty.error === 'empty_workspace' && corruptEmpty.snapshot === null, { corruptJson: corruptJson, corruptType: corruptType, corruptEmpty: corruptEmpty }); + } + catch (err) { + record('v1.8.0 corrupt-state recovery returns an error instead of throwing', false, String(err && err.stack || err)); + } + /* Browser-storage round-trip (opt-in save/restore), exercised only when the + page runs somewhere localStorage is available. Clearing is explicit. */ + try { + var storageAvailable = true; + try { + var probe = window.localStorage.getItem('procflow.probe'); + } + catch (e) { + storageAvailable = false; + } + if (storageAvailable) { + clearWorkspace(); + var before = hasSavedWorkspace(); + var wrote = writeWorkspace(snap); + var read = readWorkspace(); + var stored = hasSavedWorkspace(); + clearWorkspace(); + var after = hasSavedWorkspace(); + record('v1.8.0 opt-in storage round-trip and explicit clear', wrote === true && before === false && stored === true && + !!read && read.files.length === 1 && read.files[0].name === 'report.sql' && + after === false, { wrote: wrote, before: before, stored: stored, + read: read && read.files && read.files[0] && read.files[0].name, after: after }); + } + else { + record('v1.8.0 opt-in storage round-trip and explicit clear', true, 'localStorage unavailable in this environment; skipped'); + } + } + catch (err) { + record('v1.8.0 opt-in storage round-trip and explicit clear', false, String(err && err.stack || err)); + } + /* Dependency filtering — presentation only. Build a synthetic dependency + graph spanning object (source), external, and temp (synthetic) nodes with + data/dependency/call edges, then assert each toggle and that the input + graph is never mutated. */ + try { + var da = 'da', db = 'db', de = 'de', dt = 'dt'; + var depGraph = { + nodes: [ + { id: da, shape: 'rect', text: 'alpha', cls: 'call', source: null, objectId: 'object-1', provenance: 'source' }, + { id: db, shape: 'rect', text: 'beta', cls: 'call', source: null, objectId: 'object-2', provenance: 'source' }, + { id: de, shape: 'io', text: 'external: server.dbo.t', cls: 'src', source: null, objectId: 'server.dbo.t', provenance: 'external' }, + { id: dt, shape: 'io', text: '#tmp', cls: 'src', source: null, objectId: null, provenance: 'synthetic', reason: 'temporary table placeholder' } + ], + edges: [ + { from: da, to: dt, label: 'writes', style: 'dotted', kind: 'data' }, + { from: dt, to: db, label: 'reads', style: 'solid', kind: 'dependency' }, + { from: da, to: de, label: 'reads', style: 'solid', kind: 'dependency' }, + { from: db, to: de, label: 'calls', style: 'solid', kind: 'call' } + ], + stats: { objects: 2, external: 1, reads: 2, writes: 1, calls: 1 } + }; + var baseline = clone(depGraph); + var allOn = filterDependencyGraph(depGraph, null); + var noWrites = filterDependencyGraph(depGraph, { writes: false }); + var noExternal = filterDependencyGraph(depGraph, { external: false }); + var noTemp = filterDependencyGraph(depGraph, { temp: false }); + var focusAlpha = filterDependencyGraph(depGraph, { focus: 'alpha' }); + var noneMatch = filterDependencyGraph(depGraph, { focus: 'zzz' }); + record('v1.8.0 dependency filter default shows the whole graph', allOn.nodes.length === 4 && allOn.edges.length === 4, { nodes: allOn.nodes.length, edges: allOn.edges.length }); + record('v1.8.0 dependency filter hides write edges without dropping nodes', noWrites.edges.length === 3 && + !noWrites.edges.some(function (e) { return e.kind === 'data'; }) && + noWrites.nodes.length === 4, { nodes: noWrites.nodes.length, edges: noWrites.edges.length, + kinds: noWrites.edges.map(function (e) { return e.kind; }) }); + record('v1.8.0 dependency filter drops external nodes and their incident edges', noExternal.nodes.length === 3 && noExternal.edges.length === 2 && + !noExternal.nodes.some(function (n) { return n.provenance === 'external'; }), { nodes: noExternal.nodes.length, + edges: noExternal.edges.map(function (e) { return e.kind; }) }); + record('v1.8.0 dependency filter drops temp-table nodes and their incident edges', noTemp.nodes.length === 3 && noTemp.edges.length === 2 && + !noTemp.nodes.some(function (n) { return n.provenance === 'synthetic'; }), { nodes: noTemp.nodes.length, + edges: noTemp.edges.map(function (e) { return e.kind; }) }); + record('v1.8.0 dependency filter focus keeps the matching neighbourhood', (function () { + var ids = focusAlpha.nodes.map(function (n) { return n.id; }).sort(); + return focusAlpha.nodes.length === 3 && + ids.indexOf(da) >= 0 && ids.indexOf(de) >= 0 && ids.indexOf(dt) >= 0 && + ids.indexOf(db) < 0 && + focusAlpha.edges.length === 2; + })(), { nodes: focusAlpha.nodes.map(function (n) { return n.id; }).sort(), + edges: focusAlpha.edges }); + record('v1.8.0 a focus matching nothing shows an empty view', noneMatch.nodes.length === 0 && noneMatch.edges.length === 0, { nodes: noneMatch.nodes.length, edges: noneMatch.edges.length }); + record('v1.8.0 dependency filtering never mutates the analysis graph', JSON.stringify(baseline) === JSON.stringify(depGraph) && + allOn.nodes !== depGraph.nodes && allOn.edges !== depGraph.edges, { unchanged: JSON.stringify(baseline) === JSON.stringify(depGraph), + sameNodeRef: allOn.nodes === depGraph.nodes, + sameEdgeRef: allOn.edges === depGraph.edges }); + } + catch (err) { + record('v1.8.0 dependency filter default shows the whole graph', false, String(err && err.stack || err)); + record('v1.8.0 dependency filter hides write edges without dropping nodes', false, String(err && err.stack || err)); + record('v1.8.0 dependency filter drops external nodes and their incident edges', false, String(err && err.stack || err)); + record('v1.8.0 dependency filter drops temp-table nodes and their incident edges', false, String(err && err.stack || err)); + record('v1.8.0 dependency filter focus keeps the matching neighbourhood', false, String(err && err.stack || err)); + record('v1.8.0 a focus matching nothing shows an empty view', false, String(err && err.stack || err)); + record('v1.8.0 dependency filtering never mutates the analysis graph', false, String(err && err.stack || err)); + } + var passed = results.filter(function (r) { return r.pass; }).length; + window.PROCFLOW_WORKSPACE_RESULT = { passed: passed, total: results.length }; + window.PROCFLOW_WORKSPACE_PASS = passed === results.length; +})(); +//# sourceMappingURL=workspace.js.map \ No newline at end of file diff --git a/dist/tests/workspace.js.map b/dist/tests/workspace.js.map new file mode 100644 index 0000000..5dd21f3 --- /dev/null +++ b/dist/tests/workspace.js.map @@ -0,0 +1 @@ +{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../tests/workspace.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/docs/PR_NOTE_1.8.0.md b/docs/PR_NOTE_1.8.0.md new file mode 100644 index 0000000..848851c --- /dev/null +++ b/docs/PR_NOTE_1.8.0.md @@ -0,0 +1,100 @@ +# PR: v1.8.0 — Usable local workspace + +## Summary + +Implements the **v1.8.0 — Usable local workspace** milestone from `ROADMAP.md` +in full and nothing from v1.9.0 onwards: README post-v1.0.0 item 7 — **optional +local workspace persistence** (opt-in, versioned, exportable) and +**dependency filtering** (presentation-only) — plus the updated +security/privacy documentation and the extended local-only CI check. The golden +suite grows from 206 to 207; fuzz (400) stays green; the UI suite grows from 16 +to 20; workspace fixtures (13) cover save→reload identity, migration, corrupt +recovery, explicit clearing, and non-mutating filters. Catalogue rotation, +column lineage, and RDL remain deferred. + +## What's included + +### Opt-in, versioned, exportable workspace persistence + +`src/workspace.ts` (a new runtime module loaded before `app.js`) adds a +versioned workspace schema (`WORKSPACE_SCHEMA_VERSION = 1`) and the +serialization/migration/storage layer: + +- `buildWorkspaceSnapshot` / `serializeWorkspace` capture every input that can + change the analysis — the workspace files plus the analysis/UI options — so a + Restore reproduces an identical analysis. +- `parseWorkspace` performs corrupt-state recovery: malformed or wrong-shaped + stored data yields an explicit error (never a crash) so the caller drops it + and starts clean. +- `migrateWorkspace` repairs older/missing versions and missing option fields + forward to the current schema with safe defaults. +- `readWorkspace` / `writeWorkspace` / `hasSavedWorkspace` / `clearWorkspace` + confine browser `localStorage` access to this opt-in module — the only place + in the runtime that touches storage. + +The **Workspace** menu in `index.html` exposes Save, Restore, Export file, +Import file, and Forget. Everything is an explicit user action: the app never +writes to or restores from storage on load (verified by the release smoke test +and the extended local-only CI check). + +### Presentation-only dependency filtering + +`filterDependencyGraph` in `src/workspace.ts` derives a filtered copy of the +dependency graph at render time and never mutates the underlying estate graph +(the filtered node/edge arrays are fresh objects, and stats are left intact): + +- edge-kind toggles (Reads / Writes / Calls) by semantic `kind`; +- node-kind toggles (External objects, Temp tables) by provenance; +- a Focus box that keeps a matching node plus its immediate neighbours. + +`app.ts` applies the filter only in the **Object dependencies** scope; the +**Filter dependencies** panel is hidden elsewhere. The export (`Save draw.io` / +`Save SVG`) reflects the currently displayed (filtered) view, while the +analysis graph, confidence, coverage, and diagnostics are unchanged. + +### Security / privacy and local-only documentation + CI + +- The `index.html` privacy disclosure and README security table now describe + opt-in persistence honestly: nothing is saved unless the user chooses Save, + and saved workspaces are local-only, exportable, and clearable. +- `scripts/file-smoke.mjs` (the local-file release smoke test) now additionally + asserts the app initialises with `data-workspace-optin="1"`, i.e. persistence + is declared opt-in on load. +- The CI "Check runtime remains local-only" step is extended to also reject + network-submission APIs and to confirm that `localStorage` is only touched by + `src/workspace.ts`. + +## Fixtures and tests + +- `tests/workspace.ts` (+ `tests/index.html`, `tests/metrics.html` wiring) — 13 + fixture-corpus records covering round-trip fidelity, save→reload identity, + migration (older versions and missing fields), corrupt-state recovery, + opt-in storage round-trip + explicit clear, and non-mutating filters (edge, + external, temp, focus, and no-match). Gates the golden page via + `PROCFLOW_WORKSPACE_PASS`. +- `tests/ui-tests.ts` — 4 new browser tests: the filter panel shows only in + dependency scope, filtering is presentation-only in the UI, opt-in save → + restore reproduces an identical analysis, and forgetting is explicit. +- `tests/metrics.ts` → `docs/metrics-v1.8.0.json` — adds `workspacePassRate` + and the `workspace` corpus count (13/13). +- `examples/dbo.v180_demo.sql` — a multi-object demo exercising both features. + +## Verification + +- `npm run typecheck` — passes +- `npm run build` — passes +- `npm run test:file` — passes (with `CHROME_PATH` set; includes the new + opt-in/local-only assertion) +- Golden suite — 207/207 (was 206) +- Fuzz suite — 400 deterministic mutation cases +- UI suite — 20/20 (was 16) +- `npm run metrics` — snapshot is current; `docs/metrics-v1.8.0.json` committed + (v1.7.0 snapshot renamed) +- Extended local-only check clean; `dist/` committed in sync + +## Not changed / deferred (per roadmap) + +- Everything from v1.9.0 onwards — catalogue resolution, column lineage, and + RDL — is out of scope for this release. +- Existing v1.1.0–v1.7.0 semantics are untouched; all prior fixtures remain + green. diff --git a/docs/RELEASE_NOTE_v1.8.0.md b/docs/RELEASE_NOTE_v1.8.0.md new file mode 100644 index 0000000..a6afc7c --- /dev/null +++ b/docs/RELEASE_NOTE_v1.8.0.md @@ -0,0 +1,95 @@ +# proc>flow v1.8.0 — Usable local workspace + +**Release date:** 2026-08-08 + +ProcFlow v1.8.0 makes the browser workspace usable across sessions. You can +**persist** your work so a reload brings back an identical analysis, and you +can **filter** the object-dependency diagram down to the objects that matter. + +Persistence is optional, opt-in, versioned, and exportable. Nothing is saved +to your browser unless you choose **Save to this browser** in the **Workspace** +menu, and saved workspaces are local-only, clearable, and portable as a JSON +file. Dependency filtering is presentation-only: it changes the view you look +at and export, never the underlying analysis graph or its confidence, coverage, +and diagnostics. + +The release remains local-first: SQL is analysed entirely in the browser and is +not uploaded, executed, or automatically persisted. + +## Highlights + +- **Opt-in workspace persistence.** The **Workspace** menu lets you Save to + this browser, Restore a saved workspace, Export/Import a workspace file, and + Forget a saved workspace. A Restore replays the exact files and analysis + options, so **save → reload produces an identical analysis**. +- **Versioned and migratable.** Stored workspaces carry a schema version; + older or incomplete snapshots migrate forward with safe defaults instead of + being dropped. +- **Corrupt-state recovery.** Malformed or unreadable stored data is recovered + cleanly — ProcFlow starts fresh rather than crashing or misloading. +- **Dependency filtering.** In **Object dependencies** scope, the + **Filter dependencies** panel toggles Reads/Writes/Calls edge kinds and + External/Temp node kinds, plus a Focus box that keeps an object and its + direct neighbours. Filtering is presentation-only — the analysis graph is + never changed. +- **Honest local-only guarantees.** The privacy disclosure, README, release + smoke test, and CI now state and verify that nothing is written to or + restored from storage on load; storage is confined to the opt-in + persistence module. + +## Correctness baseline + +- TypeScript type-checking and a clean generated build; +- 207 golden, graph, dependency, exporter, provenance, boundary, diagnostic, + confidence, export-parity, layout, and workspace tests; +- 400 deterministic mutation cases; +- 20 browser interaction and local-runtime tests; +- workspace persistence/filtering fixtures 13/13, export parity 20/20, layout + budgets 11/11, export traceability 69/69; and +- the fixture-corpus metric snapshot in `docs/metrics-v1.8.0.json`: 100 % + attribution, 100 % semantic-edge coverage, 100 % provenance, 100 % region-span + ratio, 100 % export-parity, 100 % export-traceability, 100 % layout budgets, + and 100 % workspace pass rate. + +GitHub Actions also checks that generated JavaScript is current, the vendored +Mermaid runtime remains pinned, runtime application files contain no external +URLs or network-submission APIs, browser storage is confined to the opt-in +persistence module, the local-file smoke test passes, and the metric snapshot +is current. + +## Compatibility and upgrade notes + +- **No automatic migration of your data — because there wasn't any.** ProcFlow + still does not persist anything unless you opt in. When you next use + **Save to this browser**, a v1.8.0-versioned snapshot is written; earlier + releases never wrote one. +- Exported `.drawio` files from v1.7.0 remain valid; nothing in the export + format changed. +- The local-only browser security model is unchanged. + +## Security and privacy (v1.8.0) + +- Nothing is uploaded, executed, or sent to any API. +- **Workspace persistence is opt-in and local:** a saved workspace lives only + in this browser's `localStorage`, is written only when you choose + **Save to this browser**, and is removed by **Forget saved workspace**. +- Saved workspaces are exportable as a JSON file and importable again, so they + never become locked to a single browser. +- The runtime touches storage in exactly one place — the opt-in persistence + module — and the release smoke test and CI assert that nothing is read or + written on load. + +## Known limitations + +- Parsing is heuristic rather than compiler-grade. +- Dynamic SQL remains opaque. +- Persistence uses the browser's `localStorage`; clearing browser site data + removes a saved workspace, and a saved workspace is not shared across + different browsers, profiles, or machines unless you export/import the file. +- Catalogue resolution, column lineage, and RDL remain scheduled for later + releases. + +Verify critical dependencies, execution paths, transaction behavior, and +security conclusions against the original SQL and target database. + +See [README.md](../README.md) for usage and development guidance. diff --git a/docs/metrics-v1.7.0.json b/docs/metrics-v1.8.0.json similarity index 89% rename from docs/metrics-v1.7.0.json rename to docs/metrics-v1.8.0.json index 590f9ce..92fd7fb 100644 --- a/docs/metrics-v1.7.0.json +++ b/docs/metrics-v1.8.0.json @@ -4,9 +4,10 @@ "corpus": { "golden": 107, "fuzz": 400, - "ui": 16, + "ui": 20, "parity": 10, - "layout": 11 + "layout": 11, + "workspace": 13 }, "attributionRate": 1, "unresolvedTokenRate": 0.04432, @@ -19,6 +20,7 @@ "exportParityPassRate": 1, "exportTraceabilityRate": 1, "layoutBudgetPassRate": 1, + "workspacePassRate": 1, "aggregate": { "totalTokens": 2685, "accountedTokens": 2685, diff --git a/examples/dbo.v180_demo.sql b/examples/dbo.v180_demo.sql new file mode 100644 index 0000000..93aff59 --- /dev/null +++ b/examples/dbo.v180_demo.sql @@ -0,0 +1,62 @@ +/* + v1.8.0 demo — usable local workspace. + + This multi-object script exercises the v1.8.0 territory (README post-v1.0.0 + item 7) in one script so you can try both new features in one pane: + + 1. Dependency filtering. Switch Scope to "Object dependencies", then use + Filter dependencies to inspect the estate: + - toggle Reads / Writes / Calls to hide a whole edge family; + - toggle External objects to hide the unmatched three-part name; + - toggle Temp tables to hide the "#stage" placeholder; + - type "stage" or "export" into Focus to keep only that object and its + direct neighbours. + Filtering is presentation-only: the underlying analysis graph is never + changed, so toggling a filter or clearing the focus never alters the + reported confidence, coverage, or diagnostics for the estate. + + 2. Persistence. Use the Workspace menu (opt-in, versioned, exportable): + - Save to this browser persists this workspace (files + analysis + options) to local storage; + - Restore saved workspace replays it into an identical analysis; + - Export workspace file / Import workspace file transfer it as JSON; + - Forget saved workspace removes it explicitly. + Nothing is written to or restored from storage on load. + + This demo is an illustration, not an input to the fixture-corpus metrics + (docs/metrics-v1.8.0.json). No user input or runtime telemetry is collected. +*/ +CREATE VIEW dbo.v180_export AS +SELECT Id, Name FROM dbo.Student; + +GO + +CREATE PROCEDURE dbo.v180_process @Year INT +AS +BEGIN + SET NOCOUNT ON; + + -- Reads dbo.v180_export, writes #stage (a temp-table placeholder). + SELECT Id INTO #stage FROM dbo.v180_export WHERE SchoolYear = @Year; + + -- Reads #stage, writes dbo.Student. + UPDATE s + SET s.Archived = 1 + FROM #stage st + JOIN dbo.Student s ON s.Id = st.Id; + + -- Calls a known object and an unmatched external three-part name. + EXEC dbo.v180_audit @Year; + SELECT Id FROM remotesrv.salesdb.dbo.SharedTable; + + RETURN 0; +END; + +GO + +CREATE PROCEDURE dbo.v180_audit @Year INT +AS +BEGIN + -- Reads only; no collaborators, so it is an isolated estate node. + SELECT COUNT(*) FROM dbo.Student WHERE SchoolYear = @Year; +END; diff --git a/index.html b/index.html index 6636f85..9371768 100644 --- a/index.html +++ b/index.html @@ -22,6 +22,9 @@

proc>flow

Your SQL stays in this browser. Procflow does not upload SQL, connect to a database, or send it to an API. Imported files remain in this tab and are discarded when it closes. + Workspace persistence is opt-in: nothing is saved to this browser unless + you choose Save in the Workspace menu, and saved workspaces are local-only, + exportable, and clearable.
@@ -135,6 +138,33 @@

proc>flow

+
+ Workspace +
+

+ + + + + + +
+
+
@@ -162,6 +192,7 @@

proc>flow

+ diff --git a/package-lock.json b/package-lock.json index 5699484..555b27f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "procflow", - "version": "1.7.0", + "version": "1.8.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "procflow", - "version": "1.7.0", + "version": "1.8.0", "devDependencies": { "typescript": "5.9.3" } diff --git a/package.json b/package.json index 6b31a90..71a1d75 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "procflow", - "version": "1.7.0", + "version": "1.8.0", "private": true, "description": "Local-first SQL control-flow and dependency visualiser", "scripts": { diff --git a/scripts/file-smoke.mjs b/scripts/file-smoke.mjs index fb1a33b..0969605 100644 --- a/scripts/file-smoke.mjs +++ b/scripts/file-smoke.mjs @@ -91,6 +91,12 @@ if (!existsSync(smokePage)) { fail(`browser exited with status ${result.status}`, result.stderr || output); } else if (!/data-procflow-ready="true"/.test(output)) { fail("application did not initialize its local runtime", output || result.stderr); + } else if (!/data-workspace-optin="1"/.test(output)) { + /* v1.8.0 extended local-only check: the app must initialise with + workspace persistence marked opt-in. Nothing is written to or + restored from browser storage on load — Save/Restore/Forget are the + only storage touchpoints and each needs an explicit user action. */ + fail("application did not declare opt-in workspace persistence (data-workspace-optin missing)", output || result.stderr); } else { console.log(`file smoke: application and local runtime loaded (${fileUrl})`); } diff --git a/scripts/metrics.mjs b/scripts/metrics.mjs index a362fb7..ba9de75 100644 --- a/scripts/metrics.mjs +++ b/scripts/metrics.mjs @@ -1,4 +1,4 @@ -/* Fixture-corpus metric publishing (v1.7.0). +/* Fixture-corpus metric publishing (v1.8.0). Runs tests/metrics.html headlessly, extracts the deterministic, fixture-only metric snapshot, and either writes it (--write) or verifies the checked-in snapshot is still current (default). Uses the same browser discovery and @@ -11,7 +11,7 @@ import { fileURLToPath, pathToFileURL } from "node:url"; const repositoryRoot = dirname(dirname(fileURLToPath(import.meta.url))); const metricsPage = join(repositoryRoot, "tests", "metrics.html"); -const snapshotFile = join(repositoryRoot, "docs", "metrics-v1.7.0.json"); +const snapshotFile = join(repositoryRoot, "docs", "metrics-v1.8.0.json"); const writeMode = process.argv.includes("--write"); const explicitBrowser = (process.env.CHROME_PATH || "").trim(); diff --git a/src/app.ts b/src/app.ts index df2aa84..b90a85e 100644 --- a/src/app.ts +++ b/src/app.ts @@ -254,6 +254,65 @@ }; } + /* v1.8.0 dependency filtering — presentation only. currentFilter() reads the + filter panel and run() derives a filtered view at render time; the + underlying estate graph is never mutated. */ + function currentFilter(): WorkspaceFilter { + return { + reads:$('f-r').checked, + writes:$('f-w').checked, + calls:$('f-c').checked, + external:$('f-e').checked, + temp:$('f-t').checked, + focus:$('f-focus').value + }; + } + + /* v1.8.0 workspace persistence — opt-in, versioned, exportable. Every input + that can change the analysis is captured so Restore reproduces an + identical analysis. */ + function snapshotOptions(): WorkspaceSnapshot['options'] { + var o=analysisOptions(); + return { + dialect:$('opt-dialect').value, + scope:$('opt-scope').value, + view:o.mode, + detail:o.detail, + dir:o.dir, + group:o.group, + number:o.number, + fanIn:o.fanIn, + sources:o.sources + }; + } + function applySnapshot(snap: WorkspaceSnapshot): void { + var o=snap.options; + $('opt-dialect').value=o.dialect; + $('opt-scope').value=o.scope; + $('opt-view').value=o.view; + $('opt-detail').value=o.detail; + $('opt-dir').value=o.dir; + $('opt-group').checked=!!o.group; + $('opt-number').checked=!!o.number; + $('opt-fanin').checked=!!o.fanIn; + $('opt-sources').checked=!!o.sources; + workspaceFiles=(snap.files&&snap.files.length)?snap.files.slice():null; + estate=null; activeObjectId=snap.activeObjectId; + if(workspaceFiles&&workspaceFiles.length) sql.value=workspaceFiles[0].text; + drawGutter(); + run(); + } + function updateWsStatus(): void { + var el=$('ws-status'); + if(hasSavedWorkspace()){ + el.textContent='A workspace is saved in this browser. Use Restore to load it, Export to download it, or Forget to remove it.'; + el.classList.add('has'); + }else{ + el.textContent='No workspace is saved in this browser. Save is opt-in and local-only.'; + el.classList.remove('has'); + } + } + function showDiagnostics(list: Diagnostic[], extra?: string): void { var lines=(list||[]).map(function(d){ return d.message; }); if(extra) lines.push(extra); @@ -356,6 +415,8 @@ return; } var opts=analysisOptions(), object, result, scope=$('opt-scope').value; + /* v1.8.0: the dependency filter panel is only relevant in dependency scope. */ + $('filter-menu').style.display=scope==='dependencies'?'':'none'; try{ if(!workspaceFiles) workspaceFiles=[{name:'Pasted SQL',text:text}]; estate=analyseEstate(workspaceFiles,opts); @@ -370,7 +431,11 @@ } if(scope==='dependencies'){ - var dependencyCode=toMermaid(estate.graph,opts.dir||'TD'); + /* v1.8.0 dependency filtering (presentation-only): derive a filtered + view at render time without touching estate.graph, so toggling a + filter or clearing the focus never changes the analysis. */ + var filtered=filterDependencyGraph(estate.graph,currentFilter()); + var dependencyCode=toMermaid(filtered,opts.dir||'TD'); $('opt-view').disabled=true; $('lbl-group').style.display='none'; $('lbl-number').style.display='none'; @@ -387,9 +452,9 @@ setConstructCoverage(estateCoverage); showDiagnostics(estate.diagnostics); out.textContent=dependencyCode; - lastCode=dependencyCode; lastGraph=estate.graph; lastResult=null; + lastCode=dependencyCode; lastGraph=filtered; lastResult=null; lastTitle='procflow-estate'; lastDirection=opts.dir||'TD'; - render(dependencyCode,estate.graph); + render(dependencyCode,filtered); return; } @@ -588,6 +653,16 @@ $('opt-dir').onchange=run; $('opt-detail').onchange=run; $('opt-group').onchange=run; $('opt-dialect').onchange=run; $('opt-view').onchange=run; $('opt-sources').onchange=run; $('opt-number').onchange=run; $('opt-fanin').onchange=run; $('opt-scope').onchange=run; + /* v1.8.0 dependency filter controls (presentation-only; re-run derives a + new filtered view without touching estate.graph). */ + $('f-r').onchange=run; $('f-w').onchange=run; $('f-c').onchange=run; + $('f-e').onchange=run; $('f-t').onchange=run; + $('f-focus').addEventListener('input',schedule); + $('btn-filter-reset').onclick=function(){ + $('f-r').checked=true; $('f-w').checked=true; $('f-c').checked=true; + $('f-e').checked=true; $('f-t').checked=true; $('f-focus').value=''; + run(); + }; $('object-select').onchange=function(){ activeObjectId=this.value; loadObjectSource(activeObject()); @@ -635,6 +710,52 @@ setTimeout(function(){ URL.revokeObjectURL(a.href); },2000); }; + /* v1.8.0 workspace persistence — every action below is an explicit, opt-in + user action. Nothing is ever written to or read from storage on load. */ + $('btn-ws-save').onclick=function(){ + var files=workspaceFiles||[{name:'Pasted SQL',text:sql.value}]; + var snap=buildWorkspaceSnapshot({files:files,options:snapshotOptions(), + activeObjectId:activeObjectId}); + var ok=writeWorkspace(snap); + updateWsStatus(); + flash($('btn-ws-save'),ok?'Saved':'Save failed'); + }; + $('btn-ws-restore').onclick=function(){ + var snap=readWorkspace(); + if(!snap){ flash($('btn-ws-restore'),'None saved'); return; } + applySnapshot(snap); + }; + $('btn-ws-export').onclick=function(){ + var snap=readWorkspace(); + if(!snap){ flash($('btn-ws-export'),'Nothing saved'); return; } + var blob=new Blob([serializeWorkspace(snap)],{type:'application/json'}); + var a=document.createElement('a'); + a.href=URL.createObjectURL(blob); + a.download='procflow-workspace.json'; + a.click(); + setTimeout(function(){ URL.revokeObjectURL(a.href); },2000); + }; + $('btn-ws-forget').onclick=function(){ + clearWorkspace(); + updateWsStatus(); + flash($('btn-ws-forget'),'Forgotten'); + }; + $('btn-ws-import').onclick=function(){ $('ws-file-input').click(); }; + $('ws-file-input').onchange=function(){ + var file=(this.files&&this.files[0]); + if(!file) return; + file.text().then(function(text){ + var parsed=parseWorkspace(text); + if(parsed.error||!parsed.snapshot){ + showMsg('That file is not a valid ProcFlow workspace export.'); + return; + } + applySnapshot(parsed.snapshot); + updateWsStatus(); + }).catch(function(err){ showMsg('Could not read that workspace file: '+err.message); }); + this.value=''; + }; + if(typeof mermaid!=='undefined'){ mermaid.initialize({ startOnLoad:false, theme:'base', securityLevel:'strict', @@ -647,12 +768,19 @@ }); } drawGutter(); + updateWsStatus(); + /* Local-only guarantee (v1.8.0): persistence is opt-in only — nothing is + written to or restored from storage on load. This attribute lets the + release smoke test assert the app initialises local-only. */ + document.documentElement.setAttribute('data-workspace-optin','1'); document.documentElement.setAttribute('data-procflow-ready',String( typeof mermaid!=='undefined'&& typeof tokenize==='function'&& typeof detectDialect==='function'&& typeof analyse==='function'&& - typeof toDrawio==='function' + typeof toDrawio==='function'&& + typeof buildWorkspaceSnapshot==='function'&& + typeof filterDependencyGraph==='function' )); })(); diff --git a/src/types.d.ts b/src/types.d.ts index 99c2611..e3df53a 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -479,6 +479,41 @@ interface EstateResult { diagnostics: Diagnostic[]; } +/* v1.8.0 — usable local workspace (README post-v1.0.0 item 7). + Persistence is opt-in, versioned, and exportable. A snapshot captures every + input needed to reproduce an identical analysis: the workspace files plus + the analysis/UI options. The schema is versioned so future releases can + migrate stored workspaces instead of dropping them. */ +interface WorkspaceSnapshot { + version: number; + savedAt: string; + files: WorkspaceFile[]; + options: { + dialect: string; + scope: string; + view: string; + detail: string; + dir: string; + group: boolean; + number: boolean; + fanIn: boolean; + sources: boolean; + }; + activeObjectId: string | null; +} + +/* v1.8.0 — presentation-only dependency filtering. Filters derive a filtered + graph at render time and must never mutate the underlying estate graph: + disabling a filter affects the view only, never the analysis result. */ +interface WorkspaceFilter { + reads?: boolean; + writes?: boolean; + calls?: boolean; + external?: boolean; + temp?: boolean; + focus?: string; +} + interface FixtureExpectation { mode?: 'flow' | 'query'; branch?: number; @@ -560,6 +595,24 @@ interface Window { PROCFLOW_PARITY_FAILURES?: string[]; PROCFLOW_LAYOUT_PASS?: boolean; PROCFLOW_LAYOUT_RESULT?: {passed: number; total: number}; + /* v1.8.0 workspace-persistence / dependency-filtering suite results, + published for the golden and metrics pages. */ + PROCFLOW_WORKSPACE_PASS?: boolean; + PROCFLOW_WORKSPACE_RESULT?: { + passed: number; + total: number; + }; + /* v1.8.0 opt-in workspace persistence globals (src/workspace.ts), exposed for + the browser UI tests. */ + clearWorkspace(): void; + hasSavedWorkspace(): boolean; + readWorkspace(): WorkspaceSnapshot | null; + writeWorkspace(snapshot: WorkspaceSnapshot): boolean; + buildWorkspaceSnapshot(state: { + files: WorkspaceFile[]; + options: Record; + activeObjectId: string | null; + }): WorkspaceSnapshot; } declare var mermaid: Window['mermaid']; \ No newline at end of file diff --git a/src/workspace.ts b/src/workspace.ts new file mode 100644 index 0000000..4019b98 --- /dev/null +++ b/src/workspace.ts @@ -0,0 +1,239 @@ +/* ===== v1.8.0 Usable local workspace (README post-v1.0.0 item 7) ===== + Optional local workspace persistence and dependency filtering. + + Persistence is opt-in: nothing is ever written to storage automatically. + Save, Restore, Export, Import, and Forget all require an explicit user + action. A saved snapshot is versioned (WORKSPACE_SCHEMA_VERSION) so a future + release can migrate it, and exportable so it never becomes locked to a + browser. Corrupt or malformed stored data is recovered rather than crashing + the app: parseWorkspace returns an error so the caller can drop it and + start clean. + + Dependency filtering is presentation-only: filterDependencyGraph derives a + filtered copy at render time and never mutates the underlying estate graph. + Disabling a filter changes the view only — never the analysis result. +*/ +var WORKSPACE_SCHEMA_VERSION = 1; +var WORKSPACE_STORAGE_KEY = 'procflow.workspace'; /* schema base key; versioned payload */ + +var DIALECT_SELECT_ORDER = ['auto','tsql','db2','plpgsql','sqlite']; + +function defaultWorkspaceOptions(): WorkspaceSnapshot['options'] { + return { + dialect:'auto', + scope:'internal', + view:'auto', + detail:'summary', + dir:'TD', + group:true, + number:false, + fanIn:false, + sources:true + }; +} + +/* Serialize the current in-memory workspace into a plain, JSON-safe, versioned + snapshot. The files array carries every source the estate needs, and options + carry every control that influences analysis, so an identical analysis is + guaranteed on Restore. */ +function buildWorkspaceSnapshot(state: { + files: WorkspaceFile[]; + options: Record; + activeObjectId: string | null; +}): WorkspaceSnapshot { + var opt: WorkspaceSnapshot['options'] = { + dialect:String(state.options.dialect==null?'auto':state.options.dialect), + scope:String(state.options.scope==null?'internal':state.options.scope), + view:String(state.options.view==null?'auto':state.options.view), + detail:String(state.options.detail==null?'summary':state.options.detail), + dir:String(state.options.dir==null?'TD':state.options.dir), + group:!!state.options.group, + number:!!state.options.number, + fanIn:!!state.options.fanIn, + sources:!!state.options.sources + }; + return { + version:WORKSPACE_SCHEMA_VERSION, + savedAt:new Date().toISOString(), + files:(state.files||[]).map(function(f){ + return {name:String(f.name||''), text:String(f.text==null?'':f.text)}; + }), + options:opt, + activeObjectId:state.activeObjectId||null + }; +} + +function serializeWorkspace(snapshot: WorkspaceSnapshot): string { + return JSON.stringify(snapshot); +} + +/* Migrate an older-version payload forward to the current schema. Currently + only the initial schema exists, so migration is structural: repair missing + or wrong-shaped fields to current defaults. Future schema versions add their + step here (and bump WORKSPACE_SCHEMA_VERSION). */ +function migrateWorkspace(raw: any): WorkspaceSnapshot { + var migrated = { + version:WORKSPACE_SCHEMA_VERSION, + savedAt:raw&&raw.savedAt?String(raw.savedAt):new Date().toISOString(), + files:Array.isArray(raw&&raw.files)?raw.files.filter(function(f){ + return f&&(typeof f.name==='string')&&f.text!==undefined; + }).map(function(f){ return {name:String(f.name), text:String(f.text)}; }):[], + options:{} + } as WorkspaceSnapshot; + var d=defaultWorkspaceOptions(); + var src=raw&&raw.options?raw.options:{}; + migrated.options={ + dialect:DIALECT_SELECT_ORDER.indexOf(String(src.dialect))>=0?String(src.dialect):d.dialect, + scope:['internal','dependencies'].indexOf(String(src.scope))>=0?String(src.scope):d.scope, + view:['auto','flow','query'].indexOf(String(src.view))>=0?String(src.view):d.view, + detail:['summary','full'].indexOf(String(src.detail))>=0?String(src.detail):d.detail, + dir:['TD','LR'].indexOf(String(src.dir))>=0?String(src.dir):d.dir, + group:src.group===undefined?d.group:!!src.group, + number:src.number===undefined?d.number:!!src.number, + fanIn:src.fanIn===undefined?d.fanIn:!!src.fanIn, + sources:src.sources===undefined?d.sources:!!src.sources + }; + migrated.activeObjectId=raw&&raw.activeObjectId?String(raw.activeObjectId):null; + return migrated; +} + +/* Parse a serialized or exported workspace string with corrupt-state recovery. + Returns {snapshot} on success, or {error} on corrupt/malformed input so the + caller can drop the bad state and start clean instead of crashing. */ +function parseWorkspace(json: string): {snapshot: WorkspaceSnapshot | null; migrated: boolean; error?: string} { + var raw: any; + try { + raw=JSON.parse(String(json==null?'':json)); + }catch(e){ + return {snapshot:null,migrated:false,error:'corrupt_json'}; + } + if(!raw||typeof raw!=='object'||Array.isArray(raw)) + return {snapshot:null,migrated:false,error:'not_workspace'}; + var version=typeof raw.version==='number'?raw.version:0; + var migrated=version!==WORKSPACE_SCHEMA_VERSION; + var snapshot=migrateWorkspace(raw); + if(!snapshot.files.length&&!snapshot.activeObjectId) + return {snapshot:null,migrated:false,error:'empty_workspace'}; + snapshot.version=WORKSPACE_SCHEMA_VERSION; + return {snapshot:snapshot,migrated:migrated}; +} + +/* ---- local-only storage (opt-in, versioned) ---- */ +function readWorkspace(): WorkspaceSnapshot | null { + try { + var raw=window.localStorage.getItem(WORKSPACE_STORAGE_KEY); + if(!raw) return null; + var parsed=parseWorkspace(raw); + if(parsed.error||!parsed.snapshot){ + try { window.localStorage.removeItem(WORKSPACE_STORAGE_KEY); } catch(e){} + return null; + } + return parsed.snapshot; + }catch(e){ + return null; + } +} + +function hasSavedWorkspace(): boolean { + try { return !!window.localStorage.getItem(WORKSPACE_STORAGE_KEY); } catch(e){ return false; } +} + +function writeWorkspace(snapshot: WorkspaceSnapshot): boolean { + try { + window.localStorage.setItem(WORKSPACE_STORAGE_KEY,serializeWorkspace(snapshot)); + return true; + }catch(e){ + return false; + } +} + +function clearWorkspace(): void { + try { window.localStorage.removeItem(WORKSPACE_STORAGE_KEY); } catch(e){} +} + +function workspaceExportText(): string { + var snap=readWorkspace(); + return snap?serializeWorkspace(snap):''; +} + +/* ===== v1.8.0 dependency filtering (presentation-only) ===== */ +function defaultWorkspaceFilter(): WorkspaceFilter { + return {reads:true,writes:true,calls:true,external:true,temp:true,focus:''}; +} + +/* Derive a filtered view of the dependency graph. Never mutates the input: + the returned object contains fresh node/edge arrays (shallow-cloned nodes), + so toggling a filter cannot change the underlying estate graph or any later + export. An edge is shown only when its semantic kind passes the matching + toggle and both endpoints survive node-kind filtering. A non-empty focus + keeps matching nodes plus their immediate neighbours (one hop). */ +function filterDependencyGraph(graph: Graph, filter?: WorkspaceFilter): Graph { + var f: WorkspaceFilter={ + reads:filter&&filter.reads!==undefined?filter.reads:true, + writes:filter&&filter.writes!==undefined?filter.writes:true, + calls:filter&&filter.calls!==undefined?filter.calls:true, + external:filter&&filter.external!==undefined?filter.external:true, + temp:filter&&filter.temp!==undefined?filter.temp:true, + focus:filter&&filter.focus?String(filter.focus):'' + }; + if(!graph||!graph.nodes||!graph.nodes.length) + return {nodes:[],edges:[],stats:graph&&graph.stats||{}}; + + var keep: Record={}; + graph.nodes.forEach(function(n){ + if(n.provenance==='external'&&!f.external) return; + if(n.provenance==='synthetic'&&!f.temp) return; + keep[n.id]=1; + }); + + var focus=String(f.focus||'').trim().toUpperCase(); + if(focus){ + var matched: Record={}; + var neighbour: Record={}; + graph.nodes.forEach(function(n){ + if(keep[n.id]&&(String(n.text||'').toUpperCase().indexOf(focus)>=0|| + String(n.objectId||'').toUpperCase().indexOf(focus)>=0)) + matched[n.id]=1; + }); + if(focus&&!Object.keys(matched).length){ + /* A focus that matches nothing shows no neighbourhood. */ + return {nodes:[],edges:[],stats:graph.stats,empty:true}; + } + graph.edges.forEach(function(e){ + if(matched[e.from]) neighbour[e.to]=1; + if(matched[e.to]) neighbour[e.from]=1; + }); + var narrowed: Record={}; + graph.nodes.forEach(function(n){ + if(keep[n.id]&&(matched[n.id]||neighbour[n.id])) narrowed[n.id]=1; + }); + keep=narrowed; + } + + var nodes=(graph.nodes||[]).filter(function(n){ + return keep[n.id]===1; + }).map(function(n){ + var c: any={}; + for(var k in n) c[k]=n[k]; + return c; + }); + + function edgePass(e: GraphEdge): boolean { + if(e.kind==='data') return !!f.writes; + if(e.kind==='call') return !!f.calls; + if(e.kind==='dependency') return !!f.reads; + return true; + } + + var edges=(graph.edges||[]).filter(function(e){ + return keep[e.from]===1&&keep[e.to]===1&&edgePass(e); + }).map(function(e){ + var c: any={}; + for(var k in e) c[k]=e[k]; + return c; + }); + + /* Stats are presentation-independent: keep the original estate stats so a + filter never changes what the analysis reports, only what the view draws. */ + return {nodes:nodes, edges:edges, stats:graph.stats}; +} diff --git a/styles.css b/styles.css index 46616ca..5536d4d 100644 --- a/styles.css +++ b/styles.css @@ -192,6 +192,18 @@ input[type=checkbox]{accent-color:var(--marigold);width:14px;height:14px} .settings-panel{display:grid;gap:4px} .settings-panel .opt{padding:7px 8px;border-radius:3px;white-space:nowrap} .settings-panel .opt:hover{background:#20333f;color:var(--ink)} +.workspace-actions{display:grid;gap:3px;min-width:250px} +.filter-panel{min-width:230px} +.filter-panel .opt{white-space:normal} +.filter-panel .filter-focus input{ + width:100%;margin-top:4px;padding:6px 7px;border:1px solid var(--rule); + border-radius:3px;background:#11222d;color:var(--ink);font-family:var(--mono) +} +.ws-note{ + margin:0 0 6px;padding:7px 8px;border-radius:3px;background:#11222d; + color:var(--ink-soft,#9fb2bf);font-size:10.5px;line-height:1.45 +} +.ws-note.has{border-left:2px solid var(--marigold)} .export-actions{display:grid;gap:3px} .menu-action{ width:100%;padding:8px 9px;border:0;border-radius:3px;background:transparent; @@ -272,4 +284,4 @@ footer{flex:0 0 auto;padding:6px 16px;color:var(--ink-faint);font-size:10.5px; .output-head .opt select{min-width:0;max-width:120px} } @media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}} - + diff --git a/tests/index.html b/tests/index.html index 6c0d892..8de799f 100644 --- a/tests/index.html +++ b/tests/index.html @@ -20,6 +20,7 @@

proc>flow golden tests

+ @@ -28,6 +29,7 @@

proc>flow golden tests

+ diff --git a/tests/metrics.html b/tests/metrics.html index f1174e0..5886fe0 100644 --- a/tests/metrics.html +++ b/tests/metrics.html @@ -10,7 +10,7 @@ -

proc>flow fixture-corpus metrics (v1.7.0)

+

proc>flow fixture-corpus metrics (v1.8.0)

Running…

Deterministic, fixture-only aggregates of the "Metrics that matter". No user inputs or runtime telemetry are collected.

@@ -20,6 +20,7 @@

proc>flow fixture-corpus metrics (v1.7.0)

+ @@ -28,6 +29,7 @@

proc>flow fixture-corpus metrics (v1.7.0)

+ diff --git a/tests/metrics.ts b/tests/metrics.ts index 5d7ff78..367c674 100644 --- a/tests/metrics.ts +++ b/tests/metrics.ts @@ -1,10 +1,11 @@ -/* v1.7.0 — fixture-corpus metric publishing. +/* v1.8.0 — fixture-corpus metric publishing. Aggregates the "Metrics that matter" over the checked-in golden corpus, including the v1.7.0 export-parity, export-traceability, and layout-budget - pass rates reported by tests/parity.ts. + pass rates reported by tests/parity.ts, plus the v1.8.0 workspace + persistence/dependency-filtering pass rate from tests/workspace.ts. Purely deterministic and fixture-only: no user inputs and no runtime telemetry are ever collected. scripts/metrics.mjs drives this page to - produce or verify docs/metrics-v1.7.0.json. */ + produce or verify docs/metrics-v1.8.0.json. */ (function(){ var corpus=PROCFLOW_FIXTURES||[]; @@ -75,9 +76,11 @@ `npm run metrics:write`; CI then refuses to merge a stale snapshot. */ golden:corpus.length, fuzz:400, - ui:16, + ui:20, parity:window.PROCFLOW_PARITY_RESULT?window.PROCFLOW_PARITY_RESULT.total/2:0, - layout:window.PROCFLOW_LAYOUT_RESULT?window.PROCFLOW_LAYOUT_RESULT.total:0 + layout:window.PROCFLOW_LAYOUT_RESULT?window.PROCFLOW_LAYOUT_RESULT.total:0, + workspace:window.PROCFLOW_WORKSPACE_RESULT + ?window.PROCFLOW_WORKSPACE_RESULT.total:0 }, attributionRate:rate(attributedAll,totalTokens), unresolvedTokenRate:rate(unresolvedTokens,totalTokens), @@ -101,6 +104,12 @@ layoutBudgetPassRate:window.PROCFLOW_LAYOUT_RESULT ? rate(window.PROCFLOW_LAYOUT_RESULT.passed,window.PROCFLOW_LAYOUT_RESULT.total) : 0, + /* v1.8.0 usable local workspace: persistence round-trip, migration, + corrupt recovery, explicit clearing, and presentation-only dependency + filtering all pass on the checked-in fixture corpus. */ + workspacePassRate:window.PROCFLOW_WORKSPACE_RESULT + ? rate(window.PROCFLOW_WORKSPACE_RESULT.passed,window.PROCFLOW_WORKSPACE_RESULT.total) + : 0, aggregate:{ totalTokens:totalTokens, accountedTokens:attributedAll, diff --git a/tests/tests.ts b/tests/tests.ts index 630eb1d..bb86008 100644 --- a/tests/tests.ts +++ b/tests/tests.ts @@ -886,6 +886,21 @@ false,String(err&&err.stack||err)); } + /* v1.8.0: usable local workspace — persistence round-trip, migration, + corrupt recovery, explicit clearing, and presentation-only dependency + filtering run ahead in tests/workspace.ts; gate the whole golden page on + them. */ + try{ + record('v1.8.0 workspace persistence, migration, clear, and filter fixtures', + window.PROCFLOW_WORKSPACE_PASS===true&& + !!window.PROCFLOW_WORKSPACE_RESULT&& + window.PROCFLOW_WORKSPACE_RESULT.passed===window.PROCFLOW_WORKSPACE_RESULT.total, + window.PROCFLOW_WORKSPACE_RESULT); + }catch(err){ + record('v1.8.0 workspace persistence, migration, clear, and filter fixtures', + false,String(err&&err.stack||err)); + } + var passed=results.filter(function(r){return r.pass;}).length; document.body.className=passed===results.length?'pass':'fail'; document.getElementById('summary').textContent=passed+'/'+results.length+' tests passed'; diff --git a/tests/ui-tests.ts b/tests/ui-tests.ts index 2991da8..2929f83 100644 --- a/tests/ui-tests.ts +++ b/tests/ui-tests.ts @@ -140,6 +140,70 @@ pass:!!w.mermaid&&!Array.prototype.some.call(d.scripts,function(s){ return /^https?:/i.test(s.getAttribute('src')||''); })}); + + /* v1.8.0 usable local workspace — dependency filtering and opt-in + persistence (save → restore identical, explicit clear). */ + w.clearWorkspace(); + var depSource=[ + 'CREATE VIEW dbo.dep_view AS SELECT id FROM dbo.student;', + 'GO', + 'CREATE PROC dbo.dep_proc AS', + 'BEGIN', + ' EXEC dbo.dep_callee;', + ' UPDATE dbo.student SET x = 1;', + ' SELECT id FROM dbo.dep_view;', + 'END' + ].join('\n'); + get('sql').value=depSource; + get('sql').dispatchEvent(new Event('input')); + get('btn-draw').click(); + get('object-select').options.length; /* analyse estate */ + get('opt-scope').value='dependencies'; + get('opt-scope').dispatchEvent(new Event('change')); + var filterShown=get('filter-menu').style.display!=='none'; + var fullDep=get('mermaid-out').textContent; + get('f-w').checked=false; + get('f-w').dispatchEvent(new Event('change')); + var filteredDep=get('mermaid-out').textContent; + get('btn-filter-reset').click(); + var resetDep=get('mermaid-out').textContent; + results.push({name:'dependency filter panel shows only in dependency scope', + pass:filterShown&&fullDep.length>0, + detail:{shown:filterShown,full:fullDep.slice(0,80)}}); + results.push({name:'dependency filtering is presentation-only in the UI', + pass:fullDep!==filteredDep&&filteredDep.length=0&&capturedCode===restoredCode, + detail:{captured:capturedCode.slice(0,80),restored:restoredCode.slice(0,80), + sql:get('sql').value.slice(0,60)}}); + get('btn-ws-forget').click(); + results.push({name:'forgetting a saved workspace is explicit', + pass:w.hasSavedWorkspace()===false&& + /No workspace is saved/i.test(get('ws-status').textContent||''), + detail:{saved:w.hasSavedWorkspace(),status:get('ws-status').textContent}}); finish(results); },1200); }); diff --git a/tests/workspace.ts b/tests/workspace.ts new file mode 100644 index 0000000..a0ab393 --- /dev/null +++ b/tests/workspace.ts @@ -0,0 +1,247 @@ +/* proc>flow v1.8.0 — usable local workspace (README post-v1.0.0 item 7). + Fixtures for the two v1.8.0 features: + 1. Persistence — opt-in, versioned, exportable. Save → reload reproduces + an identical analysis; schema-version migration and corrupt-state + recovery behave; clearing is explicit. + 2. Dependency filtering — presentation-only. A filter derives a filtered + view at render time and never mutates the underlying analysis graph. + The pure serialization, migration, and filtering logic is unit-tested here; + browser-storage round-trips (write/read/clear) are exercised when the test + page runs in a browser that provides localStorage. + + After this suite runs, PROCFLOW_WORKSPACE_PASS and PROCFLOW_WORKSPACE_RESULT + gate the golden suite (tests/tests.ts) and feed the fixture-corpus metrics. */ +(function(){ + var results: Array<{name: string; pass: boolean; detail: unknown}>=[]; + function record(name: string, pass: boolean, detail?: unknown): void { + results.push({name:name,pass:pass,detail:pass?'':detail}); + } + function clone(o: any): any { return JSON.parse(JSON.stringify(o)); } + + var src = [ + 'CREATE VIEW dbo.export_students AS SELECT id FROM dbo.student;', + 'GO', + 'CREATE PROCEDURE dbo.refresh_students AS', + 'BEGIN', + ' EXEC dbo.audit_refresh;', + ' UPDATE dbo.student SET refreshed = 1;', + ' SELECT id FROM dbo.export_students;', + 'END' + ].join('\n'); + var files: WorkspaceFile[]=[{name:'report.sql',text:src}]; + var optionsRecord: Record={ + dialect:'tsql', scope:'dependencies', view:'flow', detail:'full', + dir:'LR', group:true, number:true, fanIn:true, sources:true + }; + var activeObjectId='object-2'; + + /* optsFromSnapshot mirrors app.ts's analysisOptions() so a restored snapshot + can be re-analysed identically. */ + function optsFromSnapshot(snap: WorkspaceSnapshot): AnalyseOptions { + var o=snap.options; + return {dialect:o.dialect as DialectChoice, mode:o.view as DiagramMode, + dir:o.dir as DiagramDirection, detail:o.detail as any, + group:o.group, number:o.number, fanIn:o.fanIn, sources:o.sources}; + } + function graphKey(graph: Graph): string { + return JSON.stringify([graph.nodes,graph.edges]); + } + + try{ + var snap=buildWorkspaceSnapshot({files:files,options:optionsRecord, + activeObjectId:activeObjectId}); + var serialized=serializeWorkspace(snap); + var parsed=parseWorkspace(serialized); + record('v1.8.0 snapshot round-trip preserves every field', + parsed.snapshot!==null&&!parsed.error&&parsed.migrated===false&& + parsed.snapshot.version===snap.version&& + parsed.snapshot.files.length===1&& + parsed.snapshot.files[0].name==='report.sql'&& + parsed.snapshot.files[0].text===src&& + parsed.snapshot.options.dialect==='tsql'&& + parsed.snapshot.options.scope==='dependencies'&& + parsed.snapshot.options.view==='flow'&& + parsed.snapshot.options.detail==='full'&& + parsed.snapshot.options.dir==='LR'&& + parsed.snapshot.options.group===true&& + parsed.snapshot.options.number===true&& + parsed.snapshot.options.fanIn===true&& + parsed.snapshot.options.sources===true&& + parsed.snapshot.activeObjectId==='object-2'&& + parsed.snapshot.files[0].text===snap.files[0].text, + {serialized:serialized}); + + record('v1.8.0 save → reload reproduces an identical analysis', + (function(){ + var r1=analyseEstate(files,optsFromSnapshot(snap)); + if(!parsed.error&&parsed.snapshot){ + var r2=analyseEstate(parsed.snapshot.files,optsFromSnapshot(parsed.snapshot)); + return graphKey(r1.graph)===graphKey(r2.graph)&& + JSON.stringify(r1.objects)===JSON.stringify(r2.objects)&& + JSON.stringify(r1.diagnostics)===JSON.stringify(r2.diagnostics); + } + return false; + })(), + {graph:(parsed.snapshot?graphKey(analyseEstate(parsed.snapshot.files, + optsFromSnapshot(parsed.snapshot)).graph):''), + graph2:(parsed.snapshot?graphKey(analyseEstate(files, + optsFromSnapshot(snap)).graph):'')}); + }catch(err){ + record('v1.8.0 snapshot round-trip preserves every field', + false,String(err&&err.stack||err)); + record('v1.8.0 save → reload reproduces an identical analysis', + false,String(err&&err.stack||err)); + } + + /* Schema-version migration: older/missing versions + missing option fields + migrate forward to the current schema with safe defaults. */ + try{ + var legacyRaw=JSON.stringify({savedAt:'2026-01-01T00:00:00.000Z', + files:[{name:'old.sql',text:'SELECT 1;'}], + options:{dialect:'tsql',scope:'internal'}}); + var legacy=parseWorkspace(legacyRaw); + record('v1.8.0 older-version snapshots migrate forward with defaults', + !!legacy.snapshot&&legacy.migrated===true&&legacy.snapshot.version===WORKSPACE_SCHEMA_VERSION&& + legacy.snapshot.options.view==='auto'&& + legacy.snapshot.options.group===true&& + legacy.snapshot.options.sources===true&& + legacy.snapshot.files[0].name==='old.sql', + legacy); + record('v1.8.0 current-version snapshots are not migrated', + (function(){ + var cur=parseWorkspace(serializeWorkspace( + buildWorkspaceSnapshot({files:files,options:optionsRecord,activeObjectId:null}))); + return cur.snapshot!==null&&cur.migrated===false; + })()); + }catch(err){ + record('v1.8.0 older-version snapshots migrate forward with defaults', + false,String(err&&err.stack||err)); + record('v1.8.0 current-version snapshots are not migrated', + false,String(err&&err.stack||err)); + } + + /* Corrupt-state recovery: bad input yields an error and no snapshot. */ + try{ + var corruptJson=parseWorkspace('{not valid json'); + var corruptType=parseWorkspace('[1,2,3]'); + var corruptEmpty=parseWorkspace(JSON.stringify({version:1,files:[],activeObjectId:null})); + record('v1.8.0 corrupt-state recovery returns an error instead of throwing', + corruptJson.error==='corrupt_json'&&corruptJson.snapshot===null&& + corruptType.error==='not_workspace'&&corruptType.snapshot===null&& + corruptEmpty.error==='empty_workspace'&&corruptEmpty.snapshot===null, + {corruptJson:corruptJson,corruptType:corruptType,corruptEmpty:corruptEmpty}); + }catch(err){ + record('v1.8.0 corrupt-state recovery returns an error instead of throwing', + false,String(err&&err.stack||err)); + } + + /* Browser-storage round-trip (opt-in save/restore), exercised only when the + page runs somewhere localStorage is available. Clearing is explicit. */ + try{ + var storageAvailable=true; + try { var probe=window.localStorage.getItem('procflow.probe'); } + catch(e){ storageAvailable=false; } + if(storageAvailable){ + clearWorkspace(); + var before=hasSavedWorkspace(); + var wrote=writeWorkspace(snap); + var read=readWorkspace(); + var stored=hasSavedWorkspace(); + clearWorkspace(); + var after=hasSavedWorkspace(); + record('v1.8.0 opt-in storage round-trip and explicit clear', + wrote===true&&before===false&&stored===true&& + !!read&&read.files.length===1&&read.files[0].name==='report.sql'&& + after===false, + {wrote:wrote,before:before,stored:stored, + read:read&&read.files&&read.files[0]&&read.files[0].name,after:after}); + }else{ + record('v1.8.0 opt-in storage round-trip and explicit clear', + true,'localStorage unavailable in this environment; skipped'); + } + }catch(err){ + record('v1.8.0 opt-in storage round-trip and explicit clear', + false,String(err&&err.stack||err)); + } + + /* Dependency filtering — presentation only. Build a synthetic dependency + graph spanning object (source), external, and temp (synthetic) nodes with + data/dependency/call edges, then assert each toggle and that the input + graph is never mutated. */ + try{ + var da='da', db='db', de='de', dt='dt'; + var depGraph: Graph={ + nodes:[ + {id:da,shape:'rect',text:'alpha',cls:'call',source:null,objectId:'object-1',provenance:'source'}, + {id:db,shape:'rect',text:'beta',cls:'call',source:null,objectId:'object-2',provenance:'source'}, + {id:de,shape:'io',text:'external: server.dbo.t',cls:'src',source:null,objectId:'server.dbo.t',provenance:'external'}, + {id:dt,shape:'io',text:'#tmp',cls:'src',source:null,objectId:null,provenance:'synthetic',reason:'temporary table placeholder'} + ], + edges:[ + {from:da,to:dt,label:'writes',style:'dotted',kind:'data'}, + {from:dt,to:db,label:'reads',style:'solid',kind:'dependency'}, + {from:da,to:de,label:'reads',style:'solid',kind:'dependency'}, + {from:db,to:de,label:'calls',style:'solid',kind:'call'} + ], + stats:{objects:2,external:1,reads:2,writes:1,calls:1} + }; + var baseline=clone(depGraph); + var allOn=filterDependencyGraph(depGraph,null); + var noWrites=filterDependencyGraph(depGraph,{writes:false}); + var noExternal=filterDependencyGraph(depGraph,{external:false}); + var noTemp=filterDependencyGraph(depGraph,{temp:false}); + var focusAlpha=filterDependencyGraph(depGraph,{focus:'alpha'}); + var noneMatch=filterDependencyGraph(depGraph,{focus:'zzz'}); + + record('v1.8.0 dependency filter default shows the whole graph', + allOn.nodes.length===4&&allOn.edges.length===4, + {nodes:allOn.nodes.length,edges:allOn.edges.length}); + record('v1.8.0 dependency filter hides write edges without dropping nodes', + noWrites.edges.length===3&& + !noWrites.edges.some(function(e){return e.kind==='data';})&& + noWrites.nodes.length===4, + {nodes:noWrites.nodes.length,edges:noWrites.edges.length, + kinds:noWrites.edges.map(function(e){return e.kind;})}); + record('v1.8.0 dependency filter drops external nodes and their incident edges', + noExternal.nodes.length===3&&noExternal.edges.length===2&& + !noExternal.nodes.some(function(n){return n.provenance==='external';}), + {nodes:noExternal.nodes.length, + edges:noExternal.edges.map(function(e){return e.kind;})}); + record('v1.8.0 dependency filter drops temp-table nodes and their incident edges', + noTemp.nodes.length===3&&noTemp.edges.length===2&& + !noTemp.nodes.some(function(n){return n.provenance==='synthetic';}), + {nodes:noTemp.nodes.length, + edges:noTemp.edges.map(function(e){return e.kind;})}); + record('v1.8.0 dependency filter focus keeps the matching neighbourhood', + (function(){ + var ids=focusAlpha.nodes.map(function(n){return n.id;}).sort(); + return focusAlpha.nodes.length===3&& + ids.indexOf(da)>=0&&ids.indexOf(de)>=0&&ids.indexOf(dt)>=0&& + ids.indexOf(db)<0&& + focusAlpha.edges.length===2; + })(), + {nodes:focusAlpha.nodes.map(function(n){return n.id;}).sort(), + edges:focusAlpha.edges}); + record('v1.8.0 a focus matching nothing shows an empty view', + noneMatch.nodes.length===0&&noneMatch.edges.length===0, + {nodes:noneMatch.nodes.length,edges:noneMatch.edges.length}); + record('v1.8.0 dependency filtering never mutates the analysis graph', + JSON.stringify(baseline)===JSON.stringify(depGraph)&& + allOn.nodes!==depGraph.nodes&&allOn.edges!==depGraph.edges, + {unchanged:JSON.stringify(baseline)===JSON.stringify(depGraph), + sameNodeRef:allOn.nodes===depGraph.nodes, + sameEdgeRef:allOn.edges===depGraph.edges}); + }catch(err){ + record('v1.8.0 dependency filter default shows the whole graph',false,String(err&&err.stack||err)); + record('v1.8.0 dependency filter hides write edges without dropping nodes',false,String(err&&err.stack||err)); + record('v1.8.0 dependency filter drops external nodes and their incident edges',false,String(err&&err.stack||err)); + record('v1.8.0 dependency filter drops temp-table nodes and their incident edges',false,String(err&&err.stack||err)); + record('v1.8.0 dependency filter focus keeps the matching neighbourhood',false,String(err&&err.stack||err)); + record('v1.8.0 a focus matching nothing shows an empty view',false,String(err&&err.stack||err)); + record('v1.8.0 dependency filtering never mutates the analysis graph',false,String(err&&err.stack||err)); + } + + var passed=results.filter(function(r){return r.pass;}).length; + window.PROCFLOW_WORKSPACE_RESULT={passed:passed,total:results.length}; + window.PROCFLOW_WORKSPACE_PASS=passed===results.length; +})();