Skip to content

Launchpad v0.1.2

Choose a tag to compare

@WalrusQuant WalrusQuant released this 18 Apr 03:19
· 105 commits to main since this release

Bug-fix sweep across high-churn files — silent correctness issues, resource leaks, and stuck-state bugs caught by a focused code review.

Install

  1. Download Launchpad_0.1.2_aarch64.dmg below
  2. Open the DMG, drag Launchpad.app to /Applications
  3. On first launch, macOS will complain (the app isn't code-signed). Right-click → Open, or run:
    xattr -dr com.apple.quarantine /Applications/Launchpad.app
    

Fixes

  • Filesystem events no longer drop after navigating into a subfolder. The fs-changed listener was comparing the emitted path against the file browser's currently-browsed path, so any navigation below the project root silently killed the tree refresh, git status updates, and external-edit detection. Now compares against the project path — the same root the watcher was started for.
  • Terminals can no longer spawn in a file-browser sub-directory. createPane had a getCurrentPath() fallback that could silently land a new PTY in whatever folder the file browser happened to be viewing, contradicting the project-scoped design. Removed.
  • Branch checkout no longer silently discards uncommitted changes. checkout_branch used .force(), overwriting dirty files without warning. Now uses a safe checkout and errors like git checkout would — with the tree updated before HEAD, so a failure doesn't leave HEAD pointing at an unchecked-out branch.
  • Split-pane exit no longer kills the sibling. If one pane of a split terminal exited, Launchpad would close the whole tab — showing a "running process" dialog for the healthy pane and destroying it on confirm. Now just collapses the exited pane.
  • Rapid file-browser actions no longer swap stale trees. Toggle-hidden, search input, and setRoot could run concurrent loadDirectory calls that rendered in non-deterministic order. Top-level loads are now serialized via a promise chain.
  • Moving the last left-group tab to the right no longer leaves an empty dead group. A new terminal is minted in the left group instead of activeTabUiId = -1 and a non-functional + button.
  • Drag listeners on the split handles no longer leak. Both in-tab pane split (Cmd+D) and workspace split (Cmd+\) were attaching mousemove/mouseup to document on every toggle without cleanup. Now scoped to each drag session.
  • PTY reader buffer has a hard cap. On corrupted UTF-8 streams (binary output, crashed shells), the leftover buffer could grow unbounded. Caps at 64KB and flushes as replacement characters.
  • Git cancel race window closed. run_git_cancellable's cleanup now tags each op with a monotonic id so it can't accidentally clear a slot a later operation has already claimed.

Full changelog

  • `9cd2e6d` fix: bug-fix sweep across high-churn files
  • `508819c` chore: bump version to 0.1.2