Changelog — PulseCap
6.46.9 (2026-10-19) — Splash CLS root fix
- Inline fixed splash positioning so async
identity.csscannot leave splash in-flow. - Intro
min-height:100%; body100svh. - SW
pulsecap-v138.
6.46.8 (2026-10-19) — Version sync + CLS / MODULE_CHAIN
- Synced
APP_VERSIONwithVERSION.json. - Eager gym-tools / recovery / profiles; MODULE_CHAIN skips scripts already on the page.
- Onboarding paint shell +
100svhshell to cut mobile CLS. - SW
pulsecap-v137.
6.46.2 (2026-10-16) — Ember decks + icon parity
Pitch/presentation remapped to Ember orange. Leftover cyan apple-touch and icons/ copies aligned with Ember PNGs.
- SW
pulsecap-v135.
6.46.1 (2026-10-16) — Honest first paint
- The first screen paints straight away instead of fading in, so its first paint counts for Lighthouse.
- Automated tools see the same first-visit splash as people do.
- SW
pulsecap-v135.
6.46.0 (2026-10-15) — Splash overlay / LCP
- Boot splash is a fixed overlay so app content paints underneath (Lighthouse LCP).
- Returning visitors,
prefers-reduced-motion, demo, and automation skip splash; first visit ≤ 600 ms, tap to skip. - SW
pulsecap-v135.
6.45.0 (2026-10-14) — Perfection Loop v3
- Gate vibrate/haptics behind user activation (PLS-V3-1) so silent demo boot stays quiet in Chromium.
- Perfection v3 QA seed + device-qa evidence. SW
pulsecap-v135.
6.44.0 (2026-10-06) — Full exercise universe + Training Guide
- 1,872 exercises: hand-written calisthenics, kettlebell, TRX, plyometrics, Olympic, strongman, CrossFit, cardio, martial arts, mobility, yoga, Pilates, rehab, outdoor and sports rows, plus names and instructions from the open Exercises Library (MIT).
- Exercise animations and thumbnails (© Gym visual, shown under licence with credit) for 1,364 exercises.
- Exercise sheet rebuilt as an iOS page sheet: sliding segmented control, collapsing title, Back/Done, drag to dismiss. Tabs switch in place.
- Browse every exercise with equipment filters; new gear (rings, TRX, sled, balls, box…) in equipment setup.
- Training Guide: 46 methods, every split (7 new), 12 goals.
- Skippable injury step, persona-tested plans, Easier/Harder links, workout library, set types, summaries. SW
pulsecap-v135.
6.43.1
Sync APP_VERSION with VERSION.json. Review 3: defer route-only DBs/modules off first paint. SW pulsecap-v135.
6.43.0
Tier 1 finish: Today demo banner + no duplicate Progress CTA; actionable insight; sentence-case tabs; type floor ≥11px; safe-area tab/rest/workout chrome; §4.2 disclaimers; privacy notes. SW pulsecap-v135.
6.41.0 (2026-08-18) — Final verification
Firefox and WebKit suite green after a cross-engine storage-full toast stub. Airplane-mode log-a-set then Progress. PWA chrome contract: theme-color tokens, maskable icons, iOS launch images. Closing review recorded. SW pulsecap-v135.
6.40.0 (2026-08-18) — Documentation + site sync
Synced README/GUIDE/HANDOVER/marketing copy to shipped truth, archived pre-Ember IA/audit docs to avoid stale guidance, and regenerated the screenshot gallery. SW pulsecap-v135.
6.39.0 (2026-08-18) — Every state copy
Near-empty gym gap banner made encouraging. Storage-full next step clarified with an export-backup pointer. Invalid plan JSON import now uses plain-language “PulseCap plan JSON / paste text” guidance. SW pulsecap-v135.
6.38.0 (2026-08-18) — Onboarding as a welcome
Added a Playwright guardrail for the onboarding “skip optional fields” path so new users reliably reach Today. SW pulsecap-v135.
6.37.0 (2026-08-18) — Motion seam
Removed the artificial 300ms splash boot floor so the app flows continuously into the existing splash exit motion. Kept the same motion constraints. SW pulsecap-v135.
6.36.0 (2026-08-18) — Brand integrity
Icon + maskable set regenerated for the Ember accent. Theme color single source of truth (no stale overwrite). Added iOS launch screens, synced manifest positioning/shortcuts, and fixed the last light-mode contrast failure. SW pulsecap-v135.
6.35.0 (2026-08-18) — Selected-chip contrast
White on bright orange fills was still ~2.6:1. New --on-accent token (#1C1C1E) for text on accent/grad fills. Mesocycle phase label 11px. Gradient-aware contrast audit. SW pulsecap-v135.
6.34.0 (2026-08-18) — Light accent contrast
Accent as text on light backgrounds was 2.4:1. New --accent-text token for labels and icons; bright accent stays for fills and nav. Selects match the design system. Full computed-background contrast audit on all screens. SW pulsecap-v135.
6.33.0 (2026-08-18) — QA sweep
Interaction, contrast, width, and empty/extreme states checked. Docs, gallery, and marketing pages synced. SW pulsecap-v135.
6.32.0 (2026-08-18) — Equipment catalogue
Machine type is the key; brand is optional. Search and select-all-in-view so a commercial gym can be described in a couple of minutes. SW pulsecap-v135.
6.31.0 (2026-08-18) — Gym machines actually filter
Picking a leg press and a lat pulldown now changes the plan. Brand is a label. If a muscle group has no loaded movement, the app says so. SW pulsecap-v135.
6.30.0 (2026-08-18) — Settings gutter and tabs
Form controls sit on a 16px gutter. Eight Settings tabs scroll as one row instead of wrapping. SW pulsecap-v135.
6.29.0 (2026-08-18) — Vertical layout
One bottom-padding rule. Today fills the screen with last session, next up, and this-week consistency — not empty space. SW pulsecap-v135.
6.28.0 (2026-08-18) — Re-render contract
Tapping a control on the same screen keeps your scroll position and keyboard focus. Navigation still starts at the top. SW pulsecap-v135.
6.27.0 (2026-08-18) — Injuries and coverage
Eight joints is the one model. Named conditions map onto them; left/right is not a separate filter. Every equipment kit still has a trainable session with any one limitation on. SW pulsecap-v135.
6.26.0 (2026-08-18) — Food library
235 foods with labelled portions and a source on every row. Karachi staples (roti, daal, karahi, nihari, biryani) sit next to USDA items. Lite guidance — not a calorie tracker. SW pulsecap-v135.
6.25.0 (2026-08-18) — Sports and MET sources
Cricket sessions for Karachi. Plyos are no longer labelled sports. Effort METs come from the Compendium and are labelled estimates — they are not calorie totals. SW pulsecap-v135.
6.24.0 (2026-08-18) — Movement patterns
Every lift is tagged (push, pull, hinge, squat…). Swap stays in-pattern. Progress can say if you press twice as often as you pull — no score. SW pulsecap-v135.
6.23.0 (2026-08-18) — Wrist / neck / ankle
Those three limitations now filter the library instead of doing nothing. Log shows a plain-language caution. SW pulsecap-v135.
6.22.0 (2026-08-18) — Exercise ids
Logged sets now carry a stable exercise id. Duplicate library names were merged so progress stays one series per lift. SW pulsecap-v135.
6.21.0 (2026-08-18) — Personalization spine
Calories and protein now come from height, weight, age, days/week and goal. Onboarding asks equipment and training days. Programs ships multiple templates plus a builder. Readiness stays a word until you have three sessions. Rest timer uses wall-clock time.
6.17.0 (2026-08-17) — Log + Train constitution
- Active header is name + timer + Finish; extras behind ⋯. Set rows stay one line at phone widths. Train split picker is segmented/select, not chip-scroll. SW pulsecap-v135
6.16.0 (2026-08-17) — Ember rebuild complete
- Phases 1–10: Ember identity, 5-tab shell, Profile spine, 4-step onboarding, slim Today/Log/Progress/Programs/Me. No 1RM. Smart Coach is rules. SW pulsecap-v135
6.15.0 (2026-08-17) — Phase 9
- Deleted quarantined modules; dropped dead Capricorn scripts from marketing HTML. SW pulsecap-v135
6.14.0 (2026-08-17) — Phase 8
- Me limitations wired into Profile.deriveContext. SW pulsecap-v135
6.13.0 (2026-08-17) — Phase 7
- Programs tab (templates + local import). SW pulsecap-v135
6.12.0 (2026-08-17) — Phase 6
- Progress: this-lift-vs-itself SVG (best set load, not e1RM). SW pulsecap-v135
6.11.0 (2026-08-17) — Phase 5
- Log: per-side loads + limitation banner. SW pulsecap-v135
6.10.0 (2026-08-17) — Phase 4
- Today: one session CTA + one insight. SW pulsecap-v135
6.9.0 (2026-08-17) — Phase 3
- Onboarding: one intro + four steps + educational disclaimer. SW pulsecap-v135
6.8.0 (2026-08-17) — Ember rebuild Phase 2
- Profile.deriveContext spine, engine facade, ?owner=1 Machine-Only PPL seed, schema v4. SW pulsecap-v135
6.7.0 (2026-08-17) — Ember rebuild Phase 1
- Ember identity: near-black + orange accent, system fonts, no Google Fonts or Capricorn/GSAP in the app boot
- Nav: Today · Train · Progress · Programs · Me. Quarantined Learn/Body bloat. SW pulsecap-v135
6.6.0 (2026-08-17) — Personalized Program Intelligence
- My Plan: machine-only shoulder-safe PPL, local text-PDF / JSON / paste import with review (no upload, no OCR; scanned PDFs unsupported), prescribed gym-floor logger, week-5 deload
- Safety acknowledgement required; educational guidance only — not medical clearance. Smart Coach remains rules-based (not LLM). SW pulsecap-v135
6.43.1 (2026-09-15)
- Device-matrix QA harness; shell BP 700 (iPad mini sidebar); demo safe-top; SW pulsecap-v135
6.5.1 (2026-07-30)
- Brand fad purge Today + marketing; dash token classes; iPhone soak automated slice; SW pulsecap-v135
6.5.0 (2026-07-30)
- Settings IA: Account · Training · Fuel · Appearance · Access · Alerts · Privacy · About (+ aliases)
- Light theme chalk-red DNA; Cap accent brand lock; dead nav toggle + CSS utility dedupe
- AUDIT.md · IA-RATIONALE.md · documented gallery · SW pulsecap-v135
6.3.0 (2026-07-21)
- Resumable workouts, route-race protection, canonical units, and profile-scoped progress photos
- Validated backups, camera cleanup, accessible dialogs, cross-browser QA, and consent-based PWA updates
- Verified GitHub Pages deployment · SW pulsecap-v135
6.2.4 (2026-07-19)
- Capricorn OS brand lock · SW pulsecap-v135
6.2.1 (2026-07-19)
- VaultCap-style scroll screenshots in gallery + viewer filters
- UI polish: settings/equipment chrome icons; SW pulsecap-v135
6.2.0 (2026-07-18)
- Delete deprecated route regs; expand barcode + mobility; Today mobility nudge
- Anatomy/rehab/settings/quest chrome de-emoji; CI pages-gate
- SW pulsecap-v135
6.1.0 (2026-07-18)
- Gym tools: Wake Lock, voice set log, barcode food, mobility flows, pain→rehab
- ExDB emoji purge; cardio stroke icons; form-media sync copy
- SW pulsecap-v135 · offline only · no LLM
6.0.0 (2026-07-18)
- Coach Kernel: RPE autoreg, volume lander, joint budget, mesocycle, push/pull, session recap
- Smart Coach intents + Today focus card — offline rules, not cloud AI
- Gym Floor + Beginner Mode; offline food library; SW update banner
- SW pulsecap-v135 · 100% free · no native · no pricing
Docs (2026-07-18)
- Docs pack synced to v5.6.6 — GUIDE/README/ROADMAP/presentation/pitch honesty pass
5.6.6 (2026-07-17)
- Fixed huge blank footer on real iPhone — view padding + spacer-bottom were double-counting nav/safe-area
- SW pulsecap-v135
5.6.5 (2026-07-17)
- iPhone 16 Pro Max device audit: every screen + active workout in dark & light, with nav-overlap and horizontal-scroll probes
- Fixed Physique Archetype/Timeline tabs stuck on "loading" (module never lazy-loaded)
- Fixed double topbar on Physique Archetype + Timeline
- De-emoji wave 3: Quests, Academy, Calculators, active-workout note → stroke icons
- SW pulsecap-v135
5.6.4 (2026-07-17)
- Exhaustive widget battery + visual QA (no unlabeled buttons / fatal chrome)
- Nav clearance always reserved; light/dark text contrast raised
- De-emoji wave 2 across Body/Learn/Me chrome; persona letter avatars
- iPhone soak: CI safe-area + contrast checks; manual checklist updated
- SW pulsecap-v135
5.6.3 (2026-07-17)
- Sample athletes: 5 demo personas (Beginner/Advanced/Rehab/Cutting/Longevity) via "Load sample athletes" in Profiles
- Functional QA: every screen + core actions tested across all 6 profiles — zero runtime errors
- SW pulsecap-v135
5.6.2 (2026-07-17)
- Fixed broken Muscle Recovery Heatmap → clean responsive tile grid
- De-emoji: Nutrition, Assistant, Onboarding, Settings, Physique, Rehab, Anatomy, Workout plan → stroke icons
- Water intake: emoji drops → clean dots; desktop content column capped & centred
- Screen gallery: dark + light × mobile + desktop, all tabs + welcome/onboarding + active (200 shots); Dark/Light toggle
- SW pulsecap-v135
5.6.1 (2026-07-17)
- Design-token migration: ~580 static inline styles → utility classes
- Helpers: uiCard, uiSection, moduleBackTopbar
- SW pulsecap-v135
5.6.0 (2026-07-17)
- Engines extracted to
js/engines.js; app shell slimmed - Lazy Learn screen loading with SW offline precache
- Coach/quests/recovery-debt chrome de-emojified to stroke icons
- Design tokens expanded; iPhone soak checklist added
5.5.2 (2026-07-17)
- Production audit: remove Capacitor path, dead validators, orphan roadmap modal
- Search/body-map list rows are real buttons; shared list-row design class
- wger fetch timeout (15s AbortController)
- Docs honesty: PWA-only distribution notes
5.5.1 (2026-07-17)
- XSS hardening: single quotes escaped; router errors escaped
- Search hardening: removed eval-based result dispatch
- wger CSP fixed for connect, images, and media
- Service worker cache allowlist replaces cache-everything behavior
- Coach/Smart Coach labels replace user-facing AI wording; Pro pricing copy removed until real monetization ships
5.5.0 (2026-07-17)
- Apple polish pass (PWA-only): honest form cues, barbell-only plates/warmup, installed-only rest notifications
- Dashboard shows max 2 prompts; weekly volume targets follow your goal
- Strength programs ask for starting weights once
- Chrome de-emoji, focus rings, reduced-motion, active-workout gallery shot
5.4.0 (2026-07-17)
- Weekly coach report: volume per muscle vs target, weak-point flags, next-week advice
- Plate calculator + warm-up ramp inside the active workout logger
- Rest-timer system notifications when the app is backgrounded
- Home-screen shortcuts: Today's workout / Start / Exercises
- Offline form loops for the top-50 compounds (SVG cues when wger isn't cached)
- Fixed skip-link overlay, gender icon clip, stale Settings version, Safari "Load failed" toast
- VaultCap-style screen gallery with section filters
5.3.0 (2026-07-17)
- Stronglifts, Starting Strength and 5/3/1 now run their real programs — exact sets prescribed, weights progress automatically, deloads handled
- Build your own split: pick your days, search 300+ exercises, save — it becomes your plan
- Dates now follow your timezone (streaks and schedules were off for evening lifters)
- Injury filtering now covers every exercise in the library
- More line icons, deeper body-map shading, smarter skip-day detection
5.2.0 (2026-07-16)
- Light + dark themes only — follows your phone by default, pin either in Settings
- Skip a day and the coach reshuffles your week — or tells you it costs nothing
- Weigh-ins get a real answer: on pace, eat more, or watch the weekend
- Weekly recap card, smarter streaks (rest days count, one freeze a week), morning check-in, private progress photos
- New splash and welcome screens; app copy rewritten to sound like a coach, not a manual
- Body tab redesigned — muscle recovery now respects your injuries, cleaner cards, one tools grid
- High-definition body map — real muscle shapes, front and back, injury-aware colors
- Swapping an exercise shows ranked alternatives with % match and a best pick
- Floating glass tab bar, fixed properly — content always scrolls clear of it
- New pulse-line app icon everywhere: home screen, splash, welcome
- Body map is now your body — it reshapes with your gender, height, weight, body fat and muscle
- Settings cleaned up: theme picker, coach personality and tone, macro presets
- Cleaner, more professional look — crisp line icons replace emoji across the main screens
- Every split checked end-to-end; all exercises now carry full coaching data
- Fixed unreadable text in light mode and raw labels like "upper_chest" showing in the app
5.1.0 (2026-07-16)
- Weekly schedule: split days auto-map to your gym days (Monday shows Monday's workout), editable per weekday in Settings → Training
- Scheduled rest days with active-recovery guidance and a "Train anyway" option
- Injury logging unified under Body → Rehab — severity, phase protocol, and workout adaptation in one place
- Injury-aware workouts: unsafe exercises auto-swapped via avoid-lists and joint-stress ratings, "Modified for X" badge
- Supplements due today surface on the dashboard
- Bottom-sheet fix: close button, keyboard-safe height, background scroll lock (measurements modal)
- New app icon propagated to iOS home-screen icons; SW
pulsecap-v135
5.0.1 (2026-07-16)
- Live "Sets Done" counter during workouts (was frozen until re-render)
- Weight logging fix: imperial lb→kg conversion and fasted flag restored (duplicate function clobbered them)
5.0.0 (2026-07-11)
- Major IA overhaul: fixed 5 tabs — Today · Train · Body · Learn · Me; module merges; unified search; 64-shot screen gallery
4.7.3 (2026-06-16)
- Portfolio CTO pass: PWA icons (192/512 maskable), service worker cache bump (
legacy fos-v20) — superseded bypulsecap-v135 - Truth sprint: docs aligned with shipped features
- Smart Coach naming, 9 themes in settings, deck precache
Phase 2 — Quality (2026-06-10)
- Playwright smoke tests (2/2 pass)
- Pitch deck expanded: market, competition, tech, roadmap, OS family
- Landing footer: privacy.html, changelog.html, GitHub links
- privacy.html / changelog.html generated from markdown