Product

What shipped.

A weekly record of user-facing features and fixes across INCREMNT.

Add reviewed plan profile adjustments and polish ask coach conversation experience.

  • Add reviewed plan profile adjustmentsApp
  • Polish Ask Coach conversation experienceApp
  • Preserve workout evidence and progression contextApp
  • Preserve onboarding intent through the first workoutApp
  • Make onboarding programme review actionable and measurableApp
  • Preserve working-set history after partial workoutsApp

Polish plan progress and contextual coaching and show programme progress with shared workout components.

  • Polish Plan progress and contextual coachingApp
  • Show programme progress with shared workout componentsApp
  • Offer remaining-set target copy in loggerApp
  • Make bodyweight optional to reduce drop-offApp
See all 17 changes

App

  • Polish Plan progress and contextual coaching
  • Open 1.6.8 TestFlight release train
  • Show programme progress with shared workout components
  • Accept previously ended Watch cancellation
  • Release cancelled HealthKit start gate
  • Clarify warm-up set controls
  • Isolate temporary swap progression
  • Require bodyweight calibration
  • Offer remaining-set target copy in logger
  • Avoid zero loads in shared workouts
  • Freeze substituted starting targets
  • Make bodyweight optional to reduce drop-off
  • Stabilize signed-out tab navigation
  • Update App Store listing metadata
  • Add paywall recovery step
  • Keep programme accordion expansion nested
  • Improve quick filter sizing

Add reviewed exercise media proxies and polish exercise media presentation.

  • Add reviewed exercise media proxiesApp
  • Polish exercise media presentationApp
  • Add exercise thumbnails to workout surfacesApp
  • Add exercise guide animationsApp
  • Preserve program day orderWatch
  • Harden trial reminder lifecycle and repair today's review findingsGeneral
See all 42 changes

App

  • Repair render timing and chart accessibility
  • Align Google sign-in button
  • Keep workouts available during RevenueCat outages
  • Polish programme review interactions
  • Align exercise picker media actions
  • Add reviewed exercise media proxies
  • Polish exercise media presentation
  • Add exercise thumbnails to workout surfaces
  • Improve exercise media visibility
  • Add exercise guide animations
  • Polish programme exercise list
  • Make auth paywall handoff explicit
  • Gate plan start until review
  • Round Google sign-in button
  • Unify add exercise picker filters
  • Compact exercise swap decision
  • Refine start workout picker
  • Increase live activity rest timer visibility
  • Compact previous workout preview label
  • Present exercise swaps reliably
  • Preserve guest subscription purchases
  • Defer RevenueCat until account binding
  • Make value-proof onboarding default
  • Highlight fresh progression recommendations
  • Simplify progressive overload journeys
  • Cap bodyweight calibration range
  • Stabilize ruler calibration inputs
  • Remove legacy sync prompt
  • Clarify progression proof graph
  • Restore strength session duration outcomes
  • Show session duration preference in plan preview
  • Refine onboarding progression proof
  • Add native 14-day trial paywall
  • Clarify prescription progression
  • Shorten journey to programme reveal
  • Clarify programme explainers
  • Streamline progression proof
  • Animate native progression story
  • Explain adaptive progression in onboarding
  • Request reviews after workout value

Watch

  • Preserve program day order

General

  • Harden trial reminder lifecycle and repair today's review findings

Polish personalised programme reveal and cache exercise media images for offline rendering.

  • Polish personalised programme revealApp
  • Cache exercise media images for offline renderingApp
  • Refine personalised programme revealApp
  • Tighten programme setup flowApp
See all 42 changes

