Release Notes — Jun 10–11, 2026
Incremental update for testers reviewing staging (
https://stg-rcme.membervu.com). Covers issues closed in membervu/membervu-pm after the Jun 4–10 note was published (afternoon 2026-06-10 through 2026-06-11) — the event-questions, member-directory, and notifications work, the email-preferences fix, and (added later 2026-06-11) the per-tenant domain / URL overhaul (#236 / #237). Grouped by module, with a "What to verify" hint. Verified against dev on 2026-06-11.
Branch reality (still true on 2026-06-11): stage builds from
dev. The accounting/retention items below remain ⛔ not on stage. Local-dev-only and devops/CI issues closed this window (#200 local http CSP, #39 / #86 / #176 / #197 deploy/CI) are not tester-facing on stage and are omitted here.
♻️ Superseded 2026-06-15: the "not on stage" box below was accurate at the time. The accounting items have since landed on stage via the Jun 15 release (!136 / accounting milestone) — #152 / #153 / #158 / #178 / #213 are now testable, #151 is fixed, and treasury loads for all roles (#262). Use the Jun 15 note for current scope.
⛔ Still NOT on stage — DO NOT test (on
mile/accounting / feature branches, not dev) — see superseded note above:
- #148 Treasury dashboard RBAC fix (
FINANCE:VIEW:treasurystill unseeded on dev →/admin/treasurystill 403 for all roles) - #151 Admin reactivate resetting
membershipExpiresAt(still only sets status=ACTIVE on dev → member re-expires on next renewal run) - #152 Invoice discount · #153 / #158 Late-fee engine
ebe3b822) are not ancestors of dev. Verify the current dev behaviour and report if you see otherwise.
🎟 Events — registration questions & notifications
✨ Enhancements
| # | Change | Feature | What to verify on stage |
|---|---|---|---|
| #212 | Per-event configurable registration fields (reuses the #185 field palette; applies to both guests and members). | Events admin · Registration form | As admin, edit an event → registration fields; toggle/configure fields; open the public registration form for that event and confirm it reflects the per-event configuration (and differs from another event configured differently). |
| #225 | Per-event authored custom questions on the registration form (extends #185/#212 — free-authored questions, not just the standard palette). | Events admin · Registration form | Author a custom question on one event; register for that event (as guest and as member) and confirm the custom question appears and the answer is captured. |
| #234 | Admin/coordinator per-registrant view of event answers on the Attendees tab. | Events admin · Attendees | Open an event with answered custom questions → Attendees tab → a registrant; their submitted answers are visible to the coordinator/admin. |
| #230 / #233 | Event-registration notifications — admins/hosts get an email + in-app bell on a new event registration (role-based recipients incl. MEMBERSHIP_MANAGER; registrant excluded). | Events · Notifications | First enable Settings → Notifications → event-registration master switch (eventRegNotifEnabled, default OFF as of #244). Then register for an event; the event host/admin receives a registration email + bell notification (registrant excluded). No switch = no notification (expected). |
🐛 Bug Fixes
| # | Fix | Feature | What to verify on stage |
|---|---|---|---|
| #232 | Authored event questions were not surfaced to members — the member registration endpoint filtered them out (so members never saw custom questions guests did). Fixed. | Events · Registration (member path) | As a logged-in member, register for an event that has authored custom questions; the questions now appear (previously hidden for members only). |
🌐 Tenant Domains & URLs (#236 / #237)
Cross-cutting fix landed later on 2026-06-11 (MRs !107/!108/!109). App-generated links no longer use a single hardcoded FRONTEND_URL — they now resolve to the per-tenant domain via buildTenantOrigin (priority: Tenant.appDomain → validated request host → FRONTEND_URL fallback). On staging this means links should point at stg-rcme.membervu.com, matching what this guide already assumes.
🐛 Bug Fixes
| # | Fix | Feature | What to verify on stage |
|---|---|---|---|
| #236 | Event / share / Open-Graph URLs were hardcoded to a static FRONTEND_URL+path; now derived from the tenant domain (request host / Tenant.appDomain). Adds Tenant.appDomain as the universal per-tenant host source-of-truth + appDomain-first buildTenantOrigin. | Events · Sharing / link previews | Share an event from the stg-rcme tenant; the share/OG link and og:url use stg-rcme.membervu.com (the tenant's host), not a generic/other host. Preview still renders the event's own banner/title (regression check vs last week's #170/#179). |
| #237 | Tenant-facing email/action URLs were hardcoded — magic-link, account activation, and invoice links now use the appDomain-aware buildTenantOrigin (adopts #236). | Auth · Email links / Billing | Trigger a magic-link login, an activation/"set up password" email, and open an invoice link — all on the stg-rcme tenant. Each URL host is stg-rcme.membervu.com (the tenant domain), and the link lands on the correct tenant (no cross-tenant or generic-host bounce). Check the email body in stg-webmail.membervu.com. |
👥 Membership & Directory
🐛 Bug Fixes
| # | Fix | Feature | What to verify on stage |
|---|---|---|---|
| #215 | Profile form saved an invalid phone number (no validation) — TC-PROF-04. Validation added (validatePhone in the account Profile tab). | Profile · My Account | My Account → Profile; enter an invalid phone → save is blocked with a validation message; a valid phone saves. (Pairs with #182 registration-phone fix from last week.) |
| #216 | Member Directory did not display Membership Type — TC-DIR-01. | Directory | Open the member Directory; each member row/card shows its Membership Type (Regular / Associate / Student). |
| #219 | Member Directory had no Membership Type filter — TC-DIR-03. | Directory · Filtering | In the Directory, a Membership Type filter is present; filtering by a type narrows the list correctly. |
✉️ Communications & Notifications
🐛 Bug Fixes
| # | Fix | Feature | What to verify on stage |
|---|---|---|---|
| #226 | Email/notification preferences UI is now reachable. Previously an orphan page mounted on no route; now the Notifications tab at /account/notifications (My Account → Notifications). | My Account · Notifications | Log in as a member → My Account → Notifications tab loads with preference toggles. ⚠️ Known issue to flag: only Payment Reminders and Event Reminders map to backend fields; Membership Alerts / Newsletter / Marketing Emails use FE-only field names — toggle all 5, save, reload, and report any that don't persist. (See Communications index §6.) |
| #231 | Email preferences returned 403 for every member (GET/PUT /api/email-preferences read the wrong memberId source). Fixed (user?.memberId) — unblocks #226. | API · Email preferences | As a member, the Notifications tab loads preferences (no 403) and a save returns 200. |
| #217 | In-app notifications for new member sign-ups (bell/badge) — follow-up to last week's #186 email+widget. | Admin · Notifications bell | First enable Settings → Notifications → sign-up master switch (signupNotifEnabled, default OFF as of #243). Then trigger a sign-up; an admin sees a bell/badge in-app notification + the email. No switch = nothing (expected). |
🎨 UI & Responsive
🐛 Bug Fixes
| # | Fix | Feature | What to verify on stage |
|---|---|---|---|
| #214 | Sidebar collapse icon didn't render properly on mobile. | Navigation · Mobile | On a narrow/mobile viewport, the sidebar collapse/expand icon renders correctly and toggles the sidebar. |
| #218 | Home → Club News content overflowed the screen (responsive). | Home · Club News | On the member Home, the Club News block stays within the viewport (no horizontal overflow) on small screens. |
Source of truth: the membervu/membervu-pm issue tracker. Stage builds from the dev branch — dev-presence of each fix verified on 2026-06-11. Accounting/retention items (#148, #151, #152, #153, #158) remain on mile/accounting and are excluded from "what to verify on stage."