Skip to content

Releases: StaymanHou/Claudesk

v0.5.2

Choose a tag to compare

@StaymanHou StaymanHou released this 18 Sep 14:46

Signed and notarized. Claudesk is now Developer-ID signed and notarized by Apple, so macOS Gatekeeper opens it without any workaround.

The xattr -dr com.apple.quarantine step is gone — from the install instructions, from upgrades, and from the Homebrew cask's caveats. Releases before v0.5.2 needed it; this one does not.

Under the hood, the whole self-quarantine-clear mechanism that existed only because the app was unsigned has been deleted: the updater's post-install xattr clear, its fallback dialog, and the seam behind it.

The in-app updater is unchanged and the minisign trust anchor is the same, so an existing install updates itself normally — check for updates, install, done.

Install via the tap: brew tap StaymanHou/claudesk && brew trust --cask StaymanHou/claudesk/claudesk && brew install --cask claudesk

Claudesk v0.5.1

Choose a tag to compare

@StaymanHou StaymanHou released this 17 Sep 16:17

Supervisor hotfix

The workflow supervisor no longer fires while you have unsent input in a Claude Code pane, and can now be turned off per workspace.

This fixes the behaviour reported after a day on v0.5.0 — most visibly, the supervisor firing six unwanted /feature-build invocations into an active session. The predicate is unsent input present, not "while typing": a buffered line you walked away from still suppresses the fire, where a keystroke-recency debounce would not.

  • Suppression — a byte-level watermark fed from the terminal's single input chokepoint, cleared by Enter, Esc, Ctrl+C or Ctrl+U. A suppressed turn deliberately consumes its chain claim, so hitting Enter sends your command, not two at once.
  • Per-workspace toggle⚙ supervised / ⚙ unsupervised in the workspace header. Defaults ON; persists per project.
  • Suppressed marker — a badge appears while the supervisor is held back, so suppression is visible rather than silent.

Not yet confirmed in real use. The mechanism is unit- and mutation-tested, but whether it actually stops interrupting you can only be established by using it — an agent-launched Claude Code emits no hook events, so this half is unverifiable in automated testing.

Unsigned build. macOS Gatekeeper blocks it on first launch. After install:

xattr -dr com.apple.quarantine /Applications/Claudesk.app

Install via the tap: brew tap StaymanHou/claudesk && brew trust --cask StaymanHou/claudesk/claudesk && brew install --cask claudesk

Claudesk v0.5.0

Choose a tag to compare

@StaymanHou StaymanHou released this 15 Sep 14:34

Milestone 15 — the workflow supervisor

Claudesk now absorbs the workflow state machine as typed code and enforces the drive
mode's chaining policy mechanically, instead of relying on prose the model may drift
from. At the end of a Claude Code turn it reads the transcript, resolves the transition
against a 113-row typed policy graph, and — where the policy says AUTO — fires the next
command itself, in every open workspace rather than only the focused one.

The milestone was triggered by a measured 10x regression in auto-chain adherence
(0.36 → 3.63 breaks per 100 skill invocations across 187 mined sessions). The probe
inverted the original design: wrongful stops emit the correct transition token and
often name the correct next skill, so they are textually indistinguishable from
legitimate pauses — a prose-reading judge would pass all 19 confirmed breaks, while the
mechanical check decides every one.

What's new in this build

  • Break detection + auto-fire — a wrongful workflow stop is corrected without you
    noticing it happened.
  • The state machine as typed code — 111 transitions and 58 pause-policy rows behind a
    single compile-checked funnel, so a drive mode resolves to a policy cell totally.
  • Context-pressure recycle — above 400,000 tokens, at a feature-workflow phase
    boundary that isn't the last phase, the session is recycled (handoff → fresh Claude
    Code → restore) rather than chained, so a long feature carries its workflow forward in
    a clean context.
  • Observability — every fire, recycle and declined recycle now emits a distinct log
    line. Previously a fire left no trace at all.

