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 {
3333 minHeight: 620,
3434 show: false,
3535 autoHideMenuBar: true,
36 titleBarStyle: "hiddenInset",
37 trafficLightPosition: { x: 16, y: 18 },
3638 webPreferences: {
3739 preload: path.join(__dirname, "preload.js"),
3840 contextIsolation: true,
apps/renderer/src/App.tsx+3-2
......@@ -31,8 +31,9 @@ function Layout() {
3131
3232 if (!api) {
3333 return (
34 <div className="flex h-screen items-center justify-center bg-[#0c0c0c] text-[#e0e0e0]">
35 <div className="text-center">
34 <div className="flex h-screen flex-col bg-[#0c0c0c] text-[#e0e0e0]">
35 <div className="drag-region h-[52px] shrink-0" />
36 <div className="flex flex-1 items-center justify-center">
3637 <p className="text-sm text-[#a0a0a0]/60">
3738 Native bridge unavailable. Launch through Electron.
3839 </p>
apps/renderer/src/components/ChatView.tsx+9-7
......@@ -135,12 +135,14 @@ export default function ChatView() {
135135 // Empty state: no active thread
136136 if (!activeThread) {
137137 return (
138 <div className="flex flex-1 flex-col items-center justify-center bg-[#0c0c0c] text-[#a0a0a0]/40">
139 <div className="text-center">
140 <div className="mb-3 text-4xl">&#x2728;</div>
141 <p className="text-sm">
142 Select a thread or create a new one to get started.
143 </p>
138 <div className="flex flex-1 flex-col bg-[#0c0c0c] text-[#a0a0a0]/40">
139 <div className="drag-region h-[52px] shrink-0" />
140 <div className="flex flex-1 items-center justify-center">
141 <div className="text-center">
142 <p className="text-sm">
143 Select a thread or create a new one to get started.
144 </p>
145 </div>
144146 </div>
145147 </div>
146148 );
......@@ -149,7 +151,7 @@ export default function ChatView() {
149151 return (
150152 <div className="flex flex-1 flex-col bg-[#0c0c0c]">
151153 {/* 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">
153155 <div className="flex items-center gap-3">
154156 <h2 className="text-sm font-medium text-[#e0e0e0]">
155157 {activeThread.title}
apps/renderer/src/components/DiffPanel.tsx+1-1
......@@ -6,7 +6,7 @@ export default function DiffPanel() {
66 return (
77 <aside className="flex h-full w-[400px] shrink-0 flex-col border-l border-white/[0.08] bg-[#141414]">
88 {/* 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">
1010 <h3 className="text-xs font-medium text-[#e0e0e0]">
1111 Uncommitted changes
1212 </h3>
apps/renderer/src/components/Sidebar.tsx+3-1
......@@ -53,8 +53,10 @@ export default function Sidebar() {
5353
5454 return (
5555 <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" />
5658 {/* 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">
5860 <div className="flex h-7 w-7 items-center justify-center rounded-lg bg-white text-xs font-bold text-[#0c0c0c]">
5961 CT
6062 </div>
apps/renderer/src/index.css+24
......@@ -14,6 +14,17 @@ body {
1414 background: #0c0c0c;
1515}
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
1728pre,
1829code,
1930textarea,
......@@ -22,6 +33,19 @@ input {
2233 monospace;
2334}
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
2549/* Scrollbar styling */
2650::-webkit-scrollbar {
2751 width: 6px;