opencode-sesh 2.1.2 → 2.1.4
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/AGENTS.md +12 -1
- package/CHANGELOG.md +14 -0
- package/README.md +4 -0
- package/dist/tui.js +562 -462
- package/package.json +9 -8
- package/tui-plugins/sesh-panel/tui.tsx +87 -23
package/dist/tui.js
CHANGED
|
@@ -637,7 +637,9 @@ async function openTranscriptDb() {
|
|
|
637
637
|
}
|
|
638
638
|
}
|
|
639
639
|
function createSessionPoll(api, refreshPins) {
|
|
640
|
-
|
|
640
|
+
// Listener -> whether it reads `snapshot.waiting`. The needs-input query is
|
|
641
|
+
// synchronous on the TUI thread, so it only runs while such a listener exists.
|
|
642
|
+
const listeners = new Map();
|
|
641
643
|
let snapshot = {
|
|
642
644
|
entries: [],
|
|
643
645
|
waiting: new Map(),
|
|
@@ -645,7 +647,11 @@ function createSessionPoll(api, refreshPins) {
|
|
|
645
647
|
};
|
|
646
648
|
let clock;
|
|
647
649
|
let inFlight;
|
|
650
|
+
// Whether `snapshot.waiting` came from a poll that ran the query; a poll
|
|
651
|
+
// without waiting listeners clears it so a later subscriber never sees a stale set.
|
|
652
|
+
let waitingLoaded = false;
|
|
648
653
|
const active = () => listeners.size > 0;
|
|
654
|
+
const wantsWaiting = () => [...listeners.values()].some(Boolean);
|
|
649
655
|
const load = () => {
|
|
650
656
|
if (inFlight || !active()) return;
|
|
651
657
|
inFlight = (async () => {
|
|
@@ -671,30 +677,42 @@ function createSessionPoll(api, refreshPins) {
|
|
|
671
677
|
};
|
|
672
678
|
}
|
|
673
679
|
if (!active()) return;
|
|
674
|
-
const db = await openTranscriptDb();
|
|
680
|
+
const db = wantsWaiting() ? await openTranscriptDb() : undefined;
|
|
675
681
|
if (db) {
|
|
676
682
|
try {
|
|
677
|
-
if (
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
683
|
+
if (wantsWaiting()) {
|
|
684
|
+
snapshot = {
|
|
685
|
+
...snapshot,
|
|
686
|
+
waiting: await queryWaitingIds(db)
|
|
687
|
+
};
|
|
688
|
+
waitingLoaded = true;
|
|
689
|
+
}
|
|
681
690
|
} catch {
|
|
682
691
|
// Keep the previous waiting set when the local store is unavailable.
|
|
683
692
|
} finally {
|
|
684
693
|
db.close();
|
|
685
694
|
}
|
|
695
|
+
} else if (!wantsWaiting()) {
|
|
696
|
+
snapshot = {
|
|
697
|
+
...snapshot,
|
|
698
|
+
waiting: new Map()
|
|
699
|
+
};
|
|
700
|
+
waitingLoaded = false;
|
|
686
701
|
}
|
|
687
|
-
for (const listener of listeners) listener(snapshot);
|
|
702
|
+
for (const listener of [...listeners.keys()]) listener(snapshot);
|
|
688
703
|
})().finally(() => {
|
|
689
704
|
inFlight = undefined;
|
|
690
705
|
});
|
|
691
706
|
};
|
|
692
|
-
return listener => {
|
|
693
|
-
|
|
707
|
+
return (listener, options = {}) => {
|
|
708
|
+
const needsWaiting = options.waiting === true;
|
|
709
|
+
listeners.set(listener, needsWaiting);
|
|
694
710
|
listener(snapshot);
|
|
695
711
|
if (!clock) {
|
|
696
712
|
load();
|
|
697
713
|
clock = setInterval(load, POLL_MS);
|
|
714
|
+
} else if (needsWaiting && !waitingLoaded) {
|
|
715
|
+
load();
|
|
698
716
|
}
|
|
699
717
|
return () => {
|
|
700
718
|
listeners.delete(listener);
|
|
@@ -1212,6 +1230,8 @@ function SidebarSessions(props) {
|
|
|
1212
1230
|
setEntries(snapshot.entries);
|
|
1213
1231
|
setLoadFailed(snapshot.failed);
|
|
1214
1232
|
setWaiting(snapshot.waiting);
|
|
1233
|
+
}, {
|
|
1234
|
+
waiting: true
|
|
1215
1235
|
})));
|
|
1216
1236
|
const filteredEntries = createMemo(() => {
|
|
1217
1237
|
const q = query().trim().toLowerCase();
|
|
@@ -2163,9 +2183,27 @@ function SidebarSessions(props) {
|
|
|
2163
2183
|
})();
|
|
2164
2184
|
}
|
|
2165
2185
|
const HOME_SESSION_LIMIT = 6;
|
|
2186
|
+
// Layout baseline: OpenCode 2.2.4. Re-check these assumptions and the matching
|
|
2187
|
+
// tests/tui-home.mjs fixture when upgrading OpenCode: the fixture mirrors the
|
|
2188
|
+
// host layout, so it cannot detect upstream layout changes on its own.
|
|
2189
|
+
// Sources pinned to that release:
|
|
2190
|
+
// https://github.com/anomalyco/opencode/blob/45898d0f8569225eb1ddb4ee13f8581b34dff311/packages/tui/src/routes/home.tsx
|
|
2191
|
+
// https://github.com/anomalyco/opencode/blob/45898d0f8569225eb1ddb4ee13f8581b34dff311/packages/tui/src/component/prompt/index.tsx#L1676
|
|
2192
|
+
// https://github.com/anomalyco/opencode/blob/45898d0f8569225eb1ddb4ee13f8581b34dff311/packages/tui/src/component/logo.tsx
|
|
2193
|
+
// https://github.com/anomalyco/opencode/blob/45898d0f8569225eb1ddb4ee13f8581b34dff311/packages/tui/src/feature-plugins/home/footer.tsx
|
|
2194
|
+
// The native home needs room for its logo, composer chrome and status footer.
|
|
2195
|
+
// Reserve the editor's *maximum* height (one third of the terminal, at least
|
|
2196
|
+
// six lines), so typing/wrapping a prompt cannot push it into our footer.
|
|
2197
|
+
// Chrome: logo (4) + gap (1) + composer (6) + status (3). Below 44 columns,
|
|
2198
|
+
// the logo stacks to seven lines but the three-line status footer disappears.
|
|
2199
|
+
const HOME_CHROME_ROWS = 14;
|
|
2166
2200
|
function HomeSessions(props) {
|
|
2167
2201
|
const theme = () => props.api.theme.current;
|
|
2168
2202
|
const home = process.env.HOME ?? "";
|
|
2203
|
+
const [dimensions, setDimensions] = createSignal({
|
|
2204
|
+
width: props.api.renderer.width,
|
|
2205
|
+
height: props.api.renderer.height
|
|
2206
|
+
});
|
|
2169
2207
|
const [entries, setEntries] = createSignal([]);
|
|
2170
2208
|
const [query, setQuery] = createSignal("");
|
|
2171
2209
|
const [hovered, setHovered] = createSignal();
|
|
@@ -2301,7 +2339,15 @@ function HomeSessions(props) {
|
|
|
2301
2339
|
onMount(() => {
|
|
2302
2340
|
ensureRootMouse(props.api.renderer);
|
|
2303
2341
|
rootMouseHandlers.add(onRootMouseDown);
|
|
2304
|
-
|
|
2342
|
+
const resize = () => setDimensions({
|
|
2343
|
+
width: props.api.renderer.width,
|
|
2344
|
+
height: props.api.renderer.height
|
|
2345
|
+
});
|
|
2346
|
+
props.api.renderer.on("resize", resize);
|
|
2347
|
+
onCleanup(() => {
|
|
2348
|
+
rootMouseHandlers.delete(onRootMouseDown);
|
|
2349
|
+
props.api.renderer.off("resize", resize);
|
|
2350
|
+
});
|
|
2305
2351
|
});
|
|
2306
2352
|
const appendQuery = input => {
|
|
2307
2353
|
if (input === "\b") setQuery(value => value.slice(0, -1));else setQuery(value => value + input);
|
|
@@ -2360,24 +2406,46 @@ function HomeSessions(props) {
|
|
|
2360
2406
|
setEntries(snapshot.entries);
|
|
2361
2407
|
setLoadFailed(snapshot.failed);
|
|
2362
2408
|
})));
|
|
2363
|
-
const
|
|
2409
|
+
const filtered = createMemo(() => {
|
|
2364
2410
|
const q = query().trim().toLowerCase();
|
|
2365
2411
|
const list = q ? entries().filter(entry => entry.title.toLowerCase().includes(q) || entry.dir.toLowerCase().includes(q)) : entries();
|
|
2366
|
-
return pinnedFirst(list, props.pins())
|
|
2412
|
+
return pinnedFirst(list, props.pins());
|
|
2413
|
+
});
|
|
2414
|
+
const layout = createMemo(() => {
|
|
2415
|
+
const rows = dimensions().height;
|
|
2416
|
+
const budget = Math.max(0, rows - Math.max(6, Math.floor(rows / 3)) - HOME_CHROME_ROWS);
|
|
2417
|
+
// Drop decorative padding/spacing before sessions. Keep the full list in
|
|
2418
|
+
// the picker when even a heading and one session cannot fit.
|
|
2419
|
+
const padding = budget >= HOME_SESSION_LIMIT + 2 ? 1 : 0;
|
|
2420
|
+
const limit = Math.min(HOME_SESSION_LIMIT, Math.max(0, budget - padding - 1));
|
|
2421
|
+
const count = Math.max(1, Math.min(filtered().length, limit));
|
|
2422
|
+
return {
|
|
2423
|
+
budget,
|
|
2424
|
+
limit,
|
|
2425
|
+
padding,
|
|
2426
|
+
gap: budget >= 1 + padding + count * 2 ? 1 : 0
|
|
2427
|
+
};
|
|
2428
|
+
});
|
|
2429
|
+
const visible = createMemo(() => filtered().slice(0, layout().limit));
|
|
2430
|
+
createEffect(() => {
|
|
2431
|
+
const ids = new Set(visible().map(entry => entry.id));
|
|
2432
|
+
if (hovered() && !ids.has(hovered())) setHovered(undefined);
|
|
2433
|
+
if (pendingDelete() && !ids.has(pendingDelete())) cancelDelete();
|
|
2434
|
+
if (layout().limit === 0) setSearching(false);
|
|
2367
2435
|
});
|
|
2368
2436
|
return (() => {
|
|
2369
2437
|
var _el$49 = _$createElement("box"),
|
|
2370
2438
|
_el$50 = _$createElement("box");
|
|
2371
2439
|
_$insertNode(_el$49, _el$50);
|
|
2372
2440
|
_$setProp(_el$49, "width", "100%");
|
|
2441
|
+
_$setProp(_el$49, "flexShrink", 0);
|
|
2442
|
+
_$setProp(_el$49, "overflow", "hidden");
|
|
2373
2443
|
_$setProp(_el$49, "alignItems", "center");
|
|
2374
2444
|
_$setProp(_el$50, "flexDirection", "column");
|
|
2375
2445
|
_$setProp(_el$50, "width", "100%");
|
|
2376
2446
|
_$setProp(_el$50, "maxWidth", 72);
|
|
2377
2447
|
_$setProp(_el$50, "paddingLeft", 1);
|
|
2378
2448
|
_$setProp(_el$50, "paddingRight", 1);
|
|
2379
|
-
_$setProp(_el$50, "paddingTop", 1);
|
|
2380
|
-
_$setProp(_el$50, "gap", 1);
|
|
2381
2449
|
_$insert(_el$50, _$createComponent(Show, {
|
|
2382
2450
|
get when() {
|
|
2383
2451
|
return entries().length > 0;
|
|
@@ -2386,27 +2454,17 @@ function HomeSessions(props) {
|
|
|
2386
2454
|
return (() => {
|
|
2387
2455
|
var _el$64 = _$createElement("box"),
|
|
2388
2456
|
_el$65 = _$createElement("text"),
|
|
2389
|
-
_el$
|
|
2457
|
+
_el$66 = _$createTextNode(`Recent sessions `);
|
|
2390
2458
|
_$insertNode(_el$64, _el$65);
|
|
2391
|
-
_$
|
|
2392
|
-
_$setProp(_el$64, "
|
|
2393
|
-
_$
|
|
2394
|
-
_$
|
|
2395
|
-
_$
|
|
2396
|
-
_$
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
_v$34 = {
|
|
2401
|
-
fg: theme().textMuted
|
|
2402
|
-
};
|
|
2403
|
-
_v$33 !== _p$.e && (_p$.e = _$setProp(_el$65, "style", _v$33, _p$.e));
|
|
2404
|
-
_v$34 !== _p$.t && (_p$.t = _$setProp(_el$67, "style", _v$34, _p$.t));
|
|
2405
|
-
return _p$;
|
|
2406
|
-
}, {
|
|
2407
|
-
e: undefined,
|
|
2408
|
-
t: undefined
|
|
2409
|
-
});
|
|
2459
|
+
_$setProp(_el$64, "height", 1);
|
|
2460
|
+
_$setProp(_el$64, "flexShrink", 0);
|
|
2461
|
+
_$insertNode(_el$65, _el$66);
|
|
2462
|
+
_$setProp(_el$65, "wrapMode", "none");
|
|
2463
|
+
_$setProp(_el$65, "overflow", "hidden");
|
|
2464
|
+
_$insert(_el$65, () => loadFailed() ? "· list unavailable, will retry" : "· none yet, option+o to browse", null);
|
|
2465
|
+
_$effect(_$p => _$setProp(_el$65, "style", {
|
|
2466
|
+
fg: theme().textMuted
|
|
2467
|
+
}, _$p));
|
|
2410
2468
|
return _el$64;
|
|
2411
2469
|
})();
|
|
2412
2470
|
},
|
|
@@ -2415,23 +2473,40 @@ function HomeSessions(props) {
|
|
|
2415
2473
|
var _el$51 = _$createElement("box"),
|
|
2416
2474
|
_el$52 = _$createElement("box"),
|
|
2417
2475
|
_el$53 = _$createElement("text"),
|
|
2418
|
-
_el$55 = _$createElement("text"),
|
|
2419
2476
|
_el$57 = _$createElement("box"),
|
|
2420
2477
|
_el$58 = _$createElement("box"),
|
|
2421
2478
|
_el$59 = _$createElement("text");
|
|
2422
2479
|
_$insertNode(_el$51, _el$52);
|
|
2423
2480
|
_$insertNode(_el$51, _el$57);
|
|
2481
|
+
_$setProp(_el$51, "height", 1);
|
|
2482
|
+
_$setProp(_el$51, "flexShrink", 0);
|
|
2424
2483
|
_$setProp(_el$51, "flexDirection", "row");
|
|
2425
2484
|
_$setProp(_el$51, "justifyContent", "space-between");
|
|
2426
2485
|
_$setProp(_el$51, "gap", 2);
|
|
2486
|
+
_$setProp(_el$51, "overflow", "hidden");
|
|
2427
2487
|
_$insertNode(_el$52, _el$53);
|
|
2428
|
-
_$insertNode(_el$52, _el$55);
|
|
2429
2488
|
_$setProp(_el$52, "flexDirection", "row");
|
|
2430
2489
|
_$setProp(_el$52, "gap", 1);
|
|
2490
|
+
_$setProp(_el$52, "flexShrink", 0);
|
|
2431
2491
|
_$insertNode(_el$53, _$createTextNode(`Recent sessions`));
|
|
2432
|
-
_$
|
|
2492
|
+
_$setProp(_el$53, "wrapMode", "none");
|
|
2493
|
+
_$insert(_el$52, _$createComponent(Show, {
|
|
2494
|
+
get when() {
|
|
2495
|
+
return dimensions().width >= 68;
|
|
2496
|
+
},
|
|
2497
|
+
get children() {
|
|
2498
|
+
var _el$55 = _$createElement("text");
|
|
2499
|
+
_$insertNode(_el$55, _$createTextNode(`· option+o for all`));
|
|
2500
|
+
_$effect(_$p => _$setProp(_el$55, "style", {
|
|
2501
|
+
fg: theme().textMuted
|
|
2502
|
+
}, _$p));
|
|
2503
|
+
return _el$55;
|
|
2504
|
+
}
|
|
2505
|
+
}), null);
|
|
2433
2506
|
_$insertNode(_el$57, _el$58);
|
|
2434
2507
|
_$setProp(_el$57, "flexDirection", "row");
|
|
2508
|
+
_$setProp(_el$57, "flexShrink", 1);
|
|
2509
|
+
_$setProp(_el$57, "minWidth", 0);
|
|
2435
2510
|
_$setProp(_el$57, "gap", 1);
|
|
2436
2511
|
_$setProp(_el$57, "paddingLeft", 1);
|
|
2437
2512
|
_$setProp(_el$57, "paddingRight", 1);
|
|
@@ -2441,6 +2516,8 @@ function HomeSessions(props) {
|
|
|
2441
2516
|
});
|
|
2442
2517
|
_$insertNode(_el$58, _el$59);
|
|
2443
2518
|
_$setProp(_el$58, "width", 24);
|
|
2519
|
+
_$setProp(_el$58, "flexShrink", 1);
|
|
2520
|
+
_$setProp(_el$58, "minWidth", 0);
|
|
2444
2521
|
_$setProp(_el$59, "flexGrow", 1);
|
|
2445
2522
|
_$setProp(_el$59, "flexShrink", 1);
|
|
2446
2523
|
_$setProp(_el$59, "overflow", "hidden");
|
|
@@ -2466,23 +2543,18 @@ function HomeSessions(props) {
|
|
|
2466
2543
|
var _v$29 = {
|
|
2467
2544
|
fg: theme().textMuted
|
|
2468
2545
|
},
|
|
2469
|
-
_v$30 =
|
|
2470
|
-
|
|
2471
|
-
},
|
|
2472
|
-
_v$31 = searching() ? theme().backgroundElement : RGBA.fromInts(0, 0, 0, 0),
|
|
2473
|
-
_v$32 = {
|
|
2546
|
+
_v$30 = searching() ? theme().backgroundElement : RGBA.fromInts(0, 0, 0, 0),
|
|
2547
|
+
_v$31 = {
|
|
2474
2548
|
fg: query() ? theme().text : theme().textMuted
|
|
2475
2549
|
};
|
|
2476
2550
|
_v$29 !== _p$.e && (_p$.e = _$setProp(_el$53, "style", _v$29, _p$.e));
|
|
2477
|
-
_v$30 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
2478
|
-
_v$31 !== _p$.a && (_p$.a = _$setProp(_el$
|
|
2479
|
-
_v$32 !== _p$.o && (_p$.o = _$setProp(_el$59, "style", _v$32, _p$.o));
|
|
2551
|
+
_v$30 !== _p$.t && (_p$.t = _$setProp(_el$57, "backgroundColor", _v$30, _p$.t));
|
|
2552
|
+
_v$31 !== _p$.a && (_p$.a = _$setProp(_el$59, "style", _v$31, _p$.a));
|
|
2480
2553
|
return _p$;
|
|
2481
2554
|
}, {
|
|
2482
2555
|
e: undefined,
|
|
2483
2556
|
t: undefined,
|
|
2484
|
-
a: undefined
|
|
2485
|
-
o: undefined
|
|
2557
|
+
a: undefined
|
|
2486
2558
|
});
|
|
2487
2559
|
return _el$51;
|
|
2488
2560
|
})(), _$createComponent(For, {
|
|
@@ -2490,21 +2562,24 @@ function HomeSessions(props) {
|
|
|
2490
2562
|
return visible();
|
|
2491
2563
|
},
|
|
2492
2564
|
children: entry => (() => {
|
|
2493
|
-
var _el$
|
|
2494
|
-
_el$
|
|
2495
|
-
_el$
|
|
2496
|
-
_$insertNode(_el$
|
|
2497
|
-
_$insertNode(_el$
|
|
2498
|
-
_$setProp(_el$
|
|
2499
|
-
_$setProp(_el$
|
|
2500
|
-
_$setProp(_el$
|
|
2501
|
-
_$setProp(_el$
|
|
2502
|
-
_$setProp(_el$
|
|
2565
|
+
var _el$67 = _$createElement("box"),
|
|
2566
|
+
_el$68 = _$createElement("text"),
|
|
2567
|
+
_el$70 = _$createElement("text");
|
|
2568
|
+
_$insertNode(_el$67, _el$68);
|
|
2569
|
+
_$insertNode(_el$67, _el$70);
|
|
2570
|
+
_$setProp(_el$67, "height", 1);
|
|
2571
|
+
_$setProp(_el$67, "flexShrink", 0);
|
|
2572
|
+
_$setProp(_el$67, "overflow", "hidden");
|
|
2573
|
+
_$setProp(_el$67, "flexDirection", "row");
|
|
2574
|
+
_$setProp(_el$67, "gap", 1);
|
|
2575
|
+
_$setProp(_el$67, "onMouseOver", () => setHovered(entry.id));
|
|
2576
|
+
_$setProp(_el$67, "onMouseOut", () => setHovered(undefined));
|
|
2577
|
+
_$setProp(_el$67, "onMouseDown", event => event.button === RIGHT_BUTTON ? openInCmuxWorkspace(props.api, entry) : props.api.route.navigate("session", {
|
|
2503
2578
|
sessionID: entry.id
|
|
2504
2579
|
}));
|
|
2505
|
-
_$insertNode(_el$
|
|
2506
|
-
_$setProp(_el$
|
|
2507
|
-
_$insert(_el$
|
|
2580
|
+
_$insertNode(_el$68, _$createTextNode(`○`));
|
|
2581
|
+
_$setProp(_el$68, "flexShrink", 0);
|
|
2582
|
+
_$insert(_el$67, _$createComponent(Highlighted, {
|
|
2508
2583
|
get text() {
|
|
2509
2584
|
return `${props.pins().sessions.includes(entry.id) ? "★ " : ""}${truncate(entry.title, HOME_TITLE_WIDTH - (props.pins().sessions.includes(entry.id) ? 2 : 0))}`;
|
|
2510
2585
|
},
|
|
@@ -2517,30 +2592,35 @@ function HomeSessions(props) {
|
|
|
2517
2592
|
get matchColor() {
|
|
2518
2593
|
return theme().warning;
|
|
2519
2594
|
}
|
|
2520
|
-
}), _el$
|
|
2521
|
-
_$setProp(_el$
|
|
2522
|
-
_$
|
|
2595
|
+
}), _el$70);
|
|
2596
|
+
_$setProp(_el$70, "flexShrink", 1);
|
|
2597
|
+
_$setProp(_el$70, "wrapMode", "none");
|
|
2598
|
+
_$setProp(_el$70, "overflow", "hidden");
|
|
2599
|
+
_$insert(_el$70, (() => {
|
|
2523
2600
|
var _c$5 = _$memo(() => pendingDelete() === entry.id);
|
|
2524
2601
|
return () => _c$5() ? "option+d again" : `${props.pins().directories.includes(entry.dir) ? "★ " : ""}${prettyDir(entry.dir, home)} · ${ago(entry.updated)}`;
|
|
2525
2602
|
})());
|
|
2526
2603
|
_$effect(_p$ => {
|
|
2527
|
-
var _v$
|
|
2528
|
-
_v$
|
|
2604
|
+
var _v$36 = entry.id === hovered() ? theme().backgroundElement : RGBA.fromInts(0, 0, 0, 0),
|
|
2605
|
+
_v$37 = {
|
|
2529
2606
|
fg: theme().textMuted
|
|
2530
2607
|
},
|
|
2531
|
-
_v$
|
|
2608
|
+
_v$38 = Math.max(0, Math.floor((Math.min(72, dimensions().width) - 4) / 2)),
|
|
2609
|
+
_v$39 = {
|
|
2532
2610
|
fg: pendingDelete() === entry.id ? theme().error : theme().textMuted
|
|
2533
2611
|
};
|
|
2534
|
-
_v$
|
|
2535
|
-
_v$
|
|
2536
|
-
_v$
|
|
2612
|
+
_v$36 !== _p$.e && (_p$.e = _$setProp(_el$67, "backgroundColor", _v$36, _p$.e));
|
|
2613
|
+
_v$37 !== _p$.t && (_p$.t = _$setProp(_el$68, "style", _v$37, _p$.t));
|
|
2614
|
+
_v$38 !== _p$.a && (_p$.a = _$setProp(_el$70, "maxWidth", _v$38, _p$.a));
|
|
2615
|
+
_v$39 !== _p$.o && (_p$.o = _$setProp(_el$70, "style", _v$39, _p$.o));
|
|
2537
2616
|
return _p$;
|
|
2538
2617
|
}, {
|
|
2539
2618
|
e: undefined,
|
|
2540
2619
|
t: undefined,
|
|
2541
|
-
a: undefined
|
|
2620
|
+
a: undefined,
|
|
2621
|
+
o: undefined
|
|
2542
2622
|
});
|
|
2543
|
-
return _el$
|
|
2623
|
+
return _el$67;
|
|
2544
2624
|
})()
|
|
2545
2625
|
}), _$createComponent(Show, {
|
|
2546
2626
|
get when() {
|
|
@@ -2549,6 +2629,10 @@ function HomeSessions(props) {
|
|
|
2549
2629
|
get children() {
|
|
2550
2630
|
var _el$62 = _$createElement("text");
|
|
2551
2631
|
_$insertNode(_el$62, _$createTextNode(`No title or directory matches · option+o to search transcripts`));
|
|
2632
|
+
_$setProp(_el$62, "height", 1);
|
|
2633
|
+
_$setProp(_el$62, "flexShrink", 0);
|
|
2634
|
+
_$setProp(_el$62, "wrapMode", "none");
|
|
2635
|
+
_$setProp(_el$62, "overflow", "hidden");
|
|
2552
2636
|
_$effect(_$p => _$setProp(_el$62, "style", {
|
|
2553
2637
|
fg: theme().textMuted
|
|
2554
2638
|
}, _$p));
|
|
@@ -2557,6 +2641,22 @@ function HomeSessions(props) {
|
|
|
2557
2641
|
})];
|
|
2558
2642
|
}
|
|
2559
2643
|
}));
|
|
2644
|
+
_$effect(_p$ => {
|
|
2645
|
+
var _v$32 = layout().limit > 0,
|
|
2646
|
+
_v$33 = layout().budget,
|
|
2647
|
+
_v$34 = layout().padding,
|
|
2648
|
+
_v$35 = layout().gap;
|
|
2649
|
+
_v$32 !== _p$.e && (_p$.e = _$setProp(_el$49, "visible", _v$32, _p$.e));
|
|
2650
|
+
_v$33 !== _p$.t && (_p$.t = _$setProp(_el$49, "maxHeight", _v$33, _p$.t));
|
|
2651
|
+
_v$34 !== _p$.a && (_p$.a = _$setProp(_el$50, "paddingTop", _v$34, _p$.a));
|
|
2652
|
+
_v$35 !== _p$.o && (_p$.o = _$setProp(_el$50, "gap", _v$35, _p$.o));
|
|
2653
|
+
return _p$;
|
|
2654
|
+
}, {
|
|
2655
|
+
e: undefined,
|
|
2656
|
+
t: undefined,
|
|
2657
|
+
a: undefined,
|
|
2658
|
+
o: undefined
|
|
2659
|
+
});
|
|
2560
2660
|
return _el$49;
|
|
2561
2661
|
})();
|
|
2562
2662
|
}
|
|
@@ -3120,64 +3220,64 @@ const tui = async api => {
|
|
|
3120
3220
|
if (previewTimer) clearTimeout(previewTimer);
|
|
3121
3221
|
};
|
|
3122
3222
|
api.ui.dialog.replace(() => (() => {
|
|
3123
|
-
var _el$
|
|
3223
|
+
var _el$71 = _$createElement("box"),
|
|
3224
|
+
_el$72 = _$createElement("box"),
|
|
3124
3225
|
_el$73 = _$createElement("box"),
|
|
3125
|
-
_el$74 = _$createElement("
|
|
3126
|
-
_el$75 = _$
|
|
3127
|
-
_el$76 = _$
|
|
3128
|
-
_el$77 = _$
|
|
3129
|
-
_el$78 = _$createTextNode(`
|
|
3130
|
-
_el$79 = _$
|
|
3131
|
-
_el$
|
|
3132
|
-
_el$82 = _$createElement("
|
|
3133
|
-
_el$
|
|
3134
|
-
_el$86 = _$createElement("
|
|
3226
|
+
_el$74 = _$createElement("text"),
|
|
3227
|
+
_el$75 = _$createTextNode(`Sessions `),
|
|
3228
|
+
_el$76 = _$createElement("span"),
|
|
3229
|
+
_el$77 = _$createTextNode(`(`),
|
|
3230
|
+
_el$78 = _$createTextNode(`)`),
|
|
3231
|
+
_el$79 = _$createElement("text"),
|
|
3232
|
+
_el$81 = _$createElement("box"),
|
|
3233
|
+
_el$82 = _$createElement("input"),
|
|
3234
|
+
_el$85 = _$createElement("box"),
|
|
3235
|
+
_el$86 = _$createElement("text"),
|
|
3135
3236
|
_el$87 = _$createElement("text"),
|
|
3136
3237
|
_el$88 = _$createElement("text"),
|
|
3137
|
-
_el$89 = _$createElement("
|
|
3138
|
-
_el$
|
|
3139
|
-
_el$93 = _$createElement("
|
|
3140
|
-
|
|
3238
|
+
_el$89 = _$createElement("box"),
|
|
3239
|
+
_el$92 = _$createElement("box"),
|
|
3240
|
+
_el$93 = _$createElement("text");
|
|
3241
|
+
_$insertNode(_el$71, _el$72);
|
|
3242
|
+
_$insertNode(_el$71, _el$89);
|
|
3243
|
+
_$insertNode(_el$71, _el$92);
|
|
3244
|
+
_$setProp(_el$71, "flexDirection", "column");
|
|
3245
|
+
_$setProp(_el$71, "paddingTop", 1);
|
|
3246
|
+
_$setProp(_el$71, "paddingBottom", 1);
|
|
3247
|
+
_$setProp(_el$71, "gap", 1);
|
|
3141
3248
|
_$insertNode(_el$72, _el$73);
|
|
3142
|
-
_$insertNode(_el$72, _el$
|
|
3143
|
-
_$insertNode(_el$72, _el$
|
|
3144
|
-
_$setProp(_el$72, "
|
|
3145
|
-
_$setProp(_el$72, "
|
|
3146
|
-
_$setProp(_el$72, "paddingBottom", 1);
|
|
3147
|
-
_$setProp(_el$72, "gap", 1);
|
|
3249
|
+
_$insertNode(_el$72, _el$81);
|
|
3250
|
+
_$insertNode(_el$72, _el$85);
|
|
3251
|
+
_$setProp(_el$72, "paddingLeft", 4);
|
|
3252
|
+
_$setProp(_el$72, "paddingRight", 4);
|
|
3148
3253
|
_$insertNode(_el$73, _el$74);
|
|
3149
|
-
_$insertNode(_el$73, _el$
|
|
3150
|
-
_$
|
|
3151
|
-
_$setProp(_el$73, "
|
|
3152
|
-
_$setProp(_el$73, "paddingRight", 4);
|
|
3254
|
+
_$insertNode(_el$73, _el$79);
|
|
3255
|
+
_$setProp(_el$73, "flexDirection", "row");
|
|
3256
|
+
_$setProp(_el$73, "justifyContent", "space-between");
|
|
3153
3257
|
_$insertNode(_el$74, _el$75);
|
|
3154
|
-
_$insertNode(_el$74, _el$
|
|
3155
|
-
_$
|
|
3156
|
-
_$
|
|
3157
|
-
_$
|
|
3158
|
-
_$insertNode(_el$
|
|
3159
|
-
_$
|
|
3160
|
-
_$insertNode(_el$
|
|
3161
|
-
_$
|
|
3162
|
-
_$
|
|
3163
|
-
_$setProp(_el$
|
|
3164
|
-
_$
|
|
3165
|
-
_$setProp(_el$82, "paddingTop", 1);
|
|
3166
|
-
_$setProp(_el$83, "focused", true);
|
|
3167
|
-
_$setProp(_el$83, "placeholder", "Search title, directory, transcript…");
|
|
3168
|
-
_$setProp(_el$83, "cursorStyle", {
|
|
3258
|
+
_$insertNode(_el$74, _el$76);
|
|
3259
|
+
_$insertNode(_el$76, _el$77);
|
|
3260
|
+
_$insertNode(_el$76, _el$78);
|
|
3261
|
+
_$insert(_el$76, () => selectableEntries().length, _el$78);
|
|
3262
|
+
_$insertNode(_el$79, _$createTextNode(`esc`));
|
|
3263
|
+
_$setProp(_el$79, "onMouseUp", close);
|
|
3264
|
+
_$insertNode(_el$81, _el$82);
|
|
3265
|
+
_$setProp(_el$81, "paddingTop", 1);
|
|
3266
|
+
_$setProp(_el$82, "focused", true);
|
|
3267
|
+
_$setProp(_el$82, "placeholder", "Search title, directory, transcript…");
|
|
3268
|
+
_$setProp(_el$82, "cursorStyle", {
|
|
3169
3269
|
style: "line",
|
|
3170
3270
|
blinking: false
|
|
3171
3271
|
});
|
|
3172
|
-
_$setProp(_el$
|
|
3272
|
+
_$setProp(_el$82, "onInput", value => {
|
|
3173
3273
|
if (pendingDelete()) return;
|
|
3174
3274
|
setQuery(value);
|
|
3175
3275
|
});
|
|
3176
|
-
_$setProp(_el$
|
|
3276
|
+
_$setProp(_el$82, "onSubmit", () => {
|
|
3177
3277
|
if (confirmArmed()) return;
|
|
3178
3278
|
choose();
|
|
3179
3279
|
});
|
|
3180
|
-
_$setProp(_el$
|
|
3280
|
+
_$setProp(_el$82, "onKeyDown", event => {
|
|
3181
3281
|
if (event.name === "escape") {
|
|
3182
3282
|
event.preventDefault();
|
|
3183
3283
|
handleEscape();
|
|
@@ -3209,92 +3309,92 @@ const tui = async api => {
|
|
|
3209
3309
|
}
|
|
3210
3310
|
}
|
|
3211
3311
|
});
|
|
3212
|
-
_$insert(_el$
|
|
3312
|
+
_$insert(_el$72, _$createComponent(Show, {
|
|
3213
3313
|
get when() {
|
|
3214
3314
|
return coverageLabel();
|
|
3215
3315
|
},
|
|
3216
3316
|
get children() {
|
|
3217
|
-
var _el$
|
|
3218
|
-
_el$
|
|
3219
|
-
_$insertNode(_el$
|
|
3220
|
-
_$setProp(_el$
|
|
3221
|
-
_$insert(_el$
|
|
3222
|
-
_$effect(_$p => _$setProp(_el$
|
|
3317
|
+
var _el$83 = _$createElement("box"),
|
|
3318
|
+
_el$84 = _$createElement("text");
|
|
3319
|
+
_$insertNode(_el$83, _el$84);
|
|
3320
|
+
_$setProp(_el$83, "paddingTop", 1);
|
|
3321
|
+
_$insert(_el$84, coverageLabel);
|
|
3322
|
+
_$effect(_$p => _$setProp(_el$84, "style", {
|
|
3223
3323
|
fg: api.theme.current.textMuted
|
|
3224
3324
|
}, _$p));
|
|
3225
|
-
return _el$
|
|
3325
|
+
return _el$83;
|
|
3226
3326
|
}
|
|
3227
|
-
}), _el$
|
|
3228
|
-
_$insertNode(_el$
|
|
3229
|
-
_$insertNode(_el$
|
|
3230
|
-
_$insertNode(_el$
|
|
3231
|
-
_$setProp(_el$
|
|
3232
|
-
_$setProp(_el$
|
|
3233
|
-
_$setProp(_el$
|
|
3234
|
-
_$setProp(_el$
|
|
3327
|
+
}), _el$85);
|
|
3328
|
+
_$insertNode(_el$85, _el$86);
|
|
3329
|
+
_$insertNode(_el$85, _el$87);
|
|
3330
|
+
_$insertNode(_el$85, _el$88);
|
|
3331
|
+
_$setProp(_el$85, "flexDirection", "row");
|
|
3332
|
+
_$setProp(_el$85, "gap", 2);
|
|
3333
|
+
_$setProp(_el$85, "paddingTop", 1);
|
|
3334
|
+
_$setProp(_el$86, "onMouseDown", () => {
|
|
3235
3335
|
const group = currentProject();
|
|
3236
3336
|
if (group) setScope(scope() === group ? undefined : group);else api.ui.toast({
|
|
3237
3337
|
message: "No current project to filter",
|
|
3238
3338
|
variant: "info"
|
|
3239
3339
|
});
|
|
3240
3340
|
});
|
|
3241
|
-
_$insert(_el$
|
|
3341
|
+
_$insert(_el$86, (() => {
|
|
3242
3342
|
var _c$6 = _$memo(() => !!scope());
|
|
3243
3343
|
return () => _c$6() ? `Project: ${truncate(scope(), 22)}` : "Project: all";
|
|
3244
3344
|
})());
|
|
3245
|
-
_$setProp(_el$
|
|
3246
|
-
_$insert(_el$
|
|
3247
|
-
_$setProp(_el$
|
|
3248
|
-
_$insert(_el$
|
|
3249
|
-
_$setProp(_el$
|
|
3250
|
-
_$setProp(_el$
|
|
3251
|
-
_$setProp(_el$
|
|
3252
|
-
_$setProp(_el$
|
|
3345
|
+
_$setProp(_el$87, "onMouseDown", () => setWaitingOnly(value => !value));
|
|
3346
|
+
_$insert(_el$87, () => waitingOnly() ? "● Needs input" : "○ Needs input");
|
|
3347
|
+
_$setProp(_el$88, "onMouseDown", () => setPinnedOnly(value => !value));
|
|
3348
|
+
_$insert(_el$88, () => pinnedOnly() ? "★ Pinned" : "☆ Pinned");
|
|
3349
|
+
_$setProp(_el$89, "flexDirection", "column");
|
|
3350
|
+
_$setProp(_el$89, "flexGrow", 1);
|
|
3351
|
+
_$setProp(_el$89, "overflow", "hidden");
|
|
3352
|
+
_$setProp(_el$89, "onMouseScroll", event => {
|
|
3253
3353
|
scrollPicker(event.scroll);
|
|
3254
3354
|
});
|
|
3255
|
-
_$insert(_el$
|
|
3355
|
+
_$insert(_el$89, _$createComponent(For, {
|
|
3256
3356
|
get each() {
|
|
3257
3357
|
return visiblePickerRows();
|
|
3258
3358
|
},
|
|
3259
3359
|
children: row => {
|
|
3260
3360
|
if (row.kind === "group") return (() => {
|
|
3261
|
-
var _el$
|
|
3361
|
+
var _el$106 = _$createElement("box"),
|
|
3362
|
+
_el$107 = _$createElement("text"),
|
|
3262
3363
|
_el$108 = _$createElement("text"),
|
|
3263
|
-
_el$109 = _$
|
|
3264
|
-
_el$110 = _$createTextNode(`
|
|
3265
|
-
|
|
3266
|
-
_$insertNode(_el$
|
|
3267
|
-
_$
|
|
3268
|
-
_$setProp(_el$
|
|
3269
|
-
_$setProp(_el$
|
|
3270
|
-
_$setProp(_el$
|
|
3271
|
-
_$setProp(_el$107, "onMouseDown", () => setCollapsed(state => ({
|
|
3364
|
+
_el$109 = _$createTextNode(` (`),
|
|
3365
|
+
_el$110 = _$createTextNode(`)`);
|
|
3366
|
+
_$insertNode(_el$106, _el$107);
|
|
3367
|
+
_$insertNode(_el$106, _el$108);
|
|
3368
|
+
_$setProp(_el$106, "flexDirection", "row");
|
|
3369
|
+
_$setProp(_el$106, "paddingLeft", 4);
|
|
3370
|
+
_$setProp(_el$106, "paddingRight", 4);
|
|
3371
|
+
_$setProp(_el$106, "onMouseDown", () => setCollapsed(state => ({
|
|
3272
3372
|
...state,
|
|
3273
3373
|
[row.dir]: !state[row.dir]
|
|
3274
3374
|
})));
|
|
3275
|
-
_$setProp(_el$
|
|
3276
|
-
_$setProp(_el$
|
|
3277
|
-
_$setProp(_el$
|
|
3278
|
-
_$insert(_el$
|
|
3279
|
-
_$insert(_el$
|
|
3280
|
-
_$insert(_el$
|
|
3281
|
-
_$insertNode(_el$
|
|
3282
|
-
_$insertNode(_el$
|
|
3283
|
-
_$setProp(_el$
|
|
3284
|
-
_$insert(_el$
|
|
3375
|
+
_$setProp(_el$107, "flexGrow", 1);
|
|
3376
|
+
_$setProp(_el$107, "flexShrink", 1);
|
|
3377
|
+
_$setProp(_el$107, "wrapMode", "none");
|
|
3378
|
+
_$insert(_el$107, () => collapsed()[row.dir] && !query().trim() ? "▸ " : "▾ ", null);
|
|
3379
|
+
_$insert(_el$107, () => row.pinned ? "★ " : "", null);
|
|
3380
|
+
_$insert(_el$107, () => row.label, null);
|
|
3381
|
+
_$insertNode(_el$108, _el$109);
|
|
3382
|
+
_$insertNode(_el$108, _el$110);
|
|
3383
|
+
_$setProp(_el$108, "flexShrink", 0);
|
|
3384
|
+
_$insert(_el$108, () => row.count, _el$110);
|
|
3285
3385
|
_$effect(_p$ => {
|
|
3286
|
-
var _v$
|
|
3287
|
-
_v$
|
|
3386
|
+
var _v$60 = row.continued ? 0 : 1,
|
|
3387
|
+
_v$61 = {
|
|
3288
3388
|
fg: api.theme.current.accent
|
|
3289
3389
|
},
|
|
3290
|
-
_v$
|
|
3291
|
-
_v$
|
|
3390
|
+
_v$62 = TextAttributes.BOLD,
|
|
3391
|
+
_v$63 = {
|
|
3292
3392
|
fg: api.theme.current.textMuted
|
|
3293
3393
|
};
|
|
3294
|
-
_v$
|
|
3295
|
-
_v$
|
|
3296
|
-
_v$
|
|
3297
|
-
_v$
|
|
3394
|
+
_v$60 !== _p$.e && (_p$.e = _$setProp(_el$106, "paddingTop", _v$60, _p$.e));
|
|
3395
|
+
_v$61 !== _p$.t && (_p$.t = _$setProp(_el$107, "style", _v$61, _p$.t));
|
|
3396
|
+
_v$62 !== _p$.a && (_p$.a = _$setProp(_el$107, "attributes", _v$62, _p$.a));
|
|
3397
|
+
_v$63 !== _p$.o && (_p$.o = _$setProp(_el$108, "style", _v$63, _p$.o));
|
|
3298
3398
|
return _p$;
|
|
3299
3399
|
}, {
|
|
3300
3400
|
e: undefined,
|
|
@@ -3302,46 +3402,46 @@ const tui = async api => {
|
|
|
3302
3402
|
a: undefined,
|
|
3303
3403
|
o: undefined
|
|
3304
3404
|
});
|
|
3305
|
-
return _el$
|
|
3405
|
+
return _el$106;
|
|
3306
3406
|
})();
|
|
3307
3407
|
const excerpt = createMemo(() => transcriptMatchExcerpt(searchIndex().get(row.entry.id), row.entry, query()));
|
|
3308
3408
|
return (() => {
|
|
3309
|
-
var _el$
|
|
3310
|
-
_el$
|
|
3311
|
-
_el$
|
|
3312
|
-
_el$
|
|
3313
|
-
_$insertNode(_el$
|
|
3314
|
-
_$setProp(_el$
|
|
3315
|
-
_$setProp(_el$
|
|
3316
|
-
_$setProp(_el$
|
|
3317
|
-
_$setProp(_el$
|
|
3409
|
+
var _el$111 = _$createElement("box"),
|
|
3410
|
+
_el$112 = _$createElement("box"),
|
|
3411
|
+
_el$113 = _$createElement("text"),
|
|
3412
|
+
_el$116 = _$createElement("text");
|
|
3413
|
+
_$insertNode(_el$111, _el$112);
|
|
3414
|
+
_$setProp(_el$111, "flexDirection", "column");
|
|
3415
|
+
_$setProp(_el$111, "paddingLeft", 6);
|
|
3416
|
+
_$setProp(_el$111, "paddingRight", 4);
|
|
3417
|
+
_$setProp(_el$111, "onMouseMove", () => {
|
|
3318
3418
|
// Repainting under a stationary pointer must not select
|
|
3319
3419
|
// another row while the wheel is moving the viewport.
|
|
3320
3420
|
const index = selectableEntries().findIndex(entry => entry.id === row.entry.id);
|
|
3321
3421
|
if (index >= 0) setCursor(index);
|
|
3322
3422
|
});
|
|
3323
|
-
_$setProp(_el$
|
|
3324
|
-
_$insertNode(_el$
|
|
3325
|
-
_$insertNode(_el$
|
|
3326
|
-
_$setProp(_el$
|
|
3327
|
-
_$setProp(_el$
|
|
3328
|
-
_$setProp(_el$
|
|
3329
|
-
_$insert(_el$
|
|
3330
|
-
_$insert(_el$
|
|
3423
|
+
_$setProp(_el$111, "onMouseDown", event => event.button === RIGHT_BUTTON ? (cleanup(), api.ui.dialog.clear(), openInCmuxWorkspace(api, row.entry)) : choose(row.entry));
|
|
3424
|
+
_$insertNode(_el$112, _el$113);
|
|
3425
|
+
_$insertNode(_el$112, _el$116);
|
|
3426
|
+
_$setProp(_el$112, "flexDirection", "row");
|
|
3427
|
+
_$setProp(_el$112, "gap", 1);
|
|
3428
|
+
_$setProp(_el$113, "flexShrink", 0);
|
|
3429
|
+
_$insert(_el$113, () => row.last ? "└" : "├");
|
|
3430
|
+
_$insert(_el$112, _$createComponent(Show, {
|
|
3331
3431
|
get when() {
|
|
3332
3432
|
return row.entry.id === currentSessionID();
|
|
3333
3433
|
},
|
|
3334
3434
|
get children() {
|
|
3335
|
-
var _el$
|
|
3336
|
-
_$insertNode(_el$
|
|
3337
|
-
_$setProp(_el$
|
|
3338
|
-
_$effect(_$p => _$setProp(_el$
|
|
3435
|
+
var _el$114 = _$createElement("text");
|
|
3436
|
+
_$insertNode(_el$114, _$createTextNode(`●`));
|
|
3437
|
+
_$setProp(_el$114, "flexShrink", 0);
|
|
3438
|
+
_$effect(_$p => _$setProp(_el$114, "style", {
|
|
3339
3439
|
fg: row.entry.id === selectableEntries()[cursor()]?.id ? api.theme.current.text : api.theme.current.primary
|
|
3340
3440
|
}, _$p));
|
|
3341
|
-
return _el$
|
|
3441
|
+
return _el$114;
|
|
3342
3442
|
}
|
|
3343
|
-
}), _el$
|
|
3344
|
-
_$insert(_el$
|
|
3443
|
+
}), _el$116);
|
|
3444
|
+
_$insert(_el$112, _$createComponent(Highlighted, {
|
|
3345
3445
|
get text() {
|
|
3346
3446
|
return `${pins().sessions.includes(row.entry.id) ? "★ " : ""}${truncate(row.entry.title, pins().sessions.includes(row.entry.id) ? 59 : 61)}`;
|
|
3347
3447
|
},
|
|
@@ -3357,26 +3457,26 @@ const tui = async api => {
|
|
|
3357
3457
|
get matchColor() {
|
|
3358
3458
|
return _$memo(() => row.entry.id === selectableEntries()[cursor()]?.id)() ? api.theme.current.text : api.theme.current.warning;
|
|
3359
3459
|
}
|
|
3360
|
-
}), _el$
|
|
3361
|
-
_$setProp(_el$
|
|
3362
|
-
_$insert(_el$
|
|
3460
|
+
}), _el$116);
|
|
3461
|
+
_$setProp(_el$116, "flexShrink", 0);
|
|
3462
|
+
_$insert(_el$116, (() => {
|
|
3363
3463
|
var _c$0 = _$memo(() => pendingDelete()?.id === row.entry.id);
|
|
3364
3464
|
return () => _c$0() ? "press y to delete" : `${ago(row.entry.updated)}${query().trim() && !`${row.entry.title} ${row.entry.dir}`.toLowerCase().includes(query().trim().toLowerCase()) ? " · transcript match" : ""}`;
|
|
3365
3465
|
})());
|
|
3366
|
-
_$insert(_el$
|
|
3466
|
+
_$insert(_el$111, _$createComponent(Show, {
|
|
3367
3467
|
get when() {
|
|
3368
3468
|
return excerpt();
|
|
3369
3469
|
},
|
|
3370
3470
|
children: match => (() => {
|
|
3371
|
-
var _el$
|
|
3372
|
-
_el$
|
|
3373
|
-
_$insertNode(_el$
|
|
3374
|
-
_$setProp(_el$
|
|
3375
|
-
_$setProp(_el$
|
|
3376
|
-
_$setProp(_el$
|
|
3377
|
-
_$insertNode(_el$
|
|
3378
|
-
_$setProp(_el$
|
|
3379
|
-
_$insert(_el$
|
|
3471
|
+
var _el$117 = _$createElement("box"),
|
|
3472
|
+
_el$118 = _$createElement("text");
|
|
3473
|
+
_$insertNode(_el$117, _el$118);
|
|
3474
|
+
_$setProp(_el$117, "flexDirection", "row");
|
|
3475
|
+
_$setProp(_el$117, "gap", 1);
|
|
3476
|
+
_$setProp(_el$117, "paddingLeft", 2);
|
|
3477
|
+
_$insertNode(_el$118, _$createTextNode(`↳`));
|
|
3478
|
+
_$setProp(_el$118, "flexShrink", 0);
|
|
3479
|
+
_$insert(_el$117, _$createComponent(Highlighted, {
|
|
3380
3480
|
get text() {
|
|
3381
3481
|
return match();
|
|
3382
3482
|
},
|
|
@@ -3390,140 +3490,140 @@ const tui = async api => {
|
|
|
3390
3490
|
return api.theme.current.warning;
|
|
3391
3491
|
}
|
|
3392
3492
|
}), null);
|
|
3393
|
-
_$effect(_$p => _$setProp(_el$
|
|
3493
|
+
_$effect(_$p => _$setProp(_el$118, "style", {
|
|
3394
3494
|
fg: api.theme.current.textMuted
|
|
3395
3495
|
}, _$p));
|
|
3396
|
-
return _el$
|
|
3496
|
+
return _el$117;
|
|
3397
3497
|
})()
|
|
3398
3498
|
}), null);
|
|
3399
3499
|
_$effect(_p$ => {
|
|
3400
|
-
var _v$
|
|
3401
|
-
_v$
|
|
3500
|
+
var _v$64 = row.entry.id === selectableEntries()[cursor()]?.id ? api.theme.current.backgroundElement : RGBA.fromInts(0, 0, 0, 0),
|
|
3501
|
+
_v$65 = {
|
|
3402
3502
|
fg: row.entry.id === selectableEntries()[cursor()]?.id ? api.theme.current.text : api.theme.current.textMuted
|
|
3403
3503
|
},
|
|
3404
|
-
_v$
|
|
3504
|
+
_v$66 = {
|
|
3405
3505
|
fg: pendingDelete()?.id === row.entry.id ? api.theme.current.error : row.entry.id === selectableEntries()[cursor()]?.id ? api.theme.current.text : api.theme.current.textMuted
|
|
3406
3506
|
};
|
|
3407
|
-
_v$
|
|
3408
|
-
_v$
|
|
3409
|
-
_v$
|
|
3507
|
+
_v$64 !== _p$.e && (_p$.e = _$setProp(_el$111, "backgroundColor", _v$64, _p$.e));
|
|
3508
|
+
_v$65 !== _p$.t && (_p$.t = _$setProp(_el$113, "style", _v$65, _p$.t));
|
|
3509
|
+
_v$66 !== _p$.a && (_p$.a = _$setProp(_el$116, "style", _v$66, _p$.a));
|
|
3410
3510
|
return _p$;
|
|
3411
3511
|
}, {
|
|
3412
3512
|
e: undefined,
|
|
3413
3513
|
t: undefined,
|
|
3414
3514
|
a: undefined
|
|
3415
3515
|
});
|
|
3416
|
-
return _el$
|
|
3516
|
+
return _el$111;
|
|
3417
3517
|
})();
|
|
3418
3518
|
}
|
|
3419
3519
|
}), null);
|
|
3420
|
-
_$insert(_el$
|
|
3520
|
+
_$insert(_el$89, _$createComponent(Show, {
|
|
3421
3521
|
get when() {
|
|
3422
3522
|
return matchedGroups().length === 0;
|
|
3423
3523
|
},
|
|
3424
3524
|
get children() {
|
|
3425
|
-
var _el$
|
|
3426
|
-
_el$
|
|
3427
|
-
_$insertNode(_el$
|
|
3428
|
-
_$setProp(_el$
|
|
3429
|
-
_$setProp(_el$
|
|
3430
|
-
_$insert(_el$
|
|
3525
|
+
var _el$90 = _$createElement("box"),
|
|
3526
|
+
_el$91 = _$createElement("text");
|
|
3527
|
+
_$insertNode(_el$90, _el$91);
|
|
3528
|
+
_$setProp(_el$90, "paddingLeft", 4);
|
|
3529
|
+
_$setProp(_el$90, "paddingRight", 4);
|
|
3530
|
+
_$insert(_el$91, (() => {
|
|
3431
3531
|
var _c$7 = _$memo(() => !!(waitingOnly() && waitingCoverage() === "loading"));
|
|
3432
3532
|
return () => _c$7() ? "Checking which sessions need input…" : _$memo(() => !!(waitingOnly() && waitingCoverage() === "unavailable"))() ? "Needs-input data unavailable · turn off the filter" : _$memo(() => !!(pinnedOnly() && pins().sessions.length === 0))() ? "No pinned sessions yet · ctrl+s pins a session" : _$memo(() => !!(!indexProgress().complete && query().trim()))() ? "No matches yet · still searching transcripts…" : _$memo(() => !!scope())() ? `No matches in ${scope()} · ctrl+g for all projects` : waitingOnly() ? "No sessions need input with these filters" : "No sessions match · try another search";
|
|
3433
3533
|
})());
|
|
3434
|
-
_$effect(_$p => _$setProp(_el$
|
|
3534
|
+
_$effect(_$p => _$setProp(_el$91, "style", {
|
|
3435
3535
|
fg: api.theme.current.textMuted
|
|
3436
3536
|
}, _$p));
|
|
3437
|
-
return _el$
|
|
3537
|
+
return _el$90;
|
|
3438
3538
|
}
|
|
3439
3539
|
}), null);
|
|
3440
|
-
_$insertNode(_el$
|
|
3441
|
-
_$setProp(_el$
|
|
3442
|
-
_$setProp(_el$
|
|
3443
|
-
_$setProp(_el$
|
|
3444
|
-
_$setProp(_el$
|
|
3445
|
-
_$insert(_el$
|
|
3540
|
+
_$insertNode(_el$92, _el$93);
|
|
3541
|
+
_$setProp(_el$92, "paddingLeft", 4);
|
|
3542
|
+
_$setProp(_el$92, "paddingRight", 4);
|
|
3543
|
+
_$setProp(_el$92, "flexShrink", 0);
|
|
3544
|
+
_$setProp(_el$92, "flexDirection", "column");
|
|
3545
|
+
_$insert(_el$93, (() => {
|
|
3446
3546
|
var _c$8 = _$memo(() => !!pendingDelete());
|
|
3447
3547
|
return () => _c$8() ? `Delete "${truncate(pendingDelete().title, 40)}"? y confirm · n cancel` : "↑↓ move · enter open · ctrl+g project · option+w input · option+s pinned · option+p preview";
|
|
3448
3548
|
})());
|
|
3449
|
-
_$insert(_el$
|
|
3549
|
+
_$insert(_el$92, _$createComponent(Show, {
|
|
3450
3550
|
get when() {
|
|
3451
3551
|
return !pendingDelete();
|
|
3452
3552
|
},
|
|
3453
3553
|
get children() {
|
|
3454
|
-
var _el$
|
|
3455
|
-
_$insertNode(_el$
|
|
3456
|
-
_$effect(_$p => _$setProp(_el$
|
|
3554
|
+
var _el$94 = _$createElement("text");
|
|
3555
|
+
_$insertNode(_el$94, _$createTextNode(`ctrl+s/d pin · option+d delete · ctrl+f fork · esc close`));
|
|
3556
|
+
_$effect(_$p => _$setProp(_el$94, "style", {
|
|
3457
3557
|
fg: api.theme.current.textMuted
|
|
3458
3558
|
}, _$p));
|
|
3459
|
-
return _el$
|
|
3559
|
+
return _el$94;
|
|
3460
3560
|
}
|
|
3461
3561
|
}), null);
|
|
3462
|
-
_$insert(_el$
|
|
3562
|
+
_$insert(_el$71, _$createComponent(Show, {
|
|
3463
3563
|
get when() {
|
|
3464
3564
|
return showPreview();
|
|
3465
3565
|
},
|
|
3466
3566
|
get children() {
|
|
3467
|
-
var _el$
|
|
3468
|
-
_el$
|
|
3567
|
+
var _el$96 = _$createElement("box"),
|
|
3568
|
+
_el$97 = _$createElement("box"),
|
|
3569
|
+
_el$98 = _$createElement("text"),
|
|
3469
3570
|
_el$99 = _$createElement("text"),
|
|
3470
|
-
_el$
|
|
3471
|
-
_el$104 = _$createElement("
|
|
3472
|
-
|
|
3571
|
+
_el$103 = _$createElement("scrollbox"),
|
|
3572
|
+
_el$104 = _$createElement("text");
|
|
3573
|
+
_$insertNode(_el$96, _el$97);
|
|
3574
|
+
_$insertNode(_el$96, _el$103);
|
|
3575
|
+
_$insertNode(_el$96, _el$104);
|
|
3576
|
+
_$setProp(_el$96, "position", "absolute");
|
|
3577
|
+
_$setProp(_el$96, "left", 0);
|
|
3578
|
+
_$setProp(_el$96, "top", 0);
|
|
3579
|
+
_$setProp(_el$96, "width", dialogWidth);
|
|
3580
|
+
_$setProp(_el$96, "flexDirection", "column");
|
|
3581
|
+
_$setProp(_el$96, "paddingLeft", 4);
|
|
3582
|
+
_$setProp(_el$96, "paddingRight", 4);
|
|
3583
|
+
_$setProp(_el$96, "paddingTop", 1);
|
|
3584
|
+
_$setProp(_el$96, "paddingBottom", 1);
|
|
3585
|
+
_$setProp(_el$96, "gap", 1);
|
|
3473
3586
|
_$insertNode(_el$97, _el$98);
|
|
3474
|
-
_$insertNode(_el$97, _el$
|
|
3475
|
-
_$
|
|
3476
|
-
_$setProp(_el$97, "
|
|
3477
|
-
_$
|
|
3478
|
-
_$setProp(_el$97, "top", 0);
|
|
3479
|
-
_$setProp(_el$97, "width", dialogWidth);
|
|
3480
|
-
_$setProp(_el$97, "flexDirection", "column");
|
|
3481
|
-
_$setProp(_el$97, "paddingLeft", 4);
|
|
3482
|
-
_$setProp(_el$97, "paddingRight", 4);
|
|
3483
|
-
_$setProp(_el$97, "paddingTop", 1);
|
|
3484
|
-
_$setProp(_el$97, "paddingBottom", 1);
|
|
3485
|
-
_$setProp(_el$97, "gap", 1);
|
|
3486
|
-
_$insertNode(_el$98, _el$99);
|
|
3487
|
-
_$insertNode(_el$98, _el$100);
|
|
3488
|
-
_$setProp(_el$98, "flexDirection", "row");
|
|
3489
|
-
_$setProp(_el$98, "justifyContent", "space-between");
|
|
3490
|
-
_$insert(_el$99, (() => {
|
|
3587
|
+
_$insertNode(_el$97, _el$99);
|
|
3588
|
+
_$setProp(_el$97, "flexDirection", "row");
|
|
3589
|
+
_$setProp(_el$97, "justifyContent", "space-between");
|
|
3590
|
+
_$insert(_el$98, (() => {
|
|
3491
3591
|
var _c$9 = _$memo(() => !!previewID());
|
|
3492
3592
|
return () => _c$9() ? truncate(selectableEntries()[cursor()].title, dialogWidth - 18) : "Preview";
|
|
3493
3593
|
})());
|
|
3494
|
-
_$insertNode(_el$
|
|
3495
|
-
_$insert(_el$
|
|
3594
|
+
_$insertNode(_el$99, _$createTextNode(`esc close`));
|
|
3595
|
+
_$insert(_el$96, _$createComponent(Show, {
|
|
3496
3596
|
get when() {
|
|
3497
3597
|
return previewID();
|
|
3498
3598
|
},
|
|
3499
3599
|
get children() {
|
|
3500
|
-
var _el$
|
|
3501
|
-
_el$
|
|
3502
|
-
_$insertNode(_el$
|
|
3503
|
-
_$insert(_el$
|
|
3504
|
-
_$insert(_el$
|
|
3505
|
-
_$effect(_$p => _$setProp(_el$
|
|
3600
|
+
var _el$101 = _$createElement("text"),
|
|
3601
|
+
_el$102 = _$createTextNode(` · `);
|
|
3602
|
+
_$insertNode(_el$101, _el$102);
|
|
3603
|
+
_$insert(_el$101, () => prettyDir(selectableEntries()[cursor()].dir, process.env.HOME ?? ""), _el$102);
|
|
3604
|
+
_$insert(_el$101, () => ago(selectableEntries()[cursor()].updated), null);
|
|
3605
|
+
_$effect(_$p => _$setProp(_el$101, "style", {
|
|
3506
3606
|
fg: api.theme.current.textMuted
|
|
3507
3607
|
}, _$p));
|
|
3508
|
-
return _el$
|
|
3608
|
+
return _el$101;
|
|
3509
3609
|
}
|
|
3510
|
-
}), _el$
|
|
3511
|
-
_$setProp(_el$
|
|
3512
|
-
_$setProp(_el$
|
|
3610
|
+
}), _el$103);
|
|
3611
|
+
_$setProp(_el$103, "flexGrow", 1);
|
|
3612
|
+
_$setProp(_el$103, "scrollbarOptions", {
|
|
3513
3613
|
visible: false
|
|
3514
3614
|
});
|
|
3515
|
-
_$insert(_el$
|
|
3615
|
+
_$insert(_el$103, _$createComponent(Show, {
|
|
3516
3616
|
get when() {
|
|
3517
3617
|
return previewID();
|
|
3518
3618
|
},
|
|
3519
3619
|
get fallback() {
|
|
3520
3620
|
return (() => {
|
|
3521
|
-
var _el$
|
|
3522
|
-
_$insertNode(_el$
|
|
3523
|
-
_$effect(_$p => _$setProp(_el$
|
|
3621
|
+
var _el$120 = _$createElement("text");
|
|
3622
|
+
_$insertNode(_el$120, _$createTextNode(`Select a session to preview`));
|
|
3623
|
+
_$effect(_$p => _$setProp(_el$120, "style", {
|
|
3524
3624
|
fg: api.theme.current.textMuted
|
|
3525
3625
|
}, _$p));
|
|
3526
|
-
return _el$
|
|
3626
|
+
return _el$120;
|
|
3527
3627
|
})();
|
|
3528
3628
|
},
|
|
3529
3629
|
get children() {
|
|
@@ -3533,55 +3633,55 @@ const tui = async api => {
|
|
|
3533
3633
|
},
|
|
3534
3634
|
get fallback() {
|
|
3535
3635
|
return (() => {
|
|
3536
|
-
var _el$
|
|
3537
|
-
_$insertNode(_el$
|
|
3538
|
-
_$effect(_$p => _$setProp(_el$
|
|
3636
|
+
var _el$122 = _$createElement("text");
|
|
3637
|
+
_$insertNode(_el$122, _$createTextNode(`Loading…`));
|
|
3638
|
+
_$effect(_$p => _$setProp(_el$122, "style", {
|
|
3539
3639
|
fg: api.theme.current.textMuted
|
|
3540
3640
|
}, _$p));
|
|
3541
|
-
return _el$
|
|
3641
|
+
return _el$122;
|
|
3542
3642
|
})();
|
|
3543
3643
|
},
|
|
3544
3644
|
children: text => getMarkdownStyle(api.theme.current, api.renderer?.nativeSession) ? (() => {
|
|
3545
|
-
var _el$
|
|
3645
|
+
var _el$124 = _$createElement("markdown");
|
|
3546
3646
|
_$effect(_p$ => {
|
|
3547
|
-
var _v$
|
|
3548
|
-
_v$
|
|
3549
|
-
_v$
|
|
3550
|
-
_v$
|
|
3551
|
-
_v$
|
|
3552
|
-
_v$
|
|
3647
|
+
var _v$67 = text(),
|
|
3648
|
+
_v$68 = getMarkdownStyle(api.theme.current, api.renderer?.nativeSession),
|
|
3649
|
+
_v$69 = getTreeSitterClient();
|
|
3650
|
+
_v$67 !== _p$.e && (_p$.e = _$setProp(_el$124, "content", _v$67, _p$.e));
|
|
3651
|
+
_v$68 !== _p$.t && (_p$.t = _$setProp(_el$124, "syntaxStyle", _v$68, _p$.t));
|
|
3652
|
+
_v$69 !== _p$.a && (_p$.a = _$setProp(_el$124, "treeSitterClient", _v$69, _p$.a));
|
|
3553
3653
|
return _p$;
|
|
3554
3654
|
}, {
|
|
3555
3655
|
e: undefined,
|
|
3556
3656
|
t: undefined,
|
|
3557
3657
|
a: undefined
|
|
3558
3658
|
});
|
|
3559
|
-
return _el$
|
|
3659
|
+
return _el$124;
|
|
3560
3660
|
})() : (() => {
|
|
3561
|
-
var _el$
|
|
3562
|
-
_$setProp(_el$
|
|
3563
|
-
_$insert(_el$
|
|
3564
|
-
return _el$
|
|
3661
|
+
var _el$125 = _$createElement("text");
|
|
3662
|
+
_$setProp(_el$125, "wrapMode", "word");
|
|
3663
|
+
_$insert(_el$125, text);
|
|
3664
|
+
return _el$125;
|
|
3565
3665
|
})()
|
|
3566
3666
|
});
|
|
3567
3667
|
}
|
|
3568
3668
|
}));
|
|
3569
|
-
_$insertNode(_el$
|
|
3669
|
+
_$insertNode(_el$104, _$createTextNode(`↑↓ switch session · esc back to picker`));
|
|
3570
3670
|
_$effect(_p$ => {
|
|
3571
|
-
var _v$
|
|
3572
|
-
_v$
|
|
3573
|
-
_v$
|
|
3574
|
-
_v$
|
|
3671
|
+
var _v$40 = dialogHeight(),
|
|
3672
|
+
_v$41 = api.theme.current.backgroundPanel,
|
|
3673
|
+
_v$42 = TextAttributes.BOLD,
|
|
3674
|
+
_v$43 = {
|
|
3575
3675
|
fg: api.theme.current.textMuted
|
|
3576
3676
|
},
|
|
3577
|
-
_v$
|
|
3677
|
+
_v$44 = {
|
|
3578
3678
|
fg: api.theme.current.textMuted
|
|
3579
3679
|
};
|
|
3580
|
-
_v$
|
|
3581
|
-
_v$
|
|
3582
|
-
_v$
|
|
3583
|
-
_v$
|
|
3584
|
-
_v$
|
|
3680
|
+
_v$40 !== _p$.e && (_p$.e = _$setProp(_el$96, "height", _v$40, _p$.e));
|
|
3681
|
+
_v$41 !== _p$.t && (_p$.t = _$setProp(_el$96, "backgroundColor", _v$41, _p$.t));
|
|
3682
|
+
_v$42 !== _p$.a && (_p$.a = _$setProp(_el$98, "attributes", _v$42, _p$.a));
|
|
3683
|
+
_v$43 !== _p$.o && (_p$.o = _$setProp(_el$99, "style", _v$43, _p$.o));
|
|
3684
|
+
_v$44 !== _p$.i && (_p$.i = _$setProp(_el$104, "style", _v$44, _p$.i));
|
|
3585
3685
|
return _p$;
|
|
3586
3686
|
}, {
|
|
3587
3687
|
e: undefined,
|
|
@@ -3590,52 +3690,52 @@ const tui = async api => {
|
|
|
3590
3690
|
o: undefined,
|
|
3591
3691
|
i: undefined
|
|
3592
3692
|
});
|
|
3593
|
-
return _el$
|
|
3693
|
+
return _el$96;
|
|
3594
3694
|
}
|
|
3595
3695
|
}), null);
|
|
3596
3696
|
_$effect(_p$ => {
|
|
3597
|
-
var _v$
|
|
3598
|
-
_v$
|
|
3599
|
-
_v$
|
|
3600
|
-
_v$
|
|
3601
|
-
_v$
|
|
3697
|
+
var _v$45 = dialogHeight(),
|
|
3698
|
+
_v$46 = dialogOffset(),
|
|
3699
|
+
_v$47 = api.theme.current.backgroundPanel,
|
|
3700
|
+
_v$48 = TextAttributes.BOLD,
|
|
3701
|
+
_v$49 = {
|
|
3602
3702
|
fg: api.theme.current.textMuted
|
|
3603
3703
|
},
|
|
3604
|
-
_v$
|
|
3704
|
+
_v$50 = {
|
|
3605
3705
|
fg: api.theme.current.textMuted
|
|
3606
3706
|
},
|
|
3607
|
-
_v$
|
|
3608
|
-
_v$
|
|
3609
|
-
_v$
|
|
3610
|
-
_v$
|
|
3611
|
-
_v$
|
|
3612
|
-
_v$
|
|
3707
|
+
_v$51 = query(),
|
|
3708
|
+
_v$52 = api.theme.current.textMuted,
|
|
3709
|
+
_v$53 = api.theme.current.backgroundPanel,
|
|
3710
|
+
_v$54 = api.theme.current.text,
|
|
3711
|
+
_v$55 = api.theme.current.primary,
|
|
3712
|
+
_v$56 = {
|
|
3613
3713
|
fg: scope() ? api.theme.current.accent : api.theme.current.textMuted
|
|
3614
3714
|
},
|
|
3615
|
-
_v$
|
|
3715
|
+
_v$57 = {
|
|
3616
3716
|
fg: waitingOnly() ? api.theme.current.warning : api.theme.current.textMuted
|
|
3617
3717
|
},
|
|
3618
|
-
_v$
|
|
3718
|
+
_v$58 = {
|
|
3619
3719
|
fg: pinnedOnly() ? api.theme.current.accent : api.theme.current.textMuted
|
|
3620
3720
|
},
|
|
3621
|
-
_v$
|
|
3721
|
+
_v$59 = {
|
|
3622
3722
|
fg: pendingDelete() ? api.theme.current.warning : api.theme.current.textMuted
|
|
3623
3723
|
};
|
|
3624
|
-
_v$
|
|
3625
|
-
_v$
|
|
3626
|
-
_v$
|
|
3627
|
-
_v$
|
|
3628
|
-
_v$
|
|
3629
|
-
_v$
|
|
3630
|
-
_v$
|
|
3631
|
-
_v$
|
|
3632
|
-
_v$
|
|
3633
|
-
_v$
|
|
3634
|
-
_v$
|
|
3635
|
-
_v$
|
|
3636
|
-
_v$
|
|
3637
|
-
_v$
|
|
3638
|
-
_v$
|
|
3724
|
+
_v$45 !== _p$.e && (_p$.e = _$setProp(_el$71, "height", _v$45, _p$.e));
|
|
3725
|
+
_v$46 !== _p$.t && (_p$.t = _$setProp(_el$71, "marginTop", _v$46, _p$.t));
|
|
3726
|
+
_v$47 !== _p$.a && (_p$.a = _$setProp(_el$71, "backgroundColor", _v$47, _p$.a));
|
|
3727
|
+
_v$48 !== _p$.o && (_p$.o = _$setProp(_el$74, "attributes", _v$48, _p$.o));
|
|
3728
|
+
_v$49 !== _p$.i && (_p$.i = _$setProp(_el$76, "style", _v$49, _p$.i));
|
|
3729
|
+
_v$50 !== _p$.n && (_p$.n = _$setProp(_el$79, "style", _v$50, _p$.n));
|
|
3730
|
+
_v$51 !== _p$.s && (_p$.s = _$setProp(_el$82, "value", _v$51, _p$.s));
|
|
3731
|
+
_v$52 !== _p$.h && (_p$.h = _$setProp(_el$82, "placeholderColor", _v$52, _p$.h));
|
|
3732
|
+
_v$53 !== _p$.r && (_p$.r = _$setProp(_el$82, "focusedBackgroundColor", _v$53, _p$.r));
|
|
3733
|
+
_v$54 !== _p$.d && (_p$.d = _$setProp(_el$82, "focusedTextColor", _v$54, _p$.d));
|
|
3734
|
+
_v$55 !== _p$.l && (_p$.l = _$setProp(_el$82, "cursorColor", _v$55, _p$.l));
|
|
3735
|
+
_v$56 !== _p$.u && (_p$.u = _$setProp(_el$86, "style", _v$56, _p$.u));
|
|
3736
|
+
_v$57 !== _p$.c && (_p$.c = _$setProp(_el$87, "style", _v$57, _p$.c));
|
|
3737
|
+
_v$58 !== _p$.w && (_p$.w = _$setProp(_el$88, "style", _v$58, _p$.w));
|
|
3738
|
+
_v$59 !== _p$.m && (_p$.m = _$setProp(_el$93, "style", _v$59, _p$.m));
|
|
3639
3739
|
return _p$;
|
|
3640
3740
|
}, {
|
|
3641
3741
|
e: undefined,
|
|
@@ -3654,7 +3754,7 @@ const tui = async api => {
|
|
|
3654
3754
|
w: undefined,
|
|
3655
3755
|
m: undefined
|
|
3656
3756
|
});
|
|
3657
|
-
return _el$
|
|
3757
|
+
return _el$71;
|
|
3658
3758
|
})(), () => {
|
|
3659
3759
|
cleanup();
|
|
3660
3760
|
});
|
|
@@ -3700,105 +3800,105 @@ const tui = async api => {
|
|
|
3700
3800
|
}]
|
|
3701
3801
|
});
|
|
3702
3802
|
api.ui.dialog.replace(() => (() => {
|
|
3703
|
-
var _el$
|
|
3704
|
-
_el$
|
|
3705
|
-
_el$
|
|
3706
|
-
_el$
|
|
3707
|
-
_el$
|
|
3708
|
-
_el$
|
|
3803
|
+
var _el$126 = _$createElement("box"),
|
|
3804
|
+
_el$127 = _$createElement("text"),
|
|
3805
|
+
_el$128 = _$createTextNode(`Cost digest `),
|
|
3806
|
+
_el$130 = _$createElement("span"),
|
|
3807
|
+
_el$132 = _$createElement("box"),
|
|
3808
|
+
_el$133 = _$createElement("text");
|
|
3809
|
+
_$insertNode(_el$126, _el$127);
|
|
3810
|
+
_$insertNode(_el$126, _el$132);
|
|
3811
|
+
_$setProp(_el$126, "flexDirection", "column");
|
|
3812
|
+
_$setProp(_el$126, "paddingLeft", 4);
|
|
3813
|
+
_$setProp(_el$126, "paddingRight", 4);
|
|
3814
|
+
_$setProp(_el$126, "paddingTop", 1);
|
|
3815
|
+
_$setProp(_el$126, "gap", 1);
|
|
3709
3816
|
_$insertNode(_el$127, _el$128);
|
|
3710
|
-
_$insertNode(_el$127, _el$
|
|
3711
|
-
_$
|
|
3712
|
-
_$
|
|
3713
|
-
_$setProp(_el$127, "paddingRight", 4);
|
|
3714
|
-
_$setProp(_el$127, "paddingTop", 1);
|
|
3715
|
-
_$setProp(_el$127, "gap", 1);
|
|
3716
|
-
_$insertNode(_el$128, _el$129);
|
|
3717
|
-
_$insertNode(_el$128, _el$131);
|
|
3718
|
-
_$insertNode(_el$131, _$createTextNode(`(24h · lifetime)`));
|
|
3719
|
-
_$insert(_el$127, _$createComponent(Show, {
|
|
3817
|
+
_$insertNode(_el$127, _el$130);
|
|
3818
|
+
_$insertNode(_el$130, _$createTextNode(`(24h · lifetime)`));
|
|
3819
|
+
_$insert(_el$126, _$createComponent(Show, {
|
|
3720
3820
|
get when() {
|
|
3721
3821
|
return !failed && rows.length > 0;
|
|
3722
3822
|
},
|
|
3723
3823
|
get fallback() {
|
|
3724
3824
|
return (() => {
|
|
3725
|
-
var _el$
|
|
3726
|
-
_$insert(_el$
|
|
3727
|
-
_$effect(_$p => _$setProp(_el$
|
|
3825
|
+
var _el$135 = _$createElement("text");
|
|
3826
|
+
_$insert(_el$135, failed ? "Cost data unavailable." : "No assistant cost recorded.");
|
|
3827
|
+
_$effect(_$p => _$setProp(_el$135, "style", {
|
|
3728
3828
|
fg: api.theme.current.textMuted
|
|
3729
3829
|
}, _$p));
|
|
3730
|
-
return _el$
|
|
3830
|
+
return _el$135;
|
|
3731
3831
|
})();
|
|
3732
3832
|
},
|
|
3733
3833
|
get children() {
|
|
3734
3834
|
return _$createComponent(For, {
|
|
3735
3835
|
each: rows,
|
|
3736
3836
|
children: row => (() => {
|
|
3737
|
-
var _el$
|
|
3837
|
+
var _el$136 = _$createElement("box"),
|
|
3838
|
+
_el$137 = _$createElement("text"),
|
|
3738
3839
|
_el$138 = _$createElement("text"),
|
|
3739
3840
|
_el$139 = _$createElement("text"),
|
|
3740
|
-
_el$140 = _$
|
|
3741
|
-
_el$141 = _$createTextNode(`
|
|
3742
|
-
_el$142 = _$
|
|
3743
|
-
|
|
3744
|
-
_$insertNode(_el$
|
|
3745
|
-
_$insertNode(_el$
|
|
3746
|
-
_$insertNode(_el$
|
|
3747
|
-
_$
|
|
3748
|
-
_$setProp(_el$
|
|
3749
|
-
_$setProp(_el$137, "
|
|
3841
|
+
_el$140 = _$createTextNode(`(`),
|
|
3842
|
+
_el$141 = _$createTextNode(`)`),
|
|
3843
|
+
_el$142 = _$createElement("text");
|
|
3844
|
+
_$insertNode(_el$136, _el$137);
|
|
3845
|
+
_$insertNode(_el$136, _el$138);
|
|
3846
|
+
_$insertNode(_el$136, _el$139);
|
|
3847
|
+
_$insertNode(_el$136, _el$142);
|
|
3848
|
+
_$setProp(_el$136, "flexDirection", "row");
|
|
3849
|
+
_$setProp(_el$136, "gap", 2);
|
|
3850
|
+
_$setProp(_el$137, "flexShrink", 0);
|
|
3851
|
+
_$insert(_el$137, () => money(row.window));
|
|
3750
3852
|
_$setProp(_el$138, "flexShrink", 0);
|
|
3751
|
-
_$insert(_el$138, () => money(row.
|
|
3853
|
+
_$insert(_el$138, () => money(row.lifetime));
|
|
3854
|
+
_$insertNode(_el$139, _el$140);
|
|
3855
|
+
_$insertNode(_el$139, _el$141);
|
|
3752
3856
|
_$setProp(_el$139, "flexShrink", 0);
|
|
3753
|
-
_$insert(_el$139, () =>
|
|
3754
|
-
_$
|
|
3755
|
-
_$
|
|
3756
|
-
_$setProp(_el$
|
|
3757
|
-
_$insert(_el$
|
|
3758
|
-
_$setProp(_el$143, "flexGrow", 1);
|
|
3759
|
-
_$setProp(_el$143, "flexShrink", 1);
|
|
3760
|
-
_$setProp(_el$143, "wrapMode", "none");
|
|
3761
|
-
_$insert(_el$143, () => prettyDir(row.directory, home));
|
|
3857
|
+
_$insert(_el$139, () => row.sessions, _el$141);
|
|
3858
|
+
_$setProp(_el$142, "flexGrow", 1);
|
|
3859
|
+
_$setProp(_el$142, "flexShrink", 1);
|
|
3860
|
+
_$setProp(_el$142, "wrapMode", "none");
|
|
3861
|
+
_$insert(_el$142, () => prettyDir(row.directory, home));
|
|
3762
3862
|
_$effect(_p$ => {
|
|
3763
|
-
var _v$
|
|
3863
|
+
var _v$74 = {
|
|
3764
3864
|
fg: api.theme.current.success
|
|
3765
3865
|
},
|
|
3766
|
-
_v$
|
|
3866
|
+
_v$75 = {
|
|
3767
3867
|
fg: api.theme.current.textMuted
|
|
3768
3868
|
},
|
|
3769
|
-
_v$
|
|
3869
|
+
_v$76 = {
|
|
3770
3870
|
fg: api.theme.current.textMuted
|
|
3771
3871
|
};
|
|
3772
|
-
_v$
|
|
3773
|
-
_v$
|
|
3774
|
-
_v$
|
|
3872
|
+
_v$74 !== _p$.e && (_p$.e = _$setProp(_el$137, "style", _v$74, _p$.e));
|
|
3873
|
+
_v$75 !== _p$.t && (_p$.t = _$setProp(_el$138, "style", _v$75, _p$.t));
|
|
3874
|
+
_v$76 !== _p$.a && (_p$.a = _$setProp(_el$139, "style", _v$76, _p$.a));
|
|
3775
3875
|
return _p$;
|
|
3776
3876
|
}, {
|
|
3777
3877
|
e: undefined,
|
|
3778
3878
|
t: undefined,
|
|
3779
3879
|
a: undefined
|
|
3780
3880
|
});
|
|
3781
|
-
return _el$
|
|
3881
|
+
return _el$136;
|
|
3782
3882
|
})()
|
|
3783
3883
|
});
|
|
3784
3884
|
}
|
|
3785
|
-
}), _el$
|
|
3786
|
-
_$insertNode(_el$
|
|
3787
|
-
_$setProp(_el$
|
|
3788
|
-
_$insertNode(_el$
|
|
3885
|
+
}), _el$132);
|
|
3886
|
+
_$insertNode(_el$132, _el$133);
|
|
3887
|
+
_$setProp(_el$132, "flexShrink", 0);
|
|
3888
|
+
_$insertNode(_el$133, _$createTextNode(`esc close`));
|
|
3789
3889
|
_$effect(_p$ => {
|
|
3790
|
-
var _v$
|
|
3791
|
-
_v$
|
|
3792
|
-
_v$
|
|
3890
|
+
var _v$70 = api.theme.current.backgroundPanel,
|
|
3891
|
+
_v$71 = TextAttributes.BOLD,
|
|
3892
|
+
_v$72 = {
|
|
3793
3893
|
fg: api.theme.current.textMuted
|
|
3794
3894
|
},
|
|
3795
|
-
_v$
|
|
3895
|
+
_v$73 = {
|
|
3796
3896
|
fg: api.theme.current.textMuted
|
|
3797
3897
|
};
|
|
3798
|
-
_v$
|
|
3799
|
-
_v$
|
|
3800
|
-
_v$
|
|
3801
|
-
_v$
|
|
3898
|
+
_v$70 !== _p$.e && (_p$.e = _$setProp(_el$126, "backgroundColor", _v$70, _p$.e));
|
|
3899
|
+
_v$71 !== _p$.t && (_p$.t = _$setProp(_el$127, "attributes", _v$71, _p$.t));
|
|
3900
|
+
_v$72 !== _p$.a && (_p$.a = _$setProp(_el$130, "style", _v$72, _p$.a));
|
|
3901
|
+
_v$73 !== _p$.o && (_p$.o = _$setProp(_el$133, "style", _v$73, _p$.o));
|
|
3802
3902
|
return _p$;
|
|
3803
3903
|
}, {
|
|
3804
3904
|
e: undefined,
|
|
@@ -3806,7 +3906,7 @@ const tui = async api => {
|
|
|
3806
3906
|
a: undefined,
|
|
3807
3907
|
o: undefined
|
|
3808
3908
|
});
|
|
3809
|
-
return _el$
|
|
3909
|
+
return _el$126;
|
|
3810
3910
|
})(), () => {
|
|
3811
3911
|
disposeKeys();
|
|
3812
3912
|
});
|
|
@@ -3915,79 +4015,79 @@ const tui = async api => {
|
|
|
3915
4015
|
});
|
|
3916
4016
|
const home = process.env.HOME ?? "";
|
|
3917
4017
|
api.ui.dialog.replace(() => (() => {
|
|
3918
|
-
var _el$
|
|
3919
|
-
_el$
|
|
3920
|
-
_el$
|
|
3921
|
-
_el$
|
|
3922
|
-
_el$
|
|
3923
|
-
_el$
|
|
3924
|
-
_el$
|
|
3925
|
-
_el$
|
|
3926
|
-
_el$
|
|
4018
|
+
var _el$143 = _$createElement("box"),
|
|
4019
|
+
_el$144 = _$createElement("text"),
|
|
4020
|
+
_el$145 = _$createTextNode(`Needs input `),
|
|
4021
|
+
_el$147 = _$createElement("span"),
|
|
4022
|
+
_el$148 = _$createTextNode(`(`),
|
|
4023
|
+
_el$149 = _$createTextNode(` · longest waiting first)`),
|
|
4024
|
+
_el$150 = _$createElement("scrollbox"),
|
|
4025
|
+
_el$151 = _$createElement("box"),
|
|
4026
|
+
_el$152 = _$createElement("text");
|
|
4027
|
+
_$insertNode(_el$143, _el$144);
|
|
4028
|
+
_$insertNode(_el$143, _el$150);
|
|
4029
|
+
_$insertNode(_el$143, _el$151);
|
|
4030
|
+
_$setProp(_el$143, "flexDirection", "column");
|
|
4031
|
+
_$setProp(_el$143, "paddingLeft", 4);
|
|
4032
|
+
_$setProp(_el$143, "paddingRight", 4);
|
|
4033
|
+
_$setProp(_el$143, "paddingTop", 1);
|
|
4034
|
+
_$setProp(_el$143, "gap", 1);
|
|
3927
4035
|
_$insertNode(_el$144, _el$145);
|
|
3928
|
-
_$insertNode(_el$144, _el$
|
|
3929
|
-
_$insertNode(_el$
|
|
3930
|
-
_$
|
|
3931
|
-
_$
|
|
3932
|
-
_$setProp(_el$
|
|
3933
|
-
_$setProp(_el$
|
|
3934
|
-
_$setProp(_el$144, "gap", 1);
|
|
3935
|
-
_$insertNode(_el$145, _el$146);
|
|
3936
|
-
_$insertNode(_el$145, _el$148);
|
|
3937
|
-
_$insertNode(_el$148, _el$149);
|
|
3938
|
-
_$insertNode(_el$148, _el$150);
|
|
3939
|
-
_$insert(_el$148, () => items.length, _el$150);
|
|
3940
|
-
_$setProp(_el$151, "flexGrow", 1);
|
|
3941
|
-
_$setProp(_el$151, "scrollbarOptions", {
|
|
4036
|
+
_$insertNode(_el$144, _el$147);
|
|
4037
|
+
_$insertNode(_el$147, _el$148);
|
|
4038
|
+
_$insertNode(_el$147, _el$149);
|
|
4039
|
+
_$insert(_el$147, () => items.length, _el$149);
|
|
4040
|
+
_$setProp(_el$150, "flexGrow", 1);
|
|
4041
|
+
_$setProp(_el$150, "scrollbarOptions", {
|
|
3942
4042
|
visible: false
|
|
3943
4043
|
});
|
|
3944
|
-
_$insert(_el$
|
|
4044
|
+
_$insert(_el$150, _$createComponent(For, {
|
|
3945
4045
|
each: items,
|
|
3946
4046
|
children: (item, index) => (() => {
|
|
3947
|
-
var _el$
|
|
4047
|
+
var _el$154 = _$createElement("box"),
|
|
4048
|
+
_el$155 = _$createElement("text"),
|
|
3948
4049
|
_el$156 = _$createElement("text"),
|
|
3949
4050
|
_el$157 = _$createElement("text"),
|
|
3950
|
-
_el$158 = _$
|
|
3951
|
-
|
|
3952
|
-
_$insertNode(_el$
|
|
3953
|
-
_$insertNode(_el$
|
|
3954
|
-
_$
|
|
3955
|
-
_$setProp(_el$
|
|
3956
|
-
_$setProp(_el$
|
|
3957
|
-
_$setProp(_el$
|
|
3958
|
-
_$setProp(_el$
|
|
3959
|
-
_$setProp(_el$155, "onMouseDown", () => {
|
|
4051
|
+
_el$158 = _$createTextNode(` · `);
|
|
4052
|
+
_$insertNode(_el$154, _el$155);
|
|
4053
|
+
_$insertNode(_el$154, _el$156);
|
|
4054
|
+
_$insertNode(_el$154, _el$157);
|
|
4055
|
+
_$setProp(_el$154, "flexDirection", "row");
|
|
4056
|
+
_$setProp(_el$154, "gap", 2);
|
|
4057
|
+
_$setProp(_el$154, "paddingLeft", 1);
|
|
4058
|
+
_$setProp(_el$154, "paddingRight", 1);
|
|
4059
|
+
_$setProp(_el$154, "onMouseDown", () => {
|
|
3960
4060
|
setCursor(index());
|
|
3961
4061
|
choose(item);
|
|
3962
4062
|
});
|
|
3963
|
-
_$setProp(_el$
|
|
3964
|
-
_$setProp(_el$
|
|
3965
|
-
_$setProp(_el$
|
|
3966
|
-
_$insert(_el$
|
|
4063
|
+
_$setProp(_el$155, "flexGrow", 1);
|
|
4064
|
+
_$setProp(_el$155, "flexShrink", 1);
|
|
4065
|
+
_$setProp(_el$155, "wrapMode", "none");
|
|
4066
|
+
_$insert(_el$155, () => truncate(item.entry.title, 48));
|
|
4067
|
+
_$setProp(_el$156, "flexShrink", 0);
|
|
4068
|
+
_$insert(_el$156, () => item.reason);
|
|
4069
|
+
_$insertNode(_el$157, _el$158);
|
|
3967
4070
|
_$setProp(_el$157, "flexShrink", 0);
|
|
3968
|
-
_$insert(_el$157, () => item.
|
|
3969
|
-
_$
|
|
3970
|
-
_$setProp(_el$158, "flexShrink", 0);
|
|
3971
|
-
_$insert(_el$158, () => prettyDir(item.entry.dir, home), _el$159);
|
|
3972
|
-
_$insert(_el$158, (() => {
|
|
4071
|
+
_$insert(_el$157, () => prettyDir(item.entry.dir, home), _el$158);
|
|
4072
|
+
_$insert(_el$157, (() => {
|
|
3973
4073
|
var _c$1 = _$memo(() => item.since === undefined);
|
|
3974
4074
|
return () => _c$1() ? "time unknown" : `waiting ${ago(item.since)}`;
|
|
3975
4075
|
})(), null);
|
|
3976
4076
|
_$effect(_p$ => {
|
|
3977
|
-
var _v$
|
|
3978
|
-
_v$
|
|
4077
|
+
var _v$82 = index() === cursor() ? api.theme.current.backgroundElement : RGBA.fromInts(0, 0, 0, 0),
|
|
4078
|
+
_v$83 = {
|
|
3979
4079
|
fg: index() === cursor() ? api.theme.current.text : api.theme.current.text
|
|
3980
4080
|
},
|
|
3981
|
-
_v$
|
|
4081
|
+
_v$84 = {
|
|
3982
4082
|
fg: index() === cursor() ? api.theme.current.text : api.theme.current.warning
|
|
3983
4083
|
},
|
|
3984
|
-
_v$
|
|
4084
|
+
_v$85 = {
|
|
3985
4085
|
fg: index() === cursor() ? api.theme.current.text : api.theme.current.textMuted
|
|
3986
4086
|
};
|
|
3987
|
-
_v$
|
|
3988
|
-
_v$
|
|
3989
|
-
_v$
|
|
3990
|
-
_v$
|
|
4087
|
+
_v$82 !== _p$.e && (_p$.e = _$setProp(_el$154, "backgroundColor", _v$82, _p$.e));
|
|
4088
|
+
_v$83 !== _p$.t && (_p$.t = _$setProp(_el$155, "style", _v$83, _p$.t));
|
|
4089
|
+
_v$84 !== _p$.a && (_p$.a = _$setProp(_el$156, "style", _v$84, _p$.a));
|
|
4090
|
+
_v$85 !== _p$.o && (_p$.o = _$setProp(_el$157, "style", _v$85, _p$.o));
|
|
3991
4091
|
return _p$;
|
|
3992
4092
|
}, {
|
|
3993
4093
|
e: undefined,
|
|
@@ -3995,27 +4095,27 @@ const tui = async api => {
|
|
|
3995
4095
|
a: undefined,
|
|
3996
4096
|
o: undefined
|
|
3997
4097
|
});
|
|
3998
|
-
return _el$
|
|
4098
|
+
return _el$154;
|
|
3999
4099
|
})()
|
|
4000
4100
|
}));
|
|
4001
|
-
_$insertNode(_el$
|
|
4002
|
-
_$setProp(_el$
|
|
4003
|
-
_$insertNode(_el$
|
|
4101
|
+
_$insertNode(_el$151, _el$152);
|
|
4102
|
+
_$setProp(_el$151, "flexShrink", 0);
|
|
4103
|
+
_$insertNode(_el$152, _$createTextNode(`↑↓ navigate · enter open · n open next waiting · esc close`));
|
|
4004
4104
|
_$effect(_p$ => {
|
|
4005
|
-
var _v$
|
|
4006
|
-
_v$
|
|
4007
|
-
_v$
|
|
4105
|
+
var _v$77 = api.theme.current.backgroundPanel,
|
|
4106
|
+
_v$78 = TextAttributes.BOLD,
|
|
4107
|
+
_v$79 = {
|
|
4008
4108
|
fg: api.theme.current.textMuted
|
|
4009
4109
|
},
|
|
4010
|
-
_v$
|
|
4011
|
-
_v$
|
|
4110
|
+
_v$80 = Math.max(6, Math.floor(api.renderer.height / 2) - 10),
|
|
4111
|
+
_v$81 = {
|
|
4012
4112
|
fg: api.theme.current.textMuted
|
|
4013
4113
|
};
|
|
4014
|
-
_v$
|
|
4015
|
-
_v$
|
|
4016
|
-
_v$
|
|
4017
|
-
_v$
|
|
4018
|
-
_v$
|
|
4114
|
+
_v$77 !== _p$.e && (_p$.e = _$setProp(_el$143, "backgroundColor", _v$77, _p$.e));
|
|
4115
|
+
_v$78 !== _p$.t && (_p$.t = _$setProp(_el$144, "attributes", _v$78, _p$.t));
|
|
4116
|
+
_v$79 !== _p$.a && (_p$.a = _$setProp(_el$147, "style", _v$79, _p$.a));
|
|
4117
|
+
_v$80 !== _p$.o && (_p$.o = _$setProp(_el$150, "height", _v$80, _p$.o));
|
|
4118
|
+
_v$81 !== _p$.i && (_p$.i = _$setProp(_el$152, "style", _v$81, _p$.i));
|
|
4019
4119
|
return _p$;
|
|
4020
4120
|
}, {
|
|
4021
4121
|
e: undefined,
|
|
@@ -4024,7 +4124,7 @@ const tui = async api => {
|
|
|
4024
4124
|
o: undefined,
|
|
4025
4125
|
i: undefined
|
|
4026
4126
|
});
|
|
4027
|
-
return _el$
|
|
4127
|
+
return _el$143;
|
|
4028
4128
|
})(), () => {
|
|
4029
4129
|
disposeNav();
|
|
4030
4130
|
});
|