v0.3.0

feder-cr/AIHawkv0.3.0Sep 3, 2026by feder-cr

AI Summary

This release removes the `aihawk do` subcommand and `runner.drive`, making `aihawk ui` the singular interface for the tool. It includes significant updates to the testing suite and refactors end-to-end tests to work directly with `Link`.

Key Highlights

  • Removal of the `aihawk do` subcommand and `runner.drive` components
  • Introduction of `aihawk ui` as the only entry point
  • Updated testing suite maintaining 15 guarantees while removing 4 related to the command-line interface
  • End-to-end tests rewritten to use `Link` instead of the command-line tool

Breaking Changes

  • `aihawk do` subcommand removed
  • `runner.drive` removed
  • Existing scripts and cron jobs relying on `aihawk do` will break upon upgrade

New Features

  • New primary interface: `aihawk ui`
  • Updated key-isolation tests asserting against `Link`
  • End-to-end tests rewritten to use `Link`

Full Release Notes

⛔ **Breaking: `aihawk do` is gone.** It ran one task headless and printed the
answer. If you have it in a script or a cron line, that line stops working on
upgrade; pin `aihawk==0.2.0` if you need time. `runner.drive`, which only it
called, went with it.

There is one way in now, and it is `aihawk ui`.

**What did not go with it, because none of it was ever about the subcommand.**

`drive` was a `Link` opened and closed around a single task, so the two
key-isolation tests that ran through it were testing `Link` all along. They
assert against `Link` now, which is what the interface uses. A third was added
while moving them: the key must REACH the parent client. Without that one, a
version that scrubs the key everywhere passes the other two and cannot talk to
OpenRouter at all.

The command-line test file drove `do` from top to bottom and is now on `ui`.
Fifteen guarantees survived the move - where the key comes from, that an
`OPENAI_API_KEY` is not accepted as an OpenRouter one, that every option arrives
under the name the environment builder reads, that a bad option is a usage error
before anything connects, and that the key is never echoed on any path. Four
died with the command and are written down in the file so nobody hunts for them
later: `ui` requires no key, takes no task argument, and prints no result.

The end-to-end test used to invoke `aihawk do` against a live browser and a live
model. What it proved was the loop reading a page and answering, not the
subcommand, so it opens the same `Link` and runs the same loop. It was run for
real while being rewritten.

**Known issue.** The wiki still documents `aihawk do` on several pages,
including the cron and monitoring guides that are built on it. Those pages are
wrong as of this release and will be dealt with separately.