synops/maskinrommet
vegard e050612dec HTML-rendering av enkeltartikler til CAS med SEO-metadata (oppgave 14.2)
Implementerer rendering-pipeline: metadata.document (TipTap JSON) → HTML
via Tera-templates → CAS-lagring → metadata.rendered oppdateres.

Nye moduler:
- tiptap.rs: Konverterer TipTap/ProseMirror JSON til HTML. Støtter
  paragraph, heading, blockquote, lister, code_block, image, hr,
  og marks (bold, italic, strike, code, link, underline).
  XSS-sikker med HTML-escaping.

- render_article jobb i jobbkøen: Henter node + samling, konverterer
  document → HTML, rendrer med Tera + tema, lagrer i CAS, oppdaterer
  nodens metadata.rendered med html_hash og renderer_version.

Endringer:
- publishing.rs: SeoData-struct med OG-tags, canonical URL, JSON-LD.
  render_article_to_cas() for full pipeline. serve_article() serverer
  fra CAS (immutable cache) hvis pre-rendret, fallback til on-the-fly.
  RENDERER_VERSION=1 for fremtidig bulk re-rendering.

- intentions.rs: Trigger render_article-jobb automatisk når belongs_to
  edge opprettes til samling med publishing-trait.

- Alle 4 artikkel-templates: SEO-block med meta description, OG-tags
  (type, title, description, url, site_name, image, published_time),
  canonical URL, RSS-link, og JSON-LD structured data.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 00:52:58 +00:00
..
src HTML-rendering av enkeltartikler til CAS med SEO-metadata (oppgave 14.2) 2026-03-18 00:52:58 +00:00
.gitignore Maskinrommet Rust-skjelett med Dockerfile (oppgave 2.1) 2026-03-17 12:20:39 +01:00
Cargo.lock Tera-templates: innebygde temaer for publisering (oppgave 14.1) 2026-03-18 00:41:54 +00:00
Cargo.toml Tera-templates: innebygde temaer for publisering (oppgave 14.1) 2026-03-18 00:41:54 +00:00
Dockerfile Skrivestien: POST /intentions/create_node (oppgave 2.4) 2026-03-17 13:09:50 +01:00