claude-code-kanban 7.1.0 → 7.1.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-kanban",
3
- "version": "7.1.0",
3
+ "version": "7.1.1",
4
4
  "description": "A web-based Kanban board for viewing Claude Code tasks with agent teams support",
5
5
  "main": "server.js",
6
6
  "type": "commonjs",
package/public/app.js CHANGED
@@ -7629,6 +7629,18 @@ function bridgedFrameEls() {
7629
7629
  return [...document.querySelectorAll('iframe[srcdoc]')].filter((f) => bridgedFrames.has(f));
7630
7630
  }
7631
7631
 
7632
+ // A previewed page always hands back the zoom keys, so Ctrl +/-/0 scales it like a markdown
7633
+ // preview instead of zooming the whole board. A bridged frame is on screen only in a zoomable view.
7634
+ const ZOOM_CLAIMS = ['ctrlKey', 'metaKey'].flatMap((mod) =>
7635
+ [false, true].flatMap((shiftKey) =>
7636
+ Object.keys(ZOOM_KEYS).map((k) =>
7637
+ k.length === 1
7638
+ ? { [mod]: true, shiftKey, key: k, code: '' }
7639
+ : { [mod]: true, shiftKey, key: 'Unidentified', code: k },
7640
+ ),
7641
+ ),
7642
+ );
7643
+
7632
7644
  function sendBridgeClaims(frames, claims) {
7633
7645
  for (const f of frames) f.contentWindow?.postMessage({ type: `${REVIEW_MSG}claims`, ...claims }, '*');
7634
7646
  }
@@ -7984,7 +7996,7 @@ function createPreviewFrame(className, srcdoc) {
7984
7996
  frame.setAttribute('referrerpolicy', 'no-referrer');
7985
7997
  frame.srcdoc = srcdoc;
7986
7998
  bridgedFrames.add(frame);
7987
- frame.addEventListener('load', () => sendBridgeClaims([frame], keyClaims()));
7999
+ frame.addEventListener('load', () => sendBridgeClaims([frame], bridgeClaims(keyClaims())));
7988
8000
  return frame;
7989
8001
  }
7990
8002
 
@@ -12067,7 +12079,7 @@ async function loadPaneView(sid, pane, view) {
12067
12079
  }
12068
12080
  if (pane.kind === 'url') {
12069
12081
  const frame = document.createElement('iframe');
12070
- frame.className = 'pane-frame';
12082
+ frame.className = 'pane-frame modal-zoomable';
12071
12083
  frame.setAttribute('sandbox', PANE_URL_SANDBOX);
12072
12084
  frame.setAttribute('referrerpolicy', 'no-referrer');
12073
12085
  frame.title = pane.title;
@@ -12087,7 +12099,7 @@ async function loadPaneView(sid, pane, view) {
12087
12099
  if (r.ok) data = await r.json();
12088
12100
  } catch {}
12089
12101
  if (data?.kind === 'html') {
12090
- const frame = createPreviewFrame('pane-frame', data.content + REVIEW_BRIDGE_TAG);
12102
+ const frame = createPreviewFrame('pane-frame modal-zoomable', data.content + REVIEW_BRIDGE_TAG);
12091
12103
  frame.title = pane.title;
12092
12104
  view.appendChild(frame);
12093
12105
  attachPaneReview(view, sid, fileReviewOpts(data.path, data.kind, frame, frame));
@@ -12973,6 +12985,10 @@ function keyClaims() {
12973
12985
  return { keys: terminalClaims(), forward: hub.forwardCombos() };
12974
12986
  }
12975
12987
 
12988
+ function bridgeClaims(claims) {
12989
+ return { ...claims, keys: [...claims.keys, ...ZOOM_CLAIMS] };
12990
+ }
12991
+
12976
12992
  function pushTerminalClaims() {
12977
12993
  if (terminalClaimsQueued) return;
12978
12994
  terminalClaimsQueued = true;
@@ -12981,7 +12997,7 @@ function pushTerminalClaims() {
12981
12997
  const bridged = bridgedFrameEls();
12982
12998
  if (!termFrame.inited && !bridged.length) return;
12983
12999
  const claims = keyClaims();
12984
- sendBridgeClaims(bridged, claims);
13000
+ sendBridgeClaims(bridged, bridgeClaims(claims));
12985
13001
  if (!termFrame.inited) return;
12986
13002
  const sig = JSON.stringify(claims);
12987
13003
  if (sig === termFrame.claims) return;
package/public/style.css CHANGED
@@ -52,6 +52,7 @@
52
52
  --font-serif: var(--serif);
53
53
  /* reading-surface scale for the message-detail and preview modals (Ctrl +/-/0) */
54
54
  --modal-zoom: 1;
55
+ --review-panel-w: 320px;
55
56
  }
56
57
 
57
58
  /* Tokens derived from theme colors live on body, where color themes set those colors;
@@ -6044,7 +6045,6 @@ body.light .msg-assistant .msg-text {
6044
6045
  /* The comment panel opens beside the content, so the dialog grows by `--review-extra`
6045
6046
  instead of squeezing what is under review. */
6046
6047
  .modal.review-host {
6047
- --review-panel-w: 320px;
6048
6048
  --review-extra: 0px;
6049
6049
  }
6050
6050