Skip to content

Ensemblr 0.1.0-beta.1

Pre-release
Pre-release

Choose a tag to compare

@psoldunov psoldunov released this 12 Aug 18:44
· 0 commits to ed48b06970fc781d6de71054cdf26cadb1088195 since this release

First public build of Ensemblr — a macOS workbench for isolated, multi-agent coding workflows.

This is a beta. Pre-1.0, Apple silicon only.

Install

Download Ensemblr-0.1.0-arm64.dmg, open it, drag Ensemblr to Applications.

The build is code-signed with a Developer ID certificate, hardened-runtime, notarized by Apple, and stapled — so it opens without a Gatekeeper prompt and validates offline.

Requirements

git, the GitHub CLI (gh, authenticated), and at least one agent runtime — the Pi CLI or the Claude Code CLI. Ensemblr checks all of this at first launch and offers a fix per failing check.

Notes

The app reports its version as 0.1.0; the -beta.1 suffix marks the release, not the build.

What's Changed

  • chore: disable Claude co-author attribution in project settings by @psoldunov in #91
  • feat(icon): shrink wordmark "E" 20% and add borderless social avatar by @psoldunov in #92
  • fix(deps): patch tar, tmp, linkify-it to close 10 Dependabot alerts by @psoldunov in #93
  • refactor: apply fallow and react-doctor codebase audit fixes by @psoldunov in #94
  • docs: add JSDoc blocks to functions across the codebase by @psoldunov in #95
  • refactor: organize types into concern-owned type modules by @psoldunov in #96
  • Use workspace settings for setup scripts and unblock chat closes by @psoldunov in #97
  • Sync base branch before creating workspaces by @psoldunov in #98
  • Support pasted image attachments in composer by @psoldunov in #99
  • Render inline workspace references as actionable chat chips by @psoldunov in #100
  • Redirect archived workspaces to Welcome by @psoldunov in #101
  • Restore welcome sidebar toggle and tidy tool UI states by @psoldunov in #102
  • Add image previews and file-type icons to file tabs by @psoldunov in #103
  • Skip workspace setup when dependencies are current by @psoldunov in #104
  • Keep composer drafts scoped to chat tabs by @psoldunov in #105
  • Redirect workbench launch to the last active workspace by @psoldunov in #106
  • Refresh PR snapshots after GitHub PR creation by @psoldunov in #107
  • Add merged PR header actions to continue or archive workspaces by @psoldunov in #108
  • Show pending workspaces instantly during creation by @psoldunov in #109
  • Fix merged sidebar header purple tint by @psoldunov in #110
  • feat(workbench): refresh PR header instantly on created PR URL by @psoldunov in #111
  • feat(workbench): draggable session tab ordering by @psoldunov in #112
  • Refine Experimental settings and wire auto-run defaults by @psoldunov in #113
  • Document current settings wiring status by @psoldunov in #114
  • Show true workspace file counts after setup by @psoldunov in #115
  • Show dock tab activity for terminal output by @psoldunov in #116
  • Sync workspace pull request state in the workbench by @psoldunov in #117
  • Show running dock activity on workspace rows by @psoldunov in #118
  • Document shipped parity and runtime decisions by @psoldunov in #119
  • fix(terminal): inherit shell-derived env for setup and run scripts by @psoldunov in #120
  • Use workspace toolchain PATH for scripts by @psoldunov in #121
  • Show setup status and bundle terminal font by @psoldunov in #122
  • Fix session tab close controls during reorder by @psoldunov in #123
  • Fix session tab selection after drag reorder by @psoldunov in #124
  • Add draggable workspace dashboard board by @psoldunov in #125
  • fix(workspace): address React Doctor findings by @psoldunov in #127
  • Add dashboard workspace card action menus by @psoldunov in #128
  • Fix dashboard availability while setup is pending by @psoldunov in #129
  • Fix dashboard board drop targeting by @psoldunov in #130
  • Avoid reusing generated workspace names by @psoldunov in #131
  • Restore collapsed sidebar triggers across shell screens by @psoldunov in #132
  • Keep dashboard accessible when no workspaces remain by @psoldunov in #133
  • Refresh product docs to reflect shipped dashboard updates by @psoldunov in #134
  • Add runtime-aware workspace setup state by @psoldunov in #135
  • Fix dock tab close overlay border overlap by @psoldunov in #136
  • Show live PR check statuses in the Checks panel by @psoldunov in #137
  • Persist action prompts and preserve app detection cache by @psoldunov in #138
  • Improve pull request editing and collapsed header actions by @psoldunov in #139
  • Remove inactive workspace dead ends and stabilize tabs by @psoldunov in #140
  • Prevent workspace creation race failures by @psoldunov in #141
  • Improve pull request action color contrast by @psoldunov in #142
  • Refine workspace services and renderer state handling by @psoldunov in #143
  • Fix workspace removal layout animations by @psoldunov in #144
  • feat(settings): wire app & repository settings to persistence and live config reload by @psoldunov in #145
  • refactor(renderer): extract shared OpenInTargetsSubmenu and PanelMessage by @psoldunov in #146
  • feat(renderer): preserve per-chat model, remove Help nav and deferred settings rows by @psoldunov in #147
  • feat(build): sign and notarize macOS DMG builds by @psoldunov in #148
  • Consolidate session naming and preserve stopped chat tabs by @psoldunov in #149
  • THE-152: Rich diff viewer with inline review comments by @psoldunov in #151
  • feat(agents): add harness launch and session tabs by @psoldunov in #152
  • feat(agents): derive Codex and Vibe conversation titles by @psoldunov in #153
  • Add session tab keyboard shortcuts and launcher tooltips by @psoldunov in #154
  • Restore agent terminal tabs by @psoldunov in #155
  • Serialize exclusive script launches by @psoldunov in #156
  • Harden workspace worktree creation by @psoldunov in #157
  • fix(models): stabilize startup catalog by @psoldunov in #158
  • Fix unavailable summaries in transcript picker by @psoldunov in #159
  • Harden Pi RPC startup and workbench recovery by @psoldunov in #160
  • Audit install scripts and remove desktop activation by @psoldunov in #161
  • Preserve resumable agent sessions and improve tab switching by @psoldunov in #162
  • Prevent duplicate app instances during shell environment loading by @psoldunov in #163
  • fix(main): harden single-instance lock and quit on last window by @psoldunov in #164
  • fix(terminal): restore dock terminal sessions across restart with clean scrollback by @psoldunov in #165
  • Add agent-to-app control layer by @psoldunov in #166
  • Add role-aware agent orchestration guidance by @psoldunov in #168
  • feat(agent-control): support sub-agent naming and board status sync by @psoldunov in #169
  • build(deps): bump dompurify from 3.4.11 to 3.4.12 by @dependabot[bot] in #167
  • feat(session-tabs): mark subagent tabs with top border instead of background tint by @psoldunov in #170
  • feat(session-tabs): distinguish subagent chats with bot icon by @psoldunov in #171
  • docs: refresh README, CHANGELOG, and guides for shipped features by @psoldunov in #172
  • fix: converge duplicate Claude terminal tabs after restart by @psoldunov in #173
  • chore: quiet fallow barrel noise and drop dead exports by @psoldunov in #174
  • fix: resolve @electron/node-gyp from npm registry instead of git by @psoldunov in #175
  • build: adopt nub toolchain, replacing npm (ADR 0039) by @psoldunov in #176
  • revert: drop nub toolchain, restore npm (reverts #176) by @psoldunov in #178
  • Recover finished child's last message; untruncated tab-title tooltips by @psoldunov in #179
  • feat: prettier workbench error and empty states by @psoldunov in #180
  • refactor: align module, type, and doc organization with the AGENTS rules by @psoldunov in #181
  • feat: ask_user_question agent-control tool by @psoldunov in #182
  • fix: stop long paths overflowing lifecycle dialogs by @psoldunov in #183
  • feat: plan mode for Pi conversations by @psoldunov in #184
  • refactor: reach react-doctor 100 by removing effect anti-patterns by @psoldunov in #185
  • feat: rebuild the chat timeline around tool presentation descriptors by @psoldunov in #186
  • feat: collapse skill invocations and rebuild session naming by @psoldunov in #187
  • feat: give harnesses their own playbook, title bash tool rows by action by @psoldunov in #188
  • feat: keep the active tab in view and land on the last visited tab on close by @psoldunov in #189
  • feat: open spawned tabs right of the active tab by @psoldunov in #190
  • feat: inherit plan mode in spawned sub-agents by @psoldunov in #191
  • feat: narrow the sub-agent surface by role, fix its tab flow by @psoldunov in #192
  • feat: let agents read the workspace diff and file review comments by @psoldunov in #193
  • feat: audit a sub-agent's transcript, cascade stops, boot-scan placeholder by @psoldunov in #194
  • feat: link the sidebar preview button to the deployed build by @psoldunov in #196
  • feat: tint the sidebar preview pill from the pull request header tone by @psoldunov in #197
  • feat: continue a workspace past its merged pull request by @psoldunov in #198
  • refactor: clear three react-doctor findings blocking a 100 score by @psoldunov in #204
  • feat: preview a changed image instead of its binary diff by @psoldunov in #205
  • feat: keep the transcript still when a timeline row unfolds by @psoldunov in #206
  • build(deps): bump ip-address from 10.2.0 to 10.4.0 by @dependabot[bot] in #195
  • build(deps): bump brace-expansion by @dependabot[bot] in #199
  • build(deps): bump fast-uri from 3.1.4 to 3.1.5 by @dependabot[bot] in #200
  • build(deps): bump hono from 4.12.31 to 4.13.0 by @dependabot[bot] in #201
  • build(deps): bump postcss from 8.5.16 to 8.5.25 by @dependabot[bot] in #202
  • build(deps-dev): bump undici from 7.28.0 to 7.29.0 by @dependabot[bot] in #203
  • feat: reuse one ephemeral preview tab when browsing files and diffs by @psoldunov in #207
  • fix: keep a PR comment tab open on double click by @psoldunov in #208
  • feat: show what a PR comment actually says by @psoldunov in #209
  • fix(terminal): open clicked links in the default browser by @psoldunov in #210
  • feat: unify the file and diff viewers behind one code surface by @psoldunov in #211
  • fix: route code-surface styling through design tokens, pin Node 24 at install by @psoldunov in #212
  • Pin Node for Conductor scripts, refresh shadcn, hit react-doctor 100 by @psoldunov in #213
  • refactor: clear fallow duplication and complexity findings codebase-wide by @psoldunov in #214
  • feat(workbench): surface merge conflicts and unify PR header control height by @psoldunov in #215
  • feat(workbench): retarget a workspace's base branch from the header by @psoldunov in #216
  • Add markdown preview toggle, fix composer scrollbar and image-read presentation by @psoldunov in #217
  • Render the plan review bar as the composer header by @psoldunov in #218
  • feat(scripts): multiple named run scripts per repository by @psoldunov in #220
  • Fit the PR header pills in a narrow sidebar, plus three workbench fixes by @psoldunov in #221
  • feat(settings): add named run scripts for dev, playground, and unsigned by @psoldunov in #222
  • feat(agent-control): let agents start a run script by name by @psoldunov in #223
  • feat(agent-control): unbounded ask_user_question and canonical argument names by @psoldunov in #224
  • Let a workspace take over an existing branch instead of always forking by @psoldunov in #225
  • feat(agent-runtime): add Claude Code as a second first-class agent runtime by @psoldunov in #226
  • feat(agent-runtime): Claude Code slash commands, MCP roster, and model catalogue by @psoldunov in #228
  • feat(agent-runtime): gate branch naming on the branch, and fix the slash-command menu by @psoldunov in #229
  • fix(agent-runtime): measure Claude context usage from the live thread by @psoldunov in #230
  • fix(chat-tabs): keep a chat tab bound to its own agent session by @psoldunov in #231
  • feat(conversation): show a spawned sub-agent's runtime, and pin a chat's thinking level to its session by @psoldunov in #232
  • fix(agent-timeline): render Claude tool results as cards, not JSON by @psoldunov in #233
  • feat(checks-panel): strike resolved comments through, and bulk-add only unresolved ones by @psoldunov in #234
  • feat(agent-runtime): give the context gauge a window before the first turn ends by @psoldunov in #235
  • fix(agent-control): pin a spawned child to its caller's agent runtime by @psoldunov in #236
  • feat(claude-agent): persist redacted reasoning and open turns on prompt by @psoldunov in #237
  • docs: audit every documentation surface against the code by @psoldunov in #238
  • fix(claude-agent): stream reasoning prose instead of empty thinking blocks by @psoldunov in #239
  • feat(composer): echo a chat's first prompt before its session opens by @psoldunov in #240
  • feat(composer): cache the slash catalogue and rank the menu by use by @psoldunov in #241
  • fix: name control tool calls from either runtime, soften the PR header pills by @psoldunov in #242
  • fix: stop the agent timeline refolding the whole transcript on every token by @psoldunov in #243
  • feat(agent-control): give agents gated Linear reads and writes by @psoldunov in #244
  • feat(timeline): name skill rows and pin control-tool files as chips by @psoldunov in #245
  • feat(i18n): render the app — and its agents — in English, Russian, and Greek by @psoldunov in #246
  • feat(onboarding): gate first run behind a setup wizard by @psoldunov in #247
  • feat(settings): restructure the settings screens and localize diagnostics by @psoldunov in #248
  • feat(i18n): localize the untitled chat tab placeholder by @psoldunov in #249
  • feat(i18n): translate every user-facing surface the audit found by @psoldunov in #250
  • fix(navigation): hold Welcome when the last workspace or project goes away by @psoldunov in #251
  • fix(ask-question): show option descriptions in full by @psoldunov in #252
  • feat(timeline): nest a subagent's work inside the call that spawned it by @psoldunov in #253
  • feat(workspace-names): add Greek and Cypriot composers to the name pool by @psoldunov in #254
  • feat(unread): track unread chats per tab, not per workspace by @psoldunov in #255
  • feat(composer): attach files, issues, and directories inline by @psoldunov in #256
  • feat(composer): put attachment chips inline in the draft by @psoldunov in #257
  • feat(composer): hold follow-ups in a queue the user can see and edit by @psoldunov in #258
  • feat(composer): visual pass over composer chrome and markdown previews by @psoldunov in #259
  • feat: redesign the prompt queue, and make agent-control terminal reads legible by @psoldunov in #260
  • feat(composer): attach review comments as chips instead of pasted context by @psoldunov in #261
  • fix(workbench): keep dock empty states on the terminal palette in light mode by @psoldunov in #262
  • Lift dark surfaces off black and sharpen the light palette by @psoldunov in #263
  • feat(menu): drive the native menu bar from a renderer command bus by @psoldunov in #264
  • Retire feature parity as the product target by @psoldunov in #265

New Contributors

Full Changelog: https://github.com/ensemblr-hq/ensemblr/commits/v0.1.0-beta.1