gflow-cli 0.65.0__tar.gz → 0.66.1__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.
Files changed (866) hide show
  1. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.codex-plugin/plugin.json +1 -1
  2. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/CHANGELOG.md +81 -1
  3. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/KNOWN_ISSUES.md +46 -0
  4. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/PKG-INFO +1 -1
  5. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/DEBUGGING.md +2 -1
  6. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/INDEX.md +4 -0
  7. gflow_cli-0.66.1/docs/LIVE_VERIFICATION_v0.66.0.md +119 -0
  8. gflow_cli-0.66.1/docs/LIVE_VERIFICATION_v0.66.1.md +69 -0
  9. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/PROJECT_STATUS.md +79 -0
  10. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/USAGE.md +1 -0
  11. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/pyproject.toml +1 -1
  12. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/__init__.py +1 -1
  13. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/client.py +17 -2
  14. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/routes.py +32 -0
  15. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/_common.py +38 -0
  16. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/drivers/factory.py +21 -0
  17. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/ui_automation.py +9 -7
  18. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/ui_automation_video.py +17 -1
  19. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/diagnostics.py +11 -0
  20. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/errors.py +40 -0
  21. gflow_cli-0.66.1/tests/api/test_routes_locale.py +185 -0
  22. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/drivers/test_ui_mode.py +96 -1
  23. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_agentic_cohort_detection.py +104 -0
  24. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_common.py +97 -1
  25. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_ui_automation.py +40 -0
  26. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_diagnostics_recorder.py +28 -0
  27. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_diagnostics_sanitize.py +13 -0
  28. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/uv.lock +1 -1
  29. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/DEBUGGING.md +2 -1
  30. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/KNOWN_ISSUES.md +46 -0
  31. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/USAGE.md +1 -0
  32. gflow_cli-0.65.0/tests/api/test_routes_locale.py +0 -68
  33. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.agents/plugins/marketplace.json +0 -0
  34. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/README.md +0 -0
  35. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/active.md +0 -0
  36. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/branch-review.md +0 -0
  37. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/changelog.md +0 -0
  38. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/check.md +0 -0
  39. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/doc-review.md +0 -0
  40. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/issue-assessment.md +0 -0
  41. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/issue-resolve.md +0 -0
  42. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/known-issues.md +0 -0
  43. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/live-verify.md +0 -0
  44. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/llm-council.md +0 -0
  45. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/next.md +0 -0
  46. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/plan.md +0 -0
  47. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/pr-council-review.md +0 -0
  48. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/predict.md +0 -0
  49. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/release.md +0 -0
  50. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/scenario.md +0 -0
  51. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/sonar.md +0 -0
  52. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.claude/commands/gflow/status.md +0 -0
  53. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.env.template +0 -0
  54. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.gitattributes +0 -0
  55. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/CODEOWNERS +0 -0
  56. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/FUNDING.yml +0 -0
  57. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  58. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/copilot-instructions.md +0 -0
  59. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/dependabot.yml +0 -0
  60. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/workflows/ci.yml +0 -0
  61. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/workflows/deps-watch.yml +0 -0
  62. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/workflows/external-pr-triage.yml +0 -0
  63. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/workflows/governance-advisory.yml +0 -0
  64. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/workflows/governance-benchmark.yml +0 -0
  65. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/workflows/labels.yml +0 -0
  66. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/workflows/main-base-guard.yml +0 -0
  67. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/workflows/pages.yml +0 -0
  68. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/workflows/release.yml +0 -0
  69. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/workflows/scorecard.yml +0 -0
  70. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/workflows/selector-probe.yml +0 -0
  71. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.github/workflows/star-history-watch.yml +0 -0
  72. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.gitignore +0 -0
  73. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.gitleaks.toml +0 -0
  74. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.pre-commit-config.yaml +0 -0
  75. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/.secrets.baseline +0 -0
  76. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/AGENTS.md +0 -0
  77. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/CLAUDE.md +0 -0
  78. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/CONFIGURATION.md +0 -0
  79. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/CONTRIBUTING.md +0 -0
  80. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/DISCLAIMER.md +0 -0
  81. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/LICENSE +0 -0
  82. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/PLAN.md +0 -0
  83. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/README.md +0 -0
  84. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/RELEASE.md +0 -0
  85. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/ROADMAP.md +0 -0
  86. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/conftest.py +0 -0
  87. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/deploy/PR-TRIAGE-AUTOPILOT-OPS.md +0 -0
  88. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/deploy/logrotate-pr-triage +0 -0
  89. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docker-compose.yml +0 -0
  90. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/ACCOUNT_SAFETY.md +0 -0
  91. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/AGENT_GUIDE.md +0 -0
  92. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/AGENT_UI_E2E.md +0 -0
  93. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/AGENT_UI_RECON.md +0 -0
  94. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/ARCHITECTURE.md +0 -0
  95. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/ASSET_TAGGING_RECON.md +0 -0
  96. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/AUTHENTICATION.md +0 -0
  97. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/CHARACTER.md +0 -0
  98. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/CHARACTER_RECON.md +0 -0
  99. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/CONFIGURATION.md +0 -0
  100. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/DATA_LAYER.md +0 -0
  101. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/DEMOS.md +0 -0
  102. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/DEVELOPMENT.md +0 -0
  103. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/E2E_TESTING.md +0 -0
  104. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/EXTERNAL_STORAGE.md +0 -0
  105. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/GITHUB.md +0 -0
  106. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/GOVERNANCE_BENCHMARK.md +0 -0
  107. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/IMAGE_UPSCALE_RECON.md +0 -0
  108. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/INSTRUCTIONS.md +0 -0
  109. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_data_layer.md +0 -0
  110. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_image_batch.md +0 -0
  111. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_playwright_1.61.md +0 -0
  112. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_reference_entity_guard.md +0 -0
  113. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.10.0.md +0 -0
  114. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.11.0.md +0 -0
  115. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.12.0.md +0 -0
  116. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.13.0.md +0 -0
  117. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.16.0.md +0 -0
  118. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.17.0.md +0 -0
  119. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.18.0.md +0 -0
  120. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.19.0.md +0 -0
  121. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.20.0.md +0 -0
  122. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.20.1.md +0 -0
  123. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.21.0.md +0 -0
  124. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.22.0.md +0 -0
  125. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.23.0.md +0 -0
  126. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.24.0.md +0 -0
  127. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.25.0.md +0 -0
  128. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.26.0.md +0 -0
  129. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.27.0.md +0 -0
  130. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.27.1.md +0 -0
  131. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.28.0.md +0 -0
  132. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.29.0.md +0 -0
  133. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.30.0.md +0 -0
  134. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.31.0.md +0 -0
  135. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.32.0.md +0 -0
  136. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.32.1.md +0 -0
  137. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.33.0.md +0 -0
  138. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.34.0.md +0 -0
  139. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.35.0.md +0 -0
  140. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.36.0.md +0 -0
  141. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.37.0.md +0 -0
  142. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.38.0.md +0 -0
  143. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.38.1.md +0 -0
  144. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.39.0.md +0 -0
  145. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.40.0-production-readiness.md +0 -0
  146. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.40.0.md +0 -0
  147. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.41.0.md +0 -0
  148. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.42.0.md +0 -0
  149. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.43.0.md +0 -0
  150. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.44.0.md +0 -0
  151. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.45.0.md +0 -0
  152. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.46.0.md +0 -0
  153. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.46.1.md +0 -0
  154. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.47.0.md +0 -0
  155. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.48.0.md +0 -0
  156. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.49.0.md +0 -0
  157. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.50.0.md +0 -0
  158. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.51.0.md +0 -0
  159. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.52.0.md +0 -0
  160. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.54.0.md +0 -0
  161. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.55.0.md +0 -0
  162. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.56.0.md +0 -0
  163. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.57.0.md +0 -0
  164. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.57.1.md +0 -0
  165. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.58.0.md +0 -0
  166. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.59.0.md +0 -0
  167. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.60.0.md +0 -0
  168. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.61.0.md +0 -0
  169. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.62.0.md +0 -0
  170. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.62.1.md +0 -0
  171. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.63.0.md +0 -0
  172. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.64.0.md +0 -0
  173. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.65.0.md +0 -0
  174. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.7.0.md +0 -0
  175. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.8.1.md +0 -0
  176. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.9.0.md +0 -0
  177. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_v0.9.1.md +0 -0
  178. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/LIVE_VERIFICATION_video_download.md +0 -0
  179. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/MCP.md +0 -0
  180. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/MEDIA_LIBRARY.md +0 -0
  181. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/MOVIE.md +0 -0
  182. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/PROMPT_EXPANSION.md +0 -0
  183. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/REFERENCE_STRATEGIES.md +0 -0
  184. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/SECURITY.md +0 -0
  185. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/TOOLS.md +0 -0
  186. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/USER_GUIDE.md +0 -0
  187. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/assets/demo-split-pf.gif +0 -0
  188. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/assets/example-run.gif +0 -0
  189. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/assets/examples.webp +0 -0
  190. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/medium_tutorial.md +0 -0
  191. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/schemas/movie-handoff.schema.json +0 -0
  192. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/sonar-cleanup-tracker.md +0 -0
  193. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-06-12-issue-174-library-ui-attach/PLAN.md +0 -0
  194. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-06-22-mcp-server/PLAN.md +0 -0
  195. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-06-22-mcp-server/PREDICT.md +0 -0
  196. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-06-22-mcp-server/SCENARIO.md +0 -0
  197. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/PLAN.md +0 -0
  198. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/PREDICT.md +0 -0
  199. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-06-22-prompt-expansion/SCENARIO.md +0 -0
  200. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-06-24-gflow-studio-scaffold/PLAN.md +0 -0
  201. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-06-24-rest-api-layer/PLAN.md +0 -0
  202. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-06-26-mcp-e2e-test/PLAN.md +0 -0
  203. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-07-08-pr-triage-autopilot/PLAN.md +0 -0
  204. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-07-09-camoufox-adoption/PLAN.md +0 -0
  205. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-07-14-storyboarding-and-visual-curation/PLAN.md +0 -0
  206. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-07-18-asset-tagging/PLAN.md +0 -0
  207. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-07-19-live-verify/PLAN.md +0 -0
  208. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-07-19-production-readiness-browser-lifecycle.md +0 -0
  209. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-07-19-production-readiness-driver-cdp-verification.md +0 -0
  210. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-07-19-production-readiness-public-truth.md +0 -0
  211. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-07-19-production-readiness-queue-safety.md +0 -0
  212. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-07-26-character-prompt-polishing/PLAN.md +0 -0
  213. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-07-26-project-name-management/PLAN.md +0 -0
  214. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-07-26-self-documenting-errors/PLAN.md +0 -0
  215. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-07-27-overlay-banner-dismissal/PLAN.md +0 -0
  216. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/PLAN.md +0 -0
  217. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-07-27-tier-aware-credit-confirmations/SCENARIO.md +0 -0
  218. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-04-mcp-tasks/PLAN.md +0 -0
  219. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-04-output-hardening/PLAN.md +0 -0
  220. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/PLAN.md +0 -0
  221. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-05-issue-317-intra-batch-references/SCENARIO.md +0 -0
  222. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/PLAN.md +0 -0
  223. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-05-issue-402-entity-provenance/SCENARIO.md +0 -0
  224. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/PLAN.md +0 -0
  225. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-05-issue-451-duration-tab-drift/SCENARIO.md +0 -0
  226. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/PLAN.md +0 -0
  227. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-06-driver-delay-jittering/SCENARIO.md +0 -0
  228. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/PLAN.md +0 -0
  229. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-06-overlay-changelog-watermark/SCENARIO.md +0 -0
  230. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-06-ui-mode-policy/PLAN.md +0 -0
  231. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-06-ui-mode-policy/SCENARIO.md +0 -0
  232. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/PLAN.md +0 -0
  233. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-14-video-ui-mode-policy/SCENARIO.md +0 -0
  234. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-21-selector-registry.md +0 -0
  235. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-08-25-workflow-hardening-gaps.md +0 -0
  236. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/plans/2026-09-01-video-extend/PLAN.md +0 -0
  237. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/research/2026-06-27-tool-abstraction-evaluation.md +0 -0
  238. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/specs/2026-06-29-issue-assessment-workflow-design.md +0 -0
  239. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/specs/2026-07-04-pr-triage-autopilot-design.md +0 -0
  240. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/specs/2026-07-18-asset-tagging-design.md +0 -0
  241. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/specs/2026-07-19-live-verify-design.md +0 -0
  242. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/specs/2026-07-19-production-readiness-hardening-design.md +0 -0
  243. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/specs/2026-08-21-selector-registry-design.md +0 -0
  244. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/specs/2026-08-26-model-attribution-provenance.md +0 -0
  245. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/specs/2026-08-26-model-cost-quota-catalog.md +0 -0
  246. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/specs/2026-08-27-changelog-modal-precondition-design.md +0 -0
  247. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/spikes/2026-07-09-camoufox-waf-403.md +0 -0
  248. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/spikes/2026-07-12-ui-cohort-backend-config.md +0 -0
  249. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/spikes/2026-07-17-production-readiness-assessment.md +0 -0
  250. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/spikes/2026-08-01-mcp-2026-07-28-spec-impact.md +0 -0
  251. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/spikes/2026-08-14-video-model-capability-matrix.md +0 -0
  252. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/spikes/2026-08-15-picker-tile-alt-text.md +0 -0
  253. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/docs/superpowers/spikes/2026-08-31-veo-extend-route-recon.md +0 -0
  254. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/eval/pr_triage_eval.py +0 -0
  255. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/eval/pr_triage_fixtures.json +0 -0
  256. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/examples/README.md +0 -0
  257. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/examples/batch_from_config.py +0 -0
  258. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/examples/multi_prompt_t2i.py +0 -0
  259. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/examples/sample_config.json +0 -0
  260. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/examples/sample_prompts.txt +0 -0
  261. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/examples/single_image_t2i.py +0 -0
  262. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/examples/workflow_chain.py +0 -0
  263. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/index.html +0 -0
  264. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/llms.txt +0 -0
  265. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/README.md +0 -0
  266. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/captured/01_upload_image.json +0 -0
  267. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/captured/02_batchAsyncGenerateVideoText.json +0 -0
  268. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/captured/03_batchCheckAsyncVideoGenerationStatus.json +0 -0
  269. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/captured/04_archive_workflow.json +0 -0
  270. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/captured/05_createProject.json +0 -0
  271. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/captured/06_batchGenerateImages.json +0 -0
  272. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/captured/07_batchGenerateImages_seeded.json +0 -0
  273. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/captured/08_batchAsyncGenerateVideoStartAndEndImage.json +0 -0
  274. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/captured/09_batchAsyncGenerateVideoReferenceImages.json +0 -0
  275. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/captured/10_batchCheckAsyncVideoGenerationStatus_successful.json +0 -0
  276. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/captured/11_batchCheckAsyncVideoGenerationStatus_failed.json +0 -0
  277. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/captured/12_create_scene.json +0 -0
  278. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/captured/13_sceneWorkflows_update.json +0 -0
  279. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/captured/14_get_scene_workflows.json +0 -0
  280. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/samples/captured/15_commit_flowWorkflow.json +0 -0
  281. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/autopilot/Dockerfile.triage +0 -0
  282. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/autopilot/entrypoint.sh +0 -0
  283. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/autopilot/package-lock.json +0 -0
  284. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/autopilot/package.json +0 -0
  285. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/autopilot/pr_triage_autopilot.py +0 -0
  286. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/autopilot/pr_triage_gate.py +0 -0
  287. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/autopilot/run_sandboxed_review.sh +0 -0
  288. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/canary/register_task.ps1 +0 -0
  289. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/canary/run_canary.py +0 -0
  290. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/ci/check_doc_links.py +0 -0
  291. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/ci/check_materiality.py +0 -0
  292. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/ci/check_release_artifacts.py +0 -0
  293. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/ci/check_repo_hygiene.py +0 -0
  294. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/ci/check_test_count.py +0 -0
  295. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/ci/check_website_docs_pii.py +0 -0
  296. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/ci/generate_website_docs.py +0 -0
  297. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/debug_editor.py +0 -0
  298. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/debug_gen_settings.py +0 -0
  299. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/debug_settings.py +0 -0
  300. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/_recording_client.py +0 -0
  301. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/_spike_common.py +0 -0
  302. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/active_plan.py +0 -0
  303. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/analyze_agent_ui_capture.py +0 -0
  304. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/capture_frames_mode_trigger_ligature.py +0 -0
  305. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/capture_i2v_frame_slots_dom.py +0 -0
  306. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/capture_i2v_intercept_submit.py +0 -0
  307. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/capture_i2v_model_select_repro.py +0 -0
  308. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/capture_i2v_post_bind_state.py +0 -0
  309. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/capture_image_add_media_dom.py +0 -0
  310. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/capture_locale_invariants.py +0 -0
  311. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/capture_lower_priority_model_cost.py +0 -0
  312. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/capture_project_listing.py +0 -0
  313. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/capture_r2v_ingredient_lifecycle.py +0 -0
  314. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/capture_sidebar_state_dom.py +0 -0
  315. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/capture_video_model_capability_matrix.py +0 -0
  316. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/cdp_drive_and_probe.py +0 -0
  317. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/character_create_spike.py +0 -0
  318. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/character_create_spike_v2.py +0 -0
  319. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/dump_character_selectors.js +0 -0
  320. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/incident_bundle_quality.py +0 -0
  321. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/live_verify_mcp_tasks.py +0 -0
  322. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/live_verify_policy_400_v060.py +0 -0
  323. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/live_verify_video_model_select.py +0 -0
  324. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/make_project.py +0 -0
  325. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/materiality_backtest.py +0 -0
  326. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/measure_locale_probe.py +0 -0
  327. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/patch_character.py +0 -0
  328. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/skillopt/README.md +0 -0
  329. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/skillopt/harness.py +0 -0
  330. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/skillopt/tasks.json +0 -0
  331. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/sonar-local-scan.sh +0 -0
  332. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/sonar-pre-push-gate.sh +0 -0
  333. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_changelog_capture.py +0 -0
  334. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_char_editor_dom.py +0 -0
  335. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_char_gen_capture.py +0 -0
  336. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_character_prompt_format.py +0 -0
  337. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_extend_model_recon.py +0 -0
  338. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_extend_ourstack_verify.py +0 -0
  339. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_extend_route_capture.py +0 -0
  340. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_extend_submit_capture.py +0 -0
  341. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_extend_ui_recon.py +0 -0
  342. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_image_upscale_capture.py +0 -0
  343. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_image_upscale_drive.py +0 -0
  344. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_image_upscale_recaptcha_action.py +0 -0
  345. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_image_upscale_rest_probe.py +0 -0
  346. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_incident_live.py +0 -0
  347. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_issue170_picker_locale_recon.py +0 -0
  348. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_issue174_library_ui_recon.py +0 -0
  349. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_issue313_agent_mode_controls.py +0 -0
  350. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_issue314_picker_filename_search.py +0 -0
  351. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_issue404_count_tabs_recon.py +0 -0
  352. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_locale_poison.py +0 -0
  353. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_mode_roundtrip.py +0 -0
  354. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_mode_switch_agentic_to_classic.py +0 -0
  355. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_model_inventory.py +0 -0
  356. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_movie_attach_payload.py +0 -0
  357. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_movie_entity_recon.py +0 -0
  358. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_movie_gen_capture.py +0 -0
  359. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_movie_picker_select.py +0 -0
  360. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_movie_voice_list.py +0 -0
  361. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_omni_flash_i2v_ui_recon.py +0 -0
  362. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_patch_entity.py +0 -0
  363. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_patchright.py +0 -0
  364. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_trpc_origin_referer_401.py +0 -0
  365. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/spike_video_tab_dom.py +0 -0
  366. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/verify_language_agnostic.py +0 -0
  367. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/verify_locale_navigation_race.py +0 -0
  368. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/dev/verify_model_attribution.py +0 -0
  369. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/diag/README.md +0 -0
  370. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/diag/capture_flow_traffic.py +0 -0
  371. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/diag/diag_aisandbox_bearer.py +0 -0
  372. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/diag/memory_profile.py +0 -0
  373. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/diag/recaptcha_mint.py +0 -0
  374. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/diag/spike_387_openai_compat.py +0 -0
  375. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/e2e/agentic_image_e2e.ps1 +0 -0
  376. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/e2e/capture_agent_toggle.py +0 -0
  377. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/probe/run_probe.py +0 -0
  378. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/probe/spike_auth_matrix.py +0 -0
  379. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/record_demo.ps1 +0 -0
  380. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/smoke_image.py +0 -0
  381. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/smoke_video_editor.py +0 -0
  382. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/smoke_worker_style.py +0 -0
  383. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/spike_waf_camoufox.py +0 -0
  384. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/scripts/verify_chrome_auth_viability.py +0 -0
  385. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/README.md +0 -0
  386. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/changelog/SKILL.md +0 -0
  387. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/check/SKILL.md +0 -0
  388. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/doc-review/SKILL.md +0 -0
  389. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/gflow-cli/SKILL.md +0 -0
  390. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/issue-assessment/SKILL.md +0 -0
  391. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/issue-resolve/SKILL.md +0 -0
  392. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/known-issues/SKILL.md +0 -0
  393. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/live-verify/SKILL.md +0 -0
  394. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/llm-council/SKILL.md +0 -0
  395. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/plan/SKILL.md +0 -0
  396. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/pr-council-review/SKILL.md +0 -0
  397. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/predict/SKILL.md +0 -0
  398. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/release/SKILL.md +0 -0
  399. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/scenario/SKILL.md +0 -0
  400. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/sonar/SKILL.md +0 -0
  401. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/skills/status/SKILL.md +0 -0
  402. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/sonar-project.properties +0 -0
  403. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/__main__.py +0 -0
  404. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/_cli_helpers.py +0 -0
  405. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/__init__.py +0 -0
  406. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/_engine.py +0 -0
  407. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/_retry.py +0 -0
  408. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/_sapisidhash.py +0 -0
  409. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/character.py +0 -0
  410. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/dto.py +0 -0
  411. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/extend_chain.py +0 -0
  412. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/image.py +0 -0
  413. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/image_upscale.py +0 -0
  414. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/recaptcha.py +0 -0
  415. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/scene.py +0 -0
  416. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/__init__.py +0 -0
  417. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/_fingerprint.py +0 -0
  418. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/base.py +0 -0
  419. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/drivers/__init__.py +0 -0
  420. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/drivers/agentic.py +0 -0
  421. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/drivers/base.py +0 -0
  422. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/drivers/classic.py +0 -0
  423. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/experimental/__init__.py +0 -0
  424. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/experimental/bearer.py +0 -0
  425. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/experimental/evaluate_fetch.py +0 -0
  426. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/experimental/sapisidhash.py +0 -0
  427. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/transports/mode_control.py +0 -0
  428. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/video.py +0 -0
  429. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/api/video_extend.py +0 -0
  430. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/auth/__init__.py +0 -0
  431. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/auth/base.py +0 -0
  432. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/auth/cookies.py +0 -0
  433. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/auth/factory.py +0 -0
  434. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/auth/internal_chromium.py +0 -0
  435. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/auth/real_chrome.py +0 -0
  436. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/auth/strategies.py +0 -0
  437. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/auth/verification.py +0 -0
  438. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/browser_manager.py +0 -0
  439. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/chain.py +0 -0
  440. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/chain_manifest.py +0 -0
  441. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/cli.py +0 -0
  442. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/cli_character.py +0 -0
  443. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/cli_data.py +0 -0
  444. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/cli_doctor.py +0 -0
  445. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/cli_image.py +0 -0
  446. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/cli_instructions.py +0 -0
  447. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/cli_models.py +0 -0
  448. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/cli_movie.py +0 -0
  449. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/cli_project.py +0 -0
  450. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/cli_run.py +0 -0
  451. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/cli_scene.py +0 -0
  452. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/cli_tools.py +0 -0
  453. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/cli_video.py +0 -0
  454. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/composition.py +0 -0
  455. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/config.py +0 -0
  456. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/__init__.py +0 -0
  457. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/chain_repo.py +0 -0
  458. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/migrations/0001_initial.sql +0 -0
  459. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/migrations/0002_add_cloud_storage.sql +0 -0
  460. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/migrations/0003_add_scene_tables.sql +0 -0
  461. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/migrations/0004_add_scene_output_path.sql +0 -0
  462. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/migrations/0005_add_chain_links.sql +0 -0
  463. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/migrations/0006_add_operations_metadata.sql +0 -0
  464. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/migrations/0007_queue.sql +0 -0
  465. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/migrations/0008_add_operation_expanded_prompt.sql +0 -0
  466. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/migrations/0009_queue_claims.sql +0 -0
  467. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/migrations/__init__.py +0 -0
  468. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/models.py +0 -0
  469. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/queries.py +0 -0
  470. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/recorder.py +0 -0
  471. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/redaction.py +0 -0
  472. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/repository.py +0 -0
  473. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/data/store.py +0 -0
  474. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/exceptions.py +0 -0
  475. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/file_integrity.py +0 -0
  476. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/flow_selectors/__init__.py +0 -0
  477. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/flow_selectors/grading.py +0 -0
  478. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/flow_selectors/model.py +0 -0
  479. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/flow_selectors/registry.py +0 -0
  480. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/image_batch.py +0 -0
  481. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/json_output.py +0 -0
  482. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/mcp/__init__.py +0 -0
  483. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/mcp/prompts.py +0 -0
  484. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/mcp/resources.py +0 -0
  485. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/mcp/server.py +0 -0
  486. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/mcp/setup.py +0 -0
  487. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/mcp/tasks_extension.py +0 -0
  488. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/mcp/tools.py +0 -0
  489. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/media.py +0 -0
  490. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/movie_manifest.py +0 -0
  491. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/observability.py +0 -0
  492. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/paths.py +0 -0
  493. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/profile_lease.py +0 -0
  494. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/profile_store.py +0 -0
  495. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/redaction.py +0 -0
  496. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/services/__init__.py +0 -0
  497. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/services/catalog_sync.py +0 -0
  498. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/services/character_create.py +0 -0
  499. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/services/doctor.py +0 -0
  500. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/services/mentions.py +0 -0
  501. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/storage.py +0 -0
  502. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/tools/__init__.py +0 -0
  503. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/tools/banned.py +0 -0
  504. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/tools/builtin/__init__.py +0 -0
  505. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/tools/builtin/creative-director.toml +0 -0
  506. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/tools/builtin/reverse-engineer.toml +0 -0
  507. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/tools/builtin/storyboard.toml +0 -0
  508. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/tools/expander.py +0 -0
  509. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/tools/invocation.py +0 -0
  510. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/tools/loader.py +0 -0
  511. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/tools/registry.py +0 -0
  512. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/tools/runtime.py +0 -0
  513. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/tools/spec.py +0 -0
  514. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/ui/app.py +0 -0
  515. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/ui/server.py +0 -0
  516. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/update_check.py +0 -0
  517. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/winsec.py +0 -0
  518. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/worker/codec.py +0 -0
  519. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/worker/daemon.py +0 -0
  520. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/src/gflow_cli/worker/queue.py +0 -0
  521. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tasks/lessons.md +0 -0
  522. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/test_assets/sample_batch.json +0 -0
  523. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/test_assets/sample_batch.tsv +0 -0
  524. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/test_assets/sample_batch_invalid.tsv +0 -0
  525. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/__init__.py +0 -0
  526. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/__init__.py +0 -0
  527. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/fixtures/character_gen_response.json +0 -0
  528. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/fixtures/patch_entity_response.json +0 -0
  529. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/fixtures/project_initial_data_extend_models.json +0 -0
  530. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_aisandbox_auth_error.py +0 -0
  531. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_aisandbox_auth_headers.py +0 -0
  532. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_bearer_redaction.py +0 -0
  533. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_character.py +0 -0
  534. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_client.py +0 -0
  535. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_client_character.py +0 -0
  536. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_client_delete_characters.py +0 -0
  537. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_client_errors.py +0 -0
  538. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_client_extend.py +0 -0
  539. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_client_generate_character.py +0 -0
  540. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_client_image.py +0 -0
  541. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_client_incidents.py +0 -0
  542. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_client_launch_kwargs.py +0 -0
  543. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_client_locale_cache.py +0 -0
  544. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_client_patch_entity.py +0 -0
  545. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_client_scene.py +0 -0
  546. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_client_upscale.py +0 -0
  547. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_concurrency.py +0 -0
  548. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_dto.py +0 -0
  549. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_engine.py +0 -0
  550. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_extend_chain.py +0 -0
  551. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_image.py +0 -0
  552. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_image_dto.py +0 -0
  553. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_image_upscale.py +0 -0
  554. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_post_json_aisandbox_auth.py +0 -0
  555. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_recaptcha.py +0 -0
  556. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_retry.py +0 -0
  557. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_routes.py +0 -0
  558. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_routes_character.py +0 -0
  559. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_routes_scene.py +0 -0
  560. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_sapisidhash_helper.py +0 -0
  561. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_scene_models.py +0 -0
  562. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_video.py +0 -0
  563. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_video_extend.py +0 -0
  564. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_video_request.py +0 -0
  565. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/test_video_status_poll.py +0 -0
  566. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/__init__.py +0 -0
  567. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/conftest.py +0 -0
  568. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/drivers/__init__.py +0 -0
  569. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/drivers/test_agentic.py +0 -0
  570. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/drivers/test_classic.py +0 -0
  571. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/drivers/test_factory.py +0 -0
  572. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_base.py +0 -0
  573. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_bearer.py +0 -0
  574. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_evaluate_fetch.py +0 -0
  575. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_factory.py +0 -0
  576. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_fingerprint.py +0 -0
  577. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_locale_navigation.py +0 -0
  578. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_mode_control.py +0 -0
  579. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_model_selection_loud.py +0 -0
  580. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_navigation_settled.py +0 -0
  581. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_overlay_precondition.py +0 -0
  582. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_policy_400.py +0 -0
  583. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_sapisidhash.py +0 -0
  584. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_selector_symmetry.py +0 -0
  585. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_transport_timeout.py +0 -0
  586. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_ui_automation_batch.py +0 -0
  587. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_ui_automation_image_mode.py +0 -0
  588. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_ui_automation_video.py +0 -0
  589. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_ui_character_editor.py +0 -0
  590. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/api/transports/test_video_model_selection_loud.py +0 -0
  591. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/auth/strategies/test_factory.py +0 -0
  592. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/auth/strategies/test_strategies.py +0 -0
  593. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/auth/test_cookies.py +0 -0
  594. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/auth/test_real_chrome.py +0 -0
  595. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/auth/test_verification.py +0 -0
  596. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/auth/test_windows_acl.py +0 -0
  597. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/autopilot/test_pr_triage_autopilot.py +0 -0
  598. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/__init__.py +0 -0
  599. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_auth_status.py +0 -0
  600. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_auth_list.py +0 -0
  601. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_character.py +0 -0
  602. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_character_create.py +0 -0
  603. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_data.py +0 -0
  604. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_data_errors.py +0 -0
  605. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_data_errors_retention.py +0 -0
  606. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_data_sync.py +0 -0
  607. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_doctor.py +0 -0
  608. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_image.py +0 -0
  609. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_image_seed_removed.py +0 -0
  610. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_image_selector_drift.py +0 -0
  611. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_image_upscale.py +0 -0
  612. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_image_uuid_ref_enrichment.py +0 -0
  613. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_instructions.py +0 -0
  614. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_models.py +0 -0
  615. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_movie.py +0 -0
  616. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_run.py +0 -0
  617. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_scene.py +0 -0
  618. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_tools.py +0 -0
  619. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_video.py +0 -0
  620. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_video_chain.py +0 -0
  621. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_cli_video_extend.py +0 -0
  622. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_error_handling.py +0 -0
  623. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_failure_funnel.py +0 -0
  624. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_helpers.py +0 -0
  625. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_incident_output.py +0 -0
  626. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_movie_manifest.py +0 -0
  627. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_movie_manifest_style_variants.py +0 -0
  628. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_predictable_output.py +0 -0
  629. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_run_with_handlers_interrupt.py +0 -0
  630. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_settings_validation.py +0 -0
  631. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/cli/test_t2i_multi_prompt.py +0 -0
  632. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/composition/test_character.py +0 -0
  633. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/composition/test_compose_prompt.py +0 -0
  634. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/composition/test_handoff.py +0 -0
  635. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/composition/test_style_variants.py +0 -0
  636. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/composition/test_style_variants_e2e.py +0 -0
  637. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/conftest.py +0 -0
  638. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/data/__init__.py +0 -0
  639. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/data/test_chain_repo.py +0 -0
  640. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/data/test_failure_recording.py +0 -0
  641. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/data/test_find_incomplete_character.py +0 -0
  642. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/data/test_models.py +0 -0
  643. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/data/test_null_columns_stay_null.py +0 -0
  644. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/data/test_packaging.py +0 -0
  645. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/data/test_recorder.py +0 -0
  646. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/data/test_recorder_character.py +0 -0
  647. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/data/test_redaction.py +0 -0
  648. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/data/test_repository.py +0 -0
  649. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/data/test_scene_persistence.py +0 -0
  650. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/data/test_settings_and_errors.py +0 -0
  651. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/data/test_store.py +0 -0
  652. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/data/test_store_migrations.py +0 -0
  653. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/dev/test_recording_client.py +0 -0
  654. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/__init__.py +0 -0
  655. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/conftest.py +0 -0
  656. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_agentic_count_enforcement_e2e.py +0 -0
  657. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_aisandbox_auth_live.py +0 -0
  658. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_asset_tagging_e2e.py +0 -0
  659. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_auth_verification_e2e.py +0 -0
  660. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_cancellation_e2e.py +0 -0
  661. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_chain_e2e.py +0 -0
  662. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_character_create_e2e.py +0 -0
  663. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_classic_count_setter_e2e.py +0 -0
  664. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_crash_recovery_e2e.py +0 -0
  665. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_daemon_e2e.py +0 -0
  666. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_data_layer_e2e.py +0 -0
  667. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_data_sync_names_e2e.py +0 -0
  668. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_entity_provenance_e2e.py +0 -0
  669. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_entity_smuggling_e2e.py +0 -0
  670. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_i2v_flags_e2e.py +0 -0
  671. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_image_batch_e2e.py +0 -0
  672. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_image_i2i_ref_cap_e2e.py +0 -0
  673. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_image_uuid_ref_e2e.py +0 -0
  674. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_incident_quality_e2e.py +0 -0
  675. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_json_output_e2e.py +0 -0
  676. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_live_agentic_instructions.py +0 -0
  677. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_locale_selectors_e2e.py +0 -0
  678. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_project_naming_e2e.py +0 -0
  679. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_refresh_on_miss_e2e.py +0 -0
  680. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_scene_compose_live.py +0 -0
  681. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_sidebar_recovery_e2e.py +0 -0
  682. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_tools_e2e.py +0 -0
  683. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_transports_e2e.py +0 -0
  684. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_video_r2v_ref_cap_e2e.py +0 -0
  685. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_video_r2v_uuid_name_e2e.py +0 -0
  686. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/e2e/test_video_t2v_e2e.py +0 -0
  687. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/__init__.py +0 -0
  688. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/asset_tagging.feature +0 -0
  689. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/auth.feature +0 -0
  690. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/auth_login.feature +0 -0
  691. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/character_create.feature +0 -0
  692. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/character_read.feature +0 -0
  693. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/conftest.py +0 -0
  694. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/duration_tab_drift.feature +0 -0
  695. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/entity_provenance.feature +0 -0
  696. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/image.feature +0 -0
  697. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/image_batch_references.feature +0 -0
  698. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/image_upscale.feature +0 -0
  699. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/incident_diagnostics.feature +0 -0
  700. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/instructions.feature +0 -0
  701. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/locale_picker_include.feature +0 -0
  702. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/mcp_tasks.feature +0 -0
  703. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/media_picker_tiers.feature +0 -0
  704. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/output_hardening.feature +0 -0
  705. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_asset_tagging_steps.py +0 -0
  706. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_auth_login_steps.py +0 -0
  707. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_auth_steps.py +0 -0
  708. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_character_create_steps.py +0 -0
  709. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_character_read_steps.py +0 -0
  710. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_image_steps.py +0 -0
  711. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_image_upscale_steps.py +0 -0
  712. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_incident_diagnostics_steps.py +0 -0
  713. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_instructions_steps.py +0 -0
  714. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_locale_picker_include_steps.py +0 -0
  715. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_mcp_tasks_steps.py +0 -0
  716. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_media_picker_tiers_steps.py +0 -0
  717. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_output_hardening_steps.py +0 -0
  718. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_step_collision_guard.py +0 -0
  719. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_video_agent_ui_steps.py +0 -0
  720. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/test_video_chain_steps.py +0 -0
  721. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/video_agent_ui.feature +0 -0
  722. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/features/video_chain.feature +0 -0
  723. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/fixtures/__init__.py +0 -0
  724. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/fixtures/changelog_modal_page.html +0 -0
  725. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/fixtures/doctor_env.py +0 -0
  726. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/fixtures/flow_model_inventory.json +0 -0
  727. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/fixtures/flow_project_listing_media.json +0 -0
  728. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/fixtures/listing_payload.py +0 -0
  729. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/fixtures/seeded_catalog.py +0 -0
  730. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/flow_selectors/__init__.py +0 -0
  731. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/flow_selectors/test_grading.py +0 -0
  732. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/flow_selectors/test_model.py +0 -0
  733. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/flow_selectors/test_model_governance.py +0 -0
  734. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/flow_selectors/test_registry.py +0 -0
  735. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/flow_selectors/test_report.py +0 -0
  736. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/image_batch/__init__.py +0 -0
  737. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/image_batch/test_image_manifest.py +0 -0
  738. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/image_batch/test_jitter_config.py +0 -0
  739. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/image_batch/test_observability_events.py +0 -0
  740. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/integration/__init__.py +0 -0
  741. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/integration/conftest.py +0 -0
  742. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/integration/constants.py +0 -0
  743. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/integration/test_expander_gateway.py +0 -0
  744. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/integration/test_storage_gcs.py +0 -0
  745. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/integration/test_storage_s3.py +0 -0
  746. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/__init__.py +0 -0
  747. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/conftest.py +0 -0
  748. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/test_auth_status_tool.py +0 -0
  749. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/test_cli_parity.py +0 -0
  750. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/test_error_funnel.py +0 -0
  751. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/test_http_transport.py +0 -0
  752. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/test_known_issues_resource.py +0 -0
  753. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/test_no_spend.py +0 -0
  754. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/test_rate_limit_envelope.py +0 -0
  755. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/test_resources.py +0 -0
  756. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/test_server.py +0 -0
  757. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/test_setup.py +0 -0
  758. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/test_stdio_transport.py +0 -0
  759. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/test_tasks_extension.py +0 -0
  760. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/test_tools_helpers.py +0 -0
  761. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/test_tools_instructions.py +0 -0
  762. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/mcp/test_tools_wired.py +0 -0
  763. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/scripts/test_analyze_agent_ui_capture.py +0 -0
  764. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/scripts/test_canary_classify.py +0 -0
  765. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/scripts/test_canary_reexec.py +0 -0
  766. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/scripts/test_capture_locale_invariants.py +0 -0
  767. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/scripts/test_check_materiality.py +0 -0
  768. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/scripts/test_check_release_artifacts.py +0 -0
  769. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/scripts/test_check_repo_hygiene.py +0 -0
  770. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/scripts/test_check_test_count.py +0 -0
  771. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/scripts/test_check_website_docs_pii.py +0 -0
  772. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/scripts/test_codex_plugin.py +0 -0
  773. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/scripts/test_generate_website_docs.py +0 -0
  774. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/scripts/test_incident_bundle_quality.py +0 -0
  775. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/scripts/test_materiality_backtest.py +0 -0
  776. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/scripts/test_workflow_hardening.py +0 -0
  777. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/services/__init__.py +0 -0
  778. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/services/test_catalog_sync.py +0 -0
  779. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/services/test_character_create_redaction.py +0 -0
  780. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/services/test_character_create_saga.py +0 -0
  781. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/services/test_character_gen_no_direct_post.py +0 -0
  782. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/services/test_doctor.py +0 -0
  783. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/services/test_media_attribution.py +0 -0
  784. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/services/test_mentions_observability.py +0 -0
  785. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/services/test_mentions_parse.py +0 -0
  786. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/services/test_mentions_resolve.py +0 -0
  787. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/services/test_resolve_and_apply.py +0 -0
  788. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/smoke/__init__.py +0 -0
  789. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/smoke/test_profile_account_smoke.py +0 -0
  790. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/smoke/test_real_flow.py +0 -0
  791. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_auth.py +0 -0
  792. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_browser_manager.py +0 -0
  793. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_chain.py +0 -0
  794. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_chain_manifest.py +0 -0
  795. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_cli_data.py +0 -0
  796. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_cli_project.py +0 -0
  797. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_config.py +0 -0
  798. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_conftest_isolation.py +0 -0
  799. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_data_queries.py +0 -0
  800. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_diagnostics_bundle.py +0 -0
  801. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_diagnostics_events.py +0 -0
  802. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_diagnostics_journal.py +0 -0
  803. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_diagnostics_retention.py +0 -0
  804. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_documentation_gate.py +0 -0
  805. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_duration_tab_drift.py +0 -0
  806. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_entity_provenance.py +0 -0
  807. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_errors.py +0 -0
  808. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_errors_classification.py +0 -0
  809. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_image_batch_references.py +0 -0
  810. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_incident_generation_requests.py +0 -0
  811. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_json_output.py +0 -0
  812. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_marker_registry.py +0 -0
  813. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_media.py +0 -0
  814. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_observability.py +0 -0
  815. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_overlay_banner_dismissal.py +0 -0
  816. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_paths.py +0 -0
  817. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_playwright_pin.py +0 -0
  818. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_profile_lease.py +0 -0
  819. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_profile_lease_subprocess.py +0 -0
  820. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_profile_store.py +0 -0
  821. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_profile_store_locale.py +0 -0
  822. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_project_list_urls.py +0 -0
  823. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_self_documenting_errors.py +0 -0
  824. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_smoke.py +0 -0
  825. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/test_update_check.py +0 -0
  826. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/tools/__init__.py +0 -0
  827. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/tools/test_banned.py +0 -0
  828. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/tools/test_expander.py +0 -0
  829. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/tools/test_invocation.py +0 -0
  830. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/tools/test_loader.py +0 -0
  831. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/tools/test_registry.py +0 -0
  832. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/tools/test_runtime.py +0 -0
  833. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/tools/test_spec.py +0 -0
  834. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/ui/test_app.py +0 -0
  835. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/worker/test_codec.py +0 -0
  836. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/worker/test_daemon.py +0 -0
  837. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/worker/test_mcp_daemon_race.py +0 -0
  838. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/worker/test_queue.py +0 -0
  839. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/worker/test_queue_multiprocess.py +0 -0
  840. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/tests/worker/test_queue_reconciliation.py +0 -0
  841. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/ACCOUNT_SAFETY.md +0 -0
  842. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/ARCHITECTURE.md +0 -0
  843. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/AUTHENTICATION.md +0 -0
  844. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/CHARACTER.md +0 -0
  845. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/CONFIGURATION.md +0 -0
  846. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/DATA_LAYER.md +0 -0
  847. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/DEVELOPMENT.md +0 -0
  848. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/E2E_TESTING.md +0 -0
  849. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/EXTERNAL_STORAGE.md +0 -0
  850. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/INSTRUCTIONS.md +0 -0
  851. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/MCP.md +0 -0
  852. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/MEDIA_LIBRARY.md +0 -0
  853. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/MOVIE.md +0 -0
  854. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/PROMPT_EXPANSION.md +0 -0
  855. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/SECURITY.md +0 -0
  856. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/TOOLS.md +0 -0
  857. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/USER_GUIDE.md +0 -0
  858. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/agents.md +0 -0
  859. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/index.md +0 -0
  860. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/installation.md +0 -0
  861. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/onboarding-mockup.html +0 -0
  862. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/onboarding.md +0 -0
  863. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/docs/stylesheets/extra.css +0 -0
  864. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/mkdocs.yml +0 -0
  865. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/requirements.in +0 -0
  866. {gflow_cli-0.65.0 → gflow_cli-0.66.1}/website/requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gflow",
