Close-up halftone graphic of a hand using a green divot tool to repair a pitch mark on a golf green.

Birdie Release Notes 3.1.8

Today’s update (v3.1.8) This release focused on cleaning up the Bag UX, improving in-round shot logging quality, making the Training Center actually usable on mobile, and introducing safer versioned app loading so the system doesn't crash when you're trying to log a blow-up hole.


Birdie Lab Release Notes

May 19, 2026 (v3.1.8)

Today’s release focused on Bag UX, in-round shot logging quality, Training Center usability on mobile, and safer versioned app loading. There is a file you can reference named Release Notes.md for the underlying technical documentation. For general platform capabilities, refer to APP_FEATURES_OUTLINE.md, APP_MARKETING_OVERVIEW.md, and APP_BENEFITS_MARKETING.md.

What’s New

1) Bag Experience Refresh

We restructured the Bag and Club Analytics layout to provide a clearer flow for data analysis:

  • Time-Period Filtering: Added a top filter bar to toggle club data between All Time, Last 80, Last 20, and Last 5 rounds.

  • Performance Summary: Consolidated Shot Performance summaries, charts, Tee Shot Reliability panels, and the club gapping table into a single view.

  • Quick Actions: Replaced the older in-panel shot form with a streamlined block for + Record a Shot, Manage Bag, and Import Shots (CSV).

  • Data Import: Added a dedicated trigger button for Import Shots (CSV) that links directly to the file picker.

  • Rendering Fixes: Removed dependencies on outdated DOM elements to improve layout reliability.

  • Chart Fallbacks: Updated analytics behaviors so empty date windows automatically fall back to all-time data rather than rendering empty charts.

2) In-Round Shot Logging Improvements

Updates to the round-logging interface make manual entry faster and more accurate on the course:

  • Simplified Row Controls: Cleaned up the "Add Shot" button and removed the fixed max-height scroll container on active shot rows.

  • Numeric Labels: Changed hole and shot dropdown markers from prefixed codes (H1, S1) to plain numeric values (1, 2).

  • Smart Defaults: New shot rows can now start with a blank club selector and automatically inherit the hole value from the preceding row.

  • Validation Guardrails: The app now requires both a club and a shot number for any populated row. Invalid fields are highlighted, and submission is blocked with user feedback until resolved.

3) Training Center UX Upgrades

The interface for tracking practice and working to improve your swing has been optimized for mobile layouts:

  • Mobile Tab Toggles: Added dedicated mobile states with Active and Queue view toggles.

  • Panel Redirection: Navigating segments, loading sessions, or creating a session now automatically returns users to the Active panel.

  • Timer Behavior: Segment jumps now stop auto-running timers, allowing users to start timing explicitly when they are ready.

  • Layout Adjustments: Compacted yardage cards into a responsive grid and moved Focus Directives into an inline panel within the active view.

  • Session Toolbar: Renamed the section framing to Saved Sessions, added a permanent Save Active button, and replaced the collapsible switcher with a direct card grid.

  • Progress Tracking: Introduced a background fill treatment tied directly to elapsed session progress.

4) App Version Bootstrapping and Cache Control

We updated backend asset delivery to improve core stability and cache control:

  • Runtime Bootstrapping: Replaced the static script include (app.js?v=...) with a system that fetches version.json at startup.

  • Dynamic Imports: The application now dynamically imports app.js using a version query parameter, with a safe fallback to unversioned code if the bootstrap fails.

  • Version Bump: Advanced the application version from 3.1.4 to 3.1.7.

Technical Notes

  • Exported setTrainingMobileTab directly to window for mobile UI toggle bindings.

  • Retained the toggleTrainingFullscreen exposition for ongoing Training control management.

  • Updated layout event bindings for the Bag import button to ensure reliable handler attachment.