claude-code-kanban 6.1.1 → 7.0.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
@@ -26,6 +26,7 @@
26
26
  <script defer src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.12.0/build/highlight.min.js" integrity="sha384-wjfDDhOPPdjtva8vWBhWeVprSpmxisEu5aYT3q1JyACqXpdKpo3PWZTMVq24MBix" crossorigin="anonymous"></script>
27
27
  <script>window.__STORAGE_NS__ = null;</script>
28
28
  <script defer src="/project-match.js"></script>
29
+ <script defer src="/tree-highlight.js"></script>
29
30
  <script defer src="/link-url.js"></script>
30
31
  <script defer src="/app.js"></script>
31
32
  </head>
@@ -285,6 +286,22 @@
285
286
  </div>
286
287
  </header>
287
288
 
289
+ <div id="pane-strip" class="pane-strip" role="tablist" aria-label="Session panes">
290
+ <div id="pane-pin" class="pane-pin"></div>
291
+ <div id="pane-tabs" class="pane-tabs"></div>
292
+ <button id="pane-add" class="icon-btn pane-add" title="Add pane (paste a URL or a file path, or a linked doc)" aria-label="Add pane">
293
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
294
+ </button>
295
+ <div class="pane-tools">
296
+ <button id="pane-reload" class="icon-btn pane-tool" title="Reload pane" aria-label="Reload pane">
297
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 12a9 9 0 1 1-3-6.7L21 8"/><polyline points="21 3 21 8 16 8"/></svg>
298
+ </button>
299
+ <button id="pane-open" class="icon-btn pane-tool" title="Open in new tab" aria-label="Open pane in new tab">
300
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg>
301
+ </button>
302
+ </div>
303
+ </div>
304
+
288
305
  <div class="kanban" id="main-content">
289
306
  <div id="owner-filter-bar" class="owner-filter-bar">
290
307
  <select id="owner-filter" class="filter-dropdown" onchange="filterByOwner(this.value)" aria-label="Filter by team member">
@@ -336,6 +353,7 @@
336
353
  <div id="terminal-host" class="terminal-host"></div>
337
354
  <textarea id="terminal-key-proxy" class="terminal-key-proxy" tabindex="-1" aria-hidden="true"></textarea>
338
355
  </div>
356
+ <div id="pane-views" class="pane-views"></div>
339
357
  <div id="agent-footer" class="agent-footer">
340
358
  <div class="agent-footer-header" onclick="toggleAgentFooter()">
341
359
  <span id="agent-footer-label">Agents</span>
@@ -435,6 +453,9 @@
435
453
  <div class="modal-header">
436
454
  <h3 class="modal-title" id="preview-modal-title">Preview</h3>
437
455
  <div style="display:flex;gap:4px;align-items:center;">
456
+ <button id="preview-pane-btn" class="icon-btn" aria-label="Open in a pane" title="Open in a pane" onclick="openPreviewInPane()">
457
+ <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>
458
+ </button>
438
459
  <button id="preview-link-btn" class="icon-btn" aria-label="Link to current session" title="Link to current session" onclick="togglePreviewSessionLink()">
439
460
  <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>
440
461
  </button>
@@ -825,6 +846,22 @@
825
846
  </div>
826
847
  </div>
827
848
 
849
+ <div id="pane-pop" class="modal-overlay" onclick="closePanePop()">
850
+ <div class="modal pane-pop-dialog" role="dialog" aria-labelledby="pane-pop-title" onclick="event.stopPropagation()">
851
+ <div class="modal-header">
852
+ <h3 id="pane-pop-title" class="modal-title">Add a pane</h3>
853
+ <button class="modal-close" aria-label="Close dialog" onclick="closePanePop()">
854
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 6L6 18M6 6l12 12"/></svg>
855
+ </button>
856
+ </div>
857
+ <input id="pane-pop-input" class="form-input" placeholder="Search linked docs, or paste a URL or a file path" autocomplete="off" spellcheck="false">
858
+ <div id="pane-pop-detect" class="pane-pop-detect"></div>
859
+ <div class="pane-pop-label">Linked docs</div>
860
+ <div id="pane-pop-docs" class="pane-pop-docs"></div>
861
+ <div class="sp-hint"><kbd>Enter</kbd> add &middot; <kbd>&uarr;</kbd><kbd>&darr;</kbd> select &middot; <kbd>Esc</kbd> close</div>
862
+ </div>
863
+ </div>
864
+
828
865
  <div id="session-picker-modal" class="modal-overlay top-aligned" onclick="closeSessionPicker()">
829
866
  <div class="modal session-picker" onclick="event.stopPropagation()">
830
867
  <input type="text" id="session-picker-input" class="form-input sp-input" placeholder="Jump to session..." autocomplete="off" spellcheck="false">
@@ -1,6 +1,9 @@
1
1
  // Loaded by the page as a plain script and by lib/linked-docs.js through require, so the
2
- // sidebar, the API and the CLI accept the same URLs. Only http(s): linked docs render as
3
- // links, so a `javascript:` or `data:` value sent through the API must not become one.
2
+ // sidebar, the API and the CLI accept the same URLs and keep the same number of docs.
3
+ const MAX_LINKED_DOCS = 200;
4
+
5
+ // Only http(s): linked docs render as links, so a `javascript:` or `data:` value sent
6
+ // through the API must not become one.
4
7
  function linkUrl(value) {
5
8
  if (typeof value !== 'string') return null;
6
9
  const v = value.trim();
@@ -12,4 +15,4 @@ function linkUrl(value) {
12
15
  }
13
16
  }
14
17
 
15
- if (typeof module === 'object' && module.exports) module.exports = { linkUrl };
18
+ if (typeof module === 'object' && module.exports) module.exports = { linkUrl, MAX_LINKED_DOCS };