Skip to content

UltimateHealth Web — Release Notes v2.1.0

Choose a tag to compare

@SB2318 SB2318 released this 05 Jun 15:38
· 286 commits to web since this release

Version: 2.1.0
Branch: web
Base tag: web-release-2.0.0
Release date: 5th June, 2026
Commits: 52 upstream + local regression fixes
Build: Next.js 16.2.6 — all 11 pages compiled and type-checked successfully


Contributors

GitHub Handle Name Contributions
@SB2318 S. B. (Maintainer) CI workflow, lockfile cleanup, repo maintenance
@saurabhhhcodes Saurabh Kumar Bajpai Medical Glossary page, glossary screenshots
@InukaWijerathna Inuka Wijerathna GlossaryTooltip component
@dedeepya-sri Sri Dedeepya Singampalli Contribute page UI fix, navigation routing fix
@Vaishnavi10706 Vaishnavi10706 Hamburger menu aria-label accessibility fix
@Krishnx21 Krishna Kumar Launching Soon modal fix, misc fixes
@RangeR107 RangeR107 Skeleton and Spinner loader components, rebase conflict fixes
@Xenon010101 Xenon010101 Performance: transition-colors in Badge (#996)
@yashikasharmays1511-prog Yashika Sharma Hero section fix, accessibility review, cleanup
@Shikhar-404exe Shikhar Prajapati Refactor: remove duplicate typography in globals.css
@sanju-rajak Sanju Rajak Security headers, CSP middleware, proxy implementation
@Rishi04singh Rishi Singh Responsive layout system (PageWrapper, Section)
@CIPHERS-hackathon CIPHERS Hackathon Team Replace emojis with Font Awesome icons (#732), web sync

New Features

Medical Glossary Page (/medical-glossary)

  • Full Medical Glossary Explorer with 100+ medical terms
  • A-Z alphabetical filter bar with per-letter availability detection
  • Full-text search across term, definition, category, and related terms
  • aria-live="polite" live result count announcements
  • GlossaryTooltip component for inline medical term definitions on any page
  • Navigation link added to desktop nav and mobile nav
  • SEO: Metadata title and description on the page

Hero and Download Section Redesign (HeroAndDownload)

  • Premium animated hero section replacing the legacy static layout
  • Live dashboard phone mockup with weekly stats chart
  • Floating badges: Podcasts, Wellness, Community, Health
  • Stats row: 50K+ Active Users, 100+ Articles, Global Community
  • Redesigned download cards with MiniPhone mockup, platform feature list, animated pulse badges
  • AndroidStoreButtons and IosStoreButtons sub-components
  • TestFlight CTA wired to onJoinTestFlight prop

Responsive Layout System

  • PageWrapper — standardises container width and horizontal padding
  • Section — standardises vertical spacing (py-12 md:py-16 lg:py-24)
  • All major page sections migrated to Section + PageWrapper pattern
  • Feature grids converted to Tailwind responsive grid utilities

Contribute Page (/contribute) — Full Redesign

  • Animated hero with glassmorphism card and floating badges (GSSoC 2026, Beginner Friendly)
  • Why Contribute, Ways to Contribute (5 cards), 9-step contribution workflow
  • Copyable bash code block with Clipboard API and fallback
  • FAQ accordion with Framer Motion AnimatePresence expand/collapse
  • Community links: GitHub Issues, Contribution Guide, Email Support
  • Full Framer Motion scroll-reveal animations

Contributors Page (/contributors)

  • SSR page fetching live GitHub contributors via GitHub API
  • ISR with 24-hour revalidate to avoid rate limiting
  • Role badges: Maintainer (100+), Core Contributor (50+), Contributor (10+), Community Member
  • Live stats: total contributors, total commits, program count
  • Bots filtered out (github-actions[bot], dependabot[bot])

Skeleton and Spinner Loader Components

  • Skeleton: full (thumbnail + content) and compact (content-only) card variants
  • Skeleton also supports shadcn/ui simple-element mode (accepts style, data-*, all HTML div props)
  • Spinner: sm/md/lg sizes, optional fullPage overlay, configurable zIndex
  • Features section shows skeleton loaders on initial render

basePath Utility (/lib/basePath.ts)

  • withBasePath(path) helper for subdirectory-aware internal links
  • Applied across page.tsx, medical-glossary/page.tsx, contribute/page.tsx

Security Middleware (proxy.ts)

  • CSP nonce-based strict-dynamic for production
  • Dev mode: relaxed CSP for HMR compatibility
  • Headers: X-Frame-Options: DENY, X-Content-Type-Options: nosniff, Referrer-Policy, Permissions-Policy, 2-year HSTS, Cross-Origin-Opener-Policy, Cross-Origin-Resource-Policy

CI — Update Contributors Workflow

  • GitHub Actions workflow to auto-update contributor list on web PR merge

Contact and Newsletter Forms

  • Contact form POSTs to NEXT_PUBLIC_API_BASE_URL/api/contact/send with mailto fallback
  • Newsletter form POSTs to NEXT_PUBLIC_API_BASE_URL/api/newsletter/subscribe
  • Loading/success/error states, field reset on success

Active Section Tracking

  • IntersectionObserver highlights active nav link per scroll position
  • aria-current="location" on active section link

Bug Fixes

Commit Author Fix
675ffce @Krishnx21 Fixed unreachable Launching Soon modal — Admin Closed Testing button was not wired
65b9494 @dedeepya-sri Resolved navigation routing issue causing 404s
48e7ff7 @dedeepya-sri Fixed contribute page UI broken after rebase
25f2915 @yashikasharmays1511-prog Fixed hero section display issue
baa3bd8 @Krishnx21 Fixed merge conflict residue
e05c6b8 @sanju-rajak Hardened CSP and migrated security logic into proxy
7061ebb @Vaishnavi10706 Added accessible label to mobile hamburger menu
dcb3b46 @yashikasharmays1511-prog Addressed accessibility review comments
487dc18 @CIPHERS-hackathon Replaced emojis with Font Awesome icons in features section
579c509 @RangeR107 Resolved rebase conflicts and corrected JSX tag mismatches

Functional Regressions Fixed (Local — v2.1.0)

These regressions were introduced during development and fixed as part of this release preparation.
Build verified: all 11 pages compiled, TypeScript passed.

# File Regression Fix
1 page.tsx RefObject imported twice from React — compile error Removed duplicate import
2 page.tsx ScrollToTop imported twice — compile error Removed duplicate import
3 page.tsx Section and PageWrapper used but never imported Added missing imports
4 page.tsx Old legacy hero section and old download cards rendered alongside new HeroAndDownload — duplicate download section visible Removed legacy blocks; kept only HeroAndDownload
5 page.tsx Closing ); and } malformed from bad merge — function body not closed Fixed indentation and structure
6 page.tsx Hamburger static aria-label never announced close state Changed to dynamic label plus added aria-expanded
7 medical-glossary/page.tsx Hardcoded href="/" and href="/contribute" break under subdirectory deployments Replaced with withBasePath()
8 login/page.tsx Imported Section/PageWrapper but JSX opened with div and closed with wrong tags — parse error Removed unused import, restored correct closing divs
9 login-admin/page.tsx Same broken closing tag pattern as login/page.tsx Same fix applied
10 skeleton.tsx SkeletonProps did not accept style or data-* — sidebar.tsx (shadcn/ui) failed TypeScript check Extended SkeletonProps to inherit React.HTMLAttributes; simple-element mode renders shadcn-compatible animated div