⚠️ The supervisor has not yet been observed firing in a live session. The mechanical
half is pinned by standing tests, but this release is the first build that contains the
feature — first-run dogfooding is what confirms the live behavior. If it ever fires
wrongly, Esc interrupts it.


Unsigned build. macOS Gatekeeper blocks it on first launch. After install:

xattr -dr com.apple.quarantine /Applications/Claudesk.app

Install via the tap: brew tap StaymanHou/claudesk && brew trust --cask StaymanHou/claudesk/claudesk && brew install --cask claudesk

Claudesk v0.4.0

Choose a tag to compare

@StaymanHou StaymanHou released this 06 Sep 20:33

Milestone 13.5 — a quality-of-life bucket of five improvements — plus a fix for an app-freezing bug found while dogfooding.

Your window stays where you put it, and the status dot stopped lying about background work.

  • The window remembers itself. Size, position, and maximized state now persist across launches. Claudesk previously opened at a hardcoded 1280×800 every time, which on a large display meant resizing it by hand at the start of every session. A window closed maximized reopens maximized.
  • A fourth status state: working in background. A session that hands control back while a backgrounded job is still running now shows its own purple dot instead of reading as idle — so "finished" and "still churning" are no longer the same signal. This also fixes a dot that used to light up blue, as if waiting for input, when an agent had merely completed.
  • Jump to where a turn started. Arrows in the terminal chrome step backward and forward through the start of each Claude Code turn, with a position readout and each arrow greying out at its end — instead of hand-scrolling thousands of lines to find where the last answer began.
  • The drive mode is visible and changeable from inside the workspace, not only from the project picker, and changing it now applies to the session you are in rather than waiting for the next one. Applying it restarts Claude Code for that workspace while keeping the conversation, firing immediately when the agent is idle and queueing until it goes idle when it is mid-turn.
  • Closing a workspace no longer freezes the app. Session teardown polled the process on the same thread that draws the window, so any session slow to exit took the whole app down with it; teardown now runs on a worker. A second, independent deadlock between the menu-bar glyph update and the closing workspace was found in the same measurement and fixed alongside it.

Also in this release: the project now carries an MIT license, and the README has been brought back in line with what actually ships.

Known issue: while an agent is mid-turn, the workspace drive-mode readout stays clickable and a second Apply is silently discarded even though the readout shows the new value. Changing the mode again once the agent is idle applies correctly.

Unsigned build. macOS Gatekeeper blocks it on first launch. After install:

xattr -dr com.apple.quarantine /Applications/Claudesk.app

Install via the tap: brew tap StaymanHou/claudesk && brew trust --cask StaymanHou/claudesk/claudesk && brew install --cask claudesk

Claudesk v0.3.4

Choose a tag to compare

@StaymanHou StaymanHou released this 19 Aug 19:11

Recycle Session got two fixes, and the first one had shipped broken in v0.3.3.

Recycle typed /session-restore into the respawned Claude Code session before that session could accept keystrokes — the command landed in the input box with the autocomplete open, and the restore never ran. The delay was not missing: the 1500 ms settle was already there, but it was being spent concurrently with the respawn rather than after it, so the window that actually protected the injection was whatever was left over — near zero on a cold or loaded machine. Awaiting the fresh session first, then settling, makes the wait mean what it was measured to mean. Re-measured on the current machine to confirm the margin still holds.

Recycle is now abortable. Closing a workspace mid-Recycle used to clear the unclean-exit flag for a session that was then never respawned, so the next open announced nothing where it should have offered --continue.

Under the hood: an eight-package hardening sweep paying down deferred work — declaration hygiene, over-claiming comments narrowed, conflicting precedents reconciled, test integrity, guard hygiene, a boundary off-by-one in the time-analytics custom window, and every config write funnelled through a single serialized read-modify-write path.

Unsigned build. macOS Gatekeeper blocks it on first launch. After install:

xattr -dr com.apple.quarantine /Applications/Claudesk.app

