Product Updates

What's new in OnDeck

Everything we've shipped recently, what's being built right now, and what's next.

In progress & roadmap

Roadmap last updated May 31, 2026.

Cost & usage dashboards In progress

Per-organization visibility into seat, API, email, and storage usage, with nightly snapshots so spend is never a surprise.

WhenToWork / Sling roster sync In progress

Pull today's staffing straight from your scheduling tool so certification and training views know who's actually on deck. Configuration, storage, and the nightly sync are live; the vendor connection turns on per customer.

AI incident summaries Planned

Auto-draft a plain-language summary for each incident report so directors can triage their queue faster. Held until a zero-data-retention review is complete before any real incident data is processed.

Phone-friendly record tables Planned

Turn the highest-traffic tables — submission history, certification overview, staff directory — into clean card layouts on phones so there's no sideways swiping.

Native iOS & iPadOS app Planned

A dedicated app for poolside logging, daily checklists, and director flags — starting with the chemistry kiosk flow.

Recently shipped

Customer-facing changes. Internal refactors and dependency bumps are omitted.

May 14, 2026 — Phase 6 sweep

Added
  • White-label logo upload. Admins can now upload a PNG, SVG, or JPEG (up to 500 KB) under Settings → Branding. The uploaded logo replaces the OnDeck wordmark in the sidebar for every user in the org. Replace and Remove actions; SVG uploads are scanned for scriptable content before saving.
  • Live QR code on the Safety Concern poster. No more pasting in an externally-generated QR — the poster renders the QR client-side from your branch's report URL. Uses high error correction so a poster taped above a chlorine drum still scans cleanly.
  • Insurance renewal binder. Same one-click export pattern as the MAHC binder, but defaulted to 12 months and reorganized for an insurer audience: incident summary on top, guard credentialing rollup, lifeguard:patron ratio history sampled from chemistry bather-load entries. Find it under Compliance & Reports → Insurance Renewal Binder.
  • Slack / Teams flag alerts. Cross-post director flags to a Slack or Teams channel via the customer's own incoming webhook. Settings → Integrations to wire it up. Includes a "send test message" button so you can verify the webhook before waiting for a real flag. Both vendors are free to use; OnDeck doesn't charge extra.
  • WhenToWork / Sling roster integration (scaffold). Configuration UI, nightly cron, storage, and read endpoints are all in place. The actual vendor API calls are stubbed and will go live once a customer is ready to test against a real account.

May 14, 2026 — Phase 5 sweep + Phase 3 closeout

Added
  • Pending-invite banner on the Dashboard. If you were invited to an organization but the auto-accept couldn't process it (your email isn't verified yet, or the invite is missing its staff-ID marker and needs an admin to reissue), the dashboard now tells you about it. Click "Accept invitation" to retry, or "Not now" to dismiss for the session.
  • Bulk archive / resolve / reopen for Contact Submissions in the platform-admin inbox. Select submissions with the new checkbox column (or use the select-all in the header), then use the floating action bar to transition all of them in one call. Archive / Resolve are always available; Reopen appears when viewing archived or resolved submissions. Capped at 200 per call.
Changed
  • Audit log explorer in platform admin now supports filtering by admin email (substring search), target ID, and time range, plus Prev/Next pagination with a total-count badge. Clicking a target ID in the table pivots the filter to "show me everything that touched this target." Page size is 50.
  • CertTracker and Director Flag history now paginate at 25 per page. CertTracker also resets to page 1 when filters change, and CSV exports still see the entire filtered set — only the rendered cards are clipped to a page.
  • CSV cert imports now parse off the main thread. Large certificate_details_full.csv files (5000+ rows) used to freeze the tab for several seconds during the parse; the tab stays fully responsive now while a small "Parsing CSV in the background…" banner shows progress.

April 27, 2026

