Panescale is a desktop app that gives you an infinite canvas for organizing terminal sessions, files, and notes — all in one place. No tab hunting. No context switching. Just your work, side by side.
- Infinite canvas — Pan, zoom, and arrange terminal windows freely on a spatial surface
- Floating terminals — Spawn, drag, resize, and layer terminal tiles anywhere on the canvas
- Persistent sessions — Close the app, reopen it, pick up exactly where you left off (tmux-backed)
- Full git UI — Stage, commit, diff, branch, stash, and resolve conflicts without leaving the app
- SSH connections — Connect to remote servers and open terminal tiles on the canvas
- Content tiles — Drop markdown notes, images, and file previews alongside your terminals
Built with Tauri v2 (Rust) + React + xterm.js.
| Feature |
Description |
| Infinite pan & zoom |
Scroll, Space+drag, middle-click, pinch — 10% to 200% range |
| Dot grid |
Adaptive grid that scales with zoom level |
| Magnetic snap |
Tiles snap to grid (~10px threshold), Cmd/Ctrl to override |
| Alignment guides |
Smart edge/center guides when dragging tiles near each other |
| Minimap |
Toggle with M key, click to navigate |
| Regions |
Select tiles and group them with named, colored regions |
| Persistent layout |
Canvas state auto-saves and restores on relaunch |
| Feature |
Description |
| Double-click to spawn |
Double-click empty canvas space to create a terminal |
| Drag & resize |
Title bar drag + 8-handle resize with live reflow |
| Search |
Cmd+F to search terminal output |
| Clickable URLs |
URLs in terminal output open in your browser |
| Process title |
Title bar shows the currently running process |
| Badges & rename |
Color-code and name your terminals |
| Startup commands |
Auto-run commands when terminals restore |
| Bell notifications |
Audio chime + sidebar pulse when a process completes |
| tmux persistence |
Sessions survive app restarts (transparent, auto-installed) |
Sidebar
| Feature |
Description |
| File tree |
Hierarchical + chronological view modes |
| File operations |
Create, rename, delete, move via right-click menu |
| Fuzzy search |
Cmd+K to find files instantly |
| Drag to canvas |
Drop files from sidebar to create content tiles |
| Terminal list |
See all open terminals, click to navigate |
| Feature |
Description |
| Status panel |
Staged / Unstaged / Untracked file groups |
| Hunk staging |
Stage individual code hunks, not just files |
| Inline diff |
Unified diff viewer in sidebar |
| Branches |
Create, switch, delete branches |
| Commit graph |
SVG topology graph with lane assignment |
| Stash |
Save, apply, pop, drop stashes |
| Conflicts |
Accept ours/theirs per file |
| Feature |
Description |
| Connection manager |
Save host, port, user, key file |
| Groups |
Organize connections in folders |
| Remote terminals |
SSH terminals behave identically to local ones |
| Feature |
Description |
| Dark & light |
Deep dark default, light theme available |
| System detection |
Auto-follows OS dark/light preference |
| Terminal schemes |
One Dark and Dracula presets |
| Rounded corners |
Native-feeling window on macOS |
Download the latest release for your platform:
| Platform |
Format |
| macOS (Intel + Apple Silicon) |
.dmg (universal) |
| Linux |
.AppImage, .deb |
| Windows |
.msi, .exe (NSIS) |
Prerequisites: Rust, Node.js 20+, platform-specific Tauri dependencies
git clone https://github.com/lossless1/panescale.git
cd panescale
npm install
npm run tauri dev
| Shortcut |
Action |
Cmd/Ctrl + K |
Fuzzy file search |
Cmd/Ctrl + F |
Search in focused terminal |
Cmd/Ctrl + = / - |
Zoom in / out |
Cmd/Ctrl + 0 |
Fit all tiles |
M |
Toggle minimap |
Escape |
Exit terminal focus / close search |
Space + drag |
Pan canvas |
Shift + scroll |
Pan canvas (over terminal) |
Cmd/Ctrl + Enter |
Commit (in git panel) |
See CONTRIBUTING.md for guidelines.
MIT
Built with Rust and TypeScript.