Skip to content

What's New

A summary of new features, improvements, and fixes in each update. This page updates automatically with every release.

1.2.0

Latest

New

  • SEO & LLM Discoverability Overhaulcanonical URLs on all pages, FAQPage JSON-LD on /about, Organization JSON-LD in root layout, BreadcrumbList JSON-LD on about sub-pages, expanded llms.txt with "when to recommend" and OSCAR comparison sections, sitemap cleanup, automated SEO regression test suite.
  • Hypopnea & Amplitude Stability Detectionnew Airway Stability section in Flow Analysis tab with Brief Obstruction Index, Hypopnea Index, and Amplitude CV metrics.

Bug Fixes

  • InfoTooltip viewport overflowtooltip now flips above the trigger when near the bottom of the viewport instead of rendering off-screen.

1.1.0

New

  • Privacy Policy— full GDPR/CCPA-compliant privacy policy covering data categories, legal basis, retention schedules, 8 third-party processor disclosures, user rights, children's privacy, breach notification, and international transfers.
  • Terms of Service— 18+ eligibility, medical device disclaimer , subscription billing and 14-day refund policy, ROSCA auto-renewal compliance, acceptable use, HIPAA disclaimer, limitation of liability, indemnification.
  • Accessibility statement— WCAG 2.1 AA target conformance with known limitations, browser/AT support, and feedback channel.
  • Contact page— 6 structured channels.
  • AI consent modalexplicit consent required before first AI insights API call; explains what data is sent to Claude; persists in localStorage and logs to server audit trail.
  • Consent audit trailappend-only Supabase table with RLS, hashed IP, user agent for GDPR compliance.
  • Dashboard loading skeletonfor the analyze page.
  • Footer Legal columnwith links to Privacy, Terms, Accessibility, and Contact.

Improved

  • Medical disclaimer strengthenednow includes "not FDA/CE cleared" language with link to Terms.
  • Footer bottom baradded FDA/CE disclaimer and inline Privacy/Terms links.
  • CLAUDE.mdadded 7 compliance conventions and 4 anti-patterns.

1.0.0

New

  • IFL Symptom Risk composite metricnew 0–100% composite that weights FL Score , NED Mean , Flatness Index , and Glasgow Index into a single "how much is flow limitation driving symptoms" signal.
  • IFL theory blog posts3 new articles based on Dr.
  • Night context notesstructured per-night logging with free-text notes, persisted to localStorage, correlated by AI insights.
  • Actionable AI insightsAI prompt now analyses all machine settings, correlates user-reported night context, and generates concrete investigation suggestions.
  • Extended settings extractionpulls all STR.edf machine settings plus catch-all for remaining signals.
  • Metric methodology explanationsevery key metric now has a "How is this calculated?" expandable section in its info tooltip.
  • Progressive persistencewhen localStorage exceeds 4MB, oldest nights are dropped via binary search instead of losing everything, with warning banner.
  • Analysis complete bannershows night count and date range after processing.
  • Machine event parsingEVE.edf parser extracts machine-recorded events from ResMed EVE files using EDF+ TAL format.
  • Per-type event togglesall event types now have individual toggle buttons on Graphs and Waveform tabs.
  • Provider-grade chart browsersynced stacked charts with shared toolbar, touch gestures, and minimap.
  • SA2 EDF oximetry parsingauto-detects pulse oximetry from ResMed files, prioritised over CSV when both exist.
  • Waveform data contributionopted-in users contribute raw breathing patterns alongside analysis scores, with engine version tracking and incremental upload.
  • Share link MVP30-day share links for analysis results with consent flow.
  • For Providers pagemarketing page for sleep consultants at with contact form.
  • Night Summary Hero cardglanceable traffic-light therapy status above metrics.
  • Auto-fix Sentry errorsGitHub Actions workflow for automated error fixes via Claude Code.
  • Real EDF test fixtures3 representative nights with integration tests and Playwright E2E tests.
  • Brand voice guidewith voice attributes, tone, and terminology reference.
  • Centralised chart themeas single source of truth for all chart styles.
  • Contribution nudge social prooflive counter of contributors and total nights.
  • AI credits synced from servercommunity tier credit count now reflects actual server-side usage.
  • Unlimited data contributionremoved 1095-night cap; chunked batches of 1000.

