Changelog

What shipped each week.

Week of May 31, 2026

Cache coach patterns & weekly check-in cards (disk-backed swr + coordinator) and stabilize coach surface layout.

See all 15 changes
App
  • Add divider to exercise detail sheet top
Watch
  • Keep rest-timer and set-logging controls in layout during Always-On
General
  • Cache Coach patterns & weekly check-in cards (disk-backed SWR + coordinator)
  • Stabilize coach surface layout
  • Clarify RIR prompt copy
  • Fold weekly check-in into coach patterns
  • Show only applied plan adjustment edits
  • Retry missing plan adjustment changesets
  • Route adjust program asks to plan drafts
  • Retry missing observation plan drafts
  • Add copy action to Ask Coach messages
  • Add shared top divider to slide-up sheets
  • Honor weekly check-in opt-out
  • Carry logged weight to next set
  • Limit logged set propagation
Week of May 24, 2026

Capture per-exercise rir at completion + extract loggerview views (onemore-ulb6) and apply logger smart defaults.

See all 24 changes
App
  • Apply logger smart defaults
General
  • Tighten Ask Coach production replay routing
  • Address Hermes review feedback [codex]
  • Address high security findings
  • Capture per-exercise RIR at completion + extract LoggerView views (onemore-ulb6)
  • Keep retired coach observation follow-ups routable
  • Stop Ask Coach dumping raw Increment Score internals
  • Expand feed header tap targets
  • Restore cli lock peer entry
  • Repair dev workflow CI
  • Repair corrupted warmup rows in logger
  • Preserve warmup sets during progression updates
  • Harden ask coach progress evidence
  • Add shared ask coach progress evidence tools (onemore-foxo)
  • Harden local TestFlight signing
  • Add ask coach plan draft card
  • Keep chart ranges available with recent data
  • Stagger set roll previews
  • Reuse smart defaults roll for previous preview
  • Clear deferred effort on finish failure (onemore-hh4g)
  • Simplify feed header
  • Defer HealthKit effort until workout finish (onemore-hh4g)
  • Retry transient workout summary 404s
  • Dismiss coach keyboard while browsing
Week of May 17, 2026

Add emotional peak polish and add healthkit and bodyweight coach observations.

See all 34 changes
App
  • Add emotional peak polish
  • Tier 2 premium polish — type tokens, tabular digits, stagger, spacing
  • Widen coach observation tap targets and humanize Ask prompt
  • Schedule Sunday Check-in local reminder on app launch (onemore-l0xi)
  • Keep Ask composer visible
  • Address github review follow-ups
CLI
  • Add --dry-run to all mutating write commands
  • Add --fields projection and --page-all NDJSON streaming
  • Harden input validation against agent hallucinations
  • Add agentNotes + SKILL.md for agent-facing invariants (onemore-5n58)
General
  • Tighten AI prompt guardrails for eval regressions
  • Use local postgres user for sync service dev
  • Add HealthKit and bodyweight Coach observations
  • Ground Ask Coach tool context and evals
  • Keep coach backfill logging lint-compatible (onemore-97zf)
  • Address Hermes review feedback [claude]
  • Address Hermes review feedback [codex]
  • Backfill coach observations from score history (onemore-97zf)
  • Stabilize coach observation refresh control
  • Refresh coach observations from score activity
  • Persist score snapshot signals (onemore-9gwb)
  • Anchor session vitals to workout date
  • Structure coach observation FIRA fields
  • Coach-agent session evidence payload — part 1 (actuals + completion + PRs)
  • Start weak point workout from score gaps (onemore-igsm)
  • Align donut breakdown legend
  • Move muscle volume rows to coverage (onemore-6qk7)
  • Polish score driver row layout (onemore-u0ze)
  • Hide plan completion trophies (onemore-re81.12)
  • Stabilize logger header zones (onemore-m9sl)
  • Align muscle breakdown legend counts (onemore-gelh)
  • Standardize recommendation badge sizing (onemore-vq32)
  • Reuse shared healthkit timestamp formatter (onemore-9lts)
  • Open empty adhoc exercise sheet reliably (onemore-vxe3)
Week of May 10, 2026

Reconcile state on wcsession activation and end session on finish + apply smart defaults to live sets.

See all 43 changes
App
  • Only highlight choices after tap
  • Drop misleading primary highlight on peer choices
  • Keep score tile strip full-intensity in read-only mode
  • Calm Score screen semantic colour hierarchy
  • Simplify score hero copy and add brand mark assets
  • Drop redundant strength step + dismiss chat options on tap
  • Stabilize workout UI test targets
  • Quiet accent competition on program + adhoc summaries
  • Align workout header pill, unify media icon, quiet coach popover
  • Default appearance to light and apply preferred color scheme
Watch
  • Reconcile state on WCSession activation
  • End session on finish + apply smart defaults to live sets
AI Coach
  • Mirror iOS catch-up scheduling in server prompt builders
General
  • Remove post-workout feed promo (onemore-f3p3)
  • Strip plan-trust framing from dashboard calendar (onemore-0ft.6)
  • Stop stacking notes on exercise history view
  • Repair repository hooks
  • Simplify INCREMNT Score stimulus evidence copy
  • Keep workout summary actions anchored
  • Re-center plan header title on regular-width phones
  • Adapt plan header on compact phones
  • Reset workout tab to selected day top
  • Add rest day start workout action
  • Route disabled coach to settings home
  • Restore sync settings CTAs
  • Prefetch workout AI summary
  • Clear floating tab bar in WorkoutSummaryView
  • Activate new plans immediately
  • Anchor coach input above tab bar
  • Add score filter haptics
  • Clarify score page copy
  • Refine score and exercise detail polish
  • Improve score hero headline wrapping
  • Address Hermes review feedback [codex]
  • Simplify Score education sheet
  • Hide empty Score comparison states
  • Simplify Increment Score copy and trend states
  • Polish Increment Score QA findings (onemore-u6wp)
  • Stabilise Increment Score ring polish
  • Unify muscle volume thresholds (onemore-bpwj)
  • Polish workout logger header
  • Polish workout header controls
  • Improve ad hoc workout generation
Week of May 3, 2026

Align set row columns regardless of unit hint and keep transient workout snapshots in memory.

