claude-code-kanban 7.3.0 → 7.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/cli.js +95 -29
- package/lib/panes.js +26 -5
- package/lib/parsers.js +15 -1
- package/lib/retention.js +25 -0
- package/lib/scratchpad-dir.js +19 -2
- package/lib/session-cache.js +1 -1
- package/lib/session-events.js +33 -18
- package/lib/task-dir.js +26 -0
- package/lib/terminal.js +21 -22
- package/package.json +1 -1
- package/plugin/plugins/claude-code-kanban/.claude-plugin/plugin.json +2 -5
- package/plugin/plugins/claude-code-kanban/hooks/doorbell.ts +80 -0
- package/plugin/plugins/claude-code-kanban/hooks/index.ts +2 -0
- package/plugin/plugins/claude-code-kanban/skills/kanban/SKILL.md +1 -3
- package/plugin/plugins/claude-code-kanban/tests/doorbell.test.ts +74 -0
- package/public/app.js +1180 -1099
- package/public/index.html +23 -38
- package/public/style.css +199 -37
- package/server.js +171 -159
- package/plugin/plugins/claude-code-kanban/monitors.json +0 -8
- package/plugin/plugins/claude-code-kanban/scripts/postman.js +0 -82
- package/plugin/plugins/claude-code-kanban/skills/follow/SKILL.md +0 -47
package/public/index.html
CHANGED
|
@@ -32,6 +32,9 @@
|
|
|
32
32
|
</head>
|
|
33
33
|
<body class="booting">
|
|
34
34
|
<script src="/vendor/claude-hub-sdk.js"></script>
|
|
35
|
+
<svg width="0" height="0" style="position:absolute" aria-hidden="true">
|
|
36
|
+
<symbol id="icon-pane" viewBox="0 0 24 24"><rect x="3" y="4" width="18" height="16" rx="2"/><path d="M3 9h18M9 4v5"/></symbol>
|
|
37
|
+
</svg>
|
|
35
38
|
<div id="offline-overlay" class="offline-overlay">
|
|
36
39
|
<div class="offline-card">
|
|
37
40
|
<div class="clawd-sleep" aria-hidden="true">
|
|
@@ -65,7 +68,7 @@
|
|
|
65
68
|
<header class="sidebar-header">
|
|
66
69
|
<div id="activity-chips" class="activity-chips"></div>
|
|
67
70
|
<button id="new-session-btn" class="new-session-pill" onclick="openNewSession()" title="New session (Ctrl+Alt+N)" hidden>+ New</button>
|
|
68
|
-
<button id="sidebar-toggle" class="sidebar-toggle-btn" onclick="toggleSidebar()" title="Toggle sidebar" aria-label="Toggle sidebar">
|
|
71
|
+
<button id="sidebar-toggle" class="sidebar-toggle-btn" onclick="toggleSidebar()" title="Toggle sidebar (\)" aria-label="Toggle sidebar">
|
|
69
72
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
70
73
|
<path d="M15 18l-6-6 6-6"/>
|
|
71
74
|
</svg>
|
|
@@ -138,6 +141,7 @@
|
|
|
138
141
|
class="pf-input"
|
|
139
142
|
placeholder="Any project"
|
|
140
143
|
autocomplete="off"
|
|
144
|
+
data-bwignore data-1p-ignore data-lpignore="true"
|
|
141
145
|
spellcheck="false"
|
|
142
146
|
role="combobox"
|
|
143
147
|
aria-expanded="true"
|
|
@@ -169,6 +173,8 @@
|
|
|
169
173
|
type="text"
|
|
170
174
|
class="search-input"
|
|
171
175
|
placeholder="Search tasks, sessions, projects..."
|
|
176
|
+
autocomplete="off"
|
|
177
|
+
data-bwignore data-1p-ignore data-lpignore="true"
|
|
172
178
|
oninput="handleSearch(this.value)"
|
|
173
179
|
/>
|
|
174
180
|
<button id="search-clear-btn" class="search-clear" onclick="clearSearch()" title="Clear search" aria-label="Clear search">
|
|
@@ -262,7 +268,7 @@
|
|
|
262
268
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="13.5" cy="6.5" r=".5" fill="currentColor"/><circle cx="17.5" cy="10.5" r=".5" fill="currentColor"/><circle cx="8.5" cy="7.5" r=".5" fill="currentColor"/><circle cx="6.5" cy="12.5" r=".5" fill="currentColor"/><path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z"/></svg>
|
|
263
269
|
<div class="theme-menu" id="themeMenu"></div>
|
|
264
270
|
</span>
|
|
265
|
-
<button id="theme-toggle" class="icon-btn" onclick="toggleTheme()" title="Toggle theme" aria-label="Toggle theme">
|
|
271
|
+
<button id="theme-toggle" class="icon-btn" onclick="toggleTheme()" title="Toggle theme (T)" aria-label="Toggle theme">
|
|
266
272
|
<svg id="theme-icon-dark" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
267
273
|
<path d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/>
|
|
268
274
|
</svg>
|
|
@@ -355,7 +361,7 @@
|
|
|
355
361
|
<div id="terminal-pane" class="terminal-pane">
|
|
356
362
|
<div class="terminal-bar">
|
|
357
363
|
<span id="terminal-status" class="terminal-status"></span>
|
|
358
|
-
<button class="icon-btn" onclick="endTerminalSession()" title="End
|
|
364
|
+
<button class="icon-btn" onclick="endTerminalSession()" title="End terminal (Alt+Shift+`)" aria-label="End terminal">
|
|
359
365
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
360
366
|
<rect x="6" y="6" width="12" height="12" rx="1"/>
|
|
361
367
|
</svg>
|
|
@@ -428,6 +434,9 @@
|
|
|
428
434
|
<button id="msg-detail-agent-btn" class="icon-btn" aria-label="View Agent" title="View Agent" style="display:none" onclick="closeMsgDetailModal();showAgentModal(this.dataset.agentId)">
|
|
429
435
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="16" height="16"><rect x="4" y="10" width="16" height="10" rx="2"/><circle cx="9" cy="15" r="1"/><circle cx="15" cy="15" r="1"/><path d="M12 2v4"/><path d="M2 14h2"/><path d="M20 14h2"/></svg>
|
|
430
436
|
</button>
|
|
437
|
+
<button id="msg-detail-pane-btn" class="icon-btn" aria-label="Open in a pane" title="Open in a pane" style="display:none" onclick="openMsgInPane()">
|
|
438
|
+
<svg fill="none" stroke="currentColor" stroke-width="2" width="16" height="16"><use href="#icon-pane"/></svg>
|
|
439
|
+
</button>
|
|
431
440
|
<button id="msg-detail-pin-btn" class="icon-btn" aria-label="Pin message" title="Pin message" onclick="togglePinFromModal()">
|
|
432
441
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="16" height="16"><path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"/></svg>
|
|
433
442
|
</button>
|
|
@@ -463,7 +472,7 @@
|
|
|
463
472
|
<h3 class="modal-title" id="preview-modal-title">Preview</h3>
|
|
464
473
|
<div style="display:flex;gap:4px;align-items:center;">
|
|
465
474
|
<button id="preview-pane-btn" class="icon-btn" aria-label="Open in a pane" title="Open in a pane" onclick="openPreviewInPane()">
|
|
466
|
-
<svg
|
|
475
|
+
<svg fill="none" stroke="currentColor" stroke-width="2" width="16" height="16"><use href="#icon-pane"/></svg>
|
|
467
476
|
</button>
|
|
468
477
|
<button id="preview-link-btn" class="icon-btn" aria-label="Link to current session" title="Link to current session" onclick="togglePreviewSessionLink()">
|
|
469
478
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="16" height="16"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>
|
|
@@ -503,7 +512,7 @@
|
|
|
503
512
|
</div>
|
|
504
513
|
<div class="help-bar">
|
|
505
514
|
<div class="help-tabs" id="help-tabs" role="tablist" aria-label="Shortcut groups"></div>
|
|
506
|
-
<input type="search" id="help-filter" class="form-input help-filter" placeholder="Filter shortcuts" aria-label="Filter shortcuts" autocomplete="off" spellcheck="false">
|
|
515
|
+
<input type="search" id="help-filter" class="form-input help-filter" placeholder="Filter shortcuts" aria-label="Filter shortcuts" autocomplete="off" data-bwignore data-1p-ignore data-lpignore="true" spellcheck="false">
|
|
507
516
|
</div>
|
|
508
517
|
<div class="modal-body">
|
|
509
518
|
<dl class="shortcuts" id="help-shortcuts"></dl>
|
|
@@ -590,6 +599,9 @@
|
|
|
590
599
|
<div class="modal-header">
|
|
591
600
|
<h3 id="plan-modal-title" class="modal-title">Plan</h3>
|
|
592
601
|
<div style="display:flex;align-items:center;gap:4px;">
|
|
602
|
+
<button id="plan-pane-btn" class="icon-btn" aria-label="Open in a pane" title="Open in a pane" style="display:none" onclick="openPlanInPane()">
|
|
603
|
+
<svg fill="none" stroke="currentColor" stroke-width="2" width="16" height="16"><use href="#icon-pane"/></svg>
|
|
604
|
+
</button>
|
|
593
605
|
<button class="icon-btn" aria-label="Open in editor" title="Open in editor" onclick="openPlanInEditor()">
|
|
594
606
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="16" height="16"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>
|
|
595
607
|
</button>
|
|
@@ -618,33 +630,6 @@
|
|
|
618
630
|
</div>
|
|
619
631
|
</div>
|
|
620
632
|
|
|
621
|
-
<!-- Blocked Task Warning Modal -->
|
|
622
|
-
<div id="blocked-task-modal" class="modal-overlay" onclick="closeBlockedTaskModal()">
|
|
623
|
-
<div class="modal modal-sm" onclick="event.stopPropagation()">
|
|
624
|
-
<div class="modal-header">
|
|
625
|
-
<h3 class="modal-title" style="display: flex; align-items: center; gap: 8px;">
|
|
626
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="var(--danger)" stroke-width="2" style="width: 20px; height: 20px;">
|
|
627
|
-
<circle cx="12" cy="12" r="10"/>
|
|
628
|
-
<line x1="15" y1="9" x2="9" y2="15"/>
|
|
629
|
-
<line x1="9" y1="9" x2="15" y2="15"/>
|
|
630
|
-
</svg>
|
|
631
|
-
Cannot Start Blocked Task
|
|
632
|
-
</h3>
|
|
633
|
-
<button class="modal-close" aria-label="Close dialog" onclick="closeBlockedTaskModal()">
|
|
634
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
635
|
-
<path d="M18 6L6 18M6 6l12 12"/>
|
|
636
|
-
</svg>
|
|
637
|
-
</button>
|
|
638
|
-
</div>
|
|
639
|
-
<div class="modal-body">
|
|
640
|
-
<div id="blocked-task-message" style="color: var(--text-primary); line-height: 1.6;"></div>
|
|
641
|
-
</div>
|
|
642
|
-
<div class="modal-footer">
|
|
643
|
-
<button class="btn btn-secondary" onclick="closeBlockedTaskModal()">OK</button>
|
|
644
|
-
</div>
|
|
645
|
-
</div>
|
|
646
|
-
</div>
|
|
647
|
-
|
|
648
633
|
<!-- Loop Wakeups Modal -->
|
|
649
634
|
<div id="loop-modal" class="modal-overlay" onclick="closeLoopModal()">
|
|
650
635
|
<div class="modal plan-modal" onclick="event.stopPropagation()">
|
|
@@ -802,7 +787,7 @@
|
|
|
802
787
|
<label class="ns-label" for="ns-folder">Folder</label>
|
|
803
788
|
<div class="ns-field ns-folder-field">
|
|
804
789
|
<div class="ns-inline">
|
|
805
|
-
<input type="text" id="ns-folder" class="form-input" placeholder="Type to find a project" autocomplete="off" spellcheck="false" role="combobox" aria-expanded="false" aria-controls="ns-folder-list">
|
|
790
|
+
<input type="text" id="ns-folder" class="form-input" placeholder="Type to find a project" autocomplete="off" data-bwignore data-1p-ignore data-lpignore="true" spellcheck="false" role="combobox" aria-expanded="false" aria-controls="ns-folder-list">
|
|
806
791
|
<button type="button" id="ns-browse" class="btn btn-secondary ns-browse" onclick="browseNewSessionFolder()">Browse…</button>
|
|
807
792
|
</div>
|
|
808
793
|
<div id="ns-folder-list" class="ns-dropdown" role="listbox" hidden></div>
|
|
@@ -811,7 +796,7 @@
|
|
|
811
796
|
<div class="ns-row ns-extra">
|
|
812
797
|
<label class="ns-label" for="ns-name">Name</label>
|
|
813
798
|
<div class="ns-field">
|
|
814
|
-
<input type="text" id="ns-name" class="form-input" placeholder="Optional" maxlength="80" autocomplete="off" spellcheck="false">
|
|
799
|
+
<input type="text" id="ns-name" class="form-input" placeholder="Optional" maxlength="80" autocomplete="off" data-bwignore data-1p-ignore data-lpignore="true" spellcheck="false">
|
|
815
800
|
</div>
|
|
816
801
|
</div>
|
|
817
802
|
<div class="ns-row ns-extra">
|
|
@@ -828,7 +813,7 @@
|
|
|
828
813
|
<div class="ns-field">
|
|
829
814
|
<div class="ns-inline">
|
|
830
815
|
<label class="ns-check"><input type="checkbox" id="ns-wt"> New worktree</label>
|
|
831
|
-
<input type="text" id="ns-wt-name" class="form-input" placeholder="Name (optional)" maxlength="64" autocomplete="off" spellcheck="false" disabled aria-label="Worktree name">
|
|
816
|
+
<input type="text" id="ns-wt-name" class="form-input" placeholder="Name (optional)" maxlength="64" autocomplete="off" data-bwignore data-1p-ignore data-lpignore="true" spellcheck="false" disabled aria-label="Worktree name">
|
|
832
817
|
</div>
|
|
833
818
|
<div id="ns-wt-hint" class="ns-hint" hidden></div>
|
|
834
819
|
</div>
|
|
@@ -864,7 +849,7 @@
|
|
|
864
849
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 6L6 18M6 6l12 12"/></svg>
|
|
865
850
|
</button>
|
|
866
851
|
</div>
|
|
867
|
-
<input id="pane-pop-input" class="form-input" placeholder="Search linked docs, or paste a URL or a file path" autocomplete="off" spellcheck="false">
|
|
852
|
+
<input id="pane-pop-input" class="form-input" placeholder="Search linked docs, or paste a URL or a file path" autocomplete="off" data-bwignore data-1p-ignore data-lpignore="true" spellcheck="false">
|
|
868
853
|
<div id="pane-pop-detect" class="pane-pop-detect"></div>
|
|
869
854
|
<div class="pane-pop-label">Linked docs</div>
|
|
870
855
|
<div id="pane-pop-docs" class="pane-pop-docs"></div>
|
|
@@ -874,7 +859,7 @@
|
|
|
874
859
|
|
|
875
860
|
<div id="session-picker-modal" class="modal-overlay top-aligned" onclick="closeSessionPicker()">
|
|
876
861
|
<div class="modal session-picker" onclick="event.stopPropagation()">
|
|
877
|
-
<input type="text" id="session-picker-input" class="form-input sp-input" placeholder="Jump to session..." autocomplete="off" spellcheck="false">
|
|
862
|
+
<input type="text" id="session-picker-input" class="form-input sp-input" placeholder="Jump to session..." autocomplete="off" data-bwignore data-1p-ignore data-lpignore="true" spellcheck="false">
|
|
878
863
|
<div class="sp-body">
|
|
879
864
|
<div id="session-picker-list" class="sp-list"></div>
|
|
880
865
|
<div id="session-picker-peek" class="sp-peek"></div>
|
|
@@ -885,7 +870,7 @@
|
|
|
885
870
|
|
|
886
871
|
<div id="project-picker-modal" class="modal-overlay top-aligned" onclick="closeProjectPicker()">
|
|
887
872
|
<div class="modal session-picker" onclick="event.stopPropagation()">
|
|
888
|
-
<input type="text" id="project-picker-input" class="form-input sp-input" placeholder="Filter by project..." autocomplete="off" spellcheck="false">
|
|
873
|
+
<input type="text" id="project-picker-input" class="form-input sp-input" placeholder="Filter by project..." autocomplete="off" data-bwignore data-1p-ignore data-lpignore="true" spellcheck="false">
|
|
889
874
|
<div class="pp-chips">
|
|
890
875
|
<button type="button" class="pf-recent" id="pp-recent-chip" aria-pressed="false" title="List only projects active in the last 24h" onclick="ppToggleRecentOnly()">Recent</button>
|
|
891
876
|
</div>
|
package/public/style.css
CHANGED
|
@@ -25,9 +25,19 @@
|
|
|
25
25
|
--warning-dim: rgba(240, 180, 41, 0.18);
|
|
26
26
|
--danger: #ef5350;
|
|
27
27
|
--danger-dim: rgba(239, 83, 80, 0.18);
|
|
28
|
-
--
|
|
28
|
+
--info: #60a5fa;
|
|
29
29
|
--plan: #86a886;
|
|
30
30
|
--plan-dim: rgba(134, 168, 134, 0.18);
|
|
31
|
+
--owner-blue: #9cc2fb;
|
|
32
|
+
--owner-purple: #cdb8fa;
|
|
33
|
+
--owner-teal: #7fe2c9;
|
|
34
|
+
--owner-orange: #f7ad8b;
|
|
35
|
+
--owner-yellow: #ecce7a;
|
|
36
|
+
--owner-pink: #f8a9cf;
|
|
37
|
+
--owner-green: #9be1ab;
|
|
38
|
+
--owner-indigo: #c0c2fc;
|
|
39
|
+
--owner-red: #f9a3a3;
|
|
40
|
+
--owner-cyan: #7dd8ea;
|
|
31
41
|
--ansi-red: #e06c66;
|
|
32
42
|
--ansi-green: #3ecf8e;
|
|
33
43
|
--ansi-yellow: #e0b04a;
|
|
@@ -2285,8 +2295,8 @@ body.booting .boot-splash {
|
|
|
2285
2295
|
}
|
|
2286
2296
|
|
|
2287
2297
|
.detail-box.active {
|
|
2288
|
-
background:
|
|
2289
|
-
border: 1px solid
|
|
2298
|
+
background: color-mix(in srgb, var(--accent) 8%, transparent);
|
|
2299
|
+
border: 1px solid color-mix(in srgb, var(--accent) 20%, transparent);
|
|
2290
2300
|
color: var(--text-primary);
|
|
2291
2301
|
}
|
|
2292
2302
|
|
|
@@ -2720,7 +2730,7 @@ code.language-tree .hljs-title {
|
|
|
2720
2730
|
}
|
|
2721
2731
|
|
|
2722
2732
|
.wf-phase-mark.done {
|
|
2723
|
-
color: var(--
|
|
2733
|
+
color: var(--success);
|
|
2724
2734
|
}
|
|
2725
2735
|
|
|
2726
2736
|
.wf-phase-title {
|
|
@@ -2777,7 +2787,7 @@ code.language-tree .hljs-title {
|
|
|
2777
2787
|
}
|
|
2778
2788
|
|
|
2779
2789
|
.wf-agent-status.done {
|
|
2780
|
-
color: var(--
|
|
2790
|
+
color: var(--success);
|
|
2781
2791
|
}
|
|
2782
2792
|
|
|
2783
2793
|
.wf-agent-status.running {
|
|
@@ -3038,9 +3048,9 @@ code.language-tree .hljs-title {
|
|
|
3038
3048
|
text-transform: capitalize;
|
|
3039
3049
|
}
|
|
3040
3050
|
.agent-chip-running {
|
|
3041
|
-
background:
|
|
3042
|
-
color:
|
|
3043
|
-
border-color:
|
|
3051
|
+
background: var(--success-dim);
|
|
3052
|
+
color: color-mix(in srgb, var(--success) 45%, var(--text-primary));
|
|
3053
|
+
border-color: color-mix(in srgb, var(--success) 35%, transparent);
|
|
3044
3054
|
}
|
|
3045
3055
|
.agent-chip-stopped {
|
|
3046
3056
|
background: rgba(127, 127, 127, 0.15);
|
|
@@ -3049,9 +3059,9 @@ code.language-tree .hljs-title {
|
|
|
3049
3059
|
}
|
|
3050
3060
|
.agent-chip-error,
|
|
3051
3061
|
.agent-chip-failed {
|
|
3052
|
-
background:
|
|
3053
|
-
color:
|
|
3054
|
-
border-color:
|
|
3062
|
+
background: var(--danger-dim);
|
|
3063
|
+
color: color-mix(in srgb, var(--danger) 55%, var(--text-primary));
|
|
3064
|
+
border-color: color-mix(in srgb, var(--danger) 35%, transparent);
|
|
3055
3065
|
}
|
|
3056
3066
|
.team-modal-desc {
|
|
3057
3067
|
font-size: 12px;
|
|
@@ -3119,6 +3129,49 @@ code.language-tree .hljs-title {
|
|
|
3119
3129
|
}
|
|
3120
3130
|
}
|
|
3121
3131
|
|
|
3132
|
+
.plan-card {
|
|
3133
|
+
margin-bottom: 16px;
|
|
3134
|
+
padding: 10px 14px;
|
|
3135
|
+
background: var(--bg-elevated);
|
|
3136
|
+
border: 1px solid var(--border);
|
|
3137
|
+
border-radius: 8px;
|
|
3138
|
+
cursor: pointer;
|
|
3139
|
+
display: flex;
|
|
3140
|
+
align-items: center;
|
|
3141
|
+
gap: 10px;
|
|
3142
|
+
transition: all 0.15s ease;
|
|
3143
|
+
}
|
|
3144
|
+
.plan-card:hover {
|
|
3145
|
+
border-color: var(--accent);
|
|
3146
|
+
background: var(--bg-hover);
|
|
3147
|
+
}
|
|
3148
|
+
.plan-card-icon {
|
|
3149
|
+
font-size: 14px;
|
|
3150
|
+
}
|
|
3151
|
+
.plan-card-text {
|
|
3152
|
+
flex: 1;
|
|
3153
|
+
min-width: 0;
|
|
3154
|
+
}
|
|
3155
|
+
.plan-card-label {
|
|
3156
|
+
font-size: 11px;
|
|
3157
|
+
font-weight: 500;
|
|
3158
|
+
color: var(--text-muted);
|
|
3159
|
+
text-transform: uppercase;
|
|
3160
|
+
letter-spacing: 0.5px;
|
|
3161
|
+
}
|
|
3162
|
+
.plan-card-title {
|
|
3163
|
+
font-size: 13px;
|
|
3164
|
+
color: var(--text-primary);
|
|
3165
|
+
white-space: nowrap;
|
|
3166
|
+
overflow: hidden;
|
|
3167
|
+
text-overflow: ellipsis;
|
|
3168
|
+
}
|
|
3169
|
+
.plan-card-chevron {
|
|
3170
|
+
width: 16px;
|
|
3171
|
+
height: 16px;
|
|
3172
|
+
flex-shrink: 0;
|
|
3173
|
+
}
|
|
3174
|
+
|
|
3122
3175
|
/* #endregion */
|
|
3123
3176
|
|
|
3124
3177
|
/* #region OWNER_FILTER */
|
|
@@ -3541,6 +3594,14 @@ code.language-tree .hljs-title {
|
|
|
3541
3594
|
opacity: 0.5;
|
|
3542
3595
|
}
|
|
3543
3596
|
|
|
3597
|
+
.pane-strip .drop-before {
|
|
3598
|
+
box-shadow: inset 2px 0 0 var(--accent);
|
|
3599
|
+
}
|
|
3600
|
+
|
|
3601
|
+
.pane-strip .drop-after {
|
|
3602
|
+
box-shadow: inset -2px 0 0 var(--accent);
|
|
3603
|
+
}
|
|
3604
|
+
|
|
3544
3605
|
.pane-pair {
|
|
3545
3606
|
display: flex;
|
|
3546
3607
|
flex: 0 1 auto;
|
|
@@ -3590,6 +3651,18 @@ code.language-tree .hljs-title {
|
|
|
3590
3651
|
text-overflow: ellipsis;
|
|
3591
3652
|
}
|
|
3592
3653
|
|
|
3654
|
+
.pane-tab .pane-title-input {
|
|
3655
|
+
flex: 1;
|
|
3656
|
+
min-width: 80px;
|
|
3657
|
+
padding: 0 4px;
|
|
3658
|
+
font: inherit;
|
|
3659
|
+
color: var(--text-primary);
|
|
3660
|
+
background: var(--bg-deep);
|
|
3661
|
+
border: 1px solid var(--accent);
|
|
3662
|
+
border-radius: 3px;
|
|
3663
|
+
outline: none;
|
|
3664
|
+
}
|
|
3665
|
+
|
|
3593
3666
|
.pane-tab .pin-meta {
|
|
3594
3667
|
color: var(--text-muted);
|
|
3595
3668
|
font-size: 10px;
|
|
@@ -3976,6 +4049,12 @@ code.language-tree .hljs-title {
|
|
|
3976
4049
|
word-break: break-word;
|
|
3977
4050
|
}
|
|
3978
4051
|
|
|
4052
|
+
.pane-msg-meta {
|
|
4053
|
+
margin-bottom: 12px;
|
|
4054
|
+
font-size: 11px;
|
|
4055
|
+
color: var(--text-muted);
|
|
4056
|
+
}
|
|
4057
|
+
|
|
3979
4058
|
/* The modal's corner grip; the pane fills the height, so it sets the width only. */
|
|
3980
4059
|
.pane-doc > .modal-resize-handle {
|
|
3981
4060
|
cursor: ew-resize;
|
|
@@ -4651,6 +4730,17 @@ code.language-tree .hljs-title {
|
|
|
4651
4730
|
display: block;
|
|
4652
4731
|
overflow-x: auto;
|
|
4653
4732
|
}
|
|
4733
|
+
/* The bodies around these tables set `word-break: break-word`, which lets a cell break
|
|
4734
|
+
between any two letters, so the table layout shrinks short columns to one letter. */
|
|
4735
|
+
.rendered-md th,
|
|
4736
|
+
.rendered-md td,
|
|
4737
|
+
.waiting-question-text th,
|
|
4738
|
+
.waiting-question-text td,
|
|
4739
|
+
.waiting-option-desc th,
|
|
4740
|
+
.waiting-option-desc td {
|
|
4741
|
+
word-break: normal;
|
|
4742
|
+
overflow-wrap: break-word;
|
|
4743
|
+
}
|
|
4654
4744
|
.rendered-md th,
|
|
4655
4745
|
.rendered-md td {
|
|
4656
4746
|
border: 1px solid var(--border);
|
|
@@ -4682,6 +4772,55 @@ code.language-tree .hljs-title {
|
|
|
4682
4772
|
border-radius: 6px;
|
|
4683
4773
|
padding: 8px 10px;
|
|
4684
4774
|
}
|
|
4775
|
+
.msg-detail-pre-old,
|
|
4776
|
+
.msg-detail-pre-new {
|
|
4777
|
+
max-height: 200px;
|
|
4778
|
+
overflow: auto;
|
|
4779
|
+
padding-left: 8px;
|
|
4780
|
+
}
|
|
4781
|
+
.msg-detail-pre-old {
|
|
4782
|
+
border-left: 3px solid var(--danger);
|
|
4783
|
+
}
|
|
4784
|
+
.msg-detail-pre-new {
|
|
4785
|
+
border-left: 3px solid var(--success);
|
|
4786
|
+
}
|
|
4787
|
+
.tool-detail-section {
|
|
4788
|
+
margin-top: 8px;
|
|
4789
|
+
padding-top: 6px;
|
|
4790
|
+
border-top: 1px solid var(--border);
|
|
4791
|
+
}
|
|
4792
|
+
.tool-detail-section-wide {
|
|
4793
|
+
margin-top: 10px;
|
|
4794
|
+
padding-top: 8px;
|
|
4795
|
+
border-top: 1px solid var(--border);
|
|
4796
|
+
}
|
|
4797
|
+
.tool-detail-label {
|
|
4798
|
+
font-size: 0.75rem;
|
|
4799
|
+
color: var(--text-muted);
|
|
4800
|
+
margin-bottom: 2px;
|
|
4801
|
+
}
|
|
4802
|
+
.tool-detail-heading {
|
|
4803
|
+
font-size: 0.8rem;
|
|
4804
|
+
color: var(--text-muted);
|
|
4805
|
+
margin-bottom: 4px;
|
|
4806
|
+
}
|
|
4807
|
+
.tool-detail-pre-scroll {
|
|
4808
|
+
max-height: 300px;
|
|
4809
|
+
overflow: auto;
|
|
4810
|
+
}
|
|
4811
|
+
.modal-status {
|
|
4812
|
+
padding: 16px;
|
|
4813
|
+
color: var(--text-secondary);
|
|
4814
|
+
}
|
|
4815
|
+
.modal-status-tight {
|
|
4816
|
+
padding: 8px 0;
|
|
4817
|
+
color: var(--text-secondary);
|
|
4818
|
+
}
|
|
4819
|
+
.modal-empty {
|
|
4820
|
+
padding: 24px;
|
|
4821
|
+
text-align: center;
|
|
4822
|
+
color: var(--text-secondary);
|
|
4823
|
+
}
|
|
4685
4824
|
.expand-toggle-btn {
|
|
4686
4825
|
background: none;
|
|
4687
4826
|
border: none;
|
|
@@ -4758,7 +4897,7 @@ code.language-tree .hljs-title {
|
|
|
4758
4897
|
font-size: 11px;
|
|
4759
4898
|
}
|
|
4760
4899
|
.msg-item.msg-teammate {
|
|
4761
|
-
border-left: 3px solid var(--
|
|
4900
|
+
border-left: 3px solid var(--info);
|
|
4762
4901
|
}
|
|
4763
4902
|
.msg-item.msg-protocol {
|
|
4764
4903
|
border-left: 3px solid var(--border);
|
|
@@ -4769,8 +4908,8 @@ code.language-tree .hljs-title {
|
|
|
4769
4908
|
opacity: 0.75;
|
|
4770
4909
|
}
|
|
4771
4910
|
.msg-item.msg-waiting {
|
|
4772
|
-
border-left: 3px solid var(--warning
|
|
4773
|
-
background: color-mix(in srgb, var(--warning
|
|
4911
|
+
border-left: 3px solid var(--warning);
|
|
4912
|
+
background: color-mix(in srgb, var(--warning) 8%, transparent);
|
|
4774
4913
|
animation: msg-waiting-pulse 2s ease-in-out infinite;
|
|
4775
4914
|
cursor: pointer;
|
|
4776
4915
|
}
|
|
@@ -4803,8 +4942,8 @@ code.language-tree .hljs-title {
|
|
|
4803
4942
|
padding: 1px 6px;
|
|
4804
4943
|
margin-right: 6px;
|
|
4805
4944
|
border-radius: 3px;
|
|
4806
|
-
background: color-mix(in srgb, var(--warning
|
|
4807
|
-
color: var(--warning
|
|
4945
|
+
background: color-mix(in srgb, var(--warning) 22%, transparent);
|
|
4946
|
+
color: var(--warning);
|
|
4808
4947
|
font-size: 10px;
|
|
4809
4948
|
font-weight: 600;
|
|
4810
4949
|
text-transform: uppercase;
|
|
@@ -4823,10 +4962,10 @@ code.language-tree .hljs-title {
|
|
|
4823
4962
|
@keyframes msg-waiting-pulse {
|
|
4824
4963
|
0%,
|
|
4825
4964
|
100% {
|
|
4826
|
-
background: color-mix(in srgb, var(--warning
|
|
4965
|
+
background: color-mix(in srgb, var(--warning) 8%, transparent);
|
|
4827
4966
|
}
|
|
4828
4967
|
50% {
|
|
4829
|
-
background: color-mix(in srgb, var(--warning
|
|
4968
|
+
background: color-mix(in srgb, var(--warning) 16%, transparent);
|
|
4830
4969
|
}
|
|
4831
4970
|
}
|
|
4832
4971
|
.msg-waiting-footer {
|
|
@@ -4899,21 +5038,21 @@ code.language-tree .hljs-title {
|
|
|
4899
5038
|
buttons need the descendant selector to out-rank `.msg-waiting-actions button` */
|
|
4900
5039
|
.waiting-btn-allow,
|
|
4901
5040
|
.msg-waiting-actions .msg-waiting-allow {
|
|
4902
|
-
color: var(--success
|
|
4903
|
-
border-color: color-mix(in srgb, var(--success
|
|
5041
|
+
color: var(--success);
|
|
5042
|
+
border-color: color-mix(in srgb, var(--success) 35%, transparent);
|
|
4904
5043
|
}
|
|
4905
5044
|
.waiting-btn-allow:hover:not(:disabled),
|
|
4906
5045
|
.msg-waiting-actions .msg-waiting-allow:hover {
|
|
4907
|
-
background: color-mix(in srgb, var(--success
|
|
5046
|
+
background: color-mix(in srgb, var(--success) 10%, transparent);
|
|
4908
5047
|
}
|
|
4909
5048
|
.waiting-btn-deny,
|
|
4910
5049
|
.msg-waiting-actions .msg-waiting-deny {
|
|
4911
|
-
color: var(--danger
|
|
4912
|
-
border-color: color-mix(in srgb, var(--danger
|
|
5050
|
+
color: var(--danger);
|
|
5051
|
+
border-color: color-mix(in srgb, var(--danger) 35%, transparent);
|
|
4913
5052
|
}
|
|
4914
5053
|
.waiting-btn-deny:hover,
|
|
4915
5054
|
.msg-waiting-actions .msg-waiting-deny:hover {
|
|
4916
|
-
background: color-mix(in srgb, var(--danger
|
|
5055
|
+
background: color-mix(in srgb, var(--danger) 10%, transparent);
|
|
4917
5056
|
}
|
|
4918
5057
|
.waiting-btn-allow:disabled {
|
|
4919
5058
|
opacity: 0.4;
|
|
@@ -4968,7 +5107,7 @@ code.language-tree .hljs-title {
|
|
|
4968
5107
|
padding: 8px 10px;
|
|
4969
5108
|
border: 1px solid var(--border);
|
|
4970
5109
|
border-radius: 4px;
|
|
4971
|
-
background: var(--bg-
|
|
5110
|
+
background: var(--bg-deep);
|
|
4972
5111
|
}
|
|
4973
5112
|
.waiting-question-text pre.mermaid,
|
|
4974
5113
|
.waiting-option-desc pre.mermaid {
|
|
@@ -5033,7 +5172,7 @@ code.language-tree .hljs-title {
|
|
|
5033
5172
|
padding: 8px 10px;
|
|
5034
5173
|
border: 1px solid var(--border);
|
|
5035
5174
|
border-radius: 4px;
|
|
5036
|
-
background: var(--bg-
|
|
5175
|
+
background: var(--bg-deep);
|
|
5037
5176
|
font-size: 11px;
|
|
5038
5177
|
font-weight: 400;
|
|
5039
5178
|
overflow-x: auto;
|
|
@@ -5788,7 +5927,7 @@ code.language-tree .hljs-title {
|
|
|
5788
5927
|
}
|
|
5789
5928
|
|
|
5790
5929
|
.wf-live-phase.done::before {
|
|
5791
|
-
background: var(--
|
|
5930
|
+
background: var(--success);
|
|
5792
5931
|
}
|
|
5793
5932
|
|
|
5794
5933
|
.wf-live-phase.done {
|
|
@@ -6095,6 +6234,7 @@ body.light {
|
|
|
6095
6234
|
--gold: #a8842f;
|
|
6096
6235
|
--success: #1a8a5a;
|
|
6097
6236
|
--success-dim: rgba(26, 138, 90, 0.15);
|
|
6237
|
+
--info: #2563eb;
|
|
6098
6238
|
--warning: #b07d0a;
|
|
6099
6239
|
--warning-dim: rgba(176, 125, 10, 0.15);
|
|
6100
6240
|
--danger: #c0392b;
|
|
@@ -6113,6 +6253,16 @@ body.light {
|
|
|
6113
6253
|
--ansi-bright-magenta: #a855c9;
|
|
6114
6254
|
--ansi-bright-cyan: #2a9a9a;
|
|
6115
6255
|
--plan-dim: rgba(90, 122, 90, 0.15);
|
|
6256
|
+
--owner-blue: #163f8a;
|
|
6257
|
+
--owner-purple: #5524b0;
|
|
6258
|
+
--owner-teal: #064c3f;
|
|
6259
|
+
--owner-orange: #7a2c10;
|
|
6260
|
+
--owner-yellow: #634b06;
|
|
6261
|
+
--owner-pink: #831a4d;
|
|
6262
|
+
--owner-green: #0b4a22;
|
|
6263
|
+
--owner-indigo: #3730a3;
|
|
6264
|
+
--owner-red: #8f1d1d;
|
|
6265
|
+
--owner-cyan: #0b5566;
|
|
6116
6266
|
}
|
|
6117
6267
|
|
|
6118
6268
|
body.light::before {
|
|
@@ -6552,7 +6702,7 @@ body.light .msg-assistant .msg-text {
|
|
|
6552
6702
|
}
|
|
6553
6703
|
|
|
6554
6704
|
.preview-fm .fm-k {
|
|
6555
|
-
color: var(--accent
|
|
6705
|
+
color: var(--accent);
|
|
6556
6706
|
font-weight: 600;
|
|
6557
6707
|
}
|
|
6558
6708
|
|
|
@@ -7143,7 +7293,8 @@ select.form-input option:checked {
|
|
|
7143
7293
|
|
|
7144
7294
|
/* #region SESSION_PICKER */
|
|
7145
7295
|
.modal.session-picker {
|
|
7146
|
-
max-
|
|
7296
|
+
max-width: 920px;
|
|
7297
|
+
max-height: 74vh;
|
|
7147
7298
|
padding: 12px;
|
|
7148
7299
|
display: flex;
|
|
7149
7300
|
flex-direction: column;
|
|
@@ -7152,9 +7303,9 @@ select.form-input option:checked {
|
|
|
7152
7303
|
}
|
|
7153
7304
|
|
|
7154
7305
|
.sp-input {
|
|
7155
|
-
padding:
|
|
7306
|
+
padding: 10px 12px;
|
|
7156
7307
|
background: var(--bg-deep);
|
|
7157
|
-
font-size:
|
|
7308
|
+
font-size: 14px;
|
|
7158
7309
|
}
|
|
7159
7310
|
|
|
7160
7311
|
.modal.session-picker.peeking {
|
|
@@ -7197,7 +7348,7 @@ select.form-input option:checked {
|
|
|
7197
7348
|
gap: 8px;
|
|
7198
7349
|
margin-bottom: 6px;
|
|
7199
7350
|
font-family: var(--mono);
|
|
7200
|
-
font-size:
|
|
7351
|
+
font-size: 11.5px;
|
|
7201
7352
|
color: var(--text-muted);
|
|
7202
7353
|
white-space: nowrap;
|
|
7203
7354
|
overflow: hidden;
|
|
@@ -7215,13 +7366,13 @@ select.form-input option:checked {
|
|
|
7215
7366
|
align-items: center;
|
|
7216
7367
|
gap: 8px;
|
|
7217
7368
|
width: 100%;
|
|
7218
|
-
padding:
|
|
7369
|
+
padding: 7px 8px;
|
|
7219
7370
|
background: none;
|
|
7220
7371
|
border: 1px solid transparent;
|
|
7221
7372
|
border-radius: 5px;
|
|
7222
7373
|
color: var(--text-secondary);
|
|
7223
7374
|
font-family: var(--mono);
|
|
7224
|
-
font-size:
|
|
7375
|
+
font-size: 13px;
|
|
7225
7376
|
text-align: left;
|
|
7226
7377
|
cursor: pointer;
|
|
7227
7378
|
}
|
|
@@ -7330,14 +7481,14 @@ select.form-input option:checked {
|
|
|
7330
7481
|
border-radius: 3px;
|
|
7331
7482
|
background: var(--bg-hover);
|
|
7332
7483
|
color: var(--text-tertiary);
|
|
7333
|
-
font-size:
|
|
7484
|
+
font-size: 11.5px;
|
|
7334
7485
|
}
|
|
7335
7486
|
|
|
7336
7487
|
.sp-count,
|
|
7337
7488
|
.sp-time {
|
|
7338
7489
|
flex: none;
|
|
7339
7490
|
color: var(--text-muted);
|
|
7340
|
-
font-size:
|
|
7491
|
+
font-size: 11.5px;
|
|
7341
7492
|
white-space: nowrap;
|
|
7342
7493
|
}
|
|
7343
7494
|
|
|
@@ -7769,7 +7920,7 @@ select.form-input option:checked {
|
|
|
7769
7920
|
.impact-bar-fill {
|
|
7770
7921
|
height: 100%;
|
|
7771
7922
|
border-radius: 3px;
|
|
7772
|
-
background: var(--accent
|
|
7923
|
+
background: var(--accent);
|
|
7773
7924
|
min-width: 2px;
|
|
7774
7925
|
}
|
|
7775
7926
|
|
|
@@ -8178,6 +8329,7 @@ select.form-input option:checked {
|
|
|
8178
8329
|
--gold: #a8842f;
|
|
8179
8330
|
--success: #1a8a5a;
|
|
8180
8331
|
--success-dim: rgba(26, 138, 90, 0.15);
|
|
8332
|
+
--info: #2563eb;
|
|
8181
8333
|
--warning: #b07d0a;
|
|
8182
8334
|
--warning-dim: rgba(176, 125, 10, 0.15);
|
|
8183
8335
|
--danger: #c0392b;
|
|
@@ -8196,6 +8348,16 @@ select.form-input option:checked {
|
|
|
8196
8348
|
--ansi-bright-magenta: #a855c9;
|
|
8197
8349
|
--ansi-bright-cyan: #2a9a9a;
|
|
8198
8350
|
--plan-dim: rgba(90, 122, 90, 0.15);
|
|
8351
|
+
--owner-blue: #163f8a;
|
|
8352
|
+
--owner-purple: #5524b0;
|
|
8353
|
+
--owner-teal: #064c3f;
|
|
8354
|
+
--owner-orange: #7a2c10;
|
|
8355
|
+
--owner-yellow: #634b06;
|
|
8356
|
+
--owner-pink: #831a4d;
|
|
8357
|
+
--owner-green: #0b4a22;
|
|
8358
|
+
--owner-indigo: #3730a3;
|
|
8359
|
+
--owner-red: #8f1d1d;
|
|
8360
|
+
--owner-cyan: #0b5566;
|
|
8199
8361
|
}
|
|
8200
8362
|
|
|
8201
8363
|
body:not(.dark-forced)::before {
|