App

  • Align generated plan duration with stated budget
  • Make weekly set bar zone ticks read as threshold markers
  • Skip duplicate logger proof
  • Reveal progression proof video
  • Polish personalised programme reveal
  • Guard Watch workout lifecycle replacement
  • Cache exercise media images for offline rendering
  • Make typography ramp scale with Dynamic Type
  • Refine personalised programme reveal
  • Add missing exercise media URLs to catalogue
  • Tighten programme setup flow
  • Hold final score after demo loops
  • Add complete product demo loop
  • Showcase the product on welcome
  • Refine primary action style
  • Personalise first workout proof
  • Use real logger showcase
  • Reconcile restored Apple Watch workouts
  • Add progression pace onboarding
  • Show recommendations after target edits
  • Integrate Superwall with RevenueCat
  • Keep paywall after skipping account
  • Make account sign-in optional
  • Accept current HealthKit HRV
  • Simplify uneven rep progression
  • Clarify adjusted rep recommendations
  • Add progression proof film
  • Stabilize bodyweight ruler dragging
  • Smooth scheduled workout launch
  • Smooth benchmark input back navigation
  • Constrain onboarding benchmark picker highlights
  • Align warm-up persistence and workload semantics
  • Polish post-workout score reveal
  • Persist Watch workouts and effort
  • Add real welcome proof flow
  • Capture RIR per set
  • Restore programme review actions
  • Polish programme setup flow
  • Stabilize onboarding scroll transitions
  • Soften onboarding scroll edges
  • Start weekly review from reminder taps
  • Shorten body volume sets label

Add workout score story and add value-proof programme journey.

  • Add workout score storyApp
  • Add value-proof programme journeyApp
  • Ignore stale sleep in health signalsGeneral
  • Identify ChatGPT-created programsApp
  • Add muscle colors to workout pickerApp
  • Make Watch own Watch-started workoutsWatch
See all 34 changes

App

  • Add workout score story
  • Smooth score evidence transitions
  • Continue with restored answers
  • Default simulators to value proof
  • Restore deliberate journey navigation
  • Add value-proof programme journey
  • Prevent false progression history and target exercise slots by UUID
  • Tolerate unknown recommendation reasons
  • Make chart scrubbing immediate
  • Preserve muscle map evidence identity
  • Stabilize logger collection bindings
  • Prevent typed workout set removal crash
  • Import ChatGPT programs as generated
  • Identify ChatGPT-created programs
  • Prevent Watch heart-rate session overlap
  • Make custom exercise editor keyboard safe
  • Require complete exercise search queries
  • Keep body chart selection interactive
  • Add muscle colors to workout picker
  • Add rolling volume drilldowns
  • Harden RevenueCat customer identity
  • Keep volume filters on one line
  • Make Body the volume intelligence surface
  • Surface disabled progression state
  • Keep readiness guidance fresh
  • Keep workout picker summaries inline
  • Clear swap sheet on dismissal
  • Improve exercise swap browsing
  • Retain weekly check-in notification routes
  • Simplify workout picker actions
  • Add profile volume trends
  • Make program choices schedule-neutral

Watch

  • Make Watch own Watch-started workouts

General

  • Ignore stale sleep in health signals

Make progression recommendations prescription-aware and restore continuous heart rate recording.

  • Make progression recommendations prescription-awareApp
  • Restore continuous heart rate recordingWatch
  • Streamline first workout setupApp
  • Preserve skipped rest dismissalWatch
  • Streamline onboarding conversion flowApp
  • Stabilize cross-device workout navigationWatch
  • Stabilize exercise navigationWatch
  • Improve exercise swap recommendationsApp
See all 31 changes

App

  • Make progression recommendations prescription-aware
  • Stabilize onboarding chat transitions
  • Smooth onboarding choice transitions
  • Animate previous set preview
  • Simplify live activity rest timer
  • Streamline first workout handoff
  • Preserve exact strength exercise mappings
  • Finalize HealthKit workouts on recording owner
  • Streamline first workout setup
  • Streamline onboarding conversion flow
  • Remove onboarding composer scroll clip
  • Keep founder banner out of tab headers
  • Trust explicit set roles
  • Align mixed-set prescriptions
  • Clarify swapped exercise targets
  • Keep newest score evidence visible
  • Compact workout exercise summaries
  • Harden exercise mapping contract
  • Preserve structured strength exercises
  • Allow retry after activity deletion
  • Preserve muscle maps after rich upload rejection
  • Fall back when strength JSON is rejected
  • Repair workout share export layout
  • Improve exercise swap recommendations
  • Verify uploads and add retry action
  • Improve typed workout exercise swaps

Watch

  • Restore continuous heart rate recording
  • Preserve skipped rest dismissal
  • Stabilize cross-device workout navigation
  • Stabilize exercise navigation
  • Center planned workout start status

