Devlog-Seite: Bildergalerie, Projekt-Chips, Monats-Trenner

- Bild-Attachments werden beim Archivieren lokal gespeichert (Discord-CDN-URLs
  laufen ab) und unter /devlog-assets/ ausgeliefert; DB-Migration: images-Spalte
- Frontend: Bildergalerie im Grid (responsive nach Anzahl), Embed-Titel als
  Projekt-Chip, Commit-Fußzeile abgesetzt, Monats-Trenner in der Timeline
- Backfill lädt Bilder alter Devlogs nach (Dedupe verhindert Doppel-Downloads)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-23 00:56:53 +02:00
co-authored by Claude Opus 4.8
parent 4b7a93ddb1
commit ed69d859ca
8 changed files with 199 additions and 24 deletions
+57
View File
@@ -187,6 +187,18 @@ body::after {
display: flex; flex-direction: column; gap: 1.5rem;
position: relative; padding-left: 1.6rem;
}
.month-sep {
font-family: var(--mono);
font-size: .68rem; letter-spacing: .3em; text-transform: uppercase;
color: var(--neon2);
margin: .5rem 0 1.25rem;
display: flex; align-items: center; gap: 1rem;
}
.month-sep::after {
content: ''; flex: 1; height: 1px;
background: linear-gradient(to right, rgba(255, 77, 0, .35), transparent);
}
.timeline > div:first-child .month-sep { margin-top: 0; }
.timeline::before {
content: '';
position: absolute; left: 3px; top: 10px; bottom: 10px;
@@ -224,6 +236,15 @@ body::after {
font-family: var(--mono);
font-size: .65rem; letter-spacing: .1em;
color: var(--muted2); white-space: nowrap;
margin-left: auto;
}
.card-project {
font-family: var(--mono);
font-size: .6rem; letter-spacing: .18em; text-transform: uppercase;
color: var(--neon2);
border: 1px solid rgba(255, 77, 0, .3);
padding: .1rem .5rem;
white-space: nowrap;
}
.card-body { color: var(--text); font-weight: 300; font-size: 1.08rem; }
@@ -247,6 +268,42 @@ body::after {
color: var(--success);
}
/* Bildergalerie (heruntergeladene Devlog-Screenshots) */
.card-images {
display: grid; gap: .5rem;
margin-top: .9rem;
}
.card-images.n1 { grid-template-columns: 1fr; }
.card-images.n2 { grid-template-columns: 1fr 1fr; }
.card-images.n3 { grid-template-columns: 1fr 1fr 1fr; }
.card-images.n4 { grid-template-columns: 1fr 1fr; }
.card-images a {
display: block; overflow: hidden;
border: 1px solid rgba(255, 255, 255, .08);
aspect-ratio: 16 / 9;
transition: border-color .2s;
}
.card-images a:hover { border-color: var(--neon); }
.card-images img {
width: 100%; height: 100%; object-fit: cover; display: block;
transition: transform .3s;
}
.card-images a:hover img { transform: scale(1.03); }
.card-images.n1 a { aspect-ratio: auto; max-height: 420px; }
.card-images.n1 img { object-fit: contain; background: #000; }
/* Abgesetzte Fußzeile („X Commits heute — Details im Repo") */
.card-footer {
margin-top: .9rem; padding-top: .7rem;
border-top: 1px solid rgba(255, 255, 255, .06);
font-family: var(--mono);
font-size: .68rem; letter-spacing: .08em;
color: var(--muted2);
}
.card-footer p { margin: 0; }
.card-footer a { color: var(--muted); border-bottom: 1px solid transparent; }
.card-footer a:hover { color: var(--neon); }
/* ── COMMIT-LISTE ──────────────────────────────────── */
.commit-list { border: 1px solid rgba(255, 255, 255, .06); background: var(--bg2); }
.commit-row {