Repository navigation
What's Changed
Breaking changes
- feat(import)!: one list of notes per dive, in a diver's words, with nothing a paired file already supplied by @aleskiontherun in #349
- feat(auth)!: a session asked for as extended idles out late, and a refresh retried inside a grace continues the session by @aleskiontherun in #358
Features
- feat(import): say which notes are about each dive row by @aleskiontherun in #346
- feat(import): put each dive's conversion findings on its row by @aleskiontherun in #347
- feat(import): keep conversion groups to findings on no dive row by @aleskiontherun in #348
- feat(contacts): a contact carries its position by @aleskiontherun in #350
- feat(dives): surface conditions fetched from Open-Meteo by the worker fill a dive's air temperature, weather and waves by @aleskiontherun in #356
- feat(dive-conditions): preview what the conditions worker would fill for a time and place by @aleskiontherun in #357
- feat(dives): a dive's fixes are the first of its files' that has one, and each file publishes its own by @aleskiontherun in #360
- feat(dives): a dive's fixes follow its files' attach order across recordings by @aleskiontherun in #361
- feat: an Idempotency-Key header makes a create safe to send twice by @aleskiontherun in #359
- feat: dive drafts, logged from either device by @aleskiontherun in #362
- feat(import): read Shearwater Cloud database and XML exports by @aleskiontherun in #368
- feat(openapi): the schema is served at /api/v1/openapi.json on every instance by @aleskiontherun in #371
- feat(auth): API keys for a diver's own tools by @aleskiontherun in #372
- feat(docs): Scalar renders /docs, and the schema declares a bearer header by @aleskiontherun in #373
- feat(dives): a profile stores, serves and exports the heart rate the computer measured by @aleskiontherun in #376
- feat(storage): the usage response counts files and the dives and certifications holding them by @aleskiontherun in #377
- feat(openapi): name the credentials each operation accepts by @aleskiontherun in #380
Fixes
- fix(import): list a line a dive's second file repeats once by @aleskiontherun in #352
- fix(deps): update dependency pillow to v13 [security] by @renovate[bot] in #353
- fix(recordings): a shared serial and a start within tolerance settle two files of one dive by @aleskiontherun in #367
- fix(deps): dnspython 2.9.0 by @aleskiontherun in #370
- fix(config): APP_NAME defaults to OpenDiving by @aleskiontherun in #374
- fix: harden token revocation, request and import bounds, and background jobs by @aleskiontherun in #383
Other changes
- build: upgrade Python to 3.15 by @aleskiontherun in #354
- docs: the iOS app is in development, not parked, and the part-for-day rule has a third copy by @aleskiontherun in #355
- test: mint fix-order rows' storage keys per write by @aleskiontherun in #363
- chore(deps): divejson 0.34.0 by @aleskiontherun in #369
- chore(deps): update astral-sh/setup-uv action to v10.3.3 by @renovate[bot] in #364
- chore(deps): update axllent/mailpit docker tag to v1.32 by @renovate[bot] in #365
- chore(deps): update docker/login-action action to v4.7.0 by @renovate[bot] in #366
- chore(renovate): rebase only on conflict by @aleskiontherun in #378
- chore(deps): lock file maintenance by @renovate[bot] in #375
- docs(routes): operation descriptions are written for a caller by @aleskiontherun in #379
- docs(openapi): describe every query parameter and request body field by @aleskiontherun in #381
- docs(openapi): title the document "{APP_NAME} API" by @aleskiontherun in #382
- chore(release): v0.7.0 by @opendiving-release-bot[bot] in #384
Full Changelog: v0.6.0...v0.7.0