UltimateHealth 3.0.0- Mobile Release
·
283 commits
to feature/ai-persona-chat
since this release
What's Changed
UltimateHealth Release Notes (Since 2.2.0)
We are excited to share the latest updates, features, and fixes since our 2.2.0 release. This release is massive and brings major new capabilities like the AI Persona Chat, Wellness Tracking, new offline media experiences, and huge UI/UX improvements.
Thank you to everyone who contributed!
🚀 New Features & Enhancements
AI & Chatbots
- AI Persona Chat: Brand new interactive AI Persona Chat feature.
- AI Chatbot Accessibility: Added TTS (Text-to-Speech) accessibility for AI responses.
- Chatbot Verification: Added chatbot response verification with UI indicators.
- AI Research Summaries: Added
ResearchSummaryCardpowered by Gemini to generate concise research summaries.
Health & Wellness
- Wellness Tracking Dashboard: Added a new dashboard to monitor wellness and tracking metrics.
Article & Feed Experience
- Double Tap to Like: Quickly engage with content by double-tapping article cards.
- Trust Article: Added Trust Article feature to verify credibility.
- Reading History: Introduced a "Recently Read" history tab so you can easily pick up where you left off.
- Reading Insights: Added estimated reading time and reading difficulty indicators on health articles.
- Sharing: Added a rich article share preview card and modal.
Media & Podcasts
- Offline Playback Engine: Introduced
mmkv-cache-podcast-storagefor offline podcast caching. - Playback Progress: Track podcast playback position seamlessly.
- Audio Visuals: Added a custom reanimated audio waveform visualizer for podcasts.
- Offline States: Added offline playback indicators when audio fails to load, along with empty states for offline podcasts.
UI / UX & Accessibility
- Network Connectivity: Implemented a network connectivity banner.
- Settings & Preferences: Added language preference filtering, and notification preferences search.
- Interactive UI: Added scroll-to-bottom buttons, improved article text scaling controls, and a Glossary Bottom Sheet component.
- Empty States: Improved "no articles" and "notifications" empty states with theme-aware components.
Repository & CI Automation (For Contributors)
- AI GitHub Bots: Added comprehensive AI Triage and Assignment Bots to manage untriaged issues.
- AI Code Review: Scheduled AI reviewer bots for automated PR feedback with workflow_dispatch manual runs.
- GSSOC 2026: Added GSSOC 2026 program card and enforced GSSoC PR validations.
🐛 Bug Fixes & Stability
- UI & Rendering: Stabilized list rendering using stable keys; replaced hardcoded colors with Tamagui theme tokens.
- Media: Resolved TTS pause/resume chunk rewinding issues and cleaned up player state listeners.
- Security: Mitigated high-severity XSS and webview navigation vulnerabilities; stripped sensitive console logs in production.
- Performance: Debounced auth buttons to prevent double submissions; added fallback configurations for secure storage.
📝 Documentation
- Added a comprehensive
ARCHITECTURE.mdwith system flow diagrams. - Added
SECURITY.mddetailing the vulnerability reporting policy.
💖 Contributors
A massive thank you to the 100+ contributors who made these changes possible since 2.2.0. Below is the list of contributors and their commit counts:
| Contributor | Commits | Contributor | Commits |
|---|---|---|---|
| S. B. | Software Developer | 256 | github-actions[bot] | 69 |
| Deepesh Kafaltiya | 8 | Krishna Veernala | 8 |
| Sumit Kumar | 8 | Krishna Kumar | 7 |
| N.Sri Venkatesh | 7 | Namraa Patel | 7 |
| prakash meena | 7 | Vaishali Varma | 6 |
| anushkasrvstv | 6 | Gurkaran18 | 5 |
| PeswikaBavagni-30 | 5 | SarthakKharche | 5 |
| dependabot[bot] | 5 | vaishnavi003-svg | 5 |
| Akshat Singhai | 4 | Keerthana | 4 |
| Krishna Jha | 4 | Tomeshwari Sahu | 4 |
| Deepak | 3 | Hasini2706 | 3 |
| John Stewartsson J R | 3 | Karan Singh | 3 |
| Kinara2020 | 3 | Mayur Sahare | 3 |
| Priyanshu1-62 | 3 | Sha-lini3 | 3 |
| Shrestha-ijarwal | 3 | Srejoye | 3 |
| VirenSumbly | 3 | pratyakshasingh281-coder | 3 |
| shravi25 | 3 | vedant7007 | 3 |
| vinayak lal | 3 | Amrit | 2 |
| Anirudh Sahu | 2 | Bhavya sree | 2 |
| Dhruval Bhinsara | 2 | Divanshu Aggarwal | 2 |
| KRITIKA-l | 2 | MAYUR AJIT SAHARE | 2 |
| MajBlaze | 2 | Prakash Meena | 2 |
| Puneeth_Darisi | 2 | Saurabh Kumar Bajpai | 2 |
| SwaraMishra07 | 2 | Test User | 2 |
| codecrafted1 | 2 | dinesh9997 | 2 |
| kandhwayanushka-hue | 2 | minhaj_parveenh | 2 |
| prernaajaypatil-oss | 2 | riya-dumbare | 2 |
| ARPAN ADHIKARY | 1 | Aashita101 | 1 |
| Abdulhaque | 1 | Aditya Bhandari | 1 |
| Anjali Kumari | 1 | Arpita Raj | 1 |
| Ashley-Shine | 1 | Bheeme_497 | 1 |
| Bhuvanesh S | 1 | Dhandapanikeerthana | 1 |
| Disha Malukani | 1 | Farisha N A | 1 |
| GUJJU DINESH | 1 | HASINI | 1 |
| Harshita Vaishnav | 1 | Ishita Zope | 1 |
| Jana | 1 | Jeet-Paghdar | 1 |
| Joshua Jacob Thomas | 1 | Jyoti | 1 |
| KINARA PATEL | 1 | Kruthi Annanki | 1 |
| Mannat Jain | 1 | Minhaj Parveen.H | 1 |
| Nikkiraj4 | 1 | PALAK JAISWAL | 1 |
| Parth Nakum | 1 | Patel Namraa | 1 |
| Piyush Semalti | 1 | Prerna Singh | 1 |
| Prerna singh | 1 | Priyanshu Singh | 1 |
| Ranjit1401 | 1 | Rehan Ahmad | 1 |
| S V RAMA SANTOSH | 1 | Sahil | 1 |
| Saylee | 1 | Shalini Yadav | 1 |
| SonalMittal-14 | 1 | Vanshika Maheshwari | 1 |
| Vikash Rajput | 1 | Yogender-verma | 1 |
| Yug-Gupta | 1 | akshayad2006-cdm | 1 |
| anjali62510-star | 1 | deepsikha-dash | 1 |
| ishita526 | 1 | karthikeyakakarlapudi2007 | 1 |
| keert | 1 | manishcoder92 | 1 |
| paruuup | 1 | pratik ankush bandgar | 1 |
| smridhi-07 | 1 | tenax | 1 |
| vipul674 | 1 | wombfrk.exe | 1 |
- feat: Release 2.2.0 ultimatehealth by @SB2318 in #1044
- fix: normalize doctor contact links by @DhruvalBhinsara1 in #905
- feat: integrate Knip for dead code detection by @amritbej in #938
- chore: cache node_modules across jobs to cut redundant yarn install by @Pcmhacker-piro in #1026
- refactor: remove unused user_id from useGetAuthorMostViewedArticles by @Sha-lini3 in #1048
- fix: correct enabled condition in useGetAuthorMostViewedArticles by @Ranjit1401 in #1034
- feat: add language preference and feed filtering by @KRITIKA-l in #986
- feat: add reusable accessible Input component by @VirenSumbly in #1032
- fix: clear search bar and results on screen focus (#787) by @ishita526 in #951
- fix: cleanup player state and listener on audio completion by @jpdevhub in #943
- Test/podcastdetail coverage by @Namraa310806 in #1007
- fix: add production console stripping and fix upload response handling (#1043, #1040) by @vedant7007 in #1054
- fix: restore render suggestion config by @akshayad2006-cmd in #1058
- feat: add reusable glossary bottom sheet by @mittalsonal in #1096
- feat: improve notifications empty state by @Hasini2706 in #1097
- fix: use stable keys for list rendering (closes #990) by @Aashita101 in #1107
- fix: Remove saved icon from article chip by @SarthakKharche in #1103
- fix: Firebase Credentials Security Hardening & Environment Configuration by @SB2318 in #1152
- fix: resolve latent production bugs in interceptor lifecycle, monitoring init, notification logging, and navigation back-stack by @SB2318 in #1154
- fix: Improve article like avatar layout and add image fallbacks by @WHENKEY2007 in #1111
- feat: add AI-powered Research Summary Cards for Article Detail Screen by @vaishalivarma200-eng in #1080
- chore: correct typo in ADD_TO_PLAYLIST API endpoint URL by @Pcmhacker-piro in #1110
- feat: Add swipe to delete notifications by @SarthakKharche in #1113
- feat: add article title and description counters by @saurabhhhcodes in #1114
- feat: add lottie animation to guest placeholder screen by @PeswikaBavagni-30 in #1115
- fix: title and description alignment for long content on PodcastDetail screen by @Hasini2706 in #1122
- chore: improve GSSoC 2026 program card details by @PeswikaBavagni-30 in #1123
- fix: remove unnecessary storage permission denied alerts on Android (#1084) by @anjalikumari45 in #1126
- feat: add real-time character counter and max length validation to CommentScreen by @DeepeshKafalatiya in #1127
- fix: resolve stale state in pull-to-refresh and tie spinner to actual data load (#1042) by @vedant7007 in #1144
- fix(useSendOtp): remove client-side OTP value from mutation return type by @Srejoye in #1306
- Refactor auth and profile forms to use react-hook-form and zod for va… by @Nareshkumawat-star in #1321
- fix: ressolve syntax error in CommentScreen... by @VikashRaj110 in #1297
- feat: implement sticky reading progress bar in Article Detail screen (#746) by @MajBlaze in #1324
- chore(deps): bump react-native-svg from 15.12.1 to 15.15.5 in /frontend by @dependabot[bot] in #1272
- chore(deps): bump expo/expo-github-action from 8 to 9 by @dependabot[bot] in #1262
- chore(deps): bump react-native-safe-area-context from 5.6.2 to 5.8.0 in /frontend by @dependabot[bot] in #1265
- chore(deps): bump @lottiefiles/dotlottie-react from 0.13.5 to 0.19.4 in /frontend by @dependabot[bot] in #1267
- fix: align password visibility toggle icon on signup page by @Yug-Gupta in #1241
- fix: auto refresh notifications on app foreground by @anjali62510-star in #1298
- feat: add estimated read time on article cards and detail screen by @pratyakshasingh281-coder in #1159
- docs(architecture): add ARCHITECTURE.md with system flow diagram by @paruuup in #1207
- feat: add search bar and empty state to notification preferences by @WHENKEY2007 in #1209
- fix: improve accessibility support across custom components by @saidai-bhuvanesh in #1214
- feat:improve dark mode theme support by @akshatsinghai6682-sketch in #1255
- feat: replace playback speed buttons with floating speed selector by @Hasini2706 in #1238
- fix: improve podcast title and description text wrapping by @Sha-lini3 in #1251
- feat : add debounce and loading state to authentication from buttons by @Kinara2020 in #1168
- feat: add article share preview card and modal by @SwaraMishra07 in #1352
- fix(ArticleScreen): gate read-event mutation with useRef to eliminate scroll race condition by @Srejoye in #1305
- Bugfix: Optimize category modal performance by @Priyanshu1-62 in #1301
- docs: improve README with table of contents (TOC) by @Yogender-verma in #1286
- fix: search across all loaded articles by @jyoti-5906 in #1361
- fix: debounce PodcastSearch query and reset page on new search by @Jay-Jay-Tee in #1451
- fix: use resized image URI from ImageResizer instead of discarding it (#1039) by @vedant7007 in #1450
- fix: handle undefined profile_image in LogoutScreen to prevent TypeError #1316 by @riya-dumbare in #1347
- fix: add HTTP 503 service unavailable handling in AI chat by @minhajparveenh2008 in #1430
- feat: add custom reanimated waveform visualizer to PodcastDetail by @anushkasrvstv in #1230
- fix: remove raw local file path exposed in PodcastPlayer UI by @manishworkss in #1310
- [TECH DEBT] Standardize Debug Logging Across Frontend Codebase by @codecrafted1 in #1403
- style: reposition clear all filters button to home screen header next to search input #1081 by @DeepeshKafalatiya in #1429
- docs: add project roadmap section to README by @prernaajaypatil-oss in #1455
- Update .env.example by @Dhandapanikeerthana in #1386
- Update README.md by @Ashley-Shine in #1343
- feat: add empty state for offline podcasts by @PeswikaBavagni-30 in #1420
- fix(frontend): add explicit id and name attributes to text inputs for… by @Nikkiraj4 in #1425
- docs: add backend and frontend repository links in README services section by @bhavyasree-22 in #1431
- docs: add backend API setup and environment configuration guide by @vaishnavi003-svg in #1433
- feat: push notification service by @bethesky01 in #987
- fix: make podcast player resilient to network interruptions and auto-resume playback by @Dhandapanikeerthana in #1204
- Feature/podcast playback progress by @Nareshkumawat-star in #1322
- Add offline playback indicator when podcast audio fails to load by @Shrestha-ijarwal in #1411
- feat: add loading and error states to AI Health Chat responses by @bhavyasree-22 in #1551
- fix: resolve fatal app crash when triggering 'create-post' deep link by @Gurkaran18 in #1458
- Fix: clear search state on screen blur by @silentguyracer in #1529
- feat(ui): add scroll to bottom button by @Wombatfreak6 in #1435
- feat: improve article text scaling controls by @deepsikha-dash in #1460
- Fix: Resolve undefined handleQuickReset crash in HomeScreen by @divanshuaggarwal30 in #1521
- docs: fixed file name casing by @smridhi-07 in #1467
- fix: implement OverviewItem component by @Janarthanang-10 in #1477
- docs : updated contributing.md by @shravi25 in #1483
- fiX: correct useSendOtp generic type signature by @mannatjain11465-netizen in #1568
- fix: compensating DELETE on step-2 failure to prevent orphaned PocketBase records by @Srejoye in #1534
- fix(navigation): implement asynchronous auth guard buffer ref to neut… by @Stewartsson in #1471
- feat: implement ImageFallback component by @Deepak-Akuthota in #1484
- feat: add Recently Read history tab by @Kr1491 in #1489
- fix: password verify stage by @Kr1491 in #1490
- feat(mobile): implement double tap to like on article cards by @sahare-mayur-0071 in #1495
- fix: add missing Alert import to SignUpScreenFirst by @kandhwayanushka-hue in #1515
- fix(podcast): resolve recording timer desync when app is backgrounded issue (#1088) by @dinesh9997 in #1530
- chore(deps): bump actions/setup-python from 5 to 6 by @dependabot[bot] in #1572
- fix: remove duplicate imports from NotificationScreen by @dishamalukani-creator in #1573
- Add article read time and reading progress tracking by @Kruthi-choudary in #1543
- fix: skip mark-as-read mutation when notification list is empty (fixe… by @anushkasrvstv in #1634
- feat: add reading difficulty indicators for health articles by @Hasini2706 in #1532
- fix: pass article param in ArticleCommentLike notification navigation by @saurabhhhcodes in #1583
- fix: prevent duplicate comment submissions on slow networks by @anjali62510-star in #1592
- fix(auth): resolve token validation crashes, offline session wipes, and add comprehensive unit tests by @aspartic-gthb in #1613
- fix: remove duplicate react-native import in LoginScreen by @Saylee12R in #1648
- fix: remove unnecessary console.log statements in ArticleCard to improve performance (fixes #1611) by @abdulhaque2005 in #1612
- fix: remove duplicate imports in NotificationScreen.tsx by @priyanshu5ingh in #1629
- fixed readme by @Neverask1121 in #1632
- feat: add reading history feature (Fixes #1523) by @FarishaNA in #1636
- fix: remove dead code and duplicate styles in ArticleCard, add title … by @Ranjana-git7 in #1767
- Feat/article copy link by @Bheemeswari497 in #1763
- feat: improve no articles empty state by @arpan-adhikary26 in #1673
- fix: correct midnight display from 00:00 AM to 12:00 AM by @Pcmhacker-piro in #1674
- fix: correct Sentry initMonitoring brace-structure bug by @Pcmhacker-piro in #1675
- fix: resolve syntax errors in FirebaseContext.tsx (#1566) by @dinesh9997 in #1718
- fix: make contribution card layout responsive on mobile by @semanirudh94-lang in #1724
- chore: Add .nvmrc to standardise Node.js version by @parthnakum in #1728
- feat: add chatbot response verification with UI indicators by @minhajparveenh2008 in #1729
- Fix Component Naming Inconsistency in NoResult.tsx by @Arpita2919 in #1777
- fix: re-throw errors in upload hooks to prevent silent data loss by @Gurkaran18 in #1799
- refactor: implement shared zod schema validation for profile forms by @sahare-mayur-0071 in #1847
- fix : add missing url prod_url prefix to article_tags url by @pratik-dev01 in #1494
- fix: add apiClient with status validation to prevent caching of error…gssoc by @vaishnavi003-svg in #1496
- feat: implement Trust Article feature by @vanshikaMaheshwari in #1713
- fix: improve form validation feedback across all screens (#1841) by @karthikeyakakarlapudi2007 in #1850
- fix: merge notification pages safely by @Tomeshwari-02 in #1925
- fix: scope article TTS subscriptions by @Tomeshwari-02 in #1927
- fix: complete logout when offline by @Tomeshwari-02 in #1931
- fix(ux): fix category/tag deselection bug, social follow notification race condition, and home feed layout issues by @aspartic-gthb in #1614
- feat: add Wellness Tracking Dashboard by @harshitavaishnav7878 in #1801
- feat(chatbot): add TTS accessibility feature for AI responses by @santoshsingampalli11-hub in #1836
- feat: implement network connectivity banner by @sahare-mayur-0071 in #1845
- fix: validate stored reading progress by @Tomeshwari-02 in #1929
- Task Merge : 3.0.0 by @SB2318 in #1965
New Contributors
- @DhruvalBhinsara1 made their first contribution in #905
- @amritbej made their first contribution in #938
- @Sha-lini3 made their first contribution in #1048
- @Ranjit1401 made their first contribution in #1034
- @KRITIKA-l made their first contribution in #986
- @vedant7007 made their first contribution in #1054
- @mittalsonal made their first contribution in #1096
- @Hasini2706 made their first contribution in #1097
- @Aashita101 made their first contribution in #1107
- @WHENKEY2007 made their first contribution in #1111
- @vaishalivarma200-eng made their first contribution in #1080
- @PeswikaBavagni-30 made their first contribution in #1115
- @anjalikumari45 made their first contribution in #1126
- @DeepeshKafalatiya made their first contribution in #1127
- @Srejoye made their first contribution in #1306
- @Nareshkumawat-star made their first contribution in #1321
- @VikashRaj110 made their first contribution in #1297
- @MajBlaze made their first contribution in #1324
- @anjali62510-star made their first contribution in #1298
- @pratyakshasingh281-coder made their first contribution in #1159
- @paruuup made their first contribution in #1207
- @saidai-bhuvanesh made their first contribution in #1214
- @Kinara2020 made their first contribution in #1168
- @SwaraMishra07 made their first contribution in #1352
- @Priyanshu1-62 made their first contribution in #1301
- @Yogender-verma made their first contribution in #1286
- @jyoti-5906 made their first contribution in #1361
- @Jay-Jay-Tee made their first contribution in #1451
- @riya-dumbare made their first contribution in #1347
- @minhajparveenh2008 made their first contribution in #1430
- @anushkasrvstv made their first contribution in #1230
- @manishworkss made their first contribution in #1310
- @codecrafted1 made their first contribution in #1403
- @prernaajaypatil-oss made their first contribution in #1455
- @Dhandapanikeerthana made their first contribution in #1386
- @Ashley-Shine made their first contribution in #1343
- @bhavyasree-22 made their first contribution in #1431
- @vaishnavi003-svg made their first contribution in #1433
- @bethesky01 made their first contribution in #987
- @Shrestha-ijarwal made their first contribution in #1411
- @Gurkaran18 made their first contribution in #1458
- @silentguyracer made their first contribution in #1529
- @Wombatfreak6 made their first contribution in #1435
- @deepsikha-dash made their first contribution in #1460
- @divanshuaggarwal30 made their first contribution in #1521
- @smridhi-07 made their first contribution in #1467
- @Janarthanang-10 made their first contribution in #1477
- @shravi25 made their first contribution in #1483
- @mannatjain11465-netizen made their first contribution in #1568
- @Stewartsson made their first contribution in #1471
- @Deepak-Akuthota made their first contribution in #1484
- @Kr1491 made their first contribution in #1489
- @sahare-mayur-0071 made their first contribution in #1495
- @kandhwayanushka-hue made their first contribution in #1515
- @dinesh9997 made their first contribution in #1530
- @dishamalukani-creator made their first contribution in #1573
- @Kruthi-choudary made their first contribution in #1543
- @aspartic-gthb made their first contribution in #1613
- @Saylee12R made their first contribution in #1648
- @abdulhaque2005 made their first contribution in #1612
- @priyanshu5ingh made their first contribution in #1629
- @Neverask1121 made their first contribution in #1632
- @FarishaNA made their first contribution in #1636
- @Ranjana-git7 made their first contribution in #1767
- @Bheemeswari497 made their first contribution in #1763
- @arpan-adhikary26 made their first contribution in #1673
- @semanirudh94-lang made their first contribution in #1724
- @Arpita2919 made their first contribution in #1777
- @pratik-dev01 made their first contribution in #1494
- @karthikeyakakarlapudi2007 made their first contribution in #1850
- @Tomeshwari-02 made their first contribution in #1925
- @harshitavaishnav7878 made their first contribution in #1801
- @santoshsingampalli11-hub made their first contribution in #1836
Full Changelog: mobile-release-2.2.0...UltimateHealth-3.0.0