Add workout csv export and handle restricted calendar accounts.

  • Add workout csv exportGeneral
  • Handle restricted calendar accountsApp
  • Show workout score contributionApp
  • Upload native strength workoutsApp
  • Simplify subscription paywallApp
  • Route bounded Coach surfaces through LunaAI Coach
  • Recover stalled heart-rate displayWatch
See all 32 changes

App

  • Handle restricted calendar accounts
  • Move increment score work off render paths
  • Stabilize adaptation and release contracts
  • Show workout score contribution
  • Upload native strength workouts
  • Remove workout evidence title
  • Separate exercise details in exports
  • Allow best-effort equipment starts
  • Keep plan recommendations compact
  • Stabilize workout summary action bar
  • Keep staged subscription paywall open
  • Reconcile existing subscriptions in paywall
  • Simplify subscription paywall
  • Hide sync diagnostics from account UI
  • Align subscription access screens with product
  • Publish compact branded workout copy
  • Complete exercise setup capabilities
  • Model exercise setup requirements
  • Align plan recommendations
  • Correct exercise media and set copy
  • Repair calendar feed scheduling
  • Speed up social feed loading
  • Decouple workout picker from schedule
  • Show all plan days in workout picker
  • Normalize plan-aware backoff targets
  • Align connection actions and restore Strava branding
  • Clear stale workout live activities on launch
  • Stabilize progression settings handoff
  • Unify connection controls

Watch

  • Recover stalled heart-rate display

AI Coach

  • Route bounded Coach surfaces through Luna

General

  • Add workout csv export

Roll completed plan cycles in any order and add trial-first pro experience.

  • Roll completed plan cycles in any orderApp
  • Add trial-first Pro experienceApp
  • Add RevenueCat access stateApp
  • Enforce Pro across hosted capabilitiesGeneral
  • Clarify logger recommendation statesGeneral
  • Adapt recommendation target presentationGeneral
  • Refine logger recommendation popoverGeneral
  • Improve workout recommendation guidanceApp
See all 45 changes

App

  • Roll completed plan cycles in any order
  • Isolate Swift package caches by checkout
  • Keep App Attest out of release signing
  • Use pinned QA simulator for smoke checks
  • Hide Pro UI behind launch gate
  • Add trial-first Pro experience
  • Add RevenueCat access state
  • Keep previous weight on one line
  • Let score commentary use available space
  • Make leaderboard rankings comparable
  • Clarify history calendar markers
  • Enable score calendar workout navigation
  • Make feed cards open from passive areas
  • Improve workout recommendation guidance
  • Persist HealthKit workout effort reliably
  • Compact workout header metrics
  • Keep workout recommendation pill readable
  • Compact Strava connection row
  • Compact Strava connect button
  • Explain plan history targets
  • Trust newest compatible targets
  • Keep plan completion state consistent
  • Keep weekly Plan completion visible
  • Preserve workout target provenance
  • Explain logger target provenance
  • Align typed workout result rows optically
  • Preserve runtime update retries
  • Align typed workout columns

Watch

  • Preserve prescribed rest duration
  • End recovered orphan workouts
  • Terminate discarded workout runtime
  • Let phone finalize HealthKit workout
  • Harden workout command sync

General

  • Enforce Pro across hosted capabilities
  • Unify recommendation popover presentation
  • Restore recommendation decision labels
  • Clarify logger recommendation states
  • Adapt recommendation target presentation
  • Refine logger recommendation popover
  • Refresh recommendation coaching popover
  • Make Strava integration submission ready
  • Harden cross-slot capacity calibration
  • Explain calibrated workout targets
  • Calibrate stale slots from compatible capacity
  • Expose contextual exercise evidence

Make bodyweight tracking first class and add dated bodyweight store.

  • Make bodyweight tracking first classApp
  • Add dated bodyweight storeApp
  • Unify muscle colour stylingWatch
  • Refine planned workout headerWatch
  • Polish plan brandingWatch
  • Redesign planned workout flowWatch
  • Define active set cursor logicApp
  • Bundle rest timer notification sequenceApp
See all 89 changes

