Commit Graph
6 Commits
Author SHA1 Message Date
till 09208c762f Install section for 1.1: two downloaded files and a prebuilt image instead of a clone
The page still showed git clone and the old figures (124 tests, 1,067
entries, sixteen migrations). Now: curl the compose file and .env, pull
the amd64/arm64 image, update with docker compose pull; 130 tests,
1,095 entries, seventeen migrations; the sample photo for a first try.
Checked in the browser in both languages: PDF 210.00 x 297.00 mm, no
horizontal scroll at 390 px.
2026-10-10 07:23:50 +00:00
till a495bba165 Astro 7: the demo was the last thing still on Astro 5
npm audit had one critical finding here (the Astro 5 advisories, among
them the AVIF RCE) — irrelevant at runtime for a static site served by
nginx, but the build toolchain ran it. Now 0.

Build image node 20 -> 22, and npm ci only: the old '|| npm install'
fallback meant a broken lockfile would silently build something untested.

Checked in a real browser: all six pages 200, sheet drawn, PDF download
measures 210.00 x 297.00 mm in both languages, no horizontal scroll at
390 px.
2026-10-10 06:16:20 +00:00
tillandClaude Opus 5 bfcfd14625 Impressum and Datenschutz, in both languages — and stop logging IPs
Four pages: /imprint/ and /privacy/ in English, /de/impressum/ and
/de/datenschutz/ in German, linked from the footer of the matching language.
The German version is the authoritative one; the English one says so.

Every fact in them was checked rather than assumed. The hosting section comes
from the Art. 28 processing agreement with Hetzner (EU/EEA only, DPO appointed,
breach notification, ISO 27001, BSI C5 Type 2); the server location comes from
the provider's API and is Nuremberg; the "no cookies, no third-party requests,
nothing in your browser" claim comes from loading the live page in a browser
that records every outgoing request — all of them went to this domain, with
zero cookies and an empty localStorage.

nginx now logs without the client address. The default format was writing
$remote_addr and X-Forwarded-For, so a static page that needs no personal data
at all was storing the IP of everyone who looked at it. The log keeps time,
request, status, size, referrer and user agent — enough to operate the site,
minus the field that identifies a person. Data minimisation beats a retention
policy you then have to honour.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nh4A79bbqT9dcd2inzYUdg
2026-09-15 16:02:50 +00:00
tillandClaude Opus 5 71ffedfaa4 German page, and a section for the image module
/ and /de/ are now two pages from one shared component and one copy file, with
hreflang between them and a language button in the header. Separate URLs rather
than a runtime switch: each language is linkable and indexable, and the page
still works without JavaScript. The sheet playground takes its labels from the
page, so its readout says "29,7 cm" in German and "29.7 cm" in English.

New section for the `ai` module, because the page so far read as if Klarbild
were print-only. It says plainly what the module costs and that the endpoint is
configurable, and it carries a preset builder: pick tasks and a target size,
see the exact pixels and the recipe that gets saved. It composes; it does not
generate. A generator here would need a key on a public page and would show a
picture from a model rather than anything about Klarbild — the part worth
showing is the recipe.

The target pixels come from engine/format.ts, copied verbatim from the
application like the layout files.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nh4A79bbqT9dcd2inzYUdg
2026-09-15 15:42:22 +00:00
tillandClaude Opus 5 cfe0c91e0f Re-sync the engine, point everything at GitHub
The vendored copies of printlayout.ts, paper.ts, printoversize.ts and
tokens.css now match Klarbild 1.0.0 as published. Source links go to GitHub
only — the self-hosted Gitea is the origin, not the public face. Screenshots
and the two stated counts refreshed from the current build.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nh4A79bbqT9dcd2inzYUdg
2026-09-15 15:42:22 +00:00
tillandClaude Opus 5 181060c32d Demo and product page for Klarbild
A static Astro page. The sheet playground imports the print engine
(printlayout.ts, paper.ts) verbatim from the Klarbild repository and runs it in
the browser, so the layout on screen is the application's own arithmetic rather
than a mock-up. The PDF it offers is drawn from the same placements with pdf-lib.

No backend, nothing uploaded, no third-party requests.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nh4A79bbqT9dcd2inzYUdg
2026-09-15 14:59:59 +00:00