claude-discover 1.9.2 → 1.9.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/bin/claude/statusline.mjs +3 -9
- package/bin/proxy.mjs +38 -51
- package/out/main/main.js +277 -100
- package/out/renderer/assets/{index-03LlBvFr.css → index-B1hu0QHl.css} +15 -50
- package/out/renderer/assets/{index-BugPzqD2.js → index-B4cvR_aa.js} +26 -30
- package/out/renderer/assets/{vendors-S1fS5xz9.js → vendors-JM3FOKMR.js} +3173 -1199
- package/out/renderer/index.html +3 -3
- package/package.json +11 -10
- package/bin/claude/hooks.mjs +0 -102
|
@@ -70,12 +70,6 @@
|
|
|
70
70
|
border-top-right-radius: 4px;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
.heat-strip-label {
|
|
74
|
-
fill: #cbd1dc;
|
|
75
|
-
font-size: 10px;
|
|
76
|
-
font-family: var(--font-mono), monospace;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
73
|
.gantt-canvas {
|
|
80
74
|
width: 100%;
|
|
81
75
|
flex: 1;
|
|
@@ -580,7 +574,6 @@
|
|
|
580
574
|
line-height: 18px;
|
|
581
575
|
color: var(--text-dim);
|
|
582
576
|
|
|
583
|
-
&.muted { color: var(--text-dim); }
|
|
584
577
|
&.warn { color: var(--warn); }
|
|
585
578
|
&.danger { color: var(--danger); }
|
|
586
579
|
}
|
|
@@ -594,24 +587,6 @@
|
|
|
594
587
|
}
|
|
595
588
|
}
|
|
596
589
|
|
|
597
|
-
.session-row-top {
|
|
598
|
-
display: flex;
|
|
599
|
-
justify-content: space-between;
|
|
600
|
-
align-items: center;
|
|
601
|
-
font-size: 11px;
|
|
602
|
-
}
|
|
603
|
-
|
|
604
|
-
.source-tag { font-weight: 600; letter-spacing: 0.4px; }
|
|
605
|
-
|
|
606
|
-
.session-row-meta {
|
|
607
|
-
display: flex;
|
|
608
|
-
align-items: center;
|
|
609
|
-
gap: 6px;
|
|
610
|
-
font-size: 11px;
|
|
611
|
-
min-width: 0;
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
.session-time { color: var(--text-faint); font-family: var(--font-mono), monospace; margin-left: auto; }
|
|
615
590
|
.session-time-bottom {
|
|
616
591
|
margin-top: 2px;
|
|
617
592
|
display: flex;
|
|
@@ -620,9 +595,21 @@
|
|
|
620
595
|
font-size: 10px;
|
|
621
596
|
line-height: 14px;
|
|
622
597
|
color: var(--text-faint);
|
|
598
|
+
|
|
599
|
+
& > * { flex: none; }
|
|
600
|
+
& > * + *::before { content: ', '; }
|
|
623
601
|
}
|
|
624
602
|
.session-model { color: var(--text-dim); }
|
|
625
|
-
|
|
603
|
+
|
|
604
|
+
/* the only part of the line that gives way when the list pane narrows */
|
|
605
|
+
.session-project {
|
|
606
|
+
color: var(--text-dim);
|
|
607
|
+
flex: 0 1 auto;
|
|
608
|
+
min-width: 0;
|
|
609
|
+
overflow: hidden;
|
|
610
|
+
text-overflow: ellipsis;
|
|
611
|
+
white-space: nowrap;
|
|
612
|
+
}
|
|
626
613
|
|
|
627
614
|
.session-name {
|
|
628
615
|
font-weight: 600;
|
|
@@ -663,8 +650,6 @@
|
|
|
663
650
|
text-overflow: ellipsis;
|
|
664
651
|
white-space: nowrap;
|
|
665
652
|
}
|
|
666
|
-
|
|
667
|
-
.model-tag { font-family: var(--font-mono), monospace; color: var(--text-faint); margin-left: auto; }
|
|
668
653
|
.markdown { white-space: normal; max-height: 500px; overflow: auto; }
|
|
669
654
|
.markdown > *:first-child { margin-top: 0; }
|
|
670
655
|
.markdown > *:last-child { margin-bottom: 0; }
|
|
@@ -908,7 +893,6 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
|
|
|
908
893
|
|
|
909
894
|
/* Assistant cycle card: header row above, bordered body with the response (tools fold into it). */
|
|
910
895
|
.assistant-card-body {
|
|
911
|
-
/*border: 1px solid var(--border);*/
|
|
912
896
|
border-radius: 6px;
|
|
913
897
|
padding: 5px 10px;
|
|
914
898
|
background: var(--bg-elev);
|
|
@@ -916,12 +900,6 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
|
|
|
916
900
|
flex-direction: column;
|
|
917
901
|
}
|
|
918
902
|
|
|
919
|
-
.aux {
|
|
920
|
-
& .block-text {
|
|
921
|
-
margin: 5px 0 10px 0;
|
|
922
|
-
}
|
|
923
|
-
}
|
|
924
|
-
|
|
925
903
|
/* Aux turns kept mounted while the card is folded, so their expanded state survives (see AssistantCard). */
|
|
926
904
|
.turn-hidden { display: none; }
|
|
927
905
|
|
|
@@ -1029,6 +1007,7 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
|
|
|
1029
1007
|
.aux {
|
|
1030
1008
|
font-size: calc(12px * var(--font-scale, 1));
|
|
1031
1009
|
|
|
1010
|
+
& .block-text { margin: 5px 0 10px 0; }
|
|
1032
1011
|
&.error .aux-toggle { color: var(--danger); }
|
|
1033
1012
|
}
|
|
1034
1013
|
|
|
@@ -1100,15 +1079,6 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
|
|
|
1100
1079
|
margin: 2px 0 4px;
|
|
1101
1080
|
user-select: all;
|
|
1102
1081
|
}
|
|
1103
|
-
|
|
1104
|
-
.instructions-note {
|
|
1105
|
-
font-size: calc(11px * var(--font-scale, 1));
|
|
1106
|
-
color: var(--text-faint);
|
|
1107
|
-
margin-bottom: 4px;
|
|
1108
|
-
padding-bottom: 4px;
|
|
1109
|
-
border-bottom: 1px dashed var(--border);
|
|
1110
|
-
line-height: 1.5;
|
|
1111
|
-
}
|
|
1112
1082
|
.shorten-more {
|
|
1113
1083
|
color: var(--warn);
|
|
1114
1084
|
font-style: italic;
|
|
@@ -1213,12 +1183,7 @@ button.msg-summary:hover { color: var(--text); background: var(--bg-elev-2); bor
|
|
|
1213
1183
|
border-radius: 2px;
|
|
1214
1184
|
padding: 0 1px;
|
|
1215
1185
|
}
|
|
1216
|
-
.jsonl-viewer-loading
|
|
1217
|
-
.jsonl-viewer-error {
|
|
1218
|
-
color: var(--text-faint);
|
|
1219
|
-
}
|
|
1220
|
-
|
|
1221
|
-
.jsonl-viewer-error { color: var(--danger); }
|
|
1186
|
+
.jsonl-viewer-loading { color: var(--text-faint); }
|
|
1222
1187
|
.requests-view {
|
|
1223
1188
|
flex: 1;
|
|
1224
1189
|
display: flex;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as reactExports, j as jsxRuntimeExports, f as format, s as startOfWeek, a as startOfMonth, b as startOfDay, e as endOfWeek, c as endOfMonth, d as endOfDay, g as addWeeks, h as addMonths, i as addDays, k as isSameWeek, l as isSameMonth, m as isSameDay, n as intervalToDuration, o as getDaysInMonth, p as addHours, q as encode, H as Hourglass, G as Gauge, M as MessageSquare, C as Clock, Z as Zap, D as DollarSign, R as React, t as Markdown$1, u as rehypeHighlight, v as remarkGfm, T as Terminal, J as JsonView, w as vscodeTheme, x as tippy, y as reactDomExports, z as
|
|
1
|
+
import { r as reactExports, j as jsxRuntimeExports, f as format, s as startOfWeek, a as startOfMonth, b as startOfDay, e as endOfWeek, c as endOfMonth, d as endOfDay, g as addWeeks, h as addMonths, i as addDays, k as isSameWeek, l as isSameMonth, m as isSameDay, n as intervalToDuration, o as getDaysInMonth, p as addHours, q as encode, H as Hourglass, G as Gauge, M as MessageSquare, C as Clock, Z as Zap, D as DollarSign, R as React, t as Markdown$1, u as rehypeHighlight, v as remarkGfm, T as Terminal, J as JsonView, w as vscodeTheme, x as tippy, y as reactDomExports, z as an, A as qt, Q as Qt, B as nn, E as parse, F as delegate, I as clientExports } from "./vendors-JM3FOKMR.js";
|
|
2
2
|
const SOURCE_COLORS = {
|
|
3
3
|
scheduled: "#14b8a6",
|
|
4
4
|
cli: "#3b82f6",
|
|
@@ -34,13 +34,13 @@ function useLocalStorage(key, initial) {
|
|
|
34
34
|
}
|
|
35
35
|
function clearOutdatedLocalStorage() {
|
|
36
36
|
const version = localStorage.getItem(VERSION_KEY);
|
|
37
|
-
if (version !== "1.9.
|
|
38
|
-
const [MAJOR, MINOR, PATCH] = "1.9.
|
|
37
|
+
if (version !== "1.9.4") {
|
|
38
|
+
const [MAJOR, MINOR, PATCH] = "1.9.4".split(".");
|
|
39
39
|
const [major, minor, patch] = (version ?? "").split(".");
|
|
40
40
|
if (MAJOR !== major || MINOR !== minor) {
|
|
41
41
|
localStorage.clear();
|
|
42
42
|
}
|
|
43
|
-
localStorage.setItem(VERSION_KEY, "1.9.
|
|
43
|
+
localStorage.setItem(VERSION_KEY, "1.9.4");
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
function useMouseFontScale(storageKey) {
|
|
@@ -677,14 +677,6 @@ function Toolbar({
|
|
|
677
677
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", {})
|
|
678
678
|
] });
|
|
679
679
|
}
|
|
680
|
-
const HOUR = 60 * 60 * 1e3;
|
|
681
|
-
const THRESHOLDS = {
|
|
682
|
-
context: { warn: 1e5, danger: 2e5 },
|
|
683
|
-
messages: { warn: 250, danger: 500 },
|
|
684
|
-
workTime: { warn: 0.5 * HOUR, danger: 2 * HOUR },
|
|
685
|
-
cost: { warn: 3, danger: 8 },
|
|
686
|
-
tokens: { warn: 3e6, danger: 8e6 }
|
|
687
|
-
};
|
|
688
680
|
function fmtDuration(ms) {
|
|
689
681
|
if (!ms || ms < 0) return "—";
|
|
690
682
|
if (ms < 6e4) return `${Math.round(ms / 1e3)}s`;
|
|
@@ -872,6 +864,14 @@ function PeriodSummary({ sessions, dayAnchor, granularity = "day" }) {
|
|
|
872
864
|
] })
|
|
873
865
|
] });
|
|
874
866
|
}
|
|
867
|
+
const HOUR = 60 * 60 * 1e3;
|
|
868
|
+
const THRESHOLDS = {
|
|
869
|
+
context: { warn: 1e5, danger: 2e5 },
|
|
870
|
+
messages: { warn: 250, danger: 500 },
|
|
871
|
+
workTime: { warn: 0.5 * HOUR, danger: 2 * HOUR },
|
|
872
|
+
cost: { warn: 3, danger: 8 },
|
|
873
|
+
tokens: { warn: 3e6, danger: 8e6 }
|
|
874
|
+
};
|
|
875
875
|
const countTokens = (text, model = "") => {
|
|
876
876
|
if (!text) return 0;
|
|
877
877
|
const LEGACY_CLAUDE = /-(3|4)(-|$)/;
|
|
@@ -1259,12 +1259,10 @@ ${TIPS.time}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Clock, { size: 11
|
|
|
1259
1259
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "session-label-text", children: sessionLabel(s) })
|
|
1260
1260
|
] }),
|
|
1261
1261
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "session-time-bottom", children: [
|
|
1262
|
+
s.project && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "session-project", title: s.project, children: s.projectShort }),
|
|
1263
|
+
s.models?.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "session-model", children: s.models.map((m) => m.replace(/^claude-/, "")).join(", ") }),
|
|
1262
1264
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { title: format(s.lastActivityAt, "MMM d, HH:mm:ss"), children: fmtAgo(s.lastActivityAt) }),
|
|
1263
|
-
|
|
1264
|
-
", ",
|
|
1265
|
-
s.models.map((m) => m.replace(/^claude-/, "")).join(", ")
|
|
1266
|
-
] }),
|
|
1267
|
-
linked && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "deeplink-note", "data-tippy-content": linkTip, "data-tippy-maxWidth": 560, children: ", opened from deep link" })
|
|
1265
|
+
linked && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "deeplink-note", "data-tippy-content": linkTip, "data-tippy-maxWidth": 560, children: "opened from deep link" })
|
|
1268
1266
|
] })
|
|
1269
1267
|
] }),
|
|
1270
1268
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "session-row-stats", children: [
|
|
@@ -2488,10 +2486,8 @@ const proxyChanges = /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fr
|
|
|
2488
2486
|
/* @__PURE__ */ jsxRuntimeExports.jsx("pre", { children: `"env": {
|
|
2489
2487
|
"ANTHROPIC_BASE_URL": "http://127.0.0.1:41414",
|
|
2490
2488
|
"ENABLE_TOOL_SEARCH": "true"
|
|
2491
|
-
},
|
|
2492
|
-
"hooks": {
|
|
2493
|
-
"SessionStart": ["…/bin/claude/hooks.mjs"]
|
|
2494
2489
|
}` }),
|
|
2490
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Also registers the proxy as a login service so it survives restarts." }),
|
|
2495
2491
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { children: [
|
|
2496
2492
|
"Note: ",
|
|
2497
2493
|
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: "/remote-control" }),
|
|
@@ -2575,8 +2571,8 @@ function App() {
|
|
|
2575
2571
|
const [deepLink, setDeepLink] = reactExports.useState(null);
|
|
2576
2572
|
const [sourceFilter, setSourceFilter] = reactExports.useState(null);
|
|
2577
2573
|
const [projectFilter, setProjectFilter] = reactExports.useState(null);
|
|
2578
|
-
const { defaultLayout, onLayoutChanged } =
|
|
2579
|
-
const { defaultLayout: rootLayout, onLayoutChanged: onRootLayoutChanged } =
|
|
2574
|
+
const { defaultLayout, onLayoutChanged } = an({ id: "app.body", panelIds: ["list", "detail"], storage: localStorage });
|
|
2575
|
+
const { defaultLayout: rootLayout, onLayoutChanged: onRootLayoutChanged } = an({ id: "app.root", panelIds: ["gantt", "body"], storage: localStorage });
|
|
2580
2576
|
const dayRange = reactExports.useMemo(() => {
|
|
2581
2577
|
const start = anchor;
|
|
2582
2578
|
const end = endOfPeriod(anchor, granularity);
|
|
@@ -2655,14 +2651,14 @@ function App() {
|
|
|
2655
2651
|
}
|
|
2656
2652
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "app", children: [
|
|
2657
2653
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2658
|
-
|
|
2654
|
+
qt,
|
|
2659
2655
|
{
|
|
2660
2656
|
orientation: "vertical",
|
|
2661
2657
|
className: "app-main",
|
|
2662
2658
|
defaultLayout: rootLayout,
|
|
2663
2659
|
onLayoutChanged: onRootLayoutChanged,
|
|
2664
2660
|
children: [
|
|
2665
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2661
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(Qt, { id: "gantt", defaultSize: 400, minSize: 180, className: "gantt-pane", children: [
|
|
2666
2662
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2667
2663
|
Toolbar,
|
|
2668
2664
|
{
|
|
@@ -2696,16 +2692,16 @@ function App() {
|
|
|
2696
2692
|
/* @__PURE__ */ jsxRuntimeExports.jsx(PeriodSummary, { sessions: dayItems.past, dayAnchor: anchor, granularity })
|
|
2697
2693
|
] })
|
|
2698
2694
|
] }),
|
|
2699
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2700
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2701
|
-
|
|
2695
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(nn, { className: "resize-handle resize-handle-h" }),
|
|
2696
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Qt, { id: "body", minSize: 20, className: "body-outer", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
2697
|
+
qt,
|
|
2702
2698
|
{
|
|
2703
2699
|
orientation: "horizontal",
|
|
2704
2700
|
className: "body",
|
|
2705
2701
|
defaultLayout,
|
|
2706
2702
|
onLayoutChanged,
|
|
2707
2703
|
children: [
|
|
2708
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2704
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Qt, { id: "list", defaultSize: 350, minSize: 200, maxSize: 700, className: "body-pane", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2709
2705
|
SessionList,
|
|
2710
2706
|
{
|
|
2711
2707
|
sessions: dayItems.past,
|
|
@@ -2714,8 +2710,8 @@ function App() {
|
|
|
2714
2710
|
onSelect: selectSession
|
|
2715
2711
|
}
|
|
2716
2712
|
) }),
|
|
2717
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2718
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
2713
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(nn, { className: "resize-handle resize-handle-v" }),
|
|
2714
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Qt, { id: "detail", minSize: 30, className: "body-pane", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Session, { meta: selected, missing, date: format(anchor, "yyyy-MM-dd"), granularity }) })
|
|
2719
2715
|
]
|
|
2720
2716
|
}
|
|
2721
2717
|
) })
|