Improved

  • Reframed arousal-centric languagemetric explanations, insights, and AI prompt now reflect that flow limitation itself may drive symptoms independently of arousals.
  • Glasgow thresholds updated
  • Typography upgradePlus Jakarta Sans for body text.
  • Two-tone wordmark"Airway" bold white + "Lab" brand-teal.
  • Device-agnostic upload flowremoved ResMed-specific language; ResMed mentioned only in compatibility note.
  • Dashboard densitytighter spacing, Device Settings collapsed by default, beginner-friendly progressive disclosure.
  • Tab bar redesignvariant with visible underline indicator; primary tabs show full words on mobile.
  • Chart UXzoom presets as pill buttons, interaction hints near toolbar, minimap hover state.
  • Improved event detectionflatness-based FL detection replacing amplitude-based.
  • Consolidated Supabase clientssingle module import.
  • Shared rate limiterreplaced 5 inline implementations with class.

Bug Fixes

  • Critical engine bugsGlasgow weighted averaging, NED H1/H2 split, WAT FFT zero-padding, oximetry buffer-zone trimming, night-grouper date extraction.
  • Security hardeningCSRF validation, rate limiting on all API routes, Stripe webhook verification, Zod validation, CSP headers.
  • Accessibilityskip-to-content, ARIA labels, keyboard chart navigation, semantic heading hierarchy, screen reader announcements.
  • UX quick winsloading skeletons, error boundaries with retry, empty states, toast notifications.
  • Glasgow radar chart scalingaxis domain corrected from to.
  • Oximetry-only uploadno longer re-processes entire SD card.
  • Heatmap/metrics table date sortnewest-first default, visible sort button.
  • Demo exit preserves datano longer clears persisted real analysis data.

Removed

  • ~85 macOS duplicate filesremoved Finder-created copies with " 2", " 3" suffixes.

0.6.0

New

  • Auth + Stripe subscription systemfull authentication flow with Supabase Auth , Stripe checkout for Supporter and Champion tiers, customer portal, and webhook-driven tier sync.
  • Cloud storage systemraw SD card file upload with consent, deduplication, and waveform loading from cloud when local files unavailable.
  • Flow waveform browserinteractive waveform viewer with scroll-zoom, drag-pan, keyboard navigation, pressure overlay, and event markers.
  • Changelog pageuser-facing route parsed from this file.
  • Feedback widgetfloating feedback form stored in Supabase.
  • Data contribution opt-inanonymised breathing scores contributed to research dataset with explicit consent.
  • 20 Plausible analytics eventsconversion funnel , engagement , and retention signals.
  • Build-time version checkfails the build if version has no matching CHANGELOG entry.

Improved

  • Generalised CPAP → PAPall user-facing references updated to cover BiPAP/ASV users.
  • Pricing page CRO improvementsyearly monthly-equivalent pricing, value-oriented copy, FAQ section.
  • Demo AI insightsstatic pre-generated insights for demo mode with support CTA.

Bug Fixes

  • Browser freeze on large SD cardsraised night cap to 3 years, added chunked processing.
  • Synthetic waveformsshow synthetic waveform when SD files unavailable instead of dead end; don't show for real data.
  • Checkout error handlinggraceful fallback when Stripe price IDs are missing.
  • Combined metric explanationsrender as separate paragraphs instead of merged text.
  • GitHub stars rate limitingproxied through server API to avoid client-side 403s.

Security

  • Auth hardeningaccount deletion, health check endpoint, deployment safeguards.
  • RLS enforcementenabled on and tables.
  • API loggingon all 4xx rejections for audit trail.

0.5.0

New

  • AI Insights MVPoptional AI-powered therapy recommendations via Claude Haiku API route.
  • AI key input component"Unlock AI-powered insights" card with API key input, stored in localStorage.
  • Skip-to-content linkkeyboard accessibility improvement for screen reader users.
  • Medical disclaimer on forum exports"Not medical advice — discuss results with your clinician".

Improved

  • Renamed SleepScope → AirwayLabfull codebase rename including all metadata, localStorage keys, OG images, JSON-LD, sitemap, and documentation.
  • Anonymized codebaseremoved all personal identifiers, author set to "AirwayLab".
  • AI insights route hardenedadded max 90-night limit on request payload validation.
  • Traffic light accessibilitymetric values now include with status text.

0.4.0

