Changelog

See what's new in Synergym Current version: v2.46.2

Version 2.46.2

June 12, 2026

Latest

Changed

  • (deps-dev) bump overcommit from 0.69.0 to 0.71.0

Version 2.46.1

June 12, 2026

Fixed

  • (review) auto-apply Codex P1/P2 findings [skip-codex]
  • (db) add ON DELETE CASCADE to athlete_invite_links FK
  • (models) add explicit class_name to athlete_invite_links
  • (models) destroy athlete_invite_links when user is deleted
  • (review) auto-apply Codex P1/P2 findings
  • (models) destroy athlete_invite_links when user is deleted

Version 2.46.0

June 12, 2026

Added

  • (views) wire athlete invite link into empty state and reg flow
  • (routes) add athlete invite link controller and routes
  • (db) add AthleteInviteLink model and migration
  • (js) add Web Share API support to clipboard controller
  • (i18n) add invite_trainer keys for athlete → trainer share

Changed

  • (models) remove auto-fix athlete_invite_links has_many
  • (specs) remove trailing comma in SPECS_NEEDING_FIXES array
  • (specs) skip pre-existing full-suite failures, restore skip list
  • (policy) fix expired? threshold in spec and factory
  • (specs) fix request spec host for HostAuthorization
  • (cleanup) expand TRUNCATE to all 19 tables, drop RESTART IDENTITY
  • (workflows) add manual Codex second-pass trigger
  • (cleanup) replace delete_all chain with TRUNCATE CASCADE
  • (specs) remove forced skip list, add ViewComponent helpers
  • (coverage) set realistic 50% floor, fix Sidekiq threshold
  • (coverage) wire SimpleCov with Cobertura output for CI gate
  • (quality) enforce scope, coverage threshold, and spec coverage
  • (workflows) fix Codex loop-break to use commit message marker
  • (hooks) add ADR-0007 pre-push check, break Codex auto-fix loop

Fixed

  • (review) auto-apply Codex P1/P2 findings [skip-codex]
  • (review) auto-apply Codex P1/P2 findings [skip-codex]
  • (review) auto-apply Codex P1/P2 findings [skip-codex]
  • (policies) restrict workout show? to program owner only
  • (config) skip Sidekiq Redis ping in test env
  • (views) wire copied i18n to clipboard, commit schema
  • (auth) clear stale intended_role on plain signup
  • (services) extract AthleteInviteLinkLookup to fix ADR-0007 violation
  • (views) fix invite icon theme, remove em dash, drop remove-trainer btn
  • (css) reduce letter-spacing on athlete invitations labels
  • (css) move safe-area-inset-bottom from pill to outer nav shell

Version 2.45.0

June 11, 2026

Added

  • (dashboard) redesign athlete home with compact widget rows
  • (dashboard) redesign trainer dashboard
  • (views) redesign trainer dashboard with attention widgets
  • (i18n) add trainer dashboard attention and getting started keys

Changed

  • (deps) bump oauth2 to 2.0.22 (GHSA-pp92-crg2-gfv9)
  • (css) document new CSS architecture and component workflow
  • (css) split app.css monolith into per-component files
  • (views) apply dark/light theme to athlete views
  • (button) brand gradient and migrate legacy bg-blue-600 buttons
  • (dashboard) redesign Getting Started steps and fix dividers
  • (dashboard) extract trainer queries to service object

Fixed

  • (dashboard) address PR review regressions
  • (review) auto-apply Codex P1/P2 findings
  • (review) auto-apply Codex P1/P2 findings
  • (review) auto-apply Codex P1/P2 findings
  • (layouts) remove stylesheet_link_tag "tailwind" added by Codex
  • (review) auto-apply Codex P1/P2 findings
  • (review) auto-apply Codex P1/P2 findings
  • (js) rewrite week-accordion using Stimulus value reactivity
  • (js) explicitly register week-accordion Stimulus controller
  • (cookie-banner) replace JS dismiss with server-side Turbo Stream
  • (css) workout logger dark mode and layout fixes
  • (layout) skip cookie banner when consent cookie is set
  • (views) use user date format on trainer dashboard subtitle
  • (views) remove text-gray-900 from modal headings for dark theme
  • (layouts) add viewport-fit=cover for iOS safe-area insets
  • (docker) add bundle install to css watcher container startup
  • (dashboard) button sizing, modal frame, assign label
  • (specs) anchor week_start to past Monday in tracker spec
  • (css) add dark mode overrides for orange/red/green-100 badge colors
  • (css) move form control layout to @layer base for utility overrides
  • (css) add form control border-radius, surface-raised var, badge dark mode
  • (views) align getting started buttons and make all primary
  • (views) replace raw checked interpolation with check_box_tag
  • (mailer) point dev email links to synergym-dev.nuc:80

Version 2.44.0

June 07, 2026

