Skip to content

Releases: ok2cqr/shellboard

Shellboard v2.1.0

18 Jun 20:07

Choose a tag to compare

What's new in v2.1.0

A small follow-up release: a cross-project recent-terminal switcher,
customisable keyboard shortcuts that actually take effect, and a couple
of platform fixes. Settings on disk stay compatible — no migration.

Added

  • Recent-terminal switcher. An alt-tab-style overlay that cycles
    through the most-recently focused terminals across all projects and
    tabs. Hold the modifier, tap to move down the list, release to jump
    straight to that project · tab · panel.
  • Customisable keyboard shortcuts. Settings → Shortcuts now lets you
    rebind actions with a live key recorder; bindings are stored per action
    and applied at runtime. Backed by a new shortcut registry + binding
    layer rather than hard-coded handlers.
  • Smarter colour for new projects. New projects now pick an unused
    colour from the palette instead of a random (possibly duplicate) one,
    falling back to a generated colour only once the palette is exhausted.

Fixed

  • Double paste on middle-click (Linux). On Linux/WebKitGTK the webview
    already performs a native primary-selection paste, so the manual paste
    was running twice. We now skip the synthetic paste on Linux (still
    suppressing autoscroll) and let the native one through.

Install

  • macOS (Apple Silicon): Shellboard_*_aarch64.dmg — open, drag into Applications.
  • Linux (AppImage): Shellboard_*.AppImagechmod +x and run.
  • Linux (Debian/Ubuntu): Shellboard_*_amd64.debsudo apt install ./Shellboard_*.deb.

macOS: unsigned-build notice

This build isn't code-signed. On first launch macOS Gatekeeper will refuse to open it.

  • Option 1 — right-click the app in ApplicationsOpenOpen anyway.
  • Option 2 — strip the quarantine attribute:
    xattr -cr /Applications/Shellboard.app

After either step the app launches normally every time.

Shellboard v2.0.0

18 May 18:06

Choose a tag to compare

What's new in v2.0.0

A full visual overhaul plus several quality-of-life features. Settings on
disk stay compatible with 1.x — you can downgrade and re-upgrade without
losing your projects, snippets, or session.

Added

  • ShellBoard chrome redesign. New design-tokens stylesheet drives the
    sidebar, tab bar, status bar, top bar, panels, and every overlay
    (command palette, global search, settings, modals). Focus-visible rings
    are unified across surfaces.
  • Top bar with breadcrumb. Logo · ShellBoard · / · active project
    on the left; light/dark chrome toggle and a ⌘K hint pill on the right.
    Slim 26 px strip — still doubles as the window drag region.
  • ShellBoard theme preset as the new default, plus a paired
    ShellBoard Light variant. The topbar light/dark toggle remembers a
    separate terminal theme per chrome mode, and the chrome auto-follows
    the active terminal theme's background lightness.
  • Recent terminals in the command palette. Top of the list shows up
    to five most-recently focused terminals across projects/tabs;
    selecting one jumps directly to that project + tab + panel.
  • Customisable group icons. Right-click a group header → Set icon…
    to replace the folder glyph with any emoji or character.
  • Copy + Paste in the panel right-click menu. Useful when a selection
    contains a URL you'd otherwise accidentally open by clicking.
  • Cmd/Ctrl+K opens the command palette, matching the visible hint in
    the top bar. Cmd/Ctrl+Shift+P remains as an alias.
  • Cmd/Ctrl+Shift+Arrow splits the focused panel in the arrow's
    direction (all four sides). Mirrors Cmd/Ctrl+Alt+Arrow for focus —
    Alt = go there, Shift = create there. Cmd/Ctrl+D and Cmd/Ctrl+Shift+D
    remain as iTerm2-style aliases for right/down.
  • Show / hide group project count. Settings → General toggle for the
    small badge next to each group header in the sidebar.
  • Show / hide panel header. Settings → Terminal toggle for the thin
    shell · cwd · running strip above each split.
  • New settings dialog. Railed layout with search, larger surface,
    keyboard-friendly. Same settings shape on disk — old configs load as-is.

