# v1.0.14 Latest

April 20, 2026

Add Project — one sheet, three paths

  • New "+" button in the sidebar toolbar. Single sheet with three segmented tabs: Open folder, Clone, New folder. Cmd+Shift+N opens it. Same end state for all three — the project appears in the sidebar, is persisted to ~/.claude.json, and can optionally start a Claude session immediately.
  • Open folder. Pick any directory, optionally name the first session, Work registers + opens it.
  • Clone. Paste a GitHub URL, SSH URL, or owner/repo shorthand. Live streaming clone log. When it finishes, the freshly-cloned repo is already a known project ready for a session.
  • New folder. Pick a parent, type a folder name, Work creates the directory, registers it, and can spawn a session in it. Great for kicking off something fresh from scratch without hopping to Finder first.

# v1.0.13

April 17, 2026

Self-relocate to /Applications + drag-to-install DMG

  • Bug fix: "Work can't be updated if it's running from the location it was downloaded to." Some users were launching Work straight from the DMG or Downloads, then hitting a dead-end Sparkle dialog. On first launch from any location outside /Applications, Work now offers to move itself there and relaunch. Declining is remembered — we won't nag.
  • Drag-to-install DMG. The disk image now includes an Applications symlink alongside Work.app, so you can drag Work across to install — the standard macOS install experience.

# v1.0.12

April 17, 2026

GitHub Dark terminal, plus 35 bugs squashed

  • New default terminal theme. Work's embedded terminals now open with a GitHub Dark palette (#24292e on #d1d5da), matching what most devs already live in via VS Code/Cursor. One-line revert path; a Terminal Settings pane with Basic / Homebrew / VS Code Dark+ presets is coming.
  • "Project Not Found" fixed. Starting a session in a directory Work hadn't seen before sometimes rendered a "Project Not Found" empty state in the detail pane. Synthetic projects are now inserted into the store synchronously so navigation never misses.
  • Open in Terminal.app no longer strands you. If AppleScript automation is denied (or any error surfaces), the in-app PTY is preserved — previously you lost both the tab and the Terminal window. Launcher now reports success/failure and the caller only tears down on success.
  • Marketplace plugin installs work on fresh Macs. `claude plugin install` now inherits the enriched PATH (node/npx/git/uv) that embedded terminals already use, instead of launchd's stripped default.
  • No more "No sessions yet" flash. Empty state is gated on load completion — initial launch no longer briefly shows it while JSONL parses.
  • Directory picker remembers your choice. Fresh directories opened via "Open directory…" now register in `~/.claude.json` so they survive a Work restart even before Claude writes a JSONL.
  • MCP rename collision safety. Renaming an MCP to a name that already exists now throws DuplicateName instead of silently overwriting the other entry.
  • Sidebar lists every approved project. Projects you've opened with Claude but whose JSONL history got cleaned up now appear (canonicalised by path). Previously only projects with live history were surfaced.
  • MCP status detection is tighter. Running-status checks now require BOTH the command basename AND a distinctive arg, so `ls node` no longer false-matches every node-based MCP.
  • Dead exited tabs no longer accumulate. Resuming a previously-exited session prunes its ghost chip before spawning.
  • Session slug recovery on huge files. `readSlugFromTail` falls back to a 64KB pass if the 4KB tail missed the customTitle line that straddled the boundary.
  • Store.load() recovers from wedged reads. A hung load over 30s no longer silently blocks every subsequent refresh; the flag auto-releases.
  • Usage aggregate race guarded. Token-totals re-aggregation checks a load generation before publishing, so a slow aggregate from an older load can't clobber newer totals.
  • Big perf win on usage aggregation. Replaced `Array(data)` on memory-mapped JSONL with `withUnsafeBytes` — no more full-copy allocation that defeated `.mappedIfSafe`.
  • MCP config writes preserve key order. `~/.claude.json` writes no longer alphabetize top-level keys, so hand-ordered config isn't shuffled on every save. Permissions now use mode_t and surface chmod errors.
  • Flat `.mcp.json` mixed content rejected. Writing to a `.mcp.json` that mixes MCP entries with non-MCP top-level keys now fails loudly instead of silently breaking the file.
  • Tab focus no longer steals across switches. The terminal-first-responder async block re-checks the active tab before claiming focus, so switching tabs mid-render doesn't bounce focus back.
  • Dynamic Type friendly popover rows. The project-picker popover row height now scales with accessibility text sizes instead of a hard-coded 40pt.
  • Skill operations don't freeze the UI. Auto-invoke/user-invocable toggles, clone-to-personal, and delete now run file I/O on a background task instead of blocking the main thread.
  • Cmd+W respects system close-window. When no tab is active, Cmd+W now falls through to closing the current window instead of being swallowed.
  • SIGKILL escalation on wedged renames. ClaudeRenamer escalates a timed-out SIGTERM to SIGKILL after a 1s grace instead of leaving a zombie process.
  • PID-recycle guard before SIGKILL. Tab close re-verifies the target pid still belongs to a Work descendant before the 3s-later kill, so we can't accidentally signal an unrelated process that reused the pid.
  • Misc. Scope tooltip fixed (`~/.claude.json`, not `~/.claude/settings.json`). `force` parameter on close() honored. `sendInputWhenReady` sleep clamped to timeout. AppleScript escaping consolidated. Conflict filter no longer dead-coded. ContentUnavailableView empty-state flashes fixed.

