unsloth/studio/frontend/src
Daniel Han a7d415262a Keep the scoped download key derivable, and stop the hidden page hijacking a route
Four review findings, the first a regression from my own last commit:

- Keying scoped download jobs by a digest of the file set broke the
  download manager: it builds that key client-side (it polls and cancels
  before any response tells it a key), so it watched and cancelled a key
  no worker owned and never fired its ready callback. Keep the derivable
  "@scope" key and refuse the second request instead when a live job on
  the slot is fetching a different file set -- decided inside the
  registry claim, under the lock, so a concurrent claim cannot slip past
  it. The manager records the file set on the job as well, so a sibling
  quant's transfer is not adopted locally either.
- Both diffusion pages read the route query through a loose useSearch and
  both stay mounted once visited, so the hidden one consumed the other's
  ?model=: it navigated back to its own route and tried to load, say, an
  image checkpoint as a video model. Only the visible page consumes it.
- The staged download plan was built without the configured HF token or
  the Advanced values the load itself sends. The token matters most: the
  backend's Hub metadata lookup is best-effort, so a gated base silently
  planned no companion entry and the load pulled those multi-GB files
  inline, outside the manager. The memory/quant controls decide whether
  the base transformer/ shards are needed at all, and the route dropped
  memory_mode, cpu_offload, the prequant path and the LoRA selection
  before asking for the plan.
- The video preview kept playing after leaving the page: the keep-alive
  layout only hides it, and display:none does not pause a media element,
  so a clip the user unmuted kept its audio going over the next page.
  Pause on the active transition and do not auto-replay while hidden.

Also completes the hand-built request bodies in the hub download tests:
the scoped-files field this branch added to the route read as an
AttributeError against them, failing five tests.
2026-07-26 13:36:38 +00:00
..
app Route a chat pick of a diffusion model to the Images or Video page 2026-07-26 04:56:16 -07:00
assets Studio: mascot images degrade gracefully instead of showing alt text (#6146) 2026-06-10 08:22:17 -07:00
components Merge origin/main into image-generation 2026-07-26 12:37:00 +00:00
config fix(studio): persist connection model selections for remote clients (#7298) 2026-07-23 19:11:50 -07:00
features Keep the scoped download key derivable, and stop the hidden page hijacking a route 2026-07-26 13:36:38 +00:00
hooks Merge origin/main into image-generation (PR #6763) 2026-07-25 00:34:38 -07:00
i18n Merge origin/main into image-generation 2026-07-26 12:37:00 +00:00
lib Merge origin/main into image-generation (PR #6763) 2026-07-25 00:34:38 -07:00
shared studio/frontend: make toast and inline error text selectable and copyable (#5506) 2026-05-18 03:47:21 -07:00
stores Update license headers 2026-03-12 17:23:10 +00:00
types feat(studio): add DoRA support to studio (#7315) 2026-07-24 03:24:16 -07:00
utils Studio frontend: reduce and tighten code comments (#6099) 2026-06-08 23:10:35 -07:00
asset-queries.d.ts Studio: mascot images degrade gracefully instead of showing alt text (#6146) 2026-06-10 08:22:17 -07:00
index.css Images: flat Create and Train panes, hover-only scrollbars, tidier Train dataset step 2026-07-25 03:13:41 -07:00
main.tsx Studio: lighten chat text weight on Linux to match macOS rendering (#7308) 2026-07-22 06:14:40 -07:00
speech-recognition.d.ts studio: redesign chat composer (#5891) 2026-06-03 06:07:30 -07:00