Cliff release & switch to forgejo CI #1

Merged
jfro merged 8 commits from jtk/git-cliff-release into main 2026-10-18 15:00:39 +00:00
Owner
No description provided.
The canonical repo and image registry are now git.knope.dev. CI and
image publishing move to .forgejo/workflows, adapted from rm-analyzer:
tests run in the same hexpm/elixir image the Dockerfile builds with, and
tagged releases build amd64 and arm64 natively and push a multi-arch
image to git.knope.dev/jfro/fuzzy_catalog. The GitHub workflows, which
published to ghcr.io, are removed.

Releases go through `mise run release` instead of cog: it bumps mix.exs,
regenerates CHANGELOG.md with git-cliff, then commits and pushes a signed
tag carrying the release notes.

The Dockerfile moves from bookworm-20250630 to trixie-20260610 (OTP
27.3.4.9, same Elixir), since the CI container needs trixie's Node 20
for JS actions and the old base was over a year of security fixes behind.
Tests read DATABASE_HOST so they can reach the CI postgres service.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Same toolchain as rm-analyzer, in mise, the Dockerfile and CI. The base
image moves to trixie-20261005.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The admin LiveViews checked current_scope.user, but Scope.for_user(nil)
returns nil, so without a session mount raised instead of redirecting.
Check the scope itself. Also drop nil clauses that can't match, since
their callers already default to [].

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Within existing requirements: phoenix 1.8.15, bandit 1.13, ecto 3.14,
postgrex 0.22, req 0.7, swoosh 1.29, tailwind 0.5, exqlite 0.42, and
decimal 3 (via ecto). Requirements raised for phoenix_live_view 1.2,
phoenix_live_dashboard 0.9, flop 0.29, flop_phoenix 0.27, gettext 1.0,
multipart 0.6 and dns_cluster 0.3.

Flop.Schema is a behaviour now, so Book uses it with @flop_options
instead of deriving the protocol. LiveView 1.2 no longer passes `type`
through :global attrs, so the button component includes it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Whitespace only (plus empty elements on one line), from mix format.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fix: keep secrets out of the logs
All checks were successful
CI / test (pull_request) Successful in 1m7s
3c2811b6a4
- bin/server ran `env` on every start, printing SECRET_KEY_BASE, the
  DATABASE_URL password and every provider API key to the container log.
- User.provider_token (the OIDC access token) wasn't redacted, and the
  admin LiveViews log inspect(current_scope) on mount.
- Filter "token" and "secret" request params, not just "password".
- Log requests for log-in and confirmation links at debug, since the
  request line has the token in its path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
build: release script in scripts/release.sh, not inline in mise.toml
All checks were successful
CI / test (pull_request) Successful in 34s
9ca909f600
It parses its own arguments, so it runs directly or as `mise run release`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jfro merged commit 1d89af489e into main 2026-10-18 15:00:39 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jfro/fuzzy_catalog!1
No description provided.