Skip to content

Stratos v5.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 20 Aug 13:38
· 1 commit to develop since this release

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's debug.showAllMenuItemsToggle company-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 as cause when 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_KEY and SQLITE_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.)