@kmugalkhod/lightcode 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -5
- package/assets/web/index-wma2v20c.css +1 -0
- package/assets/web/index-wzb9vzdt.js +149 -0
- package/assets/web/index.html +1 -1
- package/cli.js +18 -3
- package/package.json +1 -1
- package/server.js +463 -63
- package/assets/web/index-qeqpc3cb.css +0 -1
- package/assets/web/index-yavzmb1c.js +0 -149
package/README.md
CHANGED
|
@@ -23,10 +23,21 @@ command it installs is `lightcode`.
|
|
|
23
23
|
|
|
24
24
|
The two interfaces share the same local sessions, history, provider settings,
|
|
25
25
|
and agent engine. `lightcode web` opens a dedicated loopback-only server and
|
|
26
|
-
launches your browser.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
launches your browser. Opening a project uses the host folder chooser first:
|
|
27
|
+
the Windows or macOS system dialog, then Zenity or KDialog on Linux when
|
|
28
|
+
available in a graphical session. If the system chooser is unavailable or
|
|
29
|
+
cannot open—including Linux without Zenity or KDialog—Lightcode falls back to
|
|
30
|
+
an authenticated in-app browser rooted at Home, Desktop, Documents, Downloads,
|
|
31
|
+
and Projects. That bounded browser is also available as a secondary project
|
|
32
|
+
action. The local server—not the browser page—receives and
|
|
33
|
+
canonicalizes the selected path, rejects filesystem, drive, and UNC share
|
|
34
|
+
roots, and grants only the chosen project; cancelling leaves the current
|
|
35
|
+
workspace unchanged. The per-launch browser credential stays in the URL
|
|
36
|
+
fragment and current tab and is never passed to agent subprocesses.
|
|
37
|
+
|
|
38
|
+
The browser rail stays focused on projects and sessions. Agents, Skills, MCP,
|
|
39
|
+
Plugins, and deeper customization remain managed through the terminal
|
|
40
|
+
interface for now.
|
|
30
41
|
|
|
31
42
|
The first browser release runs one Lightcode interface at a time: press Ctrl+C
|
|
32
43
|
to stop the TUI or browser server before switching. Sessions remain available
|
|
@@ -84,7 +95,7 @@ variables. Notable keys:
|
|
|
84
95
|
| `maxRetries` | Provider-call retries for transient errors (default 5) |
|
|
85
96
|
| `autoContinue.stallTimeoutSeconds` | Abort+retry a byte-silent stream (default 300; raise for very slow reasoning models) |
|
|
86
97
|
| `autoContinue.maxErrorRetries` | Auto-resends before surfacing a stream error (default 8) |
|
|
87
|
-
| `LIGHTCODE_DESKTOP_PATH`, `LIGHTCODE_DOCUMENTS_PATH`, `LIGHTCODE_DOWNLOADS_PATH`, `LIGHTCODE_PROJECTS_PATH` | Optional absolute overrides for
|
|
98
|
+
| `LIGHTCODE_DESKTOP_PATH`, `LIGHTCODE_DOCUMENTS_PATH`, `LIGHTCODE_DOWNLOADS_PATH`, `LIGHTCODE_PROJECTS_PATH` | Optional absolute overrides for the secure common-location fallback; they do not change the host-native picker |
|
|
88
99
|
|
|
89
100
|
The local companion server listens on `127.0.0.1:4983` (uncommon on purpose —
|
|
90
101
|
port 3000 belongs to the apps you build). Override with `PORT` for the server
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--buncss-light: ;--buncss-dark:initial;color-scheme:dark;font-synthesis:none;--base:#0d1117;--panel:#121820;--elevated:#18212b;--inset:#10151c;--border:#273241;--border-soft:#202a36;--accent:#f2a65a;--accent-soft:#33260f;--accent-text:#f6c99a;--text:#eef3f8;--text-secondary:#b6c2cf;--text-muted:#7f8d9d;--success:#8bd49c;--warning:#e5c07b;--error:#f28b82;--info:#9cbdfd;--mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0}body{overflow:hidden;background:var(--base);color:var(--text);text-rendering:optimizeLegibility;min-width:320px;font-size:14px;line-height:1.5}button,textarea,input,select{color:inherit;font:inherit}button,select,label,summary{-webkit-tap-highlight-color:transparent}button{border:0}button:not(:disabled),select:not(:disabled),summary{cursor:pointer}label:has(input:not(:disabled)){cursor:pointer}button:disabled,select:disabled,textarea:disabled,input:disabled{cursor:not-allowed;opacity:.5}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{color:var(--text);background:#67421e}.sr-only{position:absolute;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0}.app-shell{display:grid;grid-template-columns:264px minmax(0,1fr);background:var(--panel);width:100%;height:100dvh}.session-rail{position:relative;z-index:30;display:flex;overflow:hidden;background:var(--base);border-right:1px solid var(--border);flex-direction:column;min-width:0;height:100%}.rail-header{display:flex;border-bottom:1px solid var(--border-soft);justify-content:space-between;align-items: center;min-height:58px;padding:0 16px}.brand-lockup{display:flex;color:var(--text);letter-spacing:-.01em;align-items: center;gap:9px;font-size:15px;font-weight:670}.brand-mark,.new-session-mark,.empty-mark,.authorization-mark{display:inline-flex;color:var(--accent);justify-content:center;align-items: center}.brand-mark{background:var(--accent-soft);border:1px solid #57402a;border-radius:8px;width:27px;height:27px}.rail-actions{display:grid;gap:7px;padding:14px 12px 12px}.new-session-button,.project-button{display:flex;border:1px solid var(--border);background:var(--panel);color:var(--text-secondary);text-align:left;border-radius:9px;align-items: center;gap:9px;width:100%;min-height:36px;padding:7px 10px;transition:background-color .16s ease-out,border-color .16s ease-out,color .16s ease-out}.new-session-button:hover:not(:disabled),.project-button:hover:not(:disabled){background:var(--elevated);color:var(--text);border-color:#3b495b}.new-session-button kbd{color:var(--text-muted);font-family:var(--mono);margin-left:auto;font-size:11px;font-weight:500}.project-button{color:var(--text-muted);background:0 0;border-color:#0000}.project-button-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.rail-section-heading{display:flex;color:var(--text-muted);letter-spacing:.055em;text-transform:uppercase;justify-content:space-between;align-items: center;padding:7px 15px;font-size:11px;font-weight:650}.session-list{overflow-y:auto;flex:1;min-height:80px;padding:2px 8px 18px}.session-item{position:relative;display:flex;color:var(--text-secondary);text-align:left;background:0 0;border-radius:8px;align-items: center;gap:9px;width:100%;min-height:58px;padding:8px 9px;transition:background-color .16s ease-out,color .16s ease-out}.session-item:hover{background:var(--panel);color:var(--text)}.session-item.active{background:var(--elevated);color:var(--text)}.session-marker{background:var(--border);border-radius:50%;flex:none;width:5px;height:5px}.session-item.active .session-marker{background:var(--accent)}.session-copy{display:grid;gap:2px;min-width:0}.session-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:590}.session-copy small{color:var(--text-muted);font-size:11px}.rail-state{display:flex;border:1px solid var(--border-soft);color:var(--text-muted);border-radius:9px;align-items: flex-start;gap:10px;margin:7px;padding:12px}.rail-state p{margin:0;font-size:12px}.session-skeleton,.folder-skeleton,.conversation-skeleton{display:grid;gap:12px;padding:12px}.session-skeleton span,.folder-skeleton span,.conversation-skeleton span{display:block;background:var(--elevated);animation:skeleton-pulse 1.4s ease-in-out infinite alternate;border-radius:4px;height:10px}.session-skeleton span:first-child{width:82%}.session-skeleton span:nth-child(2){width:74%}.session-skeleton span:nth-child(3){width:68%}.session-skeleton span:nth-child(4){width:61%}.folder-skeleton span:first-child{width:58%}.folder-skeleton span:nth-child(2){width:71%}.folder-skeleton span:nth-child(3){width:84%}.folder-skeleton span:nth-child(4){width:67%}.folder-skeleton span:nth-child(5){width:79%}.folder-skeleton span:nth-child(6){width:62%}.folder-skeleton span:nth-child(7){width:75%}@keyframes skeleton-pulse{0%{opacity:.45}to{opacity:.95}}.workspace-main{display:flex;overflow:hidden;background:var(--panel);flex-direction:column;min-width:0;min-height:0}.workspace-ribbon{position:relative;z-index:10;display:flex;border-top:2px solid var(--accent);color:var(--accent-text);background:#211a13;border-bottom:1px solid #493522;align-items: center;gap:9px;min-height:56px;padding:6px 14px}.workspace-path{display:flex;color:inherit;text-align:left;background:0 0;border-radius:8px;align-items: center;gap:8px;min-width:180px;max-width:min(42vw,560px);padding:5px 7px}.workspace-path:hover{background:#2c2117}.workspace-icon{display:inline-flex;color:var(--accent);align-items: center}.workspace-path-copy{display:grid;gap:0;min-width:0}.workspace-path-copy strong,.workspace-path-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace-path-copy strong{color:var(--text);font-size:13px;font-weight:650}.workspace-path-copy small{color:#be9e7e;font-family:var(--mono);font-size:10px}.ribbon-status,.ribbon-model{display:flex;color:#d8b38d;white-space:nowrap;align-items: center;gap:7px;font-size:12px}.live-dot{display:inline-block;background:#6f665d;border-radius:50%;flex:none;width:7px;height:7px}.live-dot.active,.agent-working .live-dot{background:var(--accent);animation:live-pulse 1.1s ease-out infinite alternate}@keyframes live-pulse{0%{opacity:.55}to{opacity:1}}.ribbon-spacer{flex:1}.ribbon-model{overflow:hidden;color:#b69778;text-overflow:ellipsis;max-width:190px}.ribbon-select{position:relative;display:flex;color:var(--accent-text);background:#2b2016;border:1px solid #59412b;border-radius:7px;align-items: center;gap:6px;height:32px;padding:0 7px}.ribbon-select select{position:absolute;z-index:1;appearance:none;outline:0;color:inherit;opacity:0;background:0 0;border:0;width:100%;height:100%;font-size:12px;inset:0}.ribbon-select>svg,.ribbon-select-value{pointer-events:none}.ribbon-select-value{white-space:nowrap;min-width:0}.ribbon-select.disabled{opacity:.55}.ribbon-select select:focus-visible{outline:0}.ribbon-select:focus-within{outline:2px solid var(--accent);outline-offset:2px}.chat-surface{display:flex;overflow:hidden;flex-direction:column;flex:1;min-height:0}.conversation-scroll{overflow-y:auto;overscroll-behavior:contain;flex:1;min-height:0}.conversation-column{width:min(100%,900px);margin:0 auto;padding-inline-start:28px;padding-inline-end:28px}.conversation-scroll>.conversation-column{display:flex;flex-direction:column;min-height:100%;padding-top:32px;padding-bottom:28px}.conversation-empty{display:grid;justify-items:start;width:min(100%,610px);margin:auto;padding:48px 0 92px}.empty-mark{background:var(--accent-soft);border:1px solid #62472d;border-radius:12px;width:43px;height:43px;margin-bottom:20px}.conversation-empty h1,.new-session-title h1,.authorization-gate h1{color:var(--text);letter-spacing:-.025em;margin:0;font-size:25px;font-weight:650;line-height:1.2}.conversation-empty p{color:var(--text-secondary);max-width:58ch;margin:12px 0 0;font-size:15px}.chat-message{display:grid;grid-template-columns:108px minmax(0,1fr);border-bottom:1px solid var(--border-soft);content-visibility:auto;contain-intrinsic-size:auto 180px;gap:20px;padding:24px 0 27px}.chat-message>header{display:flex;color:var(--text-muted);align-items: center;gap:7px;height:26px;font-size:12px;font-weight:640}.streaming-message-text p{white-space:pre-wrap}.role-mark{display:inline-flex;border:1px solid var(--border);background:var(--inset);border-radius:7px;justify-content:center;align-items: center;width:24px;height:24px}.role-assistant .role-mark{color:var(--success);border-color:#2d4a35}.role-user .role-mark{color:var(--info);border-color:#354561}.message-parts{min-width:0}.message-text{color:var(--text);font-size:14px;line-height:1.72}.message-text p{white-space:pre-wrap;overflow-wrap:anywhere;max-width:72ch;margin:0 0 15px}.message-text p:last-child{margin-bottom:0}.message-text .markdown-heading{color:var(--text);letter-spacing:-.018em;max-width:46ch;margin:20px 0 8px;font-size:18px;font-weight:680;line-height:1.3}.message-text .markdown-heading.level-2{font-size:16px}.message-text .markdown-heading.level-3,.message-text .markdown-heading.level-4,.message-text .markdown-heading.level-5,.message-text .markdown-heading.level-6{font-size:14px}.message-text ul,.message-text ol{max-width:72ch;margin:0 0 15px;padding-left:22px}.message-text li+li{margin-top:4px}.message-text blockquote{border-left:2px solid var(--accent);color:var(--text-secondary);white-space:pre-wrap;max-width:72ch;margin:12px 0 15px;padding-left:13px}.message-text a{color:var(--info);text-underline-offset:2px}.inline-code{border:1px solid var(--border-soft);background:var(--inset);color:#dce6ef;font-family:var(--mono);border-radius:5px;padding:1px 5px;font-size:.9em}.code-block{overflow:hidden;border:1px solid var(--border);background:var(--inset);border-radius:11px;margin:14px 0 18px}.code-header{display:flex;border-bottom:1px solid var(--border-soft);color:var(--text-muted);font-family:var(--mono);justify-content:space-between;align-items: center;min-height:34px;padding:0 12px;font-size:11px}.code-header button{color:var(--text-secondary);font-family:inherit;font-size:inherit;background:0 0}.code-block pre,.tool-details pre,.authorization-gate pre{overflow:auto;font-family:var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.65}.code-block pre{color:#dce6ef;white-space:pre;overflow-wrap:normal;padding:14px 16px 17px}.reasoning-part{color:var(--text-muted);margin:8px 0 14px;font-size:12px}.reasoning-part summary{color:var(--text-secondary);width:max-content}.reasoning-part p{white-space:pre-wrap;margin:8px 0 0}.tool-event{overflow:hidden;border:1px solid var(--border);background:var(--inset);border-radius:11px;margin:10px 0}.tool-event[open]{background:#111820}.tool-event summary{display:flex;list-style:none;align-items: center;gap:10px;min-height:48px;padding:8px 12px}.tool-event summary::-webkit-details-marker{display:none}.tool-event summary>svg:last-child{margin-left:auto;transition:transform .16s ease-out}.tool-event[open] summary>svg:last-child{transform:rotate(180deg)}.tool-state-mark{display:inline-flex;background:var(--elevated);color:var(--text-muted);border-radius:7px;justify-content:center;align-items: center;width:26px;height:26px}.state-output-available .tool-state-mark{color:var(--success)}.state-output-error .tool-state-mark{color:var(--error)}.state-approval-requested .tool-state-mark{color:var(--warning)}.tool-summary-copy{display:grid;min-width:0}.tool-summary-copy strong{color:var(--text-secondary);font-size:12px;font-weight:610}.tool-summary-copy small{overflow:hidden;color:var(--text-muted);font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;font-size:10px}.tool-details{display:grid;gap:12px;padding:0 12px 13px 48px}.tool-details>div>span{display:block;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;margin-bottom:4px;font-size:10px;font-weight:650}.tool-details pre{border:1px solid var(--border-soft);background:var(--base);color:var(--text-secondary);border-radius:7px;max-height:280px;padding:10px}.source-link,.attachment-line{display:flex;color:var(--info);text-decoration:none;align-items: center;gap:7px;width:max-content;max-width:100%;margin:8px 0;font-size:12px}.source-link span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.source-link:not(.static):hover{text-decoration:underline}.source-link.static,.attachment-line{color:var(--text-muted)}.agent-working{display:flex;color:var(--text-muted);align-items: center;gap:9px;padding:17px 128px 0;font-size:12px}.conversation-controls{position:relative;z-index:4;background:var(--panel);flex:none;padding:0 0 10px}.inline-error,.new-session-error{display:flex;color:#f2aaa3;background:#261719;border:1px solid #603638;border-radius:8px;align-items: center;gap:9px;margin-bottom:8px;padding:9px 11px;font-size:12px}.inline-error span{flex:1}.inline-error button{color:var(--text);background:0 0;font-weight:620}.approval-dock,.prompt-dock{overflow:hidden;background:#211a13;border:1px solid #62472d;border-radius:11px;margin-bottom:8px}.approval-row{display:grid;grid-template-columns:auto minmax(0,1fr)auto;align-items: center;gap:11px;padding:12px}.approval-row+.approval-row{border-top:1px solid #493522}.approval-icon{display:inline-flex;color:var(--warning)}.approval-row strong,.prompt-dock strong{color:var(--text);font-size:12px}.approval-row p,.prompt-dock p{color:var(--text-secondary);margin:1px 0;font-size:12px}.approval-row small{color:#b39272;font-size:10px}.approval-actions,.project-browser-actions,.prompt-options,.prompt-custom{display:flex;align-items: center;gap:7px}.primary-button,.secondary-button{display:inline-flex;border-radius:8px;justify-content:center;align-items: center;gap:7px;min-height:36px;padding:7px 12px;font-size:12px;font-weight:650}.primary-button{background:var(--accent);color:#23170c}.primary-button:hover:not(:disabled){background:#ffc077}.secondary-button{border:1px solid var(--border);background:var(--elevated);color:var(--text-secondary)}.secondary-button:hover:not(:disabled){color:var(--text);border-color:#3e4b5d}.compact-primary{min-height:32px;padding:5px 10px}.prompt-dock{display:grid;gap:10px;padding:12px}.prompt-custom input{border:1px solid var(--border);outline:0;background:var(--inset);border-radius:7px;flex:1;min-width:0;min-height:34px;padding:6px 9px}.prompt-custom input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.composer,.starter-composer{overflow:hidden;background:var(--inset);border:1px solid #3c495a;border-radius:13px;transition:border-color .16s ease-out,background-color .16s ease-out}.command-composer-shell{position:relative}.slash-command-menu{position:absolute;z-index:45;overflow:hidden;background:#11171e;border:1px solid #344151;border-radius:11px;bottom:calc(100% + 8px);left:0;right:0;box-shadow:0 16px 38px #0000006b}.slash-command-menu-header{display:flex;border-bottom:1px solid var(--border-soft);color:var(--text-muted);letter-spacing:.02em;text-transform:uppercase;justify-content:space-between;align-items: center;gap:12px;min-height:34px;padding:7px 10px 6px 12px;font-size:10px}.slash-command-menu-header span:last-child{letter-spacing:0;text-transform:none}.slash-command-menu kbd{border:1px solid var(--border);background:var(--elevated);color:var(--text-secondary);font:inherit;border-radius:4px;padding:1px 4px}.slash-command-options{overflow-y:auto;overscroll-behavior:contain;max-height:min(390px,48dvh);padding:5px}.slash-command-option{display:grid;grid-template-columns:27px minmax(0,1fr)auto;color:var(--text-secondary);text-align:left;background:0 0;border-radius:7px;align-items: center;gap:8px;width:100%;min-height:49px;padding:6px 9px}.appearance-starter .slash-command-options{max-height:min(310px,34dvh)}.appearance-starter .slash-command-menu{top:calc(100% + 8px);bottom:auto}.slash-command-option:hover,.slash-command-option.selected{color:var(--text);background:#1b2631}.slash-command-option.selected{box-shadow:inset 2px 0 0 var(--accent)}.slash-command-icon{display:grid;border:1px solid var(--border-soft);background:var(--inset);color:var(--text-muted);border-radius:6px;place-items: center;width:26px;height:26px}.slash-command-copy{display:grid;gap:2px;min-width:0}.slash-command-copy>span{display:flex;align-items:baseline;gap:7px;min-width:0}.slash-command-copy code{color:var(--accent-text);font-size:12px;font-weight:650}.slash-command-copy small,.slash-command-enter{color:var(--text-muted);font-size:10px}.slash-command-copy>small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slash-command-enter{opacity:0}.slash-command-option.selected .slash-command-enter{opacity:1}.slash-command-empty{color:var(--text-muted);text-align:center;padding:18px 12px;font-size:12px}.slash-command-empty code{color:var(--accent-text)}.command-result{display:grid;grid-template-columns:26px minmax(0,1fr)auto;overflow-y:auto;border:1px solid var(--border);background:var(--elevated);color:var(--text-secondary);border-radius:9px;align-items: start;gap:8px;max-height:min(250px,36dvh);margin-bottom:7px;padding:9px 9px 9px 10px}.command-result.tone-success{border-color:#315446}.command-result.tone-error{border-color:#674244}.command-result-icon{display:grid;color:var(--accent-text);place-items: center;width:24px;height:24px}.command-result.tone-success .command-result-icon{color:#8bd6ac}.command-result.tone-error .command-result-icon{color:#f4aaa3}.command-result>div{min-width:0}.command-result strong{display:block;color:var(--text);font-size:11px}.command-result p{color:var(--text-secondary);overflow-wrap:anywhere;white-space:pre-wrap;margin:3px 0 0;font:10.5px/1.5 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.command-result>button{display:grid;color:var(--text-muted);border-radius:6px;place-items: center;width:28px;height:28px}.command-result>button:hover{background:var(--inset);color:var(--text)}.composer:focus-within,.starter-composer:focus-within{border-color:var(--accent);background:#11171e}.composer.disabled{opacity:.72}.composer textarea,.starter-composer textarea{display:block;resize:none;outline:0;color:var(--text);field-sizing:content;background:0 0;border:0;width:100%;min-height:62px;max-height:220px;padding:14px 16px 6px;line-height:1.55}.composer textarea::placeholder,.starter-composer textarea::placeholder,.prompt-custom input::placeholder{color:var(--text-muted);opacity:1}.composer-toolbar,.starter-toolbar{display:flex;align-items: center;min-height:40px;padding:4px 7px 7px 13px}.composer-toolbar>span,.starter-toolbar>span{display:flex;color:var(--text-muted);align-items: center;gap:7px;font-size:11px}.composer-toolbar>span small,.starter-toolbar>span small{color:var(--text-muted);font-size:10px}.send-button,.abort-button{display:inline-flex;border-radius:8px;justify-content:center;align-items: center;gap:6px;min-height:31px;margin-left:auto}.send-button{background:var(--accent);color:#20150b;width:31px}.send-button:hover:not(:disabled){background:#ffc077}.abort-button{color:#f4aaa3;background:#29191b;border:1px solid #674244;padding:5px 9px;font-size:11px}.composer-hint{display:flex;color:var(--text-muted);justify-content:space-between;padding:6px 2px 0;font-size:10px}.new-session-surface{display:grid;overflow-y:auto;flex:1;place-items: center;min-height:0;padding:32px}.new-session-inner{width:min(100%,800px);transform:translateY(-5vh)}.new-session-title{display:flex;align-items: center;gap:14px;margin-bottom:24px}.new-session-mark{background:var(--accent-soft);border:1px solid #62472d;border-radius:12px;width:44px;height:44px}.new-session-title>div{flex:1;min-width:0}.new-session-title h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.new-session-project-controls{display:grid;justify-items:start;gap:5px;margin-top:9px}.new-session-project-button{display:flex;border:1px solid var(--border);background:var(--inset);color:var(--text-secondary);text-align:left;border-radius:9px;align-items: center;gap:10px;width:min(100%,560px);max-width:100%;min-height:48px;padding:8px 11px}.new-session-project-button:hover:not(:disabled){background:var(--elevated);color:var(--text);border-color:#4b3b2b}.new-session-project-button>span:not(.inline-spinner){display:grid;flex:1;min-width:0}.new-session-project-button strong,.new-session-project-button small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.new-session-project-button strong{color:var(--text);font-size:12px;font-weight:650}.new-session-project-button small{color:var(--text-muted);font-size:10px}.browse-common-locations-button{color:var(--text-muted);background:0 0;min-height:32px;padding:3px 2px;font-size:11px}.browse-common-locations-button:hover:not(:disabled){color:var(--accent-text)}.inline-spinner{display:inline-block;animation:spin .8s linear infinite;border:2px solid;border-top-color:#0000;border-radius:50%;flex:none;width:14px;height:14px}.starter-composer textarea{min-height:116px;padding-top:17px;font-size:15px}.button-loading{animation:spin .8s linear infinite;border:2px solid #6b4622;border-top-color:#20150b;border-radius:50%;width:13px;height:13px}@keyframes spin{to{transform:rotate(360deg)}}.new-session-error{margin-top:9px;margin-bottom:0}.starter-suggestions{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.starter-suggestions button{border:1px solid var(--border-soft);color:var(--text-muted);background:0 0;border-radius:8px;min-height:34px;padding:6px 10px;font-size:11px}.starter-suggestions button:hover:not(:disabled){border-color:var(--border);background:var(--inset);color:var(--text-secondary)}.authorization-gate{display:grid;background:var(--base);align-content: center;justify-items:start;width:min(100% - 40px,560px);height:100%;margin:0 auto}.authorization-mark{background:var(--accent-soft);border:1px solid #62472d;border-radius:13px;width:48px;height:48px;margin-bottom:22px}.authorization-gate p{color:var(--text-secondary);margin:13px 0 17px;font-size:15px}.authorization-gate pre{border:1px solid var(--border);background:var(--inset);color:var(--accent-text);border-radius:9px;min-width:190px;padding:11px 14px}.authorization-gate small{color:var(--text-muted);max-width:58ch;margin-top:13px}.project-browser-backdrop{position:fixed;z-index:80;display:grid;background:#06090dc7;place-items: center;padding:24px;inset:0}.project-browser{display:grid;grid-template-rows:auto auto auto minmax(0,1fr)auto;overflow:hidden;background:var(--panel);border:1px solid #3c495a;border-radius:13px;width:min(100%,780px);height:min(720px,100dvh - 48px);box-shadow:0 2px 8px #0000003d}.project-browser-header{display:flex;justify-content:space-between;align-items: flex-start;padding:19px 20px 16px}.project-browser-header h1{letter-spacing:-.015em;margin:0;font-size:18px;font-weight:660}.project-browser-header p{color:var(--text-muted);margin:3px 0 0;font-size:12px}.icon-button{display:inline-flex;color:var(--text-muted);background:0 0;border-radius:8px;justify-content:center;align-items: center;width:34px;height:34px}.icon-button:hover:not(:disabled){background:var(--elevated);color:var(--text)}.icon-button.compact{width:28px;height:28px}.location-strip{display:flex;overflow-y:auto;border-bottom:1px solid var(--border-soft);scrollbar-gutter:stable;flex-wrap:wrap;gap:6px;max-height:96px;padding:0 20px 12px}.location-button{display:inline-flex;border:1px solid var(--border);background:var(--inset);color:var(--text-muted);border-radius:8px;flex:none;align-items: center;gap:7px;min-width:0;max-width:100%;min-height:34px;padding:6px 10px;font-size:12px}.location-button>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.location-button.active{background:var(--accent-soft);color:var(--accent-text);border-color:#62472d}.folder-breadcrumbs{display:flex;overflow-x:auto;border-bottom:1px solid var(--border-soft);color:var(--text-muted);font-family:var(--mono);white-space:nowrap;align-items: center;gap:2px;min-height:46px;padding:7px 16px;font-size:11px}.folder-breadcrumbs>span{display:inline-flex;align-items: center}.folder-breadcrumbs button:not(.icon-button){color:var(--text-secondary);background:0 0;border-radius:5px;padding:4px 5px}.folder-breadcrumbs button:not(.icon-button):hover:not(:disabled){background:var(--elevated);color:var(--text)}.project-browser-body{overflow-y:auto;min-height:0;padding:8px}.picker-fallback-notice{display:grid;grid-template-columns:auto minmax(0,1fr)auto;border:1px solid var(--border);background:var(--inset);color:var(--text-secondary);border-radius:9px;align-items: center;gap:10px;margin:2px 2px 8px;padding:10px 12px}.picker-fallback-notice.info>svg{color:var(--info)}.picker-fallback-notice.error>svg{color:var(--error)}.picker-fallback-notice>span{display:grid;min-width:0}.picker-fallback-notice strong{color:var(--text);font-size:12px}.picker-fallback-notice small{color:var(--text-muted);font-size:11px}.picker-fallback-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.folder-loading-status{position:sticky;z-index:2;display:flex;border:1px solid var(--border-soft);background:color-mix(in srgb,var(--panel)92%,transparent);color:var(--text-muted);backdrop-filter:blur(6px);border-radius:7px;align-items: center;gap:8px;min-height:36px;margin:0 2px 6px;padding:7px 10px;font-size:11px;top:0}.folder-list{display:grid;align-content: start}.folder-list.loading{opacity:.55;pointer-events:none}.folder-row{display:grid;grid-template-columns:22px minmax(0,1fr)auto 20px;color:var(--text-secondary);text-align:left;background:0 0;border-radius:7px;align-items: center;gap:8px;width:100%;min-height:42px;padding:7px 10px}button.folder-row:hover:not(:disabled){background:var(--elevated);color:var(--text)}.folder-row>svg:first-child{color:var(--accent-text)}.folder-row>svg:last-child,.file-row,.file-row>svg:first-child{color:var(--text-muted)}.entry-note{color:var(--text-muted);font-family:var(--mono);font-size:10px}.browser-state{display:grid;color:var(--text-muted);text-align:center;align-content: center;justify-items:center;min-height:220px;padding:28px}.browser-state h2{color:var(--text);margin:13px 0 3px;font-size:15px;font-weight:640}.browser-state p{max-width:50ch;margin:0 0 14px;font-size:12px}.error-state>svg{color:var(--error)}.load-more-button{border:1px solid var(--border);background:var(--inset);color:var(--text-secondary);border-radius:8px;min-height:38px;margin:9px}.project-browser-footer{display:flex;border-top:1px solid var(--border-soft);background:var(--base);justify-content:space-between;align-items: center;gap:16px;min-height:67px;padding:11px 16px}.checkbox-control{display:flex;color:var(--text-muted);white-space:nowrap;align-items: center;gap:8px;font-size:11px}.checkbox-control input{accent-color:var(--accent);width:15px;height:15px}.broad-root-warning{display:grid;grid-template-columns:auto minmax(180px,1fr);color:var(--warning);align-items: start;gap:2px 8px;max-width:520px;font-size:11px}.broad-root-warning>svg{margin-top:1px}.broad-root-warning button{grid-column:2;color:var(--text-secondary);text-decoration:underline;background:0 0;width:max-content;padding:1px 0;font-size:11px}.project-browser-footer.has-root-confirmation{min-height:78px}.project-browser-actions{justify-content:flex-end;min-width:0}.selected-path{overflow:hidden;color:var(--text-muted);font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;max-width:310px;font-size:10px}.rail-scrim,.mobile-only{display:none}@media (max-width:980px){.ribbon-model{display:none}.workspace-path{max-width:34vw}.permission-select{max-width:112px}}@media (max-width:760px){.app-shell{display:block}.mobile-only{display:inline-flex}.session-rail{position:fixed;z-index:70;visibility:hidden;width:min(86vw,310px);transition:transform .19s cubic-bezier(.16,1,.3,1),visibility 0s linear .19s;inset:0 auto 0 0;transform:translate(-102%)}.session-rail.open{visibility:visible;transition-delay:0s;transform:translate(0)}.rail-scrim{position:fixed;z-index:60;display:block;background:#05080cb3;width:100%;height:100%;inset:0}.workspace-main{width:100%;height:100dvh}.workspace-ribbon{gap:5px;padding-inline-start:8px;padding-inline-end:8px}.ribbon-menu{color:var(--accent-text);flex:none}.ribbon-menu,.rail-header .icon-button,.send-button{width:44px;min-width:44px;height:44px;min-height:44px}.project-button,.new-session-button{width:100%;min-height:44px}.ribbon-select{min-height:44px}.workspace-path{flex:1;min-width:0;max-width:none;min-height:44px}.approval-actions button,.prompt-options button,.prompt-custom button,.prompt-custom input,.command-result>button,.abort-button,.starter-suggestions button{min-height:44px}.command-result>button{width:44px;min-width:44px}.workspace-path-copy small,.ribbon-status,.ribbon-spacer{display:none}.conversation-column{padding-inline-start:16px;padding-inline-end:16px}.slash-command-menu-header span:last-child{display:none}.slash-command-option{min-height:52px}.conversation-scroll>.conversation-column{padding-top:14px;padding-bottom:18px}.chat-message{grid-template-columns:1fr;gap:10px;padding-block-start:19px;padding-block-end:22px}.chat-message>header{height:auto}.agent-working{padding-left:0}.composer-hint span:last-child{display:none}.approval-row{grid-template-columns:auto minmax(0,1fr)}.approval-actions{grid-column:2;justify-content:flex-start}.new-session-surface{align-items: start;padding:52px 16px 24px}.new-session-inner{transform:none}.new-session-title h1{font-size:20px}.new-session-title{align-items: flex-start}.new-session-project-button,.browse-common-locations-button{min-height:44px}.starter-suggestions{display:grid}.project-browser-backdrop{padding:0}.project-browser{border:0;border-radius:0;width:100%;height:100dvh}.project-browser-header .icon-button,.location-button,.folder-row,.load-more-button,.project-browser .primary-button,.project-browser .secondary-button,.project-browser .checkbox-control,.folder-breadcrumbs button{min-height:44px}.project-browser-header .icon-button{flex:0 0 44px;width:44px;min-width:44px;height:44px}.folder-breadcrumbs .icon-button.compact{width:44px;min-width:44px;height:44px}.broad-root-warning button{min-width:44px;min-height:44px;padding-block-start:8px;padding-block-end:8px}.location-strip{overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scroll-padding-inline:14px;scroll-snap-type:x proximity;scrollbar-width:thin;flex-wrap:nowrap;max-height:none}.location-button{scroll-snap-align:start}.project-browser-footer{flex-direction:column;align-items:stretch;gap:8px}.project-browser-actions{justify-content:space-between}.picker-fallback-notice{grid-template-columns:auto minmax(0,1fr)}.picker-fallback-actions{grid-column:1/-1;width:100%}.picker-fallback-actions .secondary-button{flex:180px}.selected-path{max-width:50vw}}@media (max-width:460px){.workspace-ribbon{min-height:52px}.ribbon-select{height:44px;padding-inline-start:5px;padding-inline-end:5px}.ribbon-select>svg:first-of-type{display:none}.conversation-column{padding-inline-start:11px;padding-inline-end:11px}.composer-hint{display:none}.conversation-controls{padding-bottom:7px}.approval-actions,.prompt-options{flex-direction:column;align-items:stretch}.primary-button,.secondary-button{width:100%}.project-browser-header,.location-strip{padding-inline-start:14px;padding-inline-end:14px}.project-browser-actions{flex-wrap:wrap}.project-browser-actions .selected-path{flex:1 0 100%;max-width:100%}}@media (prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
|