Skip to content

Releases: adrianleb/dsh-tmux-cc

v0.7.1 — xterm 6 and dependency refresh

Choose a tag to compare

@adrianleb adrianleb released this 16 Sep 01:09

Dependency refresh

  • Upgrade xterm.js 5.5.0 → 6.0.0, verified with touch scrolling, width/height pane resizing, terminal keyboard focus, pane swapping, and session/client management.
  • Upgrade TypeScript 5.9.3 → 7.0.2 and pnpm 11.23.0 → 12.4.2.
  • Update Schemastery to 3.18.2, development Cordis to 4.0.2, and Node 22 typings to 22.20.3. Node 22 runtime support and the compatible Cordis peer range remain unchanged.
  • Remove the unused @deepseek-ai/dsh-settings dependency and its obsolete transitive settings packages.
  • Enable weekly npm and GitHub Actions dependency checks. Keep Node typings on their supported major and separate major compiler upgrades from routine groups. Upgrade artifact uploads to v7.
  • Strengthen live-GUI tests to compare served xterm JavaScript and CSS with the installed package, detecting stale host-cached dependencies.

Install / upgrade

This is a GitHub-only release; npm remains at v0.6.0.

dsh plugin --profile web add https://github.com/adrianleb/dsh-tmux-cc/releases/download/v0.7.1/dsh-tmux-cc-0.7.1.tgz

Restart the existing DSH Web process, then refresh browser tabs. A browser refresh alone can still receive cached xterm 5.5 assets after upgrading dependencies. The attached tarball includes the compiled server and browser client; SHA256SUMS verifies the package.

Validation

  • 143 unit tests, TypeScript checks, and build passed on Node 22.
  • 58 Chromium/WebKit browser checks passed, including the existing GUI serving verified xterm 6 JavaScript/CSS. Two expected WebKit skips cover Chromium-only CDP input.
  • Touch resizing, scrolling, and keyboard-focus checks passed three repetitions: 30 successful executions and six expected CDP skips.
  • Both isolated native tests passed on tmux 3.4 and 3.7b.
  • Frozen pnpm 12 installation passed. No stale direct dependencies or known audit vulnerabilities were reported.
  • The prebuilt package was smoke-tested with a production-only installation and server/client exports.
  • Physical mobile keyboard animation remains an on-device check; headless viewport/focus coverage is not claimed as physical-device verification.

See the changelog and verification guide.

v0.7.0 — Mobile interactions and session management

Choose a tag to compare

@adrianleb adrianleb released this 16 Sep 00:07

Highlights

  • Touch pane resizing: drag visible divider grips horizontally or vertically on phones and touch-enabled desktops. Larger hit areas and cancellation-safe pointer capture keep repeated drags reliable.
  • Smoother terminal interaction: stable scrolling over streaming output, correct TUI wheel reports, immediate direction reversal at boundaries, safer momentum, and preserved reading positions through keyboard/viewport changes.
  • Clear close behavior: Hide responds on the first activation. Pane closing uses an explicit confirmation dialog, or one click when confirmation is disabled.
  • Pane rearrangement: drag a title to swap native tmux positions without unexpectedly moving focus; double-tap a title for native zoom.
  • Sessions & clients: create, rename, and attach sessions; inspect native clients and safely detach selected clients while protecting the shared dock and rejecting stale identities.
  • Keyboard shortcuts: expanded Ctrl+B window commands and browser-safe iTerm2-style macOS shortcuts.
  • DSH compatibility: avoid importing settings helpers removed in DSH 0.1.2.

Install / upgrade

This is a GitHub-only release; the npm channel remains at v0.6.0.

dsh plugin --profile web add https://github.com/adrianleb/dsh-tmux-cc/releases/download/v0.7.0/dsh-tmux-cc-0.7.0.tgz

Restart the existing DSH Web process after installing, then refresh browser tabs. The attached package includes the compiled server and browser client; SHA256SUMS verifies the tarball.

