claude-remote-cli 3.1.1 → 3.2.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/dist/frontend/assets/{index-BRH8jV0L.js → index-CzJETpYJ.js} +17 -17
- package/dist/frontend/assets/{index-w5wJhB5f.css → index-H6FwqbR7.css} +1 -1
- package/dist/frontend/index.html +2 -2
- package/dist/server/git.js +40 -2
- package/dist/server/pty-handler.js +2 -0
- package/dist/server/sessions.js +10 -1
- package/dist/server/workspaces.js +8 -2
- package/dist/server/ws.js +3 -0
- package/dist/test/pr-state.test.js +69 -13
- package/package.json +1 -1
|
@@ -29,4 +29,4 @@
|
|
|
29
29
|
* The original design remains. The terminal itself
|
|
30
30
|
* has been extended to include xterm CSI codes, among
|
|
31
31
|
* other features.
|
|
32
|
-
*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.terminal-wrapper.svelte-5qgfij{display:flex;flex:1;min-height:0;position:relative;overflow:hidden}.terminal-container.svelte-5qgfij{flex:1;min-width:0;min-height:0;overflow:hidden;padding:4px}.terminal-wrapper.drag-over.svelte-5qgfij{outline:2px dashed var(--accent);outline-offset:-2px}.terminal-scrollbar.svelte-5qgfij{width:8px;background:transparent;position:relative;flex-shrink:0}.terminal-scrollbar-thumb.svelte-5qgfij{position:absolute;right:0;width:6px;background:var(--border);border-radius:3px;cursor:pointer}@media(hover:none){.terminal-wrapper.selection-mode.svelte-5qgfij .terminal-container:where(.svelte-5qgfij){outline:2px solid var(--accent);outline-offset:-2px}.terminal-container.svelte-5qgfij{touch-action:none}.terminal-scrollbar.svelte-5qgfij{width:12px}.terminal-scrollbar-thumb.svelte-5qgfij{width:8px;min-height:44px}.scroll-fabs.svelte-5qgfij{position:absolute;right:16px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:12px;z-index:1;opacity:.6;pointer-events:auto}.scroll-fab.svelte-5qgfij{width:44px;height:44px;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none}.scroll-fab.svelte-5qgfij:active{opacity:1;background:var(--border)}.scroll-fab-bottom.svelte-5qgfij{margin-top:4px}}.user-message.svelte-1q16011{border-left:3px solid var(--accent);padding:var(--spacing-sm) var(--spacing-md);margin:var(--spacing-xs) 0;width:100%}.user-message-text.svelte-1q16011{color:var(--text);font-size:.95rem;white-space:pre-wrap;word-break:break-word}.agent-message.svelte-1r3r7jb{padding:var(--spacing-sm) var(--spacing-md);margin:var(--spacing-xs) 0;width:100%;color:var(--text);font-size:.95rem;line-height:1.5;word-break:break-word}.agent-message.svelte-1r3r7jb .code-block{background:var(--card-bg);border-radius:var(--radius-sm);padding:var(--spacing-sm) var(--spacing-md);overflow-x:auto;font-family:var(--code-font);font-size:.85rem;margin:var(--spacing-sm) 0;white-space:pre}.agent-message.svelte-1r3r7jb .inline-code{background:var(--card-bg);border-radius:var(--radius-sm);padding:1px 4px;font-family:var(--code-font);font-size:.88em}.agent-message.svelte-1r3r7jb a{color:var(--info);text-decoration:underline}.agent-message.svelte-1r3r7jb strong{color:var(--text);font-weight:600}.agent-message.svelte-1r3r7jb em{font-style:italic}.agent-message.svelte-1r3r7jb .md-heading{font-weight:600;margin:var(--spacing-sm) 0 var(--spacing-xs);line-height:1.3}.agent-message.svelte-1r3r7jb h1.md-heading{font-size:1.3em}.agent-message.svelte-1r3r7jb h2.md-heading{font-size:1.15em}.agent-message.svelte-1r3r7jb h3.md-heading{font-size:1.05em}.agent-message.svelte-1r3r7jb .md-ul{margin:var(--spacing-xs) 0;padding-left:1.5em;list-style:disc}.agent-message.svelte-1r3r7jb .md-li{margin:2px 0}.agent-message.svelte-1r3r7jb .md-hr{border:none;border-top:1px solid var(--border);margin:var(--spacing-sm) 0}.file-change-card.svelte-649juz{display:flex;align-items:center;gap:var(--spacing-sm);background:var(--card-bg);border-radius:var(--radius-sm);padding:var(--spacing-sm) var(--spacing-md);margin:var(--spacing-xs) 0;font-family:var(--code-font);font-size:.85rem;width:100%;min-width:0}.file-icon.svelte-649juz{flex-shrink:0;font-size:.9rem}.file-path.svelte-649juz{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.file-dir.svelte-649juz{color:var(--text-muted)}.file-name.svelte-649juz{color:var(--text)}.diff-stats.svelte-649juz{flex-shrink:0;display:flex;gap:var(--spacing-sm);font-weight:600}.diff-add.svelte-649juz{color:var(--diff-add)}.diff-remove.svelte-649juz{color:var(--diff-remove)}.tool-call-card.svelte-9tdk1v{background:var(--card-bg);border-radius:var(--radius-sm);margin:var(--spacing-xs) 0;overflow:hidden;width:100%}.tool-header.svelte-9tdk1v{display:flex;align-items:center;gap:var(--spacing-sm);width:100%;min-height:44px;padding:var(--spacing-sm) var(--spacing-md);background:none;border:none;color:var(--text);cursor:pointer;font-size:.85rem;text-align:left}.tool-name.svelte-9tdk1v{font-family:var(--code-font);font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-status.svelte-9tdk1v{flex-shrink:0;font-size:.75rem;padding:1px 6px;border-radius:var(--radius-sm);font-weight:600;text-transform:uppercase}.status-success.svelte-9tdk1v{background:var(--success);color:#fff}.status-error.svelte-9tdk1v{background:var(--error);color:#fff}.status-pending.svelte-9tdk1v{background:var(--warning);color:#000}.toggle-icon.svelte-9tdk1v{flex-shrink:0;font-size:.7rem;color:var(--text-muted)}.tool-input.svelte-9tdk1v{padding:var(--spacing-sm) var(--spacing-md);background:var(--bg);font-family:var(--code-font);font-size:.8rem;color:var(--text-muted);overflow-x:auto;white-space:pre-wrap;word-break:break-all;margin:0;border-top:1px solid var(--border)}.reasoning-panel.svelte-fizs81{margin:var(--spacing-xs) 0;border-radius:var(--radius-sm);overflow:hidden;width:100%}.reasoning-header.svelte-fizs81{display:flex;align-items:center;gap:var(--spacing-sm);width:100%;min-height:44px;padding:var(--spacing-xs) var(--spacing-md);background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:.85rem;text-align:left}.reasoning-label.svelte-fizs81{flex:1;font-style:italic}.dots.svelte-fizs81{animation:svelte-fizs81-pulse 1.5s ease-in-out infinite}@keyframes svelte-fizs81-pulse{0%,to{opacity:1}50%{opacity:.3}}.toggle-icon.svelte-fizs81{flex-shrink:0;font-size:.7rem}.reasoning-content.svelte-fizs81{padding:var(--spacing-sm) var(--spacing-md);color:var(--text-muted);font-family:var(--code-font);font-size:.82rem;line-height:1.5;white-space:pre-wrap;word-break:break-word}.error-card.svelte-au1iu7{border-left:3px solid var(--error);background:var(--card-bg);border-radius:var(--radius-sm);padding:var(--spacing-sm) var(--spacing-md);margin:var(--spacing-xs) 0;width:100%}.error-body.svelte-au1iu7{display:flex;align-items:flex-start;gap:var(--spacing-sm)}.error-text.svelte-au1iu7{flex:1;color:var(--error);font-size:.9rem;word-break:break-word}.dismiss-btn.svelte-au1iu7{flex-shrink:0;background:none;border:none;color:var(--text-muted);font-size:1.2rem;cursor:pointer;padding:0;line-height:1}.dismiss-btn.svelte-au1iu7:hover{color:var(--text)}.retry-btn.svelte-au1iu7{margin-top:var(--spacing-sm);background:none;border:1px solid var(--error);color:var(--error);border-radius:var(--radius-sm);padding:var(--spacing-xs) var(--spacing-md);font-size:.82rem;cursor:pointer;font-family:var(--code-font)}.retry-btn.svelte-au1iu7:hover{background:var(--error);color:#fff}.turn-completed.svelte-1q2w5up{display:flex;align-items:center;gap:var(--spacing-sm);margin:var(--spacing-sm) 0;width:100%}.separator-line.svelte-1q2w5up{flex:1;height:1px;background:var(--border)}.usage-info.svelte-1q2w5up{flex-shrink:0;color:var(--text-muted);font-size:.75rem;font-family:var(--code-font);padding:0 var(--spacing-sm)}.chat-view.svelte-o5aojg{flex:1;padding:var(--spacing-sm)}.empty-state.svelte-o5aojg{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-muted);font-size:.95rem;gap:var(--spacing-sm)}.cursor-blink.svelte-o5aojg{font-family:var(--code-font);font-size:1.2rem;animation:svelte-o5aojg-blink 1s step-end infinite}@keyframes svelte-o5aojg-blink{0%,to{opacity:1}50%{opacity:0}}.message-list.svelte-o5aojg{display:flex;flex-direction:column;gap:var(--spacing-xs)}.session-started.svelte-o5aojg{padding:var(--spacing-sm) var(--spacing-md);text-align:center}.session-started-text.svelte-o5aojg{color:var(--text-muted);font-size:.82rem;font-style:italic}.working-indicator.svelte-o5aojg{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md)}.working-dot.svelte-o5aojg{color:var(--accent);font-size:.7rem;animation:svelte-o5aojg-pulse-dot 1.5s ease-in-out infinite}@keyframes svelte-o5aojg-pulse-dot{0%,to{opacity:1}50%{opacity:.3}}.working-text.svelte-o5aojg{color:var(--text-muted);font-size:.85rem}.chat-input-container.svelte-mnrni5{display:flex;align-items:flex-end;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--surface);border-top:1px solid var(--border);position:sticky;bottom:0}.chat-textarea.svelte-mnrni5{flex:1;background:var(--surface);border:none;color:var(--text);font-size:.95rem;font-family:inherit;resize:none;outline:none;padding:var(--spacing-sm);min-height:36px;max-height:120px;line-height:1.4}.chat-textarea.svelte-mnrni5::placeholder{color:var(--text-muted)}.chat-textarea.svelte-mnrni5:disabled{opacity:.5}.send-btn.svelte-mnrni5{flex-shrink:0;width:44px;height:44px;border-radius:50%;border:none;background:var(--accent);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:opacity .15s}.send-btn.disabled.svelte-mnrni5{opacity:.4;cursor:default}.send-btn.svelte-mnrni5:not(.disabled):hover{opacity:.9}.send-dots.svelte-mnrni5{font-size:1.1rem;letter-spacing:1px}.send-icon.svelte-mnrni5{display:block}.quick-replies.svelte-2y5bi6{display:flex;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-md);overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.quick-replies.svelte-2y5bi6::-webkit-scrollbar{display:none}.quick-reply-btn.svelte-2y5bi6{flex-shrink:0;height:40px;padding:0 var(--spacing-md);background:none;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--code-font);font-size:.82rem;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}.quick-reply-btn.svelte-2y5bi6:hover{background:var(--surface);border-color:var(--accent)}.quick-reply-btn.svelte-2y5bi6:active{background:var(--card-bg)}.permission-card.svelte-1amwf6m{border-left:3px solid var(--accent);background:var(--card-bg);border-radius:var(--radius-sm);padding:var(--spacing-md);flex-shrink:0;width:100%}.permission-card.resolved.svelte-1amwf6m{opacity:.7}.permission-card.timed_out.svelte-1amwf6m{border-left-color:var(--text-muted);opacity:.5}.permission-header.svelte-1amwf6m{margin-bottom:var(--spacing-sm)}.permission-tool.svelte-1amwf6m{font-family:var(--code-font);font-size:.88rem;color:var(--text);word-break:break-all}.permission-actions.svelte-1amwf6m{display:flex;gap:var(--spacing-sm)}.approve-btn.svelte-1amwf6m,.deny-btn.svelte-1amwf6m{flex:1;height:48px;border-radius:var(--radius-sm);font-size:.95rem;font-weight:600;cursor:pointer;border:none}.approve-btn.svelte-1amwf6m{background:var(--success);color:#fff}.approve-btn.svelte-1amwf6m:hover{opacity:.9}.deny-btn.svelte-1amwf6m{background:none;border:1px solid var(--error);color:var(--error)}.deny-btn.svelte-1amwf6m:hover{background:var(--error);color:#fff}.permission-badge.svelte-1amwf6m{font-size:.85rem;font-weight:600;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);display:inline-block}.badge-approved.svelte-1amwf6m{color:var(--success)}.badge-denied.svelte-1amwf6m{color:var(--error)}.badge-timeout.svelte-1amwf6m{color:var(--text-muted)}.cost-display.svelte-p9ddlc{color:var(--text-muted);font-size:.75rem;font-family:var(--code-font);text-align:center;padding:var(--spacing-xs) var(--spacing-md)}.session-view.svelte-oor1t0{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.fallback-banner.svelte-oor1t0{background:var(--warning);color:#000;font-size:.82rem;font-weight:600;text-align:center;padding:var(--spacing-xs) var(--spacing-md)}.tab-bar.svelte-oor1t0{display:flex;border-bottom:1px solid var(--border);flex-shrink:0}.tab.svelte-oor1t0{flex:1;height:44px;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);font-size:.9rem;font-weight:600;cursor:pointer;transition:color .15s,border-color .15s}.tab.active.svelte-oor1t0{color:var(--text);border-bottom-color:var(--accent)}.tab.svelte-oor1t0:hover:not(.active){color:var(--text)}.tab-content.svelte-oor1t0{flex:1;display:flex;min-height:0;overflow:hidden}.tab-panel.svelte-oor1t0{flex-direction:column;flex:1;min-height:0;overflow:hidden}.chat-scroll-area.svelte-oor1t0{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}@keyframes svelte-oor1t0-spin{to{transform:rotate(360deg)}}.branch-switcher.svelte-1ogsozk{position:relative}.branch-trigger.svelte-1ogsozk{display:flex;align-items:center;gap:5px;background:none;border:none;color:var(--text);font-family:var(--font-mono);font-size:var(--font-size-sm);cursor:pointer;padding:4px 6px;border-radius:4px;transition:background .12s;white-space:nowrap;min-width:0}.branch-trigger.svelte-1ogsozk:hover{background:var(--surface-hover)}.branch-icon.svelte-1ogsozk{color:var(--text-muted);font-size:.9rem;flex-shrink:0}.branch-name.svelte-1ogsozk{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}.branch-caret.svelte-1ogsozk{flex-shrink:0;color:var(--text-muted);margin-left:1px}.branch-dropdown.svelte-1ogsozk{position:absolute;top:calc(100% + 4px);left:0;min-width:220px;max-width:340px;background:var(--surface);border:1px solid var(--border);border-radius:4px;z-index:200;overflow:hidden;box-shadow:0 4px 16px #00000080}.branch-filter-wrap.svelte-1ogsozk{padding:6px 6px 4px;border-bottom:1px solid var(--border)}.branch-filter.svelte-1ogsozk{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:3px;color:var(--text);font-family:var(--font-mono);font-size:var(--font-size-xs);padding:4px 8px;outline:none;box-sizing:border-box}.branch-filter.svelte-1ogsozk:focus{border-color:var(--accent)}.branch-error.svelte-1ogsozk{font-size:var(--font-size-xs);color:var(--status-error);padding:4px 10px}.branch-loading.svelte-1ogsozk,.branch-empty.svelte-1ogsozk{font-size:var(--font-size-xs);color:var(--text-muted);padding:8px 10px;font-style:italic}.branch-list.svelte-1ogsozk{list-style:none;margin:0;padding:4px 0;max-height:240px;overflow-y:auto}.branch-option.svelte-1ogsozk{display:flex;align-items:center;gap:6px;padding:5px 10px;font-size:var(--font-size-xs);cursor:pointer;white-space:nowrap;overflow:hidden;color:var(--text-muted);transition:background .1s,color .1s}.branch-option.svelte-1ogsozk:hover{background:var(--surface-hover);color:var(--text)}.branch-current.svelte-1ogsozk,.branch-current.svelte-1ogsozk:hover{color:var(--accent)}.branch-switching.svelte-1ogsozk{opacity:.6;pointer-events:none}.branch-check.svelte-1ogsozk{font-size:.65rem;width:10px;flex-shrink:0;color:var(--accent)}.branch-check--empty.svelte-1ogsozk{display:inline-block}.branch-option-name.svelte-1ogsozk{overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.branch-spinner.svelte-1ogsozk{color:var(--text-muted);font-size:var(--font-size-xs);flex-shrink:0}.pr-top-bar.svelte-1shtc4l{display:flex;align-items:center;height:36px;background:var(--surface);border-bottom:1px solid var(--border);padding:0 8px;gap:0;flex-shrink:0;overflow:hidden;font-family:var(--font-mono);font-size:var(--font-size-sm)}.bar-left.svelte-1shtc4l{display:flex;align-items:center;gap:4px;flex:1;min-width:0;overflow:hidden;padding-right:8px;border-right:1px solid var(--border)}.target-branch.svelte-1shtc4l{display:flex;align-items:center;gap:3px;color:var(--text-muted);font-size:var(--font-size-xs);flex-shrink:0;white-space:nowrap}.target-sep.svelte-1shtc4l{color:var(--border);font-size:.75rem}.target-name.svelte-1shtc4l{overflow:hidden;text-overflow:ellipsis;max-width:100px}.bar-middle.svelte-1shtc4l{display:flex;align-items:center;padding:0 12px;border-right:1px solid var(--border);flex-shrink:0;white-space:nowrap}.pr-link.svelte-1shtc4l{display:flex;align-items:center;gap:4px;color:var(--text-muted);text-decoration:none;font-size:var(--font-size-xs);transition:color .12s}.pr-link.svelte-1shtc4l:hover{color:var(--accent)}.pr-ext-icon.svelte-1shtc4l{flex-shrink:0;opacity:.6}.bar-right.svelte-1shtc4l{display:flex;align-items:center;padding-left:10px;flex-shrink:0}.bar-loading.svelte-1shtc4l{color:var(--text-muted);font-size:var(--font-size-xs);padding:0 4px}.action-btn.svelte-1shtc4l{display:inline-flex;align-items:center;justify-content:center;height:22px;padding:0 10px;border-radius:11px;border:none;background:var(--action-color, var(--border));color:#fff;font-family:var(--font-mono);font-size:var(--font-size-xs);font-weight:500;cursor:pointer;white-space:nowrap;transition:opacity .12s,filter .12s;letter-spacing:.01em}.action-btn.svelte-1shtc4l:hover:not(:disabled){filter:brightness(1.15)}.action-btn.svelte-1shtc4l:active:not(:disabled){filter:brightness(.9)}.action-btn--dark-text.svelte-1shtc4l{color:#000}.action-btn--disabled.svelte-1shtc4l{cursor:default;opacity:.7}@media(max-width:600px){.target-branch.svelte-1shtc4l,.bar-middle.svelte-1shtc4l{display:none}.bar-left.svelte-1shtc4l{border-right:none;padding-right:4px}}.session-tab-bar.svelte-3dfyyn{display:flex;align-items:stretch;height:32px;background:var(--bg);border-bottom:1px solid var(--border);flex-shrink:0;font-family:var(--font-mono);font-size:var(--font-size-xs)}.tabs-scroll.svelte-3dfyyn{display:flex;align-items:stretch;overflow-x:auto;overflow-y:hidden;flex:1;min-width:0;scrollbar-width:none}.tabs-scroll.svelte-3dfyyn::-webkit-scrollbar{display:none}.tab.svelte-3dfyyn{display:inline-flex;align-items:center;gap:5px;height:32px;padding:0 10px;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--text-muted);font-family:var(--font-mono);font-size:var(--font-size-xs);cursor:pointer;white-space:nowrap;flex-shrink:0;position:relative;transition:color .12s,background .12s;border-radius:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.tab.svelte-3dfyyn:hover{color:var(--text);background:var(--surface-hover)}.tab--active.svelte-3dfyyn{background:var(--surface);color:var(--text);border-bottom-color:var(--accent)}.tab--active.svelte-3dfyyn:hover{background:var(--surface)}.tab-icon.svelte-3dfyyn{font-size:.7rem;line-height:1;flex-shrink:0}.tab-name.svelte-3dfyyn{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab-close.svelte-3dfyyn{font-size:var(--font-size-xs);color:var(--text-muted);cursor:pointer;line-height:1;flex-shrink:0;border-radius:3px;width:14px;height:14px;display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity .1s,color .1s,background .1s}.tab.svelte-3dfyyn:hover .tab-close:where(.svelte-3dfyyn){opacity:1}.tab-close.svelte-3dfyyn:hover{color:var(--text);background:var(--border)}.tab--active.svelte-3dfyyn .tab-close:where(.svelte-3dfyyn){opacity:0}.tab--active.svelte-3dfyyn:hover .tab-close:where(.svelte-3dfyyn){opacity:1}.new-btn-wrap.svelte-3dfyyn{position:relative;display:flex;align-items:center;flex-shrink:0;border-left:1px solid var(--border)}.tab-new.svelte-3dfyyn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:none;border:none;color:var(--text-muted);font-size:1rem;cursor:pointer;font-family:var(--font-mono);transition:color .12s,background .12s;-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:1}.tab-new.svelte-3dfyyn:hover{color:var(--text);background:var(--surface-hover)}.new-menu.svelte-3dfyyn{position:absolute;top:calc(100% + 2px);right:0;background:var(--surface);border:1px solid var(--border);border-radius:4px;z-index:200;min-width:180px;box-shadow:0 4px 16px #00000080;padding:4px 0}.new-menu-item.svelte-3dfyyn{display:flex;align-items:center;gap:8px;width:100%;padding:7px 12px;background:none;border:none;color:var(--text-muted);font-family:var(--font-mono);font-size:var(--font-size-xs);cursor:pointer;text-align:left;transition:background .1s,color .1s;-webkit-appearance:none;-moz-appearance:none;appearance:none;white-space:nowrap}.new-menu-item.svelte-3dfyyn:hover{background:var(--surface-hover);color:var(--text)}.new-menu-icon.svelte-3dfyyn{font-size:.75rem;flex-shrink:0}@media(max-width:600px){.session-tab-bar.svelte-3dfyyn{height:44px}.tab.svelte-3dfyyn{height:44px;padding:0 12px;min-width:44px}.tab-close.svelte-3dfyyn{opacity:1;width:18px;height:18px}.tab--active.svelte-3dfyyn .tab-close:where(.svelte-3dfyyn){opacity:1}.tab-new.svelte-3dfyyn{width:44px;height:44px}}.repo-dashboard.svelte-bvvs2r{display:flex;flex-direction:column;gap:20px;padding:20px;background:var(--bg);min-height:0;max-width:none}.dashboard-section.svelte-bvvs2r{display:flex;flex-direction:column;gap:8px}.section-heading.svelte-bvvs2r{font-size:var(--font-size-sm);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);padding-bottom:6px;border-bottom:1px solid var(--border)}.section-message.svelte-bvvs2r{font-size:var(--font-size-sm);font-family:var(--font-mono);color:var(--text-muted);padding:6px 0}.section-message.info.svelte-bvvs2r a:where(.svelte-bvvs2r){color:var(--accent);text-decoration:none}.section-message.info.svelte-bvvs2r a:where(.svelte-bvvs2r):hover{text-decoration:underline}.pr-list.svelte-bvvs2r{display:flex;flex-direction:column;gap:0;border:1px solid var(--border);border-radius:4px;overflow:hidden}.pr-row.svelte-bvvs2r{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid var(--border)}.pr-row.svelte-bvvs2r:last-child{border-bottom:none}.pr-row-left.svelte-bvvs2r{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.pr-row-title-line.svelte-bvvs2r{display:flex;align-items:center;gap:8px;min-width:0}.pr-title-link.svelte-bvvs2r{font-size:var(--font-size-sm);font-family:var(--font-mono);color:var(--text);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}.pr-title-link.svelte-bvvs2r:hover{color:var(--accent);text-decoration:underline}.pr-row-actions.svelte-bvvs2r{display:flex;align-items:center;gap:8px;flex-shrink:0}.pr-conflict-pill.svelte-bvvs2r{--pill-color: var(--status-error);font-weight:600}.pr-merge-pill.svelte-bvvs2r{--pill-color: var(--status-success);color:#1a1a1a;font-weight:600}.pr-row-meta.svelte-bvvs2r{display:flex;align-items:center;gap:4px;font-size:var(--font-size-xs);font-family:var(--font-mono);color:var(--text-muted)}.pr-sep.svelte-bvvs2r{opacity:.4}.dot.svelte-bvvs2r{width:7px;height:7px;border-radius:50%;flex-shrink:0;display:inline-block}.dot-success.svelte-bvvs2r{background:var(--status-success)}.dot-error.svelte-bvvs2r{background:var(--status-error)}.dot-warning.svelte-bvvs2r{background:var(--status-warning)}.dot-muted.svelte-bvvs2r{background:var(--border)}.pr-action-pill.svelte-bvvs2r{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:6px 12px;min-height:32px;border-radius:20px;border:none;background:var(--pill-color, var(--border));font-size:var(--font-size-xs);font-family:var(--font-mono);color:#fff;text-decoration:none;white-space:nowrap;transition:opacity .12s}.pr-action-pill.svelte-bvvs2r:hover{opacity:.85}.pr-action-pill.dark-text.svelte-bvvs2r{color:#1a1a1a}.activity-list.svelte-bvvs2r{display:flex;flex-direction:column;gap:4px}.activity-row.svelte-bvvs2r{display:flex;align-items:baseline;gap:8px;font-size:var(--font-size-xs);font-family:var(--font-mono);min-width:0}.commit-hash.svelte-bvvs2r{color:var(--text-muted);flex-shrink:0;letter-spacing:.02em}.commit-msg.svelte-bvvs2r{color:var(--text);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.commit-branch.svelte-bvvs2r{color:var(--text-muted);flex-shrink:0;white-space:nowrap}.commit-time.svelte-bvvs2r{color:var(--text-muted);flex-shrink:0;white-space:nowrap;opacity:.6}.non-git-notice.svelte-bvvs2r{padding:8px 0}.non-git-msg.svelte-bvvs2r{font-size:var(--font-size-sm);font-family:var(--font-mono);color:var(--text-muted)}.cta-row.svelte-bvvs2r{display:flex;align-items:center;gap:10px;padding-top:4px}.cta-btn.svelte-bvvs2r{display:inline-flex;align-items:center;justify-content:center;padding:10px 18px;min-height:40px;background:transparent;border:1px solid var(--accent);border-radius:4px;color:var(--accent);font-size:var(--font-size-sm);font-family:var(--font-mono);cursor:pointer;transition:background .12s,color .12s;white-space:nowrap}.cta-btn.svelte-bvvs2r:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}.skeleton.svelte-bvvs2r{pointer-events:none}.skeleton-line.svelte-bvvs2r{background:var(--border);border-radius:3px;animation:svelte-bvvs2r-skeleton-pulse 1.4s ease-in-out infinite}.skeleton-title.svelte-bvvs2r{height:13px;width:60%;margin-bottom:5px}.skeleton-meta.svelte-bvvs2r{height:10px;width:40%}.skeleton-activity.svelte-bvvs2r{height:12px;width:75%}@keyframes svelte-bvvs2r-skeleton-pulse{0%,to{opacity:.4}50%{opacity:.7}}@media(max-width:600px){.repo-dashboard.svelte-bvvs2r{padding:14px}.pr-row.svelte-bvvs2r{flex-wrap:wrap;gap:8px;padding:12px 10px;min-height:44px;align-items:flex-start}.pr-row-left.svelte-bvvs2r{width:100%}.pr-action-pill.svelte-bvvs2r{align-self:flex-end;margin-left:auto;padding:5px 12px;min-height:32px}.cta-btn.svelte-bvvs2r{flex:1;min-height:44px}}.empty-state.svelte-1luen49{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;max-width:320px;text-align:center;padding:32px 16px;flex:1;margin:0 auto}.empty-icon.svelte-1luen49{font-size:2rem;line-height:1;color:var(--text-muted);opacity:.5}.empty-heading.svelte-1luen49{font-size:var(--font-size-lg);font-family:var(--font-mono);color:var(--text);font-weight:600;line-height:1.3}.empty-description.svelte-1luen49{font-size:var(--font-size-sm);font-family:var(--font-mono);color:var(--text-muted);line-height:1.5}.empty-action.svelte-1luen49{display:inline-flex;align-items:center;justify-content:center;padding:10px 18px;min-height:40px;background:transparent;border:1px solid var(--accent);border-radius:4px;color:var(--accent);font-size:var(--font-size-sm);font-family:var(--font-mono);cursor:pointer;margin-top:4px;transition:background .12s,color .12s;white-space:nowrap}.empty-action.svelte-1luen49:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}.toolbar.svelte-k7we1m{background:var(--surface);border-top:1px solid var(--border);padding:4px;padding-bottom:calc(4px + env(safe-area-inset-bottom,0px));flex-shrink:0}.toolbar-grid.svelte-k7we1m{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}.tb-btn.svelte-k7we1m{background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.85rem;padding:8px 4px;cursor:pointer;touch-action:manipulation;min-height:40px;display:flex;align-items:center;justify-content:center;user-select:none;-webkit-user-select:none}.tb-btn.svelte-k7we1m:active{background:var(--border)}.tb-enter.svelte-k7we1m{background:var(--accent);border-color:var(--accent);color:#fff}.tb-enter.svelte-k7we1m:active{opacity:.8}.mobile-header.svelte-wp0i5g{display:none;align-items:center;gap:8px;padding:8px 12px;background:var(--surface);border-bottom:1px solid var(--border);min-height:44px;flex-shrink:0}@media(max-width:768px){.mobile-header.svelte-wp0i5g{display:flex}.mobile-header.hidden.svelte-wp0i5g{display:none}}.mobile-title.svelte-wp0i5g{font-size:.95rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.icon-btn.svelte-wp0i5g{background:none;border:none;color:var(--text);font-size:1.2rem;cursor:pointer;padding:6px;min-width:36px;min-height:36px;display:flex;align-items:center;justify-content:center;border-radius:6px;touch-action:manipulation}.icon-btn.svelte-wp0i5g:hover{background:var(--border)}.update-toast.svelte-1trivgv{position:fixed;bottom:0;left:0;right:0;z-index:150;display:flex;justify-content:center;padding:12px 12px calc(12px + env(safe-area-inset-bottom));pointer-events:none;animation:svelte-1trivgv-toast-slide-up .25s ease-out}@keyframes svelte-1trivgv-toast-slide-up{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.update-toast-content.svelte-1trivgv{display:flex;flex-direction:row;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 16px;max-width:500px;box-shadow:0 4px 16px #0000004d;pointer-events:auto}.update-toast-text.svelte-1trivgv{flex:1;font-size:.85rem;color:var(--text)}.update-toast-actions.svelte-1trivgv{display:flex;gap:8px;flex-shrink:0}.update-toast-btn.svelte-1trivgv{padding:8px 14px;border-radius:6px;font-size:.8rem;border:none;background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap}.update-toast-btn.svelte-1trivgv:disabled{opacity:.6;cursor:not-allowed}.update-toast-dismiss.svelte-1trivgv{background:none;border:none;color:var(--text-muted);font-size:1.2rem;padding:4px 6px;cursor:pointer}.update-toast-dismiss.svelte-1trivgv:hover{color:var(--text)}.image-toast.svelte-1y8sviv{position:fixed;bottom:60px;left:50%;transform:translate(-50%);z-index:1000;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px 14px;color:var(--text);font-size:13px;max-width:90vw;box-shadow:0 4px 12px #0006}.image-toast-content.svelte-1y8sviv{display:flex;align-items:center;gap:10px}.image-toast-text.svelte-1y8sviv{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60vw}.image-toast-actions.svelte-1y8sviv{display:flex;gap:6px;align-items:center;flex-shrink:0}.image-toast-insert.svelte-1y8sviv{background:var(--accent);color:#fff;border:none;border-radius:4px;padding:4px 10px;font-size:12px;cursor:pointer}.image-toast-insert.svelte-1y8sviv:active{opacity:.8}.image-toast-dismiss.svelte-1y8sviv{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:16px;padding:2px 6px}.image-toast-dismiss.svelte-1y8sviv:hover{color:var(--text)}.dialog.svelte-thtd9b{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:0;width:min(480px,95vw);max-height:90vh;overflow:hidden}.dialog.svelte-thtd9b::backdrop{background:#0009}.dialog-content.svelte-thtd9b{display:flex;flex-direction:column;max-height:90vh;overflow:hidden}.dialog-title.svelte-thtd9b{font-size:1.1rem;font-weight:600;padding:16px 20px 12px;margin:0;border-bottom:1px solid var(--border);flex-shrink:0}.dialog-title-repo.svelte-thtd9b{font-weight:400;color:var(--text-muted);font-size:1rem}.dialog-tabs.svelte-thtd9b{display:flex;border-bottom:1px solid var(--border);flex-shrink:0}.dialog-tab.svelte-thtd9b{flex:1;padding:10px;background:none;border:none;color:var(--text-muted);font-size:.9rem;cursor:pointer;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.dialog-tab.active.svelte-thtd9b{color:var(--accent);border-bottom-color:var(--accent)}.dialog-tab.svelte-thtd9b:hover:not(.active){color:var(--text)}.dialog-body.svelte-thtd9b{padding:16px 20px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:14px}.dialog-field.svelte-thtd9b{display:flex;flex-direction:column;gap:5px}.dialog-field--inline.svelte-thtd9b{flex-direction:row;align-items:center;gap:8px}.dialog-label.svelte-thtd9b{font-size:.85rem;color:var(--text-muted)}.dialog-label-row.svelte-thtd9b{display:flex;align-items:center;justify-content:space-between;gap:10px}.dialog-label-inline.svelte-thtd9b{font-size:.9rem;cursor:pointer}.dialog-select.svelte-thtd9b,.dialog-input.svelte-thtd9b{background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.9rem;padding:7px 10px;width:100%;box-sizing:border-box}.dialog-select.svelte-thtd9b:disabled{opacity:.5;cursor:not-allowed}.dialog-checkbox.svelte-thtd9b{width:16px;height:16px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.branch-input-wrap.svelte-thtd9b{position:relative}.branch-refresh.svelte-thtd9b{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text-muted);cursor:pointer;transition:color .15s,border-color .15s,background .15s}.branch-refresh.svelte-thtd9b:hover:not(:disabled){color:var(--accent);border-color:var(--accent)}.branch-refresh.svelte-thtd9b:disabled{opacity:.5;cursor:not-allowed}.branch-refresh.svelte-thtd9b svg:where(.svelte-thtd9b){width:15px;height:15px}.branch-dropdown.svelte-thtd9b{position:absolute;top:calc(100% + 2px);left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:6px;list-style:none;margin:0;padding:4px 0;z-index:100;max-height:180px;overflow-y:auto}.branch-dropdown.svelte-thtd9b li:where(.svelte-thtd9b){padding:7px 12px;font-size:.9rem;cursor:pointer}.branch-dropdown.svelte-thtd9b li:where(.svelte-thtd9b):hover{background:var(--border)}.branch-create-new.svelte-thtd9b{color:var(--accent);border-bottom:1px solid var(--border)}.dialog-footer.svelte-thtd9b{display:flex;justify-content:flex-end;gap:10px;padding:12px 20px 16px;border-top:1px solid var(--border);flex-shrink:0}.btn.svelte-thtd9b{padding:8px 18px;border-radius:6px;font-size:.9rem;cursor:pointer;border:1px solid transparent;font-weight:500;transition:opacity .15s}.btn.svelte-thtd9b:disabled{opacity:.4;cursor:not-allowed}.btn-primary.svelte-thtd9b{background:var(--accent);color:#fff}.btn-primary.svelte-thtd9b:hover:not(:disabled){opacity:.9}.btn-ghost.svelte-thtd9b{background:transparent;color:var(--text-muted);border-color:var(--border)}.btn-ghost.svelte-thtd9b:hover{background:var(--border);color:var(--text)}.spinning.svelte-thtd9b{animation:svelte-thtd9b-spin 1s linear infinite;transform-origin:center}@keyframes svelte-thtd9b-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.dialog.svelte-fdtoa4{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:0;width:min(460px,95vw);max-height:90vh;overflow:hidden}.dialog.svelte-fdtoa4::backdrop{background:#0009}.dialog-content.svelte-fdtoa4{display:flex;flex-direction:column;max-height:90vh;overflow:hidden}.dialog-header.svelte-fdtoa4{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.dialog-title.svelte-fdtoa4{font-size:1.1rem;font-weight:600;margin:0}.close-btn.svelte-fdtoa4{background:none;border:none;color:var(--text-muted);font-size:1rem;cursor:pointer;padding:4px 6px;border-radius:4px}.close-btn.svelte-fdtoa4:hover{background:var(--border);color:var(--text)}.dialog-body.svelte-fdtoa4{padding:16px 20px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:20px}.settings-section.svelte-fdtoa4{display:flex;flex-direction:column;gap:10px}.section-title.svelte-fdtoa4{font-size:.9rem;font-weight:600;color:var(--text);margin:0}.section-desc.svelte-fdtoa4{font-size:.82rem;color:var(--text-muted);margin:0}.error-msg.svelte-fdtoa4{font-size:.82rem;color:#e74c3c;margin:0}.agent-select.svelte-fdtoa4{background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.9rem;padding:7px 10px;width:100%;box-sizing:border-box}.devtools-row.svelte-fdtoa4{display:flex;align-items:center;gap:8px}.dialog-checkbox.svelte-fdtoa4{width:16px;height:16px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.devtools-label.svelte-fdtoa4{font-size:.9rem;cursor:pointer}.dialog-footer.svelte-fdtoa4{display:flex;justify-content:flex-end;gap:10px;padding:12px 20px 16px;border-top:1px solid var(--border);flex-shrink:0}.btn.svelte-fdtoa4{padding:8px 18px;border-radius:6px;font-size:.9rem;cursor:pointer;border:1px solid transparent;font-weight:500}.btn-primary.svelte-fdtoa4{background:var(--accent);color:#fff;flex-shrink:0}.btn-primary.svelte-fdtoa4:hover{opacity:.9}.btn-ghost.svelte-fdtoa4{background:transparent;color:var(--text-muted);border-color:var(--border)}.btn-ghost.svelte-fdtoa4:hover{background:var(--border);color:var(--text)}.btn-sm.svelte-fdtoa4{padding:5px 12px;font-size:.8rem}.version-row.svelte-fdtoa4{display:flex;align-items:center;gap:10px}.version-current.svelte-fdtoa4{font-size:.9rem;font-family:monospace;color:var(--text)}.version-status.svelte-fdtoa4{font-size:.8rem;color:var(--text-muted)}.version-update-row.svelte-fdtoa4{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:8px 10px}.version-update-text.svelte-fdtoa4{font-size:.85rem;color:var(--accent)}.version-status-msg.svelte-fdtoa4{font-size:.82rem;color:var(--text-muted);margin:0}.dialog.svelte-15sco2n{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:0;width:min(400px,95vw);overflow:hidden}.dialog.svelte-15sco2n::backdrop{background:#0009}.dialog-content.svelte-15sco2n{display:flex;flex-direction:column}.dialog-title.svelte-15sco2n{font-size:1.1rem;font-weight:600;padding:16px 20px 12px;margin:0;border-bottom:1px solid var(--border)}.dialog-body.svelte-15sco2n{padding:16px 20px;display:flex;flex-direction:column;gap:8px}.confirm-msg.svelte-15sco2n{font-size:.95rem;margin:0;line-height:1.5}.wt-name.svelte-15sco2n{color:var(--text)}.wt-path.svelte-15sco2n{font-size:.82rem;color:var(--text-muted);font-family:monospace;margin:0;word-break:break-all}.warning-msg.svelte-15sco2n{font-size:.82rem;color:#e74c3c;margin:0}.error-msg.svelte-15sco2n{font-size:.85rem;color:#e74c3c;margin:0;padding:8px 10px;background:#e74c3c1a;border-radius:6px;border:1px solid rgba(231,76,60,.3)}.dialog-footer.svelte-15sco2n{display:flex;justify-content:flex-end;gap:10px;padding:12px 20px 16px;border-top:1px solid var(--border)}.btn.svelte-15sco2n{padding:8px 18px;border-radius:6px;font-size:.9rem;cursor:pointer;border:1px solid transparent;font-weight:500}.btn.svelte-15sco2n:disabled{opacity:.4;cursor:not-allowed}.btn-danger.svelte-15sco2n{background:#e74c3c;color:#fff}.btn-danger.svelte-15sco2n:hover:not(:disabled){opacity:.9}.btn-ghost.svelte-15sco2n{background:transparent;color:var(--text-muted);border-color:var(--border)}.btn-ghost.svelte-15sco2n:hover:not(:disabled){background:var(--border);color:var(--text)}.file-browser.svelte-15gfcbp{display:flex;flex-direction:column;gap:8px}.filter-row.svelte-15gfcbp{display:flex;gap:8px}.filter-input.svelte-15gfcbp{flex:1;background:var(--bg);border:1px solid var(--border);border-radius:0;color:var(--text);font-family:var(--font-mono);font-size:var(--font-size-sm);padding:8px 10px;outline:none}.filter-input.svelte-15gfcbp:focus{border-color:var(--accent)}.filter-input.svelte-15gfcbp::placeholder{color:var(--text-muted);opacity:.5}.tree-container.svelte-15gfcbp{background:var(--bg);border:1px solid var(--border);max-height:50vh;overflow-y:auto;outline:none}.tree-container.svelte-15gfcbp:focus-visible{border-color:var(--accent)}.loading-placeholder.svelte-15gfcbp,.empty-placeholder.svelte-15gfcbp{padding:20px 16px;color:var(--text-muted);font-family:var(--font-mono);font-size:var(--font-size-sm);text-align:center}.tree-row.svelte-15gfcbp{display:flex;align-items:center;gap:6px;padding-top:4px;padding-bottom:4px;padding-right:12px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .1s;min-height:32px}.tree-row.svelte-15gfcbp:hover{background:var(--border)}.tree-row.focused.svelte-15gfcbp{outline:2px solid var(--accent);outline-offset:-2px}.tree-row.selected.svelte-15gfcbp{background:color-mix(in srgb,var(--accent) 10%,transparent)}.expand-btn.svelte-15gfcbp{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:2px;width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:10px;border-radius:2px}.expand-btn.svelte-15gfcbp:hover{background:var(--surface);color:var(--text)}.expand-spacer.svelte-15gfcbp{width:18px;flex-shrink:0}.arrow.svelte-15gfcbp{display:inline-block;transition:transform .15s}.arrow.expanded.svelte-15gfcbp{transform:rotate(90deg)}.spinner.svelte-15gfcbp{animation:svelte-15gfcbp-blink 1s infinite;font-size:10px}@keyframes svelte-15gfcbp-blink{0%,to{opacity:1}50%{opacity:.3}}.node-checkbox.svelte-15gfcbp{width:14px;height:14px;accent-color:var(--accent);cursor:pointer;flex-shrink:0;margin:0}.node-name.svelte-15gfcbp{font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.git-badge.svelte-15gfcbp{font-family:var(--font-mono);font-size:10px;color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,transparent);padding:1px 5px;border-radius:3px;flex-shrink:0;text-transform:lowercase}.truncated-notice.svelte-15gfcbp{padding:8px 12px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted);border-top:1px solid var(--border);text-align:center}.dialog.svelte-4yj2yx{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:0;width:min(520px,95vw);max-height:85vh;overflow:hidden}.dialog.svelte-4yj2yx::backdrop{background:#000000b3}.dialog-content.svelte-4yj2yx{display:flex;flex-direction:column;max-height:85vh}.dialog-header.svelte-4yj2yx{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.dialog-title.svelte-4yj2yx{font-size:var(--font-size-lg, 1.1rem);font-weight:600;font-family:var(--font-mono, monospace);margin:0}.close-btn.svelte-4yj2yx{background:none;border:none;color:var(--text-muted);font-size:1rem;cursor:pointer;padding:4px 6px;border-radius:4px}.close-btn.svelte-4yj2yx:hover{background:var(--border);color:var(--text)}.dialog-body.svelte-4yj2yx{padding:16px 20px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:12px}.dialog-desc.svelte-4yj2yx{font-size:var(--font-size-sm, .85rem);color:var(--text-muted);font-family:var(--font-mono, monospace);margin:0;line-height:1.5}.error-msg.svelte-4yj2yx{font-size:var(--font-size-xs, .75rem);color:var(--status-error, #e57373);font-family:var(--font-mono, monospace);margin:0}.dialog-footer.svelte-4yj2yx{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 20px 16px;border-top:1px solid var(--border);flex-shrink:0}.selected-count.svelte-4yj2yx{font-size:var(--font-size-sm, .85rem);color:var(--text-muted);font-family:var(--font-mono, monospace)}.footer-actions.svelte-4yj2yx{display:flex;gap:10px}.btn.svelte-4yj2yx{padding:8px 18px;border-radius:0;font-size:var(--font-size-sm, .85rem);font-family:var(--font-mono, monospace);cursor:pointer;border:1px solid transparent;font-weight:500}.btn.svelte-4yj2yx:disabled{opacity:.5;cursor:not-allowed}.btn-primary.svelte-4yj2yx{background:var(--accent);color:#fff}.btn-primary.svelte-4yj2yx:hover:not(:disabled){opacity:.9}.btn-ghost.svelte-4yj2yx{background:transparent;color:var(--text-muted);border-color:var(--border)}.btn-ghost.svelte-4yj2yx:hover{background:var(--border);color:var(--text)}.dialog.svelte-1n78dcx{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:0;width:min(480px,95vw);max-height:90vh;overflow:hidden}.dialog.svelte-1n78dcx::backdrop{background:#0009}.dialog-content.svelte-1n78dcx{display:flex;flex-direction:column;max-height:90vh;overflow:hidden}.dialog-header.svelte-1n78dcx{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid var(--border);flex-shrink:0;gap:8px}.dialog-title.svelte-1n78dcx{font-size:1.05rem;font-weight:600;margin:0;display:flex;align-items:center;gap:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.gear-icon.svelte-1n78dcx{flex-shrink:0;color:var(--text-muted);font-size:1rem}.close-btn.svelte-1n78dcx{background:none;border:none;color:var(--text-muted);font-size:1rem;cursor:pointer;padding:4px 6px;border-radius:4px;flex-shrink:0;line-height:1}.close-btn.svelte-1n78dcx:hover{background:var(--border);color:var(--text)}.dialog-body.svelte-1n78dcx{padding:16px 20px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:16px}.settings-section.svelte-1n78dcx{display:flex;flex-direction:column;gap:10px}.section-label.svelte-1n78dcx{font-size:var(--font-size-xs, .72rem);font-weight:600;color:var(--text-muted);letter-spacing:.08em;margin:0 0 2px;text-transform:uppercase}.field-group.svelte-1n78dcx{display:flex;flex-direction:column;gap:4px}.field-label.svelte-1n78dcx{font-size:.82rem;color:var(--text-muted)}.field-input.svelte-1n78dcx{background:var(--bg);border:1px solid var(--border);border-radius:0;color:var(--text);font-family:var(--font-mono, monospace);font-size:.88rem;padding:6px 9px;width:100%;box-sizing:border-box;outline:none}.field-input.svelte-1n78dcx:focus{border-color:var(--accent)}.field-select.svelte-1n78dcx{background:var(--bg);border:1px solid var(--border);border-radius:0;color:var(--text);font-family:var(--font-mono, monospace);font-size:.88rem;padding:6px 9px;width:100%;box-sizing:border-box;cursor:pointer;outline:none}.field-select.svelte-1n78dcx:focus{border-color:var(--accent)}.inline-row.svelte-1n78dcx{display:flex;align-items:center;gap:10px}.inline-row.svelte-1n78dcx .field-label:where(.svelte-1n78dcx){flex-shrink:0}.field-select-inline.svelte-1n78dcx{width:auto;flex:1;max-width:160px}.checkbox-row.svelte-1n78dcx{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.checkbox-label.svelte-1n78dcx{display:flex;align-items:center;gap:6px;font-size:.88rem;cursor:pointer;-webkit-user-select:none;user-select:none}.dialog-checkbox.svelte-1n78dcx{width:15px;height:15px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.divider.svelte-1n78dcx{height:1px;background:var(--border);margin:0 -20px}.prompt-group.svelte-1n78dcx{display:flex;flex-direction:column;gap:6px}.prompt-toggle.svelte-1n78dcx{background:none;border:none;color:var(--text);font-size:.88rem;cursor:pointer;padding:4px 0;text-align:left;display:flex;align-items:center;gap:6px;width:100%}.prompt-toggle.svelte-1n78dcx:hover{color:var(--accent)}.prompt-arrow.svelte-1n78dcx{color:var(--text-muted);font-size:.8rem;flex-shrink:0;width:10px}.prompt-textarea.svelte-1n78dcx{background:var(--bg);border:1px solid var(--border);border-radius:0;color:var(--text);font-family:var(--font-mono, monospace);font-size:.82rem;padding:8px 10px;width:100%;box-sizing:border-box;resize:vertical;line-height:1.5;outline:none}.prompt-textarea.svelte-1n78dcx:focus{border-color:var(--accent)}.error-msg.svelte-1n78dcx{font-size:.82rem;color:#e74c3c;margin:0;padding:6px 10px;background:#e74c3c14;border:1px solid rgba(231,76,60,.25)}.dialog-footer.svelte-1n78dcx{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 20px 16px;border-top:1px solid var(--border);flex-shrink:0}.footer-right.svelte-1n78dcx{display:flex;align-items:center;gap:10px}.save-success.svelte-1n78dcx{font-size:.82rem;color:var(--accent)}.btn.svelte-1n78dcx{padding:7px 16px;border-radius:4px;font-size:.88rem;cursor:pointer;border:1px solid transparent;font-weight:500;line-height:1.4}.btn.svelte-1n78dcx:disabled{opacity:.6;cursor:not-allowed}.btn-primary.svelte-1n78dcx{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary.svelte-1n78dcx:hover:not(:disabled){opacity:.88}.btn-danger.svelte-1n78dcx{background:transparent;color:#c0392b;border-color:#c0392b66}.btn-danger.svelte-1n78dcx:hover{background:#c0392b1a;border-color:#c0392b}.main-app.svelte-13zv0lp{display:flex;flex-direction:row;width:100%;height:100vh;height:100dvh;overflow:hidden}.sidebar-overlay.svelte-13zv0lp{display:none}.terminal-area.svelte-13zv0lp{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden;position:relative}@media(max-width:600px){.main-app.svelte-13zv0lp{position:fixed;top:0;right:0;bottom:0;left:0;width:100%}.sidebar-overlay.svelte-13zv0lp{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:99}.terminal-area.svelte-13zv0lp{width:100%}}:root{--bg: #000000;--surface: #0a0a0a;--surface-hover: #141414;--accent: #d97757;--text: #e0e0e0;--text-muted: #888888;--border: #333333;--status-success: #4ade80;--status-error: #f87171;--status-warning: #fbbf24;--status-merged: #a78bfa;--status-info: #60a5fa;--font-mono: "SF Mono", "Cascadia Code", "JetBrains Mono", "Fira Code", "Consolas", monospace;--font-size-xs: .75rem;--font-size-sm: .8125rem;--font-size-base: .875rem;--font-size-lg: 1rem;--sidebar-width: 240px;--toolbar-height: auto;--card-bg: #252525;--success: #4caf50;--error: #e57373;--warning: #ffb74d;--info: #64b5f6;--diff-add: #4caf50;--diff-remove: #e57373;--code-font: "SF Mono", "Cascadia Code", "Fira Code", monospace;--radius-sm: 4px;--radius-md: 8px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px}[hidden]{display:none!important}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}dialog{margin:auto}html,body{height:100%;overflow:hidden;overscroll-behavior:none;background:var(--bg);color:var(--text);font-family:var(--font-mono);font-size:var(--font-size-base);color-scheme:dark}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}
|
|
32
|
+
*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.terminal-wrapper.svelte-5qgfij{display:flex;flex:1;min-height:0;position:relative;overflow:hidden}.terminal-container.svelte-5qgfij{flex:1;min-width:0;min-height:0;overflow:hidden;padding:4px}.terminal-wrapper.drag-over.svelte-5qgfij{outline:2px dashed var(--accent);outline-offset:-2px}.terminal-scrollbar.svelte-5qgfij{width:8px;background:transparent;position:relative;flex-shrink:0}.terminal-scrollbar-thumb.svelte-5qgfij{position:absolute;right:0;width:6px;background:var(--border);border-radius:3px;cursor:pointer}@media(hover:none){.terminal-wrapper.selection-mode.svelte-5qgfij .terminal-container:where(.svelte-5qgfij){outline:2px solid var(--accent);outline-offset:-2px}.terminal-container.svelte-5qgfij{touch-action:none}.terminal-scrollbar.svelte-5qgfij{width:12px}.terminal-scrollbar-thumb.svelte-5qgfij{width:8px;min-height:44px}.scroll-fabs.svelte-5qgfij{position:absolute;right:16px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:12px;z-index:1;opacity:.6;pointer-events:auto}.scroll-fab.svelte-5qgfij{width:44px;height:44px;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none}.scroll-fab.svelte-5qgfij:active{opacity:1;background:var(--border)}.scroll-fab-bottom.svelte-5qgfij{margin-top:4px}}.user-message.svelte-1q16011{border-left:3px solid var(--accent);padding:var(--spacing-sm) var(--spacing-md);margin:var(--spacing-xs) 0;width:100%}.user-message-text.svelte-1q16011{color:var(--text);font-size:.95rem;white-space:pre-wrap;word-break:break-word}.agent-message.svelte-1r3r7jb{padding:var(--spacing-sm) var(--spacing-md);margin:var(--spacing-xs) 0;width:100%;color:var(--text);font-size:.95rem;line-height:1.5;word-break:break-word}.agent-message.svelte-1r3r7jb .code-block{background:var(--card-bg);border-radius:var(--radius-sm);padding:var(--spacing-sm) var(--spacing-md);overflow-x:auto;font-family:var(--code-font);font-size:.85rem;margin:var(--spacing-sm) 0;white-space:pre}.agent-message.svelte-1r3r7jb .inline-code{background:var(--card-bg);border-radius:var(--radius-sm);padding:1px 4px;font-family:var(--code-font);font-size:.88em}.agent-message.svelte-1r3r7jb a{color:var(--info);text-decoration:underline}.agent-message.svelte-1r3r7jb strong{color:var(--text);font-weight:600}.agent-message.svelte-1r3r7jb em{font-style:italic}.agent-message.svelte-1r3r7jb .md-heading{font-weight:600;margin:var(--spacing-sm) 0 var(--spacing-xs);line-height:1.3}.agent-message.svelte-1r3r7jb h1.md-heading{font-size:1.3em}.agent-message.svelte-1r3r7jb h2.md-heading{font-size:1.15em}.agent-message.svelte-1r3r7jb h3.md-heading{font-size:1.05em}.agent-message.svelte-1r3r7jb .md-ul{margin:var(--spacing-xs) 0;padding-left:1.5em;list-style:disc}.agent-message.svelte-1r3r7jb .md-li{margin:2px 0}.agent-message.svelte-1r3r7jb .md-hr{border:none;border-top:1px solid var(--border);margin:var(--spacing-sm) 0}.file-change-card.svelte-649juz{display:flex;align-items:center;gap:var(--spacing-sm);background:var(--card-bg);border-radius:var(--radius-sm);padding:var(--spacing-sm) var(--spacing-md);margin:var(--spacing-xs) 0;font-family:var(--code-font);font-size:.85rem;width:100%;min-width:0}.file-icon.svelte-649juz{flex-shrink:0;font-size:.9rem}.file-path.svelte-649juz{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.file-dir.svelte-649juz{color:var(--text-muted)}.file-name.svelte-649juz{color:var(--text)}.diff-stats.svelte-649juz{flex-shrink:0;display:flex;gap:var(--spacing-sm);font-weight:600}.diff-add.svelte-649juz{color:var(--diff-add)}.diff-remove.svelte-649juz{color:var(--diff-remove)}.tool-call-card.svelte-9tdk1v{background:var(--card-bg);border-radius:var(--radius-sm);margin:var(--spacing-xs) 0;overflow:hidden;width:100%}.tool-header.svelte-9tdk1v{display:flex;align-items:center;gap:var(--spacing-sm);width:100%;min-height:44px;padding:var(--spacing-sm) var(--spacing-md);background:none;border:none;color:var(--text);cursor:pointer;font-size:.85rem;text-align:left}.tool-name.svelte-9tdk1v{font-family:var(--code-font);font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-status.svelte-9tdk1v{flex-shrink:0;font-size:.75rem;padding:1px 6px;border-radius:var(--radius-sm);font-weight:600;text-transform:uppercase}.status-success.svelte-9tdk1v{background:var(--success);color:#fff}.status-error.svelte-9tdk1v{background:var(--error);color:#fff}.status-pending.svelte-9tdk1v{background:var(--warning);color:#000}.toggle-icon.svelte-9tdk1v{flex-shrink:0;font-size:.7rem;color:var(--text-muted)}.tool-input.svelte-9tdk1v{padding:var(--spacing-sm) var(--spacing-md);background:var(--bg);font-family:var(--code-font);font-size:.8rem;color:var(--text-muted);overflow-x:auto;white-space:pre-wrap;word-break:break-all;margin:0;border-top:1px solid var(--border)}.reasoning-panel.svelte-fizs81{margin:var(--spacing-xs) 0;border-radius:var(--radius-sm);overflow:hidden;width:100%}.reasoning-header.svelte-fizs81{display:flex;align-items:center;gap:var(--spacing-sm);width:100%;min-height:44px;padding:var(--spacing-xs) var(--spacing-md);background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:.85rem;text-align:left}.reasoning-label.svelte-fizs81{flex:1;font-style:italic}.dots.svelte-fizs81{animation:svelte-fizs81-pulse 1.5s ease-in-out infinite}@keyframes svelte-fizs81-pulse{0%,to{opacity:1}50%{opacity:.3}}.toggle-icon.svelte-fizs81{flex-shrink:0;font-size:.7rem}.reasoning-content.svelte-fizs81{padding:var(--spacing-sm) var(--spacing-md);color:var(--text-muted);font-family:var(--code-font);font-size:.82rem;line-height:1.5;white-space:pre-wrap;word-break:break-word}.error-card.svelte-au1iu7{border-left:3px solid var(--error);background:var(--card-bg);border-radius:var(--radius-sm);padding:var(--spacing-sm) var(--spacing-md);margin:var(--spacing-xs) 0;width:100%}.error-body.svelte-au1iu7{display:flex;align-items:flex-start;gap:var(--spacing-sm)}.error-text.svelte-au1iu7{flex:1;color:var(--error);font-size:.9rem;word-break:break-word}.dismiss-btn.svelte-au1iu7{flex-shrink:0;background:none;border:none;color:var(--text-muted);font-size:1.2rem;cursor:pointer;padding:0;line-height:1}.dismiss-btn.svelte-au1iu7:hover{color:var(--text)}.retry-btn.svelte-au1iu7{margin-top:var(--spacing-sm);background:none;border:1px solid var(--error);color:var(--error);border-radius:var(--radius-sm);padding:var(--spacing-xs) var(--spacing-md);font-size:.82rem;cursor:pointer;font-family:var(--code-font)}.retry-btn.svelte-au1iu7:hover{background:var(--error);color:#fff}.turn-completed.svelte-1q2w5up{display:flex;align-items:center;gap:var(--spacing-sm);margin:var(--spacing-sm) 0;width:100%}.separator-line.svelte-1q2w5up{flex:1;height:1px;background:var(--border)}.usage-info.svelte-1q2w5up{flex-shrink:0;color:var(--text-muted);font-size:.75rem;font-family:var(--code-font);padding:0 var(--spacing-sm)}.chat-view.svelte-o5aojg{flex:1;padding:var(--spacing-sm)}.empty-state.svelte-o5aojg{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-muted);font-size:.95rem;gap:var(--spacing-sm)}.cursor-blink.svelte-o5aojg{font-family:var(--code-font);font-size:1.2rem;animation:svelte-o5aojg-blink 1s step-end infinite}@keyframes svelte-o5aojg-blink{0%,to{opacity:1}50%{opacity:0}}.message-list.svelte-o5aojg{display:flex;flex-direction:column;gap:var(--spacing-xs)}.session-started.svelte-o5aojg{padding:var(--spacing-sm) var(--spacing-md);text-align:center}.session-started-text.svelte-o5aojg{color:var(--text-muted);font-size:.82rem;font-style:italic}.working-indicator.svelte-o5aojg{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md)}.working-dot.svelte-o5aojg{color:var(--accent);font-size:.7rem;animation:svelte-o5aojg-pulse-dot 1.5s ease-in-out infinite}@keyframes svelte-o5aojg-pulse-dot{0%,to{opacity:1}50%{opacity:.3}}.working-text.svelte-o5aojg{color:var(--text-muted);font-size:.85rem}.chat-input-container.svelte-mnrni5{display:flex;align-items:flex-end;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--surface);border-top:1px solid var(--border);position:sticky;bottom:0}.chat-textarea.svelte-mnrni5{flex:1;background:var(--surface);border:none;color:var(--text);font-size:.95rem;font-family:inherit;resize:none;outline:none;padding:var(--spacing-sm);min-height:36px;max-height:120px;line-height:1.4}.chat-textarea.svelte-mnrni5::placeholder{color:var(--text-muted)}.chat-textarea.svelte-mnrni5:disabled{opacity:.5}.send-btn.svelte-mnrni5{flex-shrink:0;width:44px;height:44px;border-radius:50%;border:none;background:var(--accent);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:opacity .15s}.send-btn.disabled.svelte-mnrni5{opacity:.4;cursor:default}.send-btn.svelte-mnrni5:not(.disabled):hover{opacity:.9}.send-dots.svelte-mnrni5{font-size:1.1rem;letter-spacing:1px}.send-icon.svelte-mnrni5{display:block}.quick-replies.svelte-2y5bi6{display:flex;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-md);overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.quick-replies.svelte-2y5bi6::-webkit-scrollbar{display:none}.quick-reply-btn.svelte-2y5bi6{flex-shrink:0;height:40px;padding:0 var(--spacing-md);background:none;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--code-font);font-size:.82rem;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}.quick-reply-btn.svelte-2y5bi6:hover{background:var(--surface);border-color:var(--accent)}.quick-reply-btn.svelte-2y5bi6:active{background:var(--card-bg)}.permission-card.svelte-1amwf6m{border-left:3px solid var(--accent);background:var(--card-bg);border-radius:var(--radius-sm);padding:var(--spacing-md);flex-shrink:0;width:100%}.permission-card.resolved.svelte-1amwf6m{opacity:.7}.permission-card.timed_out.svelte-1amwf6m{border-left-color:var(--text-muted);opacity:.5}.permission-header.svelte-1amwf6m{margin-bottom:var(--spacing-sm)}.permission-tool.svelte-1amwf6m{font-family:var(--code-font);font-size:.88rem;color:var(--text);word-break:break-all}.permission-actions.svelte-1amwf6m{display:flex;gap:var(--spacing-sm)}.approve-btn.svelte-1amwf6m,.deny-btn.svelte-1amwf6m{flex:1;height:48px;border-radius:var(--radius-sm);font-size:.95rem;font-weight:600;cursor:pointer;border:none}.approve-btn.svelte-1amwf6m{background:var(--success);color:#fff}.approve-btn.svelte-1amwf6m:hover{opacity:.9}.deny-btn.svelte-1amwf6m{background:none;border:1px solid var(--error);color:var(--error)}.deny-btn.svelte-1amwf6m:hover{background:var(--error);color:#fff}.permission-badge.svelte-1amwf6m{font-size:.85rem;font-weight:600;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);display:inline-block}.badge-approved.svelte-1amwf6m{color:var(--success)}.badge-denied.svelte-1amwf6m{color:var(--error)}.badge-timeout.svelte-1amwf6m{color:var(--text-muted)}.cost-display.svelte-p9ddlc{color:var(--text-muted);font-size:.75rem;font-family:var(--code-font);text-align:center;padding:var(--spacing-xs) var(--spacing-md)}.session-view.svelte-oor1t0{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.fallback-banner.svelte-oor1t0{background:var(--warning);color:#000;font-size:.82rem;font-weight:600;text-align:center;padding:var(--spacing-xs) var(--spacing-md)}.tab-bar.svelte-oor1t0{display:flex;border-bottom:1px solid var(--border);flex-shrink:0}.tab.svelte-oor1t0{flex:1;height:44px;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);font-size:.9rem;font-weight:600;cursor:pointer;transition:color .15s,border-color .15s}.tab.active.svelte-oor1t0{color:var(--text);border-bottom-color:var(--accent)}.tab.svelte-oor1t0:hover:not(.active){color:var(--text)}.tab-content.svelte-oor1t0{flex:1;display:flex;min-height:0;overflow:hidden}.tab-panel.svelte-oor1t0{flex-direction:column;flex:1;min-height:0;overflow:hidden}.chat-scroll-area.svelte-oor1t0{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}@keyframes svelte-oor1t0-spin{to{transform:rotate(360deg)}}.branch-switcher.svelte-1ogsozk{position:relative}.branch-trigger.svelte-1ogsozk{display:flex;align-items:center;gap:5px;background:none;border:none;color:var(--text);font-family:var(--font-mono);font-size:var(--font-size-sm);cursor:pointer;padding:4px 6px;border-radius:4px;transition:background .12s;white-space:nowrap;min-width:0}.branch-trigger.svelte-1ogsozk:hover{background:var(--surface-hover)}.branch-icon.svelte-1ogsozk{color:var(--text-muted);font-size:.9rem;flex-shrink:0}.branch-name.svelte-1ogsozk{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}.branch-caret.svelte-1ogsozk{flex-shrink:0;color:var(--text-muted);margin-left:1px}.branch-dropdown.svelte-1ogsozk{position:absolute;top:calc(100% + 4px);left:0;min-width:220px;max-width:340px;background:var(--surface);border:1px solid var(--border);border-radius:4px;z-index:200;overflow:hidden;box-shadow:0 4px 16px #00000080}.branch-filter-wrap.svelte-1ogsozk{padding:6px 6px 4px;border-bottom:1px solid var(--border)}.branch-filter.svelte-1ogsozk{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:3px;color:var(--text);font-family:var(--font-mono);font-size:var(--font-size-xs);padding:4px 8px;outline:none;box-sizing:border-box}.branch-filter.svelte-1ogsozk:focus{border-color:var(--accent)}.branch-error.svelte-1ogsozk{font-size:var(--font-size-xs);color:var(--status-error);padding:4px 10px}.branch-loading.svelte-1ogsozk,.branch-empty.svelte-1ogsozk{font-size:var(--font-size-xs);color:var(--text-muted);padding:8px 10px;font-style:italic}.branch-list.svelte-1ogsozk{list-style:none;margin:0;padding:4px 0;max-height:240px;overflow-y:auto}.branch-option.svelte-1ogsozk{display:flex;align-items:center;gap:6px;padding:5px 10px;font-size:var(--font-size-xs);cursor:pointer;white-space:nowrap;overflow:hidden;color:var(--text-muted);transition:background .1s,color .1s}.branch-option.svelte-1ogsozk:hover{background:var(--surface-hover);color:var(--text)}.branch-current.svelte-1ogsozk,.branch-current.svelte-1ogsozk:hover{color:var(--accent)}.branch-switching.svelte-1ogsozk{opacity:.6;pointer-events:none}.branch-check.svelte-1ogsozk{font-size:.65rem;width:10px;flex-shrink:0;color:var(--accent)}.branch-check--empty.svelte-1ogsozk{display:inline-block}.branch-option-name.svelte-1ogsozk{overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.branch-spinner.svelte-1ogsozk{color:var(--text-muted);font-size:var(--font-size-xs);flex-shrink:0}.pr-top-bar.svelte-1shtc4l{display:flex;align-items:center;height:36px;background:var(--surface);border-bottom:1px solid var(--border);padding:0 8px;gap:0;flex-shrink:0;overflow:hidden;font-family:var(--font-mono);font-size:var(--font-size-sm)}.bar-left.svelte-1shtc4l{display:flex;align-items:center;gap:4px;flex:1;min-width:0;overflow:hidden;padding-right:8px;border-right:1px solid var(--border)}.target-branch.svelte-1shtc4l{display:flex;align-items:center;gap:3px;color:var(--text-muted);font-size:var(--font-size-xs);flex-shrink:0;white-space:nowrap}.target-sep.svelte-1shtc4l{color:var(--border);font-size:.75rem}.target-name.svelte-1shtc4l{overflow:hidden;text-overflow:ellipsis;max-width:100px}.bar-middle.svelte-1shtc4l{display:flex;align-items:center;padding:0 12px;border-right:1px solid var(--border);flex-shrink:0;white-space:nowrap}.pr-link.svelte-1shtc4l{display:flex;align-items:center;gap:4px;color:var(--text-muted);text-decoration:none;font-size:var(--font-size-xs);transition:color .12s}.pr-link.svelte-1shtc4l:hover{color:var(--accent)}.pr-ext-icon.svelte-1shtc4l{flex-shrink:0;opacity:.6}.bar-right.svelte-1shtc4l{display:flex;align-items:center;padding-left:10px;flex-shrink:0}.bar-loading.svelte-1shtc4l{color:var(--text-muted);font-size:var(--font-size-xs);padding:0 4px}.action-btn.svelte-1shtc4l{display:inline-flex;align-items:center;justify-content:center;height:22px;padding:0 10px;border-radius:11px;border:none;background:var(--action-color, var(--border));color:#fff;font-family:var(--font-mono);font-size:var(--font-size-xs);font-weight:500;cursor:pointer;white-space:nowrap;transition:opacity .12s,filter .12s;letter-spacing:.01em}.action-btn.svelte-1shtc4l:hover:not(:disabled){filter:brightness(1.15)}.action-btn.svelte-1shtc4l:active:not(:disabled){filter:brightness(.9)}.action-btn--dark-text.svelte-1shtc4l{color:#000}.action-btn--disabled.svelte-1shtc4l{cursor:default;opacity:.7}.bar-merged.svelte-1shtc4l{background:color-mix(in srgb,var(--status-merged) 8%,var(--surface))}.bar-conflicts.svelte-1shtc4l{background:color-mix(in srgb,var(--status-error) 8%,var(--surface))}.diff-stats.svelte-1shtc4l{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:var(--font-size-xs);padding:0 8px;flex-shrink:0}.diff-add.svelte-1shtc4l{color:var(--status-success)}.diff-del.svelte-1shtc4l{color:var(--status-error)}.action-btn--secondary.svelte-1shtc4l{background:var(--border)!important;color:var(--text)!important;margin-right:6px}@media(max-width:600px){.target-branch.svelte-1shtc4l,.bar-middle.svelte-1shtc4l,.diff-stats.svelte-1shtc4l{display:none}.bar-left.svelte-1shtc4l{border-right:none;padding-right:4px}}.session-tab-bar.svelte-3dfyyn{display:flex;align-items:stretch;height:32px;background:var(--bg);border-bottom:1px solid var(--border);flex-shrink:0;font-family:var(--font-mono);font-size:var(--font-size-xs)}.tabs-scroll.svelte-3dfyyn{display:flex;align-items:stretch;overflow-x:auto;overflow-y:hidden;flex:1;min-width:0;scrollbar-width:none}.tabs-scroll.svelte-3dfyyn::-webkit-scrollbar{display:none}.tab.svelte-3dfyyn{display:inline-flex;align-items:center;gap:5px;height:32px;padding:0 10px;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--text-muted);font-family:var(--font-mono);font-size:var(--font-size-xs);cursor:pointer;white-space:nowrap;flex-shrink:0;position:relative;transition:color .12s,background .12s;border-radius:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.tab.svelte-3dfyyn:hover{color:var(--text);background:var(--surface-hover)}.tab--active.svelte-3dfyyn{background:var(--surface);color:var(--text);border-bottom-color:var(--accent)}.tab--active.svelte-3dfyyn:hover{background:var(--surface)}.tab-icon.svelte-3dfyyn{font-size:.7rem;line-height:1;flex-shrink:0}.tab-name.svelte-3dfyyn{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab-close.svelte-3dfyyn{font-size:var(--font-size-xs);color:var(--text-muted);cursor:pointer;line-height:1;flex-shrink:0;border-radius:3px;width:14px;height:14px;display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity .1s,color .1s,background .1s}.tab.svelte-3dfyyn:hover .tab-close:where(.svelte-3dfyyn){opacity:1}.tab-close.svelte-3dfyyn:hover{color:var(--text);background:var(--border)}.tab--active.svelte-3dfyyn .tab-close:where(.svelte-3dfyyn){opacity:0}.tab--active.svelte-3dfyyn:hover .tab-close:where(.svelte-3dfyyn){opacity:1}.new-btn-wrap.svelte-3dfyyn{position:relative;display:flex;align-items:center;flex-shrink:0;border-left:1px solid var(--border)}.tab-new.svelte-3dfyyn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:none;border:none;color:var(--text-muted);font-size:1rem;cursor:pointer;font-family:var(--font-mono);transition:color .12s,background .12s;-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:1}.tab-new.svelte-3dfyyn:hover{color:var(--text);background:var(--surface-hover)}.new-menu.svelte-3dfyyn{position:absolute;top:calc(100% + 2px);right:0;background:var(--surface);border:1px solid var(--border);border-radius:4px;z-index:200;min-width:180px;box-shadow:0 4px 16px #00000080;padding:4px 0}.new-menu-item.svelte-3dfyyn{display:flex;align-items:center;gap:8px;width:100%;padding:7px 12px;background:none;border:none;color:var(--text-muted);font-family:var(--font-mono);font-size:var(--font-size-xs);cursor:pointer;text-align:left;transition:background .1s,color .1s;-webkit-appearance:none;-moz-appearance:none;appearance:none;white-space:nowrap}.new-menu-item.svelte-3dfyyn:hover{background:var(--surface-hover);color:var(--text)}.new-menu-icon.svelte-3dfyyn{font-size:.75rem;flex-shrink:0}@media(max-width:600px){.session-tab-bar.svelte-3dfyyn{height:44px}.tab.svelte-3dfyyn{height:44px;padding:0 12px;min-width:44px}.tab-close.svelte-3dfyyn{opacity:1;width:18px;height:18px}.tab--active.svelte-3dfyyn .tab-close:where(.svelte-3dfyyn){opacity:1}.tab-new.svelte-3dfyyn{width:44px;height:44px}}.repo-dashboard.svelte-bvvs2r{display:flex;flex-direction:column;gap:20px;padding:20px;background:var(--bg);min-height:0;max-width:none}.dashboard-section.svelte-bvvs2r{display:flex;flex-direction:column;gap:8px}.section-heading.svelte-bvvs2r{font-size:var(--font-size-sm);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);padding-bottom:6px;border-bottom:1px solid var(--border)}.section-message.svelte-bvvs2r{font-size:var(--font-size-sm);font-family:var(--font-mono);color:var(--text-muted);padding:6px 0}.section-message.info.svelte-bvvs2r a:where(.svelte-bvvs2r){color:var(--accent);text-decoration:none}.section-message.info.svelte-bvvs2r a:where(.svelte-bvvs2r):hover{text-decoration:underline}.pr-list.svelte-bvvs2r{display:flex;flex-direction:column;gap:0;border:1px solid var(--border);border-radius:4px;overflow:hidden}.pr-row.svelte-bvvs2r{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid var(--border)}.pr-row.svelte-bvvs2r:last-child{border-bottom:none}.pr-row-left.svelte-bvvs2r{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.pr-row-title-line.svelte-bvvs2r{display:flex;align-items:center;gap:8px;min-width:0}.pr-title-link.svelte-bvvs2r{font-size:var(--font-size-sm);font-family:var(--font-mono);color:var(--text);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}.pr-title-link.svelte-bvvs2r:hover{color:var(--accent);text-decoration:underline}.pr-row-actions.svelte-bvvs2r{display:flex;align-items:center;gap:8px;flex-shrink:0}.pr-conflict-pill.svelte-bvvs2r{--pill-color: var(--status-error);font-weight:600}.pr-merge-pill.svelte-bvvs2r{--pill-color: var(--status-success);color:#1a1a1a;font-weight:600}.pr-row-meta.svelte-bvvs2r{display:flex;align-items:center;gap:4px;font-size:var(--font-size-xs);font-family:var(--font-mono);color:var(--text-muted)}.pr-sep.svelte-bvvs2r{opacity:.4}.dot.svelte-bvvs2r{width:7px;height:7px;border-radius:50%;flex-shrink:0;display:inline-block}.dot-success.svelte-bvvs2r{background:var(--status-success)}.dot-error.svelte-bvvs2r{background:var(--status-error)}.dot-warning.svelte-bvvs2r{background:var(--status-warning)}.dot-muted.svelte-bvvs2r{background:var(--border)}.pr-action-pill.svelte-bvvs2r{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:6px 12px;min-height:32px;border-radius:20px;border:none;background:var(--pill-color, var(--border));font-size:var(--font-size-xs);font-family:var(--font-mono);color:#fff;text-decoration:none;white-space:nowrap;transition:opacity .12s}.pr-action-pill.svelte-bvvs2r:hover{opacity:.85}.pr-action-pill.dark-text.svelte-bvvs2r{color:#1a1a1a}.activity-list.svelte-bvvs2r{display:flex;flex-direction:column;gap:4px}.activity-row.svelte-bvvs2r{display:flex;align-items:baseline;gap:8px;font-size:var(--font-size-xs);font-family:var(--font-mono);min-width:0}.commit-hash.svelte-bvvs2r{color:var(--text-muted);flex-shrink:0;letter-spacing:.02em}.commit-msg.svelte-bvvs2r{color:var(--text);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.commit-branch.svelte-bvvs2r{color:var(--text-muted);flex-shrink:0;white-space:nowrap}.commit-time.svelte-bvvs2r{color:var(--text-muted);flex-shrink:0;white-space:nowrap;opacity:.6}.non-git-notice.svelte-bvvs2r{padding:8px 0}.non-git-msg.svelte-bvvs2r{font-size:var(--font-size-sm);font-family:var(--font-mono);color:var(--text-muted)}.cta-row.svelte-bvvs2r{display:flex;align-items:center;gap:10px;padding-top:4px}.cta-btn.svelte-bvvs2r{display:inline-flex;align-items:center;justify-content:center;padding:10px 18px;min-height:40px;background:transparent;border:1px solid var(--accent);border-radius:4px;color:var(--accent);font-size:var(--font-size-sm);font-family:var(--font-mono);cursor:pointer;transition:background .12s,color .12s;white-space:nowrap}.cta-btn.svelte-bvvs2r:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}.skeleton.svelte-bvvs2r{pointer-events:none}.skeleton-line.svelte-bvvs2r{background:var(--border);border-radius:3px;animation:svelte-bvvs2r-skeleton-pulse 1.4s ease-in-out infinite}.skeleton-title.svelte-bvvs2r{height:13px;width:60%;margin-bottom:5px}.skeleton-meta.svelte-bvvs2r{height:10px;width:40%}.skeleton-activity.svelte-bvvs2r{height:12px;width:75%}@keyframes svelte-bvvs2r-skeleton-pulse{0%,to{opacity:.4}50%{opacity:.7}}@media(max-width:600px){.repo-dashboard.svelte-bvvs2r{padding:14px}.pr-row.svelte-bvvs2r{flex-wrap:wrap;gap:8px;padding:12px 10px;min-height:44px;align-items:flex-start}.pr-row-left.svelte-bvvs2r{width:100%}.pr-action-pill.svelte-bvvs2r{align-self:flex-end;margin-left:auto;padding:5px 12px;min-height:32px}.cta-btn.svelte-bvvs2r{flex:1;min-height:44px}}.empty-state.svelte-1luen49{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;max-width:320px;text-align:center;padding:32px 16px;flex:1;margin:0 auto}.empty-icon.svelte-1luen49{font-size:2rem;line-height:1;color:var(--text-muted);opacity:.5}.empty-heading.svelte-1luen49{font-size:var(--font-size-lg);font-family:var(--font-mono);color:var(--text);font-weight:600;line-height:1.3}.empty-description.svelte-1luen49{font-size:var(--font-size-sm);font-family:var(--font-mono);color:var(--text-muted);line-height:1.5}.empty-action.svelte-1luen49{display:inline-flex;align-items:center;justify-content:center;padding:10px 18px;min-height:40px;background:transparent;border:1px solid var(--accent);border-radius:4px;color:var(--accent);font-size:var(--font-size-sm);font-family:var(--font-mono);cursor:pointer;margin-top:4px;transition:background .12s,color .12s;white-space:nowrap}.empty-action.svelte-1luen49:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}.toolbar.svelte-k7we1m{background:var(--surface);border-top:1px solid var(--border);padding:4px;padding-bottom:calc(4px + env(safe-area-inset-bottom,0px));flex-shrink:0}.toolbar-grid.svelte-k7we1m{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}.tb-btn.svelte-k7we1m{background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.85rem;padding:8px 4px;cursor:pointer;touch-action:manipulation;min-height:40px;display:flex;align-items:center;justify-content:center;user-select:none;-webkit-user-select:none}.tb-btn.svelte-k7we1m:active{background:var(--border)}.tb-enter.svelte-k7we1m{background:var(--accent);border-color:var(--accent);color:#fff}.tb-enter.svelte-k7we1m:active{opacity:.8}.mobile-header.svelte-wp0i5g{display:none;align-items:center;gap:8px;padding:8px 12px;background:var(--surface);border-bottom:1px solid var(--border);min-height:44px;flex-shrink:0}@media(max-width:768px){.mobile-header.svelte-wp0i5g{display:flex}.mobile-header.hidden.svelte-wp0i5g{display:none}}.mobile-title.svelte-wp0i5g{font-size:.95rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.icon-btn.svelte-wp0i5g{background:none;border:none;color:var(--text);font-size:1.2rem;cursor:pointer;padding:6px;min-width:36px;min-height:36px;display:flex;align-items:center;justify-content:center;border-radius:6px;touch-action:manipulation}.icon-btn.svelte-wp0i5g:hover{background:var(--border)}.update-toast.svelte-1trivgv{position:fixed;bottom:0;left:0;right:0;z-index:150;display:flex;justify-content:center;padding:12px 12px calc(12px + env(safe-area-inset-bottom));pointer-events:none;animation:svelte-1trivgv-toast-slide-up .25s ease-out}@keyframes svelte-1trivgv-toast-slide-up{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.update-toast-content.svelte-1trivgv{display:flex;flex-direction:row;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px 16px;max-width:500px;box-shadow:0 4px 16px #0000004d;pointer-events:auto}.update-toast-text.svelte-1trivgv{flex:1;font-size:.85rem;color:var(--text)}.update-toast-actions.svelte-1trivgv{display:flex;gap:8px;flex-shrink:0}.update-toast-btn.svelte-1trivgv{padding:8px 14px;border-radius:6px;font-size:.8rem;border:none;background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap}.update-toast-btn.svelte-1trivgv:disabled{opacity:.6;cursor:not-allowed}.update-toast-dismiss.svelte-1trivgv{background:none;border:none;color:var(--text-muted);font-size:1.2rem;padding:4px 6px;cursor:pointer}.update-toast-dismiss.svelte-1trivgv:hover{color:var(--text)}.image-toast.svelte-1y8sviv{position:fixed;bottom:60px;left:50%;transform:translate(-50%);z-index:1000;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px 14px;color:var(--text);font-size:13px;max-width:90vw;box-shadow:0 4px 12px #0006}.image-toast-content.svelte-1y8sviv{display:flex;align-items:center;gap:10px}.image-toast-text.svelte-1y8sviv{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60vw}.image-toast-actions.svelte-1y8sviv{display:flex;gap:6px;align-items:center;flex-shrink:0}.image-toast-insert.svelte-1y8sviv{background:var(--accent);color:#fff;border:none;border-radius:4px;padding:4px 10px;font-size:12px;cursor:pointer}.image-toast-insert.svelte-1y8sviv:active{opacity:.8}.image-toast-dismiss.svelte-1y8sviv{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:16px;padding:2px 6px}.image-toast-dismiss.svelte-1y8sviv:hover{color:var(--text)}.dialog.svelte-thtd9b{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:0;width:min(480px,95vw);max-height:90vh;overflow:hidden}.dialog.svelte-thtd9b::backdrop{background:#0009}.dialog-content.svelte-thtd9b{display:flex;flex-direction:column;max-height:90vh;overflow:hidden}.dialog-title.svelte-thtd9b{font-size:1.1rem;font-weight:600;padding:16px 20px 12px;margin:0;border-bottom:1px solid var(--border);flex-shrink:0}.dialog-title-repo.svelte-thtd9b{font-weight:400;color:var(--text-muted);font-size:1rem}.dialog-tabs.svelte-thtd9b{display:flex;border-bottom:1px solid var(--border);flex-shrink:0}.dialog-tab.svelte-thtd9b{flex:1;padding:10px;background:none;border:none;color:var(--text-muted);font-size:.9rem;cursor:pointer;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.dialog-tab.active.svelte-thtd9b{color:var(--accent);border-bottom-color:var(--accent)}.dialog-tab.svelte-thtd9b:hover:not(.active){color:var(--text)}.dialog-body.svelte-thtd9b{padding:16px 20px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:14px}.dialog-field.svelte-thtd9b{display:flex;flex-direction:column;gap:5px}.dialog-field--inline.svelte-thtd9b{flex-direction:row;align-items:center;gap:8px}.dialog-label.svelte-thtd9b{font-size:.85rem;color:var(--text-muted)}.dialog-label-row.svelte-thtd9b{display:flex;align-items:center;justify-content:space-between;gap:10px}.dialog-label-inline.svelte-thtd9b{font-size:.9rem;cursor:pointer}.dialog-select.svelte-thtd9b,.dialog-input.svelte-thtd9b{background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.9rem;padding:7px 10px;width:100%;box-sizing:border-box}.dialog-select.svelte-thtd9b:disabled{opacity:.5;cursor:not-allowed}.dialog-checkbox.svelte-thtd9b{width:16px;height:16px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.branch-input-wrap.svelte-thtd9b{position:relative}.branch-refresh.svelte-thtd9b{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text-muted);cursor:pointer;transition:color .15s,border-color .15s,background .15s}.branch-refresh.svelte-thtd9b:hover:not(:disabled){color:var(--accent);border-color:var(--accent)}.branch-refresh.svelte-thtd9b:disabled{opacity:.5;cursor:not-allowed}.branch-refresh.svelte-thtd9b svg:where(.svelte-thtd9b){width:15px;height:15px}.branch-dropdown.svelte-thtd9b{position:absolute;top:calc(100% + 2px);left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:6px;list-style:none;margin:0;padding:4px 0;z-index:100;max-height:180px;overflow-y:auto}.branch-dropdown.svelte-thtd9b li:where(.svelte-thtd9b){padding:7px 12px;font-size:.9rem;cursor:pointer}.branch-dropdown.svelte-thtd9b li:where(.svelte-thtd9b):hover{background:var(--border)}.branch-create-new.svelte-thtd9b{color:var(--accent);border-bottom:1px solid var(--border)}.dialog-footer.svelte-thtd9b{display:flex;justify-content:flex-end;gap:10px;padding:12px 20px 16px;border-top:1px solid var(--border);flex-shrink:0}.btn.svelte-thtd9b{padding:8px 18px;border-radius:6px;font-size:.9rem;cursor:pointer;border:1px solid transparent;font-weight:500;transition:opacity .15s}.btn.svelte-thtd9b:disabled{opacity:.4;cursor:not-allowed}.btn-primary.svelte-thtd9b{background:var(--accent);color:#fff}.btn-primary.svelte-thtd9b:hover:not(:disabled){opacity:.9}.btn-ghost.svelte-thtd9b{background:transparent;color:var(--text-muted);border-color:var(--border)}.btn-ghost.svelte-thtd9b:hover{background:var(--border);color:var(--text)}.spinning.svelte-thtd9b{animation:svelte-thtd9b-spin 1s linear infinite;transform-origin:center}@keyframes svelte-thtd9b-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.dialog.svelte-fdtoa4{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:0;width:min(460px,95vw);max-height:90vh;overflow:hidden}.dialog.svelte-fdtoa4::backdrop{background:#0009}.dialog-content.svelte-fdtoa4{display:flex;flex-direction:column;max-height:90vh;overflow:hidden}.dialog-header.svelte-fdtoa4{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.dialog-title.svelte-fdtoa4{font-size:1.1rem;font-weight:600;margin:0}.close-btn.svelte-fdtoa4{background:none;border:none;color:var(--text-muted);font-size:1rem;cursor:pointer;padding:4px 6px;border-radius:4px}.close-btn.svelte-fdtoa4:hover{background:var(--border);color:var(--text)}.dialog-body.svelte-fdtoa4{padding:16px 20px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:20px}.settings-section.svelte-fdtoa4{display:flex;flex-direction:column;gap:10px}.section-title.svelte-fdtoa4{font-size:.9rem;font-weight:600;color:var(--text);margin:0}.section-desc.svelte-fdtoa4{font-size:.82rem;color:var(--text-muted);margin:0}.error-msg.svelte-fdtoa4{font-size:.82rem;color:#e74c3c;margin:0}.agent-select.svelte-fdtoa4{background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.9rem;padding:7px 10px;width:100%;box-sizing:border-box}.devtools-row.svelte-fdtoa4{display:flex;align-items:center;gap:8px}.dialog-checkbox.svelte-fdtoa4{width:16px;height:16px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.devtools-label.svelte-fdtoa4{font-size:.9rem;cursor:pointer}.dialog-footer.svelte-fdtoa4{display:flex;justify-content:flex-end;gap:10px;padding:12px 20px 16px;border-top:1px solid var(--border);flex-shrink:0}.btn.svelte-fdtoa4{padding:8px 18px;border-radius:6px;font-size:.9rem;cursor:pointer;border:1px solid transparent;font-weight:500}.btn-primary.svelte-fdtoa4{background:var(--accent);color:#fff;flex-shrink:0}.btn-primary.svelte-fdtoa4:hover{opacity:.9}.btn-ghost.svelte-fdtoa4{background:transparent;color:var(--text-muted);border-color:var(--border)}.btn-ghost.svelte-fdtoa4:hover{background:var(--border);color:var(--text)}.btn-sm.svelte-fdtoa4{padding:5px 12px;font-size:.8rem}.version-row.svelte-fdtoa4{display:flex;align-items:center;gap:10px}.version-current.svelte-fdtoa4{font-size:.9rem;font-family:monospace;color:var(--text)}.version-status.svelte-fdtoa4{font-size:.8rem;color:var(--text-muted)}.version-update-row.svelte-fdtoa4{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:8px 10px}.version-update-text.svelte-fdtoa4{font-size:.85rem;color:var(--accent)}.version-status-msg.svelte-fdtoa4{font-size:.82rem;color:var(--text-muted);margin:0}.dialog.svelte-15sco2n{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:0;width:min(400px,95vw);overflow:hidden}.dialog.svelte-15sco2n::backdrop{background:#0009}.dialog-content.svelte-15sco2n{display:flex;flex-direction:column}.dialog-title.svelte-15sco2n{font-size:1.1rem;font-weight:600;padding:16px 20px 12px;margin:0;border-bottom:1px solid var(--border)}.dialog-body.svelte-15sco2n{padding:16px 20px;display:flex;flex-direction:column;gap:8px}.confirm-msg.svelte-15sco2n{font-size:.95rem;margin:0;line-height:1.5}.wt-name.svelte-15sco2n{color:var(--text)}.wt-path.svelte-15sco2n{font-size:.82rem;color:var(--text-muted);font-family:monospace;margin:0;word-break:break-all}.warning-msg.svelte-15sco2n{font-size:.82rem;color:#e74c3c;margin:0}.error-msg.svelte-15sco2n{font-size:.85rem;color:#e74c3c;margin:0;padding:8px 10px;background:#e74c3c1a;border-radius:6px;border:1px solid rgba(231,76,60,.3)}.dialog-footer.svelte-15sco2n{display:flex;justify-content:flex-end;gap:10px;padding:12px 20px 16px;border-top:1px solid var(--border)}.btn.svelte-15sco2n{padding:8px 18px;border-radius:6px;font-size:.9rem;cursor:pointer;border:1px solid transparent;font-weight:500}.btn.svelte-15sco2n:disabled{opacity:.4;cursor:not-allowed}.btn-danger.svelte-15sco2n{background:#e74c3c;color:#fff}.btn-danger.svelte-15sco2n:hover:not(:disabled){opacity:.9}.btn-ghost.svelte-15sco2n{background:transparent;color:var(--text-muted);border-color:var(--border)}.btn-ghost.svelte-15sco2n:hover:not(:disabled){background:var(--border);color:var(--text)}.file-browser.svelte-15gfcbp{display:flex;flex-direction:column;gap:8px}.filter-row.svelte-15gfcbp{display:flex;gap:8px}.filter-input.svelte-15gfcbp{flex:1;background:var(--bg);border:1px solid var(--border);border-radius:0;color:var(--text);font-family:var(--font-mono);font-size:var(--font-size-sm);padding:8px 10px;outline:none}.filter-input.svelte-15gfcbp:focus{border-color:var(--accent)}.filter-input.svelte-15gfcbp::placeholder{color:var(--text-muted);opacity:.5}.tree-container.svelte-15gfcbp{background:var(--bg);border:1px solid var(--border);max-height:50vh;overflow-y:auto;outline:none}.tree-container.svelte-15gfcbp:focus-visible{border-color:var(--accent)}.loading-placeholder.svelte-15gfcbp,.empty-placeholder.svelte-15gfcbp{padding:20px 16px;color:var(--text-muted);font-family:var(--font-mono);font-size:var(--font-size-sm);text-align:center}.tree-row.svelte-15gfcbp{display:flex;align-items:center;gap:6px;padding-top:4px;padding-bottom:4px;padding-right:12px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .1s;min-height:32px}.tree-row.svelte-15gfcbp:hover{background:var(--border)}.tree-row.focused.svelte-15gfcbp{outline:2px solid var(--accent);outline-offset:-2px}.tree-row.selected.svelte-15gfcbp{background:color-mix(in srgb,var(--accent) 10%,transparent)}.expand-btn.svelte-15gfcbp{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:2px;width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:10px;border-radius:2px}.expand-btn.svelte-15gfcbp:hover{background:var(--surface);color:var(--text)}.expand-spacer.svelte-15gfcbp{width:18px;flex-shrink:0}.arrow.svelte-15gfcbp{display:inline-block;transition:transform .15s}.arrow.expanded.svelte-15gfcbp{transform:rotate(90deg)}.spinner.svelte-15gfcbp{animation:svelte-15gfcbp-blink 1s infinite;font-size:10px}@keyframes svelte-15gfcbp-blink{0%,to{opacity:1}50%{opacity:.3}}.node-checkbox.svelte-15gfcbp{width:14px;height:14px;accent-color:var(--accent);cursor:pointer;flex-shrink:0;margin:0}.node-name.svelte-15gfcbp{font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.git-badge.svelte-15gfcbp{font-family:var(--font-mono);font-size:10px;color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,transparent);padding:1px 5px;border-radius:3px;flex-shrink:0;text-transform:lowercase}.truncated-notice.svelte-15gfcbp{padding:8px 12px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted);border-top:1px solid var(--border);text-align:center}.dialog.svelte-4yj2yx{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:0;width:min(520px,95vw);max-height:85vh;overflow:hidden}.dialog.svelte-4yj2yx::backdrop{background:#000000b3}.dialog-content.svelte-4yj2yx{display:flex;flex-direction:column;max-height:85vh}.dialog-header.svelte-4yj2yx{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.dialog-title.svelte-4yj2yx{font-size:var(--font-size-lg, 1.1rem);font-weight:600;font-family:var(--font-mono, monospace);margin:0}.close-btn.svelte-4yj2yx{background:none;border:none;color:var(--text-muted);font-size:1rem;cursor:pointer;padding:4px 6px;border-radius:4px}.close-btn.svelte-4yj2yx:hover{background:var(--border);color:var(--text)}.dialog-body.svelte-4yj2yx{padding:16px 20px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:12px}.dialog-desc.svelte-4yj2yx{font-size:var(--font-size-sm, .85rem);color:var(--text-muted);font-family:var(--font-mono, monospace);margin:0;line-height:1.5}.error-msg.svelte-4yj2yx{font-size:var(--font-size-xs, .75rem);color:var(--status-error, #e57373);font-family:var(--font-mono, monospace);margin:0}.dialog-footer.svelte-4yj2yx{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 20px 16px;border-top:1px solid var(--border);flex-shrink:0}.selected-count.svelte-4yj2yx{font-size:var(--font-size-sm, .85rem);color:var(--text-muted);font-family:var(--font-mono, monospace)}.footer-actions.svelte-4yj2yx{display:flex;gap:10px}.btn.svelte-4yj2yx{padding:8px 18px;border-radius:0;font-size:var(--font-size-sm, .85rem);font-family:var(--font-mono, monospace);cursor:pointer;border:1px solid transparent;font-weight:500}.btn.svelte-4yj2yx:disabled{opacity:.5;cursor:not-allowed}.btn-primary.svelte-4yj2yx{background:var(--accent);color:#fff}.btn-primary.svelte-4yj2yx:hover:not(:disabled){opacity:.9}.btn-ghost.svelte-4yj2yx{background:transparent;color:var(--text-muted);border-color:var(--border)}.btn-ghost.svelte-4yj2yx:hover{background:var(--border);color:var(--text)}.dialog.svelte-1n78dcx{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:10px;padding:0;width:min(480px,95vw);max-height:90vh;overflow:hidden}.dialog.svelte-1n78dcx::backdrop{background:#0009}.dialog-content.svelte-1n78dcx{display:flex;flex-direction:column;max-height:90vh;overflow:hidden}.dialog-header.svelte-1n78dcx{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid var(--border);flex-shrink:0;gap:8px}.dialog-title.svelte-1n78dcx{font-size:1.05rem;font-weight:600;margin:0;display:flex;align-items:center;gap:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.gear-icon.svelte-1n78dcx{flex-shrink:0;color:var(--text-muted);font-size:1rem}.close-btn.svelte-1n78dcx{background:none;border:none;color:var(--text-muted);font-size:1rem;cursor:pointer;padding:4px 6px;border-radius:4px;flex-shrink:0;line-height:1}.close-btn.svelte-1n78dcx:hover{background:var(--border);color:var(--text)}.dialog-body.svelte-1n78dcx{padding:16px 20px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:16px}.settings-section.svelte-1n78dcx{display:flex;flex-direction:column;gap:10px}.section-label.svelte-1n78dcx{font-size:var(--font-size-xs, .72rem);font-weight:600;color:var(--text-muted);letter-spacing:.08em;margin:0 0 2px;text-transform:uppercase}.field-group.svelte-1n78dcx{display:flex;flex-direction:column;gap:4px}.field-label.svelte-1n78dcx{font-size:.82rem;color:var(--text-muted)}.field-input.svelte-1n78dcx{background:var(--bg);border:1px solid var(--border);border-radius:0;color:var(--text);font-family:var(--font-mono, monospace);font-size:.88rem;padding:6px 9px;width:100%;box-sizing:border-box;outline:none}.field-input.svelte-1n78dcx:focus{border-color:var(--accent)}.field-select.svelte-1n78dcx{background:var(--bg);border:1px solid var(--border);border-radius:0;color:var(--text);font-family:var(--font-mono, monospace);font-size:.88rem;padding:6px 9px;width:100%;box-sizing:border-box;cursor:pointer;outline:none}.field-select.svelte-1n78dcx:focus{border-color:var(--accent)}.inline-row.svelte-1n78dcx{display:flex;align-items:center;gap:10px}.inline-row.svelte-1n78dcx .field-label:where(.svelte-1n78dcx){flex-shrink:0}.field-select-inline.svelte-1n78dcx{width:auto;flex:1;max-width:160px}.checkbox-row.svelte-1n78dcx{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.checkbox-label.svelte-1n78dcx{display:flex;align-items:center;gap:6px;font-size:.88rem;cursor:pointer;-webkit-user-select:none;user-select:none}.dialog-checkbox.svelte-1n78dcx{width:15px;height:15px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.divider.svelte-1n78dcx{height:1px;background:var(--border);margin:0 -20px}.prompt-group.svelte-1n78dcx{display:flex;flex-direction:column;gap:6px}.prompt-toggle.svelte-1n78dcx{background:none;border:none;color:var(--text);font-size:.88rem;cursor:pointer;padding:4px 0;text-align:left;display:flex;align-items:center;gap:6px;width:100%}.prompt-toggle.svelte-1n78dcx:hover{color:var(--accent)}.prompt-arrow.svelte-1n78dcx{color:var(--text-muted);font-size:.8rem;flex-shrink:0;width:10px}.prompt-textarea.svelte-1n78dcx{background:var(--bg);border:1px solid var(--border);border-radius:0;color:var(--text);font-family:var(--font-mono, monospace);font-size:.82rem;padding:8px 10px;width:100%;box-sizing:border-box;resize:vertical;line-height:1.5;outline:none}.prompt-textarea.svelte-1n78dcx:focus{border-color:var(--accent)}.error-msg.svelte-1n78dcx{font-size:.82rem;color:#e74c3c;margin:0;padding:6px 10px;background:#e74c3c14;border:1px solid rgba(231,76,60,.25)}.dialog-footer.svelte-1n78dcx{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 20px 16px;border-top:1px solid var(--border);flex-shrink:0}.footer-right.svelte-1n78dcx{display:flex;align-items:center;gap:10px}.save-success.svelte-1n78dcx{font-size:.82rem;color:var(--accent)}.btn.svelte-1n78dcx{padding:7px 16px;border-radius:4px;font-size:.88rem;cursor:pointer;border:1px solid transparent;font-weight:500;line-height:1.4}.btn.svelte-1n78dcx:disabled{opacity:.6;cursor:not-allowed}.btn-primary.svelte-1n78dcx{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-primary.svelte-1n78dcx:hover:not(:disabled){opacity:.88}.btn-danger.svelte-1n78dcx{background:transparent;color:#c0392b;border-color:#c0392b66}.btn-danger.svelte-1n78dcx:hover{background:#c0392b1a;border-color:#c0392b}.main-app.svelte-13zv0lp{display:flex;flex-direction:row;width:100%;height:100vh;height:100dvh;overflow:hidden}.sidebar-overlay.svelte-13zv0lp{display:none}.terminal-area.svelte-13zv0lp{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden;position:relative}@media(max-width:600px){.main-app.svelte-13zv0lp{position:fixed;top:0;right:0;bottom:0;left:0;width:100%}.sidebar-overlay.svelte-13zv0lp{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:99}.terminal-area.svelte-13zv0lp{width:100%}}:root{--bg: #000000;--surface: #0a0a0a;--surface-hover: #141414;--accent: #d97757;--text: #e0e0e0;--text-muted: #888888;--border: #333333;--status-success: #4ade80;--status-error: #f87171;--status-warning: #fbbf24;--status-merged: #a78bfa;--status-info: #60a5fa;--font-mono: "SF Mono", "Cascadia Code", "JetBrains Mono", "Fira Code", "Consolas", monospace;--font-size-xs: .75rem;--font-size-sm: .8125rem;--font-size-base: .875rem;--font-size-lg: 1rem;--sidebar-width: 240px;--toolbar-height: auto;--card-bg: #252525;--success: #4caf50;--error: #e57373;--warning: #ffb74d;--info: #64b5f6;--diff-add: #4caf50;--diff-remove: #e57373;--code-font: "SF Mono", "Cascadia Code", "Fira Code", monospace;--radius-sm: 4px;--radius-md: 8px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 12px;--spacing-lg: 16px}[hidden]{display:none!important}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}dialog{margin:auto}html,body{height:100%;overflow:hidden;overscroll-behavior:none;background:var(--bg);color:var(--text);font-family:var(--font-mono);font-size:var(--font-size-base);color-scheme:dark}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}
|
package/dist/frontend/index.html
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
12
12
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
|
13
13
|
<meta name="theme-color" content="#1a1a1a" />
|
|
14
|
-
<script type="module" crossorigin src="/assets/index-
|
|
15
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
14
|
+
<script type="module" crossorigin src="/assets/index-CzJETpYJ.js"></script>
|
|
15
|
+
<link rel="stylesheet" crossorigin href="/assets/index-H6FwqbR7.css">
|
|
16
16
|
</head>
|
|
17
17
|
<body>
|
|
18
18
|
<div id="app"></div>
|
package/dist/server/git.js
CHANGED
|
@@ -168,7 +168,7 @@ async function getPrForBranch(repoPath, branch, options = {}) {
|
|
|
168
168
|
'view',
|
|
169
169
|
branch,
|
|
170
170
|
'--json',
|
|
171
|
-
'number,title,url,state,headRefName,baseRefName,reviewDecision,isDraft',
|
|
171
|
+
'number,title,url,state,headRefName,baseRefName,reviewDecision,isDraft,additions,deletions,mergeable',
|
|
172
172
|
], { cwd: repoPath, timeout: 5000 }));
|
|
173
173
|
}
|
|
174
174
|
catch {
|
|
@@ -187,6 +187,10 @@ async function getPrForBranch(repoPath, branch, options = {}) {
|
|
|
187
187
|
baseRefName: data.baseRefName,
|
|
188
188
|
isDraft: data.isDraft,
|
|
189
189
|
reviewDecision: data.reviewDecision ?? null,
|
|
190
|
+
additions: data.additions ?? 0,
|
|
191
|
+
deletions: data.deletions ?? 0,
|
|
192
|
+
mergeable: data.mergeable ?? 'UNKNOWN',
|
|
193
|
+
unresolvedCommentCount: 0,
|
|
190
194
|
};
|
|
191
195
|
}
|
|
192
196
|
catch {
|
|
@@ -219,4 +223,38 @@ async function getCommitsAhead(repoPath, branch, baseBranch, options = {}) {
|
|
|
219
223
|
return 0;
|
|
220
224
|
}
|
|
221
225
|
}
|
|
222
|
-
|
|
226
|
+
async function getUnresolvedCommentCount(repoPath, prNumber, options = {}) {
|
|
227
|
+
const run = options.exec || execFileAsync;
|
|
228
|
+
try {
|
|
229
|
+
const { stdout: repoStdout } = await run('gh', ['repo', 'view', '--json', 'nameWithOwner', '--jq', '.nameWithOwner'], { cwd: repoPath, timeout: 5000 });
|
|
230
|
+
const nameWithOwner = repoStdout.trim();
|
|
231
|
+
if (!nameWithOwner)
|
|
232
|
+
return 0;
|
|
233
|
+
const [owner, repo] = nameWithOwner.split('/');
|
|
234
|
+
if (!owner || !repo)
|
|
235
|
+
return 0;
|
|
236
|
+
const query = `query($owner: String!, $repo: String!, $number: Int!) {
|
|
237
|
+
repository(owner: $owner, name: $repo) {
|
|
238
|
+
pullRequest(number: $number) {
|
|
239
|
+
reviewThreads(first: 100) {
|
|
240
|
+
nodes { isResolved }
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}`;
|
|
245
|
+
const { stdout } = await run('gh', [
|
|
246
|
+
'api', 'graphql',
|
|
247
|
+
'-f', `query=${query}`,
|
|
248
|
+
'-f', `owner=${owner}`,
|
|
249
|
+
'-f', `repo=${repo}`,
|
|
250
|
+
'-F', `number=${prNumber}`,
|
|
251
|
+
], { cwd: repoPath, timeout: 10000 });
|
|
252
|
+
const result = JSON.parse(stdout);
|
|
253
|
+
const nodes = result?.data?.repository?.pullRequest?.reviewThreads?.nodes ?? [];
|
|
254
|
+
return nodes.filter((n) => !n.isResolved).length;
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
return 0;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
export { listBranches, normalizeBranchNames, getActivityFeed, getCiStatus, getPrForBranch, getUnresolvedCommentCount, switchBranch, getCommitsAhead, getCurrentBranch, };
|
|
@@ -4,6 +4,7 @@ import os from 'node:os';
|
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { AGENT_COMMANDS, AGENT_CONTINUE_ARGS } from './types.js';
|
|
6
6
|
import { readMeta, writeMeta } from './config.js';
|
|
7
|
+
import { fireSessionEnd } from './sessions.js';
|
|
7
8
|
const IDLE_TIMEOUT_MS = 5000;
|
|
8
9
|
const MAX_SCROLLBACK = 256 * 1024; // 256KB max
|
|
9
10
|
export function generateTmuxSessionName(displayName, id) {
|
|
@@ -184,6 +185,7 @@ export function createPtySession(params, sessionsMap, idleChangeCallbacks) {
|
|
|
184
185
|
if (configPath && worktreeName) {
|
|
185
186
|
writeMeta(configPath, { worktreePath: repoPath, displayName: session.displayName, lastActivity: session.lastActivity });
|
|
186
187
|
}
|
|
188
|
+
fireSessionEnd(id, repoPath, session.branchName);
|
|
187
189
|
sessionsMap.delete(id);
|
|
188
190
|
const tmpDir = path.join(os.tmpdir(), 'claude-remote-cli', id);
|
|
189
191
|
fs.rm(tmpDir, { recursive: true, force: true }, () => { });
|
package/dist/server/sessions.js
CHANGED
|
@@ -18,6 +18,14 @@ const idleChangeCallbacks = [];
|
|
|
18
18
|
function onIdleChange(cb) {
|
|
19
19
|
idleChangeCallbacks.push(cb);
|
|
20
20
|
}
|
|
21
|
+
const sessionEndCallbacks = [];
|
|
22
|
+
function onSessionEnd(cb) {
|
|
23
|
+
sessionEndCallbacks.push(cb);
|
|
24
|
+
}
|
|
25
|
+
function fireSessionEnd(sessionId, repoPath, branchName) {
|
|
26
|
+
for (const cb of sessionEndCallbacks)
|
|
27
|
+
cb(sessionId, repoPath, branchName);
|
|
28
|
+
}
|
|
21
29
|
function create({ id: providedId, type, agent = 'claude', repoName, repoPath, cwd, root, worktreeName, branchName, displayName, command, args = [], cols = 80, rows = 24, configPath, useTmux: paramUseTmux, tmuxSessionName: paramTmuxSessionName, initialScrollback, restored: paramRestored, needsBranchRename: paramNeedsBranchRename, branchRenamePrompt: paramBranchRenamePrompt }) {
|
|
22
30
|
const id = providedId || crypto.randomBytes(8).toString('hex');
|
|
23
31
|
// Dispatch: if agent is claude, no custom command, try SDK first
|
|
@@ -124,6 +132,7 @@ function kill(id) {
|
|
|
124
132
|
else if (session.mode === 'sdk') {
|
|
125
133
|
killSdkSession(id);
|
|
126
134
|
}
|
|
135
|
+
fireSessionEnd(id, session.repoPath, session.branchName);
|
|
127
136
|
sessions.delete(id);
|
|
128
137
|
}
|
|
129
138
|
function killAllTmuxSessions() {
|
|
@@ -378,4 +387,4 @@ function stopSdkIdleSweep() {
|
|
|
378
387
|
}
|
|
379
388
|
// Re-export pty-handler utilities for backward compatibility
|
|
380
389
|
export { generateTmuxSessionName, resolveTmuxSpawn } from './pty-handler.js';
|
|
381
|
-
export { create, get, list, kill, killAllTmuxSessions, resize, updateDisplayName, write, handlePermission, onIdleChange, findRepoSession, nextTerminalName, serializeAll, restoreFromDisk, activeTmuxSessionNames, startSdkIdleSweep, stopSdkIdleSweep, AGENT_COMMANDS, AGENT_CONTINUE_ARGS, AGENT_YOLO_ARGS };
|
|
390
|
+
export { create, get, list, kill, killAllTmuxSessions, resize, updateDisplayName, write, handlePermission, onIdleChange, onSessionEnd, fireSessionEnd, findRepoSession, nextTerminalName, serializeAll, restoreFromDisk, activeTmuxSessionNames, startSdkIdleSweep, stopSdkIdleSweep, AGENT_COMMANDS, AGENT_CONTINUE_ARGS, AGENT_YOLO_ARGS };
|
|
@@ -5,7 +5,7 @@ import { execFile } from 'node:child_process';
|
|
|
5
5
|
import { promisify } from 'node:util';
|
|
6
6
|
import { Router } from 'express';
|
|
7
7
|
import { loadConfig, saveConfig, getWorkspaceSettings, setWorkspaceSettings } from './config.js';
|
|
8
|
-
import { listBranches, getActivityFeed, getCiStatus, getPrForBranch, switchBranch, getCurrentBranch } from './git.js';
|
|
8
|
+
import { listBranches, getActivityFeed, getCiStatus, getPrForBranch, getUnresolvedCommentCount, switchBranch, getCurrentBranch } from './git.js';
|
|
9
9
|
import { MOUNTAIN_NAMES } from './types.js';
|
|
10
10
|
const execFileAsync = promisify(execFile);
|
|
11
11
|
const BROWSE_DENYLIST = new Set([
|
|
@@ -348,7 +348,13 @@ export function createWorkspaceRouter(deps) {
|
|
|
348
348
|
try {
|
|
349
349
|
const pr = await getPrForBranch(workspacePath, branch);
|
|
350
350
|
if (pr) {
|
|
351
|
-
|
|
351
|
+
if (pr.state === 'OPEN') {
|
|
352
|
+
const unresolvedCommentCount = await getUnresolvedCommentCount(workspacePath, pr.number);
|
|
353
|
+
res.json({ ...pr, unresolvedCommentCount });
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
res.json({ ...pr, unresolvedCommentCount: 0 });
|
|
357
|
+
}
|
|
352
358
|
}
|
|
353
359
|
else {
|
|
354
360
|
res.status(404).json({ error: 'No PR found for branch' });
|
package/dist/server/ws.js
CHANGED
|
@@ -271,6 +271,9 @@ function setupWebSocket(server, authenticatedTokens, watcher, configPath) {
|
|
|
271
271
|
sessions.onIdleChange((sessionId, idle) => {
|
|
272
272
|
broadcastEvent('session-idle-changed', { sessionId, idle });
|
|
273
273
|
});
|
|
274
|
+
sessions.onSessionEnd((sessionId, repoPath, branchName) => {
|
|
275
|
+
broadcastEvent('session-ended', { sessionId, repoPath, branchName });
|
|
276
|
+
});
|
|
274
277
|
return { wss, broadcastEvent };
|
|
275
278
|
}
|
|
276
279
|
export { setupWebSocket };
|
|
@@ -7,6 +7,7 @@ describe('derivePrAction', () => {
|
|
|
7
7
|
commitsAhead: 0,
|
|
8
8
|
prState: null,
|
|
9
9
|
ciPassing: 0, ciFailing: 0, ciPending: 0, ciTotal: 0,
|
|
10
|
+
mergeable: null, unresolvedCommentCount: 0,
|
|
10
11
|
};
|
|
11
12
|
const action = derivePrAction(input);
|
|
12
13
|
assert.equal(action.type, 'none');
|
|
@@ -18,6 +19,7 @@ describe('derivePrAction', () => {
|
|
|
18
19
|
commitsAhead: 3,
|
|
19
20
|
prState: null,
|
|
20
21
|
ciPassing: 0, ciFailing: 0, ciPending: 0, ciTotal: 0,
|
|
22
|
+
mergeable: null, unresolvedCommentCount: 0,
|
|
21
23
|
};
|
|
22
24
|
const action = derivePrAction(input);
|
|
23
25
|
assert.equal(action.type, 'create-pr');
|
|
@@ -29,31 +31,34 @@ describe('derivePrAction', () => {
|
|
|
29
31
|
commitsAhead: 5,
|
|
30
32
|
prState: 'DRAFT',
|
|
31
33
|
ciPassing: 0, ciFailing: 0, ciPending: 0, ciTotal: 0,
|
|
34
|
+
mergeable: null, unresolvedCommentCount: 0,
|
|
32
35
|
};
|
|
33
36
|
const action = derivePrAction(input);
|
|
34
37
|
assert.equal(action.type, 'ready-for-review');
|
|
35
38
|
assert.equal(action.color, 'muted');
|
|
36
39
|
assert.equal(action.label, 'Ready for Review');
|
|
37
40
|
});
|
|
38
|
-
it('returns
|
|
41
|
+
it('returns review-pr for open PR with all CI passing', () => {
|
|
39
42
|
const input = {
|
|
40
43
|
commitsAhead: 2,
|
|
41
44
|
prState: 'OPEN',
|
|
42
45
|
ciPassing: 5, ciFailing: 0, ciPending: 0, ciTotal: 5,
|
|
46
|
+
mergeable: 'MERGEABLE', unresolvedCommentCount: 0,
|
|
43
47
|
};
|
|
44
48
|
const action = derivePrAction(input);
|
|
45
|
-
assert.equal(action.type, '
|
|
49
|
+
assert.equal(action.type, 'review-pr');
|
|
46
50
|
assert.equal(action.color, 'success');
|
|
47
|
-
assert.equal(action.label, '
|
|
51
|
+
assert.equal(action.label, 'Review PR');
|
|
48
52
|
});
|
|
49
|
-
it('returns
|
|
53
|
+
it('returns review-pr for open PR with no CI checks', () => {
|
|
50
54
|
const input = {
|
|
51
55
|
commitsAhead: 1,
|
|
52
56
|
prState: 'OPEN',
|
|
53
57
|
ciPassing: 0, ciFailing: 0, ciPending: 0, ciTotal: 0,
|
|
58
|
+
mergeable: 'MERGEABLE', unresolvedCommentCount: 0,
|
|
54
59
|
};
|
|
55
60
|
const action = derivePrAction(input);
|
|
56
|
-
assert.equal(action.type, '
|
|
61
|
+
assert.equal(action.type, 'review-pr');
|
|
57
62
|
assert.equal(action.color, 'success');
|
|
58
63
|
});
|
|
59
64
|
it('returns fix-errors for open PR with failing CI', () => {
|
|
@@ -61,6 +66,7 @@ describe('derivePrAction', () => {
|
|
|
61
66
|
commitsAhead: 2,
|
|
62
67
|
prState: 'OPEN',
|
|
63
68
|
ciPassing: 6, ciFailing: 2, ciPending: 0, ciTotal: 8,
|
|
69
|
+
mergeable: 'MERGEABLE', unresolvedCommentCount: 0,
|
|
64
70
|
};
|
|
65
71
|
const action = derivePrAction(input);
|
|
66
72
|
assert.equal(action.type, 'fix-errors');
|
|
@@ -72,6 +78,7 @@ describe('derivePrAction', () => {
|
|
|
72
78
|
commitsAhead: 1,
|
|
73
79
|
prState: 'OPEN',
|
|
74
80
|
ciPassing: 3, ciFailing: 0, ciPending: 2, ciTotal: 5,
|
|
81
|
+
mergeable: 'MERGEABLE', unresolvedCommentCount: 0,
|
|
75
82
|
};
|
|
76
83
|
const action = derivePrAction(input);
|
|
77
84
|
assert.equal(action.type, 'checks-running');
|
|
@@ -83,6 +90,7 @@ describe('derivePrAction', () => {
|
|
|
83
90
|
commitsAhead: 1,
|
|
84
91
|
prState: 'OPEN',
|
|
85
92
|
ciPassing: 3, ciFailing: 1, ciPending: 1, ciTotal: 5,
|
|
93
|
+
mergeable: 'MERGEABLE', unresolvedCommentCount: 0,
|
|
86
94
|
};
|
|
87
95
|
const action = derivePrAction(input);
|
|
88
96
|
assert.equal(action.type, 'fix-errors');
|
|
@@ -93,6 +101,7 @@ describe('derivePrAction', () => {
|
|
|
93
101
|
commitsAhead: 0,
|
|
94
102
|
prState: 'MERGED',
|
|
95
103
|
ciPassing: 5, ciFailing: 0, ciPending: 0, ciTotal: 5,
|
|
104
|
+
mergeable: null, unresolvedCommentCount: 0,
|
|
96
105
|
};
|
|
97
106
|
const action = derivePrAction(input);
|
|
98
107
|
assert.equal(action.type, 'archive-merged');
|
|
@@ -104,38 +113,85 @@ describe('derivePrAction', () => {
|
|
|
104
113
|
commitsAhead: 0,
|
|
105
114
|
prState: 'CLOSED',
|
|
106
115
|
ciPassing: 0, ciFailing: 0, ciPending: 0, ciTotal: 0,
|
|
116
|
+
mergeable: null, unresolvedCommentCount: 0,
|
|
107
117
|
};
|
|
108
118
|
const action = derivePrAction(input);
|
|
109
119
|
assert.equal(action.type, 'archive-closed');
|
|
110
120
|
assert.equal(action.color, 'muted');
|
|
111
121
|
assert.equal(action.label, 'Archive');
|
|
112
122
|
});
|
|
123
|
+
it('returns fix-conflicts for open PR with CONFLICTING mergeable', () => {
|
|
124
|
+
const input = {
|
|
125
|
+
commitsAhead: 2,
|
|
126
|
+
prState: 'OPEN',
|
|
127
|
+
ciPassing: 0, ciFailing: 0, ciPending: 0, ciTotal: 0,
|
|
128
|
+
mergeable: 'CONFLICTING', unresolvedCommentCount: 0,
|
|
129
|
+
};
|
|
130
|
+
const action = derivePrAction(input);
|
|
131
|
+
assert.equal(action.type, 'fix-conflicts');
|
|
132
|
+
assert.equal(action.color, 'error');
|
|
133
|
+
assert.equal(action.label, 'Fix Conflicts');
|
|
134
|
+
});
|
|
135
|
+
it('prioritizes fix-conflicts over fix-errors', () => {
|
|
136
|
+
const input = {
|
|
137
|
+
commitsAhead: 2,
|
|
138
|
+
prState: 'OPEN',
|
|
139
|
+
ciPassing: 0, ciFailing: 3, ciPending: 0, ciTotal: 3,
|
|
140
|
+
mergeable: 'CONFLICTING', unresolvedCommentCount: 0,
|
|
141
|
+
};
|
|
142
|
+
const action = derivePrAction(input);
|
|
143
|
+
assert.equal(action.type, 'fix-conflicts');
|
|
144
|
+
});
|
|
145
|
+
it('returns resolve-comments when unresolved comments > 0 and CI passing', () => {
|
|
146
|
+
const input = {
|
|
147
|
+
commitsAhead: 1,
|
|
148
|
+
prState: 'OPEN',
|
|
149
|
+
ciPassing: 5, ciFailing: 0, ciPending: 0, ciTotal: 5,
|
|
150
|
+
mergeable: 'MERGEABLE', unresolvedCommentCount: 3,
|
|
151
|
+
};
|
|
152
|
+
const action = derivePrAction(input);
|
|
153
|
+
assert.equal(action.type, 'resolve-comments');
|
|
154
|
+
assert.equal(action.color, 'accent');
|
|
155
|
+
assert.equal(action.label, 'Resolve Comments (3)');
|
|
156
|
+
});
|
|
113
157
|
});
|
|
114
158
|
describe('getActionPrompt', () => {
|
|
115
159
|
it('returns prompt for create-pr', () => {
|
|
116
|
-
const prompt = getActionPrompt({ type: 'create-pr', color: 'accent', label: 'Create PR' }, 'feat/my-feature');
|
|
160
|
+
const prompt = getActionPrompt({ type: 'create-pr', color: 'accent', label: 'Create PR' }, { branchName: 'feat/my-feature' });
|
|
117
161
|
assert.ok(prompt);
|
|
118
162
|
assert.ok(prompt.includes('feat/my-feature'));
|
|
119
163
|
assert.ok(prompt.includes('pull request'));
|
|
120
164
|
});
|
|
121
165
|
it('returns prompt for fix-errors', () => {
|
|
122
|
-
const prompt = getActionPrompt({ type: 'fix-errors', color: 'error', label: 'Fix Errors 2/8' }, 'bugfix/auth');
|
|
166
|
+
const prompt = getActionPrompt({ type: 'fix-errors', color: 'error', label: 'Fix Errors 2/8' }, { branchName: 'bugfix/auth' });
|
|
123
167
|
assert.ok(prompt);
|
|
124
168
|
assert.ok(prompt.includes('bugfix/auth'));
|
|
125
169
|
assert.ok(prompt.includes('failing'));
|
|
126
170
|
});
|
|
127
|
-
it('returns prompt for
|
|
128
|
-
const prompt = getActionPrompt({ type: '
|
|
171
|
+
it('returns prompt for review-pr', () => {
|
|
172
|
+
const prompt = getActionPrompt({ type: 'review-pr', color: 'success', label: 'Review PR' }, { branchName: 'main', prNumber: 42 });
|
|
129
173
|
assert.ok(prompt);
|
|
130
174
|
assert.ok(prompt.includes('Review'));
|
|
131
175
|
});
|
|
176
|
+
it('returns prompt for fix-conflicts', () => {
|
|
177
|
+
const prompt = getActionPrompt({ type: 'fix-conflicts', color: 'error', label: 'Fix Conflicts' }, { branchName: 'feat/foo', baseBranch: 'main' });
|
|
178
|
+
assert.ok(prompt);
|
|
179
|
+
assert.ok(prompt.includes('main'));
|
|
180
|
+
assert.ok(prompt.includes('conflict'));
|
|
181
|
+
});
|
|
182
|
+
it('returns prompt for resolve-comments', () => {
|
|
183
|
+
const prompt = getActionPrompt({ type: 'resolve-comments', color: 'accent', label: 'Resolve Comments (3)' }, { branchName: 'feat/foo', prNumber: 7, unresolvedCommentCount: 3 });
|
|
184
|
+
assert.ok(prompt);
|
|
185
|
+
assert.ok(prompt.includes('3'));
|
|
186
|
+
assert.ok(prompt.includes('#7'));
|
|
187
|
+
});
|
|
132
188
|
it('returns null for archive actions', () => {
|
|
133
|
-
assert.equal(getActionPrompt({ type: 'archive-merged', color: 'merged', label: 'Archive' }, 'main'), null);
|
|
134
|
-
assert.equal(getActionPrompt({ type: 'archive-closed', color: 'muted', label: 'Archive' }, 'main'), null);
|
|
189
|
+
assert.equal(getActionPrompt({ type: 'archive-merged', color: 'merged', label: 'Archive' }, { branchName: 'main' }), null);
|
|
190
|
+
assert.equal(getActionPrompt({ type: 'archive-closed', color: 'muted', label: 'Archive' }, { branchName: 'main' }), null);
|
|
135
191
|
});
|
|
136
192
|
it('returns null for none and checks-running', () => {
|
|
137
|
-
assert.equal(getActionPrompt({ type: 'none', color: 'none', label: '' }, 'main'), null);
|
|
138
|
-
assert.equal(getActionPrompt({ type: 'checks-running', color: 'warning', label: 'Checks Running...' }, 'main'), null);
|
|
193
|
+
assert.equal(getActionPrompt({ type: 'none', color: 'none', label: '' }, { branchName: 'main' }), null);
|
|
194
|
+
assert.equal(getActionPrompt({ type: 'checks-running', color: 'warning', label: 'Checks Running...' }, { branchName: 'main' }), null);
|
|
139
195
|
});
|
|
140
196
|
});
|
|
141
197
|
describe('getStatusCssVar', () => {
|