Skip to content

chore(release): v0.86.0 - #993

Merged
ffroliva merged 82 commits into
mainfrom
chore/release-v0.86.0
Oct 18, 2026
Merged

ffroliva merged 82 commits into
mainfrom
chore/release-v0.86.0

Conversation

@ffroliva

Copy link
Copy Markdown
Owner

Release v0.86.0, cut from develop@6600a36e. The signed tag v0.86.0 on d7ef85da has already published: Release workflow run 39157226336 succeeded, PyPI is at 0.86.0, and the GitHub Release is out.

Contents:

Evidence: docs/LIVE_VERIFICATION_v0.86.0.md holds the pre-tag gates, the release-tree e2e (19 passed, including one paid extend), the doc-review council (GREEN after fixes) and the post-tag evidence.

This PR brings the bump commit and the integration history onto main. Merge with a merge commit; never squash.

stgmt and others added 30 commits September 19, 2026 07:36
- to_batchexecute_wire: source_workflow_id in media ref, [token,1],
  uuid3 op envelope, compact JSON separators
- _extend_video_batchexecute: resolve workflow_id_for_media, source_path
  /project/<id>/scene/<scene_id>, referer/origin headers
- _batchexecute_post: source_path param, compact f_req
- poll_video_status: workflow_id kwarg routes to _poll_video_status_batchexecute
  (as29s on migrated host; REST batchCheckAsyncVideoGenerationStatus is 401 there)
- extend_chain: pass started.workflow_id to the poller

Live-verified 2026-09-19: wire submit scheduled wf 2bb68ea1, DONE via
jwpduf, mp4 2786225 bytes downloaded (h264 720x1280 7s).
… video extend

Signed-off-by: stgmt <stigmat.rudnev@gmail.com>
…639)

- FlowApiClient.create_scene routes to _create_scene_batchexecute when host is migrated
- _create_scene_batchexecute posts rqZuUc RPC to compose a scene from workflowIds
- _run_extend downloads single completed segment directly without aisandbox concatenation
- Unit tests for create_scene on migrated vs legacy hosts

