# Changelog - Veza ## [v1.0.5.1] - 2026-04-16 ### Hotfix — dev SMTP ergonomics Follow-up to the v1.0.5 smoke test: a fresh clone + `cp .env.template .env` + `make dev-full` produced a backend with `SMTP_HOST=""`, which silently short-circuits `EmailService.sendEmail` to a log-only path. New contributors hit register → "where's my verification email?" and had no obvious cue that the SMTP hookup was missing. - `veza-backend-api/.env.template`: `SMTP_HOST` / `SMTP_PORT` now default to the MailHog instance that ships with `make infra-up-dev` (`localhost:1025`, UI on `:8025`). `FROM_EMAIL` / `FROM_NAME` seeded with local-safe values. Comment rewritten to point at both the dev path and the prod override. - Also exports the duplicate variable names (`SMTP_USERNAME`, `SMTP_FROM`, `SMTP_FROM_NAME`) read by `internal/email/sender.go` — a TODO flagged for v1.0.6 to reconcile the two email services onto a single env schema. Until then both sets cover every code path. No code change, no migration, no version bump in the Go module. Pure config hotfix. ## [v1.0.5] - 2026-04-16 ### Hardening sprint — seven critical-path fixes before public opening Audit follow-up on the `register → verify → play` critical path. The app was functional on the surface but broken underneath: the player was silent, emails weren't really sent, the marketplace gave products away in production, the chat silently de-synced across pods, maintenance mode was per-pod only, orphaned tracks accumulated forever in `processing`, and the response cache was corrupting range-aware media responses. Seven targeted fixes, each with its own commit, its own tests, and no behaviour change outside scope. #### Fix 1 — Player muet (`veza-backend-api` + `apps/web`) - New `GET /api/v1/tracks/:id/stream` handler in `internal/core/track/track_hls_handler.go`. Serves the raw file via `http.ServeContent` — `Range`, `If-Modified-Since` and `If-None-Match` handled for free, so `