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/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 session (Alt+Shift+`)" aria-label="End terminal session">
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 viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="16" height="16"><rect x="3" y="4" width="18" height="16" rx="2"/><path d="M3 9h18M9 4v5"/></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
- --team: #60a5fa;
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: rgba(232, 111, 51, 0.08);
2289
- border: 1px solid rgba(232, 111, 51, 0.2);
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(--ok, #3fb950);
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(--ok, #3fb950);
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: rgba(34, 197, 94, 0.15);
3042
- color: rgb(34, 160, 80);
3043
- border-color: rgba(34, 197, 94, 0.3);
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: rgba(239, 68, 68, 0.15);
3053
- color: rgb(220, 60, 60);
3054
- border-color: rgba(239, 68, 68, 0.3);
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(--team);
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, #f5a623);
4773
- background: color-mix(in srgb, var(--warning, #f5a623) 8%, transparent);
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, #f5a623) 22%, transparent);
4807
- color: var(--warning, #f5a623);
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, #f5a623) 8%, transparent);
4965
+ background: color-mix(in srgb, var(--warning) 8%, transparent);
4827
4966
  }
4828
4967
  50% {
4829
- background: color-mix(in srgb, var(--warning, #f5a623) 16%, transparent);
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, #2ea043);
4903
- border-color: color-mix(in srgb, var(--success, #2ea043) 35%, transparent);
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, #2ea043) 10%, transparent);
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, #f85149);
4912
- border-color: color-mix(in srgb, var(--danger, #f85149) 35%, transparent);
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, #f85149) 10%, transparent);
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-primary);
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-primary);
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(--ok, #3fb950);
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, #7aa2f7);
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-height: 70vh;
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: 9px 12px;
7306
+ padding: 10px 12px;
7156
7307
  background: var(--bg-deep);
7157
- font-size: 13px;
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: 11px;
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: 6px 8px;
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: 12px;
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: 11px;
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: 11px;
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, #6366f1);
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 {