+ {/* Right: docs/tour desktop — one wrapper per control so flex gap is even (HoverCard roots can confuse flex spacing). */}
+
+
+
+ {tourId ? (
+
-
- Update
+
+ Tour
-
-
-
-
-
-
- setShutdownOpen(true)}
- className="-mr-1.5 flex h-9 w-9 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground"
- title="Shut down Unsloth Studio server"
- aria-label="Shut down Unsloth Studio server"
- >
-
-
+
+ ) : null}
+
+
+
+
+
+ Update
+
+
+
+
+
+
+
+
+ setShutdownOpen(true)}
+ className="flex h-9 w-9 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground"
+ title="Shut down Unsloth Studio server"
+ aria-label="Shut down Unsloth Studio server"
+ >
+
+
+
{/* Right: mobile */}
diff --git a/studio/frontend/src/features/chat/shared-composer.tsx b/studio/frontend/src/features/chat/shared-composer.tsx
index 59b0880add..ac01f77381 100644
--- a/studio/frontend/src/features/chat/shared-composer.tsx
+++ b/studio/frontend/src/features/chat/shared-composer.tsx
@@ -473,7 +473,7 @@ export function SharedComposer({
onChange={(e) => setText(e.target.value)}
onKeyDown={onKeyDown}
placeholder="Send to both models..."
- className="mb-1 max-h-32 min-h-14 w-full resize-none bg-transparent px-4 pt-2 pb-3 text-sm outline-none placeholder:text-muted-foreground"
+ className="mb-1 max-h-32 min-h-14 w-full resize-none bg-transparent pl-5 pr-4 pt-2 pb-3 text-sm outline-none placeholder:text-muted-foreground"
rows={1}
/>
diff --git a/studio/frontend/src/index.css b/studio/frontend/src/index.css
index 8dc159a002..45696b2274 100644
--- a/studio/frontend/src/index.css
+++ b/studio/frontend/src/index.css
@@ -6,21 +6,11 @@
@import "shadcn/tailwind.css";
@import "streamdown/styles.css";
@import "@fontsource-variable/figtree";
-@import "@fontsource-variable/space-grotesk";
@import "@fontsource-variable/inter";
@import "tw-shimmer";
@plugin "@toolwind/corner-shape";
@source "../node_modules/streamdown/dist/*.js";
-@font-face {
- font-family: "Hellix";
- src: url("/fonts/Hellix-SemiBold.woff2") format("woff2"),
- url("/fonts/Hellix-SemiBold.woff") format("woff");
- font-weight: 600;
- font-style: normal;
- font-display: swap;
-}
-
@custom-variant dark (&:is(.dark *));
:root {
@@ -67,7 +57,7 @@
--sidebar-ring: oklch(0.6929 0.1396 166.5513);
--destructive-foreground: oklch(1 0 0);
--font-sans: "Inter Variable", ui-sans-serif, sans-serif, system-ui;
- --font-heading: "Hellix", "Space Grotesk Variable", ui-sans-serif, sans-serif;
+ --font-heading: var(--font-sans);
--font-serif: Source Serif 4, serif;
--font-mono: JetBrains Mono, monospace;
--shadow-color: hsl(0 0% 0%);
@@ -159,7 +149,7 @@
@theme inline {
--font-sans: "Inter Variable", ui-sans-serif, sans-serif, system-ui;
- --font-heading: "Hellix", "Space Grotesk Variable", ui-sans-serif, sans-serif;
+ --font-heading: var(--font-sans);
--color-sidebar-ring: var(--sidebar-ring);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
@@ -343,10 +333,68 @@
[data-streamdown="code-block"] {
gap: 0;
padding: 0.5rem;
+ /* Wide lines must scroll inside the thread column, not widen past the composer (flex min-width:auto). */
+ max-width: 100%;
+ min-width: 0;
+ overflow-x: auto;
}
[data-streamdown="code-block-header"] {
padding-left: 0.75rem;
}
+
+ /* Chat thread: code slightly smaller by default; step up when the thread column is wide. */
+ .aui-thread-root [data-streamdown="code-block"] {
+ font-size: 0.8125rem;
+ line-height: 1.55;
+ }
+
+ .aui-thread-root [data-streamdown="code-block-header"] {
+ font-size: 0.6875rem;
+ }
+
+ @container (min-width: 36rem) {
+ .aui-thread-root [data-streamdown="code-block"] {
+ font-size: 0.875rem;
+ }
+
+ .aui-thread-root [data-streamdown="code-block-header"] {
+ font-size: 0.75rem;
+ }
+ }
+
+ /* Chat: use the app sans stack for UI + prose. */
+ .aui-thread-root {
+ font-family: var(--font-sans);
+ }
+
+ .aui-thread-root .font-medium,
+ .aui-thread-root .font-semibold,
+ .aui-thread-root .font-bold,
+ .aui-thread-root .font-heading {
+ font-family: var(--font-sans);
+ }
+
+ .aui-thread-root :where(h1, h2, h3, h4, h5, h6) {
+ font-family: var(--font-sans);
+ }
+
+ /* Keep monospace for code fences and inline code (not KaTeX). */
+ .aui-thread-root [data-streamdown="code-block"] pre,
+ .aui-thread-root [data-streamdown="code-block"] code {
+ font-family: var(--font-mono), ui-monospace, monospace;
+ }
+
+ .aui-thread-root :where(p, li, td, th, blockquote, h1, h2, h3, h4, h5, h6) code {
+ font-family: var(--font-mono), ui-monospace, monospace;
+ }
+
+ /* Align fenced code blocks with the main chat column even when nested in lists. */
+ .aui-thread-root [data-streamdown="list-item"] > [data-streamdown="code-block"],
+ .aui-thread-root [data-streamdown="list-item"] [data-streamdown="code-block"] {
+ margin-left: -1.25rem;
+ width: calc(100% + 1.25rem);
+ max-width: calc(100% + 1.25rem);
+ }
}
/* Minimal scrollbar — thumb only, no track */