Validation

  • 143 unit tests; TypeScript and build checks passed.
  • 58 Chromium/WebKit browser checks passed, including the existing GUI with synthetic tmux transport. Two WebKit cases are intentionally skipped because they use Chromium CDP touch injection.
  • Both native integration tests passed on isolated tmux 3.4 and 3.7b servers.
  • Touch-resize checks passed repeated runs; packaged installation and module exports were smoke-tested.
  • Physical mobile OS keyboard animation still requires on-device verification; headless viewport/focus tests are not a substitute.

See CHANGELOG.md for the complete changelog and UX-VERIFICATION.md for reproducible checks.

v0.6.0 — Settings, safer sizing, and scrollback restoration

Choose a tag to compare

@adrianleb adrianleb released this 29 Aug 22:31

Highlights

  • Adds a full Settings → tmux surface for dock position, terminal font and size, cursor style/blinking, bounded scrollback, close confirmation, and local reset.
  • Adds a durable host-wide Auto / Mirror only sizing policy through DSH settings.
  • Keeps presentation preferences browser-local and versioned instead of broadcasting device-specific geometry and fonts.
  • Restores reconnect/window-switch history at the configured depth, capped at 20,000 lines and 800 KB per pane.
  • Uses consistent repeat-to-confirm behavior for pane close buttons, the toolbar action, and Ctrl+B x.

Reliability and mobile fixes

  • Verifies external tmux/iTerm viewers immediately before takeover, fails closed on detection errors, retries transient policy writes, and preserves sizing votes across detach/session switches.
  • Serializes and coalesces history capture, scopes replies to the requester, orders history before trailing live output, and reports per-pane capture failures without blocking later panes.
  • Makes narrow/mobile viewers mirror-only, preventing keyboard and URL-bar changes from resizing shared tmux windows.
  • Adds explicit mobile keyboard control, natural touch scrollback with momentum, stable font fitting, and visual-viewport jitter guards.
  • Fixes dock composition with dsh-better-sidebar, stale resize votes after teardown, reconnect scroll-position loss, and detached xterm lifecycle leaks.

Validation

  • 44 automated tests pass, including sizing races, capture routing/order/bounds, preference migration, browser bundle invariants, and route security.

See CHANGELOG.md for the complete release notes.

v0.5.3 — Fit last TUI row

Choose a tag to compare

@adrianleb adrianleb released this 26 Aug 12:13

Fixed

  • Pane fitting now accounts for xterm rounding each row up to whole device pixels, so the last terminal row of full-screen TUIs is no longer clipped in mirror mode.

Install:

dsh plugin --profile web add github:adrianleb/dsh-tmux-cc

v0.5.2 — Fonts, floating launcher, multi-viewer sizing

Choose a tag to compare

@adrianleb adrianleb released this 26 Aug 12:13

See CHANGELOG.md for 0.5.2.

v0.5.1 — Contiguous pane layout

Choose a tag to compare

@adrianleb adrianleb released this 25 Aug 20:30

Fixes pane and UI alignment regressions introduced during the mobile redesign.

  • Accounts for tmux's excluded one-cell interior separators
  • Adjacent pane boxes now meet with zero-pixel horizontal and vertical gaps
  • Outer pane edges exactly match the cockpit body
  • Desktop resize sashes are centered on the corrected shared boundaries
  • Toolbar control centers remain aligned (measured spread: 0.5px)
  • Desktop and mobile-grid screenshots replaced after visual review

Measured validation:

  • Desktop: all 8 tested inner/outer seam deltas are 0px
  • Mobile 390×844: all four pane seams are 0px
  • Native zoom: pane rectangle exactly equals the 390×699 cockpit body
  • 23 tests, type-check, build, package check, and GitHub CI pass

v0.5.0 — Native tmux mobile grid

Choose a tag to compare

@adrianleb adrianleb released this 25 Aug 19:55