# v1.0.11

April 17, 2026

"Open directory" new sessions are reachable now

  • Fresh directories actually work. Starting a session via "Open directory…" on a folder Work hadn't seen before left you with a tab you couldn't click into and a sidebar that didn't show the new project. Fixed: the picked folder now enters the store synchronously, `selectedProject` points at it, and the new terminal takes over the detail pane immediately.
  • No more "project not found" flash. Store.load() (which runs on the file watcher tick or every 30s) was blowing away the ephemeral project and nil-ing selectedProject, causing a layout shift + error state. It now preserves any project the user is actively on until real on-disk data replaces it.
  • No eager reload after picking a directory. Removed the extra async reload that was triggering an isLoading skeleton + layout shift seconds after the picker closed. The file watcher catches the real JSONL when Claude writes it.

# v1.0.10

April 17, 2026

New-session navigation + live busy indicator

  • Bug fix: new sessions in a different project are now reachable. Opening a new session for a project you weren't viewing left a tab chip in the bar that couldn't be clicked into — the detail pane kept showing the old view. Fixed: session-less tabs now navigate the sidebar to their project and render the live terminal in the detail pane.
  • Tabs turn orange while Claude is cooking, green when it's ready. Per-tab activity indicator driven by a lightweight idle timer (zero parsing, zero polling). Orange during streaming, back to green 700ms after output stops.
  • Red dot on crash/kill. Failed exits and killed sessions now render red instead of orange, so the color no longer collides with the busy state.

# v1.0.9

April 17, 2026

Embedded terminals + integrations, built for Opus 4.7

  • Embedded Claude Code terminals. Run six Claude sessions in one window instead of juggling Terminal.app. Real PTY processes, proper scrollback, drag to reorder, hover to close. New Session popover picks the project, optionally names the session, or opens a fresh directory.
  • Tab bar with Chrome-style chips. Each open session is a tab at the top of the detail pane. Right-click for Close, Open in Terminal.app. Cmd+1–9 to switch instantly.
  • Per-project Integrations panel. Two-click install curated MCPs (Linear, Notion, Sentry, GitHub, Supabase, Stripe, Filesystem, Puppeteer) into any project. Installing during a live session spawns a fresh Claude tab and auto-runs /mcp for OAuth, so you're one click away from connected.
  • PATH auto-fix. Embedded terminals now inherit a real developer PATH (~/.local/bin, Homebrew, Cargo, Volta, Node) so claude resolves without shell config edits. No more "Native installation exists but ~/.local/bin is not in PATH" warning.
  • MCP writer fixed to match Claude Code 2.1+. User-scope MCPs now write to ~/.claude.json (the canonical location Claude actually reads), not the legacy ~/.claude/settings.json. If you installed an MCP in an earlier version that never loaded — this is why.
  • SwiftUI close-confirm dialog. Replaced the old NSAlert on tab close with a SwiftUI alert, so the destructive button actually renders on dark mode.
  • Static live-pulse indicator. The streaming-status dot no longer pulses — clean halo + solid dot instead.
  • Faster Usage + sidebar. Memoized filtered projects, session search results, and heatmap cells. Big projects with many sessions no longer re-compute on every keystroke.
  • Tuned for Opus 4.7. New model defaults aligned with Claude Code v2.1.112+, xhigh effort as the recommended setting, and the new tokenizer's larger max_tokens floor respected when opening sessions.

# v1.0.8

April 14, 2026