Changed

  • URL clicks now require Cmd / Ctrl modifier. Plain click on a link
    no longer launches the browser, so drag-selecting a URL to copy it
    works as expected. Matches iTerm2 / macOS Terminal behaviour.
  • Stronger sidebar separator between regular projects and the auto-cwd
    project group (Cmd/Ctrl+N quick-adds) — moved from --line-faint to
    --line-strong with more vertical breathing room.
  • Tab bar pills restyled with ghost search and split controls on the
    active tab.
  • Status bar restyled with stroke icons and middle-truncated branch
    names that don't push the cwd off-screen on long branches.

Fixed

  • Saved font / size / scrollback reset on restart. The TopBar's
    chrome-mode effect was firing before App.tsx finished hydrating
    settings from disk, then writing DEFAULT_SETTINGS + the saved
    terminal theme back to disk and silently wiping the user's font, font
    size, and scrollback. The chrome → terminal-theme restoration now
    runs only inside the explicit toggle handler, never from a mount-time
    effect, so neither React StrictMode nor first-render races can
    clobber the file.
  • Command palette didn't close on Escape. The cmdk library doesn't
    manage open/close state itself; added a capture-phase Escape handler
    on the palette so it dismisses regardless of which control has focus.
  • macOS traffic-lights gutter (78 px dead space). Title-bar overlay
    mode isn't enabled, so the spacer was just pushing the brand 78 px
    to the right — removed. Brand padding adjusted accordingly.
  • Terminal padding offset. Removed inner padding on
    .terminal-container that left a thin gap at the top/left of each
    split; app__main gained min-height so the mosaic always fills
    the available space.

Compatibility notes

  • shellboard.json, session.json, and buffers.json are read by 2.0
    the same way 1.x wrote them. New fields (showGroupCount,
    ProjectGroup.icon) fall back to sensible defaults when absent.
  • Cmd/Ctrl+K previously cleared the focused terminal (undocumented).
    The shell's native Ctrl+L and the clear command continue to work
    for that purpose.

Install

  • macOS (Apple Silicon): Shellboard_*_aarch64.dmg — open, drag into Applications.
  • Linux (AppImage): Shellboard_*.AppImagechmod +x and run.
  • Linux (Debian/Ubuntu): Shellboard_*_amd64.debsudo apt install ./Shellboard_*.deb.

macOS: unsigned-build notice

This build isn't code-signed. On first launch macOS Gatekeeper will refuse to open it.

  • Option 1 — right-click the app in ApplicationsOpenOpen anyway.
  • Option 2 — strip the quarantine attribute:
    xattr -cr /Applications/Shellboard.app

After either step the app launches normally every time.

Shellboard v1.4.0

05 May 04:18

Choose a tag to compare

What's new in v1.4.0

Fixed

  • Multi-byte UTF-8 corruption at PTY chunk boundaries. Characters whose
    bytes happened to land across two read() calls (e.g. Claude's
    prompt — E2 9D AF) rendered as �� because String::from_utf8_lossy
    was substituting each partial fragment with U+FFFD. The Rust reader now
    carries 0–3 trailing bytes between iterations and only decodes at
    codepoint boundaries; whatever's still buffered at EOF still goes through
    lossy so genuinely invalid bytes round-trip the same way as before. Unit
    tests cover 3-byte, 4-byte, and stray-continuation cases.
  • Theme reapply silently no-oping under xterm v6. xterm v6 added a
    reference-equality guard on object options (terminal.options.theme = ref
    is skipped if ref is the previously-stored object). Live theme switch
    now spreads the cached preset into a fresh object before assignment, so
    the change always takes effect — including any future flow that
    re-applies the same themeId.
  • Two React copies bundled under Vite 8. react-mosaic-component's
    transitive react-dnd-multi-backend pins its own react-dom@18, and
    Vite 8 / Rolldown stopped deduping it implicitly the way Vite 7 / Rollup
    did. The result was a blank window at boot with
    ReactSharedInternals.ReactCurrentDispatcher undefined. vite.config.ts
    now pins resolve.dedupe: ["react", "react-dom"]. Bundle dropped ~130 KB
    as a side benefit.

