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.3

Latest

New

  • Analyze page actionabilityMetric detail accordions let you expand any result in-line for more context.
  • Mobile file pickeriOS and Android users can now select SD card backup files directly from their device, without needing a desktop computer.
  • First-run welcome screenA short welcome prompt greets new users on first analysis with a link to join the community forum.
  • Processing time estimateThe analysis progress bar now shows a rough time estimate so you know what to expect.
  • Historical trend analysisThe Trends tab now shows multi-session patterns over time, including night-to-night changes in your key metrics.
  • CPAP tips drip email sequence5-email series sent on days 3, 7, 12, 18, and 25 after signup with practical tips for reading your data.
  • Extended activation nurture emailsActivation sequence extended from 3 to 5 emails.
  • Dormancy re-engagement cadenceRe-engagement now sends 3 emails at 14, 28, and 45 days of inactivity, up from 2 emails.
  • New blog articles14 new guides published through April: What Are RERAs, What Is Flow Limitation on CPAP, How to Read OSCAR CPAP Charts, CPAP Leak Rate Explained, What Does Leak Rate Mean, How to Analyse Your CPAP Data at Home, CPAP Compliance Tracking FAQ, How to Export and Understand Your CPAP Data, Understanding Your CPAP Data, Low AHI But Still Tired, Understanding Your CPAP Pressure Settings, What Is UARS, BiPAP vs CPAP Data, and What Is Central Apnea.
  • Four metrics pillar post"The Four Metrics AirwayLab Measures" reference article covering AHI, Glasgow Index, IFL Risk, and FL Score.
  • Glossary pagesIndividual pages for Glasgow Index, WAT, NED, and FL Score with full definitions and cross-links.
  • ResMed SD card guidesThree device-specific guides for getting SD card data off AirSense and AirCurve devices.
  • FAQ schema on blog postsMachine-readable FAQ markup added to blog articles to improve how they appear in search results.
  • Internal blog cross-linksBlog posts and glossary pages now cross-link throughout the site.
  • Post-purchase activation bannerA confirmation prompt appears on the analyze page after checkout with links to getting-started resources.

Improved

  • Data highlights panel"Clinician questions" renamed to "Data highlights" with more direct language describing what your data shows.

Bug Fixes

  • AirCurve 11 device identificationAirCurve 11 VAuto was misclassified as iVAPS; now correctly identified.
  • O2Ring CSV uploadO2Ring oximeter CSV files are now recognised during upload validation.
  • AI insights reliabilityFixed 413 payload errors on large sessions and added timeout retry logic; credit exhaustion now shows a clear alert instead of silently failing.
  • Mobile tab navigationAnalyze tabs no longer overflow off-screen on small devices.
  • Mobile display polishMultiple display and interaction fixes on iOS and Android .
  • Tier selection through loginChosen pricing tier is now correctly preserved when you click "subscribe" before signing in.
  • Upload deduplicationRetry logic no longer submits duplicate waveform contributions on repeated attempts.

1.2.2

New

  • New headline-- "See What Your PAP Data Actually Shows" replaces effectiveness-framing headline with data-descriptive copy.
  • Metrics comprehension framing-- AHI context banner explaining what AHI does and doesn't capture, plain language tooltips for key metrics, and a new insight for low-AHI users who may still have flow limitation.
  • UX quick wins-- Upload progress stage labels , simplified upload instructions, and a mid-page CTA on the landing page.
  • Social proof on pricing-- Testimonials section and community stats bar on the pricing page.
  • Mobile email capture-- Desktop reminder signup on /analyze for mobile visitors .
  • Desktop reminder emails-- POST /api/remind-desktop endpoint with unsubscribe flow for mobile-to-desktop conversion.
  • v1.2.1 blog post-- "Clearer Language, Same Deep Analysis" release announcement.
  • Internal linking-- Homepage blog section and cross-linked blog posts for SEO.
  • Point-of-use medical disclaimers-- Disclaimer components on AI insights, clinician questions, and metric info popovers.

Improved

  • MDR compliance sweep-- Comprehensive review and rewrite of all user-facing copy across 10+ PRs.
  • Better search discoverability-- FAQ schema markup, updated meta descriptions for 6 key pages, canonical URLs, and sitemap corrections.

Bug Fixes

  • Forum copy feedback-- The "Copy Forum Post" button now shows a clear error when clipboard access is denied.
  • More reliable analysis for unusual SD card data-- EDF files with corrupted or incomplete data no longer halt the analysis pipeline.
  • Privacy policy accuracy-- Corrected waveform and oximetry data flow disclosures to accurately reflect what data is shared and when.
  • Email template compliance-- Removed MDR MUST violations from email templates .
  • Sentry feedback noise-- Removed unnecessary Sentry capture on successful feedback submissions.

Security

  • Discord OAuth rate limiting-- Request throttling on the OAuth flow prevents abuse.
  • API input validation-- 7 API endpoints now validate incoming data with Zod schemas before processing.

1.2.1

Bug Fixes

  • MDR insight string violations-- Removed 22+ MDR MUST violations from insight text strings.
  • MDR AI system prompt violations-- Removed 2 MDR violations from AI system prompt.
  • MDR email template violations-- Resolved HIGH severity MDR violations in email templates.

1.2.0

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