| author | |
| committer | |
| log | 0aefe6d10a1da279bc5ff78c3b40ac6ab6e011dd |
| tree | cfd8b43cec33ae8978e1e35ba3aadf512685e02e |
| parent | 9ae4d50a98cdbeaf0f9978a86beb7dcb4d6a1d4d |
| signature | Commit is signed but in an unrecognized format. |
6 files changed, 42 insertions(+), 11 deletions(-)
apps/desktop/src/main.ts+2| ... | ... | @@ -33,6 +33,8 @@ function createWindow(): BrowserWindow { |
| 33 | 33 | minHeight: 620, |
| 34 | 34 | show: false, |
| 35 | 35 | autoHideMenuBar: true, |
| 36 | titleBarStyle: "hiddenInset", | |
| 37 | trafficLightPosition: { x: 16, y: 18 }, | |
| 36 | 38 | webPreferences: { |
| 37 | 39 | preload: path.join(__dirname, "preload.js"), |
| 38 | 40 | contextIsolation: true, |
apps/renderer/src/App.tsx+3-2| ... | ... | @@ -31,8 +31,9 @@ function Layout() { |
| 31 | 31 | |
| 32 | 32 | if (!api) { |
| 33 | 33 | 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"> | |
| 36 | 37 | <p className="text-sm text-[#a0a0a0]/60"> |
| 37 | 38 | Native bridge unavailable. Launch through Electron. |
| 38 | 39 | </p> |
apps/renderer/src/components/ChatView.tsx+9-7| ... | ... | @@ -135,12 +135,14 @@ export default function ChatView() { |
| 135 | 135 | // Empty state: no active thread |
| 136 | 136 | if (!activeThread) { |
| 137 | 137 | 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> | |
| 144 | 146 | </div> |
| 145 | 147 | </div> |
| 146 | 148 | ); |
| ... | ... | @@ -149,7 +151,7 @@ export default function ChatView() { |
| 149 | 151 | return ( |
| 150 | 152 | <div className="flex flex-1 flex-col bg-[#0c0c0c]"> |
| 151 | 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 | 155 | <div className="flex items-center gap-3"> |
| 154 | 156 | <h2 className="text-sm font-medium text-[#e0e0e0]"> |
| 155 | 157 | {activeThread.title} |
apps/renderer/src/components/DiffPanel.tsx+1-1| ... | ... | @@ -6,7 +6,7 @@ export default function DiffPanel() { |
| 6 | 6 | return ( |
| 7 | 7 | <aside className="flex h-full w-[400px] shrink-0 flex-col border-l border-white/[0.08] bg-[#141414]"> |
| 8 | 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 | 10 | <h3 className="text-xs font-medium text-[#e0e0e0]"> |
| 11 | 11 | Uncommitted changes |
| 12 | 12 | </h3> |
apps/renderer/src/components/Sidebar.tsx+3-1| ... | ... | @@ -53,8 +53,10 @@ export default function Sidebar() { |
| 53 | 53 | |
| 54 | 54 | return ( |
| 55 | 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 | 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 | 60 | <div className="flex h-7 w-7 items-center justify-center rounded-lg bg-white text-xs font-bold text-[#0c0c0c]"> |
| 59 | 61 | CT |
| 60 | 62 | </div> |
apps/renderer/src/index.css+24| ... | ... | @@ -14,6 +14,17 @@ body { |
| 14 | 14 | background: #0c0c0c; |
| 15 | 15 | } |
| 16 | 16 | |
| 17 | body::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 | ||
| 17 | 28 | pre, |
| 18 | 29 | code, |
| 19 | 30 | textarea, |
| ... | ... | @@ -22,6 +33,19 @@ input { |
| 22 | 33 | monospace; |
| 23 | 34 | } |
| 24 | 35 | |
| 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 | 49 | /* Scrollbar styling */ |
| 26 | 50 | ::-webkit-scrollbar { |
| 27 | 51 | width: 6px; |