3
- "version": "0.65.0",
3
+ "version": "0.66.1",
4
4
  "description": "Reusable development and operations workflows for gflow-cli",
5
5
  "author": {
6
6
  "name": "Flavio Oliva",
@@ -7,6 +7,84 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.66.1] — 2026-09-03
11
+
12
+ ### Fixed
13
+
14
+ - **A migrated-origin run spent ~36 s discovering a failure knowable in microseconds
15
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639)).** `flow.google.com` renders none
16
+ of the controls gflow drives, so every DOM probe is doomed before it starts — yet the run
17
+ still burned the full `detect_ui_mode` poll window (~8 s, both arms missing), the crop
18
+ selector cascade (~24 s) and the URL settle (4 s) before raising `FlowHostMigratedError`.
19
+ Because the rollout flaps per page load and callers retry on exit 36, that cost was paid on
20
+ **every attempt** of a retry loop. `get_ui_driver` now checks the host first and fails fast
21
+ with the same retryable exit 36. The old host is untouched and still gets full DOM detection;
22
+ a page whose URL cannot be read still probes rather than bailing, so a transient is never
23
+ mistaken for a migrated origin.
24
+
25
+ - **Locale resolution was blind on `flow.google.com`, and silently discarded a locale it had
26
+ already learned ([#643](https://github.com/ffroliva/gflow-cli/issues/643)).** The migrated
27
+ origin serves `/project/<id>` with no `/fx/<locale>/tools/flow` segment, so
28
+ `locale_segment_from_url` could never match there. The locale had not disappeared — it moved
29
+ into `<html lang>`, which stays correct on the migrated host. Two measured consequences:
30
+ `next_locale_state("pt", None)` returned PROVISIONAL, **demoting** an already-learned locale
31
+ on every migrated load (so a fully-migrated account could never learn it again, undoing
32
+ [#587](https://github.com/ffroliva/gflow-cli/issues/587)); and `await_url_settled` burned the
33
+ full 4 s timeout per navigation waiting for a shape that can no longer exist. gflow now falls
34
+ back to `<html lang>` when the URL carries no segment, and skips the settle wait entirely on
35
+ the migrated origin.
36
+
37
+ The fallback is evidence-backed, not assumed: measured on two accounts (`en` and `pt-BR`),
38
+ `<html lang>` **agreed with the URL segment wherever both existed**. Unlike
39
+ `navigator.language` — which reports the value gflow itself sets — it is server-rendered by
40
+ Flow. Where Flow does state the locale in the URL, that stays authoritative.
41
+
42
+ ## [0.66.0] — 2026-09-03
43
+
44
+ ### Fixed
45
+
46
+ - **Flow's migration to `flow.google.com` was reported as selector drift
47
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639)).** Google is moving Flow
48
+ off Labs onto its own origin. The migrated frontend renders **zero** Material Symbols
49
+ `<i>` elements, so every gflow selector — cohort detection included — misses at once,
50
+ and the run died with `UiSelectorDriftError` (exit 23, `retryable: false`): an error
51
+ that reads like the selectors rotted and sent operators hunting for the wrong cause.
52
+ The rollout **flaps per page load** — the same account and project land on the old
53
+ host on one navigation and the migrated one on the next — so a re-run frequently
54
+ succeeds, but the non-retryable classification made automated callers give up.
55
+ gflow now recognises the migrated origin and raises the distinct, **retryable**
56
+ `FlowHostMigratedError` (exit 36) naming the migration. Applies to CLI and MCP alike
57
+ (both route through the shared mode-switch raise site, and `retryable` has a single
58
+ source of truth). **This does not add support for the migrated frontend** — that is
59
+ separate work; see [KNOWN_ISSUES.md](KNOWN_ISSUES.md).
60
+
61
+ - **A migrated page load was misread as a logged-out session
62
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639)).** `_check_logged_in`
63
+ hard-required `labs.google` in the URL, so a perfectly valid authenticated session on
64
+ the migrated host failed the gate and drove a pointless re-auth. It now accepts both
65
+ Flow origins.
66
+
67
+ ### Security
68
+
69
+ - **The authenticated-session URL gate matched hosts by substring.** `_check_logged_in`
70
+ tested `"labs.google" in page.url`, which any foreign URL satisfies merely by carrying
71
+ the string in its path or query (`https://evil.example/?next=labs.google/fx/tools/flow`).
72
+ The host is now parsed and matched exactly.
73
+
74
+ ### Changed
75
+
76
+ - Incident bundles from a `flow.google.com` load previously reported
77
+ `url.host_category: "other"` / `url.route: "other"`, hiding the most useful fact about
78
+ the failure. The migrated origin is now classified as `flow_app`, with the same
79
+ identifier reduction applied.
80
+
81
+ Live-verified 2026-09-03 at zero credits against the **real** migrated frontend, on an
82
+ account inside the rollout: `flow_host_kind: "migrated"`, `_check_logged_in: true` (it was
83
+ `false` before the fix), and `_mode_switch_error` returning `FlowHostMigratedError` / exit 36 /
84
+ `retryable: true` — while a credit-free `image t2i` minutes earlier landed on the old host and
85
+ completed exit 0, proving no regression. See
86
+ [docs/LIVE_VERIFICATION_v0.66.0.md](docs/LIVE_VERIFICATION_v0.66.0.md).
87
+
10
88
  ## [0.65.0] — 2026-09-02
