Snowball — Release Notes (5 July 2026)
A cumulative summary of what's changed since the beta launched.
Based on Your Feedback
- Update your email or phone number — Suggested by Ning! You can now change either on your profile. A new email is committed only after you verify it and the old address is notified. Changing your number now migrates your existing profile onto the new SIM — same account and history, with the old number kept until the new one is verified.
- iOS contact search results finally useable — Suggested by Amelia!. Resolved iOS contact search issues where results could disappear under the header or soft keyboard. Also fixed the iOS field editor getting hidden while composing your message.
- Better message composer — Suggested by Linda! The "Other…" custom-text field gained explicit confirm/cancel buttons and a placeholder, and the Share templates now offer the words they teased as placeholders (e.g. "Participate," "your help").
- Clearer settings — Suggested by Linda! Settings pages are titled and their empty-state links point straight to importing entries.
- Clearer verifications — Suggested by Bob! Verification-expiry times read in sensible units (e.g. "30 days," not "719 hours") and SMS/email verification message now remind not to share the code.
- Clearer unlock for Sharing — Suggested by Bob! It's now a little more
obvious why you need to "Swear I'll come right back to confirm" before the
Share in Messaging Appbutton is enabled.
Other Features & Improvements
- Listing managers contact card. Topics show their managers' email addresses so viewers can reach out — rendered with anti-scraping defenses and a deliberate Copy step, and hidden on by-invitation-only topics.
- Device Picker in Address Book. A device contact picker is available directly in the Address Book (previously only in the share flow), built on a shared, reusable component, with a short platform-specific how-to explainer.
- Share Updates. Change a topic you've already shared and notify just the people you previously messaged: a new flow shows what's changed, collects a short summary, and pre-fills recipients by privately matching your address book against your past recipients on your device. Recipients can reshare it onward.
- Topic change history. Each topic has a "Recent changes" subpage listing what you edited this session — name, type, date/time, description, and image swaps — as a chronological before/after diff.
- Consistent action bars. The Address Book Export/Import bar and every share wizard step now share one fixed footer dock with even spacing across devices, a keyboard-aware field editor, and clearer batch-share reminders.
Other Bug Fixes
- Blank wizard after reload. Reloading mid-wizard no longer leaves steps blank, and an abandoned, unverified phone/email edit no longer lingers on the summary.
- Private topics stay private. A guest hitting a by-invitation-only topic gets a proper "not found" instead of leaking its existence; a related crash was fixed. Reusing an email already on another profile now returns a clear message instead of a raw database error.
Under the Hood
- Declarative authorization model. Replaced bespoke permission checks with a single declarative Casbin priority/deny model (by-invitation access, manager-only sharing, beta-only topic creation), with a reversible migration.
- Batch recipient resolution. Collapsed per-contact hash lookups and the split "match then create" dance into batched get-or-create and hash-lookup endpoints, shared by the share wizard, send-time resync, and background sync.
- Frontend plumbing. Simplified UserContext to write-through persistence, gave the IDV confirm endpoint a typed response, and standardized naming ("ensure," "pending") across the profile/IDV flow.
- Dev & test tooling. Centralized per-environment tooling config in one
package, added a
pr-e2e-testskill and one-command PR status reporting, expanded E2E coverage (topic changes, Share Updates) with automatic test-user cleanup, and improved dev tunnels. Ongoing module refactors and a shared ASCII logo constant.