Install via the tap: brew tap StaymanHou/claudesk && brew trust --cask StaymanHou/claudesk/claudesk && brew install --cask claudesk

Claudesk v0.3.3

Choose a tag to compare

@StaymanHou StaymanHou released this 18 Aug 18:30

Milestone 13 (Skill orchestration) — and with it Group C closes: all six of the vision's success metrics are now met.

Common workflow operations are clicks now

  • Skill-button row — five workflow skills fire straight into the workspace's live Claude Code session: /session-start, /session-restore, /session-capture, /util-prune-claude-md, /util-backlog-paydown. A fixed five, not a directory scan — measured across 2470 transcripts, only 11 of 50 invocable skills were ever typed by hand, and never once a feature-*/task-*/product-* command (those belong to the agent, fired by auto-chaining). Rendering all 61 skill entries would have shipped a wall of buttons, 11 of them dead, strictly worse than typing three letters and tab.
  • Recycle Session — the clean-context ritual in one click: hand off the session, wait for the handoff to genuinely finish, clear the unclean-exit flag, restart Claude Code, restore into the fresh session. Underneath the button it is a callable operation, so a future supervisor can invoke it with no human present.
  • The whole row vanishes when the workflow gate is off — absent, not hidden or disabled. Verified live, with all five registries of the off-invariant guard bypassed individually.

Knowing when a skill running inside Claude Code has finished turned out to be the hard part. The handoff pointer file lands nine to twelve seconds before the skill stops working, so the obvious trigger would kill the session mid-operation. The marker that shipped is a composite with an ordering constraint, modelled so the illegal combination cannot be represented.

Also in this release

  • Milestone 12 (Smart auto-resume + drive mode) closed GO across all eight work packages — opening a project fires the right resumption command by itself and announces it before you click, and the drive mode is settable from the picker row.
  • An 11-work-package backlog-paydown sweep — repaired the source-text guard family that had burned this repo four times, sharpened the off-invariant guard's chord arm to per-export, collapsed six duplicated constants onto single sources of truth, audited the CSS↔component contract for modifier selectors, and corrected ten stale or over-claiming doc and test-name claims.
  • CLAUDE.md pruned from 97.7k to 39.3k chars; arch.md split into a 132-line index plus eleven by-subsystem files.

Unsigned build. macOS Gatekeeper blocks it on first launch. After install:

xattr -dr com.apple.quarantine /Applications/Claudesk.app

Install via the tap: brew tap StaymanHou/claudesk && brew trust --cask StaymanHou/claudesk/claudesk && brew install --cask claudesk

Claudesk v0.3.2

Choose a tag to compare

@StaymanHou StaymanHou released this 06 Aug 13:48

Claudesk v0.3.2

Smart auto-resume (M12 WP1–WP3). Opening a project now fires the right resumption command by itself — and tells you which one before you click.

  • Picker rows announce their action. A row shows ↻ continue or ↻ /session-restore next to the project name, so the prediction is visible before you commit to it.
  • Clicking the row opens and fires it. No typing a slash command to pick up where you left off.
  • A second door opens without firing anything — same row, for when you want the workspace but not the resumption.
  • An unclean-exit flag distinguishes a crash from a deliberate close: set when a workspace opens, cleared only by a clean exit. A power loss and a button click produce identical state, so the app fails toward resuming your in-flight work.
  • /session-start is never auto-fired — it's rare and expensive when wrong, so it gets an explicit button instead.

Workflow-coupled surfaces stay behind the opt-in workflow features setting (default off); the --continue arm works for every Claude Code user.

Fixes: the auto-resume inject arm no longer re-fires when you click Re-launch.

Unsigned build. macOS Gatekeeper blocks it on first launch. After install:

xattr -dr com.apple.quarantine /Applications/Claudesk.app

Install via the tap: brew tap StaymanHou/claudesk && brew trust --cask StaymanHou/claudesk/claudesk && brew install --cask claudesk

Claudesk v0.3.0

Choose a tag to compare

