gflow-cli 0.71.0__tar.gz → 0.72.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.codex-plugin/plugin.json +1 -1
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.env.template +3 -2
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/AGENTS.md +2 -2
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/CHANGELOG.md +184 -1
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/KNOWN_ISSUES.md +125 -24
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/PKG-INFO +3 -3
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/README.md +2 -2
- {gflow_cli-0.71.0/website → gflow_cli-0.72.0}/docs/ARCHITECTURE.md +7 -7
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/AUTHENTICATION.md +28 -8
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/CHARACTER_RECON.md +3 -1
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/CONFIGURATION.md +2 -2
- {gflow_cli-0.71.0/website → gflow_cli-0.72.0}/docs/DEBUGGING.md +5 -4
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/INDEX.md +2 -2
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.71.0.md +11 -2
- gflow_cli-0.72.0/docs/LIVE_VERIFICATION_v0.71.1.md +147 -0
- gflow_cli-0.72.0/docs/LIVE_VERIFICATION_v0.72.0.md +217 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/MCP.md +1 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/PROJECT_STATUS.md +116 -3
- {gflow_cli-0.71.0/website → gflow_cli-0.72.0}/docs/PROMPT_EXPANSION.md +1 -1
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/USAGE.md +19 -4
- {gflow_cli-0.71.0/website → gflow_cli-0.72.0}/docs/USER_GUIDE.md +10 -4
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/medium_tutorial.md +3 -3
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/flow-recon-must-run-on-denon82-ffroliva-migrated.md +20 -6
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/migrated-host-driver-wire-lessons.md +29 -0
- gflow_cli-0.72.0/docs/superpowers/memory/real-browser-auth-mandatory.md +32 -0
- gflow_cli-0.72.0/docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md +131 -0
- gflow_cli-0.72.0/docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md +89 -0
- gflow_cli-0.72.0/docs/superpowers/spikes/2026-09-08-migrated-image-submit-wire.md +64 -0
- gflow_cli-0.72.0/docs/superpowers/spikes/2026-09-08-migrated-queue-is-readable-on-zzl0ze.md +89 -0
- gflow_cli-0.72.0/docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md +185 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/llms.txt +1 -1
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/pyproject.toml +1 -1
- gflow_cli-0.72.0/scripts/dev/spike_migrated_composer_arms.py +319 -0
- gflow_cli-0.72.0/scripts/dev/spike_migrated_image_submit.py +282 -0
- gflow_cli-0.72.0/scripts/dev/spike_migrated_queue_read.py +164 -0
- gflow_cli-0.72.0/scripts/dev/spike_migrated_upload_wire.py +284 -0
- gflow_cli-0.72.0/scripts/dev/spike_playwright_chrome_login.py +272 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/gflow-cli/SKILL.md +5 -1
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/video-production/SKILL.md +1 -1
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/video-production/failure-modes.md +2 -2
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/__init__.py +1 -1
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/client.py +16 -40
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/batchexecute.py +103 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/migrated_composer.py +576 -32
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/ui_automation.py +67 -4
- gflow_cli-0.72.0/src/gflow_cli/auth/internal_chromium.py +322 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/auth/real_chrome.py +205 -37
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/browser_manager.py +16 -14
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/config.py +3 -2
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/errors.py +12 -7
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/mcp/tools.py +2 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_migrated_composer.py +692 -11
- gflow_cli-0.72.0/tests/api/transports/test_migrated_images.py +361 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/auth/strategies/test_strategies.py +286 -5
- gflow_cli-0.72.0/tests/auth/test_real_chrome.py +744 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_error_handling.py +19 -4
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/conftest.py +35 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_migrated_host_e2e.py +113 -28
- gflow_cli-0.72.0/tests/features/migrated_host_images.feature +21 -0
- gflow_cli-0.72.0/tests/features/test_migrated_host_images_steps.py +157 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_browser_manager.py +49 -13
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_config.py +12 -2
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/uv.lock +20 -10
- {gflow_cli-0.71.0 → gflow_cli-0.72.0/website}/docs/ARCHITECTURE.md +7 -7
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/AUTHENTICATION.md +28 -8
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/CONFIGURATION.md +2 -2
- {gflow_cli-0.71.0 → gflow_cli-0.72.0/website}/docs/DEBUGGING.md +5 -4
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/KNOWN_ISSUES.md +125 -24
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/MCP.md +1 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0/website}/docs/PROMPT_EXPANSION.md +1 -1
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/USAGE.md +19 -4
- {gflow_cli-0.71.0 → gflow_cli-0.72.0/website}/docs/USER_GUIDE.md +10 -4
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/onboarding-mockup.html +4 -4
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/onboarding.md +3 -3
- gflow_cli-0.71.0/docs/superpowers/memory/real-browser-auth-mandatory.md +0 -10
- gflow_cli-0.71.0/src/gflow_cli/auth/internal_chromium.py +0 -185
- gflow_cli-0.71.0/tests/auth/test_real_chrome.py +0 -145
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.agents/plugins/marketplace.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/active.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/branch-review.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/changelog.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/check.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/doc-review.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/issue-assessment.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/issue-resolve.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/known-issues.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/live-verify.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/llm-council.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/next.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/plan.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/pr-council-review.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/predict.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/release.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/scenario.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/sonar.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/spike.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.claude/commands/gflow/status.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.gitattributes +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/CODEOWNERS +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/FUNDING.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/copilot-instructions.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/dependabot.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/workflows/ci.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/workflows/deps-watch.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/workflows/external-pr-triage.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/workflows/governance-advisory.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/workflows/governance-benchmark.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/workflows/labels.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/workflows/main-base-guard.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/workflows/pages.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/workflows/release.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/workflows/scorecard.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/workflows/selector-probe.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.github/workflows/star-history-watch.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.gitignore +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.gitleaks.toml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.pre-commit-config.yaml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/.secrets.baseline +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/CLAUDE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/CONFIGURATION.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/CONTRIBUTING.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/DISCLAIMER.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/LICENSE +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/RELEASE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/ROADMAP.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/conftest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/deploy/logrotate-pr-triage +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docker-compose.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/AGENT_GUIDE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/AGENT_UI_E2E.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/AGENT_UI_RECON.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/ASSET_TAGGING_RECON.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/CHARACTER.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/DEMOS.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/GITHUB.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/GOVERNANCE_BENCHMARK.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/IMAGE_UPSCALE_RECON.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.66.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.66.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.66.2.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.66.3.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.67.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.68.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.69.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.70.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/LIVE_VERIFICATION_video_download.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/MOVIE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/REFERENCE_STRATEGIES.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/SECURITY.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/TOOLS.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/assets/demo-split-pf.gif +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/assets/example-run.gif +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/assets/examples.webp +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/schemas/movie-handoff.schema.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/sonar-cleanup-tracker.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/agents-md-vs-llms-txt.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/background-e2e-pytest-pattern.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/bdd-stubs-mirror-runtime-signatures.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/credit-free-route-abort-verification.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/data-layer-overview.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/data-layer-test-pollution-trap.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/doc-examples-are-untested-fixtures.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/draft-pr-merge-trap.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/e2e-evidence-is-a-contributor-deliverable.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/exit-code-16-data-store.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/flow-capabilities-are-cohort-dependent.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/flow-credits-videos-only.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/flow-locale-leak-icon-ligatures.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/force-color-breaks-cli-tests.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/full-test-suite-ooms.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/git-add-all-sweeps-scratch-files.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/image-video-mode-switch-symmetry.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/ligature-carrier-differs-by-host.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/mcp-is-first-class-across-skill-chain.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/memory-is-working-dir-keyed.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/on-started-callback-recorder-safety.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/playwright-click-no-downstream-event-signature.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/pr-council-review-stale-tree-reads.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/pr-hygiene-revert-and-multi-commit.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/pr-must-verify-on-affected-surface.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/prose-conflicts-hide-in-disjoint-files.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/pypi-readme-staleness-fix.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/pypi-rejected-filename-reusable.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/readme-hybrid-router-pattern.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/release-back-merge-gap-recovery.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/release-signing.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/release-spec-plan-memory-consolidation.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/rest-transports-drop-ui-fields.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/ruff-format-scope-is-src-tests.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/sonarcloud-hotspot-review-workflow.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/sonarcloud-new-code-gotchas.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/sonarcloud-pr-issues-scope-s7497.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/sonarcloud-setup.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/stale-test-discovery.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/structlog-cache-logger-off-for-tests.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/ui-selector-drift-error-exit-23.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/verification-ledger-5-layer.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/video-model-capability-matrix.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/wheel-build-sanity-gate.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/windows-dev-quirks.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/memory/windows-running-launcher-blocks-uv-upgrade.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/plans/2026-09-06-spike-tooling-reorg/PLAN.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-04-migrated-host-handoff-mechanism.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-05-migrated-frames-attach.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-05-migrated-host-wire-protocol.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-05-migrated-model-menu-lower-priority.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-06-labs-vs-migrated-session-credential.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-06-migrated-character-surface-and-recaptcha.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-07-character-format-button-anchor.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-07-credit-shortfall-looks-like-selector-drift.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-07-format-click-is-not-a-format.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-07-ligature-carrier-and-name-drift.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/docs/superpowers/spikes/2026-09-07-migrated-composer-has-an-image-mode.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/examples/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/examples/batch_from_config.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/examples/multi_prompt_t2i.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/examples/sample_config.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/examples/sample_prompts.txt +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/examples/single_image_t2i.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/examples/workflow_chain.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/index.html +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/captured/01_upload_image.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/captured/04_archive_workflow.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/captured/05_createProject.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/captured/06_batchGenerateImages.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/captured/12_create_scene.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/captured/13_sceneWorkflows_update.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/captured/14_get_scene_workflows.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/samples/captured/15_commit_flowWorkflow.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/canary/register_task.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/canary/run_canary.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/ci/check_council_memory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/ci/check_doc_links.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/ci/check_materiality.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/ci/check_release_artifacts.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/ci/check_repo_hygiene.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/ci/check_test_count.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/ci/check_website_docs_pii.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/ci/generate_website_docs.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/debug_editor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/debug_gen_settings.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/debug_settings.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/_recording_client.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/_spike_common.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/acceptance/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/acceptance/bench.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/acceptance/domain.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/acceptance/judge.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/acceptance/settings.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/active_plan.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_image_add_media_dom.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_locale_invariants.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_migrated_attach_rpcs.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_migrated_mention_gestures.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_migrated_model_menu.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_migrated_r2v_production_submit.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_migrated_r2v_submit_payload.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_migrated_r2v_surface.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_migrated_upload_flow.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_project_listing.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_sidebar_state_dom.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/cdp_drive_and_probe.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/character_create_spike.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/character_create_spike_v2.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/dump_character_selectors.js +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/har-spike/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/har-spike/capture-agent-ui.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/har-spike/capture-media-scrape.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/har-spike/extract_har_summary.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/har-spike/launch-flow-chrome.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/har-spike/probe-agent-mode.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/har-spike/probe_agent_mode.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/har-spike/run-cdp-smoke.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/har-spike/start-background-capture.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/har-spike/start-har-capture.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/har-spike/stop-background-capture.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/har-spike/stop-har-capture.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/incident_bundle_quality.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/live_verify_mcp_tasks.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/live_verify_policy_400_v060.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/live_verify_video_model_select.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/make_project.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/materiality_backtest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/measure_html_lang_settle.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/measure_locale_probe.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/measure_migrated_host_flip.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/patch_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/skillopt/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/skillopt/harness.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/skillopt/tasks.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/sonar-local-scan.sh +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/sonar-pre-push-gate.sh +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_cdp_har_without_node.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_changelog_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_char_editor_dom.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_char_gen_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_character_editor_ready_gate.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_character_prompt_format.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_entity_submit_rpcs.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_extend_model_recon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_extend_route_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_extend_submit_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_extend_ui_recon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_format_prompt_effect.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_host_lane.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_image_upscale_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_image_upscale_drive.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_incident_live.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_ligature_carrier_sweep.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_locale_poison.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_body_reference_chip.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_character_body_controls.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_character_editor_anchor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_character_ogiz0b_schema.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_character_submit_wire.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_character_surface.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_composer_mode_axis.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_duration_by_model.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_editor_dom_inventory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_entity_submit.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_frames_attach.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_host_trigger.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_image_capability.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_picker_option_kind.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_recaptcha_mint.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_submit_anchor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_submit_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migrated_vs_labs_provenance.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_migration_flag_bootstrap.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_mode_roundtrip.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_model_inventory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_movie_attach_payload.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_movie_entity_recon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_movie_gen_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_movie_picker_select.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_movie_voice_list.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_patch_entity.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_patchright.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_project_media_status.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/spike_video_tab_dom.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/verify_lang_settle_fix.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/verify_language_agnostic.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/verify_locale_navigation_race.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/dev/verify_model_attribution.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/diag/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/diag/capture_flow_traffic.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/diag/diag_aisandbox_bearer.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/diag/memory_profile.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/diag/recaptcha_mint.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/diag/spike_387_openai_compat.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/e2e/capture_agent_toggle.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/probe/run_probe.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/probe/spike_auth_matrix.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/record_demo.ps1 +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/smoke_image.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/smoke_video_editor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/smoke_worker_style.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/spike_waf_camoufox.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/scripts/verify_chrome_auth_viability.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/README.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/changelog/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/check/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/doc-review/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/issue-assessment/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/issue-resolve/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/known-issues/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/live-verify/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/llm-council/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/plan/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/pr-council-review/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/predict/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/release/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/scenario/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/sonar/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/spike/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/status/SKILL.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/video-production/clip_qa.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/video-production/composition.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/video-production/consistency.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/skills/video-production/tasks.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/sonar-project.properties +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/__main__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/_cli_helpers.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/_engine.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/_retry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/_sapisidhash.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/credits.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/dto.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/extend_chain.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/image.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/image_upscale.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/recaptcha.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/routes.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/scene.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/_common.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/base.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/drivers/base.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/drivers/factory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/mode_control.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/transports/ui_automation_video.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/video.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/api/video_extend.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/auth/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/auth/base.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/auth/cookies.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/auth/factory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/auth/strategies.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/auth/verification.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/chain.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/chain_manifest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/cli.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/cli_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/cli_credits.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/cli_data.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/cli_doctor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/cli_image.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/cli_instructions.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/cli_models.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/cli_movie.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/cli_project.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/cli_run.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/cli_scene.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/cli_tools.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/cli_update.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/cli_video.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/composition.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/chain_repo.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/migrations/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/models.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/queries.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/recorder.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/redaction.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/repository.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/data/store.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/diagnostics.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/exceptions.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/file_integrity.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/flow_selectors/grading.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/flow_selectors/model.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/flow_selectors/registry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/image_batch.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/json_output.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/mcp/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/mcp/prompts.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/mcp/resources.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/mcp/server.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/mcp/setup.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/mcp/tasks_extension.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/media.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/movie_manifest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/observability.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/paths.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/profile_lease.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/profile_store.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/redaction.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/services/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/services/catalog_sync.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/services/character_create.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/services/credits.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/services/doctor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/services/mentions.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/storage.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/tools/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/tools/banned.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/tools/builtin/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/tools/expander.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/tools/invocation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/tools/loader.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/tools/registry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/tools/runtime.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/tools/spec.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/ui/app.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/ui/server.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/update_check.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/winsec.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/worker/codec.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/worker/daemon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/src/gflow_cli/worker/queue.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tasks/lessons.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/test_assets/sample_batch.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/test_assets/sample_batch.tsv +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/test_assets/sample_batch_invalid.tsv +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/fixtures/character_gen_response.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/fixtures/patch_entity_response.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_aisandbox_auth_error.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_aisandbox_auth_headers.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_bearer_redaction.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_character_readback_fallback.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_client.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_client_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_client_delete_characters.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_client_errors.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_client_extend.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_client_generate_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_client_image.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_client_incidents.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_client_launch_kwargs.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_client_locale_cache.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_client_migrated_mint.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_client_patch_entity.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_client_scene.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_client_upscale.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_concurrency.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_credits.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_credits_http.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_dto.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_engine.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_extend_chain.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_image.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_image_dto.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_image_upscale.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_post_json_aisandbox_auth.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_recaptcha.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_retry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_routes.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_routes_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_routes_locale.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_routes_scene.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_sapisidhash_helper.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_scene_models.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_video.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_video_extend.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_video_request.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/test_video_status_poll.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/conftest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/drivers/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/drivers/test_agentic.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/drivers/test_classic.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/drivers/test_factory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/drivers/test_ui_mode.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_agentic_cohort_detection.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_base.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_batchexecute.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_bearer.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_character_model_picker.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_common.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_evaluate_fetch.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_factory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_fingerprint.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_ligature_carrier.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_locale_navigation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_migrated_dispatch.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_migrated_host_gate.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_migrated_r2v.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_migrated_route.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_mode_control.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_model_selection_loud.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_navigation_settled.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_new_project_cta_migrated.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_overlay_precondition.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_policy_400.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_sapisidhash.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_selector_symmetry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_transport_timeout.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_ui_automation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_ui_automation_batch.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_ui_automation_video.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_ui_character_editor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/api/transports/test_video_model_selection_loud.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/auth/strategies/test_factory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/auth/test_cookies.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/auth/test_verification.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/auth/test_windows_acl.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_auth_status.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_auth_list.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_character_create.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_credits.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_data.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_data_errors.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_data_errors_retention.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_data_sync.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_doctor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_image.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_image_seed_removed.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_image_selector_drift.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_image_upscale.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_instructions.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_models.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_movie.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_run.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_scene.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_tools.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_video.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_video_chain.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_cli_video_extend.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_failure_funnel.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_helpers.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_incident_output.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_movie_manifest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_movie_manifest_style_variants.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_predictable_output.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_run_with_handlers_context_leak.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_settings_validation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/cli/test_t2i_multi_prompt.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/composition/test_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/composition/test_compose_prompt.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/composition/test_handoff.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/composition/test_style_variants.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/composition/test_style_variants_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/data/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/data/test_chain_repo.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/data/test_failure_recording.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/data/test_find_incomplete_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/data/test_models.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/data/test_null_columns_stay_null.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/data/test_packaging.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/data/test_recorder.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/data/test_recorder_character.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/data/test_redaction.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/data/test_repository.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/data/test_scene_persistence.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/data/test_settings_and_errors.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/data/test_store.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/data/test_store_migrations.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/dev/test_recording_client.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/conftest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_aisandbox_auth_live.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_asset_tagging_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_auth_verification_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_cancellation_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_chain_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_character_create_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_character_mcp_parity_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_crash_recovery_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_credits_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_credits_mcp_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_daemon_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_data_layer_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_data_sync_names_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_e2e_env_isolation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_entity_provenance_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_i2v_flags_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_image_batch_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_incident_quality_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_insufficient_credits_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_json_output_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_live_agentic_instructions.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_locale_selectors_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_migrated_i2v_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_project_naming_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_scene_compose_live.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_tools_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_transports_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/e2e/test_video_t2v_e2e.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/asset_tagging.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/auth.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/auth_login.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/character_create.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/character_read.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/conftest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/credits.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/duration_tab_drift.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/entity_provenance.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/image.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/image_batch_references.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/image_upscale.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/incident_diagnostics.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/instructions.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/latched_locale_recovery.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/locale_picker_include.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/mcp_tasks.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/media_picker_tiers.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/migrated_driver.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/migrated_host_gate.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/migrated_i2v.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/output_hardening.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_asset_tagging_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_auth_login_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_auth_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_character_create_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_character_read_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_credits_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_image_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_image_upscale_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_incident_diagnostics_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_instructions_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_locale_picker_include_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_mcp_tasks_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_media_picker_tiers_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_migrated_driver_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_migrated_host_gate_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_migrated_i2v_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_output_hardening_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_step_collision_guard.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_video_agent_ui_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/test_video_chain_steps.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/video_agent_ui.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/features/video_chain.feature +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/fixtures/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/fixtures/changelog_modal_page.html +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/fixtures/doctor_env.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/fixtures/flow_model_inventory.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/fixtures/flow_project_listing_media.json +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/fixtures/listing_payload.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/fixtures/seeded_catalog.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/flow_selectors/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/flow_selectors/test_grading.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/flow_selectors/test_model.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/flow_selectors/test_model_governance.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/flow_selectors/test_registry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/flow_selectors/test_report.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/image_batch/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/image_batch/test_image_manifest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/image_batch/test_jitter_config.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/image_batch/test_observability_events.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/integration/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/integration/conftest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/integration/constants.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/integration/test_expander_gateway.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/integration/test_storage_gcs.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/integration/test_storage_s3.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/conftest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_auth_status_tool.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_character_tools.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_cli_parity.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_credits_tool.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_error_funnel.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_http_transport.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_known_issues_resource.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_migrated_i2v_parity.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_no_spend.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_rate_limit_envelope.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_reference_entity_round_trip.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_resources.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_server.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_setup.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_stdio_transport.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_tasks_extension.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_tools_helpers.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_tools_instructions.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/mcp/test_tools_wired.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_canary_classify.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_canary_reexec.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_capture_locale_invariants.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_capture_video_model_capability_matrix.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_check_council_memory.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_check_materiality.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_check_release_artifacts.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_check_repo_hygiene.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_check_test_count.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_check_website_docs_pii.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_codex_plugin.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_extract_har_summary.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_frame_acceptance.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_generate_website_docs.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_incident_bundle_quality.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_materiality_backtest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_skillopt_scoring.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_spike_page_pool.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_spike_profile_lease.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/scripts/test_workflow_hardening.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/services/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/services/test_catalog_sync.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/services/test_character_create_redaction.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/services/test_character_create_saga.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/services/test_character_gen_no_direct_post.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/services/test_credits.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/services/test_doctor.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/services/test_media_attribution.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/services/test_mentions_observability.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/services/test_mentions_parse.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/services/test_mentions_resolve.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/services/test_resolve_and_apply.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/smoke/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/smoke/test_profile_account_smoke.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/smoke/test_real_flow.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_auth.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_chain.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_chain_manifest.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_cli_data.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_cli_project.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_cli_update.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_conftest_isolation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_data_queries.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_diagnostics_bundle.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_diagnostics_events.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_diagnostics_journal.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_diagnostics_recorder.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_diagnostics_retention.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_diagnostics_sanitize.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_documentation_gate.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_duration_tab_drift.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_entity_provenance.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_errors.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_errors_classification.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_image_batch_references.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_incident_generation_requests.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_json_output.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_marker_registry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_media.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_observability.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_overlay_banner_dismissal.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_paths.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_playwright_pin.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_profile_lease.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_profile_lease_subprocess.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_profile_store.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_profile_store_locale.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_project_list_urls.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_self_documenting_errors.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_smoke.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/test_update_check.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/tools/__init__.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/tools/test_banned.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/tools/test_expander.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/tools/test_invocation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/tools/test_loader.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/tools/test_registry.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/tools/test_runtime.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/tools/test_spec.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/ui/test_app.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/worker/test_codec.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/worker/test_daemon.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/worker/test_mcp_daemon_race.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/worker/test_queue.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/worker/test_queue_multiprocess.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/tests/worker/test_queue_reconciliation.py +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/ACCOUNT_SAFETY.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/CHARACTER.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/DATA_LAYER.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/DEVELOPMENT.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/E2E_TESTING.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/EXTERNAL_STORAGE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/INSTRUCTIONS.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/MEDIA_LIBRARY.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/MOVIE.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/SECURITY.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/TOOLS.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/agents.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/index.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/installation.md +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/docs/stylesheets/extra.css +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/mkdocs.yml +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/requirements.in +0 -0
- {gflow_cli-0.71.0 → gflow_cli-0.72.0}/website/requirements.txt +0 -0
|
@@ -183,8 +183,9 @@
|
|
|
183
183
|
# GFLOW_CLI_UI_MODE=auto
|
|
184
184
|
|
|
185
185
|
# Which Flow frontend gflow drives (#639). auto (default): flow.google.com is the
|
|
186
|
-
# default host for what it can serve today (video t2v
|
|
187
|
-
# --initial-frame
|
|
186
|
+
# default host for what it can serve today (video t2v; video i2v from a local
|
|
187
|
+
# --initial-frame; video r2v from local --ref files; image t2i; and image i2i from
|
|
188
|
+
# local files — all with --project) on every
|
|
188
189
|
# account; requests it cannot serve yet keep the labs driver on an unmoved
|
|
189
190
|
# account, and a moved account gets the migrated composer for everything ported.
|
|
190
191
|
# flow.google.com: force the migrated composer for everything.
|
|
@@ -42,7 +42,7 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
|
|
|
42
42
|
|
|
43
43
|
## Project at a glance
|
|
44
44
|
|
|
45
|
-
- Unofficial Python CLI for [Google Flow](https://labs.google/fx/tools/flow) — drives Veo (image-to-video, text-to-video) and Imagen (text-to-image) generations from the terminal by reverse-engineering Flow's private REST API at `aisandbox-pa.googleapis.com` — and, for accounts Google has moved to `flow.google.com`, that frontend's `batchexecute` wire (text-to-video,
|
|
45
|
+
- Unofficial Python CLI for [Google Flow](https://labs.google/fx/tools/flow) — drives Veo (image-to-video, text-to-video) and Imagen (text-to-image) generations from the terminal by reverse-engineering Flow's private REST API at `aisandbox-pa.googleapis.com` — and, for accounts Google has moved to `flow.google.com`, that frontend's `batchexecute` wire (text-to-video, image-to-video from a local `--initial-frame`, reference-to-video from local `--ref` files, and text-to-image/local-file image-to-image, today; `GFLOW_CLI_FLOW_HOST`).
|
|
46
46
|
- Python 3.11+ · `uv`-managed · `hatchling` builds · Playwright Chromium transport · `pyright` strict · `ruff` · `pytest`.
|
|
47
47
|
- Single-package modular monolith. Top-level modules under `src/gflow_cli/`: `api/`, `auth/`, `data/`, `mcp/`, `services/`, `tools/`, `ui/`, `worker/`, `browser_manager.py`, `cli.py`, `_cli_helpers.py`, `diagnostics.py`, `json_output.py`, `media.py`, `profile_lease.py`, `redaction.py`, `storage.py`, `winsec.py`, `cli_project.py`, `cli_character.py`, `cli_credits.py`, `cli_data.py`, `cli_image.py`, `cli_instructions.py`, `cli_models.py`, `cli_movie.py`, `cli_run.py`, `cli_scene.py`, `cli_tools.py`, `cli_video.py`, `chain.py`, `chain_manifest.py`, `cli_doctor.py`, `cli_update.py`, `composition.py`, `config.py`, `errors.py`, `file_integrity.py`, `flow_selectors/`, `update_check.py`, `exceptions.py`, `image_batch.py`, `movie_manifest.py`, `observability.py`, `paths.py`, `profile_store.py`.
|
|
48
48
|
- Command surface: `gflow auth`, `gflow credits` (user/list — read-only Veo balance), `gflow image` (t2i/i2i/batch/upload/upscale), `gflow video` (t2v/i2v/r2v/chain/extend — `extend` continues an existing clip past Flow's 8s ceiling, server-seeded from the source so the join is continuous; no `batch` subcommand; the nonfunctional stub was removed, loop `gflow video t2v`/`i2v` from the shell for multi-clip runs), `gflow character` (create/list/show/rm/voices — reusable project-scoped Flow Character entities), `gflow scene` (create/show — Add Clip / Scenes, with `create --output` for credit-free server-side extended video), `gflow instructions` (persistent Agent-Mode brief cards — add/list/enable/disable/rm/apply/toggle-mode, credits-free, `--project` required), `gflow movie` (run/template — multi-scene manifest pipeline), `gflow tools` (list/show/run — prompt-rewriting tools, also `--tool` on generation commands), `gflow data` (catalog queries), `gflow doctor` (read-only pre-flight diagnostic, exit 33 = findings present), `gflow update` (self-update through the installer that put it here — uv tool / pipx / pip; `--check` only reports; source installs refused, exit 11; deliberately no MCP twin), `gflow project`, `gflow models`, `gflow run`, `gflow mcp` (run/setup — stdio MCP server), and `gflow serve` (Streamable HTTP at `/mcp`; `--transport sse` is deprecated).
|
|
@@ -50,7 +50,7 @@ by construction, so Codex / Cursor / Aider / `agy` read exactly what Claude Code
|
|
|
50
50
|
|
|
51
51
|
## Headed-browser dependency (architectural reality)
|
|
52
52
|
|
|
53
|
-
gflow-cli currently drives Flow via a **real Chrome session managed by Playwright** — `ui_automation` transport. Google's auth + reCAPTCHA stack rejects
|
|
53
|
+
gflow-cli currently drives Flow via a **real Chrome session managed by Playwright** — `ui_automation` transport. Google's auth + reCAPTCHA stack rejects browsers that advertise automation, and most headless approaches. This is the project's defining trade-off:
|
|
54
54
|
|
|
55
55
|
- ✅ Works end-to-end against live Google accounts.
|
|
56
56
|
- ❌ Requires a saved Chrome profile, a display server for one-time login, and ~150 MB for Chromium.
|
|
@@ -7,6 +7,187 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.72.0] — 2026-09-09
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`gflow image t2i` and local-file `i2i` now run on migrated `flow.google.com`
|
|
15
|
+
accounts** ([#639](https://github.com/ffroliva/gflow-cli/issues/639)). The Angular
|
|
16
|
+
composer binds Image mode, Nano Banana 2 / Pro, the four aspect ratios measured on that
|
|
17
|
+
host (16:9, 4:3, 1:1, 9:16) and counts 1–4,
|
|
18
|
+
then observes the page-owned `ogiZ0b` `batchexecute` reply and returns the same
|
|
19
|
+
`GeneratedImage` contract as the labs driver. Local references reuse the measured
|
|
20
|
+
`maseQ` upload + mention path and are verified in the outgoing submit body before the
|
|
21
|
+
result is trusted. The migrated page owns reCAPTCHA minting, avoiding the root-grid
|
|
22
|
+
`RecaptchaError`; unsupported UUID/entity/instruction/Imagen-4 forms still fail before
|
|
23
|
+
submit rather than silently dropping options.
|
|
24
|
+
|
|
25
|
+
- **`gflow image batch` is refused on the migrated host instead of failing as selector
|
|
26
|
+
drift** ([#639](https://github.com/ffroliva/gflow-cli/issues/639)). The batch path
|
|
27
|
+
drives labs selectors only; it now raises `FlowHostMigratedError` (exit 36) before any
|
|
28
|
+
submit, rather than running those selectors against `flow.google.com` and reporting
|
|
29
|
+
exit 23 — which told the user to file a frontend-drift bug about a frontend that was
|
|
30
|
+
behaving correctly.
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
- **`gflow auth login` closes the browser for you.** It drives your real Google Chrome
|
|
35
|
+
through Playwright, watches for the completed Flow sign-in, and closes the window itself —
|
|
36
|
+
the "now close Chrome" step is gone. Closing the window yourself still works and still
|
|
37
|
+
verifies; it is not an error. On a machine where Playwright cannot resolve a Chrome
|
|
38
|
+
channel, or where Google rejects the browser anyway, login falls back automatically to the
|
|
39
|
+
previous flow (Chrome as a plain subprocess, you close the window). **There is no new flag
|
|
40
|
+
and nothing to choose.**
|
|
41
|
+
([spike](docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md))
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
|
|
45
|
+
- **The second image in one session no longer falls back to the labs reCAPTCHA mint**
|
|
46
|
+
([#673](https://github.com/ffroliva/gflow-cli/issues/673)). Every migrated image run
|
|
47
|
+
parks its page on `about:blank`, which routes as `labs` — so the page-owned-mint
|
|
48
|
+
capability, derived from `page.url`, answered `False` on the next call and sent it
|
|
49
|
+
back to minting on the pooled bootstrap page. The transport now latches the observed
|
|
50
|
+
host: `gflow image batch`, which runs every prompt through one `FlowApiClient`,
|
|
51
|
+
generated its first prompt and failed the rest with the exact `RecaptchaError` this
|
|
52
|
+
release exists to remove.
|
|
53
|
+
- **`--aspect 3:4` is refused on the migrated host rather than reported as selector
|
|
54
|
+
drift.** The composer's aspect radiogroup was enumerated there with four radios —
|
|
55
|
+
`crop_16_9`, `crop_landscape`, `crop_square`, `crop_9_16` — and no `crop_portrait`, so
|
|
56
|
+
a 3:4 request missed its selector and raised exit 23. It is now an unported form
|
|
57
|
+
(exit 36). The "all five aspect ratios" claim has been corrected to the four measured
|
|
58
|
+
wherever it appeared.
|
|
59
|
+
- **The exit-36 remediation no longer contradicts the error it accompanies.**
|
|
60
|
+
`FlowHostMigratedError._default_remediation` still described the migrated host as
|
|
61
|
+
driving only t2v and local-frame i2v, so an image refusal printed a `detail` saying
|
|
62
|
+
t2i/i2i are driven directly above a remediation saying they are not. Both it and the
|
|
63
|
+
class docstring now name the full ported matrix.
|
|
64
|
+
- **`gflow auth login --browser internal` launched a browser configuration measured as
|
|
65
|
+
rejected.** The bundled-Chromium path shipped with no anti-automation flags, which leaves
|
|
66
|
+
`navigator.webdriver` set. On 2026-09-08 a browser in that state — real Chrome with the
|
|
67
|
+
flags removed — was rejected at `/v3/signin/rejected` 17.5 s into the flow, while the same
|
|
68
|
+
browser *with* the flags signed in normally. Bundled Chromium was measured only in the
|
|
69
|
+
flagged configuration, so its unflagged rejection is inferred from the shared signal, not
|
|
70
|
+
observed directly. It now passes
|
|
71
|
+
`--disable-blink-features=AutomationControlled`, `ignore_default_args=["--enable-automation"]`
|
|
72
|
+
and `chromium_sandbox=True` — the last of which also removes Chrome's cosmetic *"You are
|
|
73
|
+
using an unsupported command-line flag"* banner — and signs in on the real OS window
|
|
74
|
+
instead of an emulated 1920×1080 viewport that pushed Google's sign-in form off-screen on
|
|
75
|
+
smaller or scaled displays.
|
|
76
|
+
- **Setting `CHROME_BINARY` no longer makes Playwright's `channel="chrome"` look resolvable
|
|
77
|
+
when it is not.** The availability check treated the variable as proof, passed, and then
|
|
78
|
+
failed at launch with *"Chromium distribution 'chrome' is not found"*. Playwright honours a
|
|
79
|
+
custom binary only via `executable_path=`, never via `channel=`, so the variable is now
|
|
80
|
+
ignored by that check (it still resolves a Chrome binary everywhere else).
|
|
81
|
+
|
|
82
|
+
### Security
|
|
83
|
+
|
|
84
|
+
- **`httpx2` / `httpcore2` bumped to 2.12.0, clearing five newly published CVEs**
|
|
85
|
+
([#766](https://github.com/ffroliva/gflow-cli/pull/766)). `httpcore2` CVE-2026-84381 and
|
|
86
|
+
`httpx2` CVE-2026-84378 / -84379 / -84380 / -84382, all against 2.9.1; both arrive
|
|
87
|
+
transitively through `mcp`. The advisories were published against an unchanged lockfile —
|
|
88
|
+
`Dependency audit (pip-audit)` went red on `develop` without any dependency change — so
|
|
89
|
+
this is not a regression introduced by a feature PR. `uvx pip-audit` on the exported
|
|
90
|
+
requirements now reports no known vulnerabilities. The bump also adds `httpx2-jsfetch`
|
|
91
|
+
1.0 to the lock, marked `sys_platform == 'emscripten'` (Pyodide/WASM only); it is never
|
|
92
|
+
installed on any platform gflow supports.
|
|
93
|
+
|
|
94
|
+
## [0.71.1] — 2026-09-08
|
|
95
|
+
|
|
96
|
+
### Fixed
|
|
97
|
+
|
|
98
|
+
- **A blocked first upload no longer reads as a broken file or a broken network.** On the
|
|
99
|
+
migrated `flow.google.com` host, `video i2v --initial-frame` and `video r2v --ref` failed
|
|
100
|
+
on an account's **first** upload with `MediaUploadRejectedError` (exit 27) — *"no maseQ
|
|
101
|
+
reply within 60s of choosing the file — the upload never reached Flow or was dropped"* —
|
|
102
|
+
and advised re-encoding the image to strip metadata. Neither the file nor the network was
|
|
103
|
+
involved: Flow shows a one-time **"Rights to use this image"** confirmation *after* the
|
|
104
|
+
chooser hands the file over, and sends nothing until a human accepts it, so the driver
|
|
105
|
+
spent its whole budget waiting for a request the page had already declined to make.
|
|
106
|
+
Measured across 8 runs on 3 profiles — the two accounts that had uploaded before never saw
|
|
107
|
+
the dialog and uploaded fine, the account that never had failed 3/3, and accepting it once
|
|
108
|
+
made that account upload on the next run and every run after
|
|
109
|
+
([spike](docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md)).
|
|
110
|
+
|
|
111
|
+
The driver now counts dialogs across the upload and, when one appeared *during* it, names
|
|
112
|
+
the one-time confirmation and tells the user to accept it once in a browser. **It is
|
|
113
|
+
counted rather than matched on purpose:** the dialog's two buttons are
|
|
114
|
+
`button.flow-button-medium` with no ligature and no data attribute, separable only by DOM
|
|
115
|
+
order, and its copy is translated — there is no anchor there that satisfies this project's
|
|
116
|
+
locale rule, whereas "a dialog appeared between the file being chosen and the wait
|
|
117
|
+
expiring" is upload-related by construction and cannot rot when Angular renames a class.
|
|
118
|
+
|
|
119
|
+
**gflow does not accept the dialog for you**, and there is no flag to make it: the dialog
|
|
120
|
+
affirms that *you* hold the rights to what you upload, it is one-off per account, and the
|
|
121
|
+
path already requires an interactive `gflow auth login` — so a setting that could never
|
|
122
|
+
safely default to on would be a flag nobody sets.
|
|
123
|
+
|
|
124
|
+
The driver also now watches the upload **request**, not just the response, so the timeout
|
|
125
|
+
splits into two distinct messages: `no upload request ever left the page` and `the request
|
|
126
|
+
left the page and Flow did not answer in time`. That distinction is load-bearing — the
|
|
127
|
+
second argues for a retry and the first argues against one — and it exposes a **second,
|
|
128
|
+
unfixed** failure on this path, an intermittent no-reply on already-consented accounts
|
|
129
|
+
(~1 run in 4) that keeps [#719](https://github.com/ffroliva/gflow-cli/issues/719) open and
|
|
130
|
+
now has its own [KNOWN_ISSUES.md](KNOWN_ISSUES.md) entry.
|
|
131
|
+
([#719](https://github.com/ffroliva/gflow-cli/issues/719))
|
|
132
|
+
|
|
133
|
+
### Documentation
|
|
134
|
+
|
|
135
|
+
- **Three documents said things that were not true, and are corrected rather than quietly
|
|
136
|
+
patched.** [KNOWN_ISSUES.md](KNOWN_ISSUES.md) said Flow's first-upload terms dialog affected
|
|
137
|
+
"the legacy in-tree Compiled Growth worker, **NOT `gflow-cli` itself** … workaround: none
|
|
138
|
+
needed" — true of the old REST path, false since the migrated driver began using the
|
|
139
|
+
editor's own upload, so it was the entry a user hitting #719 would find and be *reassured*
|
|
140
|
+
by. [LIVE_VERIFICATION_v0.71.0](docs/LIVE_VERIFICATION_v0.71.0.md) labelled the `ci-probe`
|
|
141
|
+
profile **labs** when it is migrated, contradicting v0.70.0 one day earlier; in a repo where
|
|
142
|
+
"Flow's UI shows X" is not a fact until the host is named, that silently re-scoped every
|
|
143
|
+
conclusion keyed to it — and it helped a credit-based theory for #719 survive four runs.
|
|
144
|
+
Six "unreleased line" phrases, which go stale the moment a release ships and had accumulated
|
|
145
|
+
across four of them, are now dated from the CHANGELOG.
|
|
146
|
+
|
|
147
|
+
### Added
|
|
148
|
+
|
|
149
|
+
- **Two `$0` read-only dev instruments** for the migrated host.
|
|
150
|
+
[`scripts/dev/spike_migrated_queue_read.py`](scripts/dev/spike_migrated_queue_read.py) reads
|
|
151
|
+
a project's generation queue by listening to the page's own traffic — establishing that the
|
|
152
|
+
listing arrives on **`Zzl0ze`**, not the `jwpduf`/`as29s` progress polls, which is what a
|
|
153
|
+
future `gflow video status` ([#741](https://github.com/ffroliva/gflow-cli/issues/741)) should
|
|
154
|
+
read. [`scripts/dev/spike_migrated_upload_wire.py`](scripts/dev/spike_migrated_upload_wire.py)
|
|
155
|
+
drives the real `_upload_via_toolbar` with a listener on every request, which is how the
|
|
156
|
+
consent dialog above was found. Neither is wired into the CLI.
|
|
157
|
+
|
|
158
|
+
- **Flow's agent mode no longer bricks the account for every later run.** On the migrated
|
|
159
|
+
`flow.google.com` host the composer carries an **agent-mode chip**
|
|
160
|
+
(`button.agent-mode-chip[aria-pressed]`). Pressed, Flow swaps `flow-prompt-box` for
|
|
161
|
+
`flow-creative-agent-prompt-box`: the `.settings-trigger-button` this driver waits on stays
|
|
162
|
+
in the DOM but gains a bare `hidden` (`display: none`, 0×0, not hit-testable), so
|
|
163
|
+
`wait_for(state="visible")` could never pass and every run died at 30 s as
|
|
164
|
+
`UiSelectorDriftError` (exit 23) — telling the user to file a frontend-drift bug about a
|
|
165
|
+
frontend that was working fine. Flow **remembers the chip per account**, so one click in a
|
|
166
|
+
browser broke every subsequent `gflow video t2v`, with nothing on the CLI to say why or how
|
|
167
|
+
to undo it. `ensure_editor` now leaves agent mode before the readiness gate, and if the
|
|
168
|
+
classic composer still does not come back it says *that* instead of blaming drift. Measured
|
|
169
|
+
2026-09-08 on two accounts, $0 —
|
|
170
|
+
[`scripts/dev/spike_migrated_composer_arms.py`](scripts/dev/spike_migrated_composer_arms.py),
|
|
171
|
+
finding in
|
|
172
|
+
[`docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md`](docs/superpowers/spikes/2026-09-08-migrated-composer-agent-mode-hides-settings.md).
|
|
173
|
+
The reporter's suggested anchor (`aria-label="Configuración"`) is not used: it is a translated
|
|
174
|
+
label, and the chip's own component class plus `aria-pressed` carry the same identity in every
|
|
175
|
+
locale. ([#749](https://github.com/ffroliva/gflow-cli/issues/749))
|
|
176
|
+
|
|
177
|
+
**Follow-up ([#752](https://github.com/ffroliva/gflow-cli/issues/752)):** the fix worked and
|
|
178
|
+
its diagnostics did not. Three states were collapsed into one message — the chip was clicked,
|
|
179
|
+
the chip was found but the click was blocked, the chip was clicked and the mode is still on —
|
|
180
|
+
and all three read as *"the chip was clicked to leave it … the mode may be pinned"*. A modal
|
|
181
|
+
eating the click sent the user to toggle a chip; genuine selector drift **after** the mode was
|
|
182
|
+
successfully left was reported as a pinned mode, so the drift bug never got filed. The chip's
|
|
183
|
+
`aria-pressed` is now read back before that claim is made, a blocked click raises at once
|
|
184
|
+
instead of waiting out the 20 s recovery window (worst case 55 s → 35 s), the click's own
|
|
185
|
+
exception is chained rather than truncated into a log line, and `_open_pane` — the same gate
|
|
186
|
+
one step later — guards on **visibility** rather than `count()`, so a mode flip mid-run maps
|
|
187
|
+
to exit 23 naming agent mode instead of escaping as a bare Playwright timeout. Searchable
|
|
188
|
+
entry added to [KNOWN_ISSUES.md](KNOWN_ISSUES.md), which the shipped message gave a user no
|
|
189
|
+
way to find.
|
|
190
|
+
|
|
10
191
|
## [0.71.0] — 2026-09-07
|
|
11
192
|
|
|
12
193
|
### Fixed
|
|
@@ -4483,7 +4664,9 @@ shell-script template that branches on these codes.
|
|
|
4483
4664
|
|
|
4484
4665
|
First skeleton. Not functional end-to-end yet.
|
|
4485
4666
|
|
|
4486
|
-
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.
|
|
4667
|
+
[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.72.0...HEAD
|
|
4668
|
+
[0.72.0]: https://github.com/ffroliva/gflow-cli/compare/v0.71.1...v0.72.0
|
|
4669
|
+
[0.71.1]: https://github.com/ffroliva/gflow-cli/compare/v0.71.0...v0.71.1
|
|
4487
4670
|
[0.71.0]: https://github.com/ffroliva/gflow-cli/compare/v0.70.0...v0.71.0
|
|
4488
4671
|
[0.70.0]: https://github.com/ffroliva/gflow-cli/compare/v0.69.0...v0.70.0
|
|
4489
4672
|
[0.69.0]: https://github.com/ffroliva/gflow-cli/compare/v0.68.0...v0.69.0
|
|
@@ -14,14 +14,14 @@ Living list of behaviour that's broken, surprising, or limited by design — alo
|
|
|
14
14
|
|
|
15
15
|
## Open
|
|
16
16
|
|
|
17
|
-
### Flow is migrating to `flow.google.com`;
|
|
17
|
+
### Flow is migrating to `flow.google.com`; generation coverage is partial but includes images
|
|
18
18
|
|
|
19
|
-
- **Status:** Open (partially resolved) · **Severity:** High for
|
|
19
|
+
- **Status:** Open (partially resolved) · **Severity:** High for unported forms · **Affected:** on accounts the rollout has reached, `gflow video t2v`, local-file `video i2v` / `r2v`, `gflow image t2i`, and local-file `gflow image i2i` now run on the migrated host. Image mode supports Nano Banana 2 / Pro, the four aspect ratios its radiogroup was enumerated with (16:9, 4:3, 1:1, 9:16), and count 1–4; `3:4` had no radio in that enumeration and is refused before submit rather than reported as selector drift. Image refs by UUID, `@Name` / `--reference-entity`, Agent instructions, Imagen 4, video end frames, video refs by UUID/name, scenes, extend, instructions and tools are not ported yet and fail before submit. **`character` is NOT in that list any more** — `character create` and `character list` work on the migrated host. Of the remainder, only the i2v-by-UUID case rests on a positive observation of absence (the Frames picker tiles carry no media id); `scenes`, `extend`, `instructions` and `tools` remain *unported by gflow*, never proven impossible on the host.
|
|
20
20
|
- **Tracked:** [#639](https://github.com/ffroliva/gflow-cli/issues/639) · Reported 2026-09-02 against 0.59.0, 0.62.1, 0.63.0 and 0.65.0
|
|
21
21
|
- **Confirmed live 2026-09-03 on a second, independent account** (`ffroliva`) — see [LIVE_VERIFICATION_v0.66.0](docs/LIVE_VERIFICATION_v0.66.0.md). A read-only probe of the migrated origin measured `i_total: 0`, reproducing the reporter's central measurement.
|
|
22
|
-
- **`--reference-entity` was refused on `r2v` but not on `t2v`** ([#716](https://github.com/ffroliva/gflow-cli/issues/716), fixed in
|
|
23
|
-
- **The migrated composer
|
|
24
|
-
- **Image commands on a moved account** ([#673](https://github.com/ffroliva/gflow-cli/issues/673), fixed in
|
|
22
|
+
- **`--reference-entity` was refused on `r2v` but not on `t2v`** ([#716](https://github.com/ffroliva/gflow-cli/issues/716), fixed in v0.71.0): the "not ported, exit 36" refusal above sat inside the r2v branch of the routing gate, so a `t2v` request carrying a character entity returned from that gate without its entities ever being inspected — and nothing downstream attaches one on this host. The generation was **submitted and billed** with the entity silently dropped, returning a plausible clip of the wrong person. The check is now mode-independent and ahead of every early return. If you ran `gflow video t2v @Name …` or `--reference-entity` on a moved account before this fix, the identity in those clips was never bound.
|
|
23
|
+
- **The migrated composer image path is now driven** ([#692](https://github.com/ffroliva/gflow-cli/issues/692)): the first probe established a hit-testable Image mode; the 2026-09-08 follow-up captured real T2I and local-file I2I submissions on `ogiZ0b`, including page-owned reCAPTCHA, upload ids, response records and signed JPEG downloads. See [the submit-wire spike](docs/superpowers/spikes/2026-09-08-migrated-image-submit-wire.md).
|
|
24
|
+
- **Image commands on a moved account** ([#673](https://github.com/ffroliva/gflow-cli/issues/673), fixed in v0.69.0): through v0.68.0 `image t2i` / `i2i` (and `upscale`, `extend`) died with exit 1 `RecaptchaError` within seconds, before any submit, instead of the exit 36 above, because the labs client minted the reCAPTCHA token on the `flow.google.com` project grid before any migration guard ran. The guard now runs at the mint. If you still see a `RecaptchaError` on a moved account right after `auth login`, that is the labs logged-out landing page from the [#644](https://github.com/ffroliva/gflow-cli/issues/644) cookie harvest, not this.
|
|
25
25
|
|
|
26
26
|
Google is moving Flow off Labs onto its own origin. On a migrated page load,
|
|
27
27
|
`https://labs.google/fx/tools/flow/project/<id>` redirects to
|
|
@@ -48,7 +48,7 @@ This is **not** selector rot, not [#493](https://github.com/ffroliva/gflow-cli/i
|
|
|
48
48
|
and not the agentic cohort — the agentic indicators are absent too. It is a
|
|
49
49
|
different origin serving different markup.
|
|
50
50
|
|
|
51
|
-
**What works now —
|
|
51
|
+
**What works now — generation on the migrated host.** `gflow video t2v … --project <id>`
|
|
52
52
|
drives the migrated editor directly (settings through its option groups, prompt,
|
|
53
53
|
submit, then it observes the app's own `batchexecute` status replies and downloads
|
|
54
54
|
the clip). Two real clips were generated this way on 2026-09-05 — spike
|
|
@@ -56,10 +56,11 @@ the clip). Two real clips were generated this way on 2026-09-05 — spike
|
|
|
56
56
|
(`GFLOW_CLI_FLOW_HOST=auto`): flow.google.com is the **default** host for that
|
|
57
57
|
command on every account — moved or not; `flow.google.com` forces it for
|
|
58
58
|
everything, and `labs.google` switches the migrated composer off. Limits today: `--project` is required (project creation from the
|
|
59
|
-
migrated editor is not ported), and
|
|
59
|
+
migrated editor is not ported), and `t2v`, `i2v` from a local `--initial-frame` (no end frame,
|
|
60
60
|
no UUID/`@Name` frame — the migrated Frames picker exposes no media id in its DOM, so a frame is
|
|
61
61
|
found by file name after gflow uploads it through the editor), and `r2v` from local `--ref` files
|
|
62
|
-
(see the next paragraph)
|
|
62
|
+
(see the next paragraph), plus `image t2i` and local-file `image i2i` — unsupported
|
|
63
|
+
forms still exit 36.
|
|
63
64
|
|
|
64
65
|
**`r2v` from local `--ref` files also runs there (2026-09-06).** Each file is uploaded
|
|
65
66
|
through the same editor toolbar path i2v uses — so the app's own `maseQ` reply names the
|
|
@@ -73,6 +74,12 @@ References by `@Name` and character entities stay on labs, for the same reason a
|
|
|
73
74
|
UUID does: the picker exposes no media id to anchor on. Capture:
|
|
74
75
|
[2026-09-05-migrated-r2v-attach-surface](docs/superpowers/spikes/2026-09-05-migrated-r2v-attach-surface.md).
|
|
75
76
|
|
|
77
|
+
**Images also run there (2026-09-08).** The driver selects Image mode, Nano Banana 2
|
|
78
|
+
or Pro, any supported aspect and count 1–4, then observes the page's own synchronous
|
|
79
|
+
`ogiZ0b` reply. Local I2I files use the existing `maseQ` upload and mention path; every
|
|
80
|
+
uploaded id must appear in the submit body before the result is trusted. UUID/entity
|
|
81
|
+
references, Agent instructions, and Imagen 4 remain pre-submit refusals on this host.
|
|
82
|
+
|
|
76
83
|
**Models on the migrated host.** Its picker is driven for every tier the account's
|
|
77
84
|
menu actually renders, `veo-lite-lp` included — matched by the `[Lower Priority]`
|
|
78
85
|
tag alone, exactly as on labs.google. That entry was first captured on 2026-09-05
|
|
@@ -100,8 +107,9 @@ which Playwright updates in the same tick as the hand-off navigation — and fai
|
|
|
100
107
|
with the distinct, non-retryable exit 36 instead of the misleading
|
|
101
108
|
`UiSelectorDriftError` (exit 23, "file a selector bug"). `_check_logged_in` also
|
|
102
109
|
accepts the migrated host, so a migrated load is no longer misread as a
|
|
103
|
-
logged-out session.
|
|
104
|
-
scenes, extend, instructions, tools
|
|
110
|
+
logged-out session. The generation forms listed above and characters are driven;
|
|
111
|
+
scenes, extend, instructions, tools, project creation, and the named reference/model
|
|
112
|
+
variants are the remaining work
|
|
105
113
|
tracked here — no retry helps for those until each is ported.
|
|
106
114
|
|
|
107
115
|
> **v0.66.1's fast-fail did not fire in the field, and v0.66.2 is the correction.**
|
|
@@ -391,7 +399,7 @@ Evidence: [LIVE_VERIFICATION_v0.23.0](docs/LIVE_VERIFICATION_v0.23.0.md).
|
|
|
391
399
|
|
|
392
400
|
### Expanded chat sidebar left the composer unrecoverable (exit 23)
|
|
393
401
|
|
|
394
|
-
- **Status:** **Resolved** in
|
|
402
|
+
- **Status:** **Resolved** in v0.60.0 — fixed and A/B-verified live;
|
|
395
403
|
tracked in [#493](https://github.com/ffroliva/gflow-cli/issues/493)
|
|
396
404
|
- **Severity:** High · **Affected:** `gflow image` / `gflow video` generation on
|
|
397
405
|
accounts whose chat sidebar lacks the `edit_square` affordance, any locale
|
|
@@ -687,18 +695,52 @@ This is because Chromium holds an exclusive lock on its SQLite cookie database w
|
|
|
687
695
|
---
|
|
688
696
|
|
|
689
697
|
|
|
690
|
-
### Flow's
|
|
698
|
+
### Flow's one-time upload-terms dialog blocks the FIRST upload on an account
|
|
699
|
+
|
|
700
|
+
- **Status:** Mitigated · **Severity:** High until accepted (every `i2v --initial-frame` and `r2v --ref` on that account fails) · **Affects:** the migrated `flow.google.com` host, all versions through 0.71.0 · **Tracked:** [#719](https://github.com/ffroliva/gflow-cli/issues/719)
|
|
701
|
+
|
|
702
|
+
Flow shows a one-time **"Rights to use this image"** confirmation the first time an account uploads a file. It renders **after** the file chooser has handed the file over, and Flow sends **nothing** until it is accepted — so the driver waited out its full 60 s budget for an upload request the page had already decided not to make, then reported:
|
|
703
|
+
|
|
704
|
+
```
|
|
705
|
+
MediaUploadRejectedError (exit 27): migrated host: no maseQ reply within 60s of choosing
|
|
706
|
+
the file — the upload never reached Flow or was dropped
|
|
707
|
+
```
|
|
708
|
+
|
|
709
|
+
…and advised re-encoding the image to strip metadata. Neither the file nor the network was ever involved. Measured 2026-09-08 on three profiles, eight runs: the two accounts that had uploaded before never saw the dialog and uploaded fine; the account that never had failed 3/3. See [the spike](docs/superpowers/spikes/2026-09-08-migrated-upload-fails-two-ways.md).
|
|
691
710
|
|
|
692
|
-
|
|
711
|
+
> **This entry previously said the opposite.** It read *"Affects: the legacy in-tree Compiled Growth worker, NOT `gflow-cli` itself"*, because *"gflow-cli's API-driven path bypasses this dialog entirely (the REST endpoint already implies acceptance)"*, with *"Workaround in gflow-cli: none needed."* That was true of the REST path and became false when the migrated driver started using the editor's **own** upload — so the entry a user hitting #719 would find was reassuring them about the exact thing that was breaking their run.
|
|
693
712
|
|
|
694
|
-
|
|
713
|
+
**Mitigation** (v0.71.1): when the upload budget expires, the driver checks whether a dialog opened *during* the upload window and, if so, says so and points the user at the one-time acceptance instead of blaming the file.
|
|
695
714
|
|
|
696
|
-
**Workaround
|
|
715
|
+
**Workaround / how to clear it — once per account, ever:** open the project on `flow.google.com`, upload any image by hand, and accept the dialog. Uploads on that account then stop hitting *this* failure.
|
|
697
716
|
|
|
698
|
-
**
|
|
717
|
+
> **Accepting does not make every upload succeed — there is a second, unrelated failure on this path.** See the next entry. If you have already accepted the dialog and an upload still times out, you are not looking at this issue and repeating the workaround will not help.
|
|
718
|
+
|
|
719
|
+
**gflow does not accept it for you, by design.** The dialog affirms that *you* hold the rights to the content you upload; that is not a claim a tool may make on an account owner's behalf. It is also a 30-second step, once, on a path that already requires an interactive browser login (`gflow auth login`) — so automating it would buy nothing and assert something on your behalf. There is deliberately no config flag: a setting that can never safely default to on, on a once-per-account event, is a flag nobody sets.
|
|
720
|
+
|
|
721
|
+
**Legacy worker:** Compiled Growth's `flow_video.py` clicks "Concordo" / "Agree" in its own consent-dismiss block. That is a different product decision, recorded here so the two are not confused.
|
|
699
722
|
|
|
700
723
|
---
|
|
701
724
|
|
|
725
|
+
### An upload request leaves the page and Flow never answers (intermittent, migrated host)
|
|
726
|
+
|
|
727
|
+
- **Status:** Open · **Severity:** Medium (intermittent; costs a re-run, spends nothing) · **Affects:** the migrated `flow.google.com` host, `video i2v --initial-frame` and `video r2v --ref` · **Tracked:** [#719](https://github.com/ffroliva/gflow-cli/issues/719)
|
|
728
|
+
|
|
729
|
+
Distinct from the one-time upload-terms dialog above, and **not** fixed by accepting it. On an account that has already consented, roughly **1 upload in 4** sends the `maseQ` request — measured at 8 675 B for a 4 321-byte PNG, so the image is genuinely on the wire — and no reply ever arrives. Since v0.71.1 that reports:
|
|
730
|
+
|
|
731
|
+
```
|
|
732
|
+
MediaUploadRejectedError (exit 27): migrated host: no maseQ reply within 60s of choosing
|
|
733
|
+
the file — the request left the page and Flow did not answer in time
|
|
734
|
+
```
|
|
735
|
+
|
|
736
|
+
The contrasting message, **`no upload request ever left the page`**, means something client-side stopped it before the network — the consent dialog above being the known cause.
|
|
737
|
+
|
|
738
|
+
**Workaround:** re-run. The same file usually succeeds on the next attempt, and nothing is spent when it fails — Flow refuses before any submit.
|
|
739
|
+
|
|
740
|
+
**Not the file.** Three different images were ruled out in [#719](https://github.com/ffroliva/gflow-cli/issues/719), including a 4.3 KB synthetic flat colour with no metadata, and the same file uploads successfully on other attempts. Re-encoding does not help; the remediation text that used to suggest it was wrong.
|
|
741
|
+
|
|
742
|
+
**What is known.** A healthy upload window issues **4** POSTs; a failing one issued **24** — the full project-load rpcid inventory, firing ~2.6 s after the request went out, which is just before the ~2.8 s successful uploads take to answer. That has the shape of the page re-initialising underneath the in-flight upload, but no navigation event was captured, so the cause is unconfirmed. Measured 2026-09-08, 1 failure in 4 runs on one funded account — enough for "intermittent", not enough for a rate.
|
|
743
|
+
|
|
702
744
|
### Flow's release-notes ("What's new") changelog popup blocks first-run UI automation
|
|
703
745
|
|
|
704
746
|
- **Status:** Mitigated · **Severity:** Medium · **Tracked:** [#26](https://github.com/ffroliva/gflow-cli/issues/26)
|
|
@@ -1169,6 +1211,32 @@ a `WireFormatError` about video bytes — neither naming the cause). `auto` now
|
|
|
1169
1211
|
instead of a mid-run failure, and `GFLOW_CLI_PREFER_CLASSIC=1` is no longer the
|
|
1170
1212
|
workaround anyone needs to discover.
|
|
1171
1213
|
|
|
1214
|
+
### Flow's agent-mode chip hides the settings trigger on `flow.google.com` (exit 23)
|
|
1215
|
+
|
|
1216
|
+
- **Status:** Mitigated · **Severity:** High while it lasts (every video run on the account fails) · **Affects:** the migrated `flow.google.com` host, all versions through 0.71.0 · **Tracked:** [#749](https://github.com/ffroliva/gflow-cli/issues/749), follow-up [#752](https://github.com/ffroliva/gflow-cli/issues/752)
|
|
1217
|
+
|
|
1218
|
+
The migrated composer has an **Agent** chip. Pressed, Flow swaps the prompt box and
|
|
1219
|
+
leaves `.settings-trigger-button` — the element this driver waits on — in the DOM under
|
|
1220
|
+
a bare `hidden` (`display: none`, 0×0). Flow **remembers the chip per account**, so a
|
|
1221
|
+
single click in a browser made every later `gflow video` run on that account die at 30 s
|
|
1222
|
+
as `UiSelectorDriftError` (exit 23), telling the user to file a frontend-drift bug about
|
|
1223
|
+
a frontend that was working correctly.
|
|
1224
|
+
|
|
1225
|
+
**Mitigation** (v0.71.1): the readiness gate leaves agent mode by
|
|
1226
|
+
itself, so an account parked there recovers with no user action. If it cannot, the error
|
|
1227
|
+
now names which of three things happened rather than blaming drift:
|
|
1228
|
+
|
|
1229
|
+
| The message says | What it means | What to do |
|
|
1230
|
+
|---|---|---|
|
|
1231
|
+
| `the account is in Flow's agent mode … the chip could not be clicked` | something is covering the chip (a modal) | dismiss it in a browser; re-run |
|
|
1232
|
+
| `the chip was clicked, and it is STILL pressed` | the mode is pinned on this account | turn the **Agent** chip off in a browser; re-run |
|
|
1233
|
+
| `agent mode was left, but the settings trigger … still did not become visible` | the mode is off — this is real selector drift | file a bug; it is not this issue |
|
|
1234
|
+
| `the chip could not be read back, so whether the mode is still on is unknown` | the page went dark mid-recovery | check the **Agent** chip in a browser *before* filing this as drift |
|
|
1235
|
+
| `the settings trigger … is not visible — the account is in Flow's agent mode` | the mode flipped **mid-run**, after the editor was already ready | turn the **Agent** chip off in a browser; re-run |
|
|
1236
|
+
|
|
1237
|
+
**On 0.71.0 and earlier there is no recovery.** Open the project on
|
|
1238
|
+
`flow.google.com`, click the **Agent** chip off, and the account works again.
|
|
1239
|
+
|
|
1172
1240
|
### Auth verification depends on Google's NextAuth session endpoint
|
|
1173
1241
|
|
|
1174
1242
|
- **Status:** Mitigated · **Severity:** Low (degrades fail-closed) · **Affects:** issue #15 fix onward · **Tracked:** issue #15
|
|
@@ -1455,9 +1523,10 @@ End-to-end live-verified on the `ffroliva` profile across `9:16`, `16:9`, `1:1`,
|
|
|
1455
1523
|
|
|
1456
1524
|
### G12 "browser not secure" block — Google rejects automated sign-in
|
|
1457
1525
|
|
|
1458
|
-
- **Status:** Resolved · **Severity:** Critical (blocked `gflow auth login`) · **Fixed in:** v0.6.0a2
|
|
1526
|
+
- **Status:** Resolved · **Severity:** Critical (blocked `gflow auth login`) · **Fixed in:** v0.6.0a2 · **Mitigation reimplemented + re-measured:** 2026-09-08
|
|
1459
1527
|
|
|
1460
|
-
Google's sign-in flow (`accounts.google.com/v3/signin/rejected`)
|
|
1528
|
+
Google's sign-in flow (`accounts.google.com/v3/signin/rejected`) rejects a browser that
|
|
1529
|
+
advertises itself as automated, and refuses the login with no user-facing error.
|
|
1461
1530
|
|
|
1462
1531
|
**Root cause (timing race):** Without `--disable-blink-features=AutomationControlled`,
|
|
1463
1532
|
Blink's C++ engine sets `navigator.webdriver = true` as a non-configurable, non-writable
|
|
@@ -1465,20 +1534,52 @@ native property at Chrome startup — before any JavaScript (including `add_init
|
|
|
1465
1534
|
can run. The `Object.defineProperty` override silently fails. With the flag, the property
|
|
1466
1535
|
is never set; the JS override then works as belt-and-suspenders.
|
|
1467
1536
|
|
|
1468
|
-
**Resolution:** `
|
|
1469
|
-
|
|
1537
|
+
**Resolution:** `gflow auth login` launches the system's real Google Chrome through
|
|
1538
|
+
Playwright's `channel="chrome"` with `chromium_sandbox=True`, `no_viewport=True`, and both
|
|
1539
|
+
stealth flags — `--disable-blink-features=AutomationControlled` and
|
|
1540
|
+
`ignore_default_args=["--enable-automation"]`. Because gflow owns that browser it also
|
|
1541
|
+
detects the completed Flow sign-in and closes the window itself; see
|
|
1542
|
+
[docs/AUTHENTICATION.md](docs/AUTHENTICATION.md). When no Chrome channel resolves, or
|
|
1543
|
+
Google rejects the browser anyway, login falls back automatically to launching Chrome as a
|
|
1544
|
+
plain subprocess and waiting for you to close the window. There is no flag and no choice to
|
|
1545
|
+
make, and closing the window yourself works on either path.
|
|
1546
|
+
|
|
1547
|
+
> **This entry described that Playwright implementation long before it existed.**
|
|
1548
|
+
> It read *"`v0.6.0a2` adds `RealChromeStrategy` — launches the system's real Google Chrome
|
|
1549
|
+
> via Playwright's `channel="chrome"` with stealth flags."* `src/gflow_cli/auth/real_chrome.py`
|
|
1550
|
+
> was created at `eb0de133` (2026-07-19) as a bare `subprocess.Popen` passive capture, and
|
|
1551
|
+
> `git log -S'channel="chrome"' -- src/gflow_cli/auth/` returned **zero** commits until the
|
|
1552
|
+
> auto-close change. The paragraph above is the same shape restated deliberately as current
|
|
1553
|
+
> fact, not the same accident left standing.
|
|
1470
1554
|
|
|
1471
1555
|
```bash
|
|
1472
|
-
#
|
|
1556
|
+
# Ask for real Chrome explicitly:
|
|
1473
1557
|
gflow auth login --browser chrome
|
|
1474
1558
|
|
|
1475
1559
|
# Or rely on auto-detection (default behaviour; picks real Chrome if installed):
|
|
1476
1560
|
gflow auth login
|
|
1477
1561
|
```
|
|
1478
1562
|
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1563
|
+
**The block is current Google behaviour — "Resolved" means the mitigation holds, not that
|
|
1564
|
+
Google stopped.** Re-measured 2026-09-08 across three throwaway *unauthenticated* profiles,
|
|
1565
|
+
each signed into by hand
|
|
1566
|
+
([spike](docs/superpowers/spikes/2026-09-08-g12-blocks-webdriver-not-playwright.md)): a
|
|
1567
|
+
browser advertising `navigator.webdriver === true` — real Chrome, no stealth flags — was
|
|
1568
|
+
rejected at `/v3/signin/rejected` **17.5 s** into the flow, while the same real Chrome
|
|
1569
|
+
*with* the flags reported `false`, never saw the rejection, and reached a Flow session
|
|
1570
|
+
cookie at 59.4 s. Playwright's bundled Chromium with the flags passed too, so the binary is
|
|
1571
|
+
not the discriminator; `navigator.webdriver` tracked the outcome in all three arms.
|
|
1572
|
+
|
|
1573
|
+
> **This is N=1 — do not read it as a capability claim.** One account, one Windows host, one
|
|
1574
|
+
> residential IP, one Chrome build (`Chrome/149.0.0.0`), one day. Google's sign-in risk
|
|
1575
|
+
> scoring varies with account age and IP reputation, so it does not predict CI, a VPS, or a
|
|
1576
|
+
> fresh account. Every arm ran headed, so it says nothing about headless in either
|
|
1577
|
+
> direction. Sign-in is also a different gate from generation's reCAPTCHA Enterprise check;
|
|
1578
|
+
> a result on one does not move the other.
|
|
1579
|
+
|
|
1580
|
+
The Chrome window no longer shows the "You are using an unsupported command-line flag"
|
|
1581
|
+
notice this entry used to warn about: that banner came from the `--no-sandbox` Playwright
|
|
1582
|
+
injects by default, and `chromium_sandbox=True` stops the injection.
|
|
1482
1583
|
|
|
1483
1584
|
---
|
|
1484
1585
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: gflow-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.72.0
|
|
4
4
|
Summary: Unofficial CLI for Google Flow — drive Veo image-to-video generations from the terminal.
|
|
5
5
|
Project-URL: Homepage, https://github.com/ffroliva/gflow-cli
|
|
6
6
|
Project-URL: Issues, https://github.com/ffroliva/gflow-cli/issues
|
|
@@ -130,7 +130,7 @@ gflow character create --project <id> --name "Aria" --face-prompt "..." --body-p
|
|
|
130
130
|
|
|
131
131
|
Outputs land under `$GFLOW_CLI_OUTPUT_DIR`, or you can route them to S3, MinIO, or Google Cloud Storage with [`GFLOW_CLI_STORAGE_URI`](docs/EXTERNAL_STORAGE.md). The first call takes 30 to 90 seconds while Chromium warms up; later calls reuse the warm session.
|
|
132
132
|
|
|
133
|
-
> **Why `--browser chrome`?**
|
|
133
|
+
> **Why `--browser chrome`?** It is the only strategy that marks the profile as a real-Chrome profile, which is what later generation runs open it with. The default `auto` picks it whenever Chrome is installed — see [docs/AUTHENTICATION.md](docs/AUTHENTICATION.md).
|
|
134
134
|
|
|
135
135
|
> **Installing from a local checkout?** `uv tool install <path>` **ignores `uv.lock`** and resolves dependencies from the `pyproject.toml` ranges, so it can hand you a Playwright build this project has never tested. Playwright ships the browser driver, and an untested minor can wedge a generation silently. Carry the locked version explicitly:
|
|
136
136
|
>
|
|
@@ -198,7 +198,7 @@ gflow CLI → Provider (interchangeable) → Flow (ui_automation) / Mock (te
|
|
|
198
198
|
|
|
199
199
|
**Current transport:** `ui_automation` drives Flow through a persistent Playwright Chromium profile. It is production-stable and verified end-to-end every release (see the per-release `LIVE_VERIFICATION_*` evidence files).
|
|
200
200
|
|
|
201
|
-
**Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`).
|
|
201
|
+
**Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). The migrated driver covers text-to-video, image-to-video from a local start frame, reference-to-video from local files, text-to-image, and image-to-image from local files. Image generation supports Nano Banana 2 / Pro, the four aspect ratios measured on that host (16:9, 4:3, 1:1, 9:16), and counts 1–4; an existing project is required at the transport boundary. UUID/entity references, instructions, Imagen 4, and the rest of the matrix keep the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
|
|
202
202
|
|
|
203
203
|
**What's blocked:** a pure HTTP transport for video generation. The video upload endpoint returns HTTP 401 under non-Chrome browsers plus a reCAPTCHA mint we cannot reproduce headlessly. Three earlier HTTP strategies (`evaluate_fetch`, `bearer`, `sapisidhash`) live under `src/gflow_cli/api/transports/experimental/` for research, off the production path.
|
|
204
204
|
|
|
@@ -59,7 +59,7 @@ gflow character create --project <id> --name "Aria" --face-prompt "..." --body-p
|
|
|
59
59
|
|
|
60
60
|
Outputs land under `$GFLOW_CLI_OUTPUT_DIR`, or you can route them to S3, MinIO, or Google Cloud Storage with [`GFLOW_CLI_STORAGE_URI`](docs/EXTERNAL_STORAGE.md). The first call takes 30 to 90 seconds while Chromium warms up; later calls reuse the warm session.
|
|
61
61
|
|
|
62
|
-
> **Why `--browser chrome`?**
|
|
62
|
+
> **Why `--browser chrome`?** It is the only strategy that marks the profile as a real-Chrome profile, which is what later generation runs open it with. The default `auto` picks it whenever Chrome is installed — see [docs/AUTHENTICATION.md](docs/AUTHENTICATION.md).
|
|
63
63
|
|
|
64
64
|
> **Installing from a local checkout?** `uv tool install <path>` **ignores `uv.lock`** and resolves dependencies from the `pyproject.toml` ranges, so it can hand you a Playwright build this project has never tested. Playwright ships the browser driver, and an untested minor can wedge a generation silently. Carry the locked version explicitly:
|
|
65
65
|
>
|
|
@@ -127,7 +127,7 @@ gflow CLI → Provider (interchangeable) → Flow (ui_automation) / Mock (te
|
|
|
127
127
|
|
|
128
128
|
**Current transport:** `ui_automation` drives Flow through a persistent Playwright Chromium profile. It is production-stable and verified end-to-end every release (see the per-release `LIVE_VERIFICATION_*` evidence files).
|
|
129
129
|
|
|
130
|
-
**Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`).
|
|
130
|
+
**Two Flow frontends:** Google is moving accounts from `labs.google` onto `flow.google.com` ([#639](https://github.com/ffroliva/gflow-cli/issues/639)) — same product, different widget toolkit and wire protocol (`batchexecute` instead of `aisandbox-pa`). The migrated driver covers text-to-video, image-to-video from a local start frame, reference-to-video from local files, text-to-image, and image-to-image from local files. Image generation supports Nano Banana 2 / Pro, the four aspect ratios measured on that host (16:9, 4:3, 1:1, 9:16), and counts 1–4; an existing project is required at the transport boundary. UUID/entity references, instructions, Imagen 4, and the rest of the matrix keep the labs driver until ported (`GFLOW_CLI_FLOW_HOST`, see [CONFIGURATION](docs/CONFIGURATION.md#gflow_cli_flow_host)).
|
|
131
131
|
|
|
132
132
|
**What's blocked:** a pure HTTP transport for video generation. The video upload endpoint returns HTTP 401 under non-Chrome browsers plus a reCAPTCHA mint we cannot reproduce headlessly. Three earlier HTTP strategies (`evaluate_fetch`, `bearer`, `sapisidhash`) live under `src/gflow_cli/api/transports/experimental/` for research, off the production path.
|
|
133
133
|
|