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:
Esa Kataja
2026-07-31 23:38:54 +03:00
parent 2e68feedfe
commit ac2cfaebac
9 changed files with 107 additions and 23 deletions
+7 -1
View File
@@ -3,6 +3,7 @@ package main
import (
"context"
"crypto/subtle"
"fmt"
"log/slog"
"net/http"
"os"
@@ -13,6 +14,9 @@ import (
"github.com/jackc/pgx/v5/pgxpool"
)
// Set at build time with -ldflags "-X main.version=…". A local `go build` honestly says dev.
var version = "dev"
type config struct {
databaseURL string
adminUser string
@@ -67,6 +71,7 @@ type app struct {
func main() {
slog.SetDefault(slog.New(slog.NewJSONHandler(os.Stdout, nil)))
slog.Info("starting", "ctx", "startup", "version", version)
cfg := loadConfig()
ctx := context.Background()
@@ -126,7 +131,8 @@ func (a *app) memberMux() *http.ServeMux {
http.Error(w, "db down", http.StatusServiceUnavailable)
return
}
w.Write([]byte("ok"))
// The version answers "what is actually running out there" without an SSH session.
fmt.Fprintf(w, "ok %s\n", version)
})
mux.HandleFunc("GET /login", a.loginPage)