Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 13:05
· 99 commits to main since this release
d015d94

What's Changed

Breaking changes

  • feat(location)!: a place is one object with one pair of names by @aleskiontherun in #213
  • feat(export)!: the check-in details are core Diver members, and an import applies them as edited in the preview by @aleskiontherun in #214
  • feat(dives)!: the profile axis is milliseconds, and a recording carries its readouts and its salinity by @aleskiontherun in #219
  • feat(dives)!: a dive may carry only its date by @aleskiontherun in #220
  • feat(contacts)!: contacts are records, and training centers become them by @aleskiontherun in #222
  • feat(people)!: people are records on dives, trips and courses, and an instructor is one by @aleskiontherun in #228
  • feat(dives)!: a sighting carries a count and a note by @aleskiontherun in #231
  • feat(files)!: dive-computer files are stored compressed, and uploads stop at a per-user storage limit by @aleskiontherun in #233
  • feat(dives)!: the dive form and profile extraction read through divejson, and a profile is reproducible by reader version by @aleskiontherun in #235
  • feat(geocoding)!: place search through Photon, named by the place itself by @aleskiontherun in #240
  • feat(places)!: a place is named through its region, and the export writes its name alone by @aleskiontherun in #245
  • feat(places)!: a place has one name, and full_name leaves the wire and the mapper by @aleskiontherun in #250
  • feat(maps)!: map tiles are stored once for every account, in place of per-record pictures by @aleskiontherun in #268
  • feat(user)!: check-in details are their own object, with an email and lists of contacts and policies by @aleskiontherun in #275
  • feat(export)!: the diver carries no handle, in DiveJSON or as a UDDF owner's name by @aleskiontherun in #280

Features

  • feat(user): a portrait beside the avatar, and both keep their originals by @aleskiontherun in #215
  • feat(export): the portrait's original travels in DiveJSON, and an import offers it in the preview by @aleskiontherun in #218
  • feat(email): renewal reminders and a year in review by @aleskiontherun in #224
  • feat(checkin): a link a dive shop opens by @aleskiontherun in #226
  • feat(auth): join links admit by channel, and daily totals of accounts and sign-ins by @aleskiontherun in #234
  • feat(dives): a dive carries its rating, tags, type, conditions, entry type and boat name by @aleskiontherun in #237
  • feat(import): an import takes many files at once, pairs one recording's exports and keeps the originals by @aleskiontherun in #241
  • feat(trips): a trip read counts its dives, their dive sites and their species by @aleskiontherun in #242
  • feat(dives): each GET /dives row carries its depth outline by @aleskiontherun in #249
  • feat(trips): a trip read carries its deepest dive's max_depth by @aleskiontherun in #254
  • feat(sites): a dive site carries its other names, external ids, depth range, water type, altitude, entry types and tags, and counts its dives by @aleskiontherun in #256
  • feat(maps): dive and trip map pictures, drawn on first view and stored by @aleskiontherun in #253
  • feat(import): number imported dives as the dive form would by @aleskiontherun in #259
  • feat(dives): a parsed file returns the rest of the dive it states by @aleskiontherun in #261
  • feat(import): a Subsurface site arrives with its pin, its notes and its locality by @aleskiontherun in #263
  • feat(species): the caller's figures for one species, sites included by @aleskiontherun in #264
  • feat(import): a Suunto pair attaches its JSON first, and an Ocean exit is the fix its receiver vouched for by @aleskiontherun in #265
  • feat(sites): a dive site names its map picture, drawn as a one-site dive by @aleskiontherun in #266
  • feat(pickers): thin lookup rows per resource, ordered by last use by @aleskiontherun in #270
  • feat(pickers): lookup rows carry what the dive form fills in by @aleskiontherun in #271
  • feat(trips): a trip's dives with its candidates, their counts, and a bulk add by @aleskiontherun in #272
  • feat(dives): each dive list row carries its recording count by @aleskiontherun in #273
  • feat(dives): the cylinder volumes a diver used most recently by @aleskiontherun in #274
  • feat(species): suggest species to the diver, their sites' first, then their own, then the catalog by @aleskiontherun in #276
  • feat(admin): curate species photos — list the catalog, hide or pin a photo, refuse narrow sources by @aleskiontherun in #278
  • feat(dives): a dive's figures are its time in the water, from the reader, the merge and a backfill of the untouched ones by @aleskiontherun in #279
  • feat(trips): GET /user/trip-places lists every place the caller's trips went by @aleskiontherun in #281
  • feat(users): dive-stats counts the diver's dive sites and names their first and last dive days by @aleskiontherun in #282

Fixes

Other changes

  • refactor(user): the avatar's old columns go by @aleskiontherun in #216
  • test: the note-code docstring states no count by @aleskiontherun in #217
  • refactor(support): the contact form posts to /support by @aleskiontherun in #221
  • refactor(contacts): the deploy-skew shim comes out by @aleskiontherun in #223
  • chore(worker): arm the renewal and year-in-review crons by @aleskiontherun in #225
  • docs(decisions): the export loader reads no payload by @aleskiontherun in #229
  • refactor(people): the deploy-skew shim comes out by @aleskiontherun in #230
  • chore(deps): update docker/build-push-action action to v7.4.0 by @renovate[bot] in #211
  • chore(deps): update docker/setup-buildx-action action to v4.4.1 by @renovate[bot] in #212
  • chore(deps): update astral-sh/setup-uv action to v10.2.0 by @renovate[bot] in #232
  • docs(export): the DiveJSON export's docstring says the tags are the diver's by @aleskiontherun in #238
  • docs(presets): DiveFormField order is canonical, not the client's form order by @aleskiontherun in #239
  • docs: correct stale catalogue-filter, pagination-cap and item-cache TTL claims by @aleskiontherun in #243
  • refactor(places): drop the unmapped full_name columns by @aleskiontherun in #251
  • test: run the suite in parallel and copy migration-test databases from a template by @aleskiontherun in #258
  • test: stub a module's own wait and mail transport, not anyio's for every caller by @aleskiontherun in #267
  • chore(deps): lock file maintenance, onto SQLAlchemy 2.1 and psycopg 3 by @renovate[bot] in #252
  • docs(decisions): point the attribution parser at its current home by @aleskiontherun in #269
  • docs(decisions): species is the picker without a lookup by @aleskiontherun in #277
  • chore(release): v0.4.0 by @opendiving-release-bot[bot] in #283

Full Changelog: v0.3.0...v0.4.0