App

  • Force typed workout prescriptions inline
  • Keep typed workout prescriptions inline
  • Preserve typed workout action accessibility
  • Make bodyweight tracking first class
  • Preserve bodyweight HealthKit identity
  • Add dated bodyweight store
  • Unify progression copy across plan surfaces
  • Clarify logger progression context
  • Correct generated muscle attribution
  • Make progression guidance easier to scan
  • Align progression recommendation copy
  • Keep typed workout matches readable
  • Keep typed workout rows readable
  • Generalize exercise search query coverage
  • Prevent exercise metadata search hijacking
  • Keep skipped sets behind active cursor
  • Define active set cursor logic
  • Prevent duplicate Apple Calendar events
  • Expose notification sound authorization
  • Bundle rest timer notification sequence
  • Schedule locked rest timer chimes
  • Add shared social resource cache
  • Render self profile from local data
  • Show local data on signed-in profile
  • Clarify generated plan overview
  • Explain swapped exercise targets
  • Constrain workout swaps by evidence recency
  • Align swap targets with current capacity
  • Stop completed catch-ups repeating
  • Open program from Plan header
  • Keep rest timer audio alive off logger
  • Keep workout finish action on one line
  • Make past workout edits durable
  • Recover legacy recommendations per exercise
  • Stabilize Coach and workout UI tests
  • Preserve progression provenance across plan changes
  • Keep preview weights on one line
  • Make simulator QA deterministic
  • Preserve generated plan identity and trust
  • Unify program plan detail
  • Preserve intent across divergent swaps
  • Fill popular exercise catalog gaps
  • Make workout swaps goal-aware
  • Resume draft from workout picker
  • Simplify saved plan summary
  • Improve calendar feed navigation
  • Show plan muscle with recommendation

Watch

  • Unify muscle colour styling
  • Refine planned workout header
  • Polish plan branding
  • Redesign planned workout flow
  • Keep workout state consistent
  • Ignore workout updates older than a clear
  • Keep finish as the final workout page
  • Keep completion title visible
  • End workout locally after finish
  • Support precise weight adjustments
  • Clear workout when mirrored session ends

General

  • Harden exercise metadata and program balance
  • Complete progression presentation contract
  • Explain applied progression bridges plainly
  • Apply equipment-aware progression bridges
  • Confirm progression at the new load
  • Resolve mixed-weight progression bridges
  • Calculate relative progression steps
  • Enforce progression contract end to end
  • Accept grounded observation paraphrases and finalize traces
  • Share applied progression with Logger
  • Ground observation review verification fallback
  • Add progression policy controls
  • Preserve progression through time away
  • Preserve mixed-set progression evidence
  • Make progression slot-aware
  • Preserve saved progression slots
  • Update Transmission for Xcode 26
  • Remove restricted notification entitlement
  • Create missing TestFlight capability
  • Use explicit TestFlight provisioning client
  • Configure TestFlight provisioning team
  • Repair TestFlight capability with API key
  • Enable TestFlight notification capability repair
  • Approve canonical product media assets
  • Harden product media capture catalogue
  • Add website product media catalogue
  • Harden product media capture pipeline
  • Keep profile names consistent when signed in
  • Make private profile available offline
  • Capture reusable product media scenes
  • Add product media capture contracts

Close generated plan review gaps and align generated plan metrics.

  • Close generated plan review gapsApp
  • Align generated plan metricsApp
  • Make generated plan review actionableApp
  • Optimize solo developer feedback loopsGeneral
  • Add fast persistent iOS visual QA laneGeneral
  • Add editable generated plan reviewApp
  • Route weekly check-ins through coach askGeneral
  • Split social privacy controlsGeneral
See all 50 changes

App

  • Close generated plan review gaps
  • Align generated plan metrics
  • Keep setup composer controls visible
  • Simplify generated plan review
  • Steady program setup response controls
  • Make generated plan review actionable
  • Add editable generated plan review
  • Expand type workout editor focus target
  • Show calves and keep bodyweight rows compact
  • Show global previous sets in logger preview
  • Remove typed workout match pill
  • Polish typed workout compact layouts
  • Stabilize exercise selection source test
  • Remove alternate styles from program preview
  • Keep program preview warnings internal
  • Align program style defaults with goals
  • Keep guided program chat editable
  • Tighten program setup option buttons
  • Start generated programs directly
  • Restore program setup response cards

