Releases: ok2cqr/shellboard
Shellboard v2.1.0
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_*.AppImage—chmod +xand run. - Linux (Debian/Ubuntu):
Shellboard_*_amd64.deb—sudo 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 Applications → Open → Open 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
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+Nquick-adds) — moved from--line-faintto
--line-strongwith 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 writingDEFAULT_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-containerthat left a thin gap at the top/left of each
split;app__maingainedmin-heightso the mosaic always fills
the available space.
Compatibility notes
shellboard.json,session.json, andbuffers.jsonare 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+Kpreviously cleared the focused terminal (undocumented).
The shell's nativeCtrl+Land theclearcommand continue to work
for that purpose.
Install
- macOS (Apple Silicon):
Shellboard_*_aarch64.dmg— open, drag into Applications. - Linux (AppImage):
Shellboard_*.AppImage—chmod +xand run. - Linux (Debian/Ubuntu):
Shellboard_*_amd64.deb—sudo 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 Applications → Open → Open 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
What's new in v1.4.0
Fixed
- Multi-byte UTF-8 corruption at PTY chunk boundaries. Characters whose
bytes happened to land across tworead()calls (e.g. Claude's❯
prompt —E2 9D AF) rendered as��becauseString::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 ifrefis 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 samethemeId. - Two React copies bundled under Vite 8.
react-mosaic-component's
transitivereact-dnd-multi-backendpins its ownreact-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.ReactCurrentDispatcherundefined.vite.config.ts
now pinsresolve.dedupe: ["react", "react-dom"]. Bundle dropped ~130 KB
as a side benefit.
Changed
- xterm.js 5.5 → 6.0. Bumped
@xterm/xtermand addons (fit0.10 →
0.11,search0.15 → 0.16,serialize0.13 → 0.14,web-links0.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-react4 → 6,@dnd-kit/sortable8 → 10,
zustand 4 → 5 (curriedcreate<T>()(...)form is required). - Backend. Tauri 2.10 → 2.11 with the npm
@tauri-apps/*packages and
the Rusttauricrate kept in lockstep (a mismatch is a hard error at
dev startup).portable-pty0.8 → 0.9;which6 → 8.
Install
- macOS (Apple Silicon):
Shellboard_*_aarch64.dmg— open, drag into Applications. - Linux (AppImage):
Shellboard_*.AppImage—chmod +xand run. - Linux (Debian/Ubuntu):
Shellboard_*_amd64.deb—sudo 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 Applications → Open → Open 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
Install
- macOS (Apple Silicon):
Shellboard_*_aarch64.dmg— open, drag into Applications. - Linux (AppImage):
Shellboard_*.AppImage—chmod +xand run. - Linux (Debian/Ubuntu):
Shellboard_*_amd64.deb—sudo 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 Applications → Open → Open 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
Install
- macOS (Apple Silicon):
Shellboard_*_aarch64.dmg— open, drag into Applications. - Linux (AppImage):
Shellboard_*.AppImage—chmod +xand run. - Linux (Debian/Ubuntu):
Shellboard_*_amd64.deb—sudo 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 Applications → Open → Open 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
Install
- macOS (Apple Silicon):
Shellboard_*_aarch64.dmg— open, drag into Applications. - Linux (AppImage):
Shellboard_*.AppImage—chmod +xand run. - Linux (Debian/Ubuntu):
Shellboard_*_amd64.deb—sudo 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 Applications → Open → Open 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
Install
- macOS (Apple Silicon):
Shellboard_*_aarch64.dmg— open, drag into Applications. - macOS (Intel):
Shellboard_*_x64.dmg— open, drag into Applications. - Linux (AppImage):
Shellboard_*.AppImage—chmod +xand run. - Linux (Debian/Ubuntu):
Shellboard_*_amd64.deb—sudo 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 Applications → Open → Open anyway.
- Option 2 — strip the quarantine attribute:
xattr -cr /Applications/Shellboard.app
After either step the app launches normally every time.