v0.69.1

feder-cr/invisible_dotsv0.69.1Sep 21, 2026by github-actions[bot]

Upgrading?

AI Summary

This release introduces plugin and extension support for Claude Code, Codex, and Gemini CLI, along with an automatic browser engine downloader. It also optimizes Gemini CLI installation by using pre-packaged archives and fixes several documentation and bug issues.

Key Highlights

  • Added plugin support for Claude Code and Codex, and extension support for Gemini CLI.
  • The browser engine now downloads automatically upon connection, eliminating the need for manual pre-fetching.
  • Gemini CLI installation now uses pre-packaged platform-specific archives (~22KB) instead of cloning the full repository.
  • Fixed broken documentation links in the README for Codex and Gemini CLI usage.

New Features

  • Plugin support for Claude Code and Codex with specific installation commands.
  • Extension support for Gemini CLI.
  • Automatic browser engine download triggered by the client connection.
  • Pre-packaged platform-specific archives (darwin, linux, win32) for faster Gemini CLI installation.
  • Immediate download status reporting in `browser_open`.

Full Release Notes

Three things changed this week for people who run AIHawk's browser from an assistant.

Claude Code and Codex take it as a plugin, Gemini CLI as an extension. Two lines for the first two, one for Gemini, and the setup skill comes along, so the assistant knows what to do when the browser engine is not there yet:

```bash
claude plugin marketplace add feder-cr/AIHawk
claude plugin install aihawk@feder-cr
```

```bash
codex plugin marketplace add feder-cr/AIHawk
codex plugin add aihawk@feder-cr
```

```bash
gemini extensions install https://github.com/feder-cr/AIHawk
```

The engine downloads itself. Until 0.68 you ran `uvx invisible-playwright fetch` first, or the first browsing call sat there for minutes. Now the server starts the download the moment the client connects, and if you ask for a browser before it is done, `browser_open` answers with how far along it is and asks to be called again. No call waits on a transfer. `uvx invisible-playwright fetch` still exists, for watching the download in a terminal or redoing a failed one.

Gemini CLI installs this release from the archives attached below instead of cloning the repository. The wiki has a page per client: Claude Code, Codex, Gemini CLI, Claude Desktop, Cursor, Cline.

Two pages the README's commands were pointing at without a destination:
"Running AIHawk's browser from Codex" and "from Gemini CLI", in the shape of
the Claude Code one, listed in the guide and the index.

Gemini CLI installs the extension from the Latest release when it carries an
asset named for the platform, and clones the whole repository otherwise -
which is what it did on 2026-09-21, twelve megabytes of docs, tests and source
to deliver a manifest and a skill. Our releases carry two MCP bundles, so the
single-asset fallback never applies. scripts/pack_extension.py builds three
identical archives, one per platform name Gemini matches (darwin, linux,
win32), 22 KB each, listed against an allowed set before they ship, and the
bundle job attaches them beside the bundles. Measured with the packer; the
install from a release is measured at the first tag that carries them.

browser_open's first answer on a cold cache read "downloading now: 0 MB so
far", because the core says "downloading" before the first byte and before it
knows the size. That instant now reads as the download starting.

The test suite left two empty directories in TEMP per run, made at import
where no fixture teardown reaches; this machine had eighty-six. Removed at
exit, the throwaway cache last, after the guard has read it.

0.69.1, because engine.py changed.

Related Repositories