New

  • Custom thresholdspower users can override all 15 traffic-light threshold levels via a settings modal.
  • Comparison modenew "Compare" tab for side-by-side two-night comparison with delta badges, traffic-light indicators, and a secondary night picker dropdown.
  • Enhanced PDF reportmulti-page layout with:.

0.3.0

New

  • Glasgow component breakdown on Overview tabcollapsible section showing all 9 Glasgow components (Skew, Spike, Flat Top, Top Heavy, Multi-Peak, No Pause, Insp.
  • Heatmap metric togglestoggle buttons in the Night-by-Night Heatmap header to show/hide individual metric rows.
  • Heatmap column sortingclick date header to sort chronologically , click metric row labels to sort nights by that metric's values.
  • Heatmap sparklinesoptional "Trends" toggle adds a mini SVG sparkline column at the end of each metric row.
  • Clickable oximetry upload from results"No Oximetry Data" card on the Overview tab is now clickable , opens a file picker for CSV upload and re-runs analysis with oximetry data.
  • Inline email opt-in in controls baremail signup moved from bottom of results page to the controls bar.

Improved

  • "Try Demo" → "See Demo"updated button text on landing page and analyze page.

Bug Fixes

  • Page wider than viewportadded to in and class to in , preventing horizontal scroll caused by wide heatmap tables or other overflowing content.

0.2.1

Bug Fixes

  • Critical: Glasgow scores always 0 on real SD card uploadsResMed BRP.edf files store flow data in L/s , but the Glasgow engine thresholds are calibrated for L/min.

0.2.0

New

  • Root error boundary— catches unhandled runtime errors with a user-friendly recovery page.
  • Test suite6 test files with 105 passing tests covering:.
  • Clipboard error handlingvisual error state when clipboard write fails.
  • Vitest configurationwith jsdom environment and path aliases.

Improved

  • Parallelised file I/O
  • Memoised derived state
  • Memoised settings diff
  • Memoised metrics array
  • O(1) tooltip lookups
  • Wrapped components in `React.memo`, , now skip re-renders when props are unchanged.
  • Wrapped callbacks in `useCallback`
  • Standardised traffic-light colours

Bug Fixes

  • Export crash resilienceall export functions wrapped in try-catch to prevent unhandled exceptions.
  • Clipboard API fallbackgraceful degradation when is rejected.

Accessibility

  • Added `aria-hidden="true"` to decorative hero dashboard on landing page
  • Added `aria-label="Machine settings per night"` to settings timeline table
  • Added `scope="col"` to all table header cells in settings timeline
  • Added `aria-hidden="true"` to decorative AlertTriangle icons in settings timeline
  • Added `sr-only` text ("Settings changed") for screen reader users on change indicators

Security

  • Persistence layer— 7-day auto-expiry, 4MB size guard, bulk signal data stripped before storage, JSON parse wrapped in try-catch with corruption recovery.
  • Upload validation— file type allowlist, 500MB per-file size limit, folder structure validation, max 365 files guard.

0.1.0

New

  • Initial MVP release
  • Glasgow Index engine9-component breath-by-breath flow limitation scoring.
  • WAT engineFL Score , Regularity Score , Periodicity Index.
  • NED enginebreath segmentation, NED calculation, flatness index, M-shape detection, RERA sequence detection.
  • Oximetry engine17-metric framework: ODI3/4, T<90/T<94, HR clinical surges, coupled events, H1/H2 splits.
  • EDF parserbinary EDF reader for ResMed SD card files.
  • Settings extractorSTR.edf parser for daily machine settings with AirCurve/AirSense detection.
  • Night grouperdate-based file grouping with session merging.
  • Oximetry CSV parserViatom/Checkme O2 Max format support.
  • Web Worker architectureall analysis runs off the main thread.
  • Analysis orchestratormanages worker lifecycle, file grouping, result collection.
  • Dashboard UI5-tab layout.
  • ChartsGlasgow radar, trend lines, night heatmap, flow waveform, oximetry timeline.
  • ExportCSV, JSON, printable PDF report, forum post formatting.
  • Session persistencelocalStorage with automatic restore on revisit.
  • Landing pagehero section, 4-engine feature cards, privacy callout, demo CTA.
  • Demo mode5-night sample dataset for instant exploration.
  • Email opt-inpost-analysis waitlist capture.
  • Privacy-first designall processing client-side, zero data transmission.
  • Dark-only theme with shadcn/ui components
  • Responsive mobile-first layout
  • GPL-3.0 license