v0.50.0

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

Upgrading?

AI Summary

This release resolves three critical defects in the browser interface, specifically correcting retry logic, session state persistence for headless mode, and live pane freezing during window minimization.

Key Highlights

  • Fixed browser retry wrapper to only discard browsers that are truly gone, preserving healthy sessions with cookies and pages.
  • Removed `headless` state from session files to ensure visibility is determined by the launch environment rather than previous sessions.
  • Resolved live pane freezing by restarting window capture for frames older than two seconds and reporting silent restarts.
  • Centralized the definition of a 'gone' browser to improve error handling reliability.

New Features

  • Corrected browser retry logic to prevent discarding healthy sessions.
  • Fixed headless mode to respect launch environment settings.
  • Implemented frame staleness detection to restart window capture.
  • Added error reporting for silent window capture restarts.

Full Release Notes

Three defects seen in one afternoon on the interface, each with its cause one step upstream of where it showed.

**The browser closed and reopened on a domain that did not resolve.** The retry wrapper treated every exception as a dead browser: it discarded the healthy one, with its cookies and pages, built a replacement as the same person and ran the action again, which failed identically. Only a browser that is gone is rebuilt now, and what "gone" means lives in one place, next to the check that decides it between calls.

**The main browser came up on screen at a launch that had asked for nothing of the kind.** The session file carried `headless: false` from a headed process that had used the same file name, and the restore took the file's word over this process's. Whether a window is shown is a property of the launch, like the engine, so it is no longer written down and the restore reads it from the environment alongside the engine.

**The live pane froze on a page the browser had left two sites earlier.** The engine's window capture ends for good when a headed window is minimised, without telling anybody, and the session served the last frame it held forever. A frame older than two seconds now restarts the capture, and a restart that stays silent is dropped with the reason. Measured on a still page first: the engine delivers 93 frames in four seconds, so silence is not quiet.

Every branch is held by a test that was seen red against the code it replaces, and the minimise case by an e2e test against the real engine. Version 0.50.0.

Related Repositories