The short version
3.1 patch. I got bored soooooo here we go... You can now submit meets without an account, staff can review everything in a proper moderation queue, and native iOS submitters get push updates when their request is approved or rejected.
This release also includes a focused polish pass on admin/mobile UI and menu structure so common actions are easier to find.
Headlines
- Public submit flow is live. New
/submitpage with a simple, fast form for title, venue, notes, social proof link, optional schedule, and follow-up contact. - Anonymous moderation queue for staff. New admin requests screen to review, approve, reject, or mark spam.
- Native status notifications for submitters. If a request came from native iOS, status changes can send a push with deep links back into the app.
- Submission abuse controls. Rate limiting, honeypot protection, and a feature-flag kill switch to pause submissions instantly.
- Menu and mobile UX cleanup. “Submit a meet” is now easier to find in Menu, low-priority debug/version info moved lower, and redundant top-level clutter removed on mobile submit.
Public submit flow
New page + streamlined form
The new submit route is built for quick community entries:
- Required: Title, Venue, Social link / website, Name, Contact.
- Optional: Notes, Starts, Ends.
- Native-safe layout and spacing updates for smaller screens.
Date/time reliability
During rollout we saw rendering issues with platform date controls on some mobile builds. We switched the submit flow back to the older in-app picker pattern used elsewhere (calendar popover + time input) for consistency and stability.
Admin moderation queue
Staff now have a dedicated requests area under admin to:
- View pending/reviewed/spam requests.
- Inspect source link and follow-up details quickly.
- Approve into a real meet, reject with context, or mark spam.
The approval flow is wired into existing meet creation tooling so staff can move from request to published listing without copy/paste overhead.
Native push updates for submitters
When a native submitter includes an installation id, status changes can trigger:
- Approved push with deep link to the new meet detail.
- Rejected push with deep link back to submit context.
Push payload helpers and tests were added so message formatting and routing stay predictable.
Safety, controls, and backend changes
- New
meet_requestschema + migration. - New API router for create/list/status/approve operations.
- Feature flag support to disable submissions quickly (
FEATURE_MEET_REQUESTS). - Internal path allowlist updated to include submit-related deep links.
Menu and navigation polish
Menu was reorganized around actual usage:
- Quick actions surfaced first (including “Submit a meet”).
- Calendar stays easy to access.
- Version/debug block moved lower in the app section.
- Lower-priority links grouped under “More.”
On submit screens, unnecessary mobile chrome (like the top back link and extra reassurance chips) was removed to keep focus on completion.
Thanks
This release moved fast and was heavily feedback-driven, especially around mobile form behavior and menu clarity.