Spezifikation v0.2 als lebendes Dokument + Ansicht in der App
Deploy App / deploy (push) Successful in 3m10s

Neue Funktionale/Technische Spezifikation (SPEZIFIKATION.md) mit
Aenderungshistorie; ersetzt die bisherigen FDD/TDD-Dokumente v1-v5.

In der App unter dem Menueintrag "SPEZIFIKATION" (Sidebar, unter den Plaenen)
lesbar: /api/spec liefert das Markdown, SpecView rendert es. Styling ueber die
bestehenden Farb-Tokens, folgt damit allen drei Schemata.

Die MD-Datei war ueber .dockerignore (*.md) vom Image ausgeschlossen -> Ausnahme
ergaenzt und Kopie in die Runner-Stage aufgenommen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-16 22:22:44 +02:00
parent dfebbeb397
commit 87e6a5f564
9 changed files with 3422 additions and 10 deletions
+99
View File
@@ -128,3 +128,102 @@ body {
color: var(--fg);
font-family: Arial, Helvetica, sans-serif;
}
/* -------------------------------------------------------------------------
Dokument-Darstellung fuer gerenderten Markdown (Spezifikation, /spezifikation).
Bewusst ueber die semantischen Tokens, damit alle drei Farbschemata greifen.
------------------------------------------------------------------------- */
.md-doc {
color: var(--fg);
line-height: 1.65;
font-size: 0.9rem;
max-width: 62rem;
overflow-wrap: break-word;
}
.md-doc > *:first-child { margin-top: 0; }
.md-doc > *:last-child { margin-bottom: 0; }
.md-doc h1,
.md-doc h2,
.md-doc h3,
.md-doc h4 {
color: var(--fg);
font-weight: 600;
line-height: 1.3;
scroll-margin-top: 1rem;
}
.md-doc h1 { font-size: 1.6rem; margin: 2.4rem 0 1rem; }
.md-doc h2 {
font-size: 1.25rem;
margin: 2.2rem 0 0.85rem;
padding-bottom: 0.35rem;
border-bottom: 1px solid var(--border);
}
.md-doc h3 { font-size: 1.05rem; margin: 1.7rem 0 0.6rem; }
.md-doc h4 { font-size: 0.95rem; margin: 1.3rem 0 0.5rem; color: var(--muted); }
.md-doc p { margin: 0.75rem 0; }
.md-doc strong { font-weight: 600; color: var(--fg); }
.md-doc em { font-style: italic; }
.md-doc a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
.md-doc a:hover { color: var(--accent-hover); }
.md-doc ul,
.md-doc ol { margin: 0.75rem 0; padding-left: 1.4rem; }
.md-doc ul { list-style: disc; }
.md-doc ol { list-style: decimal; }
.md-doc li { margin: 0.3rem 0; }
.md-doc li::marker { color: var(--faint); }
.md-doc code {
font-family: var(--font-mono), monospace;
font-size: 0.84em;
background: var(--surface-2);
border: 1px solid var(--border);
border-radius: 0.25rem;
padding: 0.1em 0.35em;
}
.md-doc pre {
background: var(--surface-2);
border: 1px solid var(--border);
border-radius: 0.6rem;
padding: 0.9rem 1rem;
margin: 1rem 0;
overflow-x: auto;
line-height: 1.5;
}
.md-doc pre code {
background: none;
border: none;
padding: 0;
font-size: 0.82rem;
white-space: pre;
}
/* Breite Tabellen scrollen in ihrem eigenen Container, die Seite bleibt ruhig. */
.md-doc .md-table-wrap { overflow-x: auto; margin: 1rem 0; }
.md-doc table { border-collapse: collapse; width: 100%; font-size: 0.82rem; }
.md-doc th,
.md-doc td {
border: 1px solid var(--border);
padding: 0.4rem 0.6rem;
text-align: left;
vertical-align: top;
}
.md-doc th { background: var(--surface-2); font-weight: 600; white-space: nowrap; }
.md-doc tbody tr:nth-child(even) { background: color-mix(in srgb, var(--surface-2) 45%, transparent); }
.md-doc blockquote {
margin: 1rem 0;
padding: 0.6rem 1rem;
border-left: 3px solid var(--accent);
background: var(--accent-soft);
color: var(--accent-soft-fg);
border-radius: 0 0.4rem 0.4rem 0;
}
.md-doc blockquote p { margin: 0.3rem 0; }
.md-doc hr { border: 0; border-top: 1px solid var(--border); margin: 2rem 0; }