Add CalVer versioning and rebuild the song page's fact line
Versions are YYYY.MM.DD-N, injected with -ldflags from a git tag, so no file in the repo carries the number and a local build honestly says dev. The version shows in the footer, the startup log and /healthz. The song page's metadata was five different kinds of fact — artist, genre, duration, provenance and a badge about the viewer — in one flat run with two competing pills. Now the artist has its own line in the display face, and the facts sit in four labelled cells like the spine of a cassette insert. The submitter links to their profile, "oma kappale" became "lähetti: sinä", and the clock time is gone: nobody needs the minute a song was published.
This commit is contained in:
@@ -19,13 +19,27 @@ Invite-only, no public registration. Built for about ten friends.
|
||||
| [docs/theme.md](docs/theme.md) | The visual language: tokens, type, and what differs from the theme handoff |
|
||||
| [docs/later.md](docs/later.md) | Deliberately not in v1, with the reasoning kept |
|
||||
|
||||
## Branches
|
||||
## Branches and releases
|
||||
|
||||
- **`main`** — released code only. Every commit on it is something that ran in production, or is
|
||||
meant to. Tagged at each release.
|
||||
- **`dev`** — current development, and whatever nightly builds get made. Work happens here and
|
||||
reaches `main` by merge at release time.
|
||||
|
||||
Versions are **CalVer: `YYYY.MM.DD-N`**, where `N` is the build number for that day, starting at 1.
|
||||
The version is injected at build time, so no file in the repo carries it:
|
||||
|
||||
```sh
|
||||
git switch main && git merge --no-ff dev
|
||||
git tag 2026.07.31-1
|
||||
VERSION=$(git describe --tags --exact-match) docker compose build app
|
||||
docker compose up -d app
|
||||
```
|
||||
|
||||
A plain `go build` reports `dev`, which is the honest answer for a local binary. The running
|
||||
version appears in the footer, in the startup log line, and in `GET /healthz` — so "what is
|
||||
actually deployed" is answerable without an SSH session.
|
||||
|
||||
The app never sends email — there is no verification, no password reset link, and no notifications.
|
||||
Members have an address because it is their login and because mail is a planned feature.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user