Skip to content

Studio: pick the image and video model where the chat runs - #1159

Draft
sosidudku1 wants to merge 6 commits into
rel/xp-buildfrom
feat/ato-1304-studio-follows-chat
Draft

sosidudku1 wants to merge 6 commits into
rel/xp-buildfrom
feat/ato-1304-studio-follows-chat

Conversation

@sosidudku1

@sosidudku1 sosidudku1 commented Nov 10, 2026 •

Copy link
Copy Markdown
Collaborator

What

Studio kept its own model choice, unrelated to the chat. With the chat on Cloud · OpenRouter, Studio › Images still opened on a local FLUX it had been set to once, and asked to "load the model first".

Owner decision (25.10): Studio always works where the chat does. This PR:

  • adds STUDIO.chatPlace() in studio/shell.js: 'local', 'cloud', or null while the settings are not read yet (with an empty config selBackend() says cloud, so that case is checked first). It reads selBackend() and rmNow() from renderer.js and does not change renderer.js. The pure rule (placeOf) is exported for tests. A custom server counts as local; Fusion follows its orchestrator, as Improve prompt does (main/studio-improve-prompt.ts). These two are proposals in the Linear issue and still need the owner's ok.
  • Images and Video open on a model of that place: the one last chosen there, else in the cloud the default model, locally a loaded model, else a downloaded one. With nothing there, no model: Studio never moves to the other place by itself. Each place remembers its own last choice, so coming back returns it.
  • When the chat has moved since the page was last shown, the page reads the catalog again and switches model, keeping the prompt and inputs. Never while a job is running or starting; it catches up when the job ends.
  • The Video first-frame notice says to switch the chat to the cloud instead of "Pick a cloud model".

Before the settings are read, both pages behave as before.

Why

Linear ATO-1304, ATO-1305, ATO-1306 (parent ATO-902).

Stack

Stacks on #1114 and #1157 and #1158 (same files). This PR's own change is the top two commits (the second answers review: Video keeps the latest model used in each place, a restored one included, the same way Images does).

How it was verified

  • Unit tests added: studio-shell.test.mjs (cloud, local, custom, Fusion with a cloud or local orchestrator, empty settings), studio-images.test.mjs (default and remembered model per place), studio-video.test.mjs (pickModel per place, and the page switching with the chat and back, but not during a running clip; the latest model used in a place, a restored one included, is the one it comes back to). Not run yet.
  • To check in the app: chat on Cloud · OpenRouter, open Images: a cloud model. Switch the chat to Local, come back: a local model, prompt still there. Switch back: the earlier cloud model. Same on Video.

Not yet checked on the second Mac.

…oaded

Generate loads a downloaded local model by itself, so telling the user to
load it first was wrong. Images and Video now say the model loads when
Generate is pressed, or that it is not downloaded yet.
Studio named the machine "this Mac" everywhere: the local model group in
the Images and Video pickers, the model row, the footer, the progress card,
the mode hints and the first-frame notice. A Windows user saw "On this Mac
· free, private" (ATO-1400).

The words now follow the platform the bridge reports, the same rule as
renderer.js THIS_MACHINE: "this Mac" on macOS and in the demo, "this
computer" on Windows and Linux. "Show in Finder" follows the chat's
fileManagerName() (Explorer / Folder). The mode-hint rule no longer matches
on the hint's own words.
The Images and Video pages read the model catalog once per window. After
the first local generation (which loads the model by itself) the footer
still said "loads when you press Generate" and the picker "Not loaded"
until the window was reloaded (ATO-1394).

The shell now hands every non-core BR.studio.onLocal event to the pages'
optional onLocal. A page reads the catalog again, quietly and once per
burst, when a model finished loading (or failed to), a download finished,
a model was removed, or one of its local jobs ended. Only the models' facts
change: the chosen model, the form and the prompt stay.
The Images and Video pages kept their own model choice, so with the chat
on OpenRouter Studio still opened on a local FLUX it had been set to once
(ATO-902). Owner decision 25.10: Studio always works where the chat does.

- STUDIO.chatPlace() answers 'local', 'cloud' or null (settings not read
  yet) from selBackend() and rmNow(); a custom server counts as local,
  Fusion follows its orchestrator, as Improve prompt does (ATO-1304).
- Images and Video open on a model of that place: the one last chosen
  there, else in the cloud the default, locally a loaded model, else a
  downloaded one; with nothing there, no model rather than the other
  place. Each place remembers its own choice (ATO-1305, ATO-1306).
- When the chat has moved since the page was last shown, the page reads
  the catalog again and switches model, keeping the prompt. Never while
  a job is being made; it catches up when the job ends.
- The Video first-frame hint asks to switch the chat to the cloud
  instead of picking a cloud model.
@sosidudku1
sosidudku1 force-pushed the feat/ato-1304-studio-follows-chat branch from 0615cde to 12f1bf5 Compare November 10, 2026 23:54

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant