What's new
What's new
What's new
Product updates in reverse chronological order. Scoped to changes in the MCP extension and the free web apps — each release has its own permalink for sharing.
Prefer a feed reader? Subscribe via Atom.
14 May 2026
Two payloads in one release. The Stripo module-bindings inspector gains a half-pair drift check — catches a CTA where only one half of the text/link Smart Property pair is registered, leaving the other half hardcoded in the module HTML. This was a quiet authoring slip with loud production consequences: every compose call looked successful while shipping the master-template default for the unregistered half. Scope is gated to base names ending in cta / button / btn so image-as-link patterns don't false-positive, and an ACK comment marker is available for intentional half-pairs (split CTAs where one half is design-by-intent static). Separately, orbit_validate_braze_data now recognises Braze's 26 standard user-profile fields (first_name, country, time_zone, push_token, etc.) alongside your custom attributes, so it stops false-flagging well-known profile fields as missing. Each found attribute is now tagged with whether it's standard or custom and the exact Liquid syntax to use, so the assistant can stop guessing whether to wrap a name in custom_attribute. orbit_audit_braze_instance surfaces the same 26 standard fields alongside the custom inventory. And orbit_validate_test_users no longer 400s when you pass an array of email addresses — Braze's /users/export/ids endpoint quietly accepts an array of external_ids but only a single email_address per request, so the tool now loops emails serially. The expanded response surfaces every standard field's value plus populated / empty arrays per profile, so verifying "is first_name actually populating in this test profile?" no longer requires inspecting the raw user object.
14 May 2026
Three empirical probes against Stripo's REST API today confirmed what 0.19.6 onward had been narrowing toward: there is exactly one path that supports per-send content substitution on Stripo modules, and it's pushing variable values into modules marked up with esd-dynamic-block Smart Element bindings via the editor's Smart Elements wizard. Every inline-HTML push path — the legacy areas shape, dataSources inline html, PUT edit-after-push — fails, the first two silently. So 0.19.10 strips user-facing references to those dead paths and consolidates around the one that works. orbit_setup_stripo gains a new Step 4 that walks you through marking up your modules with Smart Element bindings before you ever try to compose against them. orbit_inspect_stripo_module_bindings now hand-holds you toward the Smart Elements wizard when it sees a module with no or few registered variables, rather than leaving you to guess what's wrong. The three Stripo probe tools — orbit_probe_stripo_values, orbit_probe_stripo_inline_html, orbit_probe_stripo_smart_element — get their descriptions reframed so it's clear which two are internal diagnostics confirming dead paths are still dead, and which one tests the production path. And the stripo-integration skill now opens with a Foundational requirement preamble so anyone loading the skill cold lands on the right path from sentence one.
14 May 2026
Three precision fixes to the Stripo module-bindings inspector after the 0.19.8 detectors landed and immediately produced false positives in real workspaces. The static-asset pattern check now counts a variable as image-bound only when its primary mapping targets the src attribute, so text variables with secondary alt/title mappings on an image element no longer pad the count and trigger the note. The wizard top-level link-field note now requires the module to actually contain a button-shaped element AND not already have an href binding registered against it, so modules with no button (or modules whose CTA href is already covered by a registered Smart Property) stop seeing a note they can't act on. And two HTML-comment patterns the skill already recommended are now read back by the inspector — paste the static-asset marker comment to silence the static-asset note for a module whose imagery is design-by-intent, or paste an ACK comment naming a specific variable and attribute to silence selector-without-target notes for bindings that are dormant on purpose. The skill doc gains the exact paste-ready snippets in a new Acknowledging static-asset intent subsection.
13 May 2026
Two new detectors land on orbit_inspect_stripo_module_bindings and orbit_audit_stripo_modules, both targeting Stripo authoring patterns that pass structural inspection, render fine in the editor, and then misbehave at compose time. First: the static-asset pattern. When a module registers three or more image variables all bound to src on esd-gen-image* class elements, the asset URLs are almost always design — tick markers, badge grids, brand-logo walls — not per-send content. The trap is that Stripo's Smart Element wizard auto-re-registers esd-gen-* classes every time the module is reopened in the editor, so deregistering from the Data tab doesn't stick. The fix is documenting which variables are static-by-design as an HTML comment at the top of the module, which the wizard leaves alone. The inspector flags the shape and tells you what comment to add. Second: nested selectors. When two Smart Property bindings target elements where one contains the other in the DOM, Stripo writes the outer binding by replacing the inner element wholesale at compose time, and the inner binding's value gets clobbered. Detection uses real DOM containment via Cheerio, not string matching. Both detectors fire in the single-module inspector and the bulk auditor, and the static-asset best practice is now in orbit_setup_stripo's onboarding instructions. Also in this release: a brand-name fallback fix so unconfigured workspaces no longer see a hardcoded value.
12 May 2026
0.19.6 made per-send substitution on Stripo modules work end-to-end. 0.19.7 is the follow-up that closes the loop on verification. A registered Smart Property can point at a CSS class hook that doesn't exist anywhere in the module's HTML — the variable accepts values at compose time, the API returns success, and substitution silently never fires. You only notice when the defaults ship in production. orbit_inspect_stripo_module_bindings now flags exactly this case per-variable, with the fix path inline. The stripo-module-bindings skill has been hardened around what the inspector still can't catch on its own: a pre-flight checklist before treating a binding as done, the end-to-end probe-email recipe that's the only honest way to confirm substitution actually fires, the canonical p_* naming table, and worked examples of three common silent-no-op patterns. The Stripo Modular MCP integration guide has been extended with the same probe-email procedure so anyone working from the docs can verify their bindings without loading the skill first.
12 May 2026
Two halves of the same release. First, the sync bug that was silently breaking every per-send substitution call is fixed. Smart Properties in Stripo carry two labels — a canonical API identifier (e.g. p_title) and a human label shown in the editor (e.g. Title) — and Orbit's sync was storing the human label, so the compose validator kept rejecting correctly-formed payloads asking for p_title. The extractor now reads the API identifier, the CSS class hook gets persisted alongside it, and slot_values substitution works against the variable names Stripo's docs already tell you to use. Second, a new skill — stripo-module-bindings — walks you through the editor work that has to happen before any of this is useful. Registering a Smart Property in Stripo's UI has a load-bearing picker that's the same shape as a similar wrong option: pick the wrong one and the binding looks fine in the editor and is invisible to the API. The skill is the antidote: step-by-step registration, the verification check that catches the silent-failure mode, and a naming convention that matches Stripo's own.
11 May 2026
Hotfix to the orbit_inspect_stripo_module_bindings tool shipped yesterday in 0.19.3. The 'unmapped esd-gen-* classes' note used to infer the expected variable name from each CSS class — so a module that bound .esd-gen-title to a Smart Property called p_title (variable name doesn't match class basename, common in workspaces with a p_* naming convention) got falsely flagged as unmapped, with a follow-up instruction to register a variable that already existed. The inspector now cross-references actual blockMapping selectors instead of inferring names, so only genuinely orphan classes get flagged. CTA dead-end guidance also softened — no longer hardcodes cta_text / cta_href as the recommended names, since workspaces using a different prefix would get pushed toward names that conflict with their own convention.
11 May 2026
Two additions to the Stripo composer toolkit. orbit_compose_stripo_email now accepts the canonical-JSON content[] shape, so Smart Container modules — the layout shells with empty slots that host child modules per send — can be populated end-to-end from a single tool call. And a new orbit_inspect_stripo_module_bindings tool reports exactly what a given module accepts via the API: which Smart Properties are registered, which esd-gen hooks exist in its HTML, whether it looks like a Smart Container, and whether its CTA is bound to the editor's silent-fail OG-preview field. Pair the two: inspect first, then compose with the right shape.
11 May 2026
Stripo doesn't publish a stable contract for which field on GET /emails/<id> carries the rendered HTML, so the 0.19.1 html_overrides path was one response-shape quirk away from a silent miss. 0.19.2 fixes it with a two-source fetch chain — first the previewUrl that comes back on POST /email (public, full document, no JSON parsing), then the REST endpoint with a smart field scan that tries six likely names and auto-detects HTML by content when none match. Every failure path now returns fetch_source, html_length, html_excerpt and a typed list of response keys, so when something does miss the next debug round is one step instead of three.
11 May 2026
Stripo's write APIs for existing emails are a dead end. PUT and PATCH on /emails/<id> return 405, and the inline-html dataSources field that looks like it should let you override copy gets silently regenerated from the master template on every gen pass. So Orbit stops trying to write back. orbit_compose_stripo_email now accepts an html_overrides argument that fetches the Stripo-rendered email after push, Cheerio-patches the CTA text and href on every a.es-button element, and writes the patched HTML to disk for Braze sync. Stripo stays the source of structure; the per-send CTA variation happens client-side, after Stripo has done its job.
9 May 2026
Three new capabilities for the Stripo and Braze workflows. Smart Element modules can now have their slot content varied per send directly in orbit_compose_stripo_email — no manual Stripo work needed between sends. orbit_list_stripo_modules now shows which variables are bindable in each module so you know before you compose. And a new orbit_upload_image_to_braze tool uploads a single image from disk and hands back a Braze CDN URL ready to drop into any template or content block.
8 May 2026
Three customer-facing changes in this release. Anonymous usage telemetry is now on by default in the Orbit MCPB — until now we collected nothing unless you'd manually set ORBIT_TELEMETRY=1, so the dashboard was blind to which skills and tools were actually being used. We send only the skill or tool slug, the MCPB version, and an opaque per-install ID. Never your prompts, your tool arguments, or your IP. There's a new install-time checkbox to opt out, and ORBIT_TELEMETRY=0 still works. A new orbit_probe_stripo_values tool empirically tests Stripo's `values` field against your live workspace — the gating step before we ship slot-aware overrides on orbit_compose_stripo_email. And the slop detector now catches the 'There's a specific kind of [feeling] that comes from…' viral opener template.
8 May 2026
Production-test of orbit_compose_stripo_email on a multi-module welcome email surfaced four issues; this release fixes all of them. Multi-email briefs now build one at a time with an explicit gate between each. Push responses always make it back through Anthropic's 1 MB tool-result cap, so you can verify what landed instead of guessing. Copy and image overrides no longer silently disappear when push:true is set — the tool now refuses with a clear message rather than pushing the wrong content. And the master-template setup instructions now tell you to zero out the wrapping Structure's padding so pushed modules render flush with the canvas.
7 May 2026
When Orbit composed an email and showed the preview as a Claude artifact, all the placeholder images in your modules rendered as broken-image icons. Turns out Claude artifacts run inside an iframe with a strict CSP that blocks external img-src — Stripo's CDN was serving the images perfectly, the artifact just couldn't fetch them. Fix: orbit_sync_stripo_modules now downloads each module's images locally during sync, and orbit_compose_stripo_email inlines them as base64 data: URIs in the preview HTML. The preview now matches what the actual email looks like in your inbox. Images you push to Stripo still use the original CDN URLs (data: URIs never leave Orbit) — Stripo composes server-side from its own copy of the module HTML.
7 May 2026
Awkward operational story worth being honest about: the four versions shipped today (0.18.7 Stripo native integration, 0.18.8 Braze fix, 0.18.9 Stripo audit/fix tools, 0.18.10 MCP server lifecycle fix) were all committed and pushed to GitHub, but none of them actually reached the .mcpb download because the CI build job had been failing since 27 April on a transitive-dependency audit gate. Discovered the failure when the website kept showing v0.18.5 despite 4 successful-looking pushes. 0.18.11 fixes the underlying CI break by bumping mjml to v5 (which removes the dead html-minifier dependency), and bundles every feature from those four prior versions into one deploy that actually lands.
7 May 2026
Until this release the Orbit MCP server didn't watch for the signals that mean 'your parent's gone, stop running.' The result was zombie server/index.js processes accumulating in the background after Claude Desktop quit — each burning 50–80% CPU, sitting around for days. Reliability fix: every shutdown signal now funnels into a single idempotent exit path, including a parent-alive watchdog for the rare case where stdio events don't fire. Routine fix; you'll notice it as 'Activity Monitor stops filling up with old Orbit processes.'
7 May 2026
The Stripo integration's push half is now live — orbit_compose_stripo_email with push:true creates a real email in your Stripo workspace from your synced module library, every time. Two new tools land alongside it: orbit_audit_stripo_modules catches a class of structural issues that emerge when you reuse modules across contexts (the lopsided-block bug being the most visible one), and orbit_fix_stripo_module returns the corrected HTML for paste-back into Stripo's module editor. Stripo's REST API is read-only for modules, so the fix is necessarily manual — but the audit catches everything programmatically, including a surprise gotcha around how Stripo's API references modules.
7 May 2026
The 0.18.6 changelog two days ago promised a fix for orbit_braze_performance reporting zeros on scheduled-blast canvases. Turns out the manifest version bumped but the underlying code never made it into the published .mcpb — so anyone who downloaded 0.18.6 (or 0.18.7 yesterday) still got the old broken behaviour. The actual code now ships in 0.18.8. If you saw the entry, downloaded the update, and noticed nothing changed: that's why. Sorry.
7 May 2026
Orbit now talks to Stripo's REST API. Connect once, and Orbit pulls every custom module you've saved, documents your modular design system as a markdown brief, and lets you compose on-brand emails from a sequence of modules — with an HTML preview rendered inline in Claude before you push the result back to your Stripo workspace as an editable email. The paste-driven Stripo flow still works; this is the API-driven sibling for users who want a tighter loop.
5 May 2026
orbit_braze_performance was returning zeros for canvases that use a scheduled audience instead of an action-based trigger — even when the canvas had clearly sent. The headline metric now rolls up sent / delivered / opens / clicks / unsubscribes / bounces directly from the Braze step rollup, so a 582-send blast reads as 582, not 0. When a canvas has message steps but the API gives back nothing, you'll see a warning instead of a silent zero.
30 April 2026
Two macOS app updates landed today. Orbit Dictation has been renamed Comet — same app, same shortcut, same menu-bar behaviour, on-theme name. Orion picked up a refreshed app icon (the Orbit planet plus AI sparkles), and the unsigned-app footer in install instructions was rewritten so it no longer claims Orion is 'the founder of Orbit' (he's the dock assistant, not the founder).
28 April 2026
The page that creates your free Orbit account moved from /download to /sign-up. Same form, same flow — the URL was misleading because the page is primarily account creation (which then unlocks the MCP server download, your tool history, course progress, and LinkedIn certifications), not a direct file download.
28 April 2026
Orbit (the .mcpb extension and every web tool) is now free for everyone. No flat fee, no purchase, no gate. Donations return as a separate, optional pay-what-you-want surface at /support — decoupled from getting Orbit.
28 April 2026
Orbit moves from pay-what-it's-worth to a single flat fee. $9.99 USD, one-time. Every future Orbit release is included on the same payment — no subscription, no upgrade tier. The free path stays exactly where it was for anyone who can't pay.
27 April 2026
Each row of the warm-up schedule now has a click-to-copy chip with a ready-made segment name like 'IP Warming Day 1 - RBN 0-90'. Build the schedule, copy the segment name for the day you're configuring, and paste straight into your ESP — no manual concatenation.
27 April 2026
Added a Year option to the date/time formats in the Liquid Syntax Generator. Outputs just the four-digit year (%Y) — useful for footer copyright notices, anniversary messaging, and 'Year in review' content where the rest of the date is noise.
27 April 2026
Claude Desktop was falling back to a generic 'O' placeholder instead of the Orbit logo because the bundled icons were 1024×1024 — larger than Claude Desktop's icon size cap. Resized to 512×512 (the size every working extension on the platform ships) and the logo renders correctly again.
27 April 2026
The Claim button now lives inline on the badges page itself. One click to issue the cert, watch the confetti, and the card flips to Earned in place — no more navigating to the course page just to hit Claim. The course-page Claim button also fires confetti now for consistency.
27 April 2026
If you claimed a course completion badge but came back to find the course had reverted to 'Ready to claim', the claim was succeeding in the UI but silently failing to save server-side under specific account conditions. Fixed: every claim now persists, every revisit shows your earned badges. Same fix also applied to quiz-pass and reading-progress saves so they can't fail silently either.
27 April 2026
Signed-in users now see a Recent names list under the Namer output. Save-on-copy persists the name plus the dimension selections, so a click on any history row repopulates the form for further editing. Up to 10 entries, oldest dropped first.
27 April 2026
Braze rebranded its generative AI layer from Sage AI to BrazeAI. Every reference inside the AI personalisation course (4 guides, course description, quiz pool) and the AI personalisation skill in the Orbit MCPB now uses the new name, with a 'formerly Sage AI' disambiguator on first mention so readers searching with either name still find the content.
26 April 2026
Seven-guide course on AI personalisation now ships as MCP resources, so Claude can cite each guide inline when AI personalisation comes up in conversation. Grounded in BrazeAI / Predictive Suite / Connected Content / Catalogs but speaks broadly across ESPs.
24 April 2026
Expanded the trigger surface so Orbit responds to every major lifecycle, deliverability, experimentation, compliance, and platform concept inside Claude — plus an explicit 'don't activate' list to prevent false positives outside the marketing domain.
24 April 2026
The fallback extension icon now has a transparent background, matching the light/dark theme variants already in the manifest. Cosmetic consistency fix — no functional change.
24 April 2026
A behavioural rewrite of Orbit's routing contract. Claude now walks users through getting the right inputs before tools run, cites the practitioner guides that informed each answer, and refers to the senior-operator layer as Orbit Intelligence when framing judgment or recommendations.
24 April 2026
Big polish + capability release. Six critical / major audit findings fixed (Stripo parser, contrast walker, SPF counter, replenishment ordering, dark-mode accuracy, exec-report escaping). Six new tools for pre-send QA, rendering, Postmaster parsing, list growth, GDPR audit, and A/B test readouts.
23 April 2026
Thirteen new tools + five new skills. DNS-level email auth checks, WCAG email lint, RFM scoring, cohort retention, preheader scoring, Liquid validation, SMS composer, free-shipping / replenishment / exec-report calculators — plus emergency and planning skills.
23 April 2026
Three new tools for persistent-memory email template workflows. Paste your existing HTML once, Orbit remembers its modules and brand tokens, and every future email gets built from the same modular system.
23 April 2026
Orbit now ships the full 9-course curriculum as MCP resources, so Claude can recommend the right course URL when a user's question has real training depth. orbit.md updated so Claude answers first and only surfaces a course when it materially expands on the answer.
22 April 2026
Downloads are now portal-only. The .mcpb moved off the public GitHub mirror to a private Railway-backed bucket. Unauthenticated requests to the download endpoint are redirected to sign in or create a free account.
22 April 2026
If you restart Claude Desktop between pausing a job and continuing it, Orbit now tells you so — plainly. Previously both "an hour passed" and "you restarted" surfaced as the same generic "expired" error.
22 April 2026
When an Orbit workspace audit pauses and resumes, the final result now carries the original call's timestamp — not the resume moment. A cosmetic fix that closes the last parity gap between uninterrupted and resumed runs.
22 April 2026
Braze performance pulls are fast again — 0.13.0 accidentally serialised per-ID fetches to enable resume, which slowed down the common case. Now processes 5 IDs in parallel with checkpoints between batches.
22 April 2026
Big Braze audits and performance pulls that previously hit the context limit now pause cleanly and offer to continue — no re-running, no lost work. Claude picks up exactly where it stopped when you say go.
22 April 2026
Tighter time budgets and response caps so tool calls land inside Claude Desktop's window — and when a tool does run out of time, Claude now offers you a Continue instead of breaking the conversation.
17 April 2026
Per-tool deadlines, response size caps, retry + circuit breakers, attribution signatures, artifact chrome, and the new orbit_check_version tool.
17 April 2026
20 audit findings resolved, full Braze region support, 58-test foolproof e2e test package, and a shared error classifier across all 54 tools.
16 April 2026
Standalone browser-based tools for Braze naming, email size checks, Liquid syntax, push previews, significance testing, IP warm-up, and percentage change.
16 April 2026
Full workspace-awareness for Braze: instance audit, canvas reader, performance data, segment analysis, template collision detection, and more.
7 April 2026
MJML templates, HTML compilation, cross-device previews, Figma import, brand kit intake, and Braze sync — the full email production loop.
31 March 2026
Initial release: Claude Desktop MCP extension with 50+ lifecycle marketing skills, program discovery, message planning, and lifecycle diagrams.