@StaymanHou StaymanHou released this 03 Aug 14:29

Claudesk v0.3.0

Three milestones since v0.2.9 — and the first release where Claudesk works properly for someone who doesn't run the companion workflow system.

Workflow features are now opt-in, and OFF by default for everyone. A single workflow_features_enabled setting gates every workflow-coupled surface as a set. With it off, the app is byte-identical to one that never had those features — no dead tabs, no disabled buttons, no empty panels. If you don't run the workflow system, you now get a clean lite IDE instead of affordances that go nowhere.

Claudesk can install the companion workflow system for you. A location picker, a consent step that names every side effect before anything is written, a live-streamed git clone + install, and a provenance record. The uninstall wizard is its paired counterpart, and it will only remove what Claudesk itself recorded installing — a substrate it didn't install is never offered for removal, so a hand-managed ~/.claude/ is safe by construction rather than by care.

A real Settings panel⌘,, Claudesk → Settings…, or the picker gear. The old ad-hoc settings strip is gone, which roughly doubles the projects visible above the fold in the picker.

The Claude Code model choice now follows the project, not the machine. Each project row carries its own model, passed as --model at spawn; unset means inherit your global default, so existing projects are untouched. No more discovering you left a project on the wrong model.

New Docs tab (workflow features on): your project's workflow-system/ docs rendered as formatted, scrollable, link-navigable read-only markdown — opening on the most downstream doc with no click, and live-reloading on disk changes without losing your scroll position, which matters when you're watching Claude rewrite a WIP file in real time.

Also: time tracking now says out loud that it's offline and local-only; the workflow-substrate detection bug in v0.2.9 (which couldn't distinguish the companion system from your own skills) is fixed.

Unsigned build. macOS Gatekeeper blocks it on first launch. After install:

xattr -dr com.apple.quarantine /Applications/Claudesk.app

Install via the tap: brew tap StaymanHou/claudesk && brew trust --cask StaymanHou/claudesk/claudesk && brew install --cask claudesk

Claudesk v0.2.9

Choose a tag to compare

@StaymanHou StaymanHou released this 20 Jul 17:54

Claudesk v0.2.9

QoL polish bucket + a large internal-quality sweep.

Fixes & polish

  • Clean CC/terminal shutdown. Closing a workspace now kills the CC session and its process group with a SIGHUP-first sequence — so an interactive shell saves its command history on exit (previously lost) and subagents are reaped cleanly, with no ~5s hang or orphaned processes.
  • UTF-8 I/O fix. Accented characters, arrows, €, and emoji no longer arrive garbled — both on paste into CC (input) and in CC's rendered output on an installed build (the launchd LANG-unset case).
  • Picture-in-picture defaults to the top-right of the screen on first summon.
  • Active-workspace close confirmation. Closing a workspace whose CC session is busy (running / awaiting input) now asks for confirmation first; the same guard covers quitting the app while a workspace is active.

Under the hood

  • Backlog-paydown sweep: consolidated duplicated logic across the time-analytics query/reclassify layers and dashboard components, dead-code cleanup, and ~40 resolved code-quality findings. Behavior-preserving; full test suites green.

Unsigned build. macOS Gatekeeper blocks it on first launch. After install:

xattr -dr com.apple.quarantine /Applications/Claudesk.app

Install via the tap: brew tap StaymanHou/claudesk && brew trust --cask StaymanHou/claudesk/claudesk && brew install --cask claudesk

Claudesk v0.2.8

Choose a tag to compare

@StaymanHou StaymanHou released this 18 Jul 13:39

No-op release — the self-update verification target for M10 WP6 (a running Homebrew-installed Claudesk self-updates in-app to this version with no Homebrew command). No functional changes from v0.2.7.

Unsigned build. macOS Gatekeeper blocks it on first launch. After install:

xattr -dr com.apple.quarantine /Applications/Claudesk.app

Install via the tap: brew tap StaymanHou/claudesk && brew install --cask claudesk