Releases: saksham2001/PulseLoopiOS
Release list
v2.4.0-beta.1
PulseLoop v2.4.0-beta.1
This release adds two more rings and a from-scratch TK5 rebuild, Apple Health sync, split sleep sessions with day-by-day browsing, a redesigned vitals measurement flow, and a batch of coach/UI correctness fixes.
Wearable Support Added
- LuckRing / TK18 support: new driver for the Shenzhen Coolwear/Kewo "K6" family (service
F618), reverse-engineered. Spot HR/SpO₂/HRV, battery, pairing, and history sync tested on hardware. - TK5 Support Expanded: the TK5 driver was rebuilt on the manufacturer's Yucheng YCBT SDK after a byte-by-byte comparison showed history sync was fundamentally broken. Now: a proper history state machine, GATT fragment reassembly, all 9 record types (HR, SpO₂, BP, HRV/stress/fatigue, steps, temperature, blood sugar), device-push ACKs, ring-declared capabilities, and periodic re-sync.
- Colmi/Yawell Ring with SmartHealth app: Earlier we only supported Colmi rings working with the QRing app. Colmi rings that ship with the SmartHealth app join now, with a pairing-screen app picker and a one-tap "try the other app" retry. (#82)
✨ New Features
- Apple Health sync: HealthKit integration with a master toggle (default off), per-type toggles (HR, SpO₂, HRV, temperature, sleep, steps/activity), a dedicated workout-export toggle with GPS routes, and an ask-on-first-enable choice between full-history backfill and new-data-only. Idempotent writes (no duplicates on re-export), a read-only profile import (age/sex/height/weight), an "advanced calories" toggle, and a "Remove PulseLoop data from Apple Health" action. Builds on @hoveeman's #16. (#80)
- Split sleep sessions + Day carousel: days with more than one sleep (a nap plus the main night) are now split into distinct sessions instead of one broken ~16 h block. Page between a day's sessions on the Sleep → Day view; Week/Month/Year still count each day once so naps don't skew the nightly average. (#83, fixes #59)
- Sleep day navigation: browse previous days on the Sleep → Day view with a
‹ ›date stepper and a tappable date picker; the 4 AM "last night" flip is preserved at every offset, with a directional transition, selection haptics, and VoiceOver announcements (#84) - Redesigned Measure HR/SpO₂: a determinate 30s (HR) / 40s (SpO₂) countdown that animates off wall-clock time (works under Reduce Motion), live bpm ticks, and a hardened measurement that discards the ring's stale cached-bpm echo and rered samples instead of a snap reading. A disconnected ring now errors instead of fabricating a mock value. (#66)
- Reworked onboarding: every step scroll on every iPhone (SE/mini → ProMax), fixed feature-tile copy, clearer button hierarchy, and a celebratory "You're all set" finale with a success medallion and a glass Today. (#75)
- Contributor recognition: an auto-generated contributor grid in the README and docs, refreshed weekly. (#81)
🐛 Bug Fixes
- Colmi step undercount: activity buckets dropped their within-hour quarter, collapsing all four
quarter-hour buckets ontoHH:00so odercounting steps/distance by up to~75% on a normally-worn ring. (#87) - Stale screens after edits: three coach edit to today's workout now updates Today/Activity and the daily rollup (not just the workout card), goal edits re-fill Today's rings immediately, and Metric Detail rsync while open. (#88)
- Settings changes apply immediately: toggling a tile's visibility or chart detail in Settings now updates Today/Vitals right away, insteated sync to force a rebuild. (#70)
- Coach forgot recent messages: conversations past ~40 messages replayed the oldest 40 (frozen at messages 31–40) instead of the newest,t all recent turns; now replays the newest. (#69)
- Coach weekly step average: was (zero-filled missing days),understating the average early in the week or on sparse sync; now divides by days with data. (#68)
- **Year trends current-month average*was divided by its full calendarlength, understating the current-month steps/day bar by up to ~3×; now divides by elapsed days. (#79)
- **Liquid Glass correctness (iOS 26)*g inside glass, flat nested glass-on-glass, and workout cards bleeding into each other; the activity/log-past pickers get one consistent selection grammar (shape + color alone), full VoiceOver/DynamicType support, and a cached Today-summary path that stops the glass tiles white-flashing. (#89)
🧹 Under the hood
RingBLEClientnow picks the BLE wrristic's properties(write-without-response chars were silently dropped). (#90)- Dev-only demo seed data now includesfor exercising the Day carousel. (#85)
- New unit-test coverage across the ring drivers, sleep segmentation, Apple Health mappings, and the Colmi decoder; full suite green.
Closed issues: #59
Install
Sideload: download the IPA from the Assets below (see the sideloading docs).
Build from source: see the README.
Note for release: HealthKit integratiine 5.1.3 requires a privacy policy.
Thanks to @rgvxsthi, @hoveeman, and everyone testing on TestFlight!
v2.3.0-beta.1
PulseLoop v2.3.0-beta.1
This release adds two new rings, an iOS 26 Liquid Glass redesign, a major AI-coach upgrade, major fixed for 56ff/Jring and a batch of reliability fixes.
✨ New Features
- TK5 ring support — new SmartHealth-protocol driver with heart rate, SpO₂, HRV, blood pressure, sleep (deep/light/REM), steps, and battery, all verified against the vendor app. On-demand HR/SpO₂/HRV via the Vitals "Measure" buttons. (#56)
- Colmi R08 — added to the ring catalog with proper identity and product art in the pairing carousel. (#71)
- Liquid Glass UI for iOS 26+ — glass card surfaces, a native Liquid Glass tab bar, Settings moved into the tab bar, and Coach as a floating glass chat bubble. Graceful Material/solid fallback on iOS 18–25 (and a solid surface when Reduce Transparency is on). (#62)
- Reorder & hide cards — long-press any Today tile or Vitals card to drag-reorder (home-screen style) or hide/restore cards; order and visibility persist per screen. Reduce Motion and VoiceOver supported. (#64)
- AI coach overhaul — per-message tool-call traces, token & cost tracking with a usage sheet, opt-in location + weather context (WeatherKit), workout cards logged from chat, and more varied notifications/check-ins. (#65)
- Apple on-device coach by default — the AI Coach now defaults to Apple's on-device foundation model, so it works out of the box with no API key; existing users' settings are preserved. (#76)
- On-demand blood pressure for the 56ff ring — plus a calibration reading.
🐛 Bug Fixes
- 56ff / JRing protocol parity — fixed timezone/timestamp drift, time-sync, background monitoring startup, measurement-frequency control, and history deduplication by diffing against the decompiled vendor app. (fixes #8, #14) (#77)
- Coach reliability — sleep summaries no longer generate from partial nights, workout logging before noon no longer fails, on-device history no longer truncates mid-sentence, and failed weather fetches now back off with a cooldown. (#65)
- Glass polish — Activity/ring tile numbers no longer clip (e.g.
8,401), removed the box behind the record buttons, and tightened chat composer spacing. (#62) - Measure Vitals — single sweep, larger result cards, and future-dated history entries dropped.
🧹 Under the hood
- Measurement Frequency moved into the General settings group (under Physiology). (#74)
- SwiftLint / CI fixes.
v2.2.0-beta.1
PulseLoop v2.2.0-beta.1
This release is mostly a big overhaul of activity recording, plus a new AI-coach provider and a batch of UI/reliability fixes.
✨ New Features
- Manual activity logging — you can now log a workout by hand in the UI, no live recording required. (#57)
- MiniMax AI coach — added MiniMax as a coach provider alongside OpenAI, Gemini, and OpenRouter, with its own model catalog (default MiniMax-M3), Keychain-stored key, and image input on M3. (#54)
- Pause during recording — pause and resume an activity while it's in progress. (#57)
- Post-recording editing — edit a completed activity, including changing its recorded time. (#57)
- Low-battery alerts — get notified at <20% and <10% ring battery (on by default). (#61)
- Battery drainage graph — visualize your ring's battery drain over time. (#61)
- Workout history grouped by date — past workouts are now organized under date headers. (#61)
🐛 Bug Fixes
- Activity recording rehaul — fixed GPS data recording, fixed HR recording across connection dropouts and background syncs, and fixed Live Activity issues (HR/SpO₂ not showing, and the Live Activity never ending). (#57)
- No more duplicate coach card on Today — the coach summary was rendering twice when it fell back to hero text; the coach now owns the single top card. (#42)
- Coach card placement — the AI coach card moved to the bottom of the Sleep page, under the sleep data. (#61, #42)
- Ring card values no longer truncate to "10,…", and garbage values can no longer render. (#61)
- Coach notifications now wait for sync before firing. (#61)
- Consistent ring labels — the jring model now shows HR instead of Heart rate, matching every other ring. (#63)
Performance — fixed UI lag on the new activity pages and reduced dropout bugs. (#57, #61)
##🧹 Under the hood
- CI fixes for missing idiom and test errors.
v2.1.0-beta.1
A quick follow-up to v2 with new Home Screen widgets, a reworked onboarding and settings experience, automated IPA builds for easy sideloading, and a batch of fixes from the beta.
New Features
Home Screen widgets: glanceable metrics right on your Home Screen. (@saksham2001)
Redesigned settings screen: new ring cards and a cleaner, reorganized layout for all settings. (@rgvxsthi)
Reworked onboarding: a new intro walkthrough of the app's features, a ring selection page with photos, and setup for your personal info, activity goals, and baseline. (@rgvxsthi, @saksham2001)
Automated IPA releases: every release now auto-builds a sideloadable IPA, with docs to match. (@rgvxsthi)
Bug Fixes
Fixed Colmi rings being identified as the wrong model.
Fixed weight entry in locales that use a comma as the decimal separator.
Fixed a broken GitHub link that returned a 404.
The Imperial/Metric unit setting is now applied consistently across the app.
Fixed an invalid OpenRouter model slug that could break the coach.
Install
Sideload: download the IPA from the Assets below (see the sideloading docs).
Build from source: see the README.
Test Flight: release within 24/48 on approval
Thanks to @rgvxsthi and everyone in the beta for the reports and fixes.
v2.0.0-beta.2
PulseLoop 2.0.0 First Public Beta 🎉
PulseLoop turns a cheap Bluetooth smart ring into a private, conversational health tracker — no vendor cloud, no account, no subscription. This is our first public release, and it's a big one.
📲 Join the TestFlight beta: Sign up here to request an invite, or ask in our Discord.
🤖 A smarter AI Coach
The Coach grew from a single-provider assistant into a flexible, grounded health companion:
- Bring your own provider: choose between OpenAI, Google Gemini (#9), OpenRouter (#22), or Apple's on-device Foundation Models (#30), which runs entirely on your phone with no key required.
- Send it a photo: the Coach now takes image input, so you can show it a meal, a nutrition label, or anything else and ask about it (#31).
- Richer daily check-ins: improved notifications generated from your recent trends (#30).
💍 More rings, more reliable data
- Colmi R02 support landed behind a device-agnostic driver layer, so adding future wearables is straightforward (#6).
- Ported the 56ff low-level protocol from the Android project for better decoding on the generic Chinese ring (#32).
- Fixed a heart-rate setup bug that was preventing automated HR readings from ever starting (#17).
📊 Redesigned experience
- A major UI re-haul across the app for a cleaner, more polished feel (#35).
- Redesigned Settings tab, including measurement-frequency controls (#19).
- New Dance activity category for workout tracking (#11).
🛌 Sleep & stability fixes
- Fixed sleep sessions splitting across the midnight boundary and cleaned up duplicate session data: sleep tracking is now accurate through the night (#15).
- Fixed a background crash in the Coach's background-task handler (#24).
- Performance re-architecture for smoother data updates throughout the app (#20).
📚 Project & docs
- New MkDocs Material documentation site at saksham2001.github.io/PulseLoopiOS (#28).
- iOS vs Android comparison and README/getting-started refreshes (#23, #37).
- Open-source setup: automated tests, contribution guides, and code of conduct (#7).