setHi(i)}
onClick={() => { it.onClick?.(); onClose() }}>
{it.icon}
{it.label}
@@ -453,11 +498,12 @@ export function Toasts({ toasts }: { toasts: Toast[] }): React.ReactElement {
)
}
-export function PassPopup({ x, y, refStr, onConfirm, onCancel }: {
+export function PassPopup({ x, y, refStr, code, onConfirm, onCancel }: {
x: number
y: number
refStr: string
- onConfirm: (text: string) => void
+ code?: string
+ onConfirm: (payload: string) => void
onCancel: () => void
}): React.ReactElement {
const [text, setText] = useState('')
@@ -473,7 +519,7 @@ export function PassPopup({ x, y, refStr, onConfirm, onCancel }: {
}, [])
const left = Math.min(x, window.innerWidth - 360)
const top = Math.min(y + 6, window.innerHeight - 150)
- const preview = (text.trim() ? text.trim() + ' ' : '') + refStr
+ const payload = buildPass(text, refStr, code)
return (
{Icon.spark()}Pass on to Agentesc
@@ -481,10 +527,10 @@ export function PassPopup({ x, y, refStr, onConfirm, onCancel }: {
placeholder="Add a note (optional)…"
onChange={(e) => setText(e.target.value)}
onKeyDown={(e) => {
- if (e.key === 'Enter') { e.preventDefault(); onConfirm(text) }
+ if (e.key === 'Enter') { e.preventDefault(); onConfirm(payload) }
else if (e.key === 'Escape') { e.preventDefault(); onCancel() }
}} />
-
inserts{preview}
+
inserts{payload}
↵ insert into agent · esc cancel
)
diff --git a/src/renderer/src/styles.css b/src/renderer/src/styles.css
index ecec687..3bbba66 100644
--- a/src/renderer/src/styles.css
+++ b/src/renderer/src/styles.css
@@ -120,8 +120,13 @@ body {
.workbench { flex:1; display:flex; min-height:0; }
.col { display:flex; flex-direction:column; height:100%; min-width:0; background:var(--bg-2); }
-.col.editor-col { flex:1; background:var(--bg-0); min-width:240px; }
+/* Editor (C) shares the side panels' background (--bg-2), matching B (and A). */
+.col.editor-col { flex:1; min-width:240px; }
.col.right-col { background:var(--bg-1); }
+/* Active panel: subtle lighter-gray tint on the focused column. C uses the same
+ tint as the side panels, so the file view stays in step with B in/out of focus. */
+.col.panel-active { background:#22252a; }
+.col.right-col.panel-active { background:#1e2024; }
.splitter { flex:0 0 5px; cursor:col-resize; background:transparent; position:relative; z-index:5; }
.splitter::after { content:""; position:absolute; inset:0 2px; background:var(--border); transition:background .12s; }
@@ -165,6 +170,8 @@ body {
.git-row.ctx .git-act { visibility:visible; }
.git-row.active { background:var(--sel); }
.git-row.active::before { content:""; position:absolute; left:0; top:0; bottom:0; width:2px; background:var(--accent); }
+.git-row.kbd { background:var(--hover); box-shadow:inset 2px 0 0 var(--accent-line); }
+.git-row.kbd .git-act { visibility:visible; }
.git-stat { width:13px; text-align:center; font-family:var(--mono); font-size:11px; font-weight:600; flex:0 0 13px; }
.git-stat.M{color:var(--mod);} .git-stat.A{color:var(--add);} .git-stat.D{color:var(--del);} .git-stat.R{color:var(--ren);} .git-stat.U{color:var(--add);}
.git-name { font-size:12.5px; color:var(--fg-1); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
@@ -185,6 +192,7 @@ body {
.tree-row:hover, .tree-row.ctx { background:var(--hover); }
.tree-row.active { background:var(--sel); }
.tree-row.active::before { content:""; position:absolute; left:0; top:0; bottom:0; width:2px; background:var(--accent); }
+.tree-row.kbd { background:var(--hover); box-shadow:inset 2px 0 0 var(--accent-line); }
.tw { display:inline-flex; align-items:center; justify-content:center; width:14px; flex:0 0 14px; color:var(--fg-3); font-size:10px; }
.tree-label { font-size:12.5px; color:var(--fg-1); overflow:hidden; text-overflow:ellipsis; }
.tree-row.active .tree-label { color:var(--fg-0); }
@@ -399,6 +407,7 @@ body {
.pass-preview { margin-top:9px; display:flex; align-items:center; gap:8px; min-width:0; }
.pass-preview .pp-lbl { font-size:10px; text-transform:uppercase; letter-spacing:.06em; color:var(--fg-3); flex:0 0 auto; }
.pass-preview code { font-family:var(--mono); font-size:11.5px; color:var(--accent); background:var(--accent-soft); border-radius:5px; padding:3px 7px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
+.pass-preview code.multiline { white-space:pre-wrap; text-overflow:clip; max-height:132px; overflow:auto; word-break:break-word; }
.pass-foot { margin-top:9px; font-size:10.5px; color:var(--fg-3); }
.pass-foot kbd { font-family:var(--mono); font-size:11.5px; color:var(--fg-2); border:1px solid var(--border-2); border-radius:4px; padding:0 5px; }
@@ -410,7 +419,7 @@ body {
/* context menu */
.ctx { position:fixed; z-index:80; background:#23272d; border:1px solid var(--border-2); border-radius:9px; padding:5px; min-width:248px; box-shadow:0 16px 44px rgba(0,0,0,.5); }
.ctx-item { display:flex; align-items:center; gap:10px; padding:7px 10px; border-radius:6px; cursor:pointer; font-size:12.5px; color:var(--fg-1); }
-.ctx-item:hover { background:var(--accent-soft); color:var(--fg-0); }
+.ctx-item:hover, .ctx-item.hi { background:var(--accent-soft); color:var(--fg-0); }
.ctx-item .kc { margin-left:auto; font-family:var(--mono); font-size:10.5px; color:var(--fg-3); }
.ctx-item.primary { color:var(--fg-0); }
.ctx-item.primary .ic { color:var(--accent); }
diff --git a/src/renderer/src/terminals.tsx b/src/renderer/src/terminals.tsx
index d55abef..585e1a9 100644
--- a/src/renderer/src/terminals.tsx
+++ b/src/renderer/src/terminals.tsx
@@ -35,6 +35,11 @@ export function Terminal({ kind }: { kind: 'agent' | 'shell' }): React.ReactElem
const termRef = useRef
(null)
const [, setLive] = useState(kind === 'agent')
const [menu, setMenu] = useState