diff --git a/.superpowers/brainstorm/33312-1773817943/.server-info b/.superpowers/brainstorm/33312-1773817943/.server-info
deleted file mode 100644
index 2c7dfdbc..00000000
--- a/.superpowers/brainstorm/33312-1773817943/.server-info
+++ /dev/null
@@ -1 +0,0 @@
-{"type":"server-started","port":60485,"host":"127.0.0.1","url_host":"localhost","url":"http://localhost:60485","screen_dir":"/Users/majunxian/Desktop/PyProject/inkos-studio/.superpowers/brainstorm/33312-1773817943"}
diff --git a/.superpowers/brainstorm/33312-1773817943/.server-stopped b/.superpowers/brainstorm/33312-1773817943/.server-stopped
new file mode 100644
index 00000000..cfba4ed1
--- /dev/null
+++ b/.superpowers/brainstorm/33312-1773817943/.server-stopped
@@ -0,0 +1 @@
+{"reason":"owner process exited","timestamp":1773820583908}
diff --git a/.superpowers/brainstorm/33312-1773817943/.server.log b/.superpowers/brainstorm/33312-1773817943/.server.log
index 322ecda4..7b889eb2 100644
--- a/.superpowers/brainstorm/33312-1773817943/.server.log
+++ b/.superpowers/brainstorm/33312-1773817943/.server.log
@@ -1,3 +1,4 @@
{"type":"server-started","port":60485,"host":"127.0.0.1","url_host":"localhost","url":"http://localhost:60485","screen_dir":"/Users/majunxian/Desktop/PyProject/inkos-studio/.superpowers/brainstorm/33312-1773817943"}
{"type":"screen-added","file":"/Users/majunxian/Desktop/PyProject/inkos-studio/.superpowers/brainstorm/33312-1773817943/layout-concept.html"}
{"type":"screen-added","file":"/Users/majunxian/Desktop/PyProject/inkos-studio/.superpowers/brainstorm/33312-1773817943/layout-refined.html"}
+{"type":"server-stopped","reason":"owner process exited"}
diff --git a/packages/studio/src/App.tsx b/packages/studio/src/App.tsx
index ae884cb8..f9f372de 100644
--- a/packages/studio/src/App.tsx
+++ b/packages/studio/src/App.tsx
@@ -41,12 +41,9 @@ export function App() {
document.documentElement.classList.toggle("dark", isDark);
}, [isDark]);
- // Check if language has been set
useEffect(() => {
if (project) {
- setLanguageSet(!!project.language && project.language !== "zh" ? true : true);
- // For now, always consider language "set" — the selector is for first-time experience
- // In a real implementation, we'd check a "hasCompletedSetup" flag
+ setLanguageSet(true);
}
}, [project]);
@@ -63,42 +60,38 @@ export function App() {
toLogs: () => setRoute({ page: "logs" }),
};
- // Derive active page for sidebar highlighting
const activePage =
route.page === "book" || route.page === "chapter" || route.page === "truth" || route.page === "analytics"
? `book:${(route as { bookId: string }).bookId}`
: route.page;
- // Language selector for first-time setup
if (languageSet === null) {
- return
; // Loading
+ return ;
}
return (
- {/* Sidebar */}
- {/* Main area + Chat bar */}
- {/* Header strip */}
-
+ {/* Thin utility strip — pushed inward */}
+
{sse.connected && (
-
+
{t("nav.connected")}
)}
- {/* Scrollable main content */}
+ {/* Scrollable main — centered with generous inset */}
-
+
{route.page === "dashboard" && }
{route.page === "book" && }
{route.page === "book-create" && }
@@ -111,7 +104,7 @@ export function App() {
- {/* Chat bar - always at bottom */}
+ {/* Chat bar — inset to match content width */}
diff --git a/packages/studio/src/components/ChatBar.tsx b/packages/studio/src/components/ChatBar.tsx
index 01acba81..40c3928e 100644
--- a/packages/studio/src/components/ChatBar.tsx
+++ b/packages/studio/src/components/ChatBar.tsx
@@ -118,38 +118,40 @@ export function ChatBar({ t, sse }: {
: "Tell InkOS what to do...";
return (
-
+
{/* Expanded message area */}
{expanded && messages.length > 0 && (
-
- {messages.map((msg, i) => (
-
- {msg.role === "user" && ›}
- {msg.content}
-
- ))}
- {loading && !messages.some((m) => m.content.startsWith("⋯")) && (
-
⋯
- )}
+
+
+ {messages.map((msg, i) => (
+
+ {msg.role === "user" && ›}
+ {msg.content}
+
+ ))}
+ {loading && !messages.some((m) => m.content.startsWith("⋯")) && (
+
⋯
+ )}
+
)}
- {/* Input bar */}
-
+ {/* Input bar — centered to match main content */}
+
e.key === "Enter" && handleSubmit()}
placeholder={chatPlaceholder}
disabled={loading}
- className="w-full bg-transparent text-[13px] text-foreground placeholder:text-muted-foreground/30 focus:outline-none disabled:opacity-50"
+ className="w-full bg-transparent text-[13px] text-foreground placeholder:text-muted-foreground/25 focus:outline-none disabled:opacity-50"
/>
-
+
{expanded && messages.length > 0 && (
@@ -175,7 +177,7 @@ export function ChatBar({ t, sse }: {
diff --git a/packages/studio/src/components/Sidebar.tsx b/packages/studio/src/components/Sidebar.tsx
index 07cab634..16cdf7f3 100644
--- a/packages/studio/src/components/Sidebar.tsx
+++ b/packages/studio/src/components/Sidebar.tsx
@@ -27,36 +27,36 @@ export function Sidebar({ nav, activePage, t }: {
const { data: daemon } = useApi<{ running: boolean }>("/daemon");
return (
-