Performance

Commit Author Change
c6ce522 @Xenon010101 Replaced transition-all with transition-colors in Badge — reduces style recalculation on hover

Refactoring

Commit Author Change
74e82f7 @RangeR107 Review feedback fixes for Skeleton and Spinner components
b3bdb1e @Shikhar-404exe Removed duplicate typography definitions from globals.css
579c509 @RangeR107 Resolved rebase conflicts and corrected JSX tag mismatches

Security

  • Nonce-based CSP with strict-dynamic prevents XSS in production
  • Dev CSP allows HMR websockets scoped to NODE_ENV=development
  • HSTS: 2-year max-age with includeSubDomains
  • X-Frame-Options: DENY prevents clickjacking
  • Cross-Origin-Opener-Policy: same-origin
  • Permissions-Policy restricts camera, microphone, geolocation

Accessibility

  • Hamburger: dynamic aria-label (Open/Close) plus aria-expanded state
  • Coming Soon modal: role="dialog", aria-modal, aria-labelledby, aria-hidden toggle
  • Screenshot modal: keyboard nav (Escape, left/right arrows), aria-label on all controls
  • Medical Glossary: aria-live result count, aria-labelledby sections, aria-label on search
  • Nav links: aria-current="location" on active section
  • Skeleton cards: aria-hidden="true" so screen readers skip placeholders
  • Spinner: role="status" plus configurable aria-label
  • Contributors page: role="list" and role="listitem" on contributor grid

