From 6f9d8ad4c38bfc7f256621e34cc5fe74f88daaa8 Mon Sep 17 00:00:00 2001
From: Michael Han <107991372+shimmyshimmer@users.noreply.github.com>
Date: Wed, 18 Mar 2026 17:15:10 -0700
Subject: [PATCH 01/10] Add BETA in README.md
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index bfc9b614ec..828d09bd46 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ Run and train AI models with a unified local interface.
-Unsloth Studio lets you run and train text, [audio](https://unsloth.ai/docs/basics/text-to-speech-tts-fine-tuning), [embedding](https://unsloth.ai/docs/new/embedding-finetuning), [vision](https://unsloth.ai/docs/basics/vision-fine-tuning) models on Windows, Linux and macOS.
+Unsloth Studio (BETA) lets you run and train text, [audio](https://unsloth.ai/docs/basics/text-to-speech-tts-fine-tuning), [embedding](https://unsloth.ai/docs/new/embedding-finetuning), [vision](https://unsloth.ai/docs/basics/vision-fine-tuning) models on Windows, Linux and macOS.
## ⭐ Features
Unsloth provides several key features for both inference and training:
@@ -42,7 +42,7 @@ Unsloth provides several key features for both inference and training:
Unsloth can be used in two ways: through **[Unsloth Studio](https://unsloth.ai/docs/new/studio/)**, the web UI, or through **Unsloth Core**, the code-based version. Each has different requirements.
### Unsloth Studio (web UI)
-Unsloth Studio works on **Windows, Linux, WSL** and **macOS**.
+Unsloth Studio (BETA) works on **Windows, Linux, WSL** and **macOS**.
* **CPU:** Supported for **chat inference only**
* **NVIDIA:** Training works on RTX 30/40/50, Blackwell, DGX Spark, Station and more
From e6a42d0073a0419e8d0449f4c6b43058324921b5 Mon Sep 17 00:00:00 2001
From: Michael Han <107991372+shimmyshimmer@users.noreply.github.com>
Date: Wed, 18 Mar 2026 20:13:48 -0700
Subject: [PATCH 02/10] Update Install instructions.md
---
README.md | 25 ++++++++++++++++++-------
1 file changed, 18 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index 828d09bd46..6bf612df4a 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ Run and train AI models with a unified local interface.
-Unsloth Studio (BETA) lets you run and train text, [audio](https://unsloth.ai/docs/basics/text-to-speech-tts-fine-tuning), [embedding](https://unsloth.ai/docs/new/embedding-finetuning), [vision](https://unsloth.ai/docs/basics/vision-fine-tuning) models on Windows, Linux and macOS.
+Unsloth Studio (Beta) lets you run and train text, [audio](https://unsloth.ai/docs/basics/text-to-speech-tts-fine-tuning), [embedding](https://unsloth.ai/docs/new/embedding-finetuning), [vision](https://unsloth.ai/docs/basics/vision-fine-tuning) models on Windows, Linux and macOS.
## ⭐ Features
Unsloth provides several key features for both inference and training:
@@ -42,7 +42,7 @@ Unsloth provides several key features for both inference and training:
Unsloth can be used in two ways: through **[Unsloth Studio](https://unsloth.ai/docs/new/studio/)**, the web UI, or through **Unsloth Core**, the code-based version. Each has different requirements.
### Unsloth Studio (web UI)
-Unsloth Studio (BETA) works on **Windows, Linux, WSL** and **macOS**.
+Unsloth Studio (Beta) works on **Windows, Linux, WSL** and **macOS**.
* **CPU:** Supported for **chat inference only**
* **NVIDIA:** Training works on RTX 30/40/50, Blackwell, DGX Spark, Station and more
@@ -51,7 +51,8 @@ Unsloth Studio (BETA) works on **Windows, Linux, WSL** and **macOS**.
* **Coming soon:** Training support for Apple MLX, AMD, and Intel.
* **Multi-GPU:** Available now, with a major upgrade on the way
-#### MacOS, Linux or WSL Setup (One time):
+#### MacOS, Linux, WSL:
+For MacOS, ensure you have `cmake` installed. If not, run `brew install cmake`.
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv unsloth_studio --python 3.13
@@ -66,7 +67,8 @@ source unsloth_studio/bin/activate
unsloth studio -H 0.0.0.0 -p 8888
```
-#### Windows PowerShell (One time):
+#### Windows:
+Run in Windows Powershell:
```bash
winget install -e --id Python.Python.3.13
winget install --id=astral-sh.uv -e
@@ -82,9 +84,17 @@ Then to launch every time:
unsloth studio -H 0.0.0.0 -p 8888
```
-Use our [Docker image](https://hub.docker.com/r/unsloth/unsloth) ```unsloth/unsloth``` container. Read our [Docker Guide](https://unsloth.ai/docs/get-started/install/docker).
+#### Docker
+Use our [Docker image](https://hub.docker.com/r/unsloth/unsloth) ```unsloth/unsloth``` container. Run:
+```bash
+docker run -d -e JUPYTER_PASSWORD="mypassword" \
+ -p 8888:8888 -p 8000:8000 -p 2222:22 \
+ -v $(pwd)/work:/workspace/work \
+ --gpus all \
+ unsloth/unsloth
+ ```
-#### Nightly Installation - MacOS, Linux or WSL Setup (One time):
+#### Nightly Install - MacOS, Linux, WSL:
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone --filter=blob:none https://github.com/unslothai/unsloth.git unsloth_studio
@@ -102,7 +112,8 @@ source .venv/bin/activate
unsloth studio -H 0.0.0.0 -p 8888
```
-#### Nightly Installation - Windows Powershell (One time):
+#### Nightly Install - Windows:
+Run in Windows Powershell:
```bash
winget install -e --id Python.Python.3.13
winget install --id=astral-sh.uv -e
From e793c378db5879059e412af1d705b13b8c5146b8 Mon Sep 17 00:00:00 2001
From: Manan Shah <52329525+Manan17@users.noreply.github.com>
Date: Thu, 19 Mar 2026 02:11:27 -0500
Subject: [PATCH 03/10] turning data recipes on for mac (#4454)
---
studio/frontend/src/app/routes/__root.tsx | 8 +++++++-
studio/frontend/src/components/navbar.tsx | 4 ++--
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/studio/frontend/src/app/routes/__root.tsx b/studio/frontend/src/app/routes/__root.tsx
index 0725d383c7..d7780c6743 100644
--- a/studio/frontend/src/app/routes/__root.tsx
+++ b/studio/frontend/src/app/routes/__root.tsx
@@ -15,10 +15,16 @@ import { AppProvider } from "../provider";
const CHAT_ONLY_ALLOWED = new Set(["/", "/chat", "/login", "/signup", "/change-password"]);
+function isChatOnlyAllowed(pathname: string): boolean {
+ if (CHAT_ONLY_ALLOWED.has(pathname)) return true;
+ if (pathname === "/data-recipes" || pathname.startsWith("/data-recipes/")) return true;
+ return false;
+}
+
export const Route = createRootRoute({
beforeLoad: ({ location }) => {
const chatOnly = usePlatformStore.getState().isChatOnly();
- if (chatOnly && !CHAT_ONLY_ALLOWED.has(location.pathname)) {
+ if (chatOnly && !isChatOnlyAllowed(location.pathname)) {
throw redirect({ to: "/chat" });
}
},
diff --git a/studio/frontend/src/components/navbar.tsx b/studio/frontend/src/components/navbar.tsx
index 0f159add77..03ea77a8b2 100644
--- a/studio/frontend/src/components/navbar.tsx
+++ b/studio/frontend/src/components/navbar.tsx
@@ -93,7 +93,7 @@ export function Navbar() {
const disabledByTraining =
isTrainingRunning && item.href !== "/studio";
const disabledByDevice =
- chatOnly && item.href !== "/chat";
+ chatOnly && item.href !== "/chat" && item.href !== "/data-recipes";
if (!item.enabled || disabledByTraining || disabledByDevice) {
return (
Date: Thu, 19 Mar 2026 03:52:07 -0500
Subject: [PATCH 04/10] Fixing Qwen3.5 bug and adding Outetts dependencies
(#4459)
* Fixing Qwen3.5 bug and adding Outetts dependencies
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Apply suggestion from @danielhanchen
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Daniel Han
---
studio/backend/requirements/extras.txt | 5 +++--
studio/backend/utils/models/model_config.py | 5 ++++-
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/studio/backend/requirements/extras.txt b/studio/backend/requirements/extras.txt
index 170b1c9ec8..d783975a4f 100644
--- a/studio/backend/requirements/extras.txt
+++ b/studio/backend/requirements/extras.txt
@@ -26,8 +26,9 @@ omegaconf
einx
pyloudnorm
openai-whisper
-# uroman # 4.0 MB - romanization, no imports found
-# MeCab # 19.9 MB - Japanese tokenizer, no imports found
+uroman # 4.0 MB - used for Outetts.
+MeCab # 19.9 MB - used for Outetts.
+inflect # number-to-words, required by OuteTTS
loguru
flatten_dict
ffmpy
diff --git a/studio/backend/utils/models/model_config.py b/studio/backend/utils/models/model_config.py
index aaf15994be..13f1b5febf 100644
--- a/studio/backend/utils/models/model_config.py
+++ b/studio/backend/utils/models/model_config.py
@@ -630,7 +630,10 @@ _AUDIO_TOKEN_PATTERNS = {
"whisper": lambda tokens: "<|startoftranscript|>" in tokens,
"audio_vlm": lambda tokens: "" in tokens,
"bicodec": lambda tokens: any(t.startswith("<|bicodec_") for t in tokens),
- "dac": lambda tokens: "<|audio_start|>" in tokens and "<|audio_end|>" in tokens,
+ "dac": lambda tokens: "<|audio_start|>" in tokens
+ and "<|audio_end|>" in tokens
+ and "<|text_start|>" in tokens
+ and "<|text_end|>" in tokens,
"snac": lambda tokens: sum(1 for t in tokens if t.startswith(" 10000,
}
From 6c2bfebb20284f9b1cfd6968636c5f47377ae5b5 Mon Sep 17 00:00:00 2001
From: Wasim Yousef Said
Date: Thu, 19 Mar 2026 10:04:53 +0100
Subject: [PATCH 05/10] fix(studio): mobile navbar layout and chat settings
sheet (#4458)
* fix(studio): mobile navbar layout and chat settings sheet
* fix(studio): portal select dropdowns inside sheet modal subtree
---
studio/frontend/src/components/navbar.tsx | 22 +++++--
studio/frontend/src/components/ui/dialog.tsx | 1 +
studio/frontend/src/components/ui/sheet.tsx | 8 ++-
.../frontend/src/features/chat/chat-page.tsx | 1 +
.../src/features/chat/chat-settings-sheet.tsx | 65 ++++++++++++++-----
5 files changed, 73 insertions(+), 24 deletions(-)
diff --git a/studio/frontend/src/components/navbar.tsx b/studio/frontend/src/components/navbar.tsx
index 03ea77a8b2..d90276a641 100644
--- a/studio/frontend/src/components/navbar.tsx
+++ b/studio/frontend/src/components/navbar.tsx
@@ -209,7 +209,7 @@ export function Navbar() {
{/* Right: mobile */}
-