See all 64 changes
App
  • Align set row columns regardless of unit hint
  • Heal stale completedDayIndices via history rebuild (#459)
  • Streamline dashboard record workout flow
Watch
  • Keep transient workout snapshots in memory
AI Coach
  • Allow grounded skip mentions in workout summaries
General
  • Remove root header background slab
  • Stabilize Increment Score hero card width across lens switches
  • Restore score window animations
  • Hide tab bar on workout summary
  • Handle top-set backoff progression (onemore-32c2)
  • Keep completed exercise recommendations
  • Stale-hide alias fallback recommendations
  • Preserve progression recommendations
  • Revert bd-init scope creep that landed in #513
  • Preserve planned warmup ramp defaults
  • Dedupe feed and training load sessions
  • Keep watch workout sync live
  • Stabilise logger set row alignment
  • Explain score no-signal state
  • Clarify analytics event semantics
  • Clear stale active program after plan completion
  • Use estimated effort in training load preview
  • Keep TestFlight uploads from dirtying project (onemore-0399)
  • Recompute stale increment score history
  • Prevent duplicate offline android workout logs
  • Polish android mvp shell (onemore-lv5.1)
  • Add android mvp sync path (onemore-lv5.1)
  • Clean up increment score hierarchy copy
  • Clean up logger ux issues (onemore-nfkm)
  • Track post-workout score reveal dismissal (onemore-6u0.3)
  • Clean up no-plan dashboard copy (onemore-3fzo)
  • Make score workout cta solid (onemore-fi16)
  • Use fresh evidence in score reveal (onemore-uxtz)
  • Shorten post-workout score labels (onemore-9wad)
  • Make score component bars semantic (onemore-pla)
  • Add plan-aware score focus action (onemore-lti)
  • Frame first score reveal as baseline (onemore-koaw)
  • Add score-moving next actions (onemore-vs1)
  • Simplify first-run score empty state (onemore-684z)
  • Avoid planned workout CTA without plan (onemore-73qc)
  • Clarify score movement breadth component (onemore-l4z)
  • Use stored score history comparison (onemore-cf6)
  • Expose score calendar fallback quality (onemore-6u0.8)
  • Aggregate score range driver themes (onemore-kgh3)
  • Explain score delta events (onemore-w0z)
  • Add score education surface (onemore-00c)
  • Label score driver impact units (onemore-4yf)
  • Explain score trend drivers (onemore-crd)
  • Add score trend graph state (onemore-88a)
  • Add score analytics events (onemore-b1k)
  • Complete score no-signal states (onemore-b2s)
  • Add score evidence drilldown (onemore-iwo)
  • Stabilize program preview media (onemore-vth1)
  • Persist first-run branding gate (onemore-hodb)
  • Smooth feed pagination and tab chrome (onemore-qjx.6, onemore-c9pg)
  • Simplify sidebar-owned settings routes (onemore-umc.1)
  • Clarify Increment Score explanation UX (onemore-5uw onemore-ocg)
  • Focus onboarding current question (onemore-ycds)
  • Revise Trends coachmark copy (onemore-j74u)
  • Align onboarding tagline (onemore-jwj6)
  • Clarify root tab IA (onemore-4cr1)
  • Clarify onboarding benchmark step copy (onemore-iz6j)
  • Brand first-run launch state (onemore-u9n6)
  • Land on score home after onboarding (onemore-i73b onemore-brf8)
Week of April 26, 2026

Re-tap score tab scrolls back to top (onemore-uoo) and wire increment-score history + upload handlers (onemore-f7e).

See all 45 changes
App
  • Re-tap Score tab scrolls back to top (onemore-uoo)
  • Inset in-progress workout banner below dynamic island (onemore-s0u)
  • Tighten Live Activity rest pill to digit-width
  • Hug rest-timer pill to its digits on the lock screen
  • Restore in-progress workout banner hidden by tab header chrome (onemore-f1s)
  • Persist Increment Score on every recompute (onemore-qhe)
  • Asymmetric scroll-header deadband to stop fling jitter (onemore-dcu)
  • Attach ProgramPhaseWindowContext to Ask Coach requests (onemore-0kv)
  • Unify deload detection on calendar truth (onemore-gpv)
  • Clear floating tab bar in coach input padding
CLI
  • Wire increment-score history + upload handlers (onemore-f7e)
  • Sync package-lock.json to unblock npm ci
  • Incremnt login works headless on SSH/Termius (onemore-drq)
Dashboard
  • Parallel legend chips for Done/Planned/Rest (onemore-bphu)
  • Give EmptyGoalCard the same chrome as other cards (onemore-hbbi)
  • Label signal tiles with their titles (onemore-6i0f)
  • Promote 'Muscle Coverage' to section header style (onemore-onhi)
  • Legend explains Done/Planned/Rest chips on week strip (onemore-6zfq)
  • Completed card status semantics no longer color-drift (onemore-l560)
  • Today pill no longer overlaps right chevron
  • Show day card + signal tiles to no-plan users (onemore-3fzo)
General
  • Open blank custom programs in workout view
  • Promote score to root tab (onemore-6u0.2)
  • Trigger increment score backfill from dashboard (onemore-tqi)
  • Backfill increment score trend history (onemore-tqi)
  • Polish increment score trust detail
  • Cache dashboard increment score snapshot (onemore-c7g)
  • Coalesce feed pagination updates
  • Persist increment score snapshots (onemore-6xi)
  • Advance feed pagination cursor
  • Stabilize dashboard and feed scroll chrome
  • Clear increment score tab bar overlap
  • Improve Langfuse observability (onemore-p12.5)
  • Add increment score drilldown (onemore-8l0)
  • Calibrate increment score progression weighting
  • Consume exported increment score replay inputs (onemore-i14)
  • Make archon post-review fix-aware (onemore-2bu)
  • Add increment score replay harness (onemore-i14)
  • Preserve historical recommendation snapshots
  • Address review HIGH findings (H1/H2/H3)
  • Address remaining alias review comments
  • Address canonical recommendation review
  • Canonicalize recommendation identity
  • Attach eval scores to Langfuse traces
  • Complete Phase 2 — repair tests, sync-service phase context, sync-restore wiring (onemore-0kv)
Week of April 19, 2026

Surface cardio context in workout summaries and acknowledge positive workout readiness.

See all 130 changes
App
  • Hide dashboard start button in subviews
  • Restore compact summary header
  • Reduce perceived workout summary lag
  • Scope dashboard muscle map to the selected week
  • Dashboard taste pass — runna-style cleanup
  • Add dashboard start workout picker
  • Keep plan exercises visible after logger dismiss
  • Soften logger rest bar edge and polish muscle detail sheet
  • Tighten swiftui accessibility follow-ups
  • Unify summary surfaces across app and shares
  • Unify PR badge formatting and clean up e1RM display
  • Reserve trophy column on set rows to keep alignment
  • Soften incomplete-set progression recs
  • Surface manual programs and tighten plan completion UI
  • Stop using stale sync session after refresh failure
  • Clarify final week and completion recap state
  • Clear floating tab bar on scroll-based destinations
  • Open sidebar destinations directly without tab-swap
  • Prevent dashboard content slinking during sidebar drag on iOS 26
  • Correct plan week math for non-Monday plan starts
  • Filter expected HealthKit/ActivityKit background errors
  • Restore distinctive haptic cues lost in unification refactor
  • Center workout plan header to match other root tabs
  • Align chat composer to tab bar and match plan title size
  • Stack phase label under program title to avoid truncation
  • Center root-tab titles on screen, unify font size
  • Sidebar content slides in lockstep with drawer reveal
  • Align settings header with feed/ask pattern
  • Float sidebar content as phone-shaped card with visible curves
  • Round sidebar content edge and deepen overlay shadow
  • Plan header uses solid background with subtle elevation shadow
  • Remove scroll tracker from dashboard entirely
  • Dashboard falls back to compact-only header to stop hangs
  • Replace scroll-up snap with 3x-faster decay to stop dashboard freeze
  • Snap hide-on-scroll header back on any upward scroll
  • Smoother hide-on-scroll fade and stop dashboard crash
  • Revert to compact-only header on dashboard, plan, feed
  • Always-on liquid top strip replaces fading sticky chrome
  • Enlarge muscle thumbnail in logger weekly sets row
  • Keep plan day tabs pinned and soften sticky header seam
  • Double muscle thumbnail size in dashboard coverage rows
  • Smooth hide-on-scroll header and tighten hide thresholds
  • Revert hide-on-scroll frame collapse to stop jitter and crash
  • Unify onboarding step counter and hide-on-scroll header
  • Read safe-area top from unignored reader for sidebar drawer
  • Smooth sidebar animations and align drawer avatar
  • Enlarge muscle map diagrams on dashboard and cycle summary
  • Animate muscle map fill and promote it to its own cycle summary tab
  • Clear floating tab bar inset in AskView sheet
  • Unify avatar placement on coach and settings
  • Differentiate ask coach chips and add liquid glass input
  • Hide-on-scroll headers for dashboard, workout, feed
  • Animate sidebar close reliably
  • Remove dim scrim from sidebar content
  • Sidebar drawer entry points across root tabs
  • Refine premium social card themes
  • Tighten feed workout share card
  • Add anatomy muscle thumbnails
  • Align vitals coach notes UI
  • Unified Liquid Glass header on Feed and Workout
  • Ask coach input bar now floats just above tab bar with scroll-under
  • Float ask coach input bar over transcript with glass blur
  • Ask coach auto-scroll follows reveal; tab bar no longer bleeds on keyboard
  • Unify Feed chrome with real Liquid Glass
  • Propagate floating tab-bar height to tab-root scrollviews
  • Polish Liquid Glass chrome across tabs
  • Adopt iOS 26 Liquid Glass across tab chrome
  • Dashboard uses iOS 26 Liquid Glass toolbar
AI Coach
  • Surface cardio context in workout summaries
  • Acknowledge positive workout readiness
  • Return plan drafts on first ask reply
  • Strengthen ask coach plan draft prompt
  • Remove ask coach plan review flag gate
  • Raise ASK_MAX_TOKENS so program drafts fit in one response
  • Scope ask claim checks to referenced exercises
  • Add ask-claim factuality checks to summary eval
  • Surface imported plan link in coach
  • View imported plans without switching active
  • Stop double-counting program draft previews
  • Filter stored summary eval to current prompt cohort
  • Gated AskView UI for AI-generated program drafts
  • Add Ask Coach program draft plumbing
General
  • Deepen ask coach training decisions (onemore-0e3.5)
  • Move sync migrations out of startup (onemore-szi.1)
  • Align weekly activity with visible week
  • Restore dashboard today context card (onemore-0ft.2)
  • Improve feed scroll performance (onemore-wrh)
  • Stabilize tab-bar hide-on-scroll (onemore-cue)
  • Cron deploys must omit commitId on Render API (onemore-96a)
  • Inline failure reasons + ops playbook (onemore-2lf)
  • Weekly ops-review digest + incident template (onemore-2lf)
  • Publish promptfoo scores to Langfuse (onemore-p12.2)
  • Tighten post-change sweep signal (onemore-1ei.3)
  • Add post-change bug sweep (onemore-1ei.3)
  • Add active work visibility (onemore-kmy.8)
  • Harden typed coach memory (onemore-0e3.2)
  • Expose coach read tools (onemore-0e3.1)
  • Redact Langfuse AI payloads (onemore-do2)
  • Replace legacy coach memory with typed context (onemore-hgy)
  • Add HealthKit activity level card
  • Add Langfuse context metadata for AI surfaces
  • Adjust coach input chrome
  • Add ask routing metadata to Langfuse
  • Report OpenRouter costs to Langfuse
  • Add Langfuse observability for AI coach
  • Route ask coach context by intent
  • Auto-hide root tab bar on scroll
  • Hide dashboard tab bar on scroll
  • Simplify dashboard volume card
  • Hide dashboard start workout on scroll
  • Harden sync and share flows
  • Preserve dashboard week in history feed
  • Sunday Coach Check-in (Phases 1+2)
  • Polish dashboard volume chart
  • Size rest-timer pill to content in live activity
  • Refine dashboard signal polish
  • Review coach plans before saving
  • Polish dashboard signal surfaces
  • Streamline dashboard week flow
  • Restore chat plan creation
  • Refine dashboard hierarchy
  • Bridge ios data exchange to mobile sync transport
  • Stop worktree builds depending on local xcconfig
  • Preserve active plan when creating programs
  • Restore logger exercise note placement
  • Bridge ios scheduling to mobile core
  • Add mobile sync foundation
  • Add glass headers across app tabs
  • Add safe exit for guided plan preview
  • Make onboarding continue buttons fully tappable
Week of April 12, 2026

Refresh dashboard muscle coverage and add coach session tracking.

See all 86 changes
App
  • Align brand logo with IN icon
  • Tighten onboarding setup transitions
  • Redesign dashboard volume gaps
  • Move shared plan import to root level so it works from any tab
  • Dashboard visual polish — adaptive tokens + body silhouette fix
  • Restore current workout recommendation pills
  • Correct anonymous backup export scopes
  • Tone down washed-out icons and drop splash logo
  • Eliminate chat flicker and input layout issues
  • Constrain Dynamic Island rest timer width
  • Treat sub-1kg e1rm gaps as milestone reached
  • Resolve blank logger on first workout after launch
  • Fall back to session recs when plan store holds deload sentinel
  • Scope drag-to-reschedule to the dragged week only
  • Equalize plan day pill widths
  • Expand historical notes card width
  • Stabilize logger nested presentation
  • Restore inline logger set metadata
  • Avoid logger teardown during sheet presentation
  • Make session note card full width
  • Persist and surface upcoming-deload rec on pre-deload session
  • Stabilize logger modal presentation
  • Stop logger history sheet dismissing itself
  • Keep bench row metadata inline
  • Align plan view week number to calendar, not cycle counter
  • Suppress progression recs for deload sessions
  • Show deload badge on exercise history rows
  • Stop anchoring post-deload progression to deload weight
  • Route fully-missed weeks to the recovery sheet
  • Format displayed 1rm values with one decimal
  • Restore muscle breakdown interactions
  • Improve muscle breakdown navigation
  • Restore PlanView as default Workout tab content
  • Skip splash screen, offer guide/scratch choice in chat
  • Chat-driven program creation from Settings
  • Add equipment labels to exercise rows and brand How It Works sheet
  • Polish plan creation onboarding UX
  • Use Monday-start calendar in recommendedActivationDate
  • Wrap plan week number for multi-cycle programs
  • Remove double-write to shouldNavigateToWorkout
  • Cancel loginTask on CloudSyncPromptSheet disappear
Watch
  • End orphaned HKWorkoutSession on recovery and replace
AI Coach
  • Add coach session tracking
  • Tighten cycle summary notes
  • Retune coach prompts and switch to gpt-5.4-mini
General
  • Stabilize ios tests and soften dashboard chrome
  • Separate exercise notes from workout notes
  • Update onboarding setup CTA copy
  • Restore dashboard top chrome
  • Refresh dashboard muscle coverage
  • Restore social profile snapshot compatibility
  • Clarify workout and exercise note UX
  • Add versioned ai output metadata to stored evals
  • Release anonymous hosted backup on sign-in
  • Round 2 of review — tighten anon endpoint + install id + priorities
  • Drop user profile from anonymous hosted snapshot
  • Strip HealthKit data from anonymous hosted snapshot
  • Real opt-out for hosted persistence + drop seed full-scope token
  • Add anonymous hosted persistence
  • Plan completion recap + next-plan handoff
  • Preserve ask coach set breakdowns
  • Persist ask coach conversations in snapshots
  • Tighten ai summary output constraints
  • Tighten ai summary eval guardrails
  • Clean up iOS compiler warnings
  • Harden coach follow-ups and watch recovery
  • Add ask coach follow-up from workout summary
  • Refresh ask coach history view
  • Avoid ask coach seeded state flicker
  • Separate ask coach link and metric styling
  • Link ask coach exercise mentions
  • Polish ask coach loading states
  • Refine ask coach reply pacing
  • Improve coach chat pacing
  • Make ask coach chat feel more native
  • Normalize recovery outcomes for coach and cli
  • Add recovery transparency summaries
  • Use active program state in ask coach context
  • Align week context and progress counts
  • Restore week phase progress handling
  • Persist planned week phases
  • Improve history calendar clarity
  • Limit adhoc workout entry to today
  • Stabilize adhoc workout handoff
  • Explain incremnt onboarding flow
  • Improve workout handoff and onboarding flow
Week of April 5, 2026 v1.2.1

Refine onboarding plan handoff and improve onboarding editing flow.

See all 41 changes
App
  • Unify exercise action menus
  • Remove sticky workout footer
  • Improve dashboard and workout ux
  • Restore centre alignment of Weekly Sets button in bottom actions
  • Resolve UUID type mismatch in WorkoutSummaryView, add todos and dashboards
  • Accessibility, perf, and animation improvements
  • Preserve full export payload on .onemore import
  • Replace onboarding with deterministic chat
  • Harden gateway validation and personalize shared import loads
  • Add external write gateway skeleton for shared program imports
  • Keep onboarding active until completion
  • Wire preview environment objects
  • Inject navigation router in settings preview
  • Inject navigation router in previews
General
  • Refine onboarding plan handoff
  • Improve onboarding editing flow
  • Wire up HistoryView & DashboardView performance telemetry
  • Add unfollow action to social feed
  • Harden program share flows and wire CLI share parity
  • Add adaptive goal recovery flow
  • Tighten workout prompt claim discipline
  • Use working graphify rebuild command
  • Improve workout summary grounding
  • Make bakeoff result ids unique
  • Add workout prompt bakeoff tooling
  • Keep real summary eval artifacts report-only
  • Make stored summary eval test lintable
  • Add real summary eval workflows
  • Runna-style goals UX redesign
  • Exclude deload weeks from goal health score calculations
  • Strip XML fence tags from AI coach responses before display
  • Confidence-first goals UX redesign
  • Group empty strength goals by muscle
  • Refine strength goals empty state
  • Improve strength goals overview
  • Remove hardcoded .kg unit in goal fallback path
  • Track goal progress from plan start
  • Correct goal backfill baselines and cycle summary repair
  • Goal baselines inflated by post-plan progress, chart x-axis ambiguity
  • Cycle summary shows 0 sets when skipping incomplete week
  • Var to let in refreshConnectionUserProperties, bump build to 176
Week of March 29, 2026

Add experimental rust browse engine and restore detail pane focus and scrolling.

See all 107 changes
App
  • Use build setting variable in plists to stop dirty files
  • Restore testflight archive and bump build 171
  • Add volume and sets deltas to workout summary
  • Dismiss logger before opening vitals
  • Soften readiness copy
  • Beginner exercise substitutions, Decline Crunch, and media gap fills
  • Correct spot-check test assertion for 4-day template
  • Filter advanced exercises from dynamic pools for beginners
  • Substitute advanced exercises for beginner-safe variants in auto-generated programs
  • Improve abs variety in gym-tier templates
  • Add Decline Crunch default load and dynamic abs pools
  • Add Decline Crunch media mapping
  • Add Decline Crunch to exercise catalog
  • Add 'build from scratch' option to onboarding flow
  • Ungate goal preview — always show progression projections after program creation
  • Show working weight in plan view and prevent warmup badge clipping
  • Don't schedule workouts before plan activation date
  • Move AIFeedbackService.swift to Components/ to match project registration
  • Restore widget build and snapshot helper
CLI
  • Default browse engine back to ink
  • Sanitize ansi stripping and add rust lockfile
  • Add experimental rust browse engine
  • Show detail overflow affordance in browse
  • Restore detail pane focus and scrolling
  • Prevent browse header clipping
  • Refine browse layout and session detail depth
  • Auto-select first item when entering items pane
  • Improve browse QoL navigation and search UX
  • Align browse branding and refresh npm docs
  • Resolve browse lint regressions
  • Add mode-driven browse navigation and search
  • Render browse lists as stable line rows
  • Make tab section-only and stabilize browse redraw
  • Improve browse keyboard flow and list scrolling
  • Harden and polish browse UX
  • Add browse list viewport
  • Reduce browse flicker
  • Add Ink browse mode
  • Expand body weight lookup from exact session date to 7-day window
  • Remove unused destructuring variable in weight history sort
  • Add set progressions, weight history, and readiness band to workout coach context
AI Coach
  • Rewrite workout summary from fault-finder to coach
  • Deepen workout session notes — remove sentence limit, require data specificity
General
  • Preserve readiness context in workout summary
  • Move session note to header
  • Auto-fix plist bundle versions
  • Add workout notes to summaries
  • Strava-style profile redesign (clean branch)
  • Add fibonacci function
  • Persist AI feedback to database
  • Tighten workout coach context — 3d cardio window, real baselines, trim tokens
  • Don't assert causation in workout coach notes without supporting data
  • Extract ExerciseSetRow and fix set alignment across all views
  • Harden exercise slug migrations
  • Persist exercise slugs for identity lookups
  • Shorten default rest timers
  • Use project build version in plists
  • Tighten ui perf telemetry keys
  • Instrument production ui render timings
  • Preserve stable row identity in perf paths
  • Prepare smithery mcp publish
  • Show unread badge on feed tab
  • Delay adhoc workout start until type selection
  • Add rest day quick workout action
  • Align dashboard action rows
  • Reserve feed filter bar space and fade in on load
  • Trigger exercise animation when navigating to Workout tab
  • Plan view exercises now animate on day switch
  • Increase day card min height to prevent layout shift
  • Move day card animation to parent container
  • Show seconds instead of reps for time-based exercises in session detail
  • Center week progress ring and make it tappable
  • Update feed month title on scroll and sync to calendar mode
  • Address code review findings from multi-agent analysis
  • Address review feedback on adhoc consolidation
  • Update other-profile trophy case callback to pass scope
  • Navigate to correct leaderboard scope/week from badge history
  • Deduplicate leaderboard badge tiles in Trophy Case
  • Use snapshot PR count for milestones instead of undercounting events
  • Increase sleep session gap threshold from 2h to 4h
  • Rename Iron Crown to Session Monster, show one badge per tab
  • Add quick info row to vitals showing last night's sleep and next session
  • Backfill weekly badge history from activity data
  • Add badge award history with tap-to-leaderboard navigation
  • Show overnight sleep and schedule in vitals, not averages
  • Gracefully skip gym/group badge sections when tables missing
  • Resolve 4 pre-existing test failures
  • Move warmup badge off the set row
  • Prevent warmup set unit clipping
  • Retrigger plan day exercise animations
  • Refine social feed loading and comment profiles
  • Combine social sections with dual tilted phones, link npm package
  • Remove double Dynamic Island from mockups, increase hero tilt
  • Normalize leaderboard volume by bodyweight (xBW)
  • Prevent text clipping in set rows on completion
  • Rename stale test to match email prefix fallback behavior
  • Use email prefix as fallback display name instead of "Athlete"
  • Dim unavailable chart ranges
  • Collapse cycle history in plan details
  • Remove trapped next cycle action
  • Align coach note loading states
  • Improve dashboard week strip long press
  • Volume regression gate and workspace updates
  • Only show scheduled days on current/future weeks in monthly calendar
  • Show scheduled workouts on history calendar + long press to open
  • Show planned workouts on monthly activity calendar
  • Clean up recommendation badges and warmup label truncation
Week of March 22, 2026

Show volume % change per week in simulation exercise tables and display volume metrics in simulation report html.

See all 111 changes
App
  • Replace rep wheel picker with text field
  • Inline rep picker and defer post-creation navigation
  • Drive Live Activity directly instead of relying on onChange
  • Show On Track instead of Needs Attention for brand new plans
  • Put weight and reps side by side, remove level indicator
  • Purge corrupted 30s defaults in migration
  • Avoid false save prompt at min duration
  • Migrate corrupted custom rest durations under 30s
  • Can't select Abs in custom exercise muscle group picker
  • Save-as-default now saves the actual total duration
  • Increase surfaceElevated contrast in light mode
  • Replace level picker with bench 1RM input
  • Use triggering exercise name for rest timer bar
  • Replace floating diamond with inline tick on progress gauge
AI Coach
  • Improve coach prompt accuracy and deduplicate ask prompts
  • Replace deepseek with gemini 2.5 flash as primary summary model
Dashboard
  • Hide "Inactive Plan" label for adhoc workouts
General
  • Simulation now uses smartExerciseDefaults for prescribed reps
  • Show volume % change per week in simulation exercise tables
  • Display volume metrics in simulation report HTML
  • Add volume progression tracking to simulation diagnostics
  • Prompt to skip or finish incomplete training week
  • Backfill vitals on existing cycle summaries from health history
  • Show unit label on sets delta (e.g. '-3 sets' instead of '-3')
  • Add pencil icon to bodyweight card to hint it's editable
  • Uniform height for cycle summary stat cards
  • Export progression recommendations in snapshot
  • Remove recap overlay from feed card
  • Badge notification auto-opens trophy case sheet
  • Swiftlint pre-commit now lints only staged files
  • Trophy case as sheet, new badge categories, profile photos in notifications
  • Show profile photos in notification inbox
  • Add first workout, 5 workouts, PR count, and plan completion badges
  • Address review findings for trophy case
  • Add trophy case with persistent badges on social profiles
  • Add vitals snapshot card to cycle summary
  • Bodyweight edit updates cycle snapshot, only updates profile for latest cycle
  • Add bodyweight to cycle summary stats with edit and delta
  • Require at least 2 working sets for clearly-too-light bypass
  • Show 'missed' rows in report for skipped weeks
  • Add partial completion to simulation (set drops, exercise skips, missed workouts)
  • Relax clearly-too-light bypass to >= repHigh and move before fatigue check
  • Lower light isolation fatigue threshold and add 'clearly too light' bypass
  • Hide gym pill from active workout logger
  • Replace single-exercise weight metric with exercises up/down count
  • Restore feedback reason chips and store tone with vitals summaries
  • Disable model racing so Claude is always primary
  • Show 'each' for dumbbell and 'incl. bar' for barbell weights
  • Suppress exercise now also removes it from current program
  • Add 'more watches coming soon' to integrations section
  • Update progression explanation to match 2-for-2 rule and remove retry reference
  • Add simulation report with 10 persona variations
  • Add 10 missing strength standards from strengthlevel.com
  • Add same-weight check to 2-for-2 rule
  • Tune progression parameters and add 2-for-2 weight increase gate
  • Use wrapping arithmetic in simulation hash combination to prevent integer overflow
  • Exact match for BaselineLift bench press, clamp decreaseWeight in updateRecommendations
  • Guard against zero working weight in progression logic
  • Add simulation summary diagnostics
  • Correct Monte Carlo noise model issues
  • Thread BaselineLift through ProgramBuilder for bench press
  • Compute initial capacity once to fix weight cancellation
  • Handle workoutCleared message on Watch to stop phantom workout tracking
  • Add monte carlo progression baseline
  • Lock progression simulation to plan lifecycle
  • Compare progression simulation across durations
  • Add progression simulation regression suite
  • Add progression simulation test harness
  • Clarify readiness banner action
  • Stop readiness banner from dismissing on tap
  • Refresh profile report after edit
  • Keep logger gym editing in edit mode
  • Route onboarding completion to workout
  • Prevent profile tab wrapping
  • Open social profiles from avatars
  • Open profiles from follower lists
  • Prevent follow label wrapping
  • Compact warmup label on small screens
  • Disable feed sort in groups
  • Cycle feed quick filters
  • Cycle social feed filters
  • Persist ai feedback per object
  • Improve social feed recap affordance
  • AI feedback thumbs up/down across all coach surfaces
  • Backfill historical cycle summaries with volume, PRs, muscle data
  • Address self-review feedback on cycle summary
  • Swipeable cycle summary with volume, PRs, and muscle data
  • Normalize selection badges
  • Address gym feature review feedback
  • Add workout gym level support
  • Cache social avatars in feed
  • Add social feed sort toggle
  • Block self follow in social lists
  • Switch social feed to animated scroll stack
  • Make social feed cards slide in
  • Add motion to social feed transitions
  • Reduce swift concurrency warnings
  • Simplify social feed filters
  • Vendor Transmission local package
  • Default history month to today
  • Mention social feed in sync onboarding
  • Restore widget extension icon assets
  • Clean up social feed filters
  • Add social feed time filter
  • Dedupe group feed activities
  • Render group PR activities with full payload
  • Exclude warm-up sets from cascading logic and progression recommendations
  • Gate Coach and Feed tabs behind Cloud Sync sign-in
  • Exercise suppression from plan view
  • Update copy and test names to reference repFloor
  • Address readiness adaptation review issues
Week of March 15, 2026

Stop rest timer when workout is discarded on iphone and add lottie animations for pr, workout complete, and empty states.

See all 134 changes
App
  • Use cycle-based week numbering in progress charts
  • Add Lottie animations for PR, workout complete, and empty states
  • Sliding 3-week window for progress chart
  • Align week ring, add staggered animations, enlarge view toggle
  • Derive goal preview from program exercises, skip bodyweight
  • Derive plan goals from program exercises, not hardcoded big 5
  • Similar exercises section in swap sheet
  • Sync exercise swap to Watch immediately
  • Seed social profile fields from cache to prevent privacy toggle flash
  • Add profile header with avatar to stats and social report views
  • Make profile picture tappable in activity detail view
  • Apply textPrimary color to username in activity detail view
  • Show skeleton instead of empty state during initial feed load
  • Add explicit AI opt-in consent flow
  • Restore AI coach master toggle
  • Align set rows with monospaced digits in exercise cards
  • Add divider between feed activity cards
  • Use proportional right column in feed cards for smaller devices
  • Suppress privacy picker animation on social profile load
  • Increase dashboard greeting contrast under top chrome
  • Normalize tab header typography and top spacing
  • Add shared top safe-area chrome for status bar bleed
  • Remove social settings section and centralize setup in feed
  • Revert AI coach default back to enabled
  • Default AI coach to disabled for new users
  • Add master toggle to disable all AI coach features
  • Simplify social management UI and remove invite code flow
  • Reconcile follow conflict state in social UI
  • Improve stats deep-dive exercise picker
  • Keep social profile text readable on dark surfaces
  • Resolve effort score HealthKit race condition
  • Prevent vitals summary text from being clipped
Watch
  • Stop rest timer when workout is discarded on iPhone
  • Explicitly clear Watch state on workout discard
  • Sync rest timer skip from iPhone to Watch
  • Add memberwise init to watch CurrentWorkout and wire weightUnitLabel through
  • Add weightUnitLabel to all CurrentWorkout model copies with backward-compat decoding
  • Wire user weight unit preference (kg/lbs) to watch
  • Show secs for time-based exercises, fix BW unit display, fix dots/button spacing
  • Fix set entry layout - set counter top, name below clock, right-size Log Set button
  • Snap weight display to 2.5kg steps during crown rotation
  • Prevent exercise name overlapping clock, improve inactive button visibility
  • Restore reliable phone-watch workout clearing and sync
  • Prevent rest timer flicker after logging set
  • Prevent weight text truncation for decimal values
  • Parse Watch's setCompleted message format in iPhone handler
CLI
  • Clamp negative goal progress and filter swapped-out exercises
AI Coach
  • Contextual Ask Coach buttons on dashboard and program overview
  • Add dynamic context via tool calling to Ask Coach
Dashboard
  • Center week progress ring and make animations visible
  • Remove grey safe area scrim and greeting text
General
  • Remove similar exercises section from swap sheet, keep quick filters
  • Extract defaultTotalWeeks constant and widen peak window for 5-week cadence
  • Use progressionType instead of hardcoded % 5, clarify session override
  • Deload on week 5 instead of 4 and suppress misleading pre-deload pills
  • Remove stale WatchSyncDecisionLogic.swift references from project
  • Filter PRs feed on workout payload instead of separate pr_achieved events
  • Scope full-gradient wordmark to social exports
  • Center dashboard week ring without dropping greeting
  • Show stable previous-set date labels
  • Use rep history for bodyweight deep dive charts
  • Sync exercise state to Watch immediately on every set change
  • Route next-cycle CTA to workout plan
  • Show actual reps in progression summary
  • Use three-tier rep ranges for light isolation exercises
  • Harden social group update flow
  • Add group editing and member profile navigation
  • Show consistent header across Social tabs to reduce jarring layout shifts
  • Pass HTTP method to routeRequest to fix group creation crash
  • Revert Transmission .presentation to .fullScreenCover
  • Resilient feed decoding, duplicate header, and session backup
  • Distinguish AI Coach disabled vs sync missing errors
  • Add group feed and weekly leaderboard
  • Reduce createGroup and joinGroup from 3 to 2 API calls
  • Align plan pace value and suffix columns
  • Add coach memory for longitudinal AI context
  • Allow members to leave social groups
  • Add private social groups
  • Align social feed filters with PR activity
  • Default exercise detail to plan pace in plan context
  • Improve plan goals context and cycle summary navigation
  • Prototype logger recommendation intro
  • Improve social discovery and feed usability
  • Add Transmission library for card presentation transitions
  • Polish watch set entry layout and adaptive sizing
  • Smooth animations when switching days on Dashboard and feed
  • White checkmark on selected day pill for visibility
  • Consistent full-width separators between leaderboard and activities
  • Visible full-width separator between feed activities
  • Clean gap between feed activities matching Strava style
  • Load social profile at app startup for dashboard avatar
  • Thicker feed divider matching Strava's section separator style
  • Show day titles in plan selector, fix checkmark visibility
  • Leaderboard profile tap navigation, full-width feed dividers
  • Remove card background from leaderboard, move dots below content
  • Swipeable leaderboard card with volume + PR pages
  • Show social profile picture on dashboard header
  • Remove uuid cast in leaderboard UNION query
  • Weekly leaderboard card in social feed
  • Add program week phase to ask-coach context
  • Modernize ScrollView API and fix PR drought duplicate text
  • Feed pop-to-root using onReceive, fix PR drought duplicate text
  • Always pop to root when switching tabs
  • Ensure feed tab tap pops navigation to root
  • Align versus lift comparison values in fixed columns
  • Replace donut chart with muscle heatmap on feed cards
  • Social feed UX polish pass
  • Respect haptics toggle for all sensory feedback
  • Prevent privacy toggle flash on social profile settings load
  • Align date range and period filter on remote profiles
  • Set preferred color scheme to dark at app root
  • Correct versus comparison levels, names, and bodyweight handling
  • Add Versus comparison tab to social profiles
  • Don't fall back to logged-in user's avatar on remote profiles
  • Make feed activity divider visible
  • Parse full ISO 8601 timestamps in social exercise history
  • Social exercise history drill-down
  • Restore social moderation views to app target
  • Fully purge social reports on account deletion
  • Use visible feed cursor for pagination
  • Refresh social moderation PR
  • Review fixes for social moderation PR
  • Add feed diagnostics for social debugging
  • Add pii-safe social diagnostics to server logs
  • Restore gated social settings and improve follow-back flow
  • Polish social follow UX and username rediscovery
  • Gate feed notifications behind sync session
  • Gate social settings behind incremnt sync sign-in
  • Align feed empty state and gate ai vitals by coach setting
  • Stabilize social profile privacy state and improve feed empty state
  • Remove display-name gating from social follow flows
  • Improve iPhone compact layouts and training load empty states
  • Reconcile social follow state conflicts and upload diagnostics
  • Dedupe comments and prevent double count increments
Week of March 8, 2026

Add mute, block, report backend endpoints and add feed engagement tracking — session duration, impressions, taps.

See all 125 changes
App
  • Add feed engagement tracking — session duration, impressions, taps
  • Add user-specific social profile report from feed
  • Repurpose stats report as profile entry points
  • Use custom header for Feed tab and hide tab bar when keyboard is up
  • Render markdown in AI summary text instead of showing raw ** markers
  • Add missing return in WorkoutHeaderData.from(payload:) method
  • Unwrap optional URL in fetchComments guard chain
  • Show message when AI coach has no insight
  • Make set row layout adaptive for smaller screens
  • Hide Feed nav title on empty state
  • Force dark toolbar color scheme on social feed views
  • Improve contrast on social feed controls
  • Apply dark theme to social feed views
  • Add feed tab pop-to-root behavior
  • Preserve ai summary clear control gating
  • Suppress weight progression recommendations for time-based exercises
  • Allow added weight on time-based bodyweight exercises (plank, dead hang)
  • Correct history recommendation lookup and merge
  • Unify history card styling with workout summary + show recommendations
  • Harden watch live activity snapshot sync
  • Prevent set weight/reps from snapping back during editing
  • Sync Live Activity when sets are logged from Apple Watch
  • Resolve broken DateFormatter references from centralization refactor
  • Enhance activity heatmap with labels, streak, and legend
  • Modernize deprecated SwiftUI APIs
  • Replace hardcoded font sizes with semantic text styles
  • Align privacy declarations with actual data usage
  • Add scroll-to-top on tab re-tap for Vitals & Programs, fix tab toggle bug
  • Stabilise dashboard day card heights to prevent heatmap shift
  • Use Apple systemGray5 (#3A3A3C) for Watch icon background
  • Use #2C2C2E background for Watch icon for clearer mask visibility
  • Remove analytics opt-in toggle to resolve App Store guideline 5.1.2(i)
  • Update Watch app icon background to dark grey for App Store guideline 4
  • Gate vitals AI summary generation before 6am
  • Calendar scrolls to end of plan with phase labels
  • Vitals SwiftUI improvements and filter chip ordering
  • Don't show scheduled workouts in past weeks on calendar
  • Prevent readiness band label word-wrap on narrow screens
  • Disable vitals pull-to-refresh regeneration
  • Make readiness block dynamic-type friendly
  • Add 15-char name limit and remove program builder progress bar
  • Explain HealthKit read permissions and AI coaching value
  • Prefill weight from Apple Health when authorized
  • Add INCREMNT Sync info step and rename Cloud Sync
  • Add HealthKit permission step and fix Settings deep link
  • Slim down feature tour screenshot frame and remove redundant Done button
  • Add feature tour carousel
  • Ask coach UX polish and accessibility fixes
  • Handle summary-only ask history endpoint
Watch
  • Increase tap targets on set logging screen for Watch Ultra
CLI
  • Upgrade retired claude-3.5-haiku to claude-haiku-4-5
  • Treat bodyweight exercises correctly in AI summaries
  • Shared priority-signal ranking across AI summary surfaces
AI Coach
  • AI coach settings — data toggles + tone config
  • Sharpen AI prompts — silence over filler, voice alignment
  • Add plan-switch context to coach notes
  • Avoid stuck loading state after ask reset
  • Harden ask coach thread handling
  • Enrich coach context with PR dates, progression, rep PRs
General
  • Add mute, block, report backend endpoints
  • Add mute/block/report UI to feed cards, detail, and profile views
  • Add social moderation backend — mute, block, report
  • Onboarding screenshots fill width with bottom fade
  • Add account deletion backend endpoint
  • Add account deletion UI and API endpoint
  • Name OpenRouter as AI provider and add privacy/terms links
  • Bigger onboarding screenshots and tighten subtitle copy
  • Increase onboarding feature tour screenshot size
  • Icon alignment in resources section of settings
  • Social post font, empty post square, and caption design consistency
  • Always show reset data section and fix icon alignment in settings
  • Address App Review rejection for HealthKit and AI data disclosure
  • Reuse Apple Sign-In key for APNs push and normalize private key
  • Harden social v2 merge blockers and add automation coverage
  • Address PR247 review — privacy, race conditions, force unwraps
  • Address PR247 review feedback and media upload edge cases
  • Ship social v2 identity profiles media and notifications
  • Tighten username backfill guard and isolate social report scratch storage
  • Harden social profiles — table scan, LIKE injection, UserDefaults leak, cursor duplication
  • Ship identity-first social profiles and full report view
  • Catch NO_INSIGHT prefix in AI coach responses
  • Reuse session summary views in feed detail
  • Sync profile name to display_name on snapshot upload, improve follower list
  • Use 'Athlete' as final display name fallback instead of account ID
  • Social feed Phase 2 — polish and resilience
  • Skip startup dedupe when index exists, use fractional-second cursor
  • Harden social activity consistency and like state
  • Address Phase 1 review issues on social feed PR
  • Harden social follow and feed behavior
  • Add social feed — follow athletes, view workouts, like activities
  • Increase OpenRouter timeouts and update DeepSeek model ID
  • Restore vitals AI summary from persisted history before cache check
  • Show BW label for bodyweight exercises on Apple Watch
  • Default exercise progress chart to 3M view instead of All
  • Finalize open PR follow-up fixes
  • Preserve manual temperature history with wrist data
  • Source wrist temperature from Apple Watch via HealthKit
  • Harden persisted vitals summary contract
  • Persist vitals AI summaries and expose via CLI
  • Prevent onboarding text clipping on smaller screens
  • Stop AI workout summary from questioning programme selection
  • Hide AI vitals summary when user has no health data
  • Default vitals training load filter to strength
  • Use actual current 1RM from session history for goal baselines
  • Use encouraging first-week prompt for AI cycle coach
  • Prevent catch-up workout showing on freshly activated plans
  • Refresh vitals dashboard polish
  • Polish custom tab bar motion
  • Correct training load baseline behavior
  • Animate vitals gauges on appear and dim stale readings
  • Use shimmer loading and accent background for vitals AI summary
  • Vitals dashboard with health gauges and AI summary
  • Align checkpoint ai context with visible goals
  • Enhance week checkpoint with progress details and AI coaching
  • Show cycle summary on week skip and add skip context for AI coach
  • Defer tab navigation until week continuation prompt is resolved
  • Prompt to continue week on program switch and clean up rationale
  • Navigate to first workout after onboarding and program creation
  • Suppress PRs for first-time exercises and add isFirstWorkout to AI summary
  • Update audio tests for disabled feature and use vertical equipment cards
  • Promote Weak Point Focus to core quick workout presets
  • Remove rest timer audio feature and settings toggle
  • Replace Apple Health deep link with inline permissions hint
  • Clamp bodyweight input to 20–300kg and remove redundant strength level copy
  • Add AI disclaimer text to coach features
Week of March 1, 2026 v1.2.0

Model fallback chain with 12s per-model timeout and in-app ai ask — natural language training queries.

See all 143 changes
App
  • Show seconds for time-based exercises
  • Show user message immediately in Ask Coach chat
  • Use brain icon only for Ask Coach button
  • Replace empty Ask Coach icon with labeled capsule button
  • Tweak OtherWorkoutCard layout — icon right-aligned, italic title
  • Render markdown in Ask Coach responses + animation polish
  • Render markdown in Ask Coach responses
  • Address healthkit review findings
  • Clear deload sentinels when switching programs
  • In-app AI Ask — natural language training queries
  • Zoom iOS app icon to match updated watch icon
  • Rename analytics toggle to avoid App Store tracking misinterpretation
  • Add transitions across stats, history, detail, onboarding, and muscle views
  • Enhance muscle diagram with greyed-out empty state and unified toggle
  • Sync latest HealthKit bodyweight on app launch
  • Write weight to HealthKit when saved in settings
  • Add toggleable bodyweight overlay on E1RM chart
  • Add HealthKit body mass history query
  • Add App Store review prompt after workout completion
  • Skip completed program days in calendar sync for current week
  • Check completedDayIndices in hasRemainingScheduledDay
  • Handle out-of-order workout completion in dashboard week strip
  • Show all training days in future weeks of calendar feed
  • Show past planned workouts in calendar feed view
  • Resolve build warnings and version mismatch
  • Allow starting past planned workouts from dashboard and grey out inactive plan button
  • Remove custom analytics consent modal (App Store rejection 5.1.2(i))
  • Contextual recommendation explanations and badge morph animation
  • Ai summary invalidation, regen, and sparkle indicators
  • SwiftUI animation polish pass
  • Remove redundant 10-second warning notification
  • Make Cable Crossover a synonym of Cable Fly
  • Apply smart defaults for replacement exercise after swap
  • Add missing compound exercises to restTypeByName
  • 4-tier rest durations — heavy compound 240s, light isolation 90s
  • Track original exercise name when user swaps during workout
  • Use movement pattern for Recommended split in PlanSwapSheet
  • Add MovementPattern enum and movementPattern(for:) to ExerciseCatalog
  • Hide AI coach UI when not signed into sync
  • Eliminate race in cycle AI summary persistence
  • Sort program exercises by equipment station after generation
  • Add EquipmentStation enum and lookup to ExerciseMetadata
  • Use correct start time for completed workout events
  • Prevent phantom recommendations for unperformed exercises
  • Prevent duplicate events from concurrent sync tasks
  • Replace feedback mailto with Plane issue creation form
  • Don't show open workout card on rest days after rescheduling
  • Reset workout timer when restoring stale drafts
  • Gate fallback metrics task and fix workout builder race condition
  • Share card export now matches in-app preview
  • Redesign Instagram share card
  • Add projected end-of-week toggle to body heatmap diagram
  • Unified 20-segment bar with per-muscle zone ticks and target marker
  • Bump existing exercises to 4 sets before adding new ones for volume targets
  • Default to first program variation, hide carousel behind toggle
  • Add volume floor augmentation and hide bodyweight equipment tier
  • Per-muscle hypertrophy thresholds for weekly volume indicators
  • Add lightIsolation rep range and program drift detection
Watch
  • Break exercise index echo loop between phone and Watch
  • Zoom watch app icon so it appears circular on Apple Watch
  • Show active exercise immediately when workout starts
  • Use per-exercise rest durations instead of single workout-level value
  • Drop body copy from no-workout screen
  • Update no-workout copy and fix app name in nav title
  • Restore startWatchApp to bring Watch to foreground
CLI
  • Use matching darkened color for logo shadow
  • Animate logo reveal line-by-line
  • Add branding, AI notes, and auth badge
  • Redesign cycle summary AI with enriched context
  • Add goals-list and goals-show endpoints
  • Include writeSchema and proposalSchema in contract output
  • Add programs show command and agent-friendly improvements
  • Correct normalizeSessionState test expectation
  • Validate server-supplied verificationUri before opening browser
  • Add styled pretty-print output as default for TTY
  • Make incremnt installable via npm and add --pretty flag
AI Coach
  • Machine-readable error codes, summary error states, hallucination guard
  • Improve Ask Coach reliability and thread UX
  • Use correct OpenRouter model ID for Haiku fallback
  • Model fallback chain with 12s per-model timeout
  • Make Ask Coach casual responses conversational
  • Reopen cycle summaries and refine notes UX
  • Improve coaching UX with plan comparison and polish
  • Rewrite coaching prompts to avoid LLM cheerleading, dim sparkle when done
Dashboard
  • Remove remaining estimateE1RM reference causing runtime error
  • Redesign dashboard UI with updated branding and styling
  • Hide Google sign-in option not yet implemented
  • Include exercises in session-show and fix field mappings
General
  • Scale AI coach response length to question specificity
  • Add bodyweight history to snapshot and AI coach context
  • Update default OpenRouter model — llama-3.1-8b removed
  • Surface HealthKit workouts in calendar and AI coach context
  • Reclassify muscle groups — Delts and Lats
  • Upgrade Ask Coach prompt and raise max_tokens to 500
  • Multi-turn Ask Coach conversations with full chat history
  • Rename Ask AI to Ask Coach, add tappable history rows and detail view
  • Persist AI model name alongside generated summaries
  • Add incremnt mcp install command and postinstall hint
  • Parse fractional seconds in Ask AI history dates
  • Scroll exercise filter chips to active muscle group on swap
  • Persist Ask AI conversations and show chat history
  • Add granular shoulder muscle groups (Lateral Delts, Rear Delts)
  • Speed up workout finish by deferring HealthKit and skipping redundant cache rebuild
  • Remove redundant integration toggles for Strava and Calendar
  • Address review findings from March 5 parallel agent work
  • Remove on-demand AI workout summary from web dashboard
  • Correct watch rest timer state bugs and double save loop
  • Commit review enhancements and quality of life fixes
  • AI-powered weekly training summaries with on-demand workout coaching
  • Use individual muscle groups in exercise swap picker
  • Address post-merge review gaps from PRs #115-#122
  • Sync Watch exercise navigation to iPhone for Live Activity
  • Swap picker now filters on context muscle from the first tap
  • Cascade weight/reps to next sets when logging from Watch
  • Rename share button from Instagram-specific to generic "Share"
  • Preserve set count and weights when swapping an exercise
  • Add AI-powered weekly training summaries
  • Expose strength plan goals via CLI and sync
  • Use starter plan for Postgres database
  • Replace file-based sync store with Postgres
  • Sync status UI showing stale errors after re-auth
  • Strip query params and account IDs from request logs
  • Add request logging to sync service
  • Parse ISO8601 dates with fractional seconds from sync server
  • Recalculate strength goals after session deletion
  • Show fallback icon for exercises without video to fix alignment
  • Derive week session counter from history instead of completedDayIndices
  • Break infinite recursion in expired session check
  • Harden sync reliability and add sync status indicator
  • Streamline CLI login to skip approval form
  • Hosted-first sync UX and test coverage
  • Migrate legacy sync credentials
  • Harden cloud sync auth and store state
  • Hide "-0kg · Deload" for bodyweight exercises in cycle summary
  • Post-deload smart defaults use template weights, not deload session
  • Calendar/dashboard sync and completed workout navigation
  • Address critical security and correctness issues from cloud sync code review
  • Persist hosted sync state for repeat uploads
  • Correct dashboard plan-day display and currentDayIndex rollback on delete
  • Use hosted session for initial sync backfill
  • Persist hosted sync session fallback
  • Allow workout sync sign-in before config preflight finishes
  • Surface apple auth exchange failures
Week of February 22, 2026 v1.1.4

Streamline hosted workout sync onboarding and generate apple auth client secrets in service.

See all 100 changes
CLI
  • Rename command to incremnt
  • Add program summary and explanation commands
  • Add snapshot insights query cli
General
  • Add syncService analytics integration + swift 6 actor isolation fixes
  • Streamline hosted workout sync onboarding
  • Generate apple auth client secrets in service
  • Add apple provider support to hosted cli auth
  • Surface hosted google login in cli
  • Resolve hosted google device logins
  • Build hosted sync service from repo root
  • Add hosted sync service preflight checks
  • Streamline hosted sync setup links
  • Hash sync service tokens at rest
  • Add default hosted login resolution
  • Open browser during device login
  • Add browser approval flow for device login
  • Add device login flow for hosted sync
  • Issue remote sessions for cli auth
  • Harden sync service for hosted deployment
  • Add phone developer sync uploads
  • Add incremnt dev email login
  • Add incremnt sync dev launcher
  • Add incremnt sync snapshot uploads
  • Add incremnt per-user sync store
  • Add incremnt sync service package
  • Harden incremnt remote auth and base urls
  • Extract incremnt sync service contract
  • Verify incremnt remote contract handshake
  • Add incremnt session persistence helpers
  • Add incremnt cli auth shell commands
  • Add incremnt cli logout
  • Distinguish incremnt expired auth sessions
  • Normalize incremnt cli session state
  • Publish incremnt cli capability metadata
  • Add incremnt cli transport selection
  • Polish strava workout titles
  • Expose incremnt cli contract metadata
  • Harden incremnt cli read contract
  • Persist adhoc drafts for watch sync
  • Streamline developer snapshot sharing
  • Improve workout finish feedback
  • Sync watch exercise selection with iphone
  • Rest timer animation, overlap with weekly sets panel, dead code
  • Move rest timer inline below last set
  • Chart time range filter applies to delta and single-point fallback
  • Normalize alias matching in progression flows
  • Harden deload and exercise alias matching
  • Restore watch heart rate display fallback
  • Unify bodyweight added-load display across workout surfaces
  • Make workout finish action direct from header
  • Tighten weighted bodyweight rules
  • Clear xcode build warnings
  • Add retention analytics backbone
  • Reconcile logger draft sets with planned day counts
  • Prompt to persist added exercises to program
  • Fix rest timer bar Skip button squishing on small screens
  • Use pre-deload program weight for deload explanation text
  • Add WatchWidgetExtension bundle ID to match provisioning profiles
  • Track pr_achieved event on personal record detection
  • Track workout_started and workout_completed events
  • Track onboarding_completed and onboarding_skipped events
  • Add analytics opt-out toggle, settings_opened and feedback_tapped events
  • Wire consent modal and app_opened event on launch
  • Add analytics consent modal
  • Remove watch connectivity logging, keep rest timer grace period fix
  • Add structured e2e Watch connectivity logging + fix rest timer kill bug
  • Stop cancelled rest timer task from flooding speech synthesizer queue
  • Improve week strip — checkmarks for completed days, clearer selection, dashboard tap resets to today
  • Bodyweight exercises default to BW with rep-based PRs
  • Add WatchWidgetExtension complication for watch face
  • Watch exercise navigation — per-exercise TabView pages, remove dead controls tab
  • Include activeExerciseIndex in Watch workout payload
  • Add activeExerciseIndex to CurrentWorkout model
  • Reset 10s warning flag in addTime() and start() for correctness
  • Add T-10s warning haptic to Watch rest timer
  • Replace pulse-tone system sounds with speech so audio session bypasses silent switch
  • Refresh notification authorization status on app foreground
  • Add T-10s background warning notification and remove scheduling race
  • Show BW/BW+X weight label for bodyweight exercises on Watch
  • Extend BW label and added-weight support to all bodyweight exercises
  • Stop ghost rest timer haptics after workout discard
  • Watch rest timer survives sleep and restore HR streaming on iOS 26+
  • End Watch workout session when iPhone workout finishes or is discarded
  • Add workout-processing background mode to Watch app
  • Show effort rating without HealthKit and hide HR spinner without Watch
  • Recover active workout session so watch app auto-foregrounds
  • Cancel rest timer notification when finishing ad-hoc workout
  • Restore sets on launch for devices mid-deload on older build
  • Deload only reduces weight, no longer removes sets
  • Retroactively apply deload transition for devices already mid-deload
  • Remove duplicate experience selection screen from onboarding
  • Bidirectional watch-iOS sync with weight/reps editing
  • Show deload badges on plan view and workout logger during deload weeks
  • Detect deload week via preDeloadWeights for mid-deload app updates
  • Rewrite watch UI with active set view, rest timer sync, and set logging
  • Use program template weights during deload and post-deload weeks
  • Resolve close-grip bench press missing media icon
  • Resolve 5 deload week bugs — lost sets, skip week, units, phase pill, rounding
  • Correct smartExerciseDefaults rep prediction and legacy startTime decoding
  • Show deload recommendation badge on exercises during deload week
Week of February 15, 2026

Show current week phase pill (w4 · deload) in planview header and style deload progression pills amber with explanatory header in cyclesummaryview.

See all 114 changes
General
  • Suppress deload recommendation when already in a deload week
  • Show current week phase pill (W4 · Deload) in PlanView header
  • Style deload progression pills amber with explanatory header in CycleSummaryView
  • Intercept cycle boundary to apply deload instead of progression at week 4/8
  • Add applyDeloadTransition and applyPostDeloadTransition to ProgramStore
  • Add ProgressionKind and preDeloadWeights to support functional deload
  • Show contextual hint when no data in selected chart range
  • Add tap-to-callout selection to ExerciseProgressChart
  • Add time range picker pills to ExerciseProgressChart
  • Correct bodyweight exercise display in logger, live activity, and charts
  • Add selectedRange state and filtered data to ExerciseProgressChart
  • Smart defaults baseline and repFloor; fix chart showing wrong exercise
  • Add ChartTimeRange enum with cutoffDate logic
  • Show muscle group with colour in exercise header during logging
  • Filter goals by program in checkpoint, completion, and empty state
  • Show non-program goals with muted styling in detail view
  • Partition goals by program relevance
  • Add goal-program canonical matching helper
  • Correct time window for Strava heart rate data upload
  • Tappable exercise rows in SessionDetailView + media button in ExerciseDetailSheet
  • Display RIR badge in exercise history cards
  • Add RIR prompt UI to FullScreenExerciseView
  • Wire exercise RIR through to session persistence
  • Add rir field to Exercise and LoggedExercise models
  • Add background audio mode for rest timer cues
  • Add Rest Timer Audio toggle to Settings
  • Wire RestTimerAudioManager into AdhocLoggerView rest timer
  • Wire RestTimerAudioManager into LoggerView rest timer
  • Add nonisolated to CalendarSyncService.findOrCreateCalendar
  • Add RestTimerAudioManager with TDD tests
  • Clamp smart defaults reps to repLow for straight sets with fatigue
  • Ensure swap exercise filter pre-selects source muscle group
  • Use detailed targetReps for increaseReps with fatigue patterns
  • Resolve Swift 6 concurrency and misc compiler warnings
  • Add heart rate connection state tracking and watch app improvements
  • Move exercise action icons to workout header row
  • Default swap exercise filter to source muscle group with relevance sorting
  • Add Single-Leg Leg Extension to exercise catalog
  • Constrain live activity rest pill width on lock screen
  • Subtly shrink live activity rest pill without hard sizing
  • Launch watch workout from phone start and mirror HR path
  • Declare exempt encryption in app Info.plist
  • Manage mirrored watch HR stream lifecycle
  • Stream watch heart rate to iphone during mirrored workouts
  • Stream live heart rate in watch workout sync
  • Remove rest pill fixedSize regression in live activity
  • Stabilize live activity rest timer and compact lock-screen pill
  • Live activity goes glass during rest timer countdown
  • Reconcile completedDayIndices when deleting a workout
  • Auto-launch Watch app via HKWorkoutSession mirroring
  • Constrain Dynamic Island compact trailing width
  • Use applicationContext for Watch connectivity reliability
  • Use universal watchOS icon format to resolve TestFlight validation
  • Handle expired restEndDate in Live Activity staleDate calculation
  • Live Activity goes blank during rest timer due to stale date
  • Add complete watchOS icon set for all required altool sizes
  • Add Watch app device icons and NSHealthShareUsageDescription
  • Add auto-scaling property to Watch app icon asset catalog
  • Set ASSETCATALOG_COMPILER_APPICON_NAME for Watch target
  • Add Watch app icon and asset catalog for TestFlight submission
  • Add Apple Watch companion app with live workout sync
  • Prevent logger page overflow and restore rounded edges
  • Prevent dashboard header overlap on narrow widths
  • Stabilize plan day accent color selection
  • Add LSSupportsOpeningDocumentsInPlace and bump build to 6
  • Request HealthKit effort score authorization before saving
  • Save RPE effort score to Apple HealthKit correctly
  • Correct recovery normalization loop logic
  • Add recovery-first hard constraints to guided generation
  • Separate exercise video tap from selection in picker
  • Restore strength level color styling in builder
  • Restore PB gold and retune set completion colors
  • Stabilize dashboard workout accent color selection
  • Add HealthKit workout branding metadata
  • Normalize exercise detail sheet background
  • Isolate history edit logger from draft and progression state
  • Scroll to top when re-tapping Dashboard or Settings tab
  • Filter exercises by compound/isolation preference in TemplatePlan
  • Redesign session detail view and persist effort score
  • Stabilize calendar feed today button and planned-day visibility
  • Dedicated full-screen RPE effort rating before workout summary
  • Smoother Previous sets transition in logger
  • Compact rest timer pill in Live Activity
  • Redesign RPE card to match Apple Fitness style
  • Apple Fitness RPE effort rating on workout completion
  • Tappable week strip, week progress ring, week overview bar
  • Runna-style week strip on dashboard + Rest Day card
  • Monday week start, scroll to today, sticky Today bar
  • Add muscle breakdown to Strava workout description
  • Show all muscles in breakdown (remove +N more) and add to workout summary
  • Hide stale heart rate and improve live activity lifecycle
  • Add unlimited scrolling and floating Today button to calendar feed
  • Unify integration connect/disconnect buttons and add settings pop-to-root
  • Add Apple Calendar integration for workout sync
  • Default to feed view and use subtle mode toggle
  • Show upcoming scheduled workouts in calendar feed
  • Add trainingWeekdays to Program model
  • Make VolumeLevel affect sets per exercise in program generation
  • Use realistic progression rates for 8-week goal targets
  • Add TemplateValidator for detecting compound stacking and volume issues
  • Migrate Strength & Hypertrophy template to declarative TemplatePlan
  • Add declarative TemplatePlan type for composable, equipment-agnostic templates
  • Ensure all default templates include rear delt work for shoulder health
  • Increase calf volume to at least 6 sets/week across all default templates
  • Add direct hamstring exercise to 3-day classic full body template
  • Make Modified PPL the default 5-day program
  • Move Back Squat to position 1 in Push/Pull Push B day
  • Remove deadlift + RDL same-day stacking in strength and push/pull templates
  • Change makeExercise from private to internal for WorkoutTemplate access
  • Correct misleading 'Pull emphasis' label on Upper B day
  • Replace duplicate One-Arm DB Row in bodybuilder template with Rear Delt Fly
  • Remove Glutes from Walking Lunge secondary muscles to prevent double-counting
  • Update recommendation badge colors
  • Revert to original neon green design while keeping rainbow muscle colors
Week of February 8, 2026

Add justfile with local testflight upload commands and refactor historyview to split-view pattern with muscle-colored calendar dots.

See all 34 changes
App
  • Redesign dashboard and program overview
  • Remove duplicate title from workout description
General
  • Add Justfile with local TestFlight upload commands
  • Address code review feedback
  • Refactor HistoryView to split-view pattern with muscle-colored calendar dots
  • Add missing Match certificate step
  • Add local TestFlight upload script
  • Replace exercise pills with muscle breakdown donut chart in feed cards
  • Enhance muscle breakdown visualization and refine colors
  • Add privacy manifest for App Store compliance
  • Resolve build issues and merge TCX generator
  • Enhance Strava upload with HealthKit data & update app icons
  • Simplify strava upload description format
  • Use system timer for live activity countdown
  • Refactor exercise search with color-coding, inline guided start, and restore goal donut chart
  • Remove exercises without media from first-pass full gym list
  • Avoid false media availability and infer equipment for new lifts
  • Add first-pass media-backed full gym exercises
  • Support sectioned JEFIT CSV exports
  • End live activities reliably across workout flows
  • Polish live activity and harden Strava + calorie handling
  • Remove NSExtensionPrincipalClass from widget Info.plist
  • Resolve 'components' scope error in Strava OAuth handler
  • Remove bare 'rear delt fly' alias that conflates dumbbell and machine exercises
  • Move tokens to Keychain, fix code style issues
  • Extract bodyweightDisplay to shared formatter, fix categorization
  • Add @MainActor to KeyboardDismissal for thread safety
  • Broaden live heart-rate fallback sampling window
  • Always render latest heart-rate value in adhoc workout header
  • Always render latest heart-rate value in workout header
  • Attach calories independently and improve live heart-rate fallback
  • Stream watch heart rate via resilient healthkit fallback without watch app
  • Improve heart-rate capture resilience during workouts
  • Overhaul ProgramBuilder, modernize HealthKit, and polish UI
Week of February 1, 2026

Enhance daydetailview exercise cards with metadata and media button and redesign goaldetailview with hero ring and compact goal rows.

See all 17 changes
General
  • Enhance DayDetailView exercise cards with metadata and media button
  • Enforce 44pt touch targets and add accessibility labels across logger
  • Redesign GoalDetailView with hero ring and compact goal rows
  • Redesign dashboard for better visual hierarchy and density
  • Add guided start flow for adhoc workouts
  • Wire MuscleDetailView sheet from weekly progress panel bar tap
  • Add MuscleDetailView for muscle set breakdown
  • Add allTimeGrouped method to WeeklySetsCalculator
  • Resolve Xcode build errors from incomplete PR #60 merge
  • Apply P1 code review fixes to data import/export
  • Harden and optimize data import pipeline
  • Add workout data import/export runtime
  • Apple Watch companion, Instagram export & workout templates
  • Polish rest timer haptic feedback
  • Complete rest timer haptics polish implementation
  • DateFormatter locale/timezone bugs and remove unused inefficient logic
  • PR celebration with confetti, haptics, and toast
Week of January 25, 2026

Enhance exercise type lookup and harden dateformatter usage and add onboarding goal selection screen.

Week of January 18, 2026

Show est. badge on start column when value is ratio-based and add last activity date indicator to programs.

See all 125 changes
App
  • Add GoalDetailView with full progress breakdown
  • Show checkpoint/completion modals on launch
  • Update goal progress when workouts complete
  • Integrate BaselineAssessment and GoalPreview into flow
  • Add PlanCompletionView for Week 8 celebration
  • Add CheckpointView for Week 3/6 progress check-ins
  • Add GoalPreviewView showing 8-week targets
  • Add BaselineAssessmentView with equipment-aware input
  • Add GoalProjectionCalculator with strength ratios and targets
  • Add E1RMCalculator with Epley formula and rounding
  • Rename View History to Exercise Details
  • Wire chart button to ExerciseDetailSheet
  • Add ExerciseDetailSheet container view
  • Add MuscleVolumeBreakdown component
  • Add ExerciseStatsRow component
  • Improve keyboard accessibility in input forms
Dashboard
  • Integrate GoalProgressCard
  • Add GoalProgressCard widget
General
  • Improve small screen layout compatibility for iPhone 12 mini
  • Add write permissions for version bump commit
  • Remove alpha channel from app icons for App Store
  • Add CI keychain setup to prevent signing hangs
  • Explicitly set match git branch to master
  • Show Est. badge on Start column when value is ratio-based
  • Add last activity date indicator to programs
  • Use match profile env var for code signing
  • Remove matchedGeometryEffect causing console warnings
  • Improve program activation animation visibility
  • Use actual user bodyweight for pull-up e1RM calculations
  • Add match move animation and fix post-creation navigation
  • Trigger glow animation consistently when activating programs
  • Wrap reset data alert in DEBUG to match function
  • Configure manual code signing for CI builds
  • Decouple goals from plan start date - historical data now recognized
  • Preserve rest timer context across app backgrounding
  • Address code review feedback
  • Add dynamic exercise context to rest timer notifications
  • Add custom exercises management to Settings
  • Add Straight Arm Pulldown to exercise catalog
  • Update custom exercise UI to match app design system
  • Custom exercises no longer default to bodyweight
  • Add CI/CD pipeline for TestFlight deployment
  • Remove watchOS-only HKWorkoutSession APIs from iOS app
  • Wrap watchOS-only HKLiveWorkoutBuilder in #if os(watchOS)
  • Use absolute strength standards for goal targets
  • Add NameInputView.swift to Xcode project
  • Resolve high-severity bugs in goals and recommendations
  • Add user name collection and personalization throughout app
  • Add program rename, duplicate, and QoL improvements
  • Don't record duplicate misses on decreaseWeight recommendation
  • Update plan strengthLevel when changing target levels
  • Add automated performance test suite
  • Address 3 bugs in Logger views and rest timer
  • Address 3 bugs in Goal-related views
  • Optimize PR checks and historical lookups to O(1)
  • Improve rest timer notification reliability
  • Update RecommendationExplanation tests for new API
  • Add GoalLevelPickerSheet for individual goal editing
  • Add goal section to ExerciseDetailSheet (WIP)
  • Add Adjust Level button to GoalDetailView
  • Add LevelAdjustmentSheet for bulk goal editing
  • Add goal target level editing methods to store
  • Set targetLevel when creating goals
  • Add targetLevel property to LiftGoal model
  • Resolve goal tracking bugs and add hasLoggedData support
  • Add goal creation, program builder improvements, and plan factory
  • Add finishDate computed property to StrengthPlan
  • Integrate RecommendationBadge into all views
  • Enhance GoalDetailView with live data and improved UX
  • Wire MissTrackingStore into recommendation flow
  • Add RecommendationBadge with explanation popover
  • Add RecommendationExplanation for user-facing copy
  • Format retry recommendations
  • Implement retry logic in progression algorithm
  • Add MissTrackingStore for retry logic
  • Add retry case to ProgressionRecommendation enum
  • Resolve goal update logic and UI staleness issues
  • PR calculation history and dynamic progression increments
  • Code review fixes for Stats Tab (DateFormatter, timezone, bounds)
  • Drop reps to bottom of band when weight increases
  • Stub WorkoutKitManager for iOS 26 API compatibility
  • Show 1RM for all completed sets and add leg exercises
  • Use calendar week (Mon-Sun) for weekly sets instead of rolling 7 days
  • Store point-in-time recommendations with each workout session
  • Pass exerciseRecommendationStore to AdhocLoggerView and migrate historical data
  • Show smart defaults and recommendations in Plan View
  • Smart defaults now correctly populate when starting fresh workout
  • Address critical bugs found in deeper code review
  • Code review improvements for Stats tab implementation
  • Preserve set order in progression logic and optimize history lookup
  • Standardize exercises and enhance strength reports
  • Resolve StrengthReportView scope error by consolidating code into StatsView.swift
  • Restore missing logic and add unit preference support to Strength Report cards
  • Remove extraneous closing brace causing build error in StatsView
  • Add Strength Report tab to StatsView showing classifications for all 12 exercises
  • Correctly display rep-based standards (Push Ups) in SettingsView without unit conversion
  • Add remaining requested strength standards and update UI lists
  • Update strength standards with extrapolated data from StrengthLevel.com
  • Restore navigation functionality in SettingsView by wrapping in NavigationStack
  • Add missing semantic colors to AppColors
  • Resolve models compilation errors by adding SwiftUI import and correct types
  • Resolve StrengthLevel scope issues by moving models to Models.swift and fix closure inference
  • Resolve compilation errors in ProgramBuilderFlow and view scoping
  • Integrate strength standards into guided program builder for smart defaults
  • Add strength standards reference in settings
  • Sync exercise values across program days and initialize logger with history
  • Compilation error in ExerciseDeepDiveSection
  • Timer negative value bug and StatsView compilation error
  • Audit haptics and remove history from plan view
  • Add PR summary card to exercise deep dive
  • Second-round redesign of StatsView with global filters and premium tabs
  • Redesign StatsView, add Dashboard history button, and auto-start workouts
  • Refactor exercise selection, fix chart alignment, and add day deletion
  • Add test data mode with historical session generation
  • Enhance stats and dashboard views with completion charts and heatmaps
  • Add manual program creation flow and fix navigation
  • Add empty state for Stats tab
  • Add Records & PRs section with ATH badges
  • Add Training Frequency section with heatmap and streaks
  • Add Volume Breakdown section with muscle sets and balance
  • Add Exercise Deep Dive section with E1RM and volume charts
  • Add time period selector and data range header to Stats
  • Add Stats tab to navigation
  • Haptics respect settings toggle and exercise-specific animation
  • Exercise view polish - navigation, animations, and UI improvements
Week of January 11, 2026

Add swipe actions for exercises in plan view and add permanent removal option for exercises in loggerview.

See all 89 changes
General
  • Replace swipe actions with context menu in Plan view
  • Add swipe actions for exercises in Plan view
  • Add permanent removal option for exercises in LoggerView
  • Show "bodyweight" for bodyweight exercises in Plan view
  • Tapping Workout tab now pops to root when in History view
  • Execute onConfirm before dismissing confirmation modal
  • Show weight in Plan view and handle time-based exercises
  • Add completionDate helper for sessions
  • Address code review issues for custom exercises
  • Add custom exercise equipment lookup
  • Add swipe-to-delete for custom exercises
  • Add custom exercise support to AdhocLoggerView
  • Add custom exercise support to SwapExerciseSheet
  • Sort history sessions by completion time
  • Backfill completedAt for legacy sessions
  • Add custom exercise button to AddExerciseSheet empty state
  • Wire CustomExerciseStore into app environment
  • Add AddCustomExerciseView for creating custom exercises
  • Save history edits on exit
  • Persist logged values to program and simplify rep recommendations
  • Add CustomExerciseStore for persistence
  • Add CustomExercise model
  • Improve progression UI and ensure smart defaults propagate
  • Add animation mappings for final 7 exercises
  • Add animation mappings for 13 more exercises
  • Add missing animation URLs for 11 more exercises
  • Implement smart defaults for ad-hoc exercises
  • Add missing animation for cable fly and expand media sheet
  • Redesign history cards with editable session detail view
  • Weekly sets panel counts all exercises for muscle group
  • Implement refined progression algorithm from design feedback
  • Cascade weight/reps to subsequent sets on completion
  • Navigate to dashboard after workout summary dismiss
  • Wire up enhanced progression algorithm in logger views
  • Implement enhanced progression algorithm with 2-for-2 rule
  • Add previousSets lookup to SessionStore
  • Add weight increment configuration to ExerciseMetadata
  • Add decreaseWeight recommendation type
  • Persist exercise recommendations globally across workouts
  • Resolve crash from duplicate exercise names in media catalog
  • Expand exercise database with 75 new exercises
  • Enable exercise media sheet in logger views and fix glassy appearance
  • Improve workout logger ux
  • Add keyboard Done button to IntegerTextField and remove ineffective toolbar
  • Remove redundant pr text badge, trophy icon is sufficient
  • Pr badge now moves to best set in workout
  • Add UI parity between LoggerView and AdhocLoggerView
  • Remove auto-completion from workout logging
  • Integrate FAB into custom tab bar
  • Resolve iOS 17 deprecation warnings
  • Update banner to navigate to adhoc logger
  • Make shared views internal and fix confirmationModal call
  • Add center FAB for adhoc workout
  • Add AdhocLoggerView for quick workouts
  • Handle banner navigation when PlanView not alive
  • Clear rest timer on workout end
  • Resolve orphaned workout in-progress state
  • Cancel rest timer notification when finishing workout
  • Actually cancel notification when discarding workout
  • Improve weight input fields and consolidate formatting
  • Cancel rest timer when discarding workout
  • Expand exercise catalog with ~40 new exercises
  • Restore permanent swap prompt for exercise swapping
  • Add decimal keyboard input for weight in logger view
  • Resolve glassy empty state in SwapExerciseSheet
  • Add optional rest timer notifications
  • Simplify workout preview and add context-aware recommendation labels
  • Address code review feedback
  • Auto-show weekly sets panel when all sets complete
  • Rename E1RM to 1RM in all UI labels
  • Progress chart now shows useful info with single data point
  • Resolve UI issues in full-screen logger
  • Rewrite LoggerView with paged TabView for exercise navigation
  • Add custom workout header component
  • Add full-screen exercise view component
  • Add full-screen set row component
  • Add E1RM progress chart component
  • Add adjustable rest timer bar component
  • Add custom rest duration persistence
  • Add E1RM history logic for progress charts
  • Show Resume button for in-progress workouts regardless of program
  • Improve history view and add Watch app foundation
  • Swap complete/remove set button positions for better ergonomics
  • Workout timers now continue during background/lock screen
  • Add HealthKit integration for heart rate and calorie tracking
  • Resolve white screen bug when creating program from Programs tab
  • Add workout day completion tracking and cycle summary
  • Add exercise count to day overview
  • Navigate to Workout tab after onboarding
Week of January 4, 2026

Auto-open loggerview for pending day 1 workout and show onboardingview when user is new.

See all 91 changes
App
  • Auto-open LoggerView for pending Day 1 workout
  • Show OnboardingView when user is new
  • Pass user weight to program generation
  • Add OnboardingView to orchestrate onboarding flow
  • Add ProfileInputView for user weight and height collection
  • Integrate user weight into program generation defaults
  • Add DefaultWeightCalculator for body-weight-based defaults
  • Add pendingWorkoutDay for Day 1 handoff
  • Add hasCompletedOnboarding flag to ProgramStore
General
  • Only show PR badge on first set to beat historical record
  • Show projected exercises in muscle breakdown view
  • Add user profile settings for weight, height, and age
  • Improve program generation logic
  • UI improvements for program management
  • Add smooth animation for program switching
  • Replace review step with rich summary card
  • Add ProgramSummaryCard with body heatmap and volume breakdown
  • Add ExpandableMuscleRow component for summary
  • Add volume configuration step to builder flow
  • Add swipe-to-delete for programs
  • Add delete method to ProgramStore
  • Add exerciseContributions helper for summary card
  • Replace 5-day hybrid with bro split
  • Add dynamic volume targeting to ProgramBuilder
  • Add VolumeLevel enum and volumeLevel to Program
  • Add missing ExerciseMedia files to Xcode project
  • Project weekly sets using calendar-week program completion
  • Store program day metadata on sessions
  • Show latest recommendation on program day
  • Update program recommendations on workout finish
  • Persist latest recommendations in program store
  • Update LoggerView WeeklyProgressPanel to use shared components
  • Update DashboardView with all new components
  • Add DualBodyDiagramView with side-by-side layout and 3D-style rendering
  • Add TrainingInsightsCard and RecommendationEngine
  • Add MuscleSetBreakdownView with expandable exercise details
  • Add ExerciseContribution model and computation methods
  • Add MiniBodyIcon component for muscle identification
  • Add SegmentedSetBar component with discrete countable segments
  • Compute detailed progression recommendations
  • Add structured recommendation model and formatter
  • Resolve pbxproj id collision
  • Add tall dashboard heatmap card with toggle
  • Add front/back body diagram with improved anatomy
  • Improve logger exercise actions menu
  • Add rest timer bar formatter
  • Add BodyDiagramView.swift to Xcode project
  • Add expected duration calculator to plan view
  • Correct legend colors and muscle key casing
  • Add exercise metadata for rest and equipment
  • Add body diagram visualization to Dashboard
  • Add programs tab and workout builder
  • Update dashboard body heatmap and weekly sets styling
  • Stabilize history sheet navigation
  • Add history calendar view
  • Add history calendar logic
  • Add stable workout session ids
  • Add pr and progression to history
  • Add PR badges in logger
  • Add 1rm helpers
  • Add workout history tab
  • Add swap exercise sheet
  • Add analytics charts
  • Improve media matching and set controls
  • Autoplay exercise image frames
  • Expose exercise image frames
  • Load exercise media from bundled json
  • Add set controls and collapse
  • Add exercise animation sheet
  • Add logger options sheet
  • Add keyboard dismissal
  • Color weekly sets bars
  • Live weekly sets in logger
  • Add weekly range helper
  • Add analytics weekly sets
  • Add logger weekly progress and session save
  • Add session store
  • Add weekly sets calculator
  • Add logged session models
  • Add in-workout weekly sets progress
  • Add weekly mode toggle and sets summary
  • Add weekly sets computation
  • Add secondary muscle metadata
  • Add local session storage helpers
  • Apply progression badge logic in logger
  • Add inline editing for workout sets
  • Add progression recommendation logic
  • Add placeholder tabs for navigation
  • Add logger flow with progression badges
  • Add Plan tab with swipeable 4-day program
  • Add mock models and progression logic