Skills, reimagined

  • Full skill metadata. Expanded SKILL.md parsing: when_to_use, allowed-tools, model, effort, paths, argument-hint, user-invocable, disable-model-invocation, license — all surfaced as typed metadata chips in the detail view.
  • Rendered SKILL.md preview. Click "View SKILL.md" on any skill to read the full body rendered as Markdown (with proper code blocks, headings, lists). No more guessing what a skill does.
  • References + scripts explorer. Each skill's bundled files shown with sizes. Click any one to open it in your default editor.
  • Precedence viewer. When a skill name exists at multiple scopes (personal + plugin, project + personal), Work shows which copy Claude actually uses — crown badge for the winner, warning badge for shadowed versions.
  • Scope picker. Filter the Skills list by All / Personal / Project / Plugin. Each skill row shows a scope tag (USER, PROJ, PLUG, ENT) at a glance.
  • Symlink dedupe. Skills symlinked between ~/.claude/skills/ and ~/.agents/skills/ no longer show twice.
  • .skill zip archive support. Packaged skills (like obsidian-brain.skill) now parse and render correctly.
  • Plugin-as-skill detection. Plugins with SKILL.md at the root (like claude-reflect) now appear in the Skills list too.
  • Skill operations. Create a new skill from scratch (scaffold wizard), clone a plugin skill into your personal folder for editing, toggle auto-invoke and slash-command availability, delete to Trash. Right from the detail view.
  • Plugin enable/disable switches. Flip any plugin on or off — Work writes enabledPlugins to ~/.claude/settings.json atomically.
  • New Marketplace tab. Browse plugins from every marketplace installed on your machine. Install / Update / Uninstall via Claude's CLI with one click.
  • Today token counter. The Usage tab now leads with a hero card showing today's tokens, vs-yesterday delta, and a Input/Output/Cache split.

# v1.0.7

April 14, 2026

Roomier on first launch

  • Bigger initial window. First-launch size bumped 15% (1010 × 670) so the new home screen, sidebar, and Usage charts breathe properly out of the box.

Existing users keep their saved window size — only first-time installs see the new default.

# v1.0.6

April 14, 2026

Renames that actually persist + a usage page worth opening

  • Renames now propagate to Claude. When you rename a session in Work, Work invokes claude --resume <id> --name <newname> headlessly to write the name into Claude's own session file. The new name shows up in claude --resume's picker and in the terminal title — not just in Work.
  • Usage analytics with Week / Month / Year. A new Activity card on the Usage tab shows tokens this period, daily average, peak day, and a clean bar chart. Switch ranges with the segmented control.
  • GitHub-style daily heatmap. 52 weeks of activity at a glance, color-binned by adaptive quartiles. Active days, current streak, and longest streak shown above the grid.
  • Token usage now caches. First load scans every session file once and writes a per-session cache to Application Support. Subsequent launches feel instant — only files Claude has touched since last run get re-parsed.
  • Token counts go to billions and trillions. K, M, B, T suffixes so heavy usage still reads cleanly.
  • Polish. Skeleton loading state for the Usage tab while scanning. Activity card chart redesigned with weekly bars for the Month view (no more dead-thin daily lines).

# v1.0.5

April 13, 2026

Big numbers, bigger reach

  • Token counts now scale to billions and trillions — K, M, B, T suffixes so huge usage totals stay readable.
  • Rename from the home screen — right-click the feature card or any "Jump back in" card to rename. A subtle pencil icon appears on hover for discoverability.
  • Fixed background auto-updates — Sparkle's feed URL is now correctly baked into the app bundle. Updates land silently while you work.

First release with working silent auto-update. From now on new versions download in the background and flip the badge to "Relaunch to update" when ready.

# v1.0.4

April 13, 2026

Session superpowers

  • Redesigned home screen — App Store–style feature card shows your most recent session with one-click resume. "Jump back in" grid shows the next 4.
  • Cross-project session search — type in the sidebar to search sessions across every project by name, project, or message content.
  • Name sessions at launch — type a name in the New Session popover and Work applies it automatically as the session starts.
  • Rename existing sessions — right-click any session → Rename. Names persist across launches.
  • Hide old sessions — right-click → Hide to declutter. Toolbar toggle to show them again.
  • Home button — go back to the home screen from anywhere via the new 🏠 icon in the sidebar toolbar.
  • ⌘N from home — keyboard shortcut to start a new session without touching the mouse.

All aliases and hide flags live in ~/Library/Application Support/com.munyamakosa.work/ — nothing Work writes touches Claude's files.