Skip to content

Commit 4584f0e

Browse files
chaitanyagiriclaude
andcommitted
chore(release): 0.4.6
Turns the 0.4.7-rc rehearsal line into the shippable 0.4.6. Four things merged (feat/telemetry-message-count #343, fix/release-drop-white-screen #344, feat/arabic-ui-rtl-213 #345, and the command-name validation hardening), the version bumped 0.4.7-rc.2 -> 0.4.6 (package.json + lock; __APP_VERSION__ and the model-catalog gating both follow pkg.version, and no model has a numeric version gate so visibility is unchanged), and both note surfaces rewritten for the whole 0.4.5 -> 0.4.6 story: - build/release-notes.md (the update toast, baked into latest*.yml via releaseInfo.releaseNotesFile): 5 bullets, 267/280 chars, none clipped. - RELEASE.md (the GitHub release body): a new "What's new in 0.4.6" section, 0.4.5 demoted to "Still new in 0.4.5", and the stale 0.4.4 drop deck replaced with a clean 0.4.6 drop that uses the framework's own styling and self-hosted fonts — no remote fetch, so the drop-loader/font fix in this release protects it. The (v0.4.7) activation-funnel comments are corrected to (v0.4.6) since the funnel ships in this release. Suite 745/745, both typechecks clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LDbmAwrgtGskFGCRkYZBx4
1 parent 2aebc66 commit 4584f0e

6 files changed

Lines changed: 91 additions & 293 deletions

File tree

‎RELEASE.md‎

Lines changed: 81 additions & 284 deletions
Large diffs are not rendered by default.

‎build/release-notes.md‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
- **The interface speaks Chinese.** Pick zh-CN in Settings.
2-
- **IME typing no longer sends early.** Enter picks your candidate.
1+
- **The interface speaks Chinese and Arabic.** Set it in Settings.
2+
- **Updates install themselves.** Download, restart, done.
33
- **Fonts ship inside the app.** No Google Fonts fetch on launch.
4+
- **Hardened how engine commands launch.**
45
- **Settings has one Save button.** Connections get their own tab.

‎package-lock.json‎

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "munder-difflin",
3-
"version": "0.4.7-rc.2",
3+
"version": "0.4.6",
44
"private": true,
55
"description": "Clones for you and your team, working 24/7 — a free, local-first multi-agent harness that turns the CLI coding agent you already run into a clone of you, coordinating an office of agents on your machine.",
66
"main": "out/main/index.js",

‎src/main/analytics.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ const EVENTS: Record<string, ReadonlySet<string>> = {
5858
update_applied: new Set<string>(['from_version', 'to_version', 'via']),
5959
/** An agent PTY spawned. `provider` is the CLI engine name only. */
6060
agent_spawned: new Set<string>(['provider']),
61-
/** ── The activation funnel (v0.4.7): app_launched → onboarding_completed →
61+
/** ── The activation funnel (v0.4.6): app_launched → onboarding_completed →
6262
* agent_spawn_attempted → {agent_spawned | agent_spawn_failed |
6363
* agent_install_started → agent_install_finished}. Every added property is a
6464
* closed enum or a closed CLI name — nothing free-form, same allowlist rule. */
@@ -81,7 +81,7 @@ const EVENTS: Record<string, ReadonlySet<string>> = {
8181
* `install_failed` (non-zero exit — e.g. an installer that cannot complete
8282
* unattended). This is the signal that a first agent never actually started. */
8383
agent_install_finished: new Set<string>(['provider', 'rung', 'outcome']),
84-
/** ── The end of the activation funnel (v0.4.7): a HUMAN sent a message to an
84+
/** ── The end of the activation funnel (v0.4.6): a HUMAN sent a message to an
8585
* agent. Counted at the SUBMIT boundary, never per keystroke — see
8686
* MESSAGE_SURFACES for the four places a person can send one. Carries a COUNT
8787
* and nothing else: no text, no length, no hash. `surface` is a closed enum. */

‎src/main/index.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2553,7 +2553,7 @@ async function spawnAgentCore(opts: AgentSpawnOptions, owner: Electron.WebConten
25532553
const claudeProvider = isClaudeProvider(provider);
25542554
opts.provider = provider;
25552555
if (opts.hive) opts.hive = { ...opts.hive, provider };
2556-
// Activation-funnel entry (v0.4.7): every spawn REQUEST, so (attempted − spawned)
2556+
// Activation-funnel entry (v0.4.6): every spawn REQUEST, so (attempted − spawned)
25572557
// measures the fallout the whole rebuild exists to see. Gated on !noAutoInstall so
25582558
// the missing-CLI relaunch (the only re-entry, index.ts install-exit handler) does
25592559
// NOT double-count a single user attempt — it is the SAME attempt continuing.
@@ -3128,7 +3128,7 @@ ipcMain.handle('config:update', (_evt, patch: Partial<HarnessConfig>) => {
31283128
const next = writeConfig(patch);
31293129
// Live opt-in/out from Settings → Privacy (TELEMETRY.md).
31303130
if (typeof patch?.telemetryEnabled === 'boolean') analytics.setEnabled(patch.telemetryEnabled);
3131-
// Activation funnel (v0.4.7): onboarding just finished (false → true) — the top of
3131+
// Activation funnel (v0.4.6): onboarding just finished (false → true) — the top of
31323132
// the launch → first-agent funnel. `provider` is the engine chosen in the wizard.
31333133
// Fired here (main), not in the renderer, so it rides the same allowlist as the rest.
31343134
if (!wasOnboarded && next.onboardingComplete) {

0 commit comments

Comments
 (0)