Commit Graph

17 Commits

Author SHA1 Message Date
0c686a2e40 Document how to add and release a blog post
docs/blog-workflow.md: frontmatter/voice conventions, the draft+pubDate gate,
the daily deploy cron, publish checklists (scheduled vs immediate), and gotchas.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 21:44:12 +02:00
6776b1f337 Merge pull request 'Publish first post: Compose for widgets, RemoteViews underneath' (#3) from release-widgets-post into main 2026-07-01 19:39:21 +00:00
5da1615fa8 Publish "Compose for widgets, RemoteViews underneath"
First post released through the scheduling pipeline: draft:false with pubDate
today so the date gate passes. The other five stay draft/future-dated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 21:39:10 +02:00
6d8df36557 Merge pull request 'Target shared docker runners in scheduled-deploy' (#2) from fix-runner-label into main
Reviewed-on: #2
2026-07-01 19:32:38 +00:00
6a577c14ce Target shared docker runners in scheduled-deploy
The instance runners advertise `dind`/`docker` labels, not `ubuntu-latest`, so
the job sat queued unmatched. Point runs-on at `docker`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 21:31:11 +02:00
8d1126b5dc Merge pull request 'Add date-based post scheduling + daily deploy cron, and six draft posts' (#1) from blog-release-pipeline into main 2026-07-01 14:42:28 +00:00
6b91ef1ab4 Add six draft posts drawn from Calendula issues
Technical, journey, and philosophy posts sourced from the Calendula issue
threads, reviewed for source-accuracy, standards, ethics, and voice. All
draft:true with staggered future pubDates; they stay hidden in prod until
approved (draft:false) and due.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 16:35:06 +02:00
cecbda26b0 Add date-based post scheduling and daily deploy cron
Gate blog listings/RSS on pubDate<=now (in addition to !draft) via a shared
getPublishedPosts() helper, so a post set to draft:false with a future pubDate
publishes itself once a build runs on that day. Dev shows everything for preview.

Add .gitea/workflows/scheduled-deploy.yml: a daily cron that pings the Coolify
deploy hook so the static site rebuilds and the date gate advances. No file
mutation, no repo write access — needs a runner + COOLIFY_DEPLOY_HOOK secret.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 16:35:06 +02:00
d1acda5a93 Add Datenschutzerklärung, two blog posts, and a /uses colophon
- datenschutz.astro: DSGVO privacy policy (server logfiles, Hetzner as
  Auftragsverarbeiter per Art. 28, cookieless Umami, self-hosted fonts,
  data-subject rights, supervisory-authority complaint).
- consts.ts: extract shared LEGAL entity data; Impressum now reads from it.
- blog: "Why my calendar app has no internet permission" and
  "Open standards as a constraint, not a checkbox".
- uses.astro: colophon of the site stack, Floret apps, and self-hosted infra.
- Footer: add Uses + Datenschutz links alongside Impressum.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 14:54:49 +02:00
108e790621 Add Impressum page (§ 5 DDG) and footer link
Legally required Impressum for the Einzelunternehmen (Kleinunternehmer,
no VAT ID, not in Handelsregister). Covers § 5 DDG contact data,
§ 18 Abs. 2 MStV responsible person, § 36 VSBG, and liability/copyright
disclaimers. Linked from the footer on every page.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 14:20:43 +02:00
Jean-Luc Makiola
ec8a8f38a0 docs: analytics on, healthcheck, OG image done
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 13:59:16 +02:00
Jean-Luc Makiola
0e2ae872bf Add OG share image (1200x630, brand)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 13:57:45 +02:00
Jean-Luc Makiola
a449dbd28e docs: record Coolify deployment (live)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 13:53:55 +02:00
Jean-Luc Makiola
c0aa7153c7 Use npm install instead of npm ci in build
Astro 7's wasm32 optional deps (@emnapi/*) make npm ci's strict lock-sync
check fail across npm/node versions. npm install reconciles and builds.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 13:52:15 +02:00
Jean-Luc Makiola
eac3dddf40 Use npm 11 in build stage to match the lockfile
node:22 ships npm 10, which rejects the npm-11-generated package-lock
("Missing: @emnapi/core"). Upgrade npm to 11 before npm ci.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 13:50:36 +02:00
Jean-Luc Makiola
2665cd7f25 Build on node:22-slim (glibc) to fix musl native-dep failure
npm ci failed on node:22-alpine (musl): Astro 7's rolldown/oxc native
bindings pull @emnapi/core etc. that aren't resolved for musl. Build on
Debian glibc to match the lockfile's linux-x64-gnu deps.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 13:48:56 +02:00
Jean-Luc Makiola
074199c656 Initial site: Astro + M3 Expressive, projects, blog
Personal site & blog for jeanlucmakiola.de.

- Astro 7 static output; self-hosted Inter + JetBrains Mono (Fontsource)
- Material 3 Expressive design tokens (red accent over neutral surfaces)
- Home (hero + about + selected work + latest writing)
- /work index + per-app pages (Calendula, Agendula, floret-kit) with
  build-time Gitea release tags, brand-icon link rows, features grid,
  and an at-a-glance facts panel
- Blog via Markdown content collection; RSS, sitemap, robots, OG/SEO
- Privacy-respecting Umami analytics, env-gated (off in dev)
- Dockerfile (build -> Caddy) + Caddyfile for Coolify deploy

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 13:39:08 +02:00