Repository navigation
Releases: thordin9/apotheke
Release list
v3.11.0
Note: groundwork for restoring a backup in chunks, for hosts that cap the size of a request. Chunked uploads will wait in the new folder DATA_DIR/uploads/restore (created on first use; give it as much free disk as your largest backup). Two new settings, RESTORE_CHUNK_KB (default 8192) and RESTORE_MAX_MB (default 520), set the chunk size and the largest backup. An upload without a request for an hour is removed; php spark apotheke:restore-sweep removes them from cron too. Nothing changes for the restore page or bin/restore.php.
Added
- backup: add the chunked restore upload store (#205)
Maintenance
- deploy: ci: scope the edge deploy token and tighten the storage merge (#208)
Full changelog: v3.10.0...v3.11.0
v3.10.0
Added
- frontend: count page views on getapotheke.com with Counterscale, cookieless and only after Accept; a Cookie settings button in the footer withdraws consent in one click, and the privacy page describes what is recorded (#200)
Maintenance
- adr: docs: add the P4 edge storage design (#203)
- deploy: prepare P4 edge storage for apotheke-api, off by default: D1
DBand R2STORAGEin the EU jurisdiction and theINSTALLATIONDurable Object, merged in only behindEDGE_STORAGE_READYwith host-only cookies, a validated fragment, a bounded smoke check and a flip checklist that requires the ADR-002 gate criteria (#204)
Full changelog: v3.9.2...v3.10.0
v3.9.2
Fixed
- deploy: forward CORS_ALLOWED_ORIGINS to the apotheke-api container (#202)
Full changelog: v3.9.1...v3.9.2
v3.9.1
v3.9.0
Added
- frontend: a polished, modern look across the site and the app (#199)
Full changelog: v3.8.0...v3.9.0
v3.8.0
Added
- frontend: one product across the landing page and the app (#198)
Maintenance
- docs: add self-hosting on your own Cloudflare account (#197)
Full changelog: v3.7.2...v3.8.0
v3.7.2
Fixed
- frontend: fill the privacy page operator from the footer (#196)
Full changelog: v3.7.1...v3.7.2
v3.7.1
Note: in the web UI an import is now shown only to the user who uploaded it and to admins. Other users see only their own imports in Recent imports, and opening someone else's import answers as a missing one would (404), as the API already does. Admins still see every import. Guests (visitors who are not signed in) can no longer upload a CSV import, on the page or through the API, even when the Guest role has Import: imports need a signed-in account.
Fixed
- import: scope the import pages to their uploader or an admin (#195)
Maintenance
- ci: accept Dependabot checkout bumps in deploy workflow test (#191)
- ci: bump the github-actions group and disable deploy setup-node cache (#192)
- ci: disable setup-node cache and checkout credentials in frontend jobs (#193)
- frontend: chore: cookie consent banner (#194)
Full changelog: v3.7.0...v3.7.1
v3.7.0
Upgrade note: both Docker images now run the background jobs worker (php spark jobs:work) next to the web server, as www-data. Set APOTHEKE_JOBS_WORKER=0 to turn it off, for example when another container runs the worker. If you use the compose postgres profile, this release also stops the app from changing the owner of ./data/postgres on start (see Fixed).
Added
- docker: run the background jobs worker in both images:
apotheke-jobs-workerkeepsphp spark jobs:workrunning aswww-data, restarts it after a failure with a 1–60 s backoff without stopping the web server, and stops cleanly ondocker stop;APOTHEKE_JOBS_WORKER=0turns it off (#190) - edge: set
COOKIE_DOMAIN=getapotheke.comforapotheke-api(a non-secret var inedge/wrangler.jsonc, the hosted setting from the 3.6.1 upgrade note; it applies to the consent cookie only and never to the__Host-session cookie, which may not carry aDomainattribute); self-hosting keeps the host-only default.apotheke-apisetsAPOTHEKE_JOBS_WORKER=0: on Cloudflare, jobs will run through a Cron Trigger or Queues (#190)
Maintenance
- ci: bump typescript from 5.9.3 to 7.0.2 in /edge in the edge group (#189)
Fixed
- docker: the container no longer changes the owner of
./data/postgrestowww-dataon start. With the composepostgresprofile that directory holds PostgreSQL's files inside the app's/data, so starting the app next to a new database could break its initialisation, and a later start took over the database's files. This bug is already in released versions (#190)
Full changelog: v3.6.1...v3.7.0
v3.6.1
Upgrade note: the consent cookie's domain is now the COOKIE_DOMAIN setting (empty by default: host-only) instead of a built-in getapotheke.com. Hosted installs must set COOKIE_DOMAIN=getapotheke.com (DevOps adds it to the hosted config), or the consent cookie no longer reaches the other getapotheke.com hosts. Self-hosted installs need no change. The session cookie never gets a Domain. See Cookie consent.
Fixed
- consent: configurable consent cookie domain (#188)
Full changelog: v3.6.0...v3.6.1