Documentation

Commit Author Change
e3d5cc7 @saurabhhhcodes Added medical glossary screenshots to docs/screenshots/
4204be0 @SB2318 CI workflow to auto-update contributors on web PR merge
contact_newsletter_guide.md — backend API implementation guide
CONTRIBUTING.md added to repo root

Removed / Cleaned Up

Commit Author Change
1251046 @SB2318 Deleted web/package-lock.json (maintainer policy)
ec52d40 @yashikasharmays1511-prog Removed stale web/package-lock.json
61b5a11 @yashikasharmays1511-prog Removed root package-lock.json
aa37798 @yashikasharmays1511-prog Removed unnecessary page.zip artifact

Dependency Changes

Package Change
framer-motion Added — Contribute page animations
lucide-react Added — Icon set for Contribute and Glossary pages
@radix-ui/* Added — Backing shadcn/ui components
tailwindcss Added dedicated web/tailwind.config.ts

Configuration Changes

File Change
web/next.config.ts basePath from env var; image/avif + image/webp formats; qualities array
web/components.json shadcn/ui configuration
web/tailwind.config.ts Tailwind configuration for UI components

Build Output (v2.1.0)

Next.js 16.2.6 (Turbopack)
Compiled successfully in 15.4s
TypeScript passed in 16.8s
11/11 static pages generated

Route (app)              Revalidate  Expire
/ ................................ static
/_not-found ...................... static
/admin-agreement ................. static
/contribute ...................... static
/contributors .................... 1d     1y
/goodbye ......................... static
/login ........................... static
/login-admin ..................... static
/medical-glossary ................ static

Proxy (Middleware) — CSP + security headers active on all routes

Verification Checklist

  • Build passes — zero TypeScript errors, zero compile errors
  • All 11 routes generated successfully
  • CSP proxy middleware active
  • No duplicate download section on home page
  • Hamburger announces "Close navigation menu" when open
  • Medical Glossary nav links work correctly
  • Launching Soon modal opens via Admin Closed Testing button
  • Navigation routing has no 404s on /contribute and /medical-glossary
  • Skeleton loaders appear briefly in features section on first load
  • Contact form sends or falls back to mailto
  • Contributors page shows live GitHub data

Related PRs

PR Author Description
#1035 @CIPHERS-hackathon Web branch sync
#1112 @Vaishnavi10706 Hamburger menu aria-label
#1024 @saurabhhhcodes Medical glossary page
#1105 @dedeepya-sri Contribute page UI fix
#1037 @Shikhar-404exe Misc fixes
#1036 @Krishnx21 Routing fix
#1031 @InukaWijerathna GlossaryTooltip component
#968 @RangeR107 Skeleton and Spinner loader components
#977 @yashikasharmays1511-prog Web branch sync
#1052 @Xenon010101 transition-colors in Badge
#942 @Rishi04singh Responsive layout system
#917 @sanju-rajak Security headers and proxy middleware