v0.54.0

feder-cr/invisible_dotsv0.54.0Sep 14, 2026by github-actions[bot]

Upgrading?

AI Summary

This release removes the `running` flag from the `browser_list` response and updates the address bar logic to check fleet membership directly. It also refactors tests to assert the full row structure to prevent regression.

Key Highlights

  • Removed the `running` flag from `browser_list` rows, which previously could only be true for open browsers.
  • Updated the address bar to determine fleet membership directly, removing the reliance on the removed flag.
  • Refactored tests to assert the complete row structure (`id`, `focused`, `url`, `urls`) to catch field regressions.
  • Improved logic for handling browsers whose engines have gone offline by dropping them from the list.

Breaking Changes

  • The `running` field has been removed from the `browser_list` response.
  • The fleet filter logic that relied on the `running` flag has been removed.
  • The address bar guard logic that prevented actions on non-running browsers has been removed.

Full Release Notes

`browser_list` answered a `running` flag on every row, and since 0.53.0 it
could not be anything but true: only open browsers are listed, and one
whose engine has gone is dropped. A field whose value is a property of
the answer invites a reader to branch on it, and the page did, in three
places - the stage filtered the fleet on it, the layout counted it, the
address bar guarded on it - over a case the answer cannot contain.

Gone from the row, from the three readers, from the tool's description
and from the public table. The address bar asks what it always meant:
whether the browser being watched is in the fleet at all, which is the
question that matters when a pinned pane outlives the browser it was
pinned to.

One test now asserts the whole row - `id`, `focused`, `url`, `urls` - so
a field creeping back is caught rather than tolerated. The page test that
needed a not-running row is now the one that says the page takes the rows
as they come, and names where the expensive case is actually kept away:
the server, which drops a browser whose engine is gone.

Three mutations, three killed: the filter back in the page, the address
bar without its guard, the field back in the answer. Suite 585. Driven
with the real model from this tree: two browsers opened, two screens
drawn, no script error.

Related Repositories