kandown 0.29.0 → 0.30.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/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.30.1 — 2026-07-21 — "Fix Auto-Updater Crash"
4
+
5
+ - **Fixed**: **`performGlobalPackageUpdate` missing function error** — added the missing `performGlobalPackageUpdate` definition in `bin/kandown.js`, fixing a runtime `ReferenceError` crash during automatic background CLI updates and `kandown update`.
6
+
7
+ ## 0.30.0 — 2026-07-21 — "Fable UI Themes"
8
+
9
+ - **Added**: **Customizable JSON Theme Engine (`KandownTheme`)** — upgraded Kandown's skin system from 5 hardcoded HSL presets to an open, JSON-driven theme engine with dynamic inheritance (`base`), fallback safety, and runtime custom theme registration (`registerCustomThemes`).
10
+ - **Added**: **8 Curated Built-in Presets** — introduced 8 design presets in `src/lib/theme.ts`:
11
+ - ⚡ **Vercel**: Monochrome contrast, tight typography, 6px radius, sharp 1px borders, zero shadows.
12
+ - 📐 **Linear**: Dark-first (`#08090A`), electric violet (`#5E6AD2`), 8px radius, glass header, soft popover shadows.
13
+ - 🧡 **Claude**: Editorial warmth, oat crème (`#F5F1EA`), terracotta accent (`#D97757`), Charter serif display font, 12px radius, soft diffuse shadows.
14
+ - 🍎 **Apple**: Translucent materials (`rgba(255,255,255,0.72)` + backdrop blur), SF system font, 14px squircle radius, multi-layer elevated shadows.
15
+ - 💳 **Stripe**: Indigo night (`#0A0A23`), blurple accent (`#635BFF`), 8px radius, soft colored glow shadows.
16
+ - 📄 **Paper**: Notion-style calm studio, `#F7F6F3` light, `#191919` dark, pastel tags, 4px radius, no shadows.
17
+ - 🧛 **Catppuccin**: Official Mocha (`#1E1E2E` mauve `#CBA6F7`) and Latte palettes.
18
+ - 🖥️ **Terminal**: CRT homage to TUI, `#0C0C0C` background, `#33FF66` phosphor green text, SF Mono everywhere, 0px radius.
19
+ - **Added**: **Theme Gallery with Live Mini-Board Previews** — replaced static color swatches in Settings with an interactive gallery of `ThemePreviewCard` components rendering isolated live 3-column kanban board previews using each theme's unique HSL tokens, radius, fonts, and shadows.
20
+ - **Added**: **Visual Theme Editor Modal (`ThemeCustomizerModal`)** — added a visual customization drawer for creating and tweaking custom JSON themes with sliders for border radius (0–24px), shadow elevation levels (`none`, `soft`, `elevated`, `dramatic`), density, motion scale, glassmorphism, and live HSL token pickers.
21
+ - **Added**: **Live WCAG 2.1 Contrast Ratio Calculator** — added real-time relative luminance calculation in the theme editor showing an active WCAG AA contrast ratio badge (warning when ratio < 4.5:1).
22
+ - **Added**: **JSON Import & Export** — added direct theme JSON view/edit panel with 1-click clipboard copy for sharing and storing custom themes.
23
+ - **Added**: **`ui.customThemes` Config Support** — custom user themes are automatically persisted in `kandown.json` under `ui.customThemes` and loaded seamlessly on startup.
24
+ - **Changed**: **Appearance CSS Tokens & Design Refinements** — introduced `--radius`, `--shadow-*`, `--font-display`, `--motion-scale`, `--card-blur` variables into `:root` and mapped them to `tailwind.config.js` (`borderRadius`, `fontFamily.display`). Refined base body typography scale to 15px, unified focus rings (`:focus-visible`), and added smooth light/dark root transitions.
25
+
3
26
  ## 0.29.0 — 2026-07-20 — "Global Daemon Refresh"
4
27
 
5
28
  - **Added**: **Global daemon refresh command** — added `kandown daemon refresh-all`, which scans every active local Kandown daemon across the configured port range, refreshes each open project's `.kandown/kandown.html`, and restarts any daemon running an older CLI version.
package/bin/kandown.js CHANGED
@@ -227,6 +227,34 @@ function rememberUpdateCheck() {
227
227
  writeFileSync(UPDATE_CHECK_CACHE, JSON.stringify({ lastCheck: Date.now() }), 'utf8');
228
228
  } catch { /* read-only install — check again next time */ }
229
229
  }
230
+ async function performGlobalPackageUpdate(packageSpec) {
231
+ const cleanEnv = { ...process.env };
232
+ for (const k of Object.keys(cleanEnv)) {
233
+ if (k.startsWith('npm_config_') || k.startsWith('npm_') || k === 'INIT_CWD') {
234
+ delete cleanEnv[k];
235
+ }
236
+ }
237
+
238
+ const tryPkgCmd = (cmd, args) => {
239
+ return new Promise((res) => {
240
+ const child = spawn(cmd, args, {
241
+ timeout: 60000,
242
+ stdio: ['pipe', 'pipe', 'pipe'],
243
+ env: cleanEnv,
244
+ detached: false,
245
+ });
246
+ child.stderr.on('data', () => {});
247
+ child.stdout.on('data', () => {});
248
+ child.on('error', () => res(false));
249
+ child.on('close', (code) => res(code === 0));
250
+ });
251
+ };
252
+
253
+ if (await tryPkgCmd('pnpm', ['add', '-g', packageSpec])) return true;
254
+ if (await tryPkgCmd('npm', ['install', '-g', packageSpec])) return true;
255
+ if (await tryPkgCmd('yarn', ['global', 'add', packageSpec])) return true;
256
+ return await tryPkgCmd('bun', ['add', '-g', packageSpec]);
257
+ }
230
258
 
231
259
  /**
232
260
  * 📖 Check npm for a newer version and auto-update if outdated.