General

  • Optimize solo developer feedback loops
  • Add fast persistent iOS visual QA lane
  • Remove legacy weekly checkin sheet route
  • Route weekly check-ins through coach ask
  • Map legacy social privacy updates
  • Split social privacy controls
  • Reserve coach observation review prompt
  • Use persisted exercise identity for recent history
  • Prefer recent exercises in generated plans
  • Enforce unique custom exercise names
  • Keep program edit prompts after exercise swaps
  • Show warmup sets on watch
  • Route in-app feedback through sync service
  • Route coach observation review prompt
  • Remove generated plan summary step count
  • Keep plan day pills within header
  • Remove muscle history chevrons
  • Polish exercise picker header and filters
  • Reuse coach suggestion pills in plan setup
  • Preserve workout header recommendation pill
  • Align program setup chat styling
  • Open exercise detail from muscle history rows
  • Reuse logger pill in typed workout
  • Move logger recommendation below controls
  • Remove empty score ring placeholder
  • Keep onboarding chat visible
  • Standardize typed workout summaries
  • Compact typed workout summaries
  • Persist program generation intent
  • Preserve program generation metadata

Add request-backed program generation and queue external app changes.

  • Add request-backed program generationGeneral
  • Queue external app changesCLI
  • Support CLI program supersetsGeneral
  • Improve typed workout match editingGeneral
  • Show program recency inlineApp
  • Add typed blank plan setupApp
  • Tint typed workout matches by muscleApp
  • Add domain exercise searchApp
See all 75 changes

App

  • Widen typed workout match preview
  • Refresh CLI program imports from programs view
  • Schedule hosted sync on launch
  • Keep previous set date from shifting rows
  • Show program recency inline
  • Add typed blank plan setup
  • Tint typed workout matches by muscle
  • Add domain exercise search
  • Clean type workout query punctuation
  • Polish type workout matching
  • Capture coach goals during setup
  • Highlight blocked typed workout rows
  • Clarify typed workout empty state
  • Simplify quick workout start options
  • Polish plan session layout
  • Make feed card tap targets reliable
  • Scope recommendations to exercise variants
  • Preserve exercise variant identity for swaps
  • Clean adjacent training language
  • Enforce public score training language
  • Preserve legacy vitals summary cache keys
  • Use local date keys for vitals summaries
  • Preserve progression facade fallbacks

Watch

  • Keep active header visible
  • Remove RIR prompt from workout flow

CLI

  • Queue external app changes

General

  • Add request-backed program generation
  • Preserve CLI-created programs on snapshot upload
  • Stabilize typed workout match columns
  • Support CLI program supersets
  • Improve typed workout match editing
  • Create inactive programs from CLI drafts
  • Preserve default plan duration semantics
  • Make guided plans session-length aware
  • Smooth onboarding workout start
  • Clarify onboarding benchmark inputs
  • Add onboarding start logging fork
  • Remove tip popovers and restore workout discard origin
  • Quiet onboarding brand accents
  • Pass preferred name into Ask Coach context
  • Add typed workout footer summary
  • Wire program detail exercise media
  • Remove typed workout empty help text
  • Tune progression recommendations and explainer
  • Restore swap exercise media action
  • Search typed workout choices by row text
  • Add typed workout quick logging
  • Make custom exercise creation search-driven
  • Harden score coach handoff
  • Add score coach handoff
  • Quiet exercise picker scope controls
  • Map machine shoulder press media directly
  • Add machine shoulder press to exercise catalog
  • Hide unavailable exercise media actions
  • Preserve exercise variant identity
  • Prevent watch heart rate cutoff
  • Correct shared workout imported load defaults
  • Refresh strava feature gate state
  • Refresh stale remote contract metadata
  • Retry transient APNs connection failures
  • Cache APNs provider tokens
  • Recover interrupted Ask Coach responses
  • Show coach advice accountability labels
  • Check ask coach advice outcomes
  • Persist ask coach advice observations
  • Add structured coach advice contract
  • Keep large score history JSON complete
  • Polish weekly recap rail card
  • Tidy coach rail cards
  • Hide tapped Coach follow-up prompts
  • Add weekly check-in decision evidence
  • Run npm publish on github-hosted actions
  • Export resolved progression recommendations
  • Automate marketing video review packs
  • Handle bodyweight progression targets