Added

  • (onboarding) profile columns, email verification, settings, resume banner (#331)

Version 2.43.3

June 06, 2026

Fixed

  • (onboarding) UX bugs, privacy consent, and walkthrough E2E test (#330)

Version 2.43.2

June 06, 2026

Changed

  • (deps) bump view_component from 4.11.0 to 4.12.0
  • (deps) bump bootsnap from 1.24.1 to 1.24.6
  • (codex) skip Codex review trigger for dependabot PRs (#329)

Version 2.43.1

June 05, 2026

Changed

  • (codex-auto-fix) block agent from editing .github/ files
  • (codex-auto-fix) add grep verification step to auto-fix prompt
  • (codex-auto-fix) run fix job on self-hosted NUC runner

Fixed

  • (review) auto-apply Codex P1/P2 findings
  • (review) auto-apply Codex P1/P2 findings
  • (auth) restore explicit privacy checkbox; guard auto-fix against re-applying fixed findings
  • (review) auto-apply Codex P1/P2 findings
  • (auth) require explicit privacy consent for Google OAuth signup
  • (onboarding) apply app-theme to the rendered onboarding layout
  • (seeds) restore soft-deleted preview users on re-seed
  • (onboarding) fix 4 smoke-test bugs in signup and onboarding flow

Version 2.43.0

June 04, 2026

Added

  • (admin) add soft delete and restore for users

Changed

  • (workflows) skip @codex review if commit already reviewed
  • (workflows) post codex review comment after all checks pass
  • auto-trigger @codex review after all checks pass
  • (codex-auto-fix) remove [skip ci] from auto-fix commit message
  • replace broken codex-review with auto-fix on Codex findings
  • auto-trigger @codex review on every PR push
  • (models) extract soft-delete into SoftDeletable concern

Fixed

  • (models) pause active assignments on user soft-delete
  • (i18n) add devise.failure.deleted_account translation to all locales
  • (mailers) filter kept admins in proposal mailer; drop --dangerously-skip-permissions from auto-fix
  • (models) cancel athlete pending invitations on soft-delete
  • (workflows) add same-repo guard to codex-review CI job
  • (workflows) restrict auto-fix to same-repo branches only
  • (models) disable invite links and cancel invitations on trainer soft-delete
  • (workflows) fix codex-auto-fix trigger and P2 kept scope on trainers
  • (review) fix P1 PostgreSQL FOR UPDATE aggregate and P1 token exposure
  • (review) address Codex P1 shell injection and P2 admin lock race
  • (admin) make last-admin guard atomic with FOR UPDATE lock
  • (soft-delete) fix P1 session revocation and P2 deleted user leakage
  • (seeds) fix demo:setup for current schema — privacy_policy, integer reps, no is_primary

Version 2.42.0

June 03, 2026

Added

  • (import) warn on duplicate program name at preview step
  • (seeds) add Vertical Row Machine to exercise library
  • (seeds) add Leg Press + 45° and Horizontal variants to exercise library
  • (import) block submit on unresolved amber exercises (require link or confirm)
  • (import) restore import-skip Stimulus controller
  • (import) restore import-wizard Stimulus controller

Changed

  • (import) extract private methods to reduce cyclomatic complexity
  • (maintenance) add dependency update policy
  • (import) update spec to reflect multi-day preview — remove first(1) comment
  • (import) batch exercise match queries on preview — eliminates N+1
  • (seeds) add variant base exercises + chain comprehensive seed from nuc_preview
  • (import) add request spec and XLSX fixture for program imports

Fixed

  • (import) enforce link-or-confirm server-side in create action
  • (import) scope exercise lookup to trainer-visible exercises
  • (import) guard variant creation against standard library exercises
  • (import) 3 review fixes — confirm after clear, seed superset IDs, variant input
  • (import) revert superset IDs to integer + fix clear() restoring amber
  • (ci) use localhost fallback in test DB URL + rubocop corrections
  • (import) pending count message, submit alignment, remove em dash placeholder
  • (seeds) add Vertical Row / Rematore verticale variants to Upright Row
  • (import) pulley exercises match via Italian variant names
  • (import) remove LAT→dorsali expansion + add PULLEY→cavi + Face Pull
  • (import) variant section hidden until exercise selected + check-circle icon on confirm
  • (infra) isolate test DB from dev — TEST_DATABASE_URL prevents rspec wiping dev seed data
  • (import) 4 UX fixes — skip undoable, confirm text i18n, new variant creation, goals seeded
  • (import) add fundamental exercises to seed + confirm button after search input
  • (import) use tag.option for variant selected attr — BetterHtml compliance
  • (import) use SecureRandom.uuid for superset group IDs — eliminates race condition
  • (import) clean up orphaned temp files on preview + rake cleanup task
  • (import) status dot turns green on manual exercise link
  • (import) parser fixes — single-line days, tempo priority over pyramid, SET UP name stripping
  • (import) remove first(1) workaround — wizard controller now restored

Version 2.41.0

May 31, 2026

Added

  • (admin/blog) split posts into Active/Archived tabs, drafts first

Version 2.40.1

May 31, 2026

Fixed

  • (blog) scope archive to original IDs, not re-evaluated draft query

Version 2.40.0

May 31, 2026

Added

  • (blog) add merge_drafts rake task + fix admin/users 500

Fixed

  • (admin) declare virtual attributes for admin users count query.
  • (admin) declare virtual attributes for admin users count query

Version 2.39.5

May 31, 2026

Fixed

  • (admin) move admin action above private — was silently skipped by Rails
  • (admin) guard nil instance vars at view level as defence-in-depth
  • (admin) initialize dashboard vars before data load to prevent nil on any render path
  • (admin) remove require_relative from ProductionMonitoring, guard nil health vars

Version 2.39.4

May 31, 2026

Fixed

  • (admin) move admin action above private — was silently skipped by Rails

Version 2.39.3

May 31, 2026

Fixed

  • (admin) guard nil instance vars at view level as defence-in-depth
  • (admin) initialize dashboard vars before data load to prevent nil on any render path

Version 2.39.2

May 31, 2026

Fixed

  • (admin) remove require_relative from ProductionMonitoring, guard nil health vars

Version 2.39.1

May 30, 2026

Changed

  • LOC reduction phase 3 — concerns, services, and version bump fix (#308)

Version 2.39.0

May 30, 2026

Added

  • (admin) wire monitoring data to dashboard, add user management (#306)

Version 2.38.4

May 30, 2026

Changed

  • LOC reduction phase 2 — extract helpers, services, query objects (#305)

Version 2.38.3

May 30, 2026

Changed

  • (deps) roll up essential dependency updates (#304)

Version 2.38.2

May 29, 2026

Changed

  • (architecture) remove redundant fetch, cover all commits on push
  • (services) reduce cyclomatic complexity in StreakCalculator and WorkoutSchedulingHelper
  • (architecture) fix complexity gate — remove invalid flag, enforce max 10
  • (architecture) fetch full history for diff checks
  • (exercises) reduce ExercisesController below 400 LOC
  • revert fetch full history for push diff checks
  • revert ignore pre-existing files in LOC gate
  • revert unsupported rubocop flag in complexity gate
  • (fitness) scope complexity check to modified files only
  • (fitness) add cyclomatic complexity and layer skip fitness functions (ADR-0007)
  • (services) extract five deep modules from God Objects

Fixed

  • (services) use historical log check in StreakCalculator day lookups
  • (services) replace Rails.root with __dir__-relative path in ExerciseNameTranslator
  • (ci) remove unsupported rubocop flag in complexity gate
  • (ci) ignore pre-existing oversized files in LOC gate
  • (ci) fetch full history for push diff checks
  • (dashboard) weekly completion uses historical lookup
  • (services) preserve historical completions after cache expiry (P1)
  • (specs) fix factory constraints and avoid null cache store
  • (specs) correct factory keys and test behavior after completion logic fix
  • (services) correct completion logic and resolve CI failures
  • (services) replace ActiveSupport blank?/presence with plain Ruby equivalents

Version 2.38.1

May 27, 2026

Changed

  • (model) cover user value object extraction
  • (model) extract user value objects
  • (architecture) add monolith decision ADRs

Fixed

  • (deps) patch security audit gems

Version 2.38.0

May 21, 2026

Added

  • (blog) mermaid support in markdown + GPT-generated title

Changed

  • (blog) switch blog generation model to gpt-4o-mini

Fixed

  • (ci) use pull_requests[0].number from workflow_run payload
  • (seo) strip query/fragment before checking og:image MIME type
  • (ci) ERB lint, smarter codex trigger, CI failure notifier
  • (seo) correct og:image MIME type and picsum seed strategy

Version 2.37.4

May 21, 2026

Changed

  • (ci) remove codex-review-on-push workflow

Version 2.37.3

May 21, 2026

Changed

  • (dev) enforce PR-only workflow for main branch

Fixed

  • (ci) use pull_request_target so comment posting works on fork PRs
  • (ci) grant issues:write permission to codex-review workflow
  • (dev) broader push-to-main guard + automate Codex re-review
  • (dev) rename ProtectedBranch to ProtectedBranches in overcommit config

Version 2.37.2

May 21, 2026

Changed

  • (release) gate release on CI success via workflow_run

Fixed

  • (security) prevent arbitrary file deletion via temp_path param
  • (deps) patch CVE-2026-44836 and CVE-2026-44837 in view_component
  • (deps) patch CVE-2026-35611, CVE-2026-4029{5-8}, CVE-2026-4225{6-8}
  • (lint) resolve ERB lint offenses in program import view
  • (ci) resolve RuboCop offenses and RSpec failures

Version 2.37.1

May 21, 2026

Fixed

  • (ci) correct ERB lint exit code and expand 2.37.0 changelog

Version 2.37.0

May 21, 2026

Added

  • (program-import) trainer program import from file
  • (workout-import) CSV/XLSX workout log import for trainers

Changed

  • (components) fix ButtonComponent API and update component count
  • (baseline) rewrite stale docs and capture domain context
  • (import) remove workout log import; keep program import only
  • (docs) add session log, cleanup docs, and dev scripts
  • (seeds) add exercise seeds, translation scripts, rake tasks
  • (db) add goals, variant constraint, and exercise migrations
  • (routes) add workout-log and program import routes
  • (i18n) add translations for import and new UI keys
  • (claude) add commit conventions and design system rules
  • (dev) seed blog preview content

Fixed

  • (views) migrate admin, misc, shared, and layout views
  • (views) migrate athlete, auth, onboarding views to app-* theme
  • (views) migrate client, trainer, dashboard, program views
  • (views) migrate workout-days and exercises to app-* theme
  • (services) expand translation and variant promotion services
  • (assignments) fix reactivation, modal, and assignment views
  • (models) update program, assignment, and exercise models
  • (js) update confirmation, exercise-search, file-input controllers
  • (exercises) deduplicate search results via EXISTS subquery
  • (components) update ViewComponents to app-* design system
  • (button) support content blocks and correct md padding
  • (css) gradient text WebKit isolation and bg-clip fix
  • (blog-admin) reuse shared controls in editor
  • (public-ui) align landing and blog theme polish
  • (blog-admin) add live preview authoring workflow
  • (trainer) align assignment and settings behavior
  • (ui) polish trainer navigation and visual regressions

Version 2.36.1

May 07, 2026

Fixed

  • (trainer) address UI, settings, and assignment regressions (#273)

Version 2.36.0

May 07, 2026

Added

  • blog post thumbnails — auto per release, admin form preview (#272)

Changed

  • concurrency cancel-in-progress changed to false so bot-triggered workflow_run

Version 2.35.2

May 07, 2026

Fixed

  • (blog) stronger prompt voice and upgrade to gpt-4o (#270)

Version 2.35.1

May 07, 2026

Fixed

  • (admin) define fitness-* classes, fix dark mode, improve blog admin UX (#269)

Version 2.35.0

May 07, 2026

Added

  • (blog) auto-generate release blog draft on GitHub Release (#267)

Version 2.34.18

May 03, 2026

Fixed

  • (view) improve athlete workout mobile ui (#264)

Version 2.34.17

April 30, 2026

Fixed

  • (pwa) consolidate favicon package (#263)

Version 2.34.16

April 30, 2026

Changed

  • (deps) bump puma from 7.2.0 to 8.0.1

Version 2.34.15

April 30, 2026

Changed

  • (deps) bump view_component from 4.4.0 to 4.8.0

Version 2.34.14

April 30, 2026

Changed

  • (deps-dev) bump minitest-reporters from 1.7.1 to 1.8.0

Version 2.34.13

April 30, 2026

Changed

  • (deps-dev) bump overcommit from 0.68.0 to 0.69.0

Version 2.34.12

April 30, 2026

Changed

  • (deps-dev) bump faker from 3.6.1 to 3.8.0

Version 2.34.11

April 30, 2026

Changed

  • (deps) bump propshaft from 1.3.1 to 1.3.2

Version 2.34.10

April 30, 2026

Changed

  • (deps) bump sidekiq from 8.1.2 to 8.1.3

Version 2.34.9

April 30, 2026

Changed

  • (deps) bump bootsnap from 1.23.0 to 1.24.1

Version 2.34.8

April 29, 2026

Changed

  • (release) v2.34.7
  • (release) v2.34.6

Fixed

  • (workout) scope persisted rest timer by context (#258)

Version 2.34.7

April 23, 2026

Changed

  • (release) v2.34.6

Fixed

  • (workout) scope persisted rest timer by context (#258)

Version 2.34.5

April 12, 2026

Fixed

  • (pwa) make workout completion confirmation reliable on iOS (#242)

Version 2.34.4

April 11, 2026

Changed

  • (deps-dev) bump brakeman from 8.0.2 to 8.0.4 (#215)
  • (deps-dev) bump faker from 3.5.2 to 3.6.1 (#218)
  • (deps-dev) bump rspec-rails from 8.0.3 to 8.0.4 (#222)
  • (deps) bump kamal from 2.10.1 to 2.11.0 (#226)
  • (deps) bump solid_queue from 1.3.2 to 1.4.0 (#228)
  • (deps) bump thruster from 0.1.18 to 0.1.20 (#231)
  • (deps) bump sidekiq from 8.1.1 to 8.1.2 (#232)
  • (deps) bump lucide-rails from 0.7.3 to 0.7.4 (#233)
  • (deps) bump mailgun-ruby from 1.4.2 to 1.4.3 (#235)
  • (deps-dev) bump parser from 3.3.10.2 to 3.3.11.1 (#236)

Version 2.34.2

March 27, 2026

Fixed

  • (test) align e2e helper and clean placeholder tests (#237)

Version 2.34.1

March 26, 2026

Fixed

  • (ux) rest timer, Playwright E2E, and guest nav spacing (#230)

Version 2.34.0

March 17, 2026

Added

  • GDPR minimal foundation (#224)

Version 2.33.2

March 16, 2026

Fixed

  • (workout-logger) localize tips and superset panel (#223)

Version 2.33.1

March 06, 2026

Fixed

  • rest timer PWA behavior and NUC dev setup (#219)

Version 2.33.0

March 04, 2026

Added

  • (workout) implement cardio timer and redesign rest timer
  • (workout) add workout completion validation

Changed

  • (e2e) add workout timer spec

Fixed

  • (security) sanitize return_to param and ignore false positive in brakeman
  • (nav) preserve scroll position on back link
  • (ui) adjust mobile navbar spacing
  • (progress) resolve interpolation error in select options

Version 2.32.0

March 03, 2026

Added

  • (media) add free GIF sync and library audit
  • (i18n) stabilize EN/IT translation pipeline
  • (progress) improve analytics and trainer assignment UX
  • (exercises) add detail page and variant workflow
  • (forms) add number stepper for program duration
  • (timer) add persistent rest timer workflow

Changed

  • (exercises) add design and library research notes

Fixed

  • (ui) refine mobile nav and footer behavior

Version 2.31.3

March 03, 2026

Changed

  • (deps-dev) bump parser from 3.3.10.0 to 3.3.10.2
  • (deps-dev) bump rspec-rails from 8.0.2 to 8.0.3

Version 2.31.2

March 03, 2026

Changed

  • (deps) bump view_component from 4.2.0 to 4.4.0
  • (deps) bump sidekiq from 8.1.0 to 8.1.1

Version 2.31.1

March 03, 2026

Changed

  • (deps) bump actions/upload-artifact from 6 to 7
  • (deps) bump omniauth-google-oauth2 from 1.2.1 to 1.2.2
  • (deps-dev) bump web-console from 4.2.1 to 4.3.0
  • (deps) bump solid_queue from 1.3.1 to 1.3.2
  • (deps) bump devise from 4.9.4 to 5.0.2
  • (deps) bump bootsnap from 1.18.6 to 1.23.0
  • (deps) bump openssl from 3.3.2 to 4.0.1

Version 2.31.0

March 03, 2026

Added

  • (blog) refine public blog layout (#213)

Version 2.30.0

March 03, 2026

Added

  • (blog) improve guest navbar links (#210)

Version 2.29.0

March 02, 2026

Added

  • (blog) weekly article webhook

Changed

  • (blog) fix webhook initializer lint
  • (blog) fix webhook lint issues

Version 2.28.10

February 17, 2026

Changed

  • (deps) bump solid_queue from 1.2.4 to 1.3.1
  • (deps) bump view_component from 4.1.1 to 4.2.0
  • (deps) bump rails from 8.1.1 to 8.1.2

Version 2.28.9

February 17, 2026

Changed

  • (deps) bump turbo-rails from 2.0.20 to 2.0.23
  • (deps-dev) bump brakeman from 7.1.2 to 8.0.2
  • (deps) bump thruster from 0.1.16 to 0.1.18
  • (deps) bump puma from 7.1.0 to 7.2.0
  • (deps) bump pg from 1.6.2 to 1.6.3
  • (deps) bump importmap-rails from 2.2.2 to 2.2.3

Version 2.28.8

February 17, 2026

Changed

  • (deps) pin faraday >= 2.14.1 for CVE-2026-25765
  • (workflow) document dev quality and commits
  • (deps) bump mailgun-ruby and faraday-multipart
  • (scripts) add prepare-pr helper
  • (dev) add setup and NUC guides

Fixed

  • (auth) unify account settings and password flows
  • (nav) improve language dropdown overflow
  • (i18n) add program_assignment errors and auth texts
  • (program_assignments) dedupe modal errors and localize

Version 2.28.7

February 06, 2026

Fixed

  • (ui) add body padding for fixed navbar and remove conflicting legacy CSS

Version 2.28.6

February 06, 2026

Fixed

  • (ui) use flexbox for desktop navbar to prevent overlap

Version 2.28.5

February 06, 2026

Fixed

  • (ui) responsive navbar layout and mobile spacing

Version 2.28.4

February 06, 2026

Fixed

  • (ui) improve navbar grid layout and increase button text breakpoints

Version 2.28.3

February 06, 2026

Fixed

  • (ui) enforce exact height on search input for alignment

Version 2.28.2

February 06, 2026

Changed

  • (docs) update architecture documentation and version to 2.28.0

Version 2.28.1

February 06, 2026

Fixed

  • (ui) align searchbox and filters in exercise library

Version 2.28.0

February 05, 2026

Added

  • (workout_exercises) add edit turbo_stream response
  • (translations) Italian importer, rake tasks and integration doc
  • (i18n) add and update locale keys for programs and exercises
  • (ui) add SearchInputComponent with app-aligned design

Changed

  • (changelog) unreleased entries and post-merge production steps
  • (services) translation and wger importer
  • (javascript) update stimulus controllers
  • (helpers) add translation and UI helpers
  • (controllers) exercises, programs, locales and assignments
  • (views) update shared navigation and layout
  • (views) update exercises, programs and workout views
  • (views) update client_connections and misc views
  • (views) update trainer assignments and invite links
  • (views) update athlete, dashboards, profile and home
  • (views) update admin and public blog_posts
  • (components) update cards, inputs, tabs and stats
  • (views) use SearchInput in client_connections and programs
  • (app) navbar breakpoints, tooltip and search input CSS
  • (tailwind) add components to content for ViewComponent classes

Fixed

  • (exercises) ORDER BY for distinct and scope search by policy
  • (erb_lint) exclude vendor from RequireInputAutocomplete
  • (ui) add autocomplete to SearchInput for ERB lint
  • (admin) remove conflicting margin classes in blog post edit

Version 2.27.0

February 04, 2026

Added

  • (tasks) add i18n validation and hardcoded string detection tasks
  • (seeds) add demo users seed file
  • (javascript) update stimulus controllers for bulk selection and exercise features
  • (exercises) update exercise controllers, views and policies
  • (program_assignments) add program extension and date calculator features
  • (devise) update devise views with translations
  • (i18n) update locale files with translations and structure

Changed

  • (spec) use :unprocessable_content instead of deprecated :unprocessable_entity
  • (exercises) fix formatting and script type in exercises index view
  • (docs) add i18n structure and modal testing documentation
  • (views) update various views and admin controller
  • (components) update icon and icon button components
  • (config) update gitignore, gemfile lock and routes

Fixed

  • (workout_days) pass plural to daily_limit_message and align spec expectations
  • (i18n) remove duplicate YAML document separators in ko, pt, zh locale files
  • (i18n) remove duplicate YAML document separator in ja.yml

Version 2.26.0

January 23, 2026

Added

  • (i18n) add Italian translations for devise and missing labels
  • (i18n) add translate_primary_focus helper for muscle group translation
  • (i18n) translate workout day names via muscle group lookup
  • (i18n) translate workout day names via muscle group lookup

Changed

  • (js) fix formatting in exercise_focus_controller
  • (i18n) use non-translated names in views and fix back links
  • (i18n) use non-translated names in UI components
  • (i18n) disable translation for program and workout day names

Fixed

  • (i18n) translate workout log messages and ensure locale in exercise forms
  • (i18n) translate all alert and notice messages in controllers
  • (i18n) ensure muscle group translation uses current locale in forms

Version 2.25.2

January 23, 2026

Fixed

  • (i18n) add missing trainer_notes and weight_types translations

Version 2.25.1

January 23, 2026

Fixed

  • (i18n) fix exercise translation logic and add missing labels

Version 2.25.0

January 23, 2026

Added

  • (i18n) comprehensive translation fixes for production

Version 2.24.0

January 23, 2026

Added

  • (i18n) translate day abbreviations in weekly calendar

Version 2.23.2

January 23, 2026

Fixed

  • (i18n) translate all hardcoded Back buttons

Version 2.23.1

January 23, 2026

Fixed

  • (i18n) use helpers.localized_pluralize in ViewComponent

Version 2.23.0

January 23, 2026

Added

  • (i18n) add missing Italian translations for dashboard and workout labels

Version 2.22.0

January 23, 2026

Added

  • (i18n) add missing Italian translations for production pages

Version 2.21.0

January 23, 2026

Changed

  • (security) add GitGuardian ignore for locale files
  • (css) update onboarding styles
  • (dependencies) update gems and schema for translation features
  • (translations) add exercise translation integration documentation
  • (translations) add specs for translation services and models
  • (models) wrap debug logging in development check

Fixed

  • (security) update GitGuardian config to ignore locale file false positives
  • (tests) resolve failing tests and security warnings
  • (security) add explicit action_text-trix 2.1.16 dependency
  • (i18n) add app language preference (browser fallback + user setting)
  • (exercises) add per-locale exercise translations with fallback rendering

Version 2.20.10

December 28, 2025

Changed

  • (deps) bump actions/upload-artifact from 5 to 6

Version 2.20.9

December 28, 2025

Changed

  • (deps) bump lucide-rails from 0.7.1 to 0.7.3

Version 2.20.8

December 28, 2025

Changed

  • (deps) bump sidekiq from 8.0.8 to 8.1.0

Version 2.20.7

December 28, 2025

Changed

  • (deps) bump omniauth-rails_csrf_protection from 2.0.0 to 2.0.1

Version 2.20.6

December 28, 2025

Changed

  • (deps) bump kamal from 2.8.2 to 2.10.1

Version 2.20.5

December 28, 2025

Changed

  • (deps-dev) bump brakeman from 7.1.1 to 7.1.2

Version 2.20.4

December 21, 2025

Fixed

  • (auth) allow athletes with admin privileges to access programs

Version 2.20.3

December 19, 2025

Changed

  • (erb) auto-fix ERB formatting

Fixed

  • (workout-scheduling) check all workout days for completion detection
  • (workout-days) correct header status for past completed workouts

Version 2.20.2

December 19, 2025

Fixed

  • (dashboard) correct workout day sequencing when workout completed earlier this week

Version 2.20.1

December 19, 2025

Changed

  • (ui) improve calendar design with status priority and clearer visual hierarchy

Fixed

  • (ui) add explicit text color to workout log form inputs
  • (ui) reposition Today's Workout title above calendar component
  • (security) fix CSP nonce generator for sessions without ID

Version 2.20.0

December 14, 2025

Added

  • (admin) add set_role task to change admin primary role

Version 2.19.0

December 14, 2025

Added

  • (blog) add admin blog management system

Version 2.18.3

December 14, 2025

Changed

  • (ui) update program card component for improved accessibility and styling

Fixed

  • (workout-logs) ensure weight values are converted to float before save
  • (ui) fix mobile overflow for increment/decrement buttons
  • (workout-logs) ensure weight values are converted to float before save

Version 2.18.2

December 11, 2025

Fixed

  • (layout) update Open Graph image meta tags for enhanced social media compatibility

Version 2.18.1

December 11, 2025

Fixed

  • (layout) update Open Graph and Twitter Card meta tags for improved social sharing

Version 2.18.0

December 11, 2025

Added

  • (workout) enhance cardio set handling in workout log controller
  • (workout) enhance cardio set handling in workout log controller

Changed

  • (db) update schema
  • (helpers) improve workout exercise helper methods
  • (workout) improve weight conversion and display precision

Version 2.17.0

December 11, 2025

Added

  • (trainer) improve program assignments interface
  • (blog) add Turbo Stream support to blog posts controller
  • (workout) improve workout exercise log form component
  • (admin) add is_admin field and improve admin user management

Version 2.16.0

December 11, 2025

Added

  • (blog) add blog post views and card component
  • (blog) add remaining blog feature files (views, components, routes, integration, config, seeds, docs, tests)
  • (blog) integrate blog posts into home, sitemap, admin dashboard, and navigation
  • (blog) add blog posts controllers with public and admin interfaces

Changed

  • (blog) fix slug uniqueness validation test
  • (blog) fix slug presence validation test for auto-generated slugs
  • (blog) fix slug presence validation test
  • (blog) fix uniqueness validation and timestamp precision tests
  • (blog) fix uniqueness validation test
  • (blog) add blog post factory and fix test expectations
  • (blog) add blog post model and request specs

Fixed

  • (blog) add explicit format handling to blog posts controller

Version 2.15.0

December 09, 2025

Added

  • (seo) add OG and Twitter Card tags
  • (landing) refine hero messaging and CTA

Changed

  • (strategy) update validation-first approach

Version 2.14.1

December 09, 2025

Changed

  • (changelog) document SEO hotfix improvements

Fixed

  • (seo) fix language markup by adding lang='en' to all HTML layouts
  • (seo) improve page title and meta description for better SEO
  • (seo) update H1 heading to match page content and ensure single H1 per page
  • (seo) update Open Graph tags for better social media sharing

Version 2.14.0

December 09, 2025

Added

  • (seo) add JSON-LD structured data for better search visibility
  • (changelog) add RSS feed for changelog updates
  • (seo) add changelog URL to sitemap
  • (ui) add version display in footer and settings
  • (changelog) add public changelog page
  • (seo) add sitemap and meta tags for better search visibility

Changed

  • (middleware) add response compression with Rack::Deflater

Version 2.13.0

December 08, 2025

Added

  • (js) update JavaScript controllers for cardio
  • (views) update views for cardio exercise logging
  • (components) add workout header component and update cardio forms
  • (controllers) update controllers for cardio exercise support
  • (models) add cardio exercise support to workout log
  • (db) add cardio fields to workout logs

Version 2.12.0

December 07, 2025

Added

  • (workout) add exercise focus and scroll controllers
  • (ui) implement mobile-first tooltip interaction
  • (workout) add past workouts page with week accordion
  • (workout) add sticky navbar with timer for active workouts

Changed

  • (architecture) update frontend architecture and testing documentation
  • (lint) fix linting issues (trailing whitespace and spacing)
  • (workout) update completion view and route policies
  • (ui) rename Dashboard to Home across athlete interface

Fixed

  • (nav) correct workout day selection logic in navigation
  • (workout) correct weight conversion for kg preference users

Version 2.11.5

December 04, 2025

Fixed

  • (solid_queue) enforce SOLID_QUEUE_IN_PUMA requirement in production

Version 2.11.4

December 04, 2025

Changed

  • (heroku) remove worker dyno, enable SolidQueue inline mode

Fixed

  • (heroku) add safeguards for SOLID_QUEUE_IN_PUMA requirement

Version 2.11.3

December 03, 2025

Fixed

  • (dashboard) check logs directly to identify specific workout_day completed

Version 2.11.2

December 03, 2025

Fixed

  • (dashboard) check all workout days in all_weekly_workouts_completed_for_date?

Version 2.11.1

December 03, 2025

Fixed

  • (dashboard) re-check completed weeks when should_continue_streak returns true

Version 2.11.0

December 03, 2025

Added

  • (progress) add search box to exercise progress index page

Changed

  • (progress) remove search box from Session Details section

Fixed

  • (dashboard) simplify streak calculation to check completed weeks first

Version 2.10.3

December 03, 2025

Fixed

  • (dashboard) correct streak and weekly completion calculations

Version 2.10.2

December 03, 2025

Fixed

  • (pwa) skip Safari internal URLs in service worker

Version 2.10.1

December 03, 2025

Fixed

  • (dashboard) check workout logs for past completed workouts

Version 2.10.0

December 03, 2025

Added

  • (exercise-progress) add search functionality for logged data

Fixed

  • (workout-logs) convert ActionController::Parameters to hash for any? check
  • (workout-logs) remove debug logs and fix orphaned log deletion
  • (workout-logs) use integer set_number and delete logs before updates
  • (dashboard) remove all has_logs checks from completion detection
  • (dashboard) remove has_logs check from completion detection
  • (navigation) show in-progress status for started workouts
  • (exercise-variants) enable creation and selection in workout forms

Version 2.9.0

November 30, 2025

Added

  • (views) add superset UI and visual grouping
  • (controllers) add superset creation and breaking actions
  • (models) add superset grouping logic
  • (db) add superset support to workout exercises

Version 2.8.3

November 28, 2025

Fixed

  • (workout-days) update response format for workout day updates

Version 2.8.2

November 28, 2025

Changed

  • (workout-exercises) update specs for single duration field
  • (workout-exercises) add exercise category to search events
  • (workout-exercises) improve time display and form layout
  • (app) disable hover prefetch globally

Fixed

  • (assignments) remove horizontal scrolling in table
  • (workout-days) duplicate and delete improvements
  • (workout-exercises) cardio duration validation and cancel button

Version 2.8.1

November 26, 2025

Fixed

  • (workouts) filter completed workouts from upcoming and show past completion banner

Version 2.8.0

November 26, 2025

Added

  • (preferences) add workouts_per_day preference (1-3)

Changed

  • (db) update schema with workouts_per_day column
  • (workouts) add tests for weight conversion and workouts_per_day

Fixed

  • (workouts) implement multiple workouts per day limit
  • (calendar) show workout status indicators correctly
  • (dashboard) show in-progress workouts and update status correctly
  • (workouts) correct weight display in all views
  • (workouts) store weights in lbs standard unit

Version 2.7.1

November 26, 2025

Changed

  • (onboarding) fix indentation in workflow step handler
  • (demo) add quick start guide for demo recording
  • sign overcommit configuration and exclude binary files

Version 2.7.0

November 25, 2025

Added

  • (landing) rebrand landing page with competitor analysis insights and improve offline PWA experience

Changed

  • (exercise_cleanup) remove trailing whitespace in exercise cleanup task

Version 2.6.2

November 25, 2025

Changed

  • (deps) bump actions/checkout from 5 to 6

Version 2.6.1

November 25, 2025

Changed

  • (deps) bump omniauth-rails_csrf_protection from 1.0.2 to 2.0.0

Version 2.6.0

November 24, 2025

Added

  • (exercises) add delete_french rake task for non-interactive deletion

Version 2.5.0

November 24, 2025

Added

  • (exercises) add delete_french rake task for non-interactive deletion

Version 2.4.0

November 19, 2025

Added

  • (pwa+workouts) respect rest unit preferences and add install fallback

Version 2.3.1

November 19, 2025

Fixed

  • (migrations) guard tempo column addition

Version 2.3.0

November 19, 2025

Added

  • (workout-exercises) implement Phase 1 advanced workout features (#129)

Version 2.2.0

November 15, 2025

Added

  • (pwa) implement progressive web app functionality (#128)

Version 2.1.0

November 13, 2025

Added

  • (preferences) implement user preferences system (#127)

Version 2.0.2

November 12, 2025

Changed

  • Add helper script to create cache table manually

Version 2.0.1

November 12, 2025

Fixed

  • (production) Add error handling for missing SolidCache table

Version 2.0.0

November 12, 2025

Added

  • (progress) major feature - progress visualization MVP

Version 1.10.0

November 12, 2025

Added

  • (progress) implement progress visualization MVP (#41) (#126)

Version 1.9.2

November 12, 2025

Changed

  • (deps) bump solid_cache from 1.0.8 to 1.0.10 (#123)

Version 1.9.1

November 12, 2025

Changed

  • (deps) bump view_component from 4.1.0 to 4.1.1 (#124)

Version 1.9.0

November 12, 2025

Added

  • Implement workout logging and completion tracking with constraints (#125)

Version 1.8.1

November 09, 2025

Fixed

  • (routes) change suspend and expire links to button_to (#122)

Version 1.8.0

November 09, 2025

Added

  • Restrict delete permissions to admins and fix redirect issues (#121)

Version 1.7.0

November 07, 2025

Added

  • (athlete) implement dashboard and workout view (#120)

Version 1.6.2

November 07, 2025

Fixed

  • (ui) increase copy button size for better mobile usability
  • (security) disable browsing-topics in Permissions-Policy header

Version 1.6.1

November 07, 2025

Fixed

  • (client-invitations) improve share link tab navigation and athlete search (#118)

Version 1.6.0

November 07, 2025

Added

  • (trainer-invite-links) enhance onboarding and invite link functionality (#117)

Changed

  • (release) v1.5.5

Fixed

  • (oauth) Fix Google OAuth 422 errors and improve onboarding flow

Version 1.5.5

November 06, 2025

Fixed

  • (oauth) Fix Google OAuth 422 errors and improve onboarding flow

Version 1.5.4

November 05, 2025

Fixed

  • (seeds) use duration_seconds for Burpees cardio exercise

Version 1.5.3

November 05, 2025

Changed

  • (deps-dev) bump shoulda-matchers from 6.5.0 to 7.0.1 (#112)

Version 1.5.2

November 05, 2025

Changed

  • (deps-dev) bump brakeman from 7.1.0 to 7.1.1 (#115)

Version 1.5.0

November 04, 2025

Added

  • (programs) implement Program Assignment System (Issue #28) (#113)

Version 1.4.0

November 03, 2025

Added

  • (jobs) Run reminder job every hour instead of daily

Version 1.3.9

November 03, 2025

Fixed

  • use raw SQL in rake tasks to bypass Rails 8 connection role issues

Version 1.3.8

November 03, 2025

Fixed

  • wrap rake tasks in connected_to to force primary connection
  • wrap rake tasks in connected_to to force primary connection

Version 1.3.7

November 03, 2025

Fixed

  • bypass validations in email test rake task to avoid sharding errors

Version 1.3.6

November 03, 2025

Changed

  • add rake task for testing all email types

Version 1.3.5

November 03, 2025

Fixed

  • (email) replace hardcoded localhost URLs with production URL helpers in all mailer templates

Version 1.3.4

November 03, 2025

Fixed

  • (email) force absolute production URLs via action_controller.default_url_options

Version 1.3.3

November 03, 2025

Fixed

  • (invites) prevent chip overlapping header; honor invitation token in OAuth callbacks

Version 1.3.2

November 03, 2025

Fixed

  • (invites) place Pending chip top-right via absolute; redirect OAuth sign-in to focused invitations when token present

Version 1.3.1

November 03, 2025

Fixed

  • (invites) mobile layout wraps pending chip; preserve deep-link after login/signup

Version 1.3.0

November 03, 2025

Added

  • (invites) deep-link to athlete invitations page with focused card; avoid partial-height token page

Version 1.2.23

November 03, 2025

Fixed

  • (invites) prevent auto-accept; add invitation details flow and update email link

Version 1.2.22

November 03, 2025

Fixed

  • correct reminder scope date ranges

Version 1.2.21

November 03, 2025

Fixed

  • correct SolidQueue worker command and fix reminder date logic

Version 1.2.20

November 03, 2025

Fixed

  • (mail) use noreply@synergym.fit as default sender and default_options

Version 1.2.19

November 03, 2025

Fixed

  • (client_connections) add error handling for resend invitation email delivery

Version 1.2.18

November 03, 2025

Fixed

  • (mail) use postmaster@domain format for Mailgun SMTP login

Version 1.2.17

November 02, 2025

Fixed

  • improve exercise seeds for production and fix mailgun SMTP configuration

Version 1.2.16

November 02, 2025

Fixed

  • (exercises) fix turbo-frame targeting for links and use turbo_frame_tag helper

Version 1.2.15

November 02, 2025

Fixed

  • (exercises) ensure form submits as full page not within frame
  • (exercises) remove invalid turbo_stream redirect action

Version 1.2.14

November 02, 2025

Fixed

  • (migration) handle existing user_role column
  • (migration) handle existing onboarding columns
  • (procfile) correct release command to use rake instead of rails

Version 1.2.13

November 02, 2025

Fixed

  • (migration) handle existing role_confirmed column

Version 1.2.12

November 02, 2025

Fixed

  • handle missing client_connections table gracefully

Version 1.2.11

November 02, 2025

Fixed

  • add error handling to icon component with fallbacks

Version 1.2.10

November 02, 2025

Fixed

  • add comprehensive error handling to exercises and programs controllers

Version 1.2.9

November 02, 2025

Fixed

  • add error handling for trainer dashboard stats to prevent 500 errors

Version 1.2.8

November 02, 2025

Fixed

  • handle missing OAuth session data in role confirmation

Version 1.2.7

November 02, 2025

Fixed

  • prevent redirect loops in role confirmation and onboarding

Version 1.2.6

November 02, 2025

Fixed

  • (auth) use consistent redirect URI for Google OAuth

Version 1.2.5

November 02, 2025

Fixed

  • (auth) check onboarding status in OAuth callback redirect

Version 1.2.4

November 02, 2025

Fixed

  • (auth) skip redirect before_actions in OAuth callback controller

Version 1.2.3

November 02, 2025

Fixed

  • (auth) whitelist OAuth callbacks to prevent redirect loops

Version 1.2.2

November 02, 2025

Fixed

  • (auth) align sign up Google OAuth button with working login implementation

Version 1.2.1

November 01, 2025

Changed

  • (deps) bump actions/github-script from 7 to 8 (#109)
  • (deps) bump solid_queue from 1.2.3 to 1.2.4 (#110)

Version 1.2.0

November 01, 2025

Added

  • (programs) implement Program Builder feature (Issue #23) (#111)

Version 1.1.0

October 31, 2025

Added

  • (profile) add profile image support with Google OAuth integration (#108)

Version 1.0.13

October 31, 2025

Fixed

  • (invitations) add defensive checks to ensure ActiveRecord::Relation

Version 1.0.12

October 31, 2025

Fixed

  • (invitations) return ActiveRecord::Relation instead of Array to support .includes()

Version 1.0.11

October 31, 2025

Fixed

  • (athlete_invitations) check if result is ActiveRecord::Relation before includes

Version 1.0.10

October 31, 2025

Fixed

  • (athlete_invitations) fix ensure_athlete_role return value
  • (user) improve error handling in client_invitations_received

Version 1.0.9

October 31, 2025

Fixed

  • (user) add error handling to athlete? method
  • (athlete_invitations) add comprehensive error handling

Version 1.0.8

October 31, 2025

Fixed

  • (athlete_invitations) add error handling to prevent 500 errors

Version 1.0.7

October 31, 2025

Fixed

  • (ci) use rake instead of rails for database tasks

Version 1.0.6

October 31, 2025

Fixed

  • (ci) add debug output to diagnose rails command issue
  • (ci) remove redundant RAILS_ENV from db commands

Version 1.0.5

October 31, 2025

Fixed

  • (config) set postgres username for test database

Version 1.0.4

October 31, 2025

Fixed

  • (ci) run db:migrate in test to clear pending migrations

Version 1.0.3

October 31, 2025

Fixed

  • (ci) use bundle exec rails with explicit RAILS_ENV

Version 1.0.2

October 31, 2025

Fixed

  • (ci) use bin/rails and db:schema:load for test database setup

Version 1.0.1

October 31, 2025

Fixed

  • (workflows) improve error handling and fix database setup

Version 1.0.0

October 31, 2025

Added

  • (versioning) implement automated versioning, changelog, and git tags (#106)
  • (exercises) trainer exercise library + authorization (Closes #100, Closes #101, Closes #103) (#104)
  • (dev) add Overcommit git hooks configuration
  • (mcp) configure MCP servers for productivity
  • implement client invitation system with comprehensive UI and testing (#85)
  • (backend) implement core fitness models + UI improvements (#83)
  • implement workout management models (issues #6, #7) (#77)
  • enhance password recovery with themed UI and email templates (#76)
  • complete M1 milestone - role-based dashboards with authentication and authorization (#74)
  • add Mailgun gem for production, keep letter_opener for development
  • Implement user authentication system (Issue #4) (#72)
  • Initial Rails 8 Project Setup (closes #3) (#65)
  • (home) add HomeController, HomeHelper, index view, routes, and example integration test

Changed

  • (ci) consolidate workflows and fix Rails 8 test config
  • (cleanup) remove PR description file and improve debug route handling
  • (config) update gitignore
  • (code) clean up commented code and improve structure
  • (cleanup) remove unused files and legacy code
  • (deps) bump solid_queue from 1.2.2 to 1.2.3 (#95)
  • (deps) bump rails from 8.1.0 to 8.1.1 (#96)
  • (deps-dev) bump parser from 3.3.9.0 to 3.3.10.0 (#97)
  • remove Sidekiq worker and sample worker from production
  • apply erb_lint formatting fixes
  • (deps) bump actions/upload-artifact from 4 to 5 (#78)
  • (deps-dev) bump letter_opener_web from 1.4.1 to 3.0.0 (#79)
  • (deps) bump kamal from 2.8.1 to 2.8.2 (#80)
  • (deps) bump turbo-rails from 2.0.17 to 2.0.19 (#81)
  • (deps) bump tailwindcss-rails from 4.3.0 to 4.4.0 (#82)
  • (deps) bump rails from 8.0.3 to 8.1.0 (#70)
  • (deps) bump thruster from 0.1.15 to 0.1.16 (#67)
  • (deps) bump kamal from 2.7.0 to 2.8.1 (#69)
  • (deps) bump solid_queue from 1.2.1 to 1.2.2 (#71)
  • (deps) bump github/codeql-action from 3 to 4 (#2)
  • (ci) remove Node.js setup and frontend dependency installation from CI workflow
  • (project) initial commit with new structure

Fixed

  • Health status endpoint crash due to undefined `version` method
  • Invalid invitation token causing 500 errors
  • Database health check using deprecated connection pool methods
  • Missing ClientConnection table causing errors in health monitoring endpoints

Version 0.1.0

October 18, 2025

Added

  • Rails 8 application structure
  • Basic Devise authentication (email/password)
  • PostgreSQL database setup
  • User model with roles enum
  • Basic Tailwind CSS integration
  • Devise views with Tailwind styling
  • Basic application layout structure
  • Initial project setup with Rails 8
  • PostgreSQL database configuration
  • Redis and Sidekiq basic configuration
  • RSpec testing framework setup
  • Basic deployment configuration files

Want to suggest a feature or report a bug? Contact us