## Fixed
- Days older than the first entry ever logged can now be opened. Picking a
date from before anything was recorded landed on a dead end.
## Changed
- Releases are built by CI. Merging this pull request builds the image,
tags it `vYYYYMMDD-N` and `latest`, pushes both, and creates the git
tag. Nothing is built locally any more.
- `make image`, `push`, `release`, `seed`, `icons` and `vendor` are gone;
the Makefile is down from 151 lines to 71. The two rare commands are
written out in the README.
- Every push to `dev` now runs `make check` in CI.
## Deployment
No new or renamed environment variables, and `compose.yaml` is unchanged —
nothing to copy to the server this time. Pull the new image once CI reports
the build finished.
---------
Co-authored-by: Esa Kataja <[email protected]>
Reviewed-on: #4
Showstopper. Adding, editing or deleting a dish redirected to /ruoat, which stopped existing when the tab was renamed to Ruuat — every one of those actions ended on a 404. Live in v20260905-4. The tests missed it because they asserted only a 303; a redirect to a dead URL is still a 303. They now assert the target.
The page no longer jumps. Deleting a dish partway down the catalog, or opening a day in Kirjaa, sent the browser to the top. Both now patch in place via Datastar — bin, pencil, day rows, dish pills, save, delete, cancel and Näytä lisää. Links stay links and forms stay forms, so it works without JavaScript.
Non-production tabs are labelled. ENV=dev gives dev · Foodster.
Contributing guide added, and commits now take Conventional Commit types.
⚠️ Breaking: rewrite the server's .env in this deploy. Environment variables lost the FOODSTER_ prefix; the app refuses to start on an unset PASSWORD.
REPO=… TAG=latest PASSWORD=… HOST=foodster.kessinen.com
ENV=prod PUID=1000 PGID=1000 TZ=Europe/Helsinki
PUID/PGID rather than UID/GID — UID is read-only in bash and would be silently overwritten.
Co-authored-by: Esa Kataja <[email protected]>
Reviewed-on: #3