unsloth/docker
Daniel Han 3fb8804854 docker: AGPLv3 attribution + integrity guard for the Studio/JupyterLab image
Make it obvious the image is built by Unsloth and hard to white-label out with a
shallow find-and-replace, and surface the AGPLv3 license + copyright in the UI.

Visible attribution (labextension):
- Help > "About Unsloth Docker Studio" dialog (about.ts): Unsloth logo, the
  AGPLv3 notice, "Copyright 2026-Present the Unsloth team", and source/website/
  license links. Added to the Help menu and the command palette.
- The JupyterLab loading splash is replaced with a spinning Unsloth logo
  (splash.ts, provides ISplashScreen; honors prefers-reduced-motion). The stock
  @jupyterlab/apputils-extension:splash is disabled+locked at build time, like
  the stock logo.
- AGPLv3 footer (license + copyright + links) on the branded login page.
- Labextension relicensed AGPL-3.0-only; SPDX headers on every source file.

Anti-tamper (no encoded/obfuscated strings -- plain readable text only; the one
data URI is the logo image):
- A canonical, plain-text attribution set lives in unsloth_branding.py with a
  TypeScript mirror (branding.ts) bundled verbatim into the labextension, so the
  phrase, copyright, links and plugin ids are spread across independent layers.
- unsloth_branding.py verifies all of these across the installed files (AGPLv3
  text, login footer, theme, labextension package + built bundle strings, logo,
  favicon) and fails loudly if any are missing. It runs at three layers:
  build time (fails the image build), the whole-container launcher
  (studio_launch.sh refuses to start), and as a jupyter_server extension
  (refuses to serve JupyterLab).
- tests/studio/test_branding_guard.py: positive + per-marker negative coverage,
  plus a check that no base64/decoder obfuscation crept into the attribution.
2026-06-27 07:43:35 +00:00
..
jupyter docker: AGPLv3 attribution + integrity guard for the Studio/JupyterLab image 2026-06-27 07:43:35 +00:00
.dockerignore docker: AGPLv3 attribution + integrity guard for the Studio/JupyterLab image 2026-06-27 07:43:35 +00:00
build.sh docker: track latest llama.cpp release + show its update banner in Studio 2026-06-24 01:21:17 +00:00
docker_confirm.ps1 docker: Colab-grade JupyterLab and Studio UX for the Blackwell image 2026-06-25 16:22:41 +00:00
docker_confirm.sh docker: Colab-grade JupyterLab and Studio UX for the Blackwell image 2026-06-25 16:22:41 +00:00
Dockerfile Merge remote-tracking branch 'origin/docker-blackwell-build' into pr-jupyter-studio-ux 2026-06-26 10:52:28 +00:00
Dockerfile.studio docker: AGPLv3 attribution + integrity guard for the Studio/JupyterLab image 2026-06-27 07:43:35 +00:00
entrypoint.sh docker: pre-load unslothai/notebooks into JupyterLab, edit-safe refresh 2026-06-15 06:35:08 +00:00
fetch_llama_prebuilt.py [pre-commit.ci] auto fixes from pre-commit.com hooks 2026-06-26 05:42:43 +00:00
freeze.sh Add Docker build for Blackwell that runs on any NVIDIA GPU host 2026-05-24 06:52:58 +00:00
hf_pull.sh hf_{push,pull}.sh: use new hf CLI, fall back to deprecated huggingface-cli 2026-05-24 09:40:22 +00:00
hf_push.sh hf_{push,pull}.sh: use new hf CLI, fall back to deprecated huggingface-cli 2026-05-24 09:40:22 +00:00
run.sh docker: Colab-grade JupyterLab and Studio UX for the Blackwell image 2026-06-25 16:22:41 +00:00
setup_qemu.sh Add linux/arm64 (DGX Spark / Grace) support via QEMU at build time 2026-05-24 10:34:59 +00:00
smoke_test.py [pre-commit.ci] auto fixes from pre-commit.com hooks 2026-06-12 04:35:41 +00:00
studio_launch.sh docker: AGPLv3 attribution + integrity guard for the Studio/JupyterLab image 2026-06-27 07:43:35 +00:00
supervisord.conf docker: optional Cloudflare tunnel for JupyterLab (UNSLOTH_JUPYTER_CLOUDFLARE) 2026-06-24 09:55:11 +00:00
test_locally.sh docker: review fixes from the 8-reviewer pass and staging CI 2026-06-12 05:31:24 +00:00
unsloth_colab_compat.py [pre-commit.ci] auto fixes from pre-commit.com hooks 2026-06-25 16:23:30 +00:00
unsloth_ipython_startup.py [pre-commit.ci] auto fixes from pre-commit.com hooks 2026-06-25 16:23:30 +00:00
unsloth_jupyter_tunnel.sh docker: optional Cloudflare tunnel for JupyterLab (UNSLOTH_JUPYTER_CLOUDFLARE) 2026-06-24 09:55:11 +00:00
unsloth_llama_update.sh docker: add unsloth-llama-update for in-place llama.cpp prebuilt updates 2026-06-24 06:41:33 +00:00
unsloth_nb_compat.py [pre-commit.ci] auto fixes from pre-commit.com hooks 2026-06-25 16:23:30 +00:00
unsloth_nb_content_sig.py [pre-commit.ci] auto fixes from pre-commit.com hooks 2026-06-16 03:49:07 +00:00
unsloth_nb_strip_colab.py [pre-commit.ci] auto fixes from pre-commit.com hooks 2026-06-25 16:23:30 +00:00
unsloth_nb_view.py [pre-commit.ci] auto fixes from pre-commit.com hooks 2026-06-26 05:35:41 +00:00
unsloth_pip_shim.py [pre-commit.ci] auto fixes from pre-commit.com hooks 2026-06-26 11:42:44 +00:00
unsloth_run.py [pre-commit.ci] auto fixes from pre-commit.com hooks 2026-06-15 03:13:48 +00:00
unsloth_studio_update.sh docker: address review follow-ups (pip-shim flags, sync ownership, tags, zoo ref, arch list) 2026-06-26 09:06:39 +00:00
unsloth_sync_notebooks.sh Merge remote-tracking branch 'origin/docker-blackwell-build' into pr-jupyter-studio-ux 2026-06-26 09:18:34 +00:00