Releases: Wintersta7e/agentdeck
v6.5.0 — Tech-debt closure + Electron 42 / dep refresh
[6.5.0] - 2026-05-13
Tech-debt audit closure plus a dependency-refresh pass. The user-visible
surface is unchanged; this release consolidates internal patterns
introduced over v6.3.0–v6.4.0 (CSS tokens, IPC channel names, versioned
disk caches, agent registry) and ships a major Electron jump.
Added
scripts/build-portable.sh+npm run release-portable— gated release build that runs lint, typecheck, tests, thenelectron-vite build+electron-builder --win portableand confirms the produced.exe.src/shared/ipc-channels.tswith 84 namedCH.*constants + 4 dynamic helpers; 26 production files swept off raw string channel names.WorkflowRun.version: 1field with forward-stamping in the persisted run JSON.- New spacing tokens
--sp-half,--sp-0_75,--sp-1_5; new z-index tokens--z-*(4 levels); new overlay/surface tokens (--overlay-soft,--overlay-dim,--surface-tint-light). - 42 new tests across
fs-atomic,wsl-exec,workflow-seed-blueprints, andworkflow-seeds(top 4 of 8 priority files). .nvmrcpinned to22.22.1;engines.noderaised to>=22.22.1to match the lint-staged 17 requirement.overrides.node-abi: ^4.30.0inpackage.jsonto keep electron-rebuild's ABI lookup in sync with Electron majors.
Changed
- Workflow seeds split:
workflow-seeds.tsshrank from 922 → 103 LOC (orchestration only); blueprint data moved to a new 815 LOCworkflow-seed-blueprints.ts. - Mascot character colors tokenized via local CSS vars instead of literal palette values.
- 11 literal-rgba sites tokenized via overlay/surface tokens (4 xterm-theme entries kept as accepted exceptions).
- 19 raw z-index values tokenized via
--z-*. - 128 of 142 raw px spacing values tokenized via
--sp-*(remaining 14 are documented exceptions). as anyremoved from production code (MockChild.pidwidening); productionas unknown ascut 4 → 2.
Dependencies
- electron 41.3.0 → 42.0.1 (Chromium 148, Node 24, V8 14.8)
- react / react-dom 19.2.5 → 19.2.6
- lint-staged 16.4.0 → 17.0.4 (requires Node ≥ 22.22.1, Git ≥ 2.32.0)
- @types/node 25.6.0 → 25.7.0
- typescript-eslint 8.59.1 → 8.59.3
- zustand 5.0.12 → 5.0.13
- vitest / @vitest/coverage-v8 4.1.5 → 4.1.6
- yaml 2.8.4 → 2.9.0
npm audit fixpatched fast-uri, postcss, and @xmldom/xmldom transitives; npm audit reports 0 vulnerabilities.
v6.3.0 — TerminalGridMirror tab-preservation infrastructure
What's new
A parallel cell-grid mirror that tracks where every \t byte landed, so copy can substitute literal tabs for the cell ranges that came from a tab character. Implemented as a self-contained ANSI parser (~700 LOC) covering CSI cursor positioning, erase ops, scroll regions, alt-buffer toggles, DECSC/RC, and string sequences (OSC / DCS / APC / PM). Backed by a wcwidth helper for CJK / emoji 2-cell width arithmetic. 35 mirror tests + 17 wcwidth tests + 9 copy-path tests added; total suite at 1181/1181 passing.
The mirror is fed unconditionally from pty.onData (regardless of pane visibility), resized in lockstep with xterm, and cached alongside the cached Terminal across tab switches. Copy substitution applies to spans that fit entirely inside the per-row selection; spans that cross either boundary stay as spaces (visual fidelity over imperfect substitution at boundaries).
Honest caveat — Windows + WSL via ConPTY
On Windows + WSL setups (which is AgentDeck's primary target), tabs are stripped upstream of our process by ConPTY (Windows Pseudo Console). ConPTY parses VT input into a cell grid, then re-serializes the grid as bytes for the host — tab characters that advanced the cursor over blank cells are re-emitted as spaces, not tabs. This is documented in microsoft/terminal #411 and affects every node-pty + ConPTY consumer (VS Code, Hyper, Windows Terminal). v6.3.0's tab preservation infrastructure is correct end-to-end but is currently a no-op under ConPTY because the input stream never contains \t bytes.
The mirror code remains useful for any future non-ConPTY path (winpty mode, native Linux/macOS PTY, custom pipelines) and lays groundwork for additional cell-tracking features down the line.
Other improvements
- Alt-buffer save-cursor fix —
DECSCinside the alt buffer no longer clobbers main's saved cursor acrossDECRST 1049. stripAnsiextracted tosrc/shared/ansi.ts— single source of truth for the ANSI escape regex consumed by main and renderer.- Hot-path optimizations — wcwidth ASCII fast-path + chunk-slice plain ASCII printable runs in
mirror.ingest. Estimated 10-50× faster on plain text bursts. getLogicalSelectionsignature switched to(term, options?)so future fields can land without churning call sites.