Back to changelog
v1.19.0May 22, 2026

Drag-and-Drop Paths Into Any Terminal & Performance Improvement

Drag-and-Drop Paths Into Any Terminal & Performance Improvement. Also in this release: Built-In Native Selection Tmux Mode Is The New Default, Dashboard Is Dramatically Faster, Terminal Process Lookup Is O(1).

Download v1.19.0

The download page always has the newest build; installers for this version are on GitHub.

What changed

New features

8
  • Drag files or folders from Finder / Explorer / the File Tree directly onto a terminal to insert their path at the cursor — same gesture macOS Terminal users have muscle memory for, now everywhere in 1DevTool
  • AI terminals get @mention syntax automatically — drop a file onto a Claude/Codex/Gemini terminal and it's appended to the agent prompt draft as @path/to/file, so the agent parses it as a real file reference instead of a quoted string
  • Plain shell terminals get shell-escaped paths — drop a file onto a bash/zsh terminal and the path is inserted with proper quoting (single quotes on macOS/Linux, double quotes on Windows), ready to land after cd , cat , code , or any partial command you've already typed
  • Multi-file drop in one gesture — drop a selection of files in Finder and every path is inserted at once, space-separated, in the same drop
  • Internal File Tree drags work too — the same gesture you use to reorder files now also lands a path in the active terminal
  • Native text selection (recommended) is now the default tmux mouse behavior — wheel scroll moves the terminal directly, drag selects text natively, and tmux's copy-mode position indicator (the [N/M] chip at top-right that used to appear when you scrolled up) never shows up anymore
  • Automatic migration — users who previously had to manually switch to Force tmux mouse on to work around the wheel-doesn't-scroll bug are flipped back to the new working default. Users who explicitly picked Respect tmux config keep their preference
  • Full-screen TUI trade-off documented — vim, less, and htop now leave their last frame in scrollback when you quit instead of restoring the previous view. The setting picker explains this so you can pick the trade-off that suits you

Improvements

14
  • Dashboard polling no longer scans live PTY buffers for previews — every terminal card shows the user's most recent typed prompt instead, pulled from a single indexed SQLite query that returns results for every visible terminal in one round-trip
  • No more per-poll git status calls on every AI terminal card — file-change counts are now fetched lazily, only when a card with needsReview actually renders and only once until its next run, instead of N times per second across every project
  • Notification and dashboard previews now memoize per-buffer — repeated polls for the same idle terminal hit a cache instead of re-running stripAnsi + chrome detection. Active streaming terminals fall through to recompute, exactly when you want a fresh snapshot
  • Sub-agent badges share one timer instead of one per badge — the elapsed-time chip on each running sub-agent invocation (Claude Bash spawn, Codex sub-call, etc.) now subscribes to a single 250ms global ticker, and the timer is only running while at least one badge is mounted. Done invocations skip the subscription entirely
  • Every keystroke into a terminal used to scan every project's terminal list to find the matching record — fine for 3 projects with 2 terminals, painful for 30 projects with 10 terminals each
  • The lookup is now an O(1) Map index built lazily on first call and invalidated on project mutation, so typing latency in larger workspaces is no longer proportional to project count
  • AI terminal buffers are no longer saved to disk every 30 seconds — they rehydrate via session resume (claude --resume, codex resume, etc.) on next launch anyway, so serializing megabytes of TUI output four times a minute was pure wasted I/O
  • Plain shell terminals still get their scrollback persisted on quit so a restart restores what you had open
  • Less background disk churn means less wear on SSDs and fewer competing writes when Claude or your build tool actually wants to use disk
  • Claude's de-spaced footer status bar is now detected — Claude renders esc to interrupt, ctrl+t to hide thinking, ← for agents, MCP server status, "Claude in Chrome" status, and spinner glyphs (✻ Pondering for 12s) using ANSI cursor positioning between words, so after stripping ANSI the spaces disappear and chrome looked like esctointerrupt. Detection now matches both spaced and compact forms, so notifications surface the actual response across every footer variant
  • Bash/custom terminals running an AI agent (e.g. you typed claude at a zsh prompt) now get the same chrome stripping in notifications and dashboard previews as a declared AI terminal — driven by the existing agent sniffer rather than relying on agentType alone
  • The first session-detection attempt now fires 500ms after the agent starts instead of 3 seconds — so users who type a prompt and hit Cmd+Q within a few seconds still get their session ID persisted for next-launch auto-resume
  • PTY output now kicks detection — every time the agent writes output, we schedule a near-immediate detection attempt (debounced 250ms). The session file is usually on disk by then, so detection succeeds on the first agent response instead of waiting for the next timer tick
  • Retry cadence extended — covers slow-to-write CLIs (Codex/Gemini) with attempts at 0.5s, 1s, 2s, 5s, 10s, 20s, 40s, 60s, 60s for a ~3-minute total window

Bug fixes

4
  • Fixed normal terminal scrollback filling with empty rows after the v1.18 tmux fix — scrolling up in a bash/zsh terminal showed an ever-growing empty area above the first real content because every tmux redraw and clear stamped N blank lines into history. CSI 2J is now rewritten to cursor-home + erase-below, which clears the viewport in place with no scrollback push (same fix AI terminals already had)
  • Fixed caret falling onto a blank line below the last visible character in the Agent Input overlay after pasting or dragging a long unbreakable token (e.g. @/Users/.../some/very/long/path) — the textarea and its visible mirror now wrap identically, so the typing cursor stays aligned with the glyphs you see
  • Fixed sub-agent badge polling running on every bash terminal even though plain shells can't host sub-agents — the 600ms buffer scan is now gated on whether the terminal is actually an AI terminal (declared, sniffer-promoted, or forceAiAgent)
  • Fixed dashboard cards refetching git status on every poll tick for every AI terminal that had ever needed review — the count is now fetched once per card after each run completes and cached until the next run starts

Screenshots

drag_and_drop_folder_to_normal_terminal
drag_and_drop_folder_to_normal_terminal
drag_and_drop_folder_to_normal_terminal_default
drag_and_drop_folder_to_normal_terminal_default