11
89
 
12
90
  ### Fixed
@@ -3659,7 +3737,9 @@ shell-script template that branches on these codes.
3659
3737
 
3660
3738
  First skeleton. Not functional end-to-end yet.
3661
3739
 
3662
- [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.65.0...HEAD
3740
+ [Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v0.66.1...HEAD
3741
+ [0.66.1]: https://github.com/ffroliva/gflow-cli/compare/v0.66.0...v0.66.1
3742
+ [0.66.0]: https://github.com/ffroliva/gflow-cli/compare/v0.65.0...v0.66.0
3663
3743
  [0.65.0]: https://github.com/ffroliva/gflow-cli/compare/v0.64.0...v0.65.0
3664
3744
  [0.64.0]: https://github.com/ffroliva/gflow-cli/compare/v0.63.0...v0.64.0
3665
3745
  [0.63.0]: https://github.com/ffroliva/gflow-cli/compare/v0.62.1...v0.63.0
@@ -14,6 +14,52 @@ 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`; the migrated frontend is not drivable
18
+
19
+ - **Status:** Open · **Severity:** High (every generation command fails on a migrated page load) · **Affected:** all `gflow image` / `gflow video` generation, CLI and MCP alike, on accounts the rollout has reached
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
+ - **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
+
23
+ Google is moving Flow off Labs onto its own origin. On a migrated page load,
24
+ `https://labs.google/fx/tools/flow/project/<id>` redirects to
25
+ `https://flow.google.com/project/<id>` and serves a rewritten frontend that
26
+ contains **zero `<i>` elements**. Every gflow selector anchors on Material
27
+ Symbols ligatures (`i.google-symbols:text-is(...)`), so cohort detection and
28
+ every mode control miss at once.
29
+
30
+ **The rollout flaps per page load.** The same account, profile and project land
31
+ on the old host on one navigation and the migrated one on the next, minutes
32
+ apart, with no client change. Measured on one account ~35 minutes apart:
33
+
34
+ ```
35
+ old host labs.google/fx/<locale>/tools/flow/... i=55 i.google-symbols=49 crop_* present -> exit 0
36
+ migrated host flow.google.com/project/... i=0 i.google-symbols=0 crop_* absent -> exit 36
37
+ ```
38
+
39
+ Note the migrated URL **drops `/fx/tools/flow` entirely** — it is `/project/<id>`, not
40
+ `/fx/<locale>/tools/flow/project/<id>`. Any host gate written as a substring test on
41
+ `labs.google` could never have matched it.
42
+
43
+ This is **not** selector rot, not [#493](https://github.com/ffroliva/gflow-cli/issues/493),
44
+ and not the agentic cohort — the agentic indicators are absent too. It is a
45
+ different origin serving different markup.
46
+
47
+ **Workaround:** re-run the command. While the rollout flaps, a fresh navigation
48
+ frequently lands the old frontend and the run completes normally. Automated
49
+ callers get this for free: the failure is `FlowHostMigratedError` (exit 36) with
50
+ `retryable: true`, so retry loops driven by the `--json` / MCP / worker error
51
+ envelope will keep trying.
52
+
53
+ **What gflow does today (v0.66.0):** recognises the migrated origin and fails
54
+ with the distinct, retryable exit 36 instead of the misleading
55
+ `UiSelectorDriftError` (exit 23, "file a selector bug"). `_check_logged_in` also
56
+ accepts the migrated host, so a migrated load is no longer misread as a
57
+ logged-out session. **Support for driving the new frontend is separate work and
58
+ is not implemented** — once the rollout completes for an account, no retry will
59
+ help until then.
60
+
61
+ ---
62
+
17
63
  ### A Veo extend segment is 7 seconds, not the 8 Flow advertises — so concat pads a frozen second
18
64
 
19
65
  - **Status:** Open · **Severity:** Medium (audible/visible on every internal seam of a chained extend) · **Affected:** `gflow video extend -n >1` with `-o`, and any scene mixing extend segments
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gflow-cli
3
- Version: 0.65.0
3
+ Version: 0.66.1
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
@@ -106,7 +106,8 @@ at command startup).
106
106
  ### What triggers a capture (and what never does)
107
107
 
108
108
  Captured: `FlowAppError` (31), `FlowAgentUiError` (25),
109
- `UiModeUnavailableError` (28), `UiSelectorDriftError` (23),
109
+ `FlowHostMigratedError` (36), `UiModeUnavailableError` (28),
110
+ `UiSelectorDriftError` (23),
110
111
  `TransportTimeoutError` (9), `BrowserSessionClosedError` (15),
111
112
  `WireFormatError` (7), `WafRejectionError` (10), `NetworkError` (6),
112
113
  unexpected exceptions while a page is alive, and `ProfileLockedError` (11)
@@ -158,6 +158,10 @@ Slash commands for Claude Code, stored in `.claude/commands/gflow/`. All prefixe
158
158
  **What was actually live-verified for the latest release?** → latest: [LIVE_VERIFICATION_v0.64.0](LIVE_VERIFICATION_v0.64.0.md) (**#626 `--model omni-flash --end-frame` — first+last interpolation on Omni 1.1 Flash, verified 2026-09-02.** The guard this release removes was evidence-gated, so it was retired on evidence: a route-aborted submit capture on **two distinct Google accounts** (`ffroliva`, `denon82`) fired `video:batchAsyncGenerateVideoStartAndEndImage` with `startImage` AND `endImage` non-null at **zero credits**, ruling out a single-account artifact. The decisive layer is semantic, not structural: the paid 4s generation's **last frame IS the supplied end image** and its first frame is the start image — two visibly different subjects — which is the only check that distinguishes "Flow bound the end frame" from "Flow accepted and ignored it", and which layers 1–4 would pass either way. Render: 4.01s / 720×1280 / h264+aac / 2.4 MB, `MEDIA_GENERATION_STATUS_SUCCESSFUL`. The static capability table is **deleted**, not corrected — it went stale silently once and would again; a post-submit route check (`_assert_i2v_route`) now fails a run whose end frame Flow dropped back to the `StartImage` route, catching a rollback on any account without anyone re-reading a support page. One item is recorded as NOT verified rather than omitted: `--duration 10` + end frame is **submit-verified only** (`duration_set seconds=10` on the correct route with both images bound), because the status poll returned HTTP 401 mid-run and a retry 401'd at `project.create` before submitting — [#561](https://github.com/ffroliva/gflow-cli/issues/561), pre-existing, so verification was stopped rather than spending further credits on an environmental fault.) · previous: [LIVE_VERIFICATION_v0.63.0](LIVE_VERIFICATION_v0.63.0.md) (**`gflow video extend` — continuing a clip past Flow's 8s ceiling, verified 2026-09-01 on profile `ffroliva`, 20 Veo credits.** The decisive observation is that segment 2's `source_media_id` **is** segment 1's `media_id` (`0c9364f3…` seeded from `b9458021…`, then `648f9291…` seeded from `0c9364f3…`) — tail-only chaining, which no mock can establish; had it re-seeded from the source, the output would have been two divergent continuations of the same moment instead of one continuous shot. `extend_model_resolved` logged `candidate_count=99` against `SERVICE_TIER_INTERMEDIATE`, proving the key came from the live capability listing rather than a constant, and plan cost matched actual spend (`20 credits total, balance 875` → `Extended — 2/2 segment(s), 20 credits`). Render: 23.02s / 1280×720 / 24fps / h264+aac. **The run found a defect the offline suite is structurally incapable of seeing:** an extend segment carries **7.000000s** of content, not the 8 Flow advertises and bills, so server-side concat pads every internal seam with a frozen frame and digital silence (15s at −75.1 dB against −29 neighbours, reproduced on a second independent render) — filed in KNOWN_ISSUES with the three questions that must be answered before any clamp, and the reason `--extend N` on t2v/i2v was deliberately NOT shipped. Seven items are recorded as NOT verified rather than omitted: portrait `9:16`, `--aspect` against a mismatched source, chains longer than 2 segments, `--resume-from` against a live partial scene, the insufficient-credits refusal, a live Ctrl+C, and `OperationKind.EXTEND` rows.) · previous: [LIVE_VERIFICATION_v0.62.1](LIVE_VERIFICATION_v0.62.1.md) (**#604 `--model omni-flash` selects again after Flow's `Omni Flash` → `Omni 1.1 Flash` rename, verified 2026-08-30 on profile `ffroliva` at ZERO Veo credits.** The production `_select_video_model` was driven against the real picker: the shipped selector resolves verbatim — `model_selected model=omni_flash via="[role='menuitem']:has-text('Omni'):has-text('Flash'):not(:has-text('[Lower Priority]'))"` — and all six cases came back as expected: the four offered tiers SELECT, a tier Flow does not offer REFUSES, and a deliberately ambiguous selector REFUSES rather than resolving `.first`. Selection happens before submit, so the whole matrix is free. The transport's own refusal diagnostic read the live menu back as `Omni 1.1 Flash / Veo 3.1 - Lite / Fast / Quality`, independently corroborating the fixture. Four items are recorded as NOT verified rather than omitted: the rename *direction* [the `Omni Flash` baseline is a different account, locale and date], an actual `Omni ... [Lower Priority]` entry [Flow has never offered one], a full credit-spending generation on omni-flash, and #539's absence question, which stays open.) · previous: [LIVE_VERIFICATION_v0.62.0](LIVE_VERIFICATION_v0.62.0.md) (**#595 `auto` ≡ `classic` for images, verified 2026-08-28 on profile `ci-probe` — an account Flow had moved to the agentic cohort the day before — at ZERO Veo credits.** With no flags and no env vars the run logged `ui_driver.ui_mode.attempt_exit_agent` → `ui_driver.bound mode=classic ui_mode=classic` and generated a real 768x1376 JPEG (exit 0); the day before, the identical command on the same account bound `auto`→`agentic` and failed. The same log independently closed **#183**: `mode_switch_trigger` and `image_mode_tab`, the selectors it reported as unfindable, both matched. #591 was proven against the real 500-row catalog — **0** occurrences of the string `"None"`, 31 proper JSON `null`s, over a catalog holding 119 NULL-bearing rows. #592 shows exactly one `client.account_locale_cached` per command. Three items are recorded as NOT verified rather than omitted: the exit-28 abort on a *pinned* agentic account, the #597 batch inter-prompt guard, and any fresh announcement modal — the last two because all three accounts have already acked the current changelog, so no modal can be raised until Google ships the next one.) · previous: [LIVE_VERIFICATION_v0.61.0](LIVE_VERIFICATION_v0.61.0.md) (**#539 video-model refusal + #586 image-model refusal and server-side attribution, verified 2026-08-26/27 on profile `denon82`, ONE Veo generation total** — the video fix was proven by a **zero-credit A/B against the stashed pre-fix source running on live Flow**: the old code returned SELECTED for `veo-lite-lp`, a model Flow does not offer to this account, and for a deliberately ambiguous selector matching 3 entries; the new code refuses both with exit 18 naming what Flow offered. Model selection happens before submit, so refusals cost nothing and the A/B was free. The happy path still generates: `--model omni-flash` → exit 0, a real 2.2 MB `ftypisom` mp4, catalog recording `omni_flash`. Two items are recorded as NOT verified rather than omitted: three of #584's four navigation-settle sites were never exercised [no bearer refresh occurred in these runs], and #582's canary self-re-exec has its first real exercise tonight. Also falsified: #539's recorded note that the video picker uses a different trigger — the two constants are byte-identical strings, and the repeated empty menu captures were the capture's own fault.) · previous: [LIVE_VERIFICATION_v0.60.0](LIVE_VERIFICATION_v0.60.0.md)
159
159
  **"Was the playwright upper bound raised, and on what evidence?"** → [LIVE_VERIFICATION_playwright_1.61](LIVE_VERIFICATION_playwright_1.61.md) (**`>=1.59.0,<1.60.0` → `>=1.61.0,<1.62.0` verified 2026-08-05, 1 Imagen + 1 Veo credit** — the 2026-08-03 regression that motivated the bound does NOT reproduce on 1.61.0: a live `i2v` drove the full chain with `image_uploaded status=200` → `frame_attached` → `generate_captured status=200` with `startImage` parsed, where **1.62.0 hung silently at exactly that upload step**; live `i2i` local-ref attach passed outright [96.7s]. **1.62.0 stays excluded** — never root-caused. Also found, A/B-proven pre-existing on BOTH 1.59.0 and 1.61.0: Flow dropped the duration-tab UI, so **`--duration` is currently broken for i2v** — `UiSelectorDriftError` fires correctly [refusing rather than silently accepting Flow's default, #288] but the selector needs re-deriving; that is why the i2v proof was driven via the CLI without `--duration`, and Flow's own server-side `PUBLIC_ERROR_VIDEO_GENERATION_TIMED_OUT` means no finished mp4 is claimed).
160
160
  **"Where is the reverse-engineered wire protocol for a feature?"** → the `*_RECON.md` design docs: [CHARACTER_RECON](CHARACTER_RECON.md) (Flow character entity protocol), [IMAGE_UPSCALE_RECON](IMAGE_UPSCALE_RECON.md) (`/v1/flow/upsampleImage` wire). Naming convention: one `<FEATURE>_RECON.md` per reverse-engineered surface, kept as the durable spec after the feature ships. Pre-capture research recons: [ASSET_TAGGING_RECON](ASSET_TAGGING_RECON.md) (`@`-mention asset tagging — shipped in v0.40.0, see [LIVE_VERIFICATION_v0.40.0](LIVE_VERIFICATION_v0.40.0.md)).
161
+ **"What was live-verified for v0.66.1?"** → [LIVE_VERIFICATION_v0.66.1](LIVE_VERIFICATION_v0.66.1.md) — **the two migrated-origin fixes, verified 2026-09-03 on profile `ffroliva` at ZERO credits, on BOTH sides of the still-flapping rollout.** On a real `flow.google.com` load `get_ui_driver` raised `FlowHostMigratedError` in **0 ms** (was ~36 s: ~8 s detect window + ~24 s crop cascade + 4 s URL settle), exit 36, `retryable: true`, `ui_driver.migrated_host_bail` logged; `await_url_settled` returned `null` in **0 ms** (measured 4018 ms before); and the locale was recovered as `en` from `html lang=en-GB` where the URL gave `null`. The no-regression half is the stronger evidence: minutes later the same command landed on the OLD host and completed **exit 0** with a real 768x1376 JPEG in 42.2 s, proving the host guard is scoped and does not short-circuit the working path. Three items recorded as NOT verified rather than omitted: driving the migrated frontend (still impossible, #639 stays open), the pt-BR recovery live (measured `html lang=pt` on `denon82` but exercised live only on `en-GB`), and the `en-GB`→`en` region reduction against a locale where region is load-bearing (`zh-Hans`/`zh-Hant`) — only two locales observed.
162
+
163
+ **"What was live-verified for v0.66.0?"** → [LIVE_VERIFICATION_v0.66.0](LIVE_VERIFICATION_v0.66.0.md) — **#639 Flow's `flow.google.com` migration, verified 2026-09-03 on profile `ffroliva` at ZERO credits.** The maintainer's own account turned out to be inside the rollout, so the fix was proven against the real migrated frontend rather than a reconstructed DOM: a read-only probe of `flow.google.com/project/<id>` measured `i_total: 0` (independently reproducing the reporter's central measurement) and drove the production functions against the live page — `flow_host_kind: "migrated"`, `_check_logged_in: true` (it was `false` before the fix, i.e. a valid session read as logged-out), and `_mode_switch_error` returning `FlowHostMigratedError` / exit 36 / `retryable: true`. The flap is confirmed on ONE account: a credit-free `image t2i` minutes earlier landed on the OLD host and completed exit 0 with a real 768x1376 JPEG (`ffd8ffe0`, 401,939 bytes, Pillow dims matching the API claim), proving the rewritten host gate does not regress the old path. Also recorded: the migrated URL **drops `/fx/tools/flow` entirely** — it is `/project/<id>` — which is why a substring gate on `labs.google` could never match it; and the migrated composer is not control-less but exposes **no `data-testid`, zero ligature `<i>`, and 13 `button[aria-label]`** (`Settings trigger`, `Start generation`, …), recorded as recon for the follow-up WITH the caveat that `aria-label` is translated and therefore Tier-2 at best under the locale-invariance rule. One item is recorded as NOT verified rather than omitted: gflow **driving** the migrated frontend, which is out of scope and keeps #639 open. Verification also hit pre-existing [#561](https://github.com/ffroliva/gflow-cli/issues/561) (401 on `project.createProject`), A/B'd against unmodified `develop` to prove it was not this change, then routed around with an existing `--project`.
164
+
161
165
  **"What was live-verified for v0.65.0?"** → [LIVE_VERIFICATION_v0.65.0](LIVE_VERIFICATION_v0.65.0.md) — the guard A/B (three runs, zero credits, control included); the `chain`/`movie` duration guards are validation that refuses **before** any transport call, so they are covered by a red state that reproduces the mid-spend crash in a test plus negative controls, and the reason they were not live-run is recorded rather than omitted.
162
166
 
163
167
  **"Does the `referenceEntity` guard actually run, and is it a Web Worker or a Service Worker?"** → [LIVE_VERIFICATION_reference_entity_guard](LIVE_VERIFICATION_reference_entity_guard.md) — **A/B-proven live on denon82 2026-09-02, zero credits.** Control (without #618): the guard never fired and the test failed; with #618: it fired and passed. Same account, same prompt, one variable. Settles the question that held #618 — it is a **dedicated Web Worker**, so `context.route` suffices and no `service_workers="block"` is needed. Also confirms `route.continue_(post_data=...)` does not corrupt the body (both runs produced a real image). The **video** glob was equally dead, which #615 never mentions. Residual: direct-wire routes still bypass structurally (#619).
@@ -0,0 +1,119 @@
1
+ # Live Verification — v0.66.0 (issue #639, Flow's `flow.google.com` migration)
2
+
3
+ **Date:** 2026-09-03 · **Account:** ffroliva@gmail.com · **Platform:** Windows 11, Chrome strategy (system Chrome)
4
+ **Branch:** `bugfix/639-flow-google-com-migration` · **PR:** [#640](https://github.com/ffroliva/gflow-cli/pull/640)
5
+ **Credits spent:** **0** — one Imagen image (images are credit-free; only Veo video spends) plus one read-only DOM probe.
6
+
7
+ ## What had to be proven
8
+
9
+ The fix classifies a failure. Two independent claims, and offline tests can prove neither:
10
+
11
+ 1. **On a real migrated load**, `_mode_switch_error` returns `FlowHostMigratedError` (exit 36, retryable) — not `UiSelectorDriftError` (23).
12
+ 2. **On an old-host load**, nothing regressed — in particular the rewritten `_check_logged_in`
13
+ host gate, which sits on the auth path of *every* run.
14
+
15
+ Both were verified against live Flow. The maintainer's own account turned out to be inside the
16
+ rollout, so this did not need the reporter.
17
+
18
+ ## Layer 1 — the migration is real, and it flaps on one account
19
+
20
+ Same account, same profile, minutes apart, same gflow build:
21
+
22
+ | | old-host load | migrated load |
23
+ |---|---|---|
24
+ | final URL | `labs.google/fx/tools/flow/project/<id>` | `flow.google.com/project/<id>?pli=1` |
25
+ | `document.querySelectorAll('i').length` | **55** (reporter) | **0** (measured here) |
26
+ | `i.google-symbols` | 49 (reporter) | **0** (measured here) |
27
+ | `crop_*` trigger | present | **absent** |
28
+ | `gflow image t2i` | **exit 0**, image downloaded | **exit 36** |
29
+
30
+ The migrated URL also **drops the `/fx/tools/flow` path entirely** — it is `/project/<id>`, not
31
+ `/fx/<locale>/tools/flow/project/<id>`. That is why a substring gate on `labs.google` could never
32
+ have matched it.
33
+
34
+ ## Layer 2 — the migrated path, measured (read-only, `$0`)
35
+
36
+ Probe: launch the authenticated persistent context, navigate to the migrated project URL, wait 9 s
37
+ for the composer, then run the real production functions against the live page.
38
+
39
+ ```json
40
+ {
41
+ "final_url": "https://flow.google.com/project/c5550ed7-...?pli=1",
42
+ "flow_host_kind": "migrated",
43
+ "check_logged_in": true,
44
+ "dom": { "i_total": 0, "symbols": [], "crop": 0, "testids": [], "buttons": 19 },
45
+ "mode_switch_error_class": "FlowHostMigratedError",
46
+ "exit_code": 36,
47
+ "retryable": true
48
+ }
49
+ ```
50
+
51
+ - `i_total: 0` — **the reporter's central measurement reproduced independently.**
52
+ - `check_logged_in: true` — the auth-gate fix works on the real migrated page. Before the fix this
53
+ was `false`, i.e. a valid session read as logged-out.
54
+ - `FlowHostMigratedError` / `36` / `retryable: true` — **the fix fires on the real thing**, not
55
+ only on the DOM shape reconstructed in tests.
56
+
57
+ ## Layer 3 — no regression on the old host (full generation path, exit 0)
58
+
59
+ `gflow image t2i --project <existing> --aspect 9:16 --count 1`
60
+
61
+ ```json
62
+ {"status": "ok", "model": "NARWHAL",
63
+ "images": [{"media_name": "b7d7316a-...", "seed": 49027,
64
+ "dimensions": {"width": 768, "height": 1376},
65
+ "local_path": "tmp/lv639/images/2026-09-03/b7d7316a-..._1.jpg"}]}
66
+ ```
67
+
68
+ Verification ledger:
69
+
70
+ | Layer | Evidence |
71
+ |---|---|
72
+ | L1 file count | 1 file written |
73
+ | L2 magic bytes | `ffd8ffe0` → JPEG · 401,939 bytes on disk |
74
+ | L3 Pillow dims | `(768, 1376)` — **matches** the API-claimed dimensions |
75
+ | L4 structlog | `image_mode_entered` → `image_model_selected` → `count_setter_completed` → `prompt_submitted` → `batch_request_intercepted` |
76
+ | L5 wire | `flowMedia:batchGenerateImages` intercepted, `request0_keys` carried `imageAspectRatio`, `imageModelName`, `structuredPrompt` |
77
+
78
+ The mode-switch cascade **found** its controls and generation completed — the rewritten host gate
79
+ does not break the old path.
80
+
81
+ ## Layer 4 — A/B control (offline, but the discipline that makes the above meaningful)
82
+
83
+ With all three fix sites neutered, **exactly 9 tests fail** — one per claimed behaviour. Restored:
84
+ 256 passed. No test passes vacuously.
85
+
86
+ ## Known limitation hit during verification, and how it was routed around
87
+
88
+ A first `t2i` attempt died at **exit 3 / HTTP 401 on `project.createProject`** — open issue
89
+ [#561](https://github.com/ffroliva/gflow-cli/issues/561), *not* this change: unmodified `develop`
90
+ was A/B'd and failed **identically** (same exit, same route). Passing an existing `--project` skips
91
+ project creation and routes past it. `gflow project list` succeeded throughout, confirming the
92
+ session itself was valid — the #561 signature exactly.
93
+
94
+ ## Recon for the follow-up (support for the migrated frontend)
95
+
96
+ The migrated composer is **not** control-less; it expresses controls differently. It exposes **no
97
+ `data-testid`** and **zero ligature `<i>`**, but 13 `button[aria-label]` values:
98
+
99
+ ```
100
+ Back button to go to previous page · More options for the project · Search ·
101
+ Filtering and sorting options · Add media menu · Product help · Tile grid settings ·
102
+ More options · Favourite · Reuse prompt · Add ingredients to the prompt box ·
103
+ Settings trigger · Start generation
104
+ ```
105
+
106
+ `Settings trigger` and `Start generation` are the functional equivalents of the classic `crop_*`
107
+ trigger and submit button. **Caveat for whoever builds on this:** `aria-label` values are
108
+ *translated*, so these strings are Tier-2 at best and violate the locale-invariance rule as literal
109
+ selectors. The durable anchors are structural — button ordering within the composer container,
110
+ `svg` presence, and ARIA *roles* — and deriving them needs a second probe across locales.
111
+
112
+ ## Verdict
113
+
114
+ | Claim | Status |
115
+ |---|---|
116
+ | Exit 36 fires on a real migrated load | ✅ **VERIFIED LIVE** |
117
+ | `_check_logged_in` accepts the real migrated host | ✅ **VERIFIED LIVE** |
118
+ | Old-host generation path unregressed | ✅ **VERIFIED LIVE** (exit 0, real artifact) |
119
+ | gflow *drives* the migrated frontend | ❌ **NOT CLAIMED** — out of scope; #639 stays open |
@@ -0,0 +1,69 @@
1
+ # Live Verification — v0.66.1 (migrated-origin fixes for #639/#643)
2
+
3
+ **Date:** 2026-09-03 · **Account:** ffroliva@gmail.com · **Platform:** Windows 11, Chrome strategy
4
+ **Credits spent:** **0** — one Imagen image (images are credit-free) plus read-only probes.
5
+
6
+ ## What had to be proven
7
+
8
+ Two fixes, both on the migrated-origin path, and both verifiable live because the account is
9
+ inside Google's rollout:
10
+
11
+ 1. `get_ui_driver` fails fast on `flow.google.com` instead of probing a DOM that cannot answer.
12
+ 2. The account locale is recovered from `<html lang>` when the migrated URL carries no segment.
13
+
14
+ Plus the property that matters more than either: **the old host still works.**
15
+
16
+ ## Layer 1 — the migrated path, measured on a real migrated load
17
+
18
+ ```json
19
+ {
20
+ "final_url": "https://flow.google.com/project/c5550ed7-...",
21
+ "host_kind": "migrated",
22
+ "get_ui_driver": { "raised": "FlowHostMigratedError", "ms": 0,
23
+ "exit_code": 36, "retryable": true, "names_host": true },
24
+ "await_url_settled": { "result": null, "ms": 0 },
25
+ "locale_recovery": { "html_lang": "en-GB", "from_url": null, "from_lang_attr": "en" }
26
+ }
27
+ ```
28
+
29
+ | | before | after (measured) |
30
+ |---|---|---|
31
+ | `detect_ui_mode` poll window | ~8 s | skipped |
32
+ | crop selector cascade | ~24 s | skipped |
33
+ | `await_url_settled` | 4018 ms | **0 ms** |
34
+ | **time to exit 36** | **~36 s** | **0 ms** |
35
+ | locale on migrated origin | `null` (and demoted a learned locale) | **`en`** recovered from `<html lang>` |
36
+
37
+ `ui_driver.migrated_host_bail` is logged, so the fast path is observable rather than inferred.
38
+
39
+ ## Layer 2 — no regression on the old host (full generation, exit 0)
40
+
41
+ The rollout still flaps on this account, and a `gflow image t2i --project <existing>` run landed
42
+ on the **old** host during verification:
43
+
44
+ ```
45
+ EXIT=0 ELAPSED_MS=42168
46
+ status: ok | model: NARWHAL
47
+ dims: 768x1376 | tmp/lv661/images/2026-09-03/0add6af6-...-_1.jpg
48
+ ```
49
+
50
+ Real image generated and written. The host guard is scoped to the migrated origin and does not
51
+ short-circuit the path that works.
52
+
53
+ ## Layer 3 — offline
54
+
55
+ - 5 + 8 tests written **red first** across the two fixes.
56
+ - **A/B controls:** neutering the early bail fails exactly 3; neutering the locale fix fails
57
+ exactly 8 — one per claimed behaviour, no test passing vacuously. No-regression tests pass in
58
+ **both** directions.
59
+ - `1614 passed / 3 skipped`; ruff clean; pyright 78 = `develop` baseline.
60
+
61
+ ## Recorded as NOT verified rather than omitted
62
+
63
+ - **Driving the migrated frontend.** Still impossible; #639 stays open. These fixes make the
64
+ failure fast and honest, not survivable.
65
+ - **A non-English migrated locale end to end.** `html lang=pt` was measured on `denon82`'s
66
+ migrated load, but the recovery path was exercised live only on `en-GB` → `en`. The `pt` case
67
+ is unit-tested, not live-run.
68
+ - **The `en-GB` → `en` region reduction against a locale where region is load-bearing**
69
+ (`zh-Hans`/`zh-Hant`). Only two locales observed; flagged in the docstring.
@@ -4,6 +4,81 @@
4
4
 
5
5
  ## Current release
6
6
 
7
+ **v0.66.1 — alpha.** **The migrated-origin failure went from 36 seconds of doomed probing to
8
+ instant, and stopped throwing away a locale it had already learned.**
9
+
10
+ v0.66.0 taught gflow to *name* Google's `flow.google.com` migration
11
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639)). This release makes living with it
12
+ cheap. Two fixes, both measured on real migrated loads rather than reasoned about:
13
+
14
+ **Fail fast.** The migrated frontend renders none of the controls gflow drives, so every DOM
15
+ probe was doomed before it started — yet a run still burned the `detect_ui_mode` poll window
16
+ (~8 s, both arms missing), the crop cascade (~24 s) and the URL settle (4 s) before raising
17
+ `FlowHostMigratedError`. Because the rollout flaps per page load and callers retry on exit 36,
18
+ that was paid on **every attempt of a retry loop**. The host is knowable from `page.url` in
19
+ microseconds; measured live, exit 36 now arrives in **0 ms**.
20
+
21
+ **Stop discarding the locale.** The migrated origin serves `/project/<id>` with no
22
+ `/fx/<locale>/tools/flow` segment, so locale resolution was structurally blind there — and
23
+ `next_locale_state("pt", None)` then *demoted* an already-learned locale to PROVISIONAL on
24
+ every migrated load, silently undoing [#587](https://github.com/ffroliva/gflow-cli/issues/587).
25
+ The locale had not disappeared with the URL shape; it was in `<html lang>` the whole time.
26
+ Measured on two accounts, `<html lang>` **agreed with the URL segment wherever both existed** —
27
+ which is what licenses it as a fallback, where `navigator.language` (which reports the value
28
+ gflow itself sets) would not
29
+ ([#643](https://github.com/ffroliva/gflow-cli/issues/643)).
30
+
31
+ Neither fix makes the migrated frontend drivable — #639 stays open for that. What they buy is a
32
+ failure that is instant and honest instead of slow and lossy.
33
+
34
+ Verification: [LIVE_VERIFICATION_v0.66.1](LIVE_VERIFICATION_v0.66.1.md) — proven on **both sides
35
+ of the still-flapping rollout** at zero credits: 0 ms exit 36 on a migrated load, and minutes
36
+ later **exit 0** with a real 768x1376 JPEG on an old-host load, proving the guard is scoped.
37
+
38
+ <details><summary>v0.66.0 — naming Flow's flow.google.com migration</summary>
39
+
40
+ **v0.66.0 — alpha.** **Google started moving Flow to a new domain, and gflow blamed its own
41
+ selectors for it.**
42
+
43
+ On a migrated page load, `labs.google/fx/tools/flow/project/<id>` redirects to
44
+ `flow.google.com/project/<id>` and serves a rewritten frontend containing **zero `<i>`
45
+ elements**. Every gflow selector anchors on Material Symbols ligatures, so cohort detection
46
+ and every mode control missed at once and the run died `UiSelectorDriftError` — exit 23,
47
+ `retryable: false`. That error means "a selector rotted, file a bug", so it sent operators
48
+ hunting where nothing was broken. The selectors are correct for the host they were written
49
+ against; that host is being replaced under them
50
+ ([#639](https://github.com/ffroliva/gflow-cli/issues/639), reported by
51
+ [@maipmacrothorax-75](https://github.com/maipmacrothorax-75) with measurements from both
52
+ sides of the rollout).
53
+
54
+ The rollout **flaps per page load** — the same account, profile and project land on the old
55
+ host on one navigation and the migrated one on the next — so a re-run frequently succeeds,
56
+ which `retryable: false` was throwing away. gflow now recognises the migrated origin and
57
+ raises a distinct, **retryable** `FlowHostMigratedError` (exit 36). CLI and MCP both inherit
58
+ it: they share the raise site, and `is_retryable` is a single source of truth for the
59
+ `--json`, MCP and worker envelopes.
60
+
61
+ Tracing the same root cause turned up three things the report did not name. `_check_logged_in`
62
+ hard-required `labs.google` in the URL, so a valid authenticated session on the migrated host
63
+ was read as **logged-out** — and that gate was a *substring* match, satisfied by any foreign
64
+ URL merely carrying the string in a path or query. Separately, `UiSelectorDriftError` is an
65
+ incident-**capture** trigger, so swapping in a new class would have silently switched off
66
+ bundle capture for exactly the failure whose evidence is most wanted; a test now pins that
67
+ invariant across all four arms of the raise site rather than a list of names.
68
+
69
+ **This does not add support for the migrated frontend.** It converts a confusing hard failure
70
+ into a clear retryable one. Once the rollout completes for an account, no retry will help —
71
+ #639 stays open for that work, with the anchor recon it needs already recorded.
72
+
73
+ Verification: [LIVE_VERIFICATION_v0.66.0](LIVE_VERIFICATION_v0.66.0.md) — proven against the
74
+ **real** migrated frontend at zero credits (`i_total: 0`, `flow_host_kind: "migrated"`,
75
+ `check_logged_in: true`, exit 36, `retryable: true`), with a credit-free `image t2i` on the
76
+ old host minutes earlier completing exit 0 to prove no regression.
77
+
78
+ </details>
79
+
80
+ <details><summary>v0.65.0 — the referenceEntity guard that had never fired</summary>
81
+
7
82
  **v0.65.0 — alpha.** **A safety net that had never once fired, and two crashes that spent
8
83
  your credits before failing.**
9
84
 
@@ -45,6 +120,8 @@ regardless of matcher — [#619](https://github.com/ffroliva/gflow-cli/issues/61
45
120
  Verification:
46
121
  [LIVE_VERIFICATION_reference_entity_guard](LIVE_VERIFICATION_reference_entity_guard.md).
47
122
 
123
+ </details>
124
+
48
125
  <details><summary>v0.64.0 — <code>i2v --end-frame</code> on Omni 1.1 Flash</summary>
49
126
 
50
127
  **v0.64.0 — alpha.** **`gflow video i2v --model omni-flash --end-frame` — first+last
@@ -443,6 +520,8 @@ reporter-verified e2e on macOS).
443
520
 
444
521
  | Milestone | Status |
445
522
  |---|---|
523
+ | Migrated-origin runs fail instantly (0 ms) and keep their learned locale | ✅ done (v0.66.1) |
524
+ | Flow `flow.google.com` migration named as its own retryable failure (exit 36) | ✅ done (v0.66.0) |
446
525
  | Repo scaffold, CI, license, README, disclaimer | ✅ done |
447
526
  | Auth login flow (one-time browser capture) | ✅ done |
448
527
  | Video: `t2v` / `i2v` / `batch` (Veo 3.1) | ✅ done (v0.2.0a1) |
@@ -1642,6 +1642,7 @@ shell scripts can branch on the failure mode without parsing stderr.
1642
1642
  | `33` | — (`gflow doctor` verdict) | Doctor found warn/fail findings — a successful diagnosis, not an error class | Review the report; see [`gflow doctor`](#gflow-doctor) |
1643
1643
  | `34` | `SyncPartialError` | `gflow data sync` failed on some projects but succeeded on others — completed writes stay committed | Retryable: re-run the same command; it resumes with what is still nameless (see [`gflow data sync`](#gflow-data-sync)) |
1644
1644
  | `35` | `ExtendUnavailableError` | No Veo extend model is orderable for this account and aspect — the extend family is tier-gated and there is no square variant. **Never auto-retry**: a tier gate does not clear on its own. |
1645
+ | `36` | `FlowHostMigratedError` | Flow served the project from `flow.google.com` — the origin Google is migrating the app onto — whose frontend renders none of the controls gflow drives. Not selector drift (23) | **Retryable while the rollout flaps**: the same account lands on the old host on one page load and the new one on the next, so re-running often succeeds. If every attempt now lands on `flow.google.com`, the migration has completed for your account and retrying will not help — see [#639](https://github.com/ffroliva/gflow-cli/issues/639) |
1645
1646
  | `130`| SIGINT | User-interrupted (Ctrl-C) | — |
1646
1647
 
1647
1648
  **Exit code 16 — data store / migration error.** Fires when:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "gflow-cli"
3
- version = "0.65.0"
3
+ version = "0.66.1"
4
4
  description = "Unofficial CLI for Google Flow — drive Veo image-to-video generations from the terminal."
5
5
  readme = "README.md"
6
6
  license = { file = "LICENSE" }
@@ -1,3 +1,3 @@
1
1
  """gflow-cli — unofficial CLI for Google Flow."""
2
2
 
3
- __version__ = "0.65.0"
3
+ __version__ = "0.66.1"
@@ -792,8 +792,23 @@ class FlowApiClient:
792
792
  segment = routes.locale_segment_from_url(settled or "")
793
793
  if segment is not None:
794
794
  logger.info("client.account_locale_resolved", locale=segment, url=settled)
795
- else:
796
- logger.info("client.account_locale_unresolved", last_url=settled)
795
+ return segment
796
+ # #643: the migrated flow.google.com origin serves /project/<id> with no
797
+ # locale segment, so the URL can never answer there — but Flow still
798
+ # renders the account locale into <html lang>. Without this the resolver
799
+ # returns None and `next_locale_state` DEMOTES an already-learned locale
800
+ # to PROVISIONAL (measured: a pt account lost its "pt" on every migrated
801
+ # load). Best-effort: a probe failure must never break navigation.
802
+ try:
803
+ lang = await page.evaluate("() => document.documentElement.lang || ''")
804
+ except Exception as exc: # noqa: BLE001 - observation only
805
+ logger.info("client.account_locale_lang_probe_failed", error=type(exc).__name__)
806
+ lang = None
807
+ segment = routes.locale_segment_from_lang_attr(lang)
808
+ if segment is not None:
809
+ logger.info("client.account_locale_resolved", locale=segment, source="html_lang")
810
+ return segment
811
+ logger.info("client.account_locale_unresolved", last_url=settled)
797
812
  return segment
798
813
 
799
814
  async def _launch_persistent_context(self, kwargs: JsonObject) -> BrowserContext:
@@ -212,6 +212,38 @@ def locale_segment_from_url(url: str) -> str | None:
212
212
  return match.group(1).lower()
213
213
 
214
214
 
215
+ _LANG_ATTR_RE = re.compile(r"^([a-z]{2,3})(?:-[a-z]{2,4})?$")
216
+
217
+
218
+ def locale_segment_from_lang_attr(lang: str | None) -> str | None:
219
+ """Derive Flow's locale SEGMENT from a page's ``<html lang>`` attribute (#643).
220
+
221
+ Needed because the migrated ``flow.google.com`` origin serves ``/project/<id>``
222
+ with **no locale segment at all** — :func:`locale_segment_from_url` is
223
+ structurally blind there. The locale did not disappear with the URL shape; it
224
+ is still served in the document.
225
+
226
+ Measured 2026-09-03 on two profiles, old host vs migrated:
227
+
228
+ * ``ffroliva`` old ``/fx/tools/flow`` (bare), ``lang=en`` -> migrated ``lang=en-GB``
229
+ * ``denon82`` old ``/fx/pt/tools/flow``, ``lang=pt`` -> migrated ``lang=pt``
230
+
231
+ ``html lang`` **agreed with the URL segment wherever both existed**, which is
232
+ what licenses it as a fallback. Unlike ``navigator.language`` — which reports
233
+ the value gflow itself sets when it launches the context, and so answers
234
+ confidently but wrongly — this attribute is server-rendered by Flow.
235
+
236
+ The region suffix is dropped (``en-GB`` -> ``en``) because Flow's URL segments
237
+ carry no region, and the two derivations must stay comparable. Anything that
238
+ is not a plausible tag returns ``None`` — "build the bare URL" is always safe,
239
+ and guessing is the defect this exists to avoid.
240
+ """
241
+ if not lang:
242
+ return None
243
+ match = _LANG_ATTR_RE.match(lang.strip().lower())
244
+ return match.group(1) if match else None
245
+
246
+
215
247
  def project_editor_url(locale: str | None, project_id: str) -> str:
216
248
  """Build the user-facing Flow editor URL for an existing project.
217
249