What we shipped to production, one entry per Test → Prod promotion, grouped by customer impact. This is the source for our monthly product-update emails — newest release on top.
Deploy path: master → test → prodLatest: #14184 · 22 Jun 2026Maintained by: Engineering
How to read this
Each release is one prod promotion. Within it, impact tiers: Headline new capabilities, Billing & payments revenue-affecting, Improvements fixes & polish, and Behind the scenes (no customer impact — usually trimmed from the customer email). PR links point to the GitHub change.
Where this fits — our goals
These releases ladder up to the themes the team is driving in the RakletV3 push (target 30 Jun 2026):
Member self-service & engagement — moving the product from admin-driven to member-driven activity (polls, member-created events, digital cards). The core community differentiator.
Monetization & conversion — embedded checkout, trial banners, upgrade-gate modals, and an accurate MRR dashboard so revenue is both grown and measured correctly.
Portal modernization — the Calm Community reskin and mobile chrome are the visible march toward a unified, mobile-first member portal, and the groundwork for the new Mobile project.
Trust & security hardening — closing real exposure (TLS bypass, webhook signature verification) ahead of scaling.
Velocity via the AI-implementer / human-gatekeeper model — the heavy CI/test/preview investment is what lets us ship multi-feature prod bundles this frequently while the team gates quality.
Release #14184 · 22 June 2026
Prod promotion #14184 (27 PRs). Dominated by the zero-error production hardening initiative (ENG-161), with a new member messaging flow, billing-safety guards, and a developer Action Log API.
🚀Headline — new customer-facing capabilities
WhatsApp-style new-chat modal with inline contact picker
#14155
Starting a conversation in the member portal is now a single, familiar flow: a new-chat modal with an inline, searchable contact picker — pick one or more members (chips show who is selected), then move straight to a compose step. No more leaving the inbox to find someone.
A new read-only, API-token-authenticated GET /app/actionlogs endpoint lets external systems reliably ingest an organisation action log — paginated and filterable by action key, member, or date range — for server-to-server integrations, without screen-scraping the admin.
💳Billing & payments
Deleting a referenced payment account is now blocked
#14067
A payment account that is still attached to an active membership plan or a scheduled payment can no longer be deleted — the delete is blocked with a clear message naming the plan to fix first. This stops later approvals and recurring charges from targeting a deleted sub-merchant.
Payments synced to QuickBooks now include a descriptive memo (event / donation / membership + Raklet ref + processor txn), the correct currency, and the customer phone — so accountants can reconcile in QBO without guesswork.
Guards a missing Stripe key on the Connect checkout webhook, repairs orphaned Stripe references in the MRR sync, and correctly handles imported subscription payment dates.
✨Improvements & fixes
Fundraising campaign create page is reachable again — the create route was being swallowed by the campaign-detail route #14177.
Branded loading spinner no longer 500s on Announcements / Directory / Members and other pages — compiled into the app instead of a missing partial view #14162.
Unsubscribe confirmation works even without the antiforgery cookie, so one-click email unsubscribes no longer fail #14125.
Reliability (zero-error initiative, ENG-161): surfaced — not swallowed — Elasticsearch index failures and stopped pointless retries #14123, propagated API-token save failures #14122, ENG-165 resilience fixes without silencing errors #14153, guarded null post-navigation items #14171, and downgraded an Intercom event-cap 422 to a warning #14130.
Browser-event secrets are now redacted from Sentry payloads #14149; the Zapier updated-contact dedupe id was fixed #14107; a PurgeDeletedJobPostings maintenance proc was added #14082.
Campaign create — reachable again
🛠️Behind the scenes no customer impact
Trimmed from the customer email — kept here for the team record.
Zero-error production tooling (ENG-161 / 163): post-prod-deploy Sentry net-new → Slack canary #14175, live per-suite browse-smoke results on the Test→Prod PR #14170, a consolidated durable "release test results" comment + runbook #14173#14174, and added browse-test migration coverage #14172.
CI / dev infra: warm the admin SPA + cut cold-start timeouts #14169, two-queue priority so releases do not starve behind feature CI #14163, skip Stripe app-form sub-org tests off the raklet-net profile #14167, disable the RakletDb model-compat initializer in SQL tests #14168, cut ~2.1k GitHub-hosted Actions minutes/mo #14166, an optimized build + deploy pipeline #14069, and moved the JS test job to the self-hosted runner #13800.
Release #14109 · 18 June 2026
Prod promotion #14109 (55 PRs). Headlined by the new fundraising campaigns experience in the admin SPA, Events V3 ticketing in the SPA, and a big mobile portal step. Plus a full observability overhaul behind the scenes.
Fundraising moves into the modern SPA: a create/edit campaign builder, a campaign cockpit with inline payment buttons, a campaigns list with live progress cards, surfacing of failed recurring donations/payments, and a redesigned member donation detail page. See the cockpit and builder wireframes.
Campaign cockpitCampaigns list — progress cardsMember donation detail
Event ticketing moves into the SPA: manual ticket registration and per-ticket payment details, with legacy MVC event/fundraising URLs now redirecting to their SPA routes so old links keep working.
The member portal keeps marching toward mobile-first: a reactive bottom bar with search recents + a notifications modal, content-scoped loading states, mobile chrome polish (search keyboard, close buttons, nav animation, notification prefetch), a payments Actions menu with QR-first tickets and donation cards on mobile, and 9 UI polish fixes from the demo.raklet.net review. See the mobile chrome spec.
Mobile home feedNavigation drawerFees & payments
💳Billing & payments
Failed recurring donations & payments surfaced in the SPA
#14037
Admins can now see failed recurring donations/payments directly in the new SPA, so dunning and follow-up don't depend on the old screens.
Mobile payments: Actions menu, QR-first tickets, donation cards
#14118
On mobile, payments get an Actions menu, event tickets lead with the QR code, and donations render as cards — making the on-the-go payment/ticket experience first-class.
✨Improvements & fixes
Apply form no longer leaks raw validation/debug text — empty required fields now show a clean localized message (RAK-349) #13949.
Deleting a tag no longer errors out (elastic NullReference fix, RAKLETV3-7) #14010.
Recurring event end-date stays correct across edits #14068; custom-role members can now reach the admin panel #14075.
Faster member load — fewer Cosmos round-trips on /v2/me#14121.
Stability: resolved several crash clusters and edge cases — NullReference clusters (ENG-171) #14124, unsubscribe null-ordering + 404 (ENG-172) #14150, invalid route ids #14126, and org-heartbeat concurrency #14138.
Apply form — clean validation (RAK-349)
🛠️Behind the scenes no customer impact
Trimmed from the customer email — kept here for the team record.
Observability overhaul (ENG-156/158/159/162/163/164/165): Sentry demoted to errors-only with logs/telemetry routed to App Insights #14113#14115, release markers #14106, a net-new-issue promotion gate #14119, CRM browser-JS SDK #14133, and telemetry re-leveling/guardrails #14114#14116#14117#14134.
CI / dev infra: warm-admin-spa build fix #14147, Linear status sync on PR ready / merge #14140, stage-aware promotion todo-gate #14152, orphaned-process cleanup at build start #14160, branch-preview config revert #14110, and added test coverage #13864#14137.
Prior prod promotions, to be expanded into full entries as the changelog backfills:
#14011 · 16 Jun — Mobile portal chrome + "Calm Community" reskin completion, configurable digital membership-card fields, and email reminders for recurring events.
#13992 · 11 Jun — Member-created events v1, embedded Stripe Checkout for events & donations, free-trial banners, admin-managed subscriptions, and security hardening (TLS-bypass removal, webhook signature verification).
#13972 · 10 Jun — Calm Community reskin (member pages), upgrade-trigger modals for gated features, dependency/security cleanup.