Kernprinzip: HTML enthält immer alle Einträge (vollständige Sitemap).
CSS-Klassen steuern die Sichtbarkeit im Classic-Layout, das NONE-Layout
(kein CSS) zeigt damit automatisch die komplette Sitemap.
Änderungen:
- Neues `_partials/menu/blog.html`: kanonisches Menü-Partial für alle
Blog-bezogenen Seiten; ersetzt die duplizierten inline menu-Blöcke in
den 4 Blog-Templates (blog/section, archive/section, archive/year,
archive/page)
- Blog-Artikel im HTML mit Klasse `nav-leaf` → im Classic ausgeblendet,
im NONE-Layout sichtbar
- Jahres-Items: immer sichtbar außer auf /blog/ (dort `off`)
- Kategorien/Tags: `off` außer auf /blog/; einzelne Kategorien/Tag-Namen
als `nav-leaf`-Items (ohne Artikel darunter)
- `tree.html`: `<strong>` innerhalb aktiver Pfad-Links für
Breadcrumb-Markierung im NONE-Layout
- `screen/menu.scss`: `nav-leaf { display: none }` und
`a.selected > strong { font-weight: normal }` (Classic bleibt visuell
unverändert)
- CLAUDE.md: Architektur des Menü-Systems dokumentiert (CSS-Marker-
Prinzip, Breadcrumb-Markierung, Blog-Menü-Logik)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Kai Moritz [Thu, 4 Jun 2026 23:36:44 +0000 (23:36 +0000)]
Resurrection-Layout: SCSS durch natives CSS ersetzen
Die SCSS-Platzhalter (resurrection.scss + resurrection/_*.scss) werden
durch eine einzige native CSS-Datei (assets/css/resurrection.css) ersetzt.
Vorteile:
- CSS Custom Properties funktionieren ohne Dart Sass direkt
- @layer für explizite Cascade-Kontrolle statt Spezifitäts-Reihenfolge
- CSS Nesting (nativ, alle modernen Browser seit 2023)
- Kein Build-Step, kein Preprocessor für das neue Layout nötig
Struktur der Datei:
- Tokens: Custom Properties auf :root[data-layout="resurrection"],
bewusst außerhalb der @layer um volle Priorität zu behalten
- @layer resurrection.{reset,base,layout,components} als Grundgerüst
- base: Überschriften in --color-accent (#2a7a2a) als Platzhalter
Dart Sass bleibt vorerst unnötig: Classic-SCSS verwendet keine Custom
Properties und funktioniert weiterhin mit LibSass.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Kai Moritz [Thu, 4 Jun 2026 23:07:30 +0000 (23:07 +0000)]
Resurrection-SCSS: CSS Custom Properties durch SCSS-Variablen ersetzen
Die eingesetzte Sass-Version (LibSass) unterstützt keine CSS Custom
Properties als Deklarationen in SCSS-Partials. _tokens.scss wird vorerst
als Dokumentations-Kommentar geführt; _typography.scss nutzt eine
SCSS-Variable ($resurrection-accent) statt var(--color-accent).
CSS Custom Properties können eingesetzt werden, sobald Hugo auf
Dart Sass umgestellt ist.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Infrastruktur für die Auswahl zwischen drei Layouts:
- Anti-FOUC-Script als erstes Element in <head>: liest localStorage und
setzt data-layout auf <html>, bevor der Browser CSS auswertet
- <html data-layout="classic"> als Fallback für Browser ohne JavaScript
- Alle Classic-Styles in screen.scss unter :root[data-layout="classic"]
gescoped — "None" zeigt Browser-Defaults, weil keine Regel mehr greift
- Neues resurrection.scss mit :root[data-layout="resurrection"]-Scope;
enthält Platzhalter-Partials (_tokens, _reset, _typography, _layout,
_components) nach moderner Best-Practice-Struktur
- _typography.scss setzt Headings auf --color-accent (#2a7a2a) als
sichtbaren Unterschied zu "None"
- Footer-Nav mit Links "Resurrection | Classic | None" (rechtsbündig,
grau, Hover/Aktiv wie andere Footer-Links)
- assets/js/main.js: markiert den aktiven Layout-Link und schaltet bei
Klick data-layout um; Wahl wird in localStorage gespeichert
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Kai Moritz [Thu, 4 Jun 2026 22:30:11 +0000 (22:30 +0000)]
Vorcompilierte statische CSS-Dateien entfernen
Die Dateien unter static/css/ (base, screen, print, tablet, phone, tiny,
ie8, seitenaufteilung, seitenkopf — jeweils .css, .min.css, .map) sind
Relikte aus der Zeit vor dem Hugo-SCSS-Build. Hugo kompiliert und
fingerprinted die Stylesheets aus assets/scss/ selbst. Die statischen
Dateien werden nicht mehr benötigt.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Kai Moritz [Thu, 4 Jun 2026 22:29:41 +0000 (22:29 +0000)]
base.scss in screen.scss zusammenführen
Die separate base.scss (geladen mit media="all") wird aufgelöst: Alle
Base-Imports werden an den Anfang von screen.scss übernommen. Damit
gibt es nur noch zwei CSS-Dateien: screen.css (Bildschirm) und
print.css (Druck).
Die statischen Dateien unter static/css/ bleiben unverändert — sie
werden von den Maven-generierten Projektseiten direkt referenziert und
sind unabhängig von der SCSS-Pipeline.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Kai Moritz [Thu, 4 Jun 2026 22:20:09 +0000 (22:20 +0000)]
Verwaiste Top-Level-SCSS-Dateien entfernen
tablet.scss, phone.scss, tiny.scss, ie8.scss, seitenaufteilung.scss und
seitenkopf.scss existierten ausschließlich als Standalone-Bundles für die
alte Browser-Weichen-Mechanik (rel="alternate stylesheet"). Nachdem diese
Links aus head.html entfernt wurden, werden die Dateien nirgends mehr
referenziert. Die Breakpoint-Styles selbst bleiben erhalten — sie liegen
in den Unterverzeichnissen tablet/, phone/, tiny/ und werden weiterhin
von screen.scss per Media Query eingebunden.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Kai Moritz [Thu, 4 Jun 2026 22:15:29 +0000 (22:15 +0000)]
CLAUDE.md: WIP-Commit-Konvention durch sinnvolle Commit-Messages ersetzen
Die alte Konvention ("Commits erhalten zunächst immer die Message
WIP:hugo-juplo-theme") wird aufgegeben. Stattdessen soll jeder Commit
direkt eine aussagekräftige Message erhalten, die zusammenfasst was und
warum geändert wurde — konsistent mit der Konvention im Content-Repo.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Kai Moritz [Thu, 4 Jun 2026 21:49:32 +0000 (21:49 +0000)]
Entferne veraltetes Legacy-HTML und JavaScript aus dem Theme
- prettify.js entfernt (Script-Einbindung in head.html, onload in baseof.html,
prettify.scss, static/js/prettify.js): Hugo nutzt seit langem Chroma für
serverseitiges Syntax-Highlighting; clientseitiges prettify.js wird nicht
mehr benötigt
- rel="alternate stylesheet"-Links für Legacy/Tablet/Phone/Tiny/Print
entfernt: Browser-Weichen aus der Pre-Responsive-Ära, in modernen Browsern
ohne Wirkung
- IE-Conditional-Comments entfernt (html5shiv, ie8.css): IE8/9 sind seit
Jahren End of Life
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Kai Moritz [Wed, 3 Jun 2026 22:59:18 +0000 (22:59 +0000)]
fix: security.allowContent für Hugo 0.162.0 ergänzt
Hugo 0.162.0 blockiert HTML-Inhaltsdateien standardmäßig über die neue
Sicherheitsrichtlinie. allowContent ist eine Allowlist — das Pattern
"^text/" erlaubt text/markdown und text/html (benötigt u.a. für die
generierten Maven-Site-HTML-Dateien in projects/).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Kai Moritz [Wed, 3 Jun 2026 21:40:01 +0000 (21:40 +0000)]
Content aus Theme entfernt; exampleSite-Platzhalter für Theme-Tests angelegt
Alle Produktionsinhalte aus content/ wurden entfernt (about/, impressum/,
blog/, categories/, tags/). Sie liegen jetzt im Content-Repo.
Als Ersatz wurden minimale Platzhalter in der exampleSite angelegt, damit
das Theme weiterhin unabhängig vom Content-Branch mit der exampleSite
getestet werden kann: about/, about/impressum/, blog/, blog/archive/,
categories/, tags/.
Die exampleSite/hugo.yaml wurde von PaperMod-Parametern bereinigt und
um copyrightShort ergänzt (analog zur hugo.yaml im Content-Repo).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Kai Moritz [Wed, 3 Jun 2026 21:37:05 +0000 (21:37 +0000)]
.Scratch durch .Store ersetzt; Copyright-Jahr in baseof.html dynamisch
- baseof.html: .Scratch.Get durch .Store.Get ersetzt (.Scratch ist seit
Hugo v0.116 deprecated; .Store ist der offizielle Nachfolger mit
identischer API). Copyright-Zeile zeigt jetzt Jahr via {{ now.Year }}
und Name via params.copyrightShort (Fallback: site.Copyright).
- Shortcodes footerlinks, marginalcontent-html, marginalcontent-md:
.Page.Scratch.Add/.Set durch .Page.Store.Add/.Set ersetzt.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- dist/ (sitemap.json, blog.json, potemkin.json): Überreste der alten
Thymeleaf-Implementierung, ohne Funktion im Hugo-Setup
- head-original.html: veraltete Backup-Kopie des head-Partials
- marginalcontent.html: Debug-Partial mit debug.Dump und Lorem-Ipsum,
das nirgends aufgerufen wurde
- menu/tree.html: auskommentierten Thymeleaf-Code und Debug-<ul>-Ausgabe
entfernt; Partial enthält jetzt ausschließlich Hugo-Template-Logik
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Kai Moritz [Wed, 3 Jun 2026 21:17:33 +0000 (21:17 +0000)]
CLAUDE.md angelegt: Verzeichnisstruktur, Menü-System und Shortcodes dokumentiert
Erstmalige CLAUDE.md für den Theme-Branch mit einer Beschreibung der
Verzeichnisstruktur, des Menü-Systems (Konzept und aktueller Stand) sowie
einer Übersicht aller Shortcodes. Dient als Einstiegspunkt für zukünftige
Arbeiten am Theme.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Kai Moritz [Sun, 19 Apr 2026 13:00:18 +0000 (15:00 +0200)]
Nur aktuelle (oder gerade ausgewählte) Projekte im Projekte-Menü verlinkt
* Unter dem Menü-Eintrag für `/projects/` erscheinen nur Projekte, für die
im Frontmatter der Parameter `current` explizit auf `true gesetzt ist.
* Alle anderen Unterseiten von `/projects/` werden im Menü nicht angezeigt.
* *Ausnahme:* Die Seite ist gerade ausgewählt -- _Diese Ausnahme ist nötig,
da ansonsten kein Menü-Pfad mehr für nicht sichtbare Projekte (aka: die
Dokumentation älterer oder unveröffentlichter Projekt-Versionen) angezeigt
wird.
Kai Moritz [Wed, 22 Apr 2026 13:40:22 +0000 (15:40 +0200)]
LÖSUNG: Wenn expizit ein Pfad spezifiziert wird sollte dieser auf `/` enden
* Wenn das letzte Pfad-Segment einen Fehler enthält, wird HTML nicht mehr
automatisch als das gewünschte Ausgabe-Format gewählt
** Siehe dazu `versioned/0.2/_index.html`
** Dann müsste das Ausgabe-Format explizit mit `outputs.html` gesetzt werden
* Wenn der Pfad mit einem `/` endet, wird HTML automatisch als Ausgabe-
Format gewählt
** Siehe dazu `versioned/0.1/_index.html`
** Das `outputs.html` ist dann nicht mehr nötig!
* Das `outputs.html` ist allerdings weiter für die Seite "Project Reports" nötig
** Hier ist noch nicht ganz klar, warum
** Die Seite "Project Info" unterscheidet sich kaum, benötigt die Angabe aber nicht
** Ggf. liegt es daran, dass unter `/project-reports/` weitere Sektionen liegen
Kai Moritz [Fri, 17 Apr 2026 18:50:43 +0000 (20:50 +0200)]
Layout für Home
- `.Content` in `article` rendern: Keine Überschrift
- Kein `define` für `marginalcontent`, da sonst die Shortcuts
nicht funktionieren, mit denen die Marginalspalte befüllt wird
Kai Moritz [Sat, 27 Dec 2025 15:42:07 +0000 (16:42 +0100)]
Taxonomien `Categories` und `Tags` als Untersektionen von `Blog` -- ALIGN
* Jahres-Sektionen unter die Sektion `/blog/archive` verschoben.
* Die Taxonomien `categories` und `tags` über eine explizite URL-Angabe
virtuell in die Sektion `blog` verschoben.
* Angeapsste `section`- und `taxonomy`-Templates erstellt, die das
Menü entsprechend darstellen.
Kai Moritz [Mon, 22 Dec 2025 21:31:00 +0000 (22:31 +0100)]
Thymeleaf-Templates in das Beispiel-Projekt verschoben
* D.h., das Theme kann direkt als statische Ressource für Thymeleaf dienen.
* Dafür muss nur das Theme standalone gebaut werden.
* Die Templates für Thymeleaf stehen dann über die Inhalte des
Beispiel-Projekts unter den bekanten Pfaden bereit.
* _Beachte:_ Die Inhalte wurden noch nicht dafür überarbeitet / migriert.
* Unter `content` stehen jetzt nur noch "echte" Inhalte, die in der
vollständigen Seite auch sichtbar sein sollen.
Kai Moritz [Sat, 20 Dec 2025 18:02:17 +0000 (19:02 +0100)]
Spezial-Menü für Blog-Unterseiten auch für das Template -- ALIGN
* Partial `menu` in `menu/default` umbenannt.
* Inline-Partial aus Template `blog/year` als Partial `menu/blog` extrahiert.
* Partial `menu/blog` wird in `blog/year` und `blog/page` verwendet.
Kai Moritz [Sat, 20 Dec 2025 10:26:02 +0000 (11:26 +0100)]
Spezial-Menü für die Untersektionen von `blog` anstatt für `blog` selbst
--
ALIGN
* Die Menüstruktur wird jetzt nicht mehr aus dem `date`-Parameter
abgeleitet.
* Stattdessen werden die Blog-Artikel sauber in Unter-Sektionen eingeteilt,
die nach den Jahren benannt sind.
* Diese Untersektionen setzen dann über Front-Matter explizit das Template
`year`, dass das besondere Verhalten des Menüs für diese Unterseiten
definiert.
Kai Moritz [Fri, 19 Dec 2025 09:12:06 +0000 (10:12 +0100)]
Spezial-Menü für das `section`-Templates von `/blog/` eingeführt
* Das Menü wird in `baseof` jetzt als überschreibbarer Block definiert.
* Der `menu`-Block gibt das bishierige Menü als Default vor.
* `blog/section` überschreibt das Menü mit einer Auflistung der Jahre,
für die Blog-Artikel vorliegen.
Kai Moritz [Mon, 6 May 2019 21:05:37 +0000 (23:05 +0200)]
Layout auf Basis der Version `1.1.0` der `maven-thymeleaf-skin` überarbeitet
* Site-Content mit Version `1.1.0` der `maven-thymeleaf-skin` neu generiert
** Es wurden für den Umbau einige Projekte exemplarisch angepasst:
*** hibernate-maven-plugin - 2.1.2-SNAPSHOT
*** http-resources - 2.0.0
*** maven-thymeleaf-skin - 1.1.0
** Dabei wurden die neu eingeführte Parameter entsprechend gesetzt, so
dass die für den verbesserten Umbau benötigten Informationen vorhanden
sind.
* Layout auf Basis der neuen Möglichkeiten umgebaut und verbessert
** Dabei wurden zuerst nur Projekte in die `sitemap.json` aufgenommen, für
die der Site-Content bereits neu generiert wurde (s.o.).
Kai Moritz [Tue, 9 Apr 2019 07:20:40 +0000 (09:20 +0200)]
Site-Content für die Überarbeitung des Layouts angepasst
* Es wurden für den Umbau nur zwei Projekte exemplarisch angepasst:
** Versionen 1.1.1 des hibernate-maven-plugin
** Versionen 1.1.1 des hibernate-maven-plugin