Stabilize weekly recap digest parsing and hide noisy ask evidence receipt.

  • Stabilize weekly recap digest parsingGeneral
  • Hide noisy ask evidence receiptApp
  • Expose coach fact extraction telemetryAI Coach
  • Preserve durable coach summary preferencesAI Coach
  • Add dynamic ask evidence planningAI Coach
  • Expose typed coach memoryAI Coach
  • Warm start progress reviews with athlete snapshotGeneral
  • Add LangGraph starter prompt workflowsGeneral
See all 22 changes

App

  • Hide noisy ask evidence receipt

AI Coach

  • Expose coach fact extraction telemetry
  • Preserve durable coach summary preferences
  • Reject ephemeral coach fact requests
  • Add dynamic ask evidence planning
  • Expose typed coach memory
  • Clean Langfuse ask prompt traces

General

  • Stabilize weekly recap digest parsing
  • Tighten weekly check-in prompt
  • Expose coach fact rejection telemetry
  • Gate coach fact extraction requests
  • Remove goal status from ask coach
  • Warm start progress reviews with athlete snapshot
  • Queue watch workout controls
  • Precreate workout live activity
  • Watch workout controls
  • Polish plan spacing and draft indicators
  • Delay rest timer audio activation
  • Harden starter prompt graph routing
  • Add LangGraph starter prompt workflows
  • Move notification settings into dedicated sheet
  • Duck audio during rest timer cues

Only pin coach notices for insight asks and restore ios gemfile lock checksums header.

  • Only pin Coach notices for insight asksGeneral
  • Restore iOS Gemfile lock checksums headerGeneral
  • Simplify trends muscle mapApp
  • Surface social notificationsApp
  • Use selected rest timer cuesApp
  • Add rest timer audio cuesApp
See all 12 changes

App

  • Simplify trends muscle map
  • Surface social notifications
  • Clarify social notification entry point
  • Standardize root tab headers
  • Align feed header chip width
  • Normalize root header chip width
  • Simplify rest timer sound setting
  • Make rest timer audio opt in
  • Use selected rest timer cues
  • Add rest timer audio cues

General

  • Only pin Coach notices for insight asks
  • Restore iOS Gemfile lock checksums header

Persist increment score off the main thread and keep follow actions from truncating.

  • Persist Increment Score off the main threadApp
  • Keep follow actions from truncatingGeneral
  • Render muscle map summary and shoulder highlightsGeneral
  • Share active workouts as quick workoutsGeneral
  • Repair missing recommendation backfillApp
  • Require explicit deload session contextApp
  • Pin TestFlight fastlane dependenciesApp
  • Add athlete snapshot coach toolGeneral
See all 18 changes

App

  • Persist Increment Score off the main thread
  • Repair missing recommendation backfill
  • Require explicit deload session context
  • Pin TestFlight fastlane dependencies
  • Strip ipa extended attributes before upload
  • Omit resource forks from normalized ipa
  • Normalize ipa before TestFlight upload
  • Avoid login email as app apple id
  • Accept newline-delimited ipa entries
  • Harden TestFlight upload lane

