Repository navigation
Releases: umutkocak/studiowright
Release list
v0.2.8
Fixes
- Downloads no longer pile up Chrome windows.
sw downloadruns in a tab of its own, marked with the tab's name. Chrome clears that name when a new tab first navigates fromabout:blankto the site, so every download opened another window and left the old one open. In one profile this had built up 12 windows on the same project. The tab is now named after it reaches the site, and later downloads reuse it.- Windows left over from earlier versions close when Chrome restarts:
sw --profile NAME stop.
- Windows left over from earlier versions close when Chrome restarts:
- Downloads into a relative folder. Chrome cancelled a download whose target folder was given as a relative path. The folder is now made absolute first.
Updating
- Plugin: run
claude plugin update studiowright@studiowright, then/reload-plugins. - Command line: run
uv tool install --force git+https://github.com/umutkocak/studiowright@v0.2.8.
v0.2.5
Profiles
A profile is one signed-in Google account, and you can give it any name: sw --profile account-1 auth login. This release adds ways to manage profiles:
sw auth listnow shows the Google account each profile is signed in to, or "(not signed in)". The address is read from Chrome's own profile file, and nothing is sent anywhere.sw auth rename OLD NEWrenames a profile. It keeps the sign-in, its projects, default project, pacing and credit notes.sw auth logout NAMEremoves a profile from this computer, after you confirm (pass--yesin scripts).- It deletes the profile's Chrome data and StudioWright's records of it.
- Downloaded files are not touched, and the projects stay in your Google account. Signing in again brings the account back.
rename and logout refuse to run while that profile's Chrome is open; run sw --profile NAME stop first.
Updating
- Plugin: run
claude plugin update studiowright@studiowright, then/reload-plugins. - Command line: run
uv tool install --force git+https://github.com/umutkocak/studiowright@v0.2.5.
v0.2.4
Fixes
- Start frames from a fresh upload. A local file used as a start frame could fail with "media … is not on the project grid", most often in a new project. This happened even though the upload itself had worked. For a few seconds Flow shows a new upload as a "100%" placeholder that does not have the media's id yet. StudioWright now waits, up to 60 s, until each new upload has its own tile, and only then uses it as a frame or reference.
- Measured in a new project: the tile arrived 1.5 s after the upload finished, and the start frame was then set.
Updating
- Plugin: run
claude plugin update studiowright@studiowright, then/reload-plugins. - Command line: run
uv tool install --force git+https://github.com/umutkocak/studiowright@v0.2.4.
StudioWright 0.2.3
Uploads
- Large photos upload reliably. Flow did not finish a 14 MB phone photo. Images over 4 MB, or longer than 3072 px on a side, are now scaled down before upload.
- The EXIF orientation is applied first, so photos stay upright.
- The camera and location metadata is not copied into the scaled-down image.
- Measured: a 55 MB, 8000×6000 image and a small one uploaded together in 16 s; the large one went up as 3072×2304.
- No duplicate uploads after a partial failure. When only some files of an upload finish, the finished ones are now recorded, so a retry does not upload them into the project a second time.
Frames
- End frames: an end frame chosen right after it was generated could fail with "no thumbnail to match", because its thumbnail was still loading. StudioWright now waits for the thumbnail. If none appears, it falls back to the medium's title when that title is unambiguous.
Claude Code plugin
- One update for both parts. The plugin now starts the StudioWright release of its own version with
uvx. Updating the plugin therefore updates the MCP server too, and the plugin no longer needs a separately installedsw.- To run a local checkout instead, set
STUDIOWRIGHT_SOURCEto its path.
- To run a local checkout instead, set
- README: a new "Updating" section covers the plugin, auto-update and the command line.
Updating
- Plugin: run
claude plugin update studiowright@studiowright, then/reload-plugins. - Command line: run
uv tool install --force git+https://github.com/umutkocak/studiowright@v0.2.3.
StudioWright 0.2.2
More fixes from large production runs.
2K / 1080p downloads
Refusals are recognised at once. Some sized downloads seemed to "never start" and held the profile for about 15 minutes each. In fact Flow had refused the upscale with PUBLIC_ERROR_UNUSUAL_ACTIVITY, which it reports only in the upscale RPC's reply. This happened after about 45 upscales in 37 minutes. StudioWright now:
- reads that reply and stops at once;
- spaces upscales on their own (60 s plus jitter), and pauses them for an hour after a refusal. Generations keep going, and
sw paceshows the pause; - keeps a new image or clip at its original size when an upscale is refused or paused, and says so in the result's
notes.
Downloads no longer hold up generations
sw download / flow_download run in a tab and under a lock of their own: nothing is submitted for a plain download. Measured: an image generation and two downloads ran side by side, taking 20 s and 15 s.
Clearer failures
- Refused clips: when Flow refuses a clip (status 4), the error now includes the reason Flow writes on the failed tile, such as a policy refusal.
- Late songs: a Flow Music song that finished after the wait is found in the library and saved, instead of the job failing.
Settings
New: STUDIOWRIGHT_UPSCALE_GAP_S, STUDIOWRIGHT_UPSCALE_JITTER_S, STUDIOWRIGHT_UPSCALE_COOLDOWN_S.
Updating
- Plugin: run
claude plugin update studiowright@studiowright, or in Claude Code go to/plugin→ Installed → Update now. Then run/reload-plugins. - Program: run
uv tool install --force git+https://github.com/umutkocak/studiowright@v0.2.2.
StudioWright 0.2.1
Fixes from a large production run: 335 jobs in one night, in a Flow project that grew to 270+ media.
Large Flow projects
- Old references and frames are found again. Flow's project grid is now a virtual scroller (~52,000 px for 270 media), and the old mouse-wheel search stopped at 22,500 px, so references made early in a project failed with "not on the project grid".
- StudioWright now scrolls the grid's own container, starting where the medium should sit by its age. An old reference is found in about 2-3 s.
- Uploads are attached by searching their name in the prompt box's picker, in about 2 s.
- Old end frames are found in the frame picker by their tile title.
- 2K / 4K downloads work for any medium. Each medium's edit view opens directly by media id, so sized and original downloads no longer depend on the grid.
- Measured: two old frames at 2752×1536 plus one rejected item in 49 s.
- Uploaded images, which Flow does not upscale, now fail at once with a clear message.
- One failed item no longer stops a bulk download.
- A tab left on an edit view no longer makes the next job fail with "project did not become ready".
Flow Music
- A Generate that starts nothing is caught. Once, Generate opened a session but sent nothing, and the job waited 600 s. StudioWright now watches for the request that starts the work. If none arrives within 45 s, it presses Generate (or Send) once more; nothing is spent in that case. Other actions fail quickly instead of waiting.
Also
- New command:
sw creditsshows Flow's balance (reported by Flow when a clip is submitted) and the live Flow Music balance.flow_statusincludes the Flow balance too. - Omni Flash 720p prices corrected: 4 / 6 / 8 / 10 s = 7 / 10 / 12 / 15 credits. Flow's pricing is not linear.
StudioWright 0.2.0
The first release: Google Flow and Google Flow Music from the terminal and from AI agents, through your own signed-in Chrome and your own subscriptions. No API keys, no cookie exports, no captcha solvers, no browser extension.
Highlights
Google Flow: images and video
- Nano Banana 2.1 / Pro / 2 Lite images in every aspect ratio, 1-4 per call, with reference images uploaded once and reused.
- Omni Flash and Veo 3.1 Lite / Fast / Quality clips: text only, start frame, start + end frames, or ingredients.
- Flow's own download sizes: 2K/4K images, 720p → 1080p/4K clips, GIF.
--dry-runreports Flow's price without submitting;--max-creditsrefuses anything more expensive.
Google Flow Music
- Songs with lyrics in any language, or instrumentals. Lyria 3.5 / 3 Pro, BPM, length, seed, title, and cover art from a file or a prompt.
- Edits of existing songs: extend, cover, replace a section, variation, trim.
- Stems (drums, bass, vocals, other), WAV / M4A / MP3 downloads, and vertical MP4 video templates.
- The Producer agent: chat to write lyrics, plan songs, remix your own uploaded audio, or make music videos. Songs it makes are saved automatically.
For automation
- One package, three front doors: the
swCLI (--jsoneverywhere), an MCP server with 16 tools (sw mcp), and a Claude Code plugin with a skill. - Resumable JSON Lines batch files that pass results between jobs (image → clip, song → extension → stems).
- Pacing across processes, a cooldown when Google reports unusual activity, a job history, and a screenshot of the page whenever a job fails.
Install
uv tool install git+https://github.com/umutkocak/studiowright@v0.2.0
sw auth loginClaude Code plugin:
claude plugin install studiowright --marketplace umutkocak/studiowrightSetup for Claude Desktop, Cursor, VS Code, Codex and Gemini CLI is in the README.
Measured on a warm tab
| Job | Time | Credits |
|---|---|---|
| Image with a reference | ~20 s | 0 |
| Omni Flash clip, 360p, 4 s | ~30 s | 4 |
| Flow Music song | 32-46 s | 5 |
| Extend / cover / replace | 38-49 s | 5 |
| Stems | 51-64 s | 0 |
Tested on Windows 11. macOS and Linux are supported by the code but not yet tested.
StudioWright is unofficial and not affiliated with Google. It spends your own credits; see the README's disclaimer.