Skip to content

Stratos v5.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Aug 10:23
· 8 commits to develop since this release

Stratos v5.1.0

Features

  • Application lists show each app's stack and can filter by it when a foundation has more than one stack installed — the operator's "which apps are still on the old stack?" question during a stack rollover, answered from the list. Stack and Status both join the list's field-selectable filter as a checklist: pick one or several values at once, defaulting to all. A stack with no apps stays selectable, so filtering to it and seeing zero results identifies a removable stack. The Cloud Foundry picker lists each foundation's installed stacks.
  • Application lists show when each app was last refreshed — the newest successful staging, so restages count and failed pushes don't — and can filter it by date range (before/after/between, inclusive or exclusive ends). The range filter mechanism is general and extends to numeric columns (#5770).
  • Date range filters accept relative bounds: "older than 90 days" or "older than 30 business days", with a user-declared working week (any weekend convention), an optional weekday-holiday count, and the resolved cutoff date shown so holidays can be checked and absorbed one bump at a time. Applies to the Last Refreshed filter on all application lists.
  • The stack checklist and date-range filter popups gain a Clear button that resets just that filter back to All/Any — other filters, the name text, and the sort are untouched. The toolbar's clear-all button still resets everything at once.

Bug Fixes

  • Text fields in the user-invite configuration dialog and the backup password step keep their border, padding, background and focus ring. An earlier change in this development cycle replaced the shared input class with a width utility, which supplied a width the fields already had while removing the appearance that class provides.
  • A space's Services and User Services tabs no longer freeze on the first snapshot the session happened to cache. The lists painted from a cached bundle and skipped their fetch entirely, so instances created or deleted outside that browser session — or a partial first snapshot — stayed wrong until a hard refresh. The cached rows still paint instantly, but the list now quietly revalidates against Cloud Foundry on every visit and swaps in the fresh result (#5766, #5767).
  • The Service Instances count on the organization and space Summary pages excludes user-provided service instances again, matching 4.x. The count is displayed against the service-instance quota, and user-provided instances do not consume that quota, so including them overstated quota usage. User-provided instances keep their own separate tile (#5769).
  • The Edit User Provided Service Instance form's credentials area was reworked into a single control. It opens as a read-only view of the credential structure — keys visible, every value printed as a highlighted <redacted> marker — so the shape is browsable without exposing anything to whoever is near the screen, and long values scroll inside the control instead of stretching the page. The controls sit in a header row above the box — always on screen, even when a large credential set makes the box itself scroll: "Show credentials" swaps the real values into the view (and back with "Hide credentials"); "Edit credentials" turns the control into an editable field pre-loaded with the JSON; "Cancel edit" backs out, leaving the stored credentials untouched. Previously a text link (which partially overlapped the field label) dumped the secrets straight into an always-editable field with no way back (#5768).
  • The organization and space Summary pages align their metric cards in a single uniform grid. Each page split its cards across two differently-columned grids, so the card edges never lined up between rows.
  • The Username field in the Add User dialog and the Email field on the Invite Users page are full width again instead of the browser's ~20-character default. Both render the shared stacked-input component, whose form field never grew inside its flex row and whose input carried no width of its own — the field shrank to content and the input fell back to the browser default, so a long username or email scrolled out of sight as it was typed (#5758).
  • An email row added by accident on the Invite Users page (or a username row in the Add User dialog) can be removed again. The remove control never rendered — row state was set on the child components in a way change detection never picked up — and the row bookkeeping sorted positions in reverse, so a remove click would have deleted the wrong row. Every row now shows a remove control whenever more than one row exists, and removing a row deletes that row. The duplicated field label (a floating "Email" label over an "Email" placeholder) and the bare browser focus rectangle are also gone, matching how every other form field in Stratos renders.

Maintainability

  • The backend now uses one session store implementation for all three database providers, replacing the per-provider stores (including a 2017 fork and a vendored copy) with a single maintained one. The session table is named sessions everywhere and is recreated on upgrade, so every user is signed out once when this version first starts. Signing out now also removes the session server-side on MySQL and SQLite, matching what PostgreSQL always did.
  • Jetstream's WebSocket layer moved from gorilla/websocket to the maintained coder/websocket v1.8.15, covering everything that streams over a socket: Cloud Foundry application SSH, application deploy, log and firehose streams, the Kubernetes terminal and the Helm release watcher. gorilla was pinned to a pseudo-version newer than its own last release with no upstream activity since March 2025, so this drops a dependency nobody maintains. Origin handling, the 27-second keepalive cadence and dead-peer teardown all behave as before; writes now route through one bounded helper rather than a hand-rolled timeout per plugin. gorilla remains an indirect dependency through noaa until the log-cache work retires it (#5736).

Chores

  • Dependency updates: js-yaml from 4.3.0 to 4.3.1; sync bun.lock for js-yaml 4.3.1; @typescript-eslint/eslint-plugin; @cypress/request from 3.0.9 to 4.0.1; core-js from 3.45.0 to 3.50.0; ng-packagr from 22.0.0 to 22.1.1; angular-eslint from 22.0.0 to 22.1.0; move the angular family to 22.1 in lockstep.