General

  • Keep follow actions from truncating
  • Render muscle map summary and shoulder highlights
  • Clear package audit advisories
  • Wire workout sharing in sync service
  • Share workout deep link from sheet
  • Share active workouts as quick workouts
  • Add athlete snapshot coach tool
  • Include fastlane json dependency

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

  • Cache Coach patterns & weekly check-in cards (disk-backed SWR + coordinator)General
  • Stabilize coach surface layoutGeneral
  • Add copy action to Ask Coach messagesGeneral
  • Add shared top divider to slide-up sheetsGeneral
  • Add divider to exercise detail sheet topApp
  • Keep rest-timer and set-logging controls in layout during Always-OnWatch
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

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

  • Capture per-exercise RIR at completion + extract LoggerView views (onemore-ulb6)General
  • Apply logger smart defaultsApp
  • Add shared ask coach progress evidence tools (onemore-foxo)General
  • Add ask coach plan draft cardGeneral
  • Reuse smart defaults roll for previous previewGeneral
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

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

  • Add emotional peak polishApp
  • Add HealthKit and bodyweight Coach observationsGeneral
  • Tier 2 premium polish — type tokens, tabular digits, stagger, spacingApp
  • Backfill coach observations from score history (onemore-97zf)General
  • Add --dry-run to all mutating write commandsCLI
  • Add --fields projection and --page-all NDJSON streamingCLI
  • Harden input validation against agent hallucinationsCLI
  • Add agentNotes + SKILL.md for agent-facing invariants (onemore-5n58)CLI
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)

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

  • Reconcile state on WCSession activationWatch
  • End session on finish + apply smart defaults to live setsWatch
  • Add score filter hapticsGeneral
  • Only highlight choices after tapApp
  • Drop misleading primary highlight on peer choicesApp
  • Keep score tile strip full-intensity in read-only modeApp
  • Calm Score screen semantic colour hierarchyApp
  • Improve ad hoc workout generationGeneral
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

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

  • Align set row columns regardless of unit hintApp
  • Keep transient workout snapshots in memoryWatch
  • Heal stale completedDayIndices via history rebuild (#459)App
  • Allow grounded skip mentions in workout summariesAI Coach
  • Polish android mvp shell (onemore-lv5.1)General
  • Add android mvp sync path (onemore-lv5.1)General
  • Track post-workout score reveal dismissal (onemore-6u0.3)General
  • Streamline dashboard record workout flowApp
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)

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

  • Re-tap Score tab scrolls back to top (onemore-uoo)App
  • Wire increment-score history + upload handlers (onemore-f7e)CLI
  • Promote score to root tab (onemore-6u0.2)General
  • Backfill increment score trend history (onemore-tqi)General
  • Persist Increment Score on every recompute (onemore-qhe)App
  • Incremnt login works headless on SSH/Termius (onemore-drq)CLI
  • Attach ProgramPhaseWindowContext to Ask Coach requests (onemore-0kv)App
  • Unify deload detection on calendar truth (onemore-gpv)App
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)

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

  • Surface cardio context in workout summariesAI Coach
  • Acknowledge positive workout readinessAI Coach
  • Dashboard taste pass — runna-style cleanupApp
  • Add dashboard start workout pickerApp
  • Unify summary surfaces across app and sharesApp
  • Add ask-claim factuality checks to summary evalAI Coach
  • Surface imported plan link in coachAI Coach
  • Snap hide-on-scroll header back on any upward scrollApp
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

Refresh dashboard muscle coverage and add coach session tracking.

  • Refresh dashboard muscle coverageGeneral
  • Add coach session trackingAI Coach
  • Redesign dashboard volume gapsApp
  • Move shared plan import to root level so it works from any tabApp
  • Dashboard visual polish — adaptive tokens + body silhouette fixApp
  • Add versioned ai output metadata to stored evalsGeneral
  • Release anonymous hosted backup on sign-inGeneral
  • Skip splash screen, offer guide/scratch choice in chatApp
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
v1.2.1