Signed-off-by: stgmt <stigmat.rudnev@gmail.com>
…rap to flow.google.com (#639)

- FlowApiClient.create_scene_for_extend encapsulates host-specific scene creation
  (media_id for migrated rqZuUc, workflow_id for legacy REST create_scene)
- _bootstrap_and_resolve_locale falls back to flow.google.com on labs connection errors
- Unit tests for create_scene_for_extend on migrated vs legacy hosts

Signed-off-by: stgmt <stigmat.rudnev@gmail.com>
…oll (#639)

- Extract flow-content.google signed CDN URL from as29s terminal record
- Cache signed URL by media_id and workflow_id in FlowApiClient
- download uses cached signed URL directly, eliminating 401 on migrated host

Signed-off-by: stgmt <stigmat.rudnev@gmail.com>
An account in #799's cohort (no agent-mode chip, exit 25 on 0.75.0) was probed
live. ProseMirror takes the directive, the directive's aspect/count beat the
saved Agent-settings defaults, video passes a flow-permission-message credit
gate (div[role=radio] rows, not buttons), and output lands as
flow-content.google/{image,video}/<uuid> signed URLs in flow-*-tile.

Cost: one image (quota) and one 4 s video (7 credits).
…y composer driver

Third spike run logs batchexecute traffic: the agent composer never fires ogiZ0b and as29s records name uuids absent from the page, so completion must be observed in the DOM.
… plan drives defaults

Video model menu is role=menuitem, toggles are aria-checked radios, Save persists across reload, and a set-save-restore round trip returned the account to its originals. $0.
…onfirm setting (#799)

account (default) leaves Flow's setting as found; always / never set it before a run and it is not restored. Refs #799
…ly found in 5 s, not 30 (#799)

Readiness returns classic or agent_only instead of raising, so callers can route. The first wait is AGENT_ONLY_EARLY_S; a page that is neither re-enters with the remaining budget, so slow mounts keep the full gate. Callers still raise exit 25 until the driver lands. Refs #799
run_images/run_video route an agent-only page to AgentOnlyComposer: Agent-settings defaults applied, saved and restored in finally (confirm follows GFLOW_CLI_AGENT_CONFIRM and is kept); directive into ProseMirror; one credit gate approved only if it appeared after our submit, a second stops the run; completion observed as new flow-content.google tiles against a pre-submit baseline, a video only once its <video> exists. Unported forms refuse with exit 36 before touching the page. Refs #799
Live: --aspect 3:4 exited 36 before the page opened, because the classic pane has no 3:4 radio. The agent-only pane does. The pre-page refusal now requires both composers to refuse; the composer found by ensure_editor applies its own limits after. Refs #799
…ick (#799)

Live restore read the attribute in the click's own tick and failed, leaving the account on the run's defaults. Poll for up to RADIO_SETTLE_S; fixture now updates the attribute asynchronously like Angular. Refs #799
…a <video> src (#799)

Live: a t2v run timed out on a clip that existed. Grid tiles re-render to opaque /asb/ media with no uuid, and mount <video> only on hover. Measured readiness: no flow-pending-tile left, the newest finished tile changed, and a new uuid named by that tile or the chat option poster. Opaque tiles are hovered for the src; download_video follows redirects only to googlevideo.com or allowed Google hosts and requires ftyp. Timeouts now say the clip may still finish. Refs #799
… MCP and video

KNOWN_ISSUES, MCP.md and CHANGELOG describe what is driven, what exits 36, and the measured rough edges. FlowAgentUiError's docstring names its new meaning on this composer. tests/features/agent_only_composer_live.feature is bound from tests/e2e/test_agent_only_composer_bdd.py: CLI t2i 3:4 x2, MCP t2i, CLI t2v (GFLOW_CLI_E2E_RUN_VIDEO=1). Refs #799
…en agent-only composer

Both still told users nothing in gflow reaches the composer and to use the web UI. Refs #799
…s fails (#799)

Branch review: an apply that raised before Save left the pane open with the run's unsaved radios, so a later run in the session would snapshot them as the account's originals. Close through the panel's arrow_back without saving. Timeout hint no longer says an image re-run bills. Refs #799
…onfirm by value

- restore_defaults discards the pane on failure, as apply does; snapshot and Save
  moved inside apply's guard
- video: peak pending tiles above the request raise; a clip already pending
  refuses before submit
- confirm radio chosen by input value (measured: Always=1, Never=2)
- model choice must read back; menu/Save waits raise UiSelectorDriftError
- post-submit FlowAgentUiError raises carry their own remediation hint
- agent-only verdict needs a positive anchor and is re-asked after a settle
- hover probe no longer aborts on a poster-only tile
- tests for each guard (12/12 mutations killed); e2e asserts 9:16 frame size
- docs: capability matrix qualified by composer; spike NOT-measured list updated

Signed-off-by: WAOmaster <waoearth2013@gmail.com>
…ence, MCP video exception

- CHANGELOG: restore on handled failures; a killed run can leave defaults (KNOWN_ISSUES)
- CONFIGURATION: agent-only routing sentence parses
- MCP: classic-only video policy scoped to labs/classic migrated; agent-only exception;
  no-Flow-access row excluded from 'generation still works'
- spike: completion invariant includes no pending tile, points at the measured rule
- spike script: --wait-s must be finite and > 0

Signed-off-by: WAOmaster <waoearth2013@gmail.com>
…low.google.com /asb/ downloads

Flow now serves agent-only image tiles from an opaque flow.google.com/asb/ URL
and carries the media id on the img's data-media-id attribute, so the CDN-uuid
match found no image and the fife_url host guard refused the download.
… the routing test guarded

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rd (#926)

The agent-only composer has no duration control; the length goes into the
agent's plain-language ask, live-verified with a 4 s clip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…b/ preview

The agent-only image tile src ends in a size spec (=s512-rw, a 512-px WebP).
Rewrite it to =s0 (original size) before download; the spec survives the
redirect to lh3.google.com/rd-asb/. Live: Nano Banana Pro 9:16 now saves
768x1376 JPEG (Flow's 1K original) instead of 286x512 WebP.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…only-composer-driver

Signed-off-by: Flavio Oliva <ffroliva@gmail.com>

# Conflicts:
#	CHANGELOG.md
…deo path

The agent settings pane has no resolution control, so the driver silently
dropped --resolution on a billed run. Refuse it up front (FlowHostMigratedError,
exit 36) like the other unported video forms.

Signed-off-by: Flavio Oliva <ffroliva@gmail.com>
…ia-id

Adds a fixture tile with an opaque /asb/ preview src plus data-media-id and
asserts the media id is read from the attribute, the pre-existing tile is in
the baseline by that id, and the download URL asks for the original size (=s0).

Signed-off-by: Flavio Oliva <ffroliva@gmail.com>
_validate_fife_url accepts flow.google.com, whose /asb/ URLs redirect to
lh3.google.com, and max_redirects does not constrain the target host. The
response URL is now checked against the same allowlist the agent-only clip
download uses; a redirect anywhere else raises ValueError before any bytes
are written.

Signed-off-by: Flavio Oliva <ffroliva@gmail.com>
The generation was already submitted, and its own hint says a re-run submits
(and for a video bills) again, so a blind automatic retry must not be invited.

Signed-off-by: Flavio Oliva <ffroliva@gmail.com>
Chromium is installed only in the 3.13 matrix job, so the real-DOM fixture
tests skip in 3.11 and 3.12, yet coverage was uploaded from 3.11. Every
browser-tested module therefore read as uncovered on SonarCloud: PR #989's
agent_only_composer.py showed 39% new coverage with its driver tests green.
…nd fZytfe

The route guard read only the first id of rpcids=, so a wrong fZytfe batched
behind another rpc (rpcids=uwAyfb,fZytfe) was released unchecked. It now
judges the URL list plus every f.req frame, and aborts any fZytfe after the
first released one so a run cannot bill twice.

migrated_composer's url_rpcid / body_rpcid / request_body are now public, so
the extend driver drops its reportPrivateUsage ignores.
…com; restore labs scene render

- Default host auto sent -n>1 / --scene / --resume-from / --seed to the labs arm,
  which on a page served flow.google.com read the retired projectInitialData
  (exit 7). _extend_session now checks the served host before that read and
  raises the same exit-36 refusal. client._upscale_route becomes the public
  served_route.
- Labs -o renders the scene again for any N>=1 (source + extensions, as
  KNOWN_ISSUES measured); #882 had downloaded only the new 7 s segment.
- unported_extend_form + unported_error merge into unported_refusal; on_started
  is a plain sync callable typed with ExtendStarted.
- Drop the unreachable labs.google kill switch inside extend_video_migrated
  (the CLI never routes labs.google there) and pin _anchor's selector drift
  (exit 23) with its own test.
…en no submit facts were captured

_source_clip took the first Zzl0ze frame even when it did not hold the media, so a
later reply that did was lost. It now settles on the matching record; at the budget
it returns None (exit 11) if a read answered, else a timeout (exit 9). started()
logs migrated_extend.no_submit_facts when the guard never read the page's fZytfe.
…-job

ci: upload Sonar coverage from the job that runs the Chromium tests
- generate(): split into _submit / _await_video / _await_images behind one
  shared _gate_turn (budget + one-approval rule), S3776.
- _approve_gate: wait for the gate to detach instead of a sleep poll, S7484.
- _click: the Playwright click timeout is timeout_ms, S7483.
- _full_size_src: string splits instead of a backtracking regex, S8786,
  with a linear-time test on hostile srcs.
- _VIDEO_ROUTE constant, S1192; noqa comment without a comma, S7632.
- Tests for a gate that never settles and a missing editor/submit.
Extend passes its own submit button; a missing or disabled one was still
reported as 'arrow_forward', pointing at the wrong control.
… -o and the cost note

- CONFIGURATION, video-production skill (+ plugin copy), the recon memory and
  AGENTS.md now list single-segment extend as ported; multi-segment, --scene /
  --resume-from and --seed exit 36.
- extend --help and USAGE: -o renders source + extensions on labs.google but
  saves only the new extension clip on flow.google.com (scene concat not ported
  there); the cost-confirmation note is labs.google only.
- New repo memory drive-the-page-dont-replay-the-rpc, cited from the D6 row of
  pr-council-review.
feat(migrated): drive the agent-only composer for text-to-image and text-to-video (#799)
… into helpers

Clears Sonar S3776 x2, S3358 and S7503: the on_started handler is now a plain
function (the composer already accepts a sync callback). No behaviour change.
…report into helpers

Clears Sonar S3776 on _extend_migrated_session. Same output, record call,
log event and exit codes.
feat(extend): drive video extend on flow.google.com through Flow's own UI (#639)
@coderabbitai

coderabbitai Bot commented Oct 18, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: afcc4632-eb6f-4c74-9269-f08485beeafb

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ffroliva
ffroliva merged commit 40aafa6 into main Oct 18, 2026
16 checks passed
@ffroliva
ffroliva deleted the chore/release-v0.86.0 branch October 18, 2026 19:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants