CHANGELOG.md
Rama main · réplica de lectura del repositorio original.
## [2.0.10](https://github.com/joshuamyers-dev/sleeplab/compare/v2.0.9...v2.0.10) (2026-10-29)
### Bug Fixes
* **deps:** bump fastapi from 0.143.3 to 0.162.0 ([#295](https://github.com/joshuamyers-dev/sleeplab/issues/295)) ([0feee0e](https://github.com/joshuamyers-dev/sleeplab/commit/0feee0e838612e272180953c16bb10bcfd2838c2))
* **deps:** bump openai from 3.33.0 to 3.37.0 ([#293](https://github.com/joshuamyers-dev/sleeplab/issues/293)) ([6b6a0e9](https://github.com/joshuamyers-dev/sleeplab/commit/6b6a0e97e6a9533110e1854d5ebcffd7f15ed021))
* **deps:** bump reportlab from 5.0.1 to 5.1.0 ([#294](https://github.com/joshuamyers-dev/sleeplab/issues/294)) ([eca9c1c](https://github.com/joshuamyers-dev/sleeplab/commit/eca9c1c5e1b1c2be1356085aa1ca6e0ef613dc70))
* **deps:** bump sqlalchemy from 2.1.5 to 2.1.6 ([#292](https://github.com/joshuamyers-dev/sleeplab/issues/292)) ([fe61136](https://github.com/joshuamyers-dev/sleeplab/commit/fe611368409c5a32a6bb5845a930d9698e76b2da))
## [2.0.9](https://github.com/joshuamyers-dev/sleeplab/compare/v2.0.8...v2.0.9) (2026-10-26)
### Bug Fixes
* **deps:** bump pillow ([#290](https://github.com/joshuamyers-dev/sleeplab/issues/290)) ([2b00cca](https://github.com/joshuamyers-dev/sleeplab/commit/2b00cca57ffb30fc1deba18d1dccee8334703c16))
* **deps:** bump the uv group across 1 directory with 2 updates ([#291](https://github.com/joshuamyers-dev/sleeplab/issues/291)) ([a27b3ea](https://github.com/joshuamyers-dev/sleeplab/commit/a27b3ea6eae850d6b9e61dc4fcafe7588b38c0f5))
## [2.0.8](https://github.com/joshuamyers-dev/sleeplab/compare/v2.0.7...v2.0.8) (2026-10-22)
### Bug Fixes
* **deps:** bump fastapi from 0.143.0 to 0.143.3 ([#286](https://github.com/joshuamyers-dev/sleeplab/issues/286)) ([0e65910](https://github.com/joshuamyers-dev/sleeplab/commit/0e6591058265d9064ff3a20a26c7b296271d6b66))
* **deps:** bump openai from 3.28.0 to 3.33.0 ([#288](https://github.com/joshuamyers-dev/sleeplab/issues/288)) ([2971f1c](https://github.com/joshuamyers-dev/sleeplab/commit/2971f1cdd3bb911bf8c5a5fa825d188ecd92203c))
* **deps:** bump sqlalchemy from 2.1.4 to 2.1.5 ([#287](https://github.com/joshuamyers-dev/sleeplab/issues/287)) ([86bb073](https://github.com/joshuamyers-dev/sleeplab/commit/86bb0739fdbe874e1f0c25614cc32c98f0f0dddf))
## [2.0.7](https://github.com/joshuamyers-dev/sleeplab/compare/v2.0.6...v2.0.7) (2026-10-15)
### Bug Fixes
* **deps:** bump fastapi from 0.142.2 to 0.143.0 ([#283](https://github.com/joshuamyers-dev/sleeplab/issues/283)) ([35f83e9](https://github.com/joshuamyers-dev/sleeplab/commit/35f83e99685cd2c42e9722877d1b829fdd6df580))
* **deps:** bump openai from 3.24.0 to 3.28.0 ([#284](https://github.com/joshuamyers-dev/sleeplab/issues/284)) ([2f9b4aa](https://github.com/joshuamyers-dev/sleeplab/commit/2f9b4aa5ad79017218780863df494dacaca4efb0))
* **deps:** bump sqlalchemy from 2.1.3 to 2.1.4 ([#285](https://github.com/joshuamyers-dev/sleeplab/issues/285)) ([a3dd5b7](https://github.com/joshuamyers-dev/sleeplab/commit/a3dd5b76f31bbc3bf34a45c60d69890421b96647))
## [2.0.6](https://github.com/joshuamyers-dev/sleeplab/compare/v2.0.5...v2.0.6) (2026-10-08)
### Bug Fixes
* **deps:** bump fastapi from 0.141.1 to 0.142.2 ([#279](https://github.com/joshuamyers-dev/sleeplab/issues/279)) ([302967c](https://github.com/joshuamyers-dev/sleeplab/commit/302967c180f310698ee19631bbfdc8c8d14eaa36))
* **deps:** bump openai from 3.19.2 to 3.24.0 ([#278](https://github.com/joshuamyers-dev/sleeplab/issues/278)) ([3dc0089](https://github.com/joshuamyers-dev/sleeplab/commit/3dc0089f6efeb40dac4ff328273052a7b0a8e624))
* **deps:** bump pyjwt from 2.15.0 to 2.15.1 ([#277](https://github.com/joshuamyers-dev/sleeplab/issues/277)) ([77ac69b](https://github.com/joshuamyers-dev/sleeplab/commit/77ac69ba916a32da3b959f3100b4b66eaf8339a8))
* **deps:** bump sqlalchemy from 2.1.1 to 2.1.3 ([#280](https://github.com/joshuamyers-dev/sleeplab/issues/280)) ([bb87227](https://github.com/joshuamyers-dev/sleeplab/commit/bb87227d6f0ea5e4df8ad713d9184304e59c1442))
* **deps:** update mcp requirement from >=2.2.0 to >=2.3.0 ([#281](https://github.com/joshuamyers-dev/sleeplab/issues/281)) ([5f82439](https://github.com/joshuamyers-dev/sleeplab/commit/5f8243905dfad1653c2b5706ce59ed3250ffc838))
## [2.0.5](https://github.com/joshuamyers-dev/sleeplab/compare/v2.0.4...v2.0.5) (2026-10-05)
### Bug Fixes
* **deps:** bump the npm_and_yarn group across 1 directory with 2 updates ([#270](https://github.com/joshuamyers-dev/sleeplab/issues/270)) ([50c4e9f](https://github.com/joshuamyers-dev/sleeplab/commit/50c4e9f90234427b61998b5d72bbfda337b516d2))
* **deps:** bump urllib3 ([#275](https://github.com/joshuamyers-dev/sleeplab/issues/275)) ([b7ef8f8](https://github.com/joshuamyers-dev/sleeplab/commit/b7ef8f87a3efe0f6ebe128dc8ce3cb88ebe68cae))
## [2.0.4](https://github.com/joshuamyers-dev/sleeplab/compare/v2.0.3...v2.0.4) (2026-10-01)
### Bug Fixes
* **deps:** bump openai from 3.16.2 to 3.19.2 ([#274](https://github.com/joshuamyers-dev/sleeplab/issues/274)) ([477c04c](https://github.com/joshuamyers-dev/sleeplab/commit/477c04c8d927b8019c19d835c489477b4cfe5d4b))
* **deps:** bump pyjwt from 2.14.0 to 2.15.0 ([#273](https://github.com/joshuamyers-dev/sleeplab/issues/273)) ([081d416](https://github.com/joshuamyers-dev/sleeplab/commit/081d4167e52819c56cff22ecca12e1c8773bf976))
* **deps:** bump sqlalchemy from 2.0.54 to 2.1.1 ([#272](https://github.com/joshuamyers-dev/sleeplab/issues/272)) ([b6d9717](https://github.com/joshuamyers-dev/sleeplab/commit/b6d9717f900db02670cc96a8bb47903d8cff89be))
* **deps:** bump uvicorn from 0.53.0 to 0.54.0 ([#271](https://github.com/joshuamyers-dev/sleeplab/issues/271)) ([07529b9](https://github.com/joshuamyers-dev/sleeplab/commit/07529b92bf3925e65cd9b7ce60e7ea3e8ee90c61))
## [2.0.3](https://github.com/joshuamyers-dev/sleeplab/compare/v2.0.2...v2.0.3) (2026-09-24)
### Bug Fixes
* **deps:** bump openai from 3.13.0 to 3.16.2 ([#268](https://github.com/joshuamyers-dev/sleeplab/issues/268)) ([cf13d55](https://github.com/joshuamyers-dev/sleeplab/commit/cf13d559c2ce4bce50d40c41fb3ace99c69d0c5b))
* **deps:** bump sqlalchemy from 2.0.52 to 2.0.54 ([#267](https://github.com/joshuamyers-dev/sleeplab/issues/267)) ([3c7f0c4](https://github.com/joshuamyers-dev/sleeplab/commit/3c7f0c46b6128f0f8fd870bf168eed2fae6f2ef0))
* **deps:** bump uvicorn from 0.52.4 to 0.53.0 ([#266](https://github.com/joshuamyers-dev/sleeplab/issues/266)) ([d4889eb](https://github.com/joshuamyers-dev/sleeplab/commit/d4889eb18a0c547c124024a9e27d8a125b3d1fcf))
## [2.0.2](https://github.com/joshuamyers-dev/sleeplab/compare/v2.0.1...v2.0.2) (2026-09-21)
### Bug Fixes
* **deps:** bump anyio in the uv group across 1 directory ([#265](https://github.com/joshuamyers-dev/sleeplab/issues/265)) ([6feb28d](https://github.com/joshuamyers-dev/sleeplab/commit/6feb28de852f5a819c3aadb0342ee7987e2cb8d7))
## [2.0.1](https://github.com/joshuamyers-dev/sleeplab/compare/v2.0.0...v2.0.1) (2026-09-17)
### Bug Fixes
* **deps:** bump matplotlib from 3.11.1 to 3.11.2 ([#259](https://github.com/joshuamyers-dev/sleeplab/issues/259)) ([cc0e042](https://github.com/joshuamyers-dev/sleeplab/commit/cc0e0428b9fe7b2bd4be217e1aa75ff7b77263aa))
* **deps:** bump openai from 3.8.0 to 3.13.0 ([#257](https://github.com/joshuamyers-dev/sleeplab/issues/257)) ([1376c52](https://github.com/joshuamyers-dev/sleeplab/commit/1376c522b0df96bd8730d16efdf5b0dbea57fa3b))
* **deps:** bump psycopg2-binary from 2.9.12 to 2.9.13 ([#256](https://github.com/joshuamyers-dev/sleeplab/issues/256)) ([9f4891a](https://github.com/joshuamyers-dev/sleeplab/commit/9f4891a0b45f0216d5114ef0958d8c4754a6d62f))
* **deps:** bump pyjwt from 2.13.0 to 2.14.0 ([#260](https://github.com/joshuamyers-dev/sleeplab/issues/260)) ([edc25fa](https://github.com/joshuamyers-dev/sleeplab/commit/edc25faade089e002807963bea971a516129b732))
* **deps:** update mcp requirement from >=2.1.1 to >=2.2.0 ([#261](https://github.com/joshuamyers-dev/sleeplab/issues/261)) ([06ae936](https://github.com/joshuamyers-dev/sleeplab/commit/06ae93600b165bd2fe7df0c7cd3cea2bbe63d69d))
# [2.0.0](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.17...v2.0.0) (2026-09-10)
### Bug Fixes
* **deps:** bump openai from 3.6.0 to 3.8.0 ([#247](https://github.com/joshuamyers-dev/sleeplab/issues/247)) ([133f64d](https://github.com/joshuamyers-dev/sleeplab/commit/133f64d90e323e91e3a78ec9431c5239ff8648ef))
### Features
* **api:** add /api/v1 versioning with public/internal OpenAPI specs ([201017f](https://github.com/joshuamyers-dev/sleeplab/commit/201017f8a6e7c149329b579510fb5004be3ba88d))
* **api:** add OpenAPI spec export script ([ebb90b7](https://github.com/joshuamyers-dev/sleeplab/commit/ebb90b710280af24f78bdf6ccd81e541bf856333))
* **docker:** wire feature-gated MCP server into deployments ([0bcedac](https://github.com/joshuamyers-dev/sleeplab/commit/0bcedacb7365406547fab7f05998dbe598a00f8a))
### BREAKING CHANGES
* **api:** all API routes moved from /X to /api/v1/X. The frontend API base URL and test request paths are migrated to /api/v1 in this commit.
## [1.4.17](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.16...v1.4.17) (2026-09-03)
### Bug Fixes
* **deps:** bump openai from 3.3.1 to 3.6.0 ([#239](https://github.com/joshuamyers-dev/sleeplab/issues/239)) ([2d970be](https://github.com/joshuamyers-dev/sleeplab/commit/2d970be8114554f64991be81bfc2dbb16bfea505))
* **deps:** bump react-dom and @types/react-dom ([#241](https://github.com/joshuamyers-dev/sleeplab/issues/241)) ([27c0d5e](https://github.com/joshuamyers-dev/sleeplab/commit/27c0d5eeb6c4681b8a32abfb9393510f83018705))
* **deps:** update mcp requirement from >=2.0.0 to >=2.1.1 ([#240](https://github.com/joshuamyers-dev/sleeplab/issues/240)) ([927808c](https://github.com/joshuamyers-dev/sleeplab/commit/927808c8c9f1fbe8502bfcd423266ef78c97e197))
## [1.4.16](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.15...v1.4.16) (2026-08-27)
### Bug Fixes
* **deps:** bump openai from 3.1.0 to 3.3.1 ([#232](https://github.com/joshuamyers-dev/sleeplab/issues/232)) ([0da8432](https://github.com/joshuamyers-dev/sleeplab/commit/0da8432b3a6429212af74cc0ed8f85ead6c70a0b))
* **deps:** bump reportlab from 5.0.0 to 5.0.1 ([#233](https://github.com/joshuamyers-dev/sleeplab/issues/233)) ([140628c](https://github.com/joshuamyers-dev/sleeplab/commit/140628c11baca0a36d0994f320b940bc4044675c))
* **deps:** bump uvicorn from 0.52.3 to 0.52.4 ([#235](https://github.com/joshuamyers-dev/sleeplab/issues/235)) ([e4b71b0](https://github.com/joshuamyers-dev/sleeplab/commit/e4b71b0ebeab0983166c4cd6ccc0daae8a9607a5))
## [1.4.15](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.14...v1.4.15) (2026-08-20)
### Bug Fixes
* **deps:** bump openai from 2.53.0 to 3.1.0 ([#229](https://github.com/joshuamyers-dev/sleeplab/issues/229)) ([0d1cd47](https://github.com/joshuamyers-dev/sleeplab/commit/0d1cd47cf59eb0f5b7e4a62b07776f367c186360))
* **deps:** bump sqlalchemy from 2.0.51 to 2.0.52 ([#227](https://github.com/joshuamyers-dev/sleeplab/issues/227)) ([a1cad6c](https://github.com/joshuamyers-dev/sleeplab/commit/a1cad6ca08f867d5f03c1cd4f1bf7ba76f1b416c))
* **deps:** bump uvicorn from 0.52.1 to 0.52.3 ([#230](https://github.com/joshuamyers-dev/sleeplab/issues/230)) ([57b947d](https://github.com/joshuamyers-dev/sleeplab/commit/57b947d24f1b99fe90e3b0daff1078bfddec26f4))
## [1.4.14](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.13...v1.4.14) (2026-08-13)
### Bug Fixes
* **deps:** bump openai from 2.52.0 to 2.53.0 ([#223](https://github.com/joshuamyers-dev/sleeplab/issues/223)) ([351dace](https://github.com/joshuamyers-dev/sleeplab/commit/351dacee5159bcb8301105edd3ea75a1dcefa535))
* **deps:** bump uvicorn from 0.52.0 to 0.52.1 ([#225](https://github.com/joshuamyers-dev/sleeplab/issues/225)) ([0fdb1ab](https://github.com/joshuamyers-dev/sleeplab/commit/0fdb1ab7cf8a3eb787c7dbfadcfb724cb077fbad))
## [1.4.13](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.12...v1.4.13) (2026-08-10)
### Bug Fixes
* **deps:** bump @rollup/rollup-linux-x64-gnu from 4.61.1 to 4.62.4 ([#211](https://github.com/joshuamyers-dev/sleeplab/issues/211)) ([7a98c35](https://github.com/joshuamyers-dev/sleeplab/commit/7a98c35d5c56071ce8430df707bd857c08aef2cf))
* **deps:** bump the npm_and_yarn group across 1 directory with 2 updates ([#219](https://github.com/joshuamyers-dev/sleeplab/issues/219)) ([bd00045](https://github.com/joshuamyers-dev/sleeplab/commit/bd000450cc809ec9787c6125a1de940fb2a1a135))
* **deps:** bump the npm_and_yarn group across 1 directory with 2 updates ([#220](https://github.com/joshuamyers-dev/sleeplab/issues/220)) ([d691299](https://github.com/joshuamyers-dev/sleeplab/commit/d69129908f3e0d98a65c3c8b0789822c86d86724))
* **deps:** bump the npm_and_yarn group across 1 directory with 5 updates ([#222](https://github.com/joshuamyers-dev/sleeplab/issues/222)) ([c4f4847](https://github.com/joshuamyers-dev/sleeplab/commit/c4f484745e8c57b063a164c126c930c15eeb1593))
## [1.4.12](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.11...v1.4.12) (2026-08-06)
### Bug Fixes
* **deps:** bump adm-zip in the npm_and_yarn group across 1 directory ([#209](https://github.com/joshuamyers-dev/sleeplab/issues/209)) ([ba3b753](https://github.com/joshuamyers-dev/sleeplab/commit/ba3b753c548b07aaae5310ed7457dd78b6f33423))
* **deps:** bump fastapi from 0.140.7 to 0.141.1 ([#214](https://github.com/joshuamyers-dev/sleeplab/issues/214)) ([23a32d3](https://github.com/joshuamyers-dev/sleeplab/commit/23a32d32eb464f6c83439238dde400a86d6c4ccf))
* **deps:** bump openai from 2.49.0 to 2.52.0 ([#213](https://github.com/joshuamyers-dev/sleeplab/issues/213)) ([d403454](https://github.com/joshuamyers-dev/sleeplab/commit/d403454e2fddf0ec8a5711758b09ca21a0782827))
* **deps:** bump uvicorn from 0.51.0 to 0.52.0 ([#215](https://github.com/joshuamyers-dev/sleeplab/issues/215)) ([0eb5ab8](https://github.com/joshuamyers-dev/sleeplab/commit/0eb5ab8617246b7b1bc676dae3b23f4e7229fc9b))
* **deps:** update mcp requirement from >=1.28.1 to >=2.0.0 ([#212](https://github.com/joshuamyers-dev/sleeplab/issues/212)) ([ddee2ae](https://github.com/joshuamyers-dev/sleeplab/commit/ddee2ae4c22d1f15a6ec04cda08e567000e625c3))
## [1.4.11](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.10...v1.4.11) (2026-07-30)
### Bug Fixes
* **deps:** bump fastapi from 0.139.2 to 0.140.7 ([#205](https://github.com/joshuamyers-dev/sleeplab/issues/205)) ([8aa2b73](https://github.com/joshuamyers-dev/sleeplab/commit/8aa2b73bb19770b9b16ec3d2c9a2028957b2b6b4))
* **deps:** bump openai from 2.47.0 to 2.49.0 ([#206](https://github.com/joshuamyers-dev/sleeplab/issues/206)) ([329ce48](https://github.com/joshuamyers-dev/sleeplab/commit/329ce48f4410264d9fae742c3c7d9088485af5b7))
## [1.4.10](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.9...v1.4.10) (2026-07-27)
### Bug Fixes
* **deps:** bump fastapi from 0.139.0 to 0.139.2 ([#196](https://github.com/joshuamyers-dev/sleeplab/issues/196)) ([d3e2c0b](https://github.com/joshuamyers-dev/sleeplab/commit/d3e2c0bf54c43e30656b99d5ddbfc59c3310123f))
* **deps:** bump matplotlib from 3.11.0 to 3.11.1 ([#200](https://github.com/joshuamyers-dev/sleeplab/issues/200)) ([d94ad67](https://github.com/joshuamyers-dev/sleeplab/commit/d94ad6735c6c964a7035caabdfa3f2ef82e0d2fe))
* **deps:** bump openai from 2.45.0 to 2.47.0 ([#198](https://github.com/joshuamyers-dev/sleeplab/issues/198)) ([42dad30](https://github.com/joshuamyers-dev/sleeplab/commit/42dad307d1f59f1dfccaddbb2ca8388e991d1761))
## [1.4.9](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.8...v1.4.9) (2026-07-23)
### Bug Fixes
* **deps:** bump recharts from 3.9.2 to 3.10.0 ([#197](https://github.com/joshuamyers-dev/sleeplab/issues/197)) ([080b827](https://github.com/joshuamyers-dev/sleeplab/commit/080b8273d42ac9844d482f8c3c9cf92ec5eb68b2))
* **deps:** bump the npm_and_yarn group across 1 directory with 2 updates ([#202](https://github.com/joshuamyers-dev/sleeplab/issues/202)) ([6f62d7e](https://github.com/joshuamyers-dev/sleeplab/commit/6f62d7efd516e9198ef33db0feda8918dcf68ce8))
## [1.4.8](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.7...v1.4.8) (2026-07-20)
### Bug Fixes
* **deps:** bump the npm_and_yarn group across 1 directory with 1 update ([#194](https://github.com/joshuamyers-dev/sleeplab/issues/194)) ([3c6bcf6](https://github.com/joshuamyers-dev/sleeplab/commit/3c6bcf671a14307883feb81c01b819e0b2337ae4))
## [1.4.7](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.6...v1.4.7) (2026-07-16)
### Bug Fixes
* **deps:** bump openai from 2.44.0 to 2.45.0 ([#187](https://github.com/joshuamyers-dev/sleeplab/issues/187)) ([29559ea](https://github.com/joshuamyers-dev/sleeplab/commit/29559ea0a9fcd82c9ddf18b0825cc93e543f6faa))
* **deps:** bump react-router-dom from 7.17.0 to 7.18.1 ([#190](https://github.com/joshuamyers-dev/sleeplab/issues/190)) ([51b9755](https://github.com/joshuamyers-dev/sleeplab/commit/51b9755a8ff7407f5b5eb3d3f7210d6f8d950c1a))
* **deps:** bump recharts from 3.8.1 to 3.9.2 ([#189](https://github.com/joshuamyers-dev/sleeplab/issues/189)) ([1ec89cc](https://github.com/joshuamyers-dev/sleeplab/commit/1ec89cc603d952c6cd3a16e50ad931137dc5fb85))
* **deps:** bump uvicorn from 0.50.2 to 0.51.0 ([#188](https://github.com/joshuamyers-dev/sleeplab/issues/188)) ([5cf411e](https://github.com/joshuamyers-dev/sleeplab/commit/5cf411e3ca77ce9929a28507c5c702c710cfcffa))
## [1.4.6](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.5...v1.4.6) (2026-07-09)
### Bug Fixes
* **deps:** bump fastapi from 0.138.2 to 0.139.0 ([#183](https://github.com/joshuamyers-dev/sleeplab/issues/183)) ([604f507](https://github.com/joshuamyers-dev/sleeplab/commit/604f5076837a18abac4bda1316eb6fab97e82fd9))
* **deps:** bump uvicorn from 0.49.0 to 0.50.2 ([#182](https://github.com/joshuamyers-dev/sleeplab/issues/182)) ([ee328b2](https://github.com/joshuamyers-dev/sleeplab/commit/ee328b2071e21141a11885a10782e66b08506bf2))
## [1.4.5](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.4...v1.4.5) (2026-07-02)
### Bug Fixes
* **deps:** bump fastapi from 0.138.0 to 0.138.2 ([#175](https://github.com/joshuamyers-dev/sleeplab/issues/175)) ([96269e3](https://github.com/joshuamyers-dev/sleeplab/commit/96269e382a4cf87af320262e629776a53f99b87a))
* **deps:** bump openai from 2.43.0 to 2.44.0 ([#176](https://github.com/joshuamyers-dev/sleeplab/issues/176)) ([32f8183](https://github.com/joshuamyers-dev/sleeplab/commit/32f81831b2baee5a5b08c9d0049b6a1dbe0f797f))
* **deps:** update mcp requirement from >=1.28.0 to >=1.28.1 ([#174](https://github.com/joshuamyers-dev/sleeplab/issues/174)) ([aecf3b5](https://github.com/joshuamyers-dev/sleeplab/commit/aecf3b559baa8f857883a24390cabe26a9bfd4f0))
## [1.4.4](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.3...v1.4.4) (2026-06-25)
### Bug Fixes
* **deps:** bump fastapi from 0.137.2 to 0.138.0 ([#167](https://github.com/joshuamyers-dev/sleeplab/issues/167)) ([94c6924](https://github.com/joshuamyers-dev/sleeplab/commit/94c69247b545d6e3c0e1a84831bb0a9a47355f47))
* **deps:** bump openai from 2.41.1 to 2.43.0 ([#169](https://github.com/joshuamyers-dev/sleeplab/issues/169)) ([378fbf9](https://github.com/joshuamyers-dev/sleeplab/commit/378fbf9e7dae07ba0b6a82248e0348d2b692c1a6))
* **deps:** bump reportlab from 4.5.1 to 5.0.0 ([#165](https://github.com/joshuamyers-dev/sleeplab/issues/165)) ([2b23f89](https://github.com/joshuamyers-dev/sleeplab/commit/2b23f8999882274fe0d8e08103871d225cced2f9))
* **deps:** update mcp requirement from >=1.27.2 to >=1.28.0 ([#168](https://github.com/joshuamyers-dev/sleeplab/issues/168)) ([f91bea8](https://github.com/joshuamyers-dev/sleeplab/commit/f91bea89e3adb43e38892dce06a89f3179ba7f47))
## [1.4.3](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.2...v1.4.3) (2026-06-22)
### Bug Fixes
* **deps:** bump @rolldown/binding-linux-x64-gnu from 1.1.0 to 1.1.1 ([#152](https://github.com/joshuamyers-dev/sleeplab/issues/152)) ([7d50bd9](https://github.com/joshuamyers-dev/sleeplab/commit/7d50bd93fa55626cc7b17390506053d84f025f1b))
* **deps:** bump esbuild in the npm_and_yarn group across 1 directory ([#163](https://github.com/joshuamyers-dev/sleeplab/issues/163)) ([57efa28](https://github.com/joshuamyers-dev/sleeplab/commit/57efa2824ed541e5b71d16644fb47d3bfb0708ae))
* **deps:** bump fastapi from 0.136.3 to 0.137.2 ([#153](https://github.com/joshuamyers-dev/sleeplab/issues/153)) ([b78622f](https://github.com/joshuamyers-dev/sleeplab/commit/b78622f964cf8982b53e79b734a455ca8f697640))
* **deps:** bump the npm_and_yarn group across 1 directory with 3 updates ([#162](https://github.com/joshuamyers-dev/sleeplab/issues/162)) ([a7c29a9](https://github.com/joshuamyers-dev/sleeplab/commit/a7c29a9862f50f9b34047c3cde2b6ec150791729))
## [1.4.2](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.1...v1.4.2) (2026-06-18)
### Bug Fixes
* **deps:** bump matplotlib from 3.10.9 to 3.11.0 ([#151](https://github.com/joshuamyers-dev/sleeplab/issues/151)) ([2f75fdb](https://github.com/joshuamyers-dev/sleeplab/commit/2f75fdb9825789bf8c207789af441edd2bb2cc56))
* **deps:** bump openai from 2.41.0 to 2.41.1 ([#155](https://github.com/joshuamyers-dev/sleeplab/issues/155)) ([767ed89](https://github.com/joshuamyers-dev/sleeplab/commit/767ed89a8412cfe3a93dd434eaa0724c333f181e))
* **deps:** bump sqlalchemy from 2.0.50 to 2.0.51 ([#157](https://github.com/joshuamyers-dev/sleeplab/issues/157)) ([d2cc0f2](https://github.com/joshuamyers-dev/sleeplab/commit/d2cc0f2cde5531a22aac73dec8038ee528341391))
* **deps:** bump starlette in the uv group across 1 directory ([#160](https://github.com/joshuamyers-dev/sleeplab/issues/160)) ([c6e0736](https://github.com/joshuamyers-dev/sleeplab/commit/c6e07361d560fce6cb3081e76d61418108f26201))
## [1.4.1](https://github.com/joshuamyers-dev/sleeplab/compare/v1.4.0...v1.4.1) (2026-06-11)
### Bug Fixes
* **deps:** bump @rollup/rollup-linux-x64-gnu from 4.59.0 to 4.61.1 ([#145](https://github.com/joshuamyers-dev/sleeplab/issues/145)) ([bbdaaa9](https://github.com/joshuamyers-dev/sleeplab/commit/bbdaaa9e1af6c8f215f52456169017c06c6af4de))
* **deps:** bump python-multipart from 0.0.30 to 0.0.32 ([#144](https://github.com/joshuamyers-dev/sleeplab/issues/144)) ([e93c8a8](https://github.com/joshuamyers-dev/sleeplab/commit/e93c8a88e1c1ae6b5aef3f0e43fbb7fefe5431eb))
* **deps:** bump react-router-dom from 7.16.0 to 7.17.0 ([#149](https://github.com/joshuamyers-dev/sleeplab/issues/149)) ([16e1675](https://github.com/joshuamyers-dev/sleeplab/commit/16e1675b9ddc09cde895f8b5c3eb0a38d70ede3c))
# [1.4.0](https://github.com/joshuamyers-dev/sleeplab/compare/v1.3.1...v1.4.0) (2026-06-08)
### Bug Fixes
* resolve CI failures — renumber migration, restore missing helpers, update uv.lock ([f8bd1ca](https://github.com/joshuamyers-dev/sleeplab/commit/f8bd1ca1a342286ffba3d7b253f7a5a1de15318b))
* restore _format_date_range and _build_ahi_chart dropped during cherry-pick ([8786816](https://github.com/joshuamyers-dev/sleeplab/commit/878681633cd08b425d9733fe2015b4203d571233))
* restore dep files from upstream, fix lint in test_sessions ([d66baed](https://github.com/joshuamyers-dev/sleeplab/commit/d66baedba4d3b7642616a45e21ddef80c683a747))
* **sessions:** correct uuid cast in export_sessions_pdf query ([1481d7f](https://github.com/joshuamyers-dev/sleeplab/commit/1481d7f59f37a5b60d3fa8a1cb628f41e5313845))
* **test:** remove stray PDF assertions from test_update_note_replaces_existing_note ([90842b9](https://github.com/joshuamyers-dev/sleeplab/commit/90842b9d359a98280c0720f8fe40064284b3b110))
### Features
* add compliance calculation module ([d54777a](https://github.com/joshuamyers-dev/sleeplab/commit/d54777ab28a1725af8aaa23a7b06a7581cc4352b))
* add compliance dashboard UI ([58307bf](https://github.com/joshuamyers-dev/sleeplab/commit/58307bf03e8c8316acc5ceace0e3e520185c3f7b))
* add compliance settings DB columns ([b74db8f](https://github.com/joshuamyers-dev/sleeplab/commit/b74db8f7daa9ec8a28815ba720cc8a1d4fb448d6))
* add compliance stats and PDF export endpoints ([56e03a5](https://github.com/joshuamyers-dev/sleeplab/commit/56e03a50f26dfa9b832e644093dd028635c3dd44))
* **adherence:** per-user toggle, merged export card, remove Medicare footnote ([0065f54](https://github.com/joshuamyers-dev/sleeplab/commit/0065f549cdd5f69d6024b914ff418fb6a12f0c1e))
* **adherence:** rename compliance module to adherence throughout, add cleanup ([d1e0e2e](https://github.com/joshuamyers-dev/sleeplab/commit/d1e0e2eecf048cdc7d137baadb510b110acdb73e))
## [1.3.1](https://github.com/joshuamyers-dev/sleeplab/compare/v1.3.0...v1.3.1) (2026-06-05)
### Bug Fixes
* **docker:** use workspace lockfile for frontend build ([63a9012](https://github.com/joshuamyers-dev/sleeplab/commit/63a90127b69b50e7d01c4027eefe7122522c78a2))
# [1.3.0](https://github.com/joshuamyers-dev/sleeplab/compare/v1.2.1...v1.3.0) (2026-06-05)
### Bug Fixes
* add lookback_days input to SleepHQ settings ([4ec3215](https://github.com/joshuamyers-dev/sleeplab/commit/4ec321577c5238c569491b99e7d9fa6e9796dd3b))
* align npm workspace lockfiles ([ed1782a](https://github.com/joshuamyers-dev/sleeplab/commit/ed1782aa06b0207f01f98755249d46f2a42a43f9))
* apply resolved display timezone fallback ([94a4124](https://github.com/joshuamyers-dev/sleeplab/commit/94a41248392a1b6fd52cfbbf89f07e4596562f93))
* assign imported events to matching session blocks ([4a027f4](https://github.com/joshuamyers-dev/sleeplab/commit/4a027f400f39bc73baf1e85b2ed74793b30d2233))
* avoid guessing leak scoring manufacturer ([61d009d](https://github.com/joshuamyers-dev/sleeplab/commit/61d009dc98116d43ba2e63cef9c8f3bb5bce9b4f))
* **ci:** align frontend workflow and lockfile ([64b9174](https://github.com/joshuamyers-dev/sleeplab/commit/64b9174a043da0097fb6ab82248aa78c45153e9b))
* **ci:** automerge dependabot ([2562844](https://github.com/joshuamyers-dev/sleeplab/commit/256284483492ea519612c492a54f55099ed05669))
* **ci:** run semantic release on node 22 ([976c96f](https://github.com/joshuamyers-dev/sleeplab/commit/976c96fe76fdcfc423aa2d9e1f0b3ee51298e691))
* **deps:** bump @rolldown/binding-linux-x64-gnu from 1.0.2 to 1.1.0 ([#137](https://github.com/joshuamyers-dev/sleeplab/issues/137)) ([bc1dd74](https://github.com/joshuamyers-dev/sleeplab/commit/bc1dd742773a0c38e9b58fdb30f0d3635e760cce))
* **deps:** bump matplotlib from 3.10.8 to 3.10.9 ([#135](https://github.com/joshuamyers-dev/sleeplab/issues/135)) ([591ddbc](https://github.com/joshuamyers-dev/sleeplab/commit/591ddbc2b7d4acd14f5cc447568af6f93783c16c))
* **deps:** bump openai from 2.38.0 to 2.41.0 ([919cdfd](https://github.com/joshuamyers-dev/sleeplab/commit/919cdfd5f26e41f1ddc739341b8531af02075a9a))
* **deps:** bump python-multipart from 0.0.29 to 0.0.30 ([d5c7f86](https://github.com/joshuamyers-dev/sleeplab/commit/d5c7f866a56382f6db8705e704c5fca853700567))
* **deps:** bump react and @types/react in /frontend ([23f66a0](https://github.com/joshuamyers-dev/sleeplab/commit/23f66a02febde4b1f35275392987250dd130adef))
* **deps:** bump reportlab from 4.4.5 to 4.5.1 ([#134](https://github.com/joshuamyers-dev/sleeplab/issues/134)) ([1ad13fe](https://github.com/joshuamyers-dev/sleeplab/commit/1ad13fe1940b9a2e4e72d6a97366bdcc2a02cf35))
* **deps:** bump the npm_and_yarn group across 1 directory with 2 updates ([2330e8b](https://github.com/joshuamyers-dev/sleeplab/commit/2330e8bbfddb6e6e2b6611f7c2778bd76cf59235))
* **deps:** bump uvicorn from 0.48.0 to 0.49.0 ([6acc9fb](https://github.com/joshuamyers-dev/sleeplab/commit/6acc9fb23e14d3edde43549d2d1710c6c754b682))
* **deps:** update mcp requirement from >=1.27.1 to >=1.27.2 ([106e385](https://github.com/joshuamyers-dev/sleeplab/commit/106e38558f6a8642c5f40aa8651e985504876769))
* **frontend:** correct timezone display in MetricsChartSplit ([5232129](https://github.com/joshuamyers-dev/sleeplab/commit/5232129762bc3fab1c60b4081de0f27053f9265a))
* **frontend:** resolve pre-existing ESLint errors ([0445519](https://github.com/joshuamyers-dev/sleeplab/commit/04455199a0c4ca74730f23426845b116994d8691))
* ignore tiny blocks in metrics chart domain ([6929e74](https://github.com/joshuamyers-dev/sleeplab/commit/6929e7465480cc9248b976f13546857f2d6a7847))
* include machine timezone in date session detail ([23f92c7](https://github.com/joshuamyers-dev/sleeplab/commit/23f92c740f83c321554ea51bf0abfd5e1d203fec))
* organize test imports ([983c744](https://github.com/joshuamyers-dev/sleeplab/commit/983c7444a7aad44fdeebc7d7038a608ea5bd845d))
* polish session tag controls ([a4057d6](https://github.com/joshuamyers-dev/sleeplab/commit/a4057d621886997e7b070205311c4c520e382d36))
* preserve overnight metric blocks in chart data ([5801104](https://github.com/joshuamyers-dev/sleeplab/commit/5801104d2dfe7052737e1055e0a9ee0f8da732d2))
* read session tags without array aggregation ([42e4b4a](https://github.com/joshuamyers-dev/sleeplab/commit/42e4b4a23914e6038d3fa8211577956f8115f03c))
* regenerate frontend lock file with corrected dependency versions ([142da1a](https://github.com/joshuamyers-dev/sleeplab/commit/142da1a66c80965953f4faf3b65e9954e93ab29b))
* regenerate package-lock.json to include Storybook and capture deps ([e9f741c](https://github.com/joshuamyers-dev/sleeplab/commit/e9f741ceaaf849f5715025a0c023dceaa6140f85))
* regenerate package-lock.json to include typedoc deps ([7948965](https://github.com/joshuamyers-dev/sleeplab/commit/79489656df775565739212e7b35a8ceb7f0b9a29))
* remove tsconfig.storybook.json from build references, fix story import ([b6c53e4](https://github.com/joshuamyers-dev/sleeplab/commit/b6c53e4e835d99a1295f04510d60473ea6124106))
* request read-only scope from SleepHQ OAuth ([8294cf9](https://github.com/joshuamyers-dev/sleeplab/commit/8294cf99d75bec9ce2a423fb092df7e76dddc762))
* restore commas in merged session detail queries ([5af8928](https://github.com/joshuamyers-dev/sleeplab/commit/5af8928d97767996d24f73b5f6ad9f55eb818039))
* restore frontend lockfile for rolldown ci ([661da8e](https://github.com/joshuamyers-dev/sleeplab/commit/661da8e112fd4f3c0c71efb39489cc467340e1ee))
* restore missing comma in package.json scripts after merge conflict ([af9289a](https://github.com/joshuamyers-dev/sleeplab/commit/af9289afd115223672f94d1aed8cc06467f818af))
* restore timedelta import dropped during merge conflict resolution ([70f0634](https://github.com/joshuamyers-dev/sleeplab/commit/70f06343bc5911e8ddaca0682d51f0acacda8927))
* **storybook:** remove nested routers and duplicate AuthProvider from stories ([f76e69d](https://github.com/joshuamyers-dev/sleeplab/commit/f76e69db559e7e44c1b6a737d21edf3340da90dd))
* **storybook:** resolve Vite version split causing 500 on iframe.html ([98b75d6](https://github.com/joshuamyers-dev/sleeplab/commit/98b75d64785ac8ea09a53c32c95d60a40f1585ef))
* **storybook:** supply real mock props to component stories and skip nested router in App ([83844fe](https://github.com/joshuamyers-dev/sleeplab/commit/83844fe254f029d0e6c3cb24446ae533ad7cc4ac))
* surface failed import job status ([afed224](https://github.com/joshuamyers-dev/sleeplab/commit/afed224627b8f7935bb089e34e5792ecfa95ed2e))
* track lightningcss linux workspace binding ([81ec991](https://github.com/joshuamyers-dev/sleeplab/commit/81ec991fa5c4bdb1f873e87d467f00ce56672d9f))
* track linux frontend workspace bindings ([e76eb5a](https://github.com/joshuamyers-dev/sleeplab/commit/e76eb5a319e95caab6eb1956425dc180b014de6e))
* update lock file to match package.json dependencies ([cb5f88e](https://github.com/joshuamyers-dev/sleeplab/commit/cb5f88e0c32541b242ef697250be159f42438dc2))
* update overview mobile layout ([96991d6](https://github.com/joshuamyers-dev/sleeplab/commit/96991d619c47dd427bf329dd61be97252a104139))
* use builtin list for tag insights response ([f7a7288](https://github.com/joshuamyers-dev/sleeplab/commit/f7a72889e3dc9ca5928c37b425c4c4be397700f4))
* use builtin optional type for therapy score delta ([ecf7c48](https://github.com/joshuamyers-dev/sleeplab/commit/ecf7c485b3d03f0b7b9c73e8176ce30f2368b5ef))
### Features
* add computed therapy score ([bcc7042](https://github.com/joshuamyers-dev/sleeplab/commit/bcc70421481d89023f1ba5216b91480d8d6bf62c))
* add session notes ([87478f8](https://github.com/joshuamyers-dev/sleeplab/commit/87478f8c6782618fdeca94d8ddd6e808c96b3580))
* add session tags ([b7e3eb9](https://github.com/joshuamyers-dev/sleeplab/commit/b7e3eb9eb628e8418880e9a3e19888709b6ffe03))
* add tag insights ([3a4ee6d](https://github.com/joshuamyers-dev/sleeplab/commit/3a4ee6d2604da0c06e16d22e95dfd6e3ae42c6eb))
* **docs:** add automated Storybook story screenshot capture ([e7cca45](https://github.com/joshuamyers-dev/sleeplab/commit/e7cca45c861b553f79ac5f0e957a63f1536b82c3))
* **docs:** add automated UI screenshot capture system ([50fbe7c](https://github.com/joshuamyers-dev/sleeplab/commit/50fbe7c523d7565a7697766fceed182c4a89fa04))
* **docs:** include Storybook story screenshots in make docs-capture ([70ce225](https://github.com/joshuamyers-dev/sleeplab/commit/70ce22511a795d4bca2236ced782908f4282a194))
* fetch all SleepHQ history in 30-day batches with 90s delay ([c32fcad](https://github.com/joshuamyers-dev/sleeplab/commit/c32fcadd44d90b9669135d18981240b85069b667))
## [1.2.1](https://github.com/joshuamyers-dev/sleeplab/compare/v1.2.0...v1.2.1) (2026-05-28)
### Bug Fixes
* **release:** expose semantic release outputs ([3239e8f](https://github.com/joshuamyers-dev/sleeplab/commit/3239e8f1386049ae262dae356b23629cf26ef3d6))
# [1.2.0](https://github.com/joshuamyers-dev/sleeplab/compare/v1.1.0...v1.2.0) (2026-05-28)
### Bug Fixes
* **compose:** pass registration flag to app ([54638c9](https://github.com/joshuamyers-dev/sleeplab/commit/54638c96f5eec3f5cea9249afc379e99880cad36))
* **docs:** correct sleephq env examples ([226133e](https://github.com/joshuamyers-dev/sleeplab/commit/226133e5875e387c3e8c4254cc2d6af97ad5091a))
### Features
* **auth:** allow disabling user registration ([f9ed426](https://github.com/joshuamyers-dev/sleeplab/commit/f9ed42600019c35e9d9039b58fc96acd5f282206))
# [1.1.0](https://github.com/joshuamyers-dev/sleeplab/compare/v1.0.1...v1.1.0) (2026-05-27)
### Bug Fixes
* adjust semantic release schedule ([534ee8d](https://github.com/joshuamyers-dev/sleeplab/commit/534ee8d1cd9a4b28484cb7e499f8c97cf006ce37))
* **ci:** add manual workflow option for semantic releases ([a582d1a](https://github.com/joshuamyers-dev/sleeplab/commit/a582d1a5a70a3aea6b69a6140de47f85b2777f95))
* **deps:** bump openai from 1.109.1 to 2.38.0 ([#84](https://github.com/joshuamyers-dev/sleeplab/issues/84)) ([0ca0e41](https://github.com/joshuamyers-dev/sleeplab/commit/0ca0e41f7515c87a8c427ccfd3246bc8519d61bb))
* **deps:** bump pyjwt from 2.10.1 to 2.13.0 ([#83](https://github.com/joshuamyers-dev/sleeplab/issues/83)) ([95586ff](https://github.com/joshuamyers-dev/sleeplab/commit/95586ff70b568fbe36042e27636402b6e848b442))
* **deps:** bump sqlalchemy from 2.0.46 to 2.0.50 ([#88](https://github.com/joshuamyers-dev/sleeplab/issues/88)) ([a1377ea](https://github.com/joshuamyers-dev/sleeplab/commit/a1377eac2accb025692f2876a6dbeb3ca0d0e204))
* **frontend:** top padding on cards ([de16099](https://github.com/joshuamyers-dev/sleeplab/commit/de160992d53eed40126c23b943e7ae79a804cb3e))
* sync frontend lockfile for vitest ([11fb215](https://github.com/joshuamyers-dev/sleeplab/commit/11fb215c55de5868eae6f116f0854970767ddf44))
### Features
* add O2 ring import ([af81dda](https://github.com/joshuamyers-dev/sleeplab/commit/af81ddae7a8d78fbad295b2a02d41c92f09d5a85))
* add O2 ring import issue tracking ([#77](https://github.com/joshuamyers-dev/sleeplab/issues/77)) ([59ac83f](https://github.com/joshuamyers-dev/sleeplab/commit/59ac83fe8d413e39524f4cb80d1aa9adc5c877a6))
* improve AI analysis prompts and caching ([6142875](https://github.com/joshuamyers-dev/sleeplab/commit/6142875b42f5a32dcfc3eed8c8b19234e00477ff))
## [1.0.1](https://github.com/joshuamyers-dev/sleeplab/compare/v1.0.0...v1.0.1) (2026-05-26)
### Bug Fixes
* remove hardcoded local path from api/project.json ([d5a57c2](https://github.com/joshuamyers-dev/sleeplab/commit/d5a57c231642269cb6036aba3f0a53cf841b4c04))
# 1.0.0 (2026-05-26)
### Bug Fixes
* add missing import pytest ([b118a5a](https://github.com/joshuamyers-dev/sleeplab/commit/b118a5aee765a3357475486235447d26d8387ab4))
* add POST response check in inferred equipment test ([062a8d2](https://github.com/joshuamyers-dev/sleeplab/commit/062a8d2f5063d694515252c1bdef491d32daeb8e))
* add session_id and pld_start_datetime to sessions test seed ([36847a8](https://github.com/joshuamyers-dev/sleeplab/commit/36847a842f16cb5f54ed98eb5d5cd116986186d0))
* aggregate all blocks per night in session list and detail ([90e826a](https://github.com/joshuamyers-dev/sleeplab/commit/90e826a2f5f4251d5b9c70b183ff4718e5a92af5))
* aggregate all blocks per night in session list and detail ([5372ac8](https://github.com/joshuamyers-dev/sleeplab/commit/5372ac84603dd9affd51afb0f963d262ea87d655))
* break metrics chart line at mask-off gaps, trim ramp-up points ([d6a9dca](https://github.com/joshuamyers-dev/sleeplab/commit/d6a9dca75f7ff48ad36a8e8a3ea0eaee644a65f4))
* break metrics chart line at mask-off gaps, trim ramp-up points ([190aa44](https://github.com/joshuamyers-dev/sleeplab/commit/190aa447bf1cac417bd092b617637268a31c6716))
* **build:** add git to Dockerfile and fix recharts formatter types ([cf391a8](https://github.com/joshuamyers-dev/sleeplab/commit/cf391a86a46362a69254117211f6a844cf6b4a16))
* **build:** add git to Dockerfile and fix recharts formatter types ([0281352](https://github.com/joshuamyers-dev/sleeplab/commit/028135299c6a13b6ee34d5a38aa3ed98fb25811c))
* **build:** add git to Dockerfile and fix recharts formatter types ([e0d8214](https://github.com/joshuamyers-dev/sleeplab/commit/e0d8214380ff1c07452664352b287069be8cbb2f))
* **build:** add git to Dockerfile and fix recharts formatter types ([1a98726](https://github.com/joshuamyers-dev/sleeplab/commit/1a98726bfa47fc58a5f444ce2fa8c4457f543a04))
* **build:** add git to Dockerfile and fix recharts formatter types ([5e1ae1e](https://github.com/joshuamyers-dev/sleeplab/commit/5e1ae1ec1f0119e16a9b0dbe4b4bb6bfa4162258))
* **build:** add git to Dockerfile and fix recharts formatter types ([fb00c34](https://github.com/joshuamyers-dev/sleeplab/commit/fb00c3435e29fbafbbeb78fd2784a040bfb4afc0))
* **build:** add git to Dockerfile and fix recharts formatter types ([b631113](https://github.com/joshuamyers-dev/sleeplab/commit/b6311138932cbbbc0c871dc7748f85049dbde982))
* **build:** add git to Dockerfile and fix recharts formatter types ([264b0d4](https://github.com/joshuamyers-dev/sleeplab/commit/264b0d42d8be4c2d86a6184ec0c0b40914abd2f9))
* **build:** add git to Dockerfile and fix recharts formatter types ([6cb6d99](https://github.com/joshuamyers-dev/sleeplab/commit/6cb6d99f380f186cb2ffb2c7e4b92c408ef024be))
* correct test assertions and fixture dependency chain ([adb12d8](https://github.com/joshuamyers-dev/sleeplab/commit/adb12d89a07eb8142474c390832c1a4dcc1cb191))
* dark mode select dropdown colors ([09ca80f](https://github.com/joshuamyers-dev/sleeplab/commit/09ca80f5f8df586e494b415756261e366de84c86))
* **db:** make arousal_count nullable for SleepHQ imports ([d820592](https://github.com/joshuamyers-dev/sleeplab/commit/d820592cf77b97b7d66e223a716f8f6f53bdb76f))
* **deploy:** point nixpacks start command at server:app to run migrations ([c9d9e94](https://github.com/joshuamyers-dev/sleeplab/commit/c9d9e94f67e87bd39f21bc2617f2c2184b6ceb57))
* **deps:** bump fastapi from 0.124.4 to 0.136.3 ([#67](https://github.com/joshuamyers-dev/sleeplab/issues/67)) ([522082e](https://github.com/joshuamyers-dev/sleeplab/commit/522082e5e41d41a640b281e29e73a5c548df31e2))
* **deps:** bump psycopg2-binary from 2.9.10 to 2.9.12 ([#63](https://github.com/joshuamyers-dev/sleeplab/issues/63)) ([11f555b](https://github.com/joshuamyers-dev/sleeplab/commit/11f555b919ee90ebd9c377ae4edd35305bf96042))
* **deps:** bump python-multipart from 0.0.27 to 0.0.29 ([#65](https://github.com/joshuamyers-dev/sleeplab/issues/65)) ([b552e47](https://github.com/joshuamyers-dev/sleeplab/commit/b552e4739e04ca52b87d62ed6496299e973b0711))
* **deps:** bump react-dom from 19.2.4 to 19.2.6 ([#70](https://github.com/joshuamyers-dev/sleeplab/issues/70)) ([663494c](https://github.com/joshuamyers-dev/sleeplab/commit/663494cf97fdd31f44c2431adc0b570f6986b5d4))
* **deps:** bump recharts from 3.7.0 to 3.8.1 ([#66](https://github.com/joshuamyers-dev/sleeplab/issues/66)) ([e03cec1](https://github.com/joshuamyers-dev/sleeplab/commit/e03cec10836b672005f51e0827b629f060a93ef8))
* **deps:** bump uvicorn from 0.33.0 to 0.48.0 ([#68](https://github.com/joshuamyers-dev/sleeplab/issues/68)) ([e5d6939](https://github.com/joshuamyers-dev/sleeplab/commit/e5d69396c6f8f2a3f434af46e7ebf4ba4d1f1b64))
* **deps:** replace python-jose with PyJWT to restore CI ([3fe7d25](https://github.com/joshuamyers-dev/sleeplab/commit/3fe7d252ad462fecef83e18766c7169b7110ff82))
* **deps:** update mcp requirement from >=1.0.0 to >=1.27.1 ([#62](https://github.com/joshuamyers-dev/sleeplab/issues/62)) ([fbf48c2](https://github.com/joshuamyers-dev/sleeplab/commit/fbf48c246a6d41813f11ace8b5b7499837fc6235))
* **docker:** add httpx and sleephq-client to api/requirements.txt ([dfa5936](https://github.com/joshuamyers-dev/sleeplab/commit/dfa5936a00d8971a22c3d07f00b90acba611bee1))
* dynamic MIN_PRESSURE from data instead of hardcoded 4.0 ([8bb7f10](https://github.com/joshuamyers-dev/sleeplab/commit/8bb7f10296b23c5622332b097b41bc9784f567a4))
* dynamic pressure Y-axis minimum set to data min minus 2cd ([54140c3](https://github.com/joshuamyers-dev/sleeplab/commit/54140c356bdc94a4be33aace31d08e06efbd66b6))
* dynamic pressure Y-axis with evenly spaced ticks ([f425d9a](https://github.com/joshuamyers-dev/sleeplab/commit/f425d9a2395b70622184aa759aeb8bf2520ca5ad))
* exclude blocks under 10 minutes from night aggregation ([c305d84](https://github.com/joshuamyers-dev/sleeplab/commit/c305d84bef9e0443d3dcc571c0439e0961770bd4))
* handle timezone for imported metric timestamps ([0f61145](https://github.com/joshuamyers-dev/sleeplab/commit/0f6114596938882ac015db72271df4ae86300833))
* ignore .claude session notes and local settings only ([3ffb762](https://github.com/joshuamyers-dev/sleeplab/commit/3ffb7623c332245c5d3ac7a8bb58642f6f9dfba3))
* ignore .claude session notes and local settings only ([db17b20](https://github.com/joshuamyers-dev/sleeplab/commit/db17b2009216312abdca6321943afee84bda06c4))
* ignore .claude session notes and local settings only ([10c7923](https://github.com/joshuamyers-dev/sleeplab/commit/10c79237ad29206141e3166552b957340e380071))
* ignore .claude session notes and local settings only ([fd0b241](https://github.com/joshuamyers-dev/sleeplab/commit/fd0b2419e72fada60d60417bd1ce084917ebec44))
* ignore .claude session notes and local settings only ([e3e4593](https://github.com/joshuamyers-dev/sleeplab/commit/e3e459321f7d196be849abbc44a764996da7c34c))
* ignore .claude session notes and local settings only ([2cbbd60](https://github.com/joshuamyers-dev/sleeplab/commit/2cbbd600916c2533468c68a4f2226f640353a06a))
* **import:** enforce per-user DB credentials only, clarify one-time import UX ([d380495](https://github.com/joshuamyers-dev/sleeplab/commit/d380495c04e0888b14794a8ad721282dc6679694))
* **import:** fall back to env vars for SleepHQ credentials in trigger ([1f8596e](https://github.com/joshuamyers-dev/sleeplab/commit/1f8596e76e7b6eddf0db0ed031bfdc0dc28da6cb))
* include equipment fields in date session lookup ([db833ec](https://github.com/joshuamyers-dev/sleeplab/commit/db833ece9dc93befc743f96b214d84f5f88ba2f5))
* **lint:** sort imports in test_import.py ([d4c5bd6](https://github.com/joshuamyers-dev/sleeplab/commit/d4c5bd6e86226e994780adddebf203d9ceb6c59c))
* **models:** make arousal_count Optional to match nullable DB column ([2e2e7af](https://github.com/joshuamyers-dev/sleeplab/commit/2e2e7af7af087838df5cfd5937f7ddd7c05cdf88))
* **models:** make arousal_count Optional to match nullable DB column ([ddf36c7](https://github.com/joshuamyers-dev/sleeplab/commit/ddf36c7bb4fecdc17f4fe55596edcf47be963a56))
* **models:** make SessionSummary.arousal_count Optional ([0b3c459](https://github.com/joshuamyers-dev/sleeplab/commit/0b3c4593e1fb3f559e4a12b0f6130dfeab996006))
* remove duplicate backend key breaking CI YAML ([9d00601](https://github.com/joshuamyers-dev/sleeplab/commit/9d00601def64f127b4c053ccb8d2c745fc427c0f))
* remove has_client_secret assertions, skip test_with_credentials if sleephq missing ([55a5abd](https://github.com/joshuamyers-dev/sleeplab/commit/55a5abd92cbbeba992ba06b47fd111dca9603375))
* remove has_client_secret assertions, skip test_with_credentials if sleephq missing ([4232637](https://github.com/joshuamyers-dev/sleeplab/commit/42326372f5a3fd3d1289e452072db0737b30bead))
* remove MemoryRouter wrapper from App test (App has its own BrowserRouter) ([514dffa](https://github.com/joshuamyers-dev/sleeplab/commit/514dffaa9b4388ef25d47ef4784197683b9f95dc))
* remove unnecessary nx target ([dbc8a38](https://github.com/joshuamyers-dev/sleeplab/commit/dbc8a38e0e9e6c3dad9e7a257bc272c28d1b2958))
* replace mask with cushion and headgear in InferredEquipment model ([78b90b6](https://github.com/joshuamyers-dev/sleeplab/commit/78b90b631fa907bd688746562987e9350e3356d2))
* **settings:** clear secret input after successful save ([7abb540](https://github.com/joshuamyers-dev/sleeplab/commit/7abb540f51b222051564c43099e476e338d29fcb))
* skip sleephq test, use .get() for inferred-equipment None fields ([df3c1f5](https://github.com/joshuamyers-dev/sleeplab/commit/df3c1f55426089d9a145ddb0c582869ab5ff58be))
* skip sleephq-dependent test, fix session detail assertion ([c9d0f6a](https://github.com/joshuamyers-dev/sleeplab/commit/c9d0f6a149440a563286152aad58c9d62e691cb0))
* skip test_with_credentials if sleephq missing ([1a825ee](https://github.com/joshuamyers-dev/sleeplab/commit/1a825eee9c652d9fd6f5bbaf28a3083c96775a95))
* **test:** ruff lint — remove unused imports, use datetime.UTC alias ([4ea2df8](https://github.com/joshuamyers-dev/sleeplab/commit/4ea2df8f5e6830e7d0429122528e0edb182e085d))
* **tests:** update trigger tests for SLEEPHQ_ENABLED gate ([4754b2d](https://github.com/joshuamyers-dev/sleeplab/commit/4754b2d2f5235147ada49850d5252d532c759a46))
* **ui:** clear spo2 state on session navigation ([e7e4422](https://github.com/joshuamyers-dev/sleeplab/commit/e7e44224cd737cd2ac54db8e3ea83ef6d45cd643))
* use PLD timestamp for session_id and start_datetime ([8ac2e23](https://github.com/joshuamyers-dev/sleeplab/commit/8ac2e232ecde01dbbc39813052f86b728dc0c9c7))
* **wearable:** catch TimeoutException in adapters; handle 5xx as empty 200 ([49cfea5](https://github.com/joshuamyers-dev/sleeplab/commit/49cfea5480319863ff04260343a5db2e1570593b))
* **wearable:** fix CI TypeScript errors and 401-test mock ([10d7930](https://github.com/joshuamyers-dev/sleeplab/commit/10d7930df2999a04511c31d118112c972b96c594))
* **wearable:** fix remaining TS error in WearableSleepSummaryChart formatter ([6c3d47d](https://github.com/joshuamyers-dev/sleeplab/commit/6c3d47de5f641c5313666a072bf3a73f9ec5842c))
* **wearable:** fix TS2322 in WearableSleepSummaryChart tooltip formatter ([bdbbf4c](https://github.com/joshuamyers-dev/sleeplab/commit/bdbbf4c59ea82c9e256dbe7ec076dd18b9284556))
* **wearable:** quality fixes — timestamp safety, docstrings, 401/403 messages, tests ([a452f0d](https://github.com/joshuamyers-dev/sleeplab/commit/a452f0d434c1ef28cb8dbb7a7a1ea2ca158e6305))
* **wearable:** remove any cast in hypnogram tooltip; explicit ISO sort in SpO2Chart ([5f9efe6](https://github.com/joshuamyers-dev/sleeplab/commit/5f9efe61360733647e99315d846bc8cddda5416f))
### Features
* **#5:** local DATALOG server-path import ([50e46f4](https://github.com/joshuamyers-dev/sleeplab/commit/50e46f440245c791e56ec0ab5da82496ad9faa0f)), closes [#5](https://github.com/joshuamyers-dev/sleeplab/issues/5)
* add advanced trends overview ([94a3569](https://github.com/joshuamyers-dev/sleeplab/commit/94a35691800345b09ad4866594ebcfb6f948df56))
* add danger zone to settings to delete all session data ([76c8db3](https://github.com/joshuamyers-dev/sleeplab/commit/76c8db3f8e07426a3f7a5898ade9a7cbbe267129))
* add HTTP MCP server and windowed slice endpoint ([79d9983](https://github.com/joshuamyers-dev/sleeplab/commit/79d9983941b1478d66851d7779c9d1238ca1353b))
* add internal timezone and llm settings ([e15a2f4](https://github.com/joshuamyers-dev/sleeplab/commit/e15a2f4fcd131c0467ef278251dbd48c6c5b7f51))
* add SleepHQ API history importer ([405aa1c](https://github.com/joshuamyers-dev/sleeplab/commit/405aa1c6d736d6693a1a91a52951d929c518ae7a))
* add snore and min ventilation panels, dynamic ticks, mL/s leak unit ([f061951](https://github.com/joshuamyers-dev/sleeplab/commit/f0619512be5b3c564bb3df2858d9ab43743b94d2))
* add uv support alongside pip ([dd33a3c](https://github.com/joshuamyers-dev/sleeplab/commit/dd33a3c655573b209f4ba176b3e533dcdb4399bd))
* automated versioning and release pipeline with semantic-release ([fb24beb](https://github.com/joshuamyers-dev/sleeplab/commit/fb24beb3eb6008aec3ed68c90fa6b215d38ed2e8)), closes [#40](https://github.com/joshuamyers-dev/sleeplab/issues/40) [#47](https://github.com/joshuamyers-dev/sleeplab/issues/47)
* date-based session URLs (/sessions/YYYY-MM-DD) ([4ecf176](https://github.com/joshuamyers-dev/sleeplab/commit/4ecf176aae3173aba04c345705ea17dd824506bb))
* display app version and update status ([4fdacac](https://github.com/joshuamyers-dev/sleeplab/commit/4fdacac01c9871f54efa320aa36a145b4c6f4a74))
* **equipment:** add equipment catalog, session machine settings, and humidification tracking ([d4b9c92](https://github.com/joshuamyers-dev/sleeplab/commit/d4b9c92d58f05b2d3e4ae927d88d00ee8a823373))
* **equipment:** add equipment catalog, session machine settings, and humidification tracking ([d6c046b](https://github.com/joshuamyers-dev/sleeplab/commit/d6c046b88a3ea00ced07a4730b2605944928b748))
* **equipment:** add equipment CRUD API, catalog UI, and session detail display ([fce6ace](https://github.com/joshuamyers-dev/sleeplab/commit/fce6ace3549d5fa8b86dee51041e44f181ac6276))
* **equipment:** split mask type into cushion and headgear with US insurance replacement defaults ([619801c](https://github.com/joshuamyers-dev/sleeplab/commit/619801c520a541c8d8cab69f10127784321ca14c))
* gate SleepHQ UI and trigger on SLEEPHQ_ENABLED env var ([05cab50](https://github.com/joshuamyers-dev/sleeplab/commit/05cab5075c1ad15322c206676a392c5dbcfa057a))
* **import:** add /import/settings and /import/trigger routes ([5142cc1](https://github.com/joshuamyers-dev/sleeplab/commit/5142cc127614f2acf5f6e2fb097e8a36b05fb6d1))
* **import:** add per-user webhook endpoint POST /import/webhook/{userId} ([1e6a9a5](https://github.com/joshuamyers-dev/sleeplab/commit/1e6a9a558de7fc23c2419c73b738b40eac1d3070))
* **license:** adopt GPLv3 with LICENSE, NOTICE, and README acknowledgements ([687d94e](https://github.com/joshuamyers-dev/sleeplab/commit/687d94ed5b7068c4f627f3d10f1b4d49479a0b27))
* MACHINE_TZ and DISPLAY_TZ — correct EDF timestamp storage and plot labels ([e080c4c](https://github.com/joshuamyers-dev/sleeplab/commit/e080c4cfcb0b6b36001a6f2e14b59ed250de8c7f))
* make sleephq-client an opt-in runtime dependency ([ed88df1](https://github.com/joshuamyers-dev/sleeplab/commit/ed88df13fd9a6b0208c411fea6ca9ad12257bf36))
* provider-agnostic LLM backend — swap OpenAI hard-coding for factory ([ac55128](https://github.com/joshuamyers-dev/sleeplab/commit/ac551287ac21761eee90f9ffc644fdda3a11ed48))
* **settings:** add Machine ID field to SleepHQ integration form ([77d3fa5](https://github.com/joshuamyers-dev/sleeplab/commit/77d3fa571dc0fbdc4c00261095b3351c5042f7d9))
* **settings:** add Machine ID field to SleepHQ integration form ([4b54ed0](https://github.com/joshuamyers-dev/sleeplab/commit/4b54ed016ac60b4caec881c524958ca17fe7b25c))
* **settings:** add Machine ID field to SleepHQ integration form ([6f9490e](https://github.com/joshuamyers-dev/sleeplab/commit/6f9490ed92161efc4a4a6491e860e0e16740deb2))
* **settings:** add SleepHQ import trigger button; fix nullable ID clearing ([1b1a548](https://github.com/joshuamyers-dev/sleeplab/commit/1b1a5487beaf9ad4b8b7687bc6bad564ad5ad4c8))
* **settings:** mask saved SleepHQ secret, only update if changed ([d95465b](https://github.com/joshuamyers-dev/sleeplab/commit/d95465bbc6e3da90d4caf68a42a0350649573866))
* **settings:** mask saved SleepHQ secret, only update if changed ([4feac0b](https://github.com/joshuamyers-dev/sleeplab/commit/4feac0b1d6b0a72660c215bcad22af1b431e4712))
* **settings:** mask saved SleepHQ secret, only update if changed ([458a4ab](https://github.com/joshuamyers-dev/sleeplab/commit/458a4ab7510bdb7a23a84b9a10348d89b6ed3d1b))
* **settings:** mask saved SleepHQ secret, only update if changed ([eb36e56](https://github.com/joshuamyers-dev/sleeplab/commit/eb36e56205e1e13ffa9aead02b8e87d478f620cd))
* **settings:** rename SleepHQ section to SleepHQ API Import (Unofficial) ([c2ad6d9](https://github.com/joshuamyers-dev/sleeplab/commit/c2ad6d98154725195126e9de576b88a1e5bc9b80))
* SleepHQ import — working API client, frontend settings & sync button ([dca3780](https://github.com/joshuamyers-dev/sleeplab/commit/dca37807d9ea74ba86a63ee4f4fc0c1418267c63))
* **test:** add test infrastructure with CI pipeline ([d931211](https://github.com/joshuamyers-dev/sleeplab/commit/d931211b7b330a1974963639278f9344b665c0ee))
* **ui:** add SpO2 and pulse chart to session detail page ([4b94b1b](https://github.com/joshuamyers-dev/sleeplab/commit/4b94b1b4af74d7abb88bcc5fde753444395726f7))
* **ui:** add SpO2 and pulse chart to session detail page ([f437e7a](https://github.com/joshuamyers-dev/sleeplab/commit/f437e7aa71fbf5f48565a9cf334b29c39afd7e21))
* **ui:** add SpO2 and pulse chart to session detail page ([12372ba](https://github.com/joshuamyers-dev/sleeplab/commit/12372ba8c88c59827bd5c4efe592c71c7b056c6a))
* **ui:** add SpO2 and pulse chart to session detail page ([b02cbf8](https://github.com/joshuamyers-dev/sleeplab/commit/b02cbf89acfd2f07c09a77e557da575df3677f05))
* **wearable:** add /wearable/data and /wearable/summary endpoints ([70a96fb](https://github.com/joshuamyers-dev/sleeplab/commit/70a96fbbfe3056c06fbf338f64a21f7ab78a2993))
* **wearable:** add MirobodyAdapter ([9fddebb](https://github.com/joshuamyers-dev/sleeplab/commit/9fddebb5352a4c3aae2c0c56a80385ea114d0e07))
* **wearable:** add OpenWearablesAdapter with stage normalisation ([e28ef01](https://github.com/joshuamyers-dev/sleeplab/commit/e28ef01820d4c6f7d217eb0ba21f802ce608b8fb))
* **wearable:** add provider registry with get_adapter() ([445aefc](https://github.com/joshuamyers-dev/sleeplab/commit/445aefc7963ab4922ccbf5b5cd6f570ef20f3e1c))
* **wearable:** add sleep stage summary stacked bar chart to dashboard ([d5bb7e6](https://github.com/joshuamyers-dev/sleeplab/commit/d5bb7e6dc165fd2e0fe21dc526403e975629a753))
* **wearable:** add SpO2Chart with CPAP + wearable overlay and color legend ([e98e772](https://github.com/joshuamyers-dev/sleeplab/commit/e98e7722fdd0a77c169d08731a551c264fd5792a))
* **wearable:** add Wearable Data settings card ([b27af66](https://github.com/joshuamyers-dev/sleeplab/commit/b27af66a3ebba5364526ca60e9a19fe788268254))
* **wearable:** add wearable provider/credentials to import settings ([d62d1a2](https://github.com/joshuamyers-dev/sleeplab/commit/d62d1a2eb9cd33534d547f27cc4d3b5b186d7df1))
* **wearable:** add wearable_provider/base_url/api_key columns to user_import_settings ([7affc62](https://github.com/joshuamyers-dev/sleeplab/commit/7affc62774f08ad311d25c49c69589de5f5c32c8))
* **wearable:** add WearableAdapter ABC and payload dataclasses ([27e7374](https://github.com/joshuamyers-dev/sleeplab/commit/27e7374b535b38b748d52b81cc14928ab980ac38))
* **wearable:** add WearableData/WearableDailySummary types and API methods to client.ts ([cf8ad6d](https://github.com/joshuamyers-dev/sleeplab/commit/cf8ad6d57d185bd497b0729ea298e5758e63209c))
* **wearable:** add WearableSleepStageChart hypnogram component ([f5b7784](https://github.com/joshuamyers-dev/sleeplab/commit/f5b7784dc52faa8d93dbc6588509433d9948a76a))
* **wearable:** render SpO2Chart with wearable overlay and sleep stage hypnogram on session detail ([e2e7389](https://github.com/joshuamyers-dev/sleeplab/commit/e2e73890f1da823383e13f38dd519210bebbb39b))
* **wearable:** WEARABLE_ENABLED flag and server-level default provider env vars ([cd0c30e](https://github.com/joshuamyers-dev/sleeplab/commit/cd0c30e1d049ba62de72f5f8d2aa982efa827e96))