Changelog
What's new.
Every release, newest first, in the words members read in the app.
- Releases
- 1,155
- Days shipping
- 98
- Now on
- v5.163.11
Sunday, May 31, 20264 releases
Body Composition Chart — QA Fixes
v4.9.1- Fixed data loss: a manual weight entry and a smart-scale body-fat reading logged on the same day now combine into one complete point instead of one overwriting the other (this also restores lean mass / fat mass / FFMI on those days)
- Cut/bulk cycle markers now stay visible when you zoom — including active cycles whose end date is in the future (they no longer vanish off the edge of the chart)
- Progress-photo markers no longer disappear when the 7-Day Avg line is toggled off — they hop to whichever weight line is showing
- The FFMI card now uses the exact same reading as the chart's last point, so the two never disagree
- Faster page load: the trend math is now linear instead of quadratic over your full weigh-in history
Weight Velocity Speedometer
v4.9.0- New dashboard speedometer shows your weekly rate of weight gain/loss as a smoothed gauge — steer your bulk or cut at a glance
- Reads a 14-day regression trend, not raw scale weight, so a single high-water day won't throw the needle off
- Set a target weekly-rate range per cycle (e.g. 0.75–1.1 lbs/wk for a bulk) — land in the green zone, get nudged out of red
- Actionable status under the gauge: gaining too fast → trim calories, too slow → add calories, tuned to bulk / cut / recomp
- Sensible default rate bands per cycle type pre-fill the cycle form, so it works the moment you start a new phase
Calendar Date Pickers & Cycle Length Auto-Calc
v4.8.0- New stylized calendar date pickers for cycle start and end dates — no more 'invalid date' errors
- Set your cycle length in weeks and the end date is calculated automatically
- End date and length stay in sync — change either and the other updates
- Fixed cycle edit incorrectly rejecting cycles longer than 24 weeks (now matches the 52-week limit)
Body Composition Chart — Zoom, Toggles & Cycle Markers
v4.7.0- Zoom the body composition graph from a single intro week out to years — quick range presets (1M / 3M / 6M / 1Y / All) plus a draggable brush for fine-grained zoom and pan
- New Lean Mass and Fat Mass trend lines, derived from weight + body fat %, so you can track what's actually changing during a cut or bulk
- FFMI now plots as a line over time (when your height is set), not just a single stat
- Toggle any series on or off — Weight, 7-Day Avg, Lean Mass, Fat Mass, Body Fat %, FFMI — and your selection is remembered between visits
- Dual Y-axes keep mass (lbs/kg) and ratios (% / FFMI) readable on the same chart
- Cut / bulk / recomp cycles are overlaid as labeled, color-coded regions — read your body comp as a timeline of events with each phase clearly marked
Saturday, May 30, 20261 release
Infrastructure Hardening & Zero-Downtime Resilience
v4.5.0- Cluster expanded to 9 nodes (1 control plane + 8 workers) with 4GB RAM per worker and 8GB/96GB on the control plane
- PodDisruptionBudget ensures at least 5 of 8 app pods stay running during maintenance or node failures
- Topology spread distributes pods evenly across nodes — no single node failure takes down multiple replicas
- Startup probe gives pods 2 minutes to boot before health checks kick in, preventing kills during slow starts
- Deployments now pinned to git SHA image tags instead of :latest for deterministic rollouts and instant rollbacks
- USB NIC autosuspend disabled across all Proxmox hosts to prevent Realtek adapter disconnects that broke cluster quorum
Thursday, May 28, 20263 releases
Onboarding Chat Resilience
v4.4.2- Onboarding chat now handles large context dumps gracefully — long messages are capped and old history is compacted to stay within model limits
- Extraction retries automatically on transient AI provider failures
- Better error messages when conversations exceed context window limits
Registration Resilience Fix
v4.4.1- Fixed: signup failing when retrying after a partial failure (e.g. server restart) — account was created but profile setup never completed
- Registration now recovers gracefully if the account already exists, signing in and completing profile setup automatically
Coach Can Pull & Compare Historical Bloodwork
v4.4.0- Atlas can now pull your past lab panels on demand to compare trends over time — not just your most recent results
- Each historical panel is annotated with the compounds you were running then (and recently-stopped ones still in your system by half-life) for causal context
- New generalized tool-calling loop — the coach can chain multiple data lookups in one turn, replacing the brittle single-tool path
- Recent labs stay in every prompt; older data is fetched only when needed, keeping context lean
Wednesday, May 27, 20264 releases
Coach Verbosity — Detailed Health & Analysis Answers
v4.3.1- Lab/bloodwork questions now always get a full per-marker breakdown (value, reference range, in/out of range, trend) — even when asked briefly
- Cut/bulk progress, body composition, and programming questions now go in-depth by default
- Trivial lookups (e.g. "what's my weight?") still get short answers
System Model Selection for Managed AI Coach
v4.3.0- Admins can now choose the xAI model used by the shared system key — it applies to every user
- Default coach model is now Grok 4.3 across all users
- Removed the provider dropdown from AI Coach Configuration (xAI is the sole provider)
- Fixed: the model selector was previously ignored whenever the system API key was enabled
Share Link Polish & Bug Fixes
v4.2.0- OG preview image now renders before/after photos with stats panel for iMessage, Discord, and Slack unfurls
- Photo dates shown on Before/After card and Summary card so viewers see the time span
- Archetypes rewritten with gym-culture voice and real training stats
- Body fat offset now only applies to smart-scale data, not manual entries
- Body metrics card fills full width to match other story cards
- Song clip start/end times and accent color now carry through to public share links
- Audio starts on first tap for logged-out viewers (browser autoplay policy)
- Song start time now works on iOS — seeks after metadata loads
- Lottie animations load correctly for logged-out viewers
- Fixed middleware blocking audio and animation files for logged-out users
Story Enhancements — Graphs, Photo Labels & Music
v4.1.0- Body Metrics card now shows a dual-line graph of weight and body fat % over the transformation timeline with hover tooltips
- Before/after photos now display the closest weight and body fat % beneath each image
- Background music for transformation stories — 3 royalty-free tracks with volume control, mute, and custom start/end time
- Accent color picker — 8 colors to customize your story's neon theme
- Compact number formatting on workout volume cards (1.4K, 1.1M) with full-number tooltips
- Summary highlight card with before/after photos, key stats, and download in 9:16 or 1:1 format
- Refresh Stats button in settings to regenerate snapshots with new data fields
- Fixed archetype wording — 'Full-spectrum training' replaces misleading 'No muscle left behind'
- Lottie animations now gracefully fall back to icons in incognito/restricted browsers
- Delete transformations from the list view
- Browser notifications when you hit a goal
Monday, May 25, 20261 release
Story Cards Bug Fixes
v4.0.1- Fixed unit display — body metrics, PRs, measurements now respect user's unit system (lbs/kg, in/cm)
- Goals Crushed card now shows units (lbs, %, etc.) alongside target values
- Fixed Share button on CTA card not responding to taps
Saturday, May 23, 20261 release
Transformation Wrapped — Shareable Story Cards
v4.0.0- Transformation Builder — create before/after transformation stories with photo picker, date ranges, and cycle shortcuts
- 12 animated story cards — cover, photos, body metrics, heatmap, volume, PRs, goals, badges, archetype, measurements, cycle framing, and closing CTA
- Count-up animations on stat cards with framer-motion, confetti bursts on milestone cards, Lottie celebrations
- Fullscreen story viewer — tap/swipe navigation, directional slide transitions, segmented progress bar
- Public sharing — generate a share link anyone can view without logging in, with the creator's theme applied
- OG preview cards — paste a share URL into iMessage, Discord, or Slack and see a rich before/after preview image
- Card download — save any story card as a PNG in Stories (9:16) or feed (1:1) format
- Privacy-first — public shares show only computed deltas, never raw data, compounds, or supplements
Friday, May 22, 20261 release
Multi-Node Cluster, Load Balancer & Goal Celebrations
v3.1.0- Deployed to multi-node k3s cluster — app now runs across 2 nodes with automatic scheduling
- kube-vip load balancer with floating VIP (192.168.1.240) — if a node goes down, traffic automatically moves to a healthy one
- Docker images now pulled from GHCR — any new node can join the cluster and pull the app image automatically
- Service upgraded from NodePort to LoadBalancer — clean VIP routing, no more hardcoded port numbers
- Old standalone Docker container decommissioned — Kubernetes is now the sole production runtime
- Goal celebration with confetti animation when you hit a weight or body fat target
- In-app notifications for goal achievements — notification bell routes to the achieved goal
- Smart-scale sync now auto-checks goals — weigh in on your smart scale and goals resolve automatically
- Goal direction detection fixed: cut vs bulk determined from weight at goal creation, not all-time earliest
Wednesday, May 20, 20262 releases
Infrastructure Overhaul: Postgres, S3 & Kubernetes
v3.0.0- Migrated database from SQLite to PostgreSQL — all 20 schema files converted to pg-core, 5,280 rows migrated with zero data loss
- Photo storage moved from local disk to S3-compatible object store (SeaweedFS) — container is now fully stateless
- Production Docker image: multi-stage build, health checks, auto schema push on startup
- Kubernetes manifests: Deployment, Service, ConfigMap, Secret with readiness/liveness probes and rolling updates
- CI/CD: GitHub Actions workflow auto-builds and pushes Docker image to GHCR on every push to main
- Fixed auth cookie handling behind Nginx Proxy Manager reverse proxy — no more redirect loops on HTTPS
- Fixed timestamp columns: converted from bigint to native Postgres timestamp type, removed stale to_timestamp() wrappers
- Fixed scale group id overflow: integer to bigint for values exceeding 2^31
- Removed SQLite dependencies, stale migration files, and backup utility
Goal Achievement & Celebration
v2.3.0- Goals are now automatically detected as achieved when weight or body fat hits the target
- Confetti celebration and toast notifications fire the first time you see an achieved goal
- Goal badges are automatically awarded on achievement — no manual action needed
- Smart-scale sync now checks goals — weigh in on your smart scale and goals resolve automatically
- Catch-all goal check runs on every page load so achievements are never missed regardless of data source
- Direction detection fixed: cut vs bulk is now determined from your weight when the goal was created, not your all-time earliest weight
- Celebration state tracked per goal — confetti plays once and won't repeat on refresh
- Awards page revalidates when goals are achieved so new badges appear immediately
Monday, May 4, 20262 releases
Onboarding Goals & Nutrition Fixes
v2.2.2- /nutrition no longer crashes when macroOverrides are partial — missing fields fall back to the TDEE-based auto-calculator instead of feeding undefined into the macro cards
- Cycle macroOverrides now read both `fat` and `fats` keys, fixing a silent mismatch between the onboarding writer (`fat`) and the coach-action writer (`fats`)
- Onboarding strength goals now persist which lift they're for — `exerciseName` is captured by the extraction prompt, resolved to a real `exerciseId`, and stored on the goal
- Onboarding goal targets are now converted lb→kg deterministically in code instead of relying on the LLM — fixes the 'I said 315, page rendered 694 lb' bug end to end
- Defensive fallback: when the LLM omits `targetUnit`, the seed infers it from the user's preferred unit system instead of silently treating lb as kg
- Goal cards and the goal detail page now show the actual lift name (e.g., 'Bench Press 1RM') instead of the bare 'Strength (1RM)' label
- Atlas's goal context now includes the lift name so coach advice can reference the right exercise
- Onboarding setup-summary card now renders lift name and explicit unit (e.g., 'Bench Press: 315 lb'), and surfaces `[MISSING LIFT]` if the AI dropped the exercise — the gap is loud, not silent
- Onboarding system prompt now forbids the model from narrating tool calls — kills the 'calling import_data...' hallucinations during the conversational interview
- Onboarding Step 4 now requires the AI to ask which lift each strength target is for, with explicit canonical-name mapping (bench → Bench Press, dead → Deadlift, etc.)
- Onboarding extraction prompt scoped its kg-conversion rule to profile fields only — goals now travel with an explicit `targetUnit` instead of ambiguous 'just convert it'
- Onboarding extract endpoint logs the extracted goals payload for diagnostic visibility while the new contract beds in
- Standardized lb→kg constant in the onboarding summary card from 2.205 to 2.20462 to match the rest of the app
Challenges, Groups & Notifications Fixes
v2.2.1- Notification bell no longer crashes the page — replaced the base-ui menu with a plain popover
- Stale browser bundle now shows a 'Reload' prompt in the bell instead of failing silently
- Clicking a notification now jumps to the specific challenge, not the listing
- Challenge scores display in your preferred unit (kg/lbs) across cards, detail, create form, and the public accept page
- Beat-Workout creator now starts at the captured target — challenger must actually beat it, not just score above zero
- Completion notifications fire whether the challenge ends via cron, page-load resolution, or workout-completion
- Winner badge is awarded from every resolution path, not just the nightly cron
- Gym Streak counts days in your timezone instead of UTC — late-night sessions no longer skip a day
- Two friends accepting the same challenge link at the same time can't produce a 3-participant challenge
- Resolving a challenge twice no longer duplicates notifications or scores
- Double-clicking 'Complete Workout' no longer double-counts Most-Volume scores or re-detects PRs
- Fixed an infinite recursion in challenge resolution that crashed the server when an expired challenge resolved
- Group leaderboard 'Last 7 / 30 Days' is now a rolling window instead of a UTC calendar week/month — your actual training shows up
- Group leaderboard volume displays in your preferred unit (kg/lbs)
- Group cards show your real role from the membership table, not 'creator = admin' guesswork
- Leaderboard volume sum explicitly excludes cardio sets so future-format cardio entries can't pollute totals
- /api/challenges/resolve-stale unblocked from auth middleware so the cron actually runs
Friday, Mar 27, 20261 release
Atlas Coach Fix
v2.2.0- Atlas receives the current date, day-of-week, and local time in every conversation
- Cycle 'Week X of Y' calculation uses your timezone instead of server UTC
- Today's scheduled workout is annotated with a 'TODAY' marker in coach context
- Atlas acknowledges when you train on a scheduled rest day and factors it into advice
- Pre-computed cycle progress: week number, days elapsed, weeks remaining, total days
- Anti-hallucination rules: Atlas uses only date and data provided — never guesses
- When Atlas lacks data to answer, it says so instead of confabulating
- Anti-hallucination tested against empty-data users so onboarding doesn't break
- Mutating tools fire only when you explicitly request a change
- Ambiguous inputs (e.g., 'I weighed in at 182') trigger a confirmation question first
- General questions and check-ins get conversational replies — no surprise tool calls
- System prompt rewritten: date → data → grounding rules → personality → style → tools
- Explicit tool_choice='auto' in the AI streaming request
- DST-safe date math using noon (T12:00:00) reference timestamps
Thursday, Mar 26, 20261 release
Social Features
v2.0.0- Shareable workout & template links with public pages and crypto-secure tokens
- 1200×630 OG image previews for iMessage, Discord, and Slack unfurls
- 4-type 1v1 challenge system: beat workout, single-exercise 1RM, most volume, gym streak
- Link-based challenge acceptance — no friend system required
- Auto-scoring on workout completion with lazy deadline resolution
- In-app notification bell with 30s polling and challenge event types
- Named group leaderboards with invite links and multi-metric rankings
- Period toggles for leaderboards (week / month / all time)
- 87 new tests across 3 phases with zero regressions
Wednesday, Mar 25, 20261 release
Coach Actions & Body Insights
v1.17.0- 3 new Atlas coach tools: log_weight, create_goal, manage_cycle (10 action tools total)
- System prompt updated across all user modes with conversational triggers and unit conversion
- Body Fat % summary card with 30-day delta and directional color coding
- Green for fat loss, 🩷 pink for fat gain — at a glance
- Conditional DEXA-calibrated label when offset is applied
- Photo timeline view with Gallery/Timeline toggle and chronological strip
- Pose-type filtering with date labels and lightbox integration
Tuesday, Mar 24, 20262 releases
DEXA Calibration
v1.16.0- DEXA-based auto-calibration: enter your DEXA BF%, click Calibrate, offset is computed
- Pulls your latest smart-scale reading automatically
- Range validation, rounding, and immediate UI feedback
- Independent useTransition hooks keep Calibrate and Save buttons usable in parallel
Smart Scale Deep Integration
v1.15.0- Body Smart now captures visceral fat (type 170) and BMR (type 226)
- Schema migration + sync pipeline expansion for new metrics
- Sync History button backfills the last 90 days
- Body fat % offset calibration in Settings (smart-scale only, read-time application)
- Unique differentiator — no competitor offers this
- Visceral fat trend widget with health zone bands
- 4-segment body composition ring chart
- Metabolic age delta widget
- Atlas coach context enriched with visceral fat zone label and BMR
Monday, Mar 23, 20261 release
Schedule Management
v1.14.0- Compound Schedules tab on /compounds with full CRUD
- Inline edit dose, frequency; add new schedule; deactivate
- Supplement Schedules tab on /supplements mirroring the compound pattern
- Custom days picker support for non-standard schedules
- Delete schedule buttons on compound and supplement detail pages
- All 10 requirements (CSCHED-01–04, SSCHED-01–04, DETAIL-01–02) shipped
Sunday, Mar 22, 20261 release
Compound & Supplement Enrichment
v1.13.0- Compounds table extended with effects, mechanism, anabolic/androgenic ratios, side effects
- 121+ peptides imported from pepti.wiki (Solvent category excluded)
- Peptides categorized: Anabolic, Anti-inflammatory, Regeneration, Metabolic, Hormonal
- ~40–50 new AAS compounds: Halotestin, Superdrol, Parabolan, SARMs, Proviron and more
- Anabolic:androgenic ratios normalized to testosterone=100
- Derivative class tags: Testosterone, DHT, 19-nor / Nandrolone
- Rich detail pages with chemistry, effects, and routes of administration
- Idempotent seed: enrichment upserts without overwriting user-modified fields
Saturday, Mar 21, 20263 releases
Theme System
v1.11.0- Multi-theme support via CSS variable swapping
- Selected theme persisted per user — applies on load with no flash
- Cyberpunk Green (default neon green)
- Cyberpunk Colorful (rainbow gradient palette)
- Cyberpunk Red (crimson / hot pink)
- Cyberpunk Blue (ice / electric blue)
- Cyberpunk Gold (amber / gold)
- Cyberpunk Purple (violet / magenta)
- Synthwave (pink-purple gradient)
- Light Mode for daytime use
- Visual preview of each theme in Settings, instant switch — no reload
Coach Tool Feedback
v1.10.0- adjust_macros now reads back protein, carbs, fats, calories from DB
- create_workout_template returns template name and exercise count
- update_workout_template returns updated name and final exercise list
- set_weekly_schedule returns final day-to-template mapping
- update_cycle returns updated cycle type and end date
- update_compound_schedule returns updated dose, unit, and frequency
- Every Atlas tool call now confirms exactly what changed
Cyberpunk Redesign & Rename
v1.9.0- Full design system overhaul to dark-only cyberpunk aesthetic
- Toxic green, hot pink, electric blue accents across the app
- JetBrains Mono for data, Orbitron for headings
- All UI primitives restyled with neon glow, HUD borders, scan-line texture
- Sidebar redesigned with neon active states and HUD section dividers
- Landing, login, and register pages fully restyled
- Dashboard, Today, Coach, Workouts, Body, Photos, Nutrition, Supplements, Compounds, Goals, Awards, Labs, Cycles, Calendar all redesigned
- Bug sweep across affected surfaces
- Project renamed to AnabolicAdvisor
Friday, Mar 20, 20261 release
Editing, Awards & Quality of Life
v1.7.0- Edit set values (weight, reps, set type) on completed or in-progress workouts
- Add or delete exercises and sets on any workout
- PR records auto-recalculate after every workout edit
- Paste a Muscle & Strength URL to auto-fill new exercises
- Pre-filled form for confirmation before saving; source URL stored on exercise
- Retroactive dose logging: weekly view of scheduled supplement & compound doses
- Toggle past doses as taken; log custom (unscheduled) doses with date and details
- Duplicate-dose warnings before insert
- Award system: PR milestone badges (1, 10, 25, 50, 100 PRs)
- Goal-achievement badges (weight, strength, body fat, FFMI)
- Consistency streak badges (7 / 30 / 90 days)
- Awards page with name, description, icon, and date earned
- Toast notifications when a badge is earned
- Atlas references earned badges in coaching context
- Atlas thread back-button navigation on desktop
- Lab OCR: upload PDF or image of a lab report
- AI extracts marker names, values, units, and reference ranges
- Editable confirmation table before saving
Wednesday, Mar 18, 20261 release
Analytics, Labs & Fixes
v1.6.0- Coach mobile overflow fixed with dvh + overflow constraints
- Blank workout detail fixed via force-dynamic
- Thread hydration fixed with suppressHydrationWarning
- Auto-detect PRs via Epley 1RM on every workout completion
- Trophy badges on workout detail
- /workouts/analytics page with weekly volume-by-muscle-group bar chart
- Per-exercise strength curves
- Lab/bloodwork tracking with 29 preset markers
- Date-grouped lab history with per-marker trend charts
- Reference range bands on every chart
- Compound-aware lab reminder (60-day threshold for users on cycle)
- Atlas references PRs and lab results with mode-gated framing and clinical guardrails
Tuesday, Mar 17, 20261 release
Workout Detail & Scheduling
v1.5.0- Workout detail page at /workouts/[id] with strength + cardio layouts
- Clickable completed workout cards in history
- 'Save as Template' from any completed session
- Preserves exercise order, set count, cardio duration/type in notes
- Multi-template-per-day scheduling with pill UI
- Add-select dropdown and per-template remove
Monday, Mar 16, 20261 release
Today Screen
v1.3.0- Daily command center at /today
- Single getTodayData() aggregator across 5 data sources
- isScheduledForToday() covers all 6 frequency codes
- One-tap toggle for supplement and compound dose logging
- Optimistic checklists with instant feedback
- Smart-scale activity stats and weight display
- Today nav item in sidebar for all users
- Timezone-aware date handling using user's IANA timezone
Saturday, Mar 14, 20261 release
Onboarding Interview
v1.1.0- Onboarding gate intercepts first-time logins
- Full conversational AI interview: profile, goals, macros, supplements, compounds, routines
- Coach tone personalization: gym bro / science / clinical
- Layered on top of mode guardrails across all Atlas interactions
- Atomic seedFromInterview transaction seeds 9 entity types
- 23 TDD tests covering the seed pipeline
- Confetti celebration with tone-aware messaging
- Re-runnable interview from Settings with edit-mode context awareness
Friday, Mar 13, 20261 release
Core Platform
v1.0.0- Authentication with invite codes and three user modes (natty / natty+ / enhanced)
- Dashboard with widgets and weight trends
- Workout system: templates, logging, scheduling, exercise library
- Body composition: weight tracking, measurements, progress photos with comparison
- Nutrition and macro tracking
- Supplement library, logging, and scheduling
- Compound library, logging, scheduling, and cycle management
- Goal tracking (weight, body fat, strength, FFMI) with streaks and badges
- Calendar with event views
- AI Coach (Atlas): streaming chat, thread management, tool-calling for program changes
- Profile, settings, and theme support
- SQLite + Drizzle ORM, better-auth for authentication