Changed

  • xterm.js 5.5 → 6.0. Bumped @xterm/xterm and addons (fit 0.10 →
    0.11, search 0.15 → 0.16, serialize 0.13 → 0.14, web-links 0.11 →
    0.12). v6's viewport rewrite ships the VS Code-derived scrollbar, which
    expects --vscode-scrollbar-slider-* CSS variables on the host —
    Shellboard now sets neutral translucent whites so the slider is visible
    on every theme.
  • Frontend toolchain. TypeScript 5.8 → 6.0, Vite 7 → 8 (now uses
    Rolldown), @vitejs/plugin-react 4 → 6, @dnd-kit/sortable 8 → 10,
    zustand 4 → 5 (curried create<T>()(...) form is required).
  • Backend. Tauri 2.10 → 2.11 with the npm @tauri-apps/* packages and
    the Rust tauri crate kept in lockstep (a mismatch is a hard error at
    dev startup). portable-pty 0.8 → 0.9; which 6 → 8.

Install

  • macOS (Apple Silicon): Shellboard_*_aarch64.dmg — open, drag into Applications.
  • Linux (AppImage): Shellboard_*.AppImagechmod +x and run.
  • Linux (Debian/Ubuntu): Shellboard_*_amd64.debsudo apt install ./Shellboard_*.deb.

macOS: unsigned-build notice

This build isn't code-signed. On first launch macOS Gatekeeper will refuse to open it.

  • Option 1 — right-click the app in ApplicationsOpenOpen anyway.
  • Option 2 — strip the quarantine attribute:
    xattr -cr /Applications/Shellboard.app

After either step the app launches normally every time.

Shellboard v1.3.0

27 Apr 20:17

Choose a tag to compare

Install

  • macOS (Apple Silicon): Shellboard_*_aarch64.dmg — open, drag into Applications.
  • Linux (AppImage): Shellboard_*.AppImagechmod +x and run.
  • Linux (Debian/Ubuntu): Shellboard_*_amd64.debsudo apt install ./Shellboard_*.deb.

macOS: unsigned-build notice

This build isn't code-signed. On first launch macOS Gatekeeper will refuse to open it.

  • Option 1 — right-click the app in ApplicationsOpenOpen anyway.
  • Option 2 — strip the quarantine attribute:
    xattr -cr /Applications/Shellboard.app

After either step the app launches normally every time.

Shellboard v1.2.1

26 Apr 11:54

Choose a tag to compare

Install

  • macOS (Apple Silicon): Shellboard_*_aarch64.dmg — open, drag into Applications.
  • Linux (AppImage): Shellboard_*.AppImagechmod +x and run.
  • Linux (Debian/Ubuntu): Shellboard_*_amd64.debsudo apt install ./Shellboard_*.deb.

macOS: unsigned-build notice

This build isn't code-signed. On first launch macOS Gatekeeper will refuse to open it.

  • Option 1 — right-click the app in ApplicationsOpenOpen anyway.
  • Option 2 — strip the quarantine attribute:
    xattr -cr /Applications/Shellboard.app

After either step the app launches normally every time.

Shellboard v1.2.0

26 Apr 07:46

Choose a tag to compare

Install

  • macOS (Apple Silicon): Shellboard_*_aarch64.dmg — open, drag into Applications.
  • Linux (AppImage): Shellboard_*.AppImagechmod +x and run.
  • Linux (Debian/Ubuntu): Shellboard_*_amd64.debsudo apt install ./Shellboard_*.deb.

macOS: unsigned-build notice

This build isn't code-signed. On first launch macOS Gatekeeper will refuse to open it.

  • Option 1 — right-click the app in ApplicationsOpenOpen anyway.
  • Option 2 — strip the quarantine attribute:
    xattr -cr /Applications/Shellboard.app

After either step the app launches normally every time.

Shellboard v1.1.0

24 Apr 19:49

Choose a tag to compare

Install

  • macOS (Apple Silicon): Shellboard_*_aarch64.dmg — open, drag into Applications.
  • macOS (Intel): Shellboard_*_x64.dmg — open, drag into Applications.
  • Linux (AppImage): Shellboard_*.AppImagechmod +x and run.
  • Linux (Debian/Ubuntu): Shellboard_*_amd64.debsudo apt install ./Shellboard_*.deb.

macOS: unsigned-build notice

This build isn't code-signed. On first launch macOS Gatekeeper will refuse to open it.

  • Option 1 — right-click the app in ApplicationsOpenOpen anyway.
  • Option 2 — strip the quarantine attribute:
    xattr -cr /Applications/Shellboard.app

After either step the app launches normally every time.