Skip to content

Ensemblr 0.1.0-beta.4

Pre-release
Pre-release

Choose a tag to compare

@psoldunov psoldunov released this 14 Aug 12:08

Notifications you can act on, a delegation switch for Claude Code, and a quit that asks first. Signed, notarized, Apple silicon.

Added

  • Pick how Claude Code delegates (#277). A first-class Claude Code chat held two ways to fan out — the runtime's own sub-agent tool and ensemblr_start_conversation, which opens a real chat tab you can watch, steer, and audit — and nothing arbitrated between them. Settings → Providers → Claude Code → Sub-agents now picks one, and both directions are enforced so the mechanism you did not pick is absent rather than discouraged. The choice is fixed when a chat opens, so it reaches the next chat rather than the running one. Pi and every spawned child always delegate through chat tabs.
  • Quitting with agents running asks first (#278). A native confirmation names the chats about to be interrupted, with Quit Anyway and Cancel, in all three languages.
  • A chime when a chat needs you (#287). A notification-sound setting (default on) plays a bundled chime alongside the desktop notification. The OS notification is posted silent, so switching the chime off buys silence rather than the system tone back.
  • A planning workspace is named before the agent gets there (#280). Ensemblr derives a provisional name from your opening prompt when a plan-mode session opens or submits — no model in the loop — and marks it provisional, so the agent's own naming call still lands as a first naming and replaces it for free.
  • Preview files agents write outside the workspace (#281). Clicking a /tmp, ~/.claude/, or sibling-worktree path in a chat now opens it in the read-only viewer, badged Outside workspace. This widens preview only: the attachment store stays workspace-only, symlink containment intact.

Changed

  • Public copy leads with Ensemblr Control and the two runtimes (#274, #275), and the README hero is a video of Ensemblr Control driving the app rather than a static board screenshot.
  • react-doctor is back at 100, by fixing the code rather than muting it (#289). Thirty suppressions became seven: four settings routes split so each component owns a file (762 lines rehomed), a pure helper moved out of a component file, the settings debounce window hoisted into its own hook, and the three environment layers assembled in parallel. Adds knip.jsonc.
  • Behaviour change: every Claude Code session now carries disallowedTools: ['Agent', 'Task'] under the default ensemblr sub-agent mechanism, including bypassPermissions sessions that previously carried none.

Fixed

  • Notifications are per chat, not per app (#276). The gate was app focus alone, so any focused window swallowed the notification for every other chat. It is now suppressed only when that exact chat is on screen in a focused window, and clicking a notification opens the chat it was about. A chat hosting somebody's sub-agent stays silent, an idle that is only the tail of a stop you asked for stays silent, and an agent blocked on a questionnaire now notifies.
  • The follow-up queue drains even when the composer was not watching (#288). The flush rode the falling edge of isStreaming and so needed the composer mounted at the moment a turn ended; it now reads the agent's standing state.

Full changelog: https://github.com/ensemblr-hq/ensemblr/blob/master/CHANGELOG.md