Added
  • F1 — Public status page at status.ondeckaquatics.com. Live system state for API, Tenant App, Admin App, Auth, Database, Email, Storage, and Marketing components, plus 30-day uptime % and the last 30 days of incidents and scheduled maintenance.
  • F2 — Self-service trial signup. Visit app.ondeckaquatics.com/signup to start a 45-day free trial with no credit card required. Magic-link sign-in, then a one-screen org-creation form that drops you into the 6-step onboarding wizard.
  • F3 — Compliance gap email digests. Director+ users can subscribe in Settings → Email Digests to a daily/weekly/monthly recap of expired certs, expiring certs, unacknowledged flags, and recent out-of-range chemistry. Customizable thresholds and a built-in preview button.
  • F4 — Mobile-first chemistry kiosk at /kiosk/chemistry. Full-bleed pool-deck UI for a phone clamped to the wall — pick pool, log reading, done in three taps. Auto-rotates back to input after 30s.
  • F5 — Offline submission queue. Forms submitted while offline are saved locally and auto-sent when the connection comes back. Banner surfaces queued submissions with a manual retry button.
  • F6 — Anonymous safety reporting at /report-concern/<your-org-slug>. Public submission form for staff to flag near-misses, equipment issues, or workplace concerns with optional name and optional email. Director+ triage panel under Compliance & Reports.
  • F7 — Cross-facility anonymous benchmarking. Opted-in orgs see peer percentiles on the dashboard for chemistry means and flag acknowledgement times. Two-tier opt-in (org + branch) with a k-anonymity floor of 5 contributing branches per metric.
  • F8 — Auto-suggested corrective action. When a chemistry reading goes out of MAHC range, the "Corrective Action Taken" textarea pre-fills with the standard MAHC-aligned response. Editable — the playbook is a starting point, not a fill-in form.
  • F9 — Chemistry trend anomaly detection. Nightly background scan flags slow drifts (a slowly creeping combined chlorine, declining stabilizer) before they cross a hard threshold. Pure stats — every flag carries the z-score and slope numbers so an inspector asking "why did you flag this?" gets a concrete answer.
Added
  • Lifeguard "My Day" widget on the dashboard with three tiles: today's chemistry status (4-hour MAHC §5.7.3.1.1 cadence), training hours this month, and submissions filed in the last 7 days.
  • MAHC compliance binder export under Compliance & Reports → Compliance Binder. One date range, one button, one print-ready PDF covering chemistry logs, lifeguard observations, every checklist submission, certifications, and active staff.
  • Printable safety-concern poster at /poster/safety-concern for printing the F6 submission link as a break-room poster.
  • Per-org branding. Settings → Branding lets admins override the default OnDeck navy + aqua palette with primary and accent hex colors.
  • 30-day uptime stat on the status page.
  • Platform-admin Status tab (admin app only) — post incidents, flip component state, and append updates from a form instead of curl.
Changed
  • /signin-v2/signin. Old URL still works.
  • App-wide mobile-friendliness pass: outer padding shrinks on phones, multi-column input grids reflow to a single column, in-app tables gain horizontal scroll wrappers.
  • Kiosk auto-pins to the configured branch on single-branch orgs; shows a one-time picker on multi-branch orgs.
  • App Configuration: branches, pools, pool volumes, chemicals, and controllers now persist server-side and sync across devices.
Fixed
  • Stopwatch DRT timing no longer flips a 9.95s pass into a 10.0s fail.
  • Dashboard overdue thresholds now read from compliance config instead of being hardcoded.
  • ManagerView bulk PDF export caps at 25 to avoid filling the user's filesystem with a flood of separate downloads.
  • Org-purge confirmation accepts NBSP-pasted org names (was strict- equality silent-fail).
  • Onboarding strips the invite-token URL parameter before redeem so a hung redeem doesn't leave the token replayable in browser history.
  • Admin "delete all staff" replaces window.prompt with a proper modal that doesn't block the page.
Security
  • Discount-code regex anchored explicitly (HTML5 pattern is implicitly anchored, but the ^…$ makes the intent obvious and matches the server-side regex).
  • Stripe customer + subscription IDs in the admin dashboard now render masked by default with a "reveal" button.
  • Crash + unhandled-error monitoring posts to a Worker route for observability (vendor-neutral; swap for Sentry if/when adopted).
  • Per-IP rate limits on invitation create/redeem and self-serve signup endpoints.
  • Tenant-side audit-attribution helper (getImpersonatingAdminUserId) available so every audit emitter can record the real admin during impersonation instead of the sentinel user.

Have a request or found a bug?

We build OnDeck around what aquatics teams actually need. Tell us what would help, or flag anything that's broken.