Features
- The performance page now measures what Stratos actually controls: the
headline splits initial-load from since-load activity, a document-fetch
phase row covers the gap before Angular boots, and a Stratos-clock
column (with a waterfall toggle) times requests from the console's own
start instead of the browser's. - The side-nav "Show all menu items" checkbox is now a debug tool, gated
behind the theme'sdebug.showAllMenuItemsTogglecompany-config flag
and hidden by default; stale browser state is ignored while the gate
is off.
Bug Fixes
- Completions and go-to-definition returned to the editor: monaco
0.56's per-feature registry omits the suggest controller and the
go-to commands (upstream's full build imports them directly), so the
curated subset lost Ctrl+Space and F12. Found by live-driving the
deployed editor; the contribs are now imported directly. - Monaco's static widget styles finally reach the page: the builder
bundles the CSS monaco imports from JS into chunk .css files, but
nothing attaches those for a plain dynamic import() — since the ESM
switch the editor has rendered on runtime-injected styles and
browser defaults (visible with monaco 0.56 as a naked IME textarea
inside the editor and a chromeless find widget). The subset's CSS is
now built as a stable non-injected "monaco" styles bundle that the
loader links when the editor loads. - The Monaco editor prefetch waits for the window load event, so warming
the editor bundle no longer distorts the initial-load milestone on the
performance page. - 304 revalidations are counted as cache validations on the performance
page instead of full transfers.
Maintainability
- The Monaco editor now ships as a curated feature-and-language subset
(core editor, json language service, yaml tokenizer) instead of the
full build with ~80 bundled languages: the editor-open payload drops
from 868KB to 785KB gzipped and the built frontend loses 800KB of
never-used language modules. The subset also prefetches once the
browser goes idle after bootstrap, so the first editor surface opens
without paying the chunk fetch at click time. A bundle budget now
fails the build if the chunk regresses toward the full build.
Chores
- Removed the unused background-grid/background-image CSS that the
Docusaurus template carried in; one rule used Sass-style&--
nesting that plain CSS can't parse, tripping an optimizer warning
on every website build. - monaco-editor updated 0.52.2 to 0.56.0 (supersedes the dependabot
bump): the new exports map breaks every legacy deep-import path, so
the curated feature subset now uses the 0.53+ feature registry, the
json/yaml language registers, and the new worker entry points. The
one incompatible dependency import (monaco-worker-manager, used by
monaco-yaml's worker) is fixed with a one-line dependency patch. - eslint updated 9.39.5 to 10.8.1 (supersedes the dependabot bump):
eslint 10 stops bundling @eslint/js, so it becomes a direct dev
dependency, and its newly-recommended rules surfaced 15 real
findings — caught errors are now attached ascausewhen rethrown
as user-facing messages, and two dead assignments are gone. - New deploy guide for keeping SQLite state across Cloud Foundry
restarts: continuous Litestream replication and user-provided-service
snapshots, with the two hard preconditions both lanes share — a stable
ENCRYPTION_KEYandSQLITE_KEEP_DB=true(without the latter,
jetstream deletes the database file at startup and a Litestream
replica is then overwritten with the emptied database). - Dependency updates: the angular group with 18 updates; the
angular-devkit group; @analogjs/vite-plugin-angular from 2.6.4 to
2.7.0; mktemp from 2.0.1 to 2.0.3. (The monaco-editor 0.56 and
ESLint 10 moves are covered by their own entries above.)