Skip to content

v1.2.0 — the Flow migration

Choose a tag to compare

@crisng95 crisng95 released this 17 Sep 17:37
· 59 commits to main since this release

First release since v1.1.0 (2026-05-09), and it is one arc: Flow moved.

In September 2026 Google Flow moved to flow.google.com and stopped minting the Bearer ya29.… that aisandbox-pa.googleapis.com needed. Every REST call the project made became unauthenticated overnight. This release is the rebuild.

New

  • batchexecute transport. The agent builds the request envelope and the Chrome extension runs it inside a signed-in flow.google.com tab, which is the only place these calls can be signed (#39).
  • Migrated image API — variant submit, settled-wave retry, and 2K/4K image export via SPrCad (#42).
  • Omni 1.1 Flash, all modes. Text-to-video (#41), then first-frame eb1hJf, first+last nprQif and references MZZa6b (#48, #50).
  • CI. The repo had none; the unit suite now runs on Python 3.10 and 3.13 for every PR and push to main (#53).

Removed

  • The REST transport, net −1043 lines: the ten _legacy_* methods, the USE_BATCH_RPC branches, _build_url/_client_context, the browser-fingerprint pools and agent/services/headers.py (#49).

    It was kept as a post-mortem tool and cost more than it saved: Omni was written against it, so when the migration landed on FlowClient it missed Omni entirely. Deleting the template is what stops the next copy.

Fixed

  • /health reports the real version again. It had answered 0.2.0 since v0.2.0 while the app said 1.1.0 — three releases stale, on the endpoint the docs tell you to curl first. agent/main.py had the version as two separate literals and only one was ever bumped; /health now reads app.version.
  • Extension: idle-tab leak (#44); video submit unified across the frame and reference paths (#46).

Upgrading

  1. Reload the extension at chrome://extensions — /health should then report 0.3.2.
  2. Pin FLOW_PROJECT_ID. Flow Kit can no longer create projects; make one in the Flow UI and pin its uuid, or pass flow_project_id to POST /api/projects.
  3. Keep one signed-in flow.google.com tab open. Nothing here works headless.

Two things that look like faults and are not: flow_key_present: false in /api/flow/status is normal — there is no bearer to capture on this transport. And a status poll answering "Media not found." is not a failure; finished jobs report it, so confirm against the media record.

Still unported

video upscale, Veo r2v and Veo start+end-frame chaining fail loudly with UNSUPPORTED_ON_BATCH_API rather than quietly producing the wrong thing, because their payloads were never captured off the new UI. For the latter two, Omni covers the same shot with model_family=omni_flash, or FLOW_ALLOW_DEGRADED=1 drops them to plain i2v. Video upscale has no fallback. To restore one properly see docs/CAPTURE.md.

Thanks to @Bl0ck154 and @hieuh0 for the migration work.