See what's changed since your last visit
Progress page redesigned — new 4-tab layout (Overview, Individual, Group, Matches) shows your stats broken down by activity type
Sport-specific ranking — your MPS score is now calculated per sport (USPSA, IDPA, IPSC, PCSL) and per activity type for more accurate classification
Hit Factor vs Time Plus — Progress page automatically shows the correct metric for each sport (HF for USPSA/IPSC/PCSL, Time Plus for IDPA)
Activity type leaderboards — compete separately in Individual training, Group sessions, and Match results
Sport selector persists across refresh — no more losing your selected sport when navigating or refreshing the page
Previous Updates
Ghost session fix — deleted group sessions no longer leave phantom entries in your progress stats or ranking history
Sync protocol hardened — orphaned sessions are blocked from re-syncing and can't resurrect after deletion
Save Scores reliability — scoring panel stays open after saving so you can continue editing without data loss
Ranking accuracy — session counts and stats now reflect only valid, active group sessions
Group session deletion cascade — removing a group session properly cleans up all participant data and recalculates affected rankings
Shooters Globe Timer now supported — SG Timer 2, Timer GO, and Timer Sport all connect via BLE and feed shot times directly into your training sessions
Multi-protocol BLE architecture — app auto-detects your timer brand (AMG Commander or SG Timer) and applies the correct protocol automatically
Real-time shot events — SG Timer shots appear instantly as they fire, no manual entry needed
Force Read now works with SG Timer — pull stored shot strings from your timer's saved sessions
Group Sessions scoring reliability — fixed cross-contamination where times could leak between participants when switching scorers
Fixed text readability in Range Mode — all labels, stats, descriptions, tips, and section headers now use dark colors on light backgrounds for full outdoor visibility
MultiParTimer fully range-mode aware — timer card, settings, par times, controls, and results all apply high-contrast theme
Expanded drill info (stats grid, setup instructions, skills, pro tips, video tutorials) all readable in bright sunlight
Separate persistence — Active Sessions and Group Sessions remember their own Range Mode preference independently
BLE timer panel, session header, progress bar, and drill navigator all apply range mode styling
Full-card Range Mode in Active Sessions — new Sun toggle applies high-contrast outdoor theme to the entire scoring card, not just zone buttons
Full-card Range Mode in Group Sessions — extended from zone-buttons-only to cover participant cards, drill headers, stats, penalties, and time inputs
High-contrast participant cards — open (amber), scored (green), and default (white) states with dark text for bright sunlight readability
Range Mode penalty buttons, power factor buttons, and Save/Skip buttons all get high-contrast outdoor-friendly colors
Stats grid (Points, Hit Factor, Penalties, Hits) uses bold dark text on light backgrounds in Range Mode for maximum outdoor visibility
Expandable drill cards in Group Sessions — tap any drill to see full details, setup instructions, skills, tips, and tutorial videos (parity with Plan Session)
Offline guest scoring — score guests even without internet; scores save locally and sync when connected
Offline guest entry — add new guest participants by name while fully offline, no server lookup needed
Offline drill plan editing — add or remove drills from group sessions while offline, changes queue for sync
Instant status changes — Start/Complete session updates UI immediately without waiting for server response
Fixed offline loading after force update — app shell cache is now preserved so the app loads instantly offline even after clearing caches
Static cache protection — Force Update, Clear Cache, and SW CLEAR_CACHES all preserve the app shell for reliable offline boot
Guest option now available on offline-created group sessions — Add Guest button and host controls are fully functional
Offline guest storage uses unique session IDs — guests added to different offline sessions are properly separated
Prevented double-reload during force update — controllerchange guard ensures clean single-reload sequence
Group Sessions now work fully offline — open, conduct, score, and manage sessions without internet or cell service
Session data cached locally — previously viewed sessions load instantly from cache when offline
Guest management offline — view and manage guest participants even without connectivity
Scores and status changes queue offline — automatically sync to server when connection returns
Offline-created sessions are now tappable — open and conduct sessions created while offline
Background Sync — settings and training data now sync to the server even if you close the app before the push completes
Last Synced indicator — Training Defaults section now shows real-time cloud sync status (saving, saved, failed)
All 25 stale test assertions fixed — full test suite now passes with zero failures (7,813 tests)
Training Defaults now persist reliably — Save Preferences immediately syncs to server instead of relying on debounce timer
Sync merge logic improved — local settings changes are preserved when they haven’t been pushed yet, preventing server overwrite
Faster offline loading — app shell loads instantly from cache instead of retrying network 3 times
More API responses cached for offline use — settings, training, profile, and subscription data now available offline
Progress tour — 6-step guided walkthrough covering overview tabs, stats grid, sport filter, charts, export, and skills breakdown
Calendar tour — 6-step tour showing add match, view toggle, calendar grid, upcoming matches, match cards, and past events
Record tour — 5-step walkthrough covering mode toggle, BLE status, mode descriptions, capture controls, and saved videos
Match Results tour — 6-step tour showing import, add result, tabs, quick stats, result cards, and comparison view
21 new help tooltips — contextual "?" icons added to Progress, Calendar, Record, and Match Results pages
10 tours now available — complete interactive tutorial system covering every major page in the app
Group Sessions tour — 8-step guided walkthrough covering session creation, tabs, invites, drill plan modes, and participant limits
Drill Library tour — 6-step tour showing search, categories, difficulty filters, drill cards, select mode, and quick sessions
Settings tour — 8-step overview of profile, training defaults, firearms, notifications, cloud sync, appearance, billing, and help
15 new help tooltips — contextual "?" icons added to Group Sessions, Drill Library, and Settings pages
6 tours now available — all auto-trigger on first visit and can be replayed from Settings > Help & Tutorials
Dashboard guided tour — 12-step spotlight walkthrough covering stats, match countdown, Quick Start categories, recent sessions, and suggested drills
Dashboard help tooltips — 12 new "?" icons explaining every section and category on your home screen
Auto-triggers on first Dashboard visit — learn the app layout in under 60 seconds, then never see it again
Replay from Settings — restart the Dashboard tour anytime from Settings > Help & Tutorials
3 tours now available — Training Flow, Scoring Flow, and Dashboard Quick Start all accessible from Settings
Guided tutorials — step-by-step spotlight walkthroughs for Training and Scoring flows, auto-triggered on first visit
Help tooltips — tap the "?" icons next to any setting to learn what it does (Training Environment, Sport, Ammo Budget, and more)
Dismissible & non-intrusive — skip any tour with one tap or press Escape; it won't auto-trigger again
Replay anytime — restart any tutorial from Settings > Help & Tutorials, or reset all progress
Scoring flow covered — learn zone tapping, penalties, stage time, live score summary, and how to save scores
LE/MIL is now a selectable sport — choose it in Quick Session or Plan Session to train with all 21 tactical drills
Cleaner competition pools — LE/Mil drills no longer appear in USPSA, IDPA, IPSC, or PCSL sessions; each sport gets only its own drills
LE/MIL scoring zones — Center Mass (5), Scoring Zone (3), Peripheral (1), and Miss (0) for realistic tactical scoring
Hunting & LE/Mil drill categories added to Group Sessions manual drill browser for easy browsing
LE/MIL firearm support — pistol, rifle, shotgun, and PCC all available for tactical training sessions
Dry Fire sessions — select Dry Fire as your training environment and generate a time-based session plan from 32 dedicated dry fire drills
Smart drill filtering — dry fire sessions filter by sport, difficulty, and firearm type; only shows drills that match your selections
Context-aware empty states — clear messages explain why no drills are available and suggest how to adjust your settings
LE/MIL drill separation — tactical dry fire drills are excluded from standard competition sessions by default
Firearm type awareness — selecting Rifle/PCC for dry fire correctly shows that dry fire drills are currently available for Pistol only
Training Environment selector — choose Outdoor, Indoor, or Dry Fire before generating a session; drills auto-filter to match
Create Drills page — standalone custom drill builder for live-fire and dry-fire drills (Elite tier)
Drill search now debounced (250ms) with alphabetical A-Z default sort
Nearby Ranges: manual zip/city fallback when GPS is denied; retry button added
Sport-aware drill filtering — drill library auto-defaults to your preferred sport
Session deletion now uses tombstones to prevent deleted sessions from reappearing on sync
Scroll-to-top on every route change for consistent navigation
Instructor add-on marked Coming Soon — purchase gated until launch
G1 (K-Zone): documented as pending implementation — scored same as T-Zone (10pts), capped by maxPointsPerTarget; future version will add K to ScoringZone enum
G17 (B-Zone): CLOSED — codebase audit confirmed B-Zone was never implemented; USPSA no longer uses B-Zone targets; all "B" references are B Class
Section 5 updated to v3.1 with new Gap Resolution Log (Section 5.10); Sub-PoA Readiness Checklist updated to v4.3
Accidental code changes (K_ZONE enum addition) fully reverted — 0 TypeScript errors, clean codebase maintained
IDPA scoring behavioral audit — documented per-zone-tap entry vs cumulative PD counter, steel default-to-hit, auto-decimal time, and review screen patterns
IDPA penalty time values confirmed: Hit on Non-Threat +5s, Procedural +3s, Failure to Do Right +20s, Flagrant +10s, Finger PE +3s
Section 5 updated to v3.0 with new subsection 5.9 (8 IDPA behavioral findings); Section 2B updated to v2.0 with items 2.17-2.18
Sub-PoA Readiness Checklist updated to v4.2 with IDPA video audit reference
Points-based neutralization — targets neutralized when targetPoints >= maxPointsPerTarget, replacing hit-count-based logic
Universal formula: maxPointsPerTarget = hitsRequired × 5 — MD sets hitsRequired, system auto-calculates max points
Governance is informational only — AFFILIATE pre-fills from rulebook template, OUTLAW starts blank; MD always has full control over all fields
T-Zone simplified — just a 10-point zone capped by maxPointsPerTarget like all other zones; no special-case auto-neutralization
Updated 5 design documents: Per-Target Data Model v2.0, Section 12 v2.0, Section 14 v2.0, Section 5 v2.0, Section 11 v1.1
Sub-PoA Readiness Checklist v4.0 complete — all 159 items across 14 sections documented and verified
Score state machine specification — 8-state lifecycle (DRAFT through VOID/DQ/DNF) with role-based transition matrix
Match taxonomy and governance model — MD always has full control; affiliate labels are informational template pre-fills
Operator roles and permission matrix — 5-role hierarchy (MD/CRO/RO/SK/Competitor) with 20+ operation mappings
Formal stage contract type — StageContract and TargetSpec interfaces with 11 validation rules and 4-phase migration
Scoring engine audit — documented all zone values, calculation formulas, penalty codes, and confirmed architectural isolation
9 MD/RO workflow narratives — match creation through DQ/reshoot with acceptance criteria for each flow
Fixed sport name overflow in match cards and detail header — now uses compact abbreviations (USPSA, IDPA, PCSL) instead of full names
Fixed dropdown scroll lock on mobile/tablet — Radix Select no longer freezes page scrolling after closing
Per-target scoring data model design complete — schema proposal, migration path, and worked examples for USPSA/PCSL/IDPA ready for implementation
Expanded scoring workflow research — additional behavioral insights and edge cases documented for future scoring engine improvements
Fixed PWA opening in browser window on tablets (Amazon Fire, iPad, Android) — changed orientation to allow any rotation and added display_override for stronger standalone enforcement
Added mobile-web-app-capable meta tag for broader Chromium-based tablet browser support (Silk, Samsung Internet)
Stage diagram images now embedded in Match Book PDF — uploaded stage diagrams appear inline in the generated Match Book
Removed orphaned stage builder canvas code and dropped the stageDiagramElements database table (replaced by PDF upload in v6.14.0)
Stage diagram PDF upload — match directors can now upload PDF/image stage diagrams instead of using the canvas builder
No-shoot toggle — simplified from a numeric count to an on/off switch that gates the NS penalty button in scoring
Classification filter on public results — spectators can now filter the leaderboard by both division and classification
Renamed shouldAnonymizeUserId to shouldHideUserId for terminology consistency across the codebase
Removed all generic "Anonymous" and "Competitor" display name fallbacks — every public surface now shows your legal name or chosen nickname, with no third option
Backend comments updated to use "unauthenticated" instead of "anonymous" for clarity
Public results page — competitors and spectators can view scores, stage breakdowns, zone hits, and penalty/DQ details at /results/:matchId
Penalty summary in leaderboard — penalty counts and DQ codes with rule references shown inline on both MD and public leaderboards
Match Book PDF export — generate a downloadable PDF with cover page, stage diagrams, competitor lists, squad assignments, and scoring summary
Zone hit breakdowns — A/C/D/M/NS hit counts displayed in expanded stage views on public results
Structured penalty & DQ codes — sport-specific rulebook codes (USPSA, IDPA, IPSC, PCSL) with rule references in the scoring UI
Smart navigation — workflow progress bar now shows a "Continue" button that jumps to the first incomplete step
Amendment notifications — match directors receive in-app alerts when post-publication score corrections are recorded
Scoring mode tracking — each stage result now records the scoring mode used (Comstock, Virginia, etc.)
Publish readiness gate — blocks results publication until all stages are scored and every competitor has results
Amendment log — every post-publication score correction is tracked with old/new values and reason
Workflow progress bar — visual step tracker (Setup → Registration → Squads → Stages → Scoring → Review → Publish)
Unpublish & edit — retract published results, make corrections, and republish with full audit trail
Mentor messaging — send and receive messages within accepted mentor connections
Guardian mentor monitor — guardians can read all mentor conversations for their youth
Block & report buttons — available on all social surfaces including teams, sessions, mentors, and partners
Contact info redaction — youth accounts cannot see email addresses in member search
Community template ratings — upvote/downvote shared gear checklists so the best loadouts surface first
Team analytics caching — faster leaderboard loading for large teams with in-memory performance cache
Cost tracker PDF export — download a full cost report with summary, category breakdown, and recent entries
Community gear templates — browse and import gear checklists shared by other shooters
Ammo cost-per-round analysis — track cost per round by caliber with 12-month trend
Journal insights PDF export — download your training analytics as a shareable report
Competitor rebalance preview — see proposed squad moves before match day
Severe weather alerts — automatic notifications for upcoming matches when dangerous conditions are forecast
Cost tracker monthly trend chart — visualize your spending over the last 12 months with category breakdowns
Journal insights dashboard — rounds per month, session frequency, top ranges, session type distribution, and conditions-to-mood correlation
Template session builder — coaches can now pick specific drills when creating training templates for their team
Quick Start training plans — curated beginner, intermediate, and advanced programs ready to copy into your library
Instructor course drill picker — reusable drill selection dialog for building course syllabi
Range journal — log informal range visits with notes, mood, conditions, location, and round count
Cost tracker — track match fees, ammo, travel, gear, and training expenses with category breakdowns
Gear templates — save and share your competition loadout configurations
Teams tab added to the bottom navigation bar for quick access to your teams
Automatic maintenance reminders — get notified when your pistol or rifle/PCC is due for cleaning or service
Equipment and classification now visible on Match Director registration cards
Squad-move notifications — competitors are now notified when reassigned during squad rebalancing
Video thumbnails — saved videos now show a preview frame instead of a generic icon
Drill name on videos — recordings captured during a session now display the drill name
Unified rebalance algorithm — single source of truth shared between server and client, works offline too
Quick Record mode (default) — opens your device's native camera for 100% reliable video recording on all phones
Advanced Record mode — opt-in for in-browser camera with live BLE shot timer overlay during recording
Mode toggle remembers your preference — switch anytime between Quick and Advanced
Invite team members by searching their name or email — no more sharing codes
Team Leaderboard & Stats — see who's putting in the most reps with podium rankings
Team Training Templates — captains create reusable training plans and assign them to all members
Auto-expand squad slots on waitlist approval and one-tap squad rebalancing for Match Directors
Synergy Ledger — 19 cross-feature opportunities identified and tracked for future development
New Team Management add-on ($6.99/mo) — create teams, manage rosters with captain/coach/member roles, and list your team in the public directory
Team events with RSVP, announcements, real-time chat, and training assignments — everything your squad needs in one place
Team Finder — browse and request to join recruiting teams filtered by sport and region
"Lifetime Pro" is now "Lifetime Competitor" — same permanent access, clearer name aligned with the Competitor tier it unlocks
Match Director & Instructor are now standalone add-ons — purchase them on top of any plan, including Free
Existing Lifetime Pro purchases automatically recognized — no action needed on your part
Per-sport default division in Training Defaults — auto-selects your preferred division for session planning
"Don't show again" toggle — suppress the What's New popup; re-enable anytime from Settings
"View Full Changelog" link in About section — revisit past updates on demand
Reset to Defaults button in Training Defaults — one tap to restore factory settings
Classification display next to your selected sport — see your current rank at a glance
What's New dialog — stay informed about every update
Save Preferences button in Training Defaults with toast confirmation
All 8 sports now available in Training Defaults dropdown
About section corrected: 157 drills, 8 sports, accurate feature list
Full-page Compare Tiers view — side-by-side feature matrix across all tiers and add-ons
"Why Upgrade?" tooltips on locked features showing which tier unlocks them
Match Finder preview and Recreational Tools showcase on landing page