Commit Graph
3 Commits
Author SHA1 Message Date
hoelee 2060aaa166 docs(project-state): truth-up four stale statuses, record the batch blockers
Deploy / build (push) Successful in 1m4s
Measured against the live site and the cron outputs today, not carried over:

- A1 (author photo) and A3 (featured strip) were still ⬜ although both shipped
  (B4 and 6e9d58b) — marked done with the evidence, /start-here left as a
  deliberate deferral.
- E3 is fully automated: the LinkedIn half was already a daily no_agent cron
  (id 35f8985f609a). 5 posts published as of today's 12:30 tick; its silence is
  not proof of work, so the output files are the record.
- E6 closed: HSTS waived by the owner ("无视吧"), re-measured still max-age=0.
  Do not re-open.
- E1: CF Web Analytics re-measured absent (0 cloudflareinsights hits, one Umami
  tag). It is an owner dashboard action — no token here can enable it and CF
  injects the beacon itself, so there is no repo change to make.
- B6 now states the real shape of the artwork work: 0 of 72 posts rolled out,
  the live site still serves the v1 images, the 3 consultant questions are
  unanswered, the rendered OG card is measured at 558 KB PNG vs 84 KB JPEG q85,
  and the promised OCR pseudo-text gate does not exist yet.
2026-10-18 16:33:21 +08:00
hoelee a41448bb4a feat(og-gen): check in the v2 art pipeline and its batch renderer
The consultant-approved "one art, four targets" work existed only in the
working tree. Commit it so the 72-post rollout is reproducible from the repo
instead of from one session's scratch files.

- template-v2.html / v2.1 / v2.2: the iteration the consultant reviewed, plus
  the accepted frosted-bento layout (736x536 card, blueprint grid, full-width
  evidence bar, self-fitting headline script that reports "FIT <n>px").
- render_sample_suite{,_v2,_v3}.mjs + fit-title-probe.mjs: how the two sample
  posts were rendered for rounds 2-4 (kept for provenance).
- generate_prompts_catalog.py + prompts_catalog.json: the 72 per-post prompts
  and their visual metaphors, extracted from the posts themselves.
- render_from_art.mjs (new): the batch renderer. One zero-text base frame per
  post -> banner 1600x900 webp (+jpg fallback), social card 1200x630 (EN and
  zh-<slug>), thumbs 800x420 and 400x210. Cards are filled from frontmatter +
  art-meta.json; a missing evidence line or a headline that never settles is a
  hard failure, never a silently-degraded card.
- art-meta.json: the per-slug input contract. Two slugs wired; 70 still need
  base art (GPU) and a hand-written evidence line.
- README: documents the pipeline, the measured format choice (558 KB PNG ->
  84 KB mozjpeg q85) and the PostList thumb-helper trap when ogImage moves to
  .jpg.

Proof the renderer reproduces the accepted output: re-rendering the two sample
posts yields banner + 800px thumb files BYTE-IDENTICAL to the consultant's
delivery (sha256 16e6a7b0, f3b29f38, c4e28291, 8095ec6c), and all four cards
report FIT, 2-3 title lines, 2 description lines, 0 overflow in x and y.
2026-10-18 16:32:58 +08:00
hoelee 7f25f9ae4d Add og-gen script: reusable per-post OG image generator
Deploy / build (push) Successful in 41s
2026-09-09 06:11:13 +08:00