Refine onboarding plan handoff and improve onboarding editing flow.

  • Refine onboarding plan handoffGeneral
  • Improve onboarding editing flowGeneral
  • Unify exercise action menusApp
  • Improve dashboard and workout uxApp
  • Wire up HistoryView & DashboardView performance telemetryGeneral
  • Add unfollow action to social feedGeneral
  • Replace onboarding with deterministic chatApp
  • Add external write gateway skeleton for shared program importsApp
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

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

  • Add experimental rust browse engineCLI
  • Restore detail pane focus and scrollingCLI
  • Add volume and sets deltas to workout summaryApp
  • Refine browse layout and session detail depthCLI
  • Improve browse QoL navigation and search UXCLI
  • Soften readiness copyApp
  • Beginner exercise substitutions, Decline Crunch, and media gap fillsApp
  • Filter advanced exercises from dynamic pools for beginnersApp
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

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

  • Show volume % change per week in simulation exercise tablesGeneral
  • Display volume metrics in simulation report HTMLGeneral
  • Add volume progression tracking to simulation diagnosticsGeneral
  • Prompt to skip or finish incomplete training weekGeneral
  • Replace rep wheel picker with text fieldApp
  • Inline rep picker and defer post-creation navigationApp
  • Drive Live Activity directly instead of relying on onChangeApp
  • Replace level picker with bench 1RM inputApp
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

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

  • Stop rest timer when workout is discarded on iPhoneWatch
  • Add Lottie animations for PR, workout complete, and empty statesApp
  • Sliding 3-week window for progress chartApp
  • Contextual Ask Coach buttons on dashboard and program overviewAI Coach
  • Add dynamic context via tool calling to Ask CoachAI Coach
  • Derive plan goals from program exercises, not hardcoded big 5App
  • Similar exercises section in swap sheetApp
  • Wire user weight unit preference (kg/lbs) to watchWatch
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

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

  • Add mute, block, report backend endpointsGeneral
  • Add feed engagement tracking — session duration, impressions, tapsApp
  • Add user-specific social profile report from feedApp
  • Repurpose stats report as profile entry pointsApp
  • Unify history card styling with workout summary + show recommendationsApp
  • AI coach settings — data toggles + tone configAI Coach
  • Shared priority-signal ranking across AI summary surfacesCLI
  • Enrich coach context with PR dates, progression, rep PRsAI Coach
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
v1.2.0

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

  • Model fallback chain with 12s per-model timeoutAI Coach
  • In-app AI Ask — natural language training queriesApp
  • Add transitions across stats, history, detail, onboarding, and muscle viewsApp
  • Enhance muscle diagram with greyed-out empty state and unified toggleApp
  • Sync latest HealthKit bodyweight on app launchApp
  • Animate logo reveal line-by-lineCLI
  • Add branding, AI notes, and auth badgeCLI
  • Show active exercise immediately when workout startsWatch
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
v1.1.4

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

  • Streamline hosted workout sync onboardingGeneral
  • Generate apple auth client secrets in serviceGeneral
  • Add apple provider support to hosted cli authGeneral
  • Surface hosted google login in cliGeneral
  • Rename command to incremntCLI
  • Add program summary and explanation commandsCLI
  • Add snapshot insights query cliCLI
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

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

  • Show current week phase pill (W4 · Deload) in PlanView headerGeneral
  • Style deload progression pills amber with explanatory header in CycleSummaryViewGeneral
  • Intercept cycle boundary to apply deload instead of progression at week 4/8General
  • Add applyDeloadTransition and applyPostDeloadTransition to ProgramStoreGeneral
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

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

  • Add Justfile with local TestFlight upload commandsGeneral
  • Refactor HistoryView to split-view pattern with muscle-colored calendar dotsGeneral
  • Add local TestFlight upload scriptGeneral
  • Replace exercise pills with muscle breakdown donut chart in feed cardsGeneral
  • Redesign dashboard and program overviewApp
  • Remove duplicate title from workout descriptionApp
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

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

  • Enhance DayDetailView exercise cards with metadata and media buttonGeneral
  • Redesign GoalDetailView with hero ring and compact goal rowsGeneral
  • Redesign dashboard for better visual hierarchy and densityGeneral
  • Add guided start flow for adhoc workoutsGeneral
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

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

  • Enhance exercise type lookup and harden DateFormatter usageGeneral
  • Add onboarding goal selection screenGeneral
  • Improve exercise name resolution for PRs and metadata lookupsGeneral
  • Implement WorkoutKit integrationGeneral
  • Add video icon button and fix bodyweight exercise displayGeneral

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

  • Show Est. badge on Start column when value is ratio-basedGeneral
  • Add last activity date indicator to programsGeneral
  • Add match move animation and fix post-creation navigationGeneral
  • Add dynamic exercise context to rest timer notificationsGeneral
  • Add GoalDetailView with full progress breakdownApp
  • Show checkpoint/completion modals on launchApp
  • Update goal progress when workouts completeApp
  • Integrate BaselineAssessment and GoalPreview into flowApp
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

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

  • Add swipe actions for exercises in Plan viewGeneral
  • Add permanent removal option for exercises in LoggerViewGeneral
  • Show weight in Plan view and handle time-based exercisesGeneral
  • Add custom exercise equipment lookupGeneral
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

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

  • Auto-open LoggerView for pending Day 1 workoutApp
  • Show OnboardingView when user is newApp
  • Pass user weight to program generationApp
  • Add OnboardingView to orchestrate onboarding flowApp
  • Show projected exercises in muscle breakdown viewGeneral
  • Add user profile settings for weight, height, and ageGeneral
  • Add smooth animation for program switchingGeneral
  • Replace review step with rich summary cardGeneral
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