Commit Graph
12 Commits
Author SHA1 Message Date
austin 94bd3ab7cf Update commonmark.version to v0.30.0
build-and-publish / build (pull_request) Failing after 1m30s
2026-08-14 01:54:14 +00:00
austin 2b353f7aea Update bennett platform to v0.1.10 2026-07-27 02:57:35 +00:00
austin 3d16144f40 Inherit the platform contract tests, and extend the shared Renovate preset
PlatformWebContract asserts what this app must do because it is on the platform: an /api
path matching no controller 404s rather than returning the SPA, health is UP, the liveness
and readiness probes exist, and a client-side route forwards to the shell. That first one
shipped broken to six live sites and was found by typing a URL by hand; now it fails a
build instead.

renovate.json is three lines pointing at austin/renovate-config. The rules were copied per
repo, so they matched only by luck and a change was six edits.

Platform 0.1.9.
2026-07-23 09:46:54 -05:00
austin f1002351a0 Update bennett platform to v0.1.7 2026-07-23 12:44:07 +00:00
austin ef5680c654 Move search and the front-page decisions out of the browser into Java
Search downloaded every post to every visitor and filtered the list with String.includes,
so it could only ever match what a summary carries — a phrase from the body of a post was
unfindable, and the cost grew with each post published. It is now a query
(/api/posts/search) that searches the body too.

The home page picked 'the latest post' by taking element zero of that list, which was only
correct for as long as the API happened to return posts in that order. /api/home now
decides what leads, what counts as recent, and the tag counts, in one call.

Tag counting moves out of the controller into TagService, shared by both.

The LIKE escaping needed an explicit ESCAPE clause: there is no default escape character to
rely on, and posts are markdown full of literal backslashes — escaping with a backslash
turned a search for '%' into a search for backslashes and matched unrelated posts. Caught by
the new tests.

Also on platform 0.1.6 (contact-form header-injection fix).
2026-07-23 06:33:41 -05:00
austin 2d1366d10e Update bennett platform to v0.1.5 2026-07-23 08:28:47 +00:00
austin 0978b153ee Update bennett platform to v0.1.2 2026-07-23 02:28:35 +00:00
austin 180b80e649 Bump platform to 0.1.1 (netty HIGH CVE fixes)
Picks up netty 4.2.16.Final, patching CVE-2026-59901/-55831/-55833/-56745 which Trivy
gated on in the previous build.
2026-07-22 21:06:44 -05:00
austin f5362b04d4 Pin platform 0.1.0 release and wire up automatic propagation
- parent/BOM now point at the immutable 0.1.0 release instead of a SNAPSHOT
- declare the Gitea Maven registry so Renovate can discover new platform versions
- renovate.json: group platform bumps into one automerged PR
- CI: drop --no-cache (releases are immutable, so caching is safe again) and add
  workflow_dispatch so rebuild-all-apps.sh can force an urgent rebuild
2026-07-22 21:03:06 -05:00
austin 1b929a9125 Restore the app files (prior commit mis-scoped its tar) 2026-07-22 20:50:58 -05:00
austin 3827b615dc Add admin UI + MinIO image uploads
- Admin API: list/edit posts (incl. drafts, raw markdown), moderate comments, subscribers,
  author bio/links, and presigned image upload to MinIO (bucket is public-read for covers).
- Admin UI at /admin: post editor with cover-image upload, comment moderation, subscriber list.
- Public security switched to authenticated-paths so static assets (/images, /data) stay public.
2026-07-22 20:50:45 -05:00
austin 0c5bbaaa01 Rewrite as a Spring Boot app on the Bennett platform
Restores the real backend lost with Supabase (posts, authors, comments, subscriptions, admin) in
Postgres, seeds the existing markdown posts, and rebuilds the site as a Vite/React SPA served by
Spring — keeping the original styling (serif + tan accent) and content.
2026-07-22 20:35:51 -05:00