claude-code-kanban 3.1.1 → 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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-kanban",
3
- "version": "3.1.1",
3
+ "version": "3.1.2",
4
4
  "description": "A web-based Kanban board for viewing Claude Code tasks with agent teams support",
5
5
  "main": "server.js",
6
6
  "bin": {
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
  }
@@ -3993,7 +3995,15 @@ document.addEventListener('keydown', (e) => {
3993
3995
  }
3994
3996
  if (matchKey(e, 'KeyR')) {
3995
3997
  e.preventDefault();
3996
- location.reload();
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
+ });
3997
4007
  return;
3998
4008
  }
3999
4009
  if (matchKey(e, 'KeyT')) {
package/public/style.css CHANGED
@@ -2076,29 +2076,38 @@ body::before {
2076
2076
  }
2077
2077
  .toast {
2078
2078
  position: fixed;
2079
- bottom: 24px;
2080
- left: 24px;
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-left: 3px solid var(--accent);
2086
- border-radius: 8px;
2087
- padding: 10px 20px;
2088
- font-size: 13px;
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.25s,
2094
- transform 0.25s;
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,