claude-code-kanban 3.1.0 → 3.1.2
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 +1 -1
- package/public/app.js +23 -9
- package/public/index.html +64 -58
- package/public/style.css +23 -14
package/package.json
CHANGED
package/public/app.js
CHANGED
|
@@ -1463,17 +1463,19 @@ function updateFullscreenBtnIcon(btnId, isFullscreen) {
|
|
|
1463
1463
|
}
|
|
1464
1464
|
|
|
1465
1465
|
let _toastTimer = null;
|
|
1466
|
+
let _manualRefreshing = false;
|
|
1466
1467
|
//#endregion
|
|
1467
1468
|
|
|
1468
1469
|
//#region TOAST
|
|
1469
|
-
function showToast(msg) {
|
|
1470
|
+
function showToast(msg, type) {
|
|
1470
1471
|
const el = document.getElementById('toast');
|
|
1471
1472
|
clearTimeout(_toastTimer);
|
|
1472
1473
|
el.style.transition = 'none';
|
|
1473
|
-
el.classList.remove('visible');
|
|
1474
|
+
el.classList.remove('visible', 'toast-success', 'toast-error', 'toast-info');
|
|
1474
1475
|
void el.offsetHeight;
|
|
1475
1476
|
el.style.transition = '';
|
|
1476
1477
|
el.textContent = msg;
|
|
1478
|
+
if (type) el.classList.add(`toast-${type}`);
|
|
1477
1479
|
el.classList.add('visible');
|
|
1478
1480
|
_toastTimer = setTimeout(() => el.classList.remove('visible'), 2000);
|
|
1479
1481
|
}
|
|
@@ -2124,13 +2126,12 @@ function renderSessions() {
|
|
|
2124
2126
|
if (isActive) activeSessionIds.add(s.id);
|
|
2125
2127
|
return isActive;
|
|
2126
2128
|
});
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
if (
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
if (storageSession) filteredSessions.push(storageSession);
|
|
2129
|
+
const filteredIds = new Set(filteredSessions.map((s) => s.id));
|
|
2130
|
+
for (const id of [revealedPlanSessionId, revealedStorageSessionId, currentSessionId]) {
|
|
2131
|
+
if (id && !filteredIds.has(id)) {
|
|
2132
|
+
const session = sessions.find((s) => s.id === id);
|
|
2133
|
+
if (session) filteredSessions.push(session);
|
|
2134
|
+
}
|
|
2134
2135
|
}
|
|
2135
2136
|
}
|
|
2136
2137
|
if (filterProject) {
|
|
@@ -3992,6 +3993,19 @@ document.addEventListener('keydown', (e) => {
|
|
|
3992
3993
|
hubNavigate('marketplace', mSession?.project ? `?project=${encodeURIComponent(mSession.project)}` : undefined);
|
|
3993
3994
|
return;
|
|
3994
3995
|
}
|
|
3996
|
+
if (matchKey(e, 'KeyR')) {
|
|
3997
|
+
e.preventDefault();
|
|
3998
|
+
if (_manualRefreshing) return;
|
|
3999
|
+
_manualRefreshing = true;
|
|
4000
|
+
const refreshes = [fetchSessions()];
|
|
4001
|
+
if (currentSessionId) refreshes.push(fetchTasks(currentSessionId));
|
|
4002
|
+
Promise.all(refreshes)
|
|
4003
|
+
.then(() => showToast('Data refreshed', 'success'))
|
|
4004
|
+
.finally(() => {
|
|
4005
|
+
_manualRefreshing = false;
|
|
4006
|
+
});
|
|
4007
|
+
return;
|
|
4008
|
+
}
|
|
3995
4009
|
if (matchKey(e, 'KeyT')) {
|
|
3996
4010
|
e.preventDefault();
|
|
3997
4011
|
toggleTheme();
|
package/public/index.html
CHANGED
|
@@ -322,55 +322,61 @@
|
|
|
322
322
|
</button>
|
|
323
323
|
</div>
|
|
324
324
|
<div class="modal-body">
|
|
325
|
-
<div style="display: grid; gap:
|
|
326
|
-
<div>
|
|
327
|
-
<
|
|
328
|
-
|
|
329
|
-
<
|
|
330
|
-
<
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
<
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
<
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
<
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
</
|
|
354
|
-
<
|
|
355
|
-
<
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
<
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
<
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
<
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
325
|
+
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 0 24px;">
|
|
326
|
+
<div style="display: grid; gap: 16px; align-content: start;">
|
|
327
|
+
<div>
|
|
328
|
+
<h4 style="margin: 0 0 8px 0; color: var(--text-primary); font-size: 14px; font-weight: 600;">Global</h4>
|
|
329
|
+
<table style="width: 100%; font-size: 13px;">
|
|
330
|
+
<tr>
|
|
331
|
+
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">?</kbd></td>
|
|
332
|
+
<td style="padding: 4px 0; color: var(--text-primary);">Show keyboard shortcuts</td>
|
|
333
|
+
</tr>
|
|
334
|
+
<tr>
|
|
335
|
+
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">Esc</kbd></td>
|
|
336
|
+
<td style="padding: 4px 0; color: var(--text-primary);">Close panels or cancel</td>
|
|
337
|
+
</tr>
|
|
338
|
+
<tr>
|
|
339
|
+
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">Tab</kbd></td>
|
|
340
|
+
<td style="padding: 4px 0; color: var(--text-primary);">Toggle sidebar / board focus</td>
|
|
341
|
+
</tr>
|
|
342
|
+
<tr>
|
|
343
|
+
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">[</kbd></td>
|
|
344
|
+
<td style="padding: 4px 0; color: var(--text-primary);">Toggle sidebar collapse</td>
|
|
345
|
+
</tr>
|
|
346
|
+
<tr>
|
|
347
|
+
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">R</kbd></td>
|
|
348
|
+
<td style="padding: 4px 0; color: var(--text-primary);">Reload page</td>
|
|
349
|
+
</tr>
|
|
350
|
+
</table>
|
|
351
|
+
</div>
|
|
352
|
+
<div>
|
|
353
|
+
<h4 style="margin: 0 0 8px 0; color: var(--text-primary); font-size: 14px; font-weight: 600;">Navigation</h4>
|
|
354
|
+
<table style="width: 100%; font-size: 13px;">
|
|
355
|
+
<tr>
|
|
356
|
+
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">J</kbd> / <kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">↓</kbd></td>
|
|
357
|
+
<td style="padding: 4px 0; color: var(--text-primary);">Next task in column</td>
|
|
358
|
+
</tr>
|
|
359
|
+
<tr>
|
|
360
|
+
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">K</kbd> / <kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">↑</kbd></td>
|
|
361
|
+
<td style="padding: 4px 0; color: var(--text-primary);">Previous task in column</td>
|
|
362
|
+
</tr>
|
|
363
|
+
<tr>
|
|
364
|
+
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">H</kbd> / <kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">←</kbd></td>
|
|
365
|
+
<td style="padding: 4px 0; color: var(--text-primary);">Move to left column</td>
|
|
366
|
+
</tr>
|
|
367
|
+
<tr>
|
|
368
|
+
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">L</kbd> / <kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">→</kbd></td>
|
|
369
|
+
<td style="padding: 4px 0; color: var(--text-primary);">Move to right column</td>
|
|
370
|
+
</tr>
|
|
371
|
+
<tr>
|
|
372
|
+
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">Enter</kbd></td>
|
|
373
|
+
<td style="padding: 4px 0; color: var(--text-primary);">Toggle task detail panel</td>
|
|
374
|
+
</tr>
|
|
375
|
+
</table>
|
|
376
|
+
</div>
|
|
371
377
|
</div>
|
|
372
|
-
<div>
|
|
373
|
-
<h4 style="margin: 0 0 8px 0; color: var(--text-primary); font-size: 14px; font-weight: 600;">
|
|
378
|
+
<div style="align-content: start;">
|
|
379
|
+
<h4 style="margin: 0 0 8px 0; color: var(--text-primary); font-size: 14px; font-weight: 600;">Actions</h4>
|
|
374
380
|
<table style="width: 100%; font-size: 13px;">
|
|
375
381
|
<tr>
|
|
376
382
|
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">P</kbd></td>
|
|
@@ -384,14 +390,6 @@
|
|
|
384
390
|
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">D</kbd></td>
|
|
385
391
|
<td style="padding: 4px 0; color: var(--text-primary);">Delete selected task</td>
|
|
386
392
|
</tr>
|
|
387
|
-
<tr>
|
|
388
|
-
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">Shift+L</kbd></td>
|
|
389
|
-
<td style="padding: 4px 0; color: var(--text-primary);">Toggle session log</td>
|
|
390
|
-
</tr>
|
|
391
|
-
<tr>
|
|
392
|
-
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">Shift+M</kbd></td>
|
|
393
|
-
<td style="padding: 4px 0; color: var(--text-primary);">Open last message detail</td>
|
|
394
|
-
</tr>
|
|
395
393
|
<tr>
|
|
396
394
|
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">N</kbd></td>
|
|
397
395
|
<td style="padding: 4px 0; color: var(--text-primary);">Toggle scratchpad</td>
|
|
@@ -400,13 +398,21 @@
|
|
|
400
398
|
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">T</kbd></td>
|
|
401
399
|
<td style="padding: 4px 0; color: var(--text-primary);">Toggle theme</td>
|
|
402
400
|
</tr>
|
|
401
|
+
<tr>
|
|
402
|
+
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">M</kbd></td>
|
|
403
|
+
<td style="padding: 4px 0; color: var(--text-primary);">Jump to marketplace</td>
|
|
404
|
+
</tr>
|
|
403
405
|
<tr>
|
|
404
406
|
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">$</kbd></td>
|
|
405
407
|
<td style="padding: 4px 0; color: var(--text-primary);">Jump to cost</td>
|
|
406
408
|
</tr>
|
|
407
409
|
<tr>
|
|
408
|
-
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">
|
|
409
|
-
<td style="padding: 4px 0; color: var(--text-primary);">
|
|
410
|
+
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">Shift+L</kbd></td>
|
|
411
|
+
<td style="padding: 4px 0; color: var(--text-primary);">Toggle session log</td>
|
|
412
|
+
</tr>
|
|
413
|
+
<tr>
|
|
414
|
+
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">Shift+M</kbd></td>
|
|
415
|
+
<td style="padding: 4px 0; color: var(--text-primary);">Open last message detail</td>
|
|
410
416
|
</tr>
|
|
411
417
|
<tr>
|
|
412
418
|
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">Shift+S</kbd></td>
|
package/public/style.css
CHANGED
|
@@ -2076,29 +2076,38 @@ body::before {
|
|
|
2076
2076
|
}
|
|
2077
2077
|
.toast {
|
|
2078
2078
|
position: fixed;
|
|
2079
|
-
bottom:
|
|
2080
|
-
left:
|
|
2081
|
-
transform: translateY(20px);
|
|
2079
|
+
bottom: 16px;
|
|
2080
|
+
left: 16px;
|
|
2082
2081
|
background: var(--bg-elevated);
|
|
2083
|
-
color: var(--accent-text);
|
|
2084
2082
|
border: 1px solid var(--border);
|
|
2085
|
-
border-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
font-weight: 600;
|
|
2083
|
+
border-radius: 6px;
|
|
2084
|
+
padding: 8px 14px;
|
|
2085
|
+
font-size: 11px;
|
|
2086
|
+
color: var(--text-secondary);
|
|
2090
2087
|
z-index: 10000;
|
|
2091
2088
|
opacity: 0;
|
|
2089
|
+
transform: translateY(10px);
|
|
2092
2090
|
transition:
|
|
2093
|
-
opacity 0.
|
|
2094
|
-
transform 0.
|
|
2091
|
+
opacity 0.2s ease,
|
|
2092
|
+
transform 0.2s ease;
|
|
2095
2093
|
pointer-events: none;
|
|
2096
|
-
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
|
|
2097
2094
|
}
|
|
2098
2095
|
.toast.visible {
|
|
2099
2096
|
opacity: 1;
|
|
2100
2097
|
transform: translateY(0);
|
|
2101
2098
|
}
|
|
2099
|
+
.toast.toast-success {
|
|
2100
|
+
border-color: var(--success);
|
|
2101
|
+
color: var(--success);
|
|
2102
|
+
}
|
|
2103
|
+
.toast.toast-error {
|
|
2104
|
+
border-color: #f85149;
|
|
2105
|
+
color: #f85149;
|
|
2106
|
+
}
|
|
2107
|
+
.toast.toast-info {
|
|
2108
|
+
border-color: var(--accent);
|
|
2109
|
+
color: var(--accent);
|
|
2110
|
+
}
|
|
2102
2111
|
.rendered-md h1,
|
|
2103
2112
|
.rendered-md h2,
|
|
2104
2113
|
.rendered-md h3,
|
|
@@ -2651,11 +2660,11 @@ body.light .msg-assistant .msg-text {
|
|
|
2651
2660
|
border: 1px solid var(--border);
|
|
2652
2661
|
border-radius: 12px;
|
|
2653
2662
|
width: 90%;
|
|
2654
|
-
max-width:
|
|
2663
|
+
max-width: 860px;
|
|
2655
2664
|
max-height: 90vh;
|
|
2656
2665
|
padding: 24px;
|
|
2657
2666
|
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
|
|
2658
|
-
overflow:
|
|
2667
|
+
overflow-y: auto;
|
|
2659
2668
|
}
|
|
2660
2669
|
|
|
2661
2670
|
.modal.fullscreen {
|