Repository navigation
tracking: experimental view follow-ups from the #2057 review #2090
Description
Warning
This content was written by an AI agent and must be verified by a human developer. After human verification, this alert may be removed.
Summary
Follow-ups from the review of #2057, which adds the experimental view: web/view/, graphcal view, the language server's graphcal/viewModel and the Wasm engine's view entry points.
Because the view is experimental, the review sorted its findings by impact. PR #2059 fixed the ones that block the merge: a core regression (the view was projected for every client, in quadratic time) and six view bugs that corrupted sources or patches or showed wrong values or wiring. The rest is tracked here, in the order the review suggests.
View model contract v1
These change the wire format. Make them together, and bump the model's version to 1, before more clients such as the VS Code extension read it.
- view: every cell of a value over a coordinate index shows
—#2060 Every cell of a value over a coordinate index shows— - view: node ids are
::-joined strings that the page splits again #2061 Node ids are::-joined strings that the page splits again - view: the edit range of an expression that starts with
(drops the(#2062 The edit range of an expression that starts with(drops the( - view: table cell edits match source lines instead of compiler ranges #2063 Table cell edits match source lines instead of compiler ranges (the compiler's per-cell ranges first, then the page)
- view: editing an
Intcell writes5.0#2064 Editing anIntcell writes5.0(the model's element type first, then the page) - view: dimension names and units are guessed (a
Torqueshows inJ) #2070 Dimension names and units are guessed - view: display-unit failures are handled differently per host and never reach the user #2077 Display-unit failures are handled differently per host and never reach the user
- view: show the values inside an include with bindings #2079 Show the values inside an include with bindings
- view: tidy the structure and types of the Rust view model #2082 Structure and types of the Rust view model, including splitting a node's
kindfrom itsorigin
Edit pipeline
After the contract, since the page's side of #2063 and #2064 needs it.
- view: a library with a required param can be opened but not edited #2065 A library with a required param can be opened but not edited
- view: the code pane can replace text the user typed #2066 The code pane can replace text the user typed
- view: apply edits to the latest source instead of whole-file snapshots #2067 Apply edits to the latest source instead of whole-file snapshots
- view: small state and interaction bugs on the sheet #2075 Small state and interaction bugs on the sheet
GitHub host
Independent of the two groups above.
- view: compare mode can show stale or mixed results #2068 Compare mode can show stale or mixed results
- view: route paths are not URL-encoded, and a malformed
%hangs the page #2071 Route paths are not URL-encoded, and a malformed%hangs the page - view: check the browser engine's file limit before downloading a project #2072 Check the browser engine's file limit before downloading a project
- view: the ref menu fails without pull request access, and the explorer keeps old refs #2073 The ref menu fails without pull request access, and the explorer keeps old refs
Before announcing the view
- view: harden token storage, framing and VS Code messages before announcing the view #2074 Harden token storage, framing and VS Code messages
Dependency graph
- graph: outputs of inline DAG calls have no dependency edges #2078 Outputs of inline DAG calls have no dependency edges (shared with
graphcal graph)
Performance, tests and cleanup
- view: show values over three or more axes #2069 Show values over three or more axes
- view: rendering and diff performance on large sheets #2076 Rendering and diff performance on large sheets (the evaluation worker waits for view: the code pane can replace text the user typed #2066, view: apply edits to the latest source instead of whole-file snapshots #2067 and view: small state and interaction bugs on the sheet #2075)
- view: remove dead code #2080 Remove dead code (removing
reducebelongs with the contract) - view: deduplicate logic in web/view #2081 Deduplicate logic in web/view
- view: tighten TypeScript types in web/view #2083 Tighten TypeScript types in web/view
- view: split web/view's main.ts #2084 Split web/view's main.ts
- view: the code pane's lexer differs from the playground's #2085 The code pane's lexer differs from the playground's
- view: browser smoke test, model contract test and unit tests #2086 Browser smoke test, model contract test and unit tests (the contract test belongs with the contract)
- view: duplicated Wasm in the site, extra LSP notifications and copied doc strings #2088 Duplicated Wasm in the site, extra LSP notifications and copied doc strings
Open decisions
- Token protection (view: harden token storage, framing and VS Code messages before announcing the view #2074). Serve the view from its own origin (recommended), or keep the token in
sessionStorageby default. - Edit targets (view: table cell edits match source lines instead of compiler ranges #2063). Recommended: the compiler reports a range for each editable cell, and the page only replaces ranges.
- Unit display (view: dimension names and units are guessed (a
Torqueshows inJ) #2070). Recommended:dimensionis the declaration's spelling, and a value without a display unit followsgraphcal eval's rule. - Severity of view: every cell of a value over a coordinate index shows
—#2060 and view: the edit range of an expression that starts with(drops the(#2062. They were rated non-critical. Raise view: every cell of a value over a coordinate index shows—#2060 if values over time must be visible from the start. Raise view: the edit range of an expression that starts with(drops the(#2062 if the VS Code integration, which writes edits into the user's document, is enabled before it is fixed. - Assumed in view: fix the must-fix findings of the #2057 review #2059. Inline
dagtemplates stay out of the sheet, and the playground does not project the view. Revisit if either is wrong.
Activity