authorgravatar for me@t3.ggTheo Browne <me@t3.gg> 2026-02-07 20:23:21-08:00
committergravatar for me@t3.ggTheo Browne <me@t3.gg> 2026-02-07 20:23:21-08:00
log0aefe6d10a1da279bc5ff78c3b40ac6ab6e011dd
treecfd8b43cec33ae8978e1e35ba3aadf512685e02e
parent9ae4d50a98cdbeaf0f9978a86beb7dcb4d6a1d4d
signature Commit is signed but in an unrecognized format.

more ui


6 files changed, 42 insertions(+), 11 deletions(-)

apps/desktop/src/main.ts+2
...@@ -33,6 +33,8 @@ function createWindow(): BrowserWindow {...@@ -33,6 +33,8 @@ function createWindow(): BrowserWindow {
33 minHeight: 620,33 minHeight: 620,
34 show: false,34 show: false,
35 autoHideMenuBar: true,35 autoHideMenuBar: true,
36 titleBarStyle: "hiddenInset",
37 trafficLightPosition: { x: 16, y: 18 },
36 webPreferences: {38 webPreferences: {
37 preload: path.join(__dirname, "preload.js"),39 preload: path.join(__dirname, "preload.js"),
38 contextIsolation: true,40 contextIsolation: true,
apps/renderer/src/App.tsx+3-2
...@@ -31,8 +31,9 @@ function Layout() {...@@ -31,8 +31,9 @@ function Layout() {
3131
32 if (!api) {32 if (!api) {
33 return (33 return (
34 <div className="flex h-screen items-center justify-center bg-[#0c0c0c] text-[#e0e0e0]">34 <div className="flex h-screen flex-col bg-[#0c0c0c] text-[#e0e0e0]">
35 <div className="text-center">35 <div className="drag-region h-[52px] shrink-0" />
36 <div className="flex flex-1 items-center justify-center">
36 <p className="text-sm text-[#a0a0a0]/60">37 <p className="text-sm text-[#a0a0a0]/60">
37 Native bridge unavailable. Launch through Electron.38 Native bridge unavailable. Launch through Electron.
38 </p>39 </p>
apps/renderer/src/components/ChatView.tsx+9-7
...@@ -135,12 +135,14 @@ export default function ChatView() {...@@ -135,12 +135,14 @@ export default function ChatView() {
135 // Empty state: no active thread135 // Empty state: no active thread
136 if (!activeThread) {136 if (!activeThread) {
137 return (137 return (
138 <div className="flex flex-1 flex-col items-center justify-center bg-[#0c0c0c] text-[#a0a0a0]/40">138 <div className="flex flex-1 flex-col bg-[#0c0c0c] text-[#a0a0a0]/40">
139 <div className="text-center">139 <div className="drag-region h-[52px] shrink-0" />
140 <div className="mb-3 text-4xl">&#x2728;</div>140 <div className="flex flex-1 items-center justify-center">
141 <p className="text-sm">141 <div className="text-center">
142 Select a thread or create a new one to get started.142 <p className="text-sm">
143 </p>143 Select a thread or create a new one to get started.
144 </p>
145 </div>
144 </div>146 </div>
145 </div>147 </div>
146 );148 );
...@@ -149,7 +151,7 @@ export default function ChatView() {...@@ -149,7 +151,7 @@ export default function ChatView() {
149 return (151 return (
150 <div className="flex flex-1 flex-col bg-[#0c0c0c]">152 <div className="flex flex-1 flex-col bg-[#0c0c0c]">
151 {/* Top bar */}153 {/* Top bar */}
152 <header className="flex items-center justify-between border-b border-white/[0.08] px-5 py-3">154 <header className="drag-region flex items-center justify-between border-b border-white/[0.08] px-5 pt-[28px] pb-3">
153 <div className="flex items-center gap-3">155 <div className="flex items-center gap-3">
154 <h2 className="text-sm font-medium text-[#e0e0e0]">156 <h2 className="text-sm font-medium text-[#e0e0e0]">
155 {activeThread.title}157 {activeThread.title}
apps/renderer/src/components/DiffPanel.tsx+1-1
...@@ -6,7 +6,7 @@ export default function DiffPanel() {...@@ -6,7 +6,7 @@ export default function DiffPanel() {
6 return (6 return (
7 <aside className="flex h-full w-[400px] shrink-0 flex-col border-l border-white/[0.08] bg-[#141414]">7 <aside className="flex h-full w-[400px] shrink-0 flex-col border-l border-white/[0.08] bg-[#141414]">
8 {/* Header */}8 {/* Header */}
9 <div className="flex items-center justify-between border-b border-white/[0.08] px-4 py-3">9 <div className="drag-region flex items-center justify-between border-b border-white/[0.08] px-4 pt-[28px] pb-3">
10 <h3 className="text-xs font-medium text-[#e0e0e0]">10 <h3 className="text-xs font-medium text-[#e0e0e0]">
11 Uncommitted changes11 Uncommitted changes
12 </h3>12 </h3>
apps/renderer/src/components/Sidebar.tsx+3-1
...@@ -53,8 +53,10 @@ export default function Sidebar() {...@@ -53,8 +53,10 @@ export default function Sidebar() {
5353
54 return (54 return (
55 <aside className="sidebar flex h-full w-[260px] shrink-0 flex-col border-r border-white/[0.08] bg-[#141414]">55 <aside className="sidebar flex h-full w-[260px] shrink-0 flex-col border-r border-white/[0.08] bg-[#141414]">
56 {/* Drag region / traffic light space */}
57 <div className="drag-region h-[52px] shrink-0" />
56 {/* Branding */}58 {/* Branding */}
57 <div className="flex items-center gap-2 px-4 pt-5 pb-4">59 <div className="flex items-center gap-2 px-4 pb-4">
58 <div className="flex h-7 w-7 items-center justify-center rounded-lg bg-white text-xs font-bold text-[#0c0c0c]">60 <div className="flex h-7 w-7 items-center justify-center rounded-lg bg-white text-xs font-bold text-[#0c0c0c]">
59 CT61 CT
60 </div>62 </div>
apps/renderer/src/index.css+24
...@@ -14,6 +14,17 @@ body {...@@ -14,6 +14,17 @@ body {
14 background: #0c0c0c;14 background: #0c0c0c;
15}15}
1616
17body::after {
18 content: "";
19 position: fixed;
20 inset: 0;
21 pointer-events: none;
22 opacity: 0.035;
23 background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
24 background-repeat: repeat;
25 background-size: 256px 256px;
26}
27
17pre,28pre,
18code,29code,
19textarea,30textarea,
...@@ -22,6 +33,19 @@ input {...@@ -22,6 +33,19 @@ input {
22 monospace;33 monospace;
23}34}
2435
36/* Window drag region (frameless titlebar) */
37.drag-region {
38 -webkit-app-region: drag;
39}
40
41.drag-region button,
42.drag-region input,
43.drag-region textarea,
44.drag-region select,
45.drag-region a {
46 -webkit-app-region: no-drag;
47}
48
25/* Scrollbar styling */49/* Scrollbar styling */
26::-webkit-scrollbar {50::-webkit-scrollbar {
27 width: 6px;51 width: 6px;