unsloth/studio/backend
Daniel Han 779cc6cb49 CI(studio): always-upload artifacts + gate /api/system + path/health plumbing
Three small but high-signal changes that came out of an audit of how
much Studio surface CI actually exercises:

  1. Every studio-*-smoke.yml workflow now uploads its artifacts on
     `if: always()` instead of `if: failure()`. On green runs the
     screenshots + studio.log are now reviewable in the Actions UI,
     which closes the "passed but the UI is silently broken" hole.
     SHA-pinned to actions/upload-artifact@v4.6.2 across all 7 upload
     steps (was a mix of @v4 unpinned + the SHA-pin).

  2. /api/system and /api/system/hardware now require a Bearer token
     (Depends(get_current_subject)). Today they leak Python version,
     GPU name, total memory, and the ML package set without auth --
     fine on a single-user Tauri box, not fine on -H 0.0.0.0 / Colab
     / a Tauri-relayed setup. /api/system/gpu-visibility was already
     gated; now /api/system + /api/system/hardware match it.

  3. Path filters + health-wait plumbing:
     - studio-ui-smoke.yml now triggers on tests/studio/** so a PR
       that ONLY edits the Playwright test file actually runs UI CI.
     - studio-tauri-smoke.yml now triggers on unsloth_cli/** so a CLI
       rename or signature change that breaks Tauri's spawned
       `unsloth studio` actually runs Tauri CI.
     - The 60s `/api/health` wait loop in studio-ui-smoke.yml +
       studio-inference-smoke.yml (3 jobs) is now 180s. Cold runners
       with venv warm-up + lazy imports have been observed exceeding
       60s, and the cost of a false-fail is much higher than two
       extra minutes of waiting.
2026-05-07 04:09:09 +00:00
..
assets Add Qwen3.6 inference defaults for Studio (#5065) 2026-04-16 11:42:42 -07:00
auth Studio: add github_repo seed reader and GitHub Support Bot recipe (#5169) 2026-04-24 12:02:03 -07:00
core feat(studio): add Continued Pretraining (CPT) as a training method (#4677) 2026-05-06 13:38:35 +04:00
loggers Add native GGUF intake to Studio (#5246) 2026-05-04 11:46:18 +02:00
models feat(studio): add Continued Pretraining (CPT) as a training method (#4677) 2026-05-06 13:38:35 +04:00
plugins Studio: add github_repo seed reader and GitHub Support Bot recipe (#5169) 2026-04-24 12:02:03 -07:00
requirements Studio: add github_repo seed reader and GitHub Support Bot recipe (#5169) 2026-04-24 12:02:03 -07:00
routes feat(studio): add Continued Pretraining (CPT) as a training method (#4677) 2026-05-06 13:38:35 +04:00
state unsloth run: add --enable-tools/--disable-tools server-side tool policy (#5277) 2026-05-05 12:45:15 +04:00
storage Studio: Add checkpoint resume for stopped training runs (#5255) 2026-05-04 00:34:46 +04:00
tests feat(studio): add Continued Pretraining (CPT) as a training method (#4677) 2026-05-06 13:38:35 +04:00
utils feat(studio): add Continued Pretraining (CPT) as a training method (#4677) 2026-05-06 13:38:35 +04:00
__init__.py Final cleanup 2026-03-12 18:28:04 +00:00
_platform_compat.py Fix Studio crash on Anaconda/conda-forge Python (#4484) 2026-03-22 05:36:55 -07:00
colab.py Fix/studio colab button message: Add fallback message for Colab Studio button when proxy URL fails (#4866) 2026-04-05 21:57:45 -07:00
main.py CI(studio): always-upload artifacts + gate /api/system + path/health plumbing 2026-05-07 04:09:09 +00:00
run.py install: support STUDIO_HOME / UNSLOTH_STUDIO_HOME for custom install paths (#5190) 2026-05-05 23:17:40 -07:00
startup_banner.py studio: unify Windows installer/setup logging style, verbosity controls, and startup messaging (#4651) 2026-03-30 00:53:23 -07:00