This release replaces the flawed client-side mobile single-pane design from v0.4.x.

  • Mobile preserves the complete, real tmux pane grid
  • Removed invented pane tabs and client-side single-pane rendering
  • Pane zoom is tmux-native resize-pane -Z via toolbar, Ctrl+B z, or pane-title double-click
  • window_visible_layout and window_zoomed_flag now drive zoom snapshots
  • Hidden pre-zoom panes are filtered only while tmux itself is zoomed
  • The zoom button reflects the real tmux zoom state
  • Mobile toolbar reduced to three rows for more pane space
  • Desktop, mobile-grid, and mobile-zoom screenshots were all replaced after visual review

Validation:

  • 23 unit/protocol tests
  • 390×844 Playwright grid test: all four panes visible in their tmux positions
  • Bottom-right Metrics pane selection and native zoom
  • Zoomed pane bounding box exactly equals the 390×699 cockpit body
  • Native unzoom restores all four panes
  • Exact 768px desktop boundary
  • GitHub CI passed

v0.4.1 — Mobile pane fill fix

Choose a tag to compare

@adrianleb adrianleb released this 25 Aug 19:00

[!WARNING]

Superseded by v0.5.0, which restores the native tmux pane grid and native zoom behavior.
Fixes mobile pane switching for panes outside the tmux layout's top-left cell.

The active pane now explicitly overrides its inline desktop left and top geometry, so API, Tests, Release, and Metrics all occupy the exact full mobile cockpit body.

Verified at 390×844 by selecting all four grid positions and comparing each active pane bounding box against the cockpit body. All four report [0, 187, 390, 657]. The updated mobile screenshot intentionally shows the original bottom-right Metrics pane filling the screen.

All 22 tests and GitHub CI pass.

v0.4.0 — Responsive mobile cockpit

Choose a tag to compare

@adrianleb adrianleb released this 25 Aug 18:33

[!WARNING]

Superseded by v0.5.0, which restores the native tmux pane grid and native zoom behavior.

English

Adds a polished responsive mobile experience and public showcase assets.

  • Full-screen floating cockpit below 768px
  • Dedicated window and pane tab rows; one readable active pane
  • 44px touch controls, safe-area support, and visualViewport keyboard handling
  • No DSH layout push or resize handles on narrow screens
  • Privacy-safe desktop and mobile screenshots from an isolated synthetic DSH/tmux environment
  • Standard DSH plugin topics, labels, and ecosystem badge
  • Graceful attached shutdown without stdin EPIPE crashes

Validated with 22 unit/protocol tests, a 390×844 mobile Playwright lane, the exact 768px boundary, desktop capture, package dry-run, and GitHub CI.

中文

新增完善的响应式移动端体验和公开展示资源。

  • 视口小于 768px 时使用全屏浮动工作台
  • 独立的窗口/窗格标签行,每次显示一个清晰的活动窗格
  • 44px 触控按钮、safe-area 适配和 visualViewport 软键盘处理
  • 窄屏下不挤压 DSH 布局,并禁用尺寸拖动条
  • 来自隔离 DSH/tmux 合成环境的安全桌面与移动端截图
  • 标准 DSH 插件 topics、labels 和生态徽章
  • 修复已连接状态下退出时 stdin EPIPE 导致的崩溃

已通过 22 项单元/协议测试、390×844 移动端 Playwright 验证、768px 精确断点、桌面截图、打包检查和 GitHub CI。

v0.3.0 — Persistent tmux cockpit

Choose a tag to compare

@adrianleb adrianleb released this 25 Aug 18:06

English

First public release of dsh-tmux-cc: a persistent tmux control-mode cockpit for DeepSeek Harness Web. Includes adaptive mirror/takeover sizing, multiple sessions and windows, byte-safe input, bilingual UI and documentation, and hardened HTTP/WebSocket boundaries.

See the README for installation and security guidance.

中文

dsh-tmux-cc 首个公开版本:为 DeepSeek Harness Web 提供持久化 tmux 控制模式工作台。包含自适应镜像/接管尺寸策略、多会话与多窗口、可靠的字节级输入、中英文界面与文档,以及加强后的 HTTP/WebSocket 安全边界。

安装方法和安全说明请参阅 README。