Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ jobs:
build:
name: Build DocFX site
runs-on: ubuntu-latest
timeout-minutes: 30
env:
PLAYWRIGHT_CHROMIUM_CHANNEL: chrome
Comment on lines +21 to +23

permissions:
contents: read
Expand Down Expand Up @@ -58,9 +61,8 @@ jobs:
working-directory: tests/web-a11y
run: npm ci

- name: Install Playwright Chromium
working-directory: tests/web-a11y
run: npx playwright install --with-deps chromium
- name: Verify system Chrome
run: google-chrome --version

- name: Run DocFX accessibility smoke tests
working-directory: tests/web-a11y
Expand Down
2 changes: 1 addition & 1 deletion .specify/feature.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"feature_directory": "specs/013-wave2-visual-component-remediation"
"feature_directory": "specs/014-wave1-functional-hardening"
}
6 changes: 3 additions & 3 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<Version>1.13.13.46</Version>
<AssemblyVersion>1.13.13.46</AssemblyVersion>
<FileVersion>1.13.13.46</FileVersion>
<Version>1.14.5.46</Version>
<AssemblyVersion>1.14.5.46</AssemblyVersion>
<FileVersion>1.14.5.46</FileVersion>
<!-- Fehlende XML-Docs sind in Release ein Build-Fehler (Constitution §III). -->
<!-- Missing XML documentation is a build error in Release (Constitution §III). -->
<WarningsAsErrors Condition="'$(Configuration)' == 'Release'">CS1591</WarningsAsErrors>
Expand Down
20 changes: 20 additions & 0 deletions docfx-templates/accessibility-modern/public/accessibility.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,36 @@ const normalizeDropdownToggles = () => {
}
};

const normalizeScrollableTables = () => {
let tableNumber = 1;

for (const element of document.querySelectorAll('.table-responsive')) {
element.setAttribute('tabindex', '0');
element.setAttribute('role', 'region');

if (!element.hasAttribute('aria-label')) {
element.setAttribute(
'aria-label',
`Scrollbare Tabelle ${tableNumber} / Scrollable table ${tableNumber}`);
}

tableNumber++;
}
};
Comment on lines +36 to +51

document.documentElement.lang ||= 'de';
hideDecorativeIcons();
hideEmptyLandmarks();
normalizeLandingHeadings();
normalizeDropdownToggles();
normalizeScrollableTables();
requestAnimationFrame(normalizeScrollableTables);

const observer = new MutationObserver(() => {
hideDecorativeIcons();
hideEmptyLandmarks();
normalizeDropdownToggles();
normalizeScrollableTables();
});

observer.observe(document.body, {
Expand Down
7 changes: 6 additions & 1 deletion docs/project-statistics.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Projektstatistik TuiVision

Stand: 2026-05-30 (aktualisiert inklusive Branch `011-port-wave2-examples`, Wave-2-Beispielen, Lastenheft fuer interaktive Wave-2-Demos, DocFX-Generated-Output-Cleanup, zweistufigem Beispielwellen-Liefermuster, Pflichtenheft-Abnahme fuer interaktive Beispielreife, 011-Review-Cleanup vor 012, Spec-Kit-Intake-Aufbereitung fuer 012, GitHub-Pages-Artefaktworkflow fuer DocFX, PR-#26-Review-Cleanup, `/speckit-specify`, `/speckit-clarify`, `/speckit-plan`, `/speckit-checklist`, `/speckit-tasks`, PR-#27-Review-Cleanup, `/speckit-analyze`-Remediation fuer 012, Wave-1-Folge-Lastenhefte, Wave-1-Visual-Component-Remediation-Umbenennung, Wave-3-/Wave-4-Visual-Component-Porting-Intakes, Lastenheft-Specify-Readiness-Harmonisierung, C#-Dev-Kit-Language-Service-Cache-Ignore, Claude-Code-Review-Remediation fuer 012-Tasks, `/speckit-implement` fuer `012-interactive-wave2-demos`, Lastenheft fuer Wave-2-Visual-Component-Remediation, `/speckit-specify`, zwei `/speckit-clarify`-Laeufe, `/speckit-plan`, gezieltem `security-governance`-v0.4.0-Plan-Nachlauf, `/speckit-checklist`, `/speckit-tasks`, `/speckit-analyze`-Remediation und `/speckit-implement` fuer `013-wave2-visual-component-remediation`, PR-#29-Copilot-Review-Cleanup, AI-SBOM-Governance-Preset-Rollout sowie allgemeiner historischer `tv203s`-Quellenreferenzregel)
Stand: 2026-05-31 (aktualisiert inklusive Branch `011-port-wave2-examples`, Wave-2-Beispielen, Lastenheft fuer interaktive Wave-2-Demos, DocFX-Generated-Output-Cleanup, zweistufigem Beispielwellen-Liefermuster, Pflichtenheft-Abnahme fuer interaktive Beispielreife, 011-Review-Cleanup vor 012, Spec-Kit-Intake-Aufbereitung fuer 012, GitHub-Pages-Artefaktworkflow fuer DocFX, PR-#26-Review-Cleanup, `/speckit-specify`, `/speckit-clarify`, `/speckit-plan`, `/speckit-checklist`, `/speckit-tasks`, PR-#27-Review-Cleanup, `/speckit-analyze`-Remediation fuer 012, Wave-1-Folge-Lastenhefte, Wave-1-Visual-Component-Remediation-Umbenennung, Wave-3-/Wave-4-Visual-Component-Porting-Intakes, Lastenheft-Specify-Readiness-Harmonisierung, C#-Dev-Kit-Language-Service-Cache-Ignore, Claude-Code-Review-Remediation fuer 012-Tasks, `/speckit-implement` fuer `012-interactive-wave2-demos`, Lastenheft fuer Wave-2-Visual-Component-Remediation, `/speckit-specify`, zwei `/speckit-clarify`-Laeufe, `/speckit-plan`, gezieltem `security-governance`-v0.4.0-Plan-Nachlauf, `/speckit-checklist`, `/speckit-tasks`, `/speckit-analyze`-Remediation und `/speckit-implement` fuer `013-wave2-visual-component-remediation`, PR-#29-Copilot-Review-Cleanup, `/speckit-specify` fuer `014-wave1-functional-hardening`, PR-#30-DocFX-Playwright-Install-Hardening, PR-#30-DocFX-System-Chrome-Fallback, PR-#30-DocFX-A11Y-Smoke-Remediation, AI-SBOM-Governance-Preset-Rollout sowie allgemeiner historischer `tv203s`-Quellenreferenzregel)

## Zweck und Pflege

Expand Down Expand Up @@ -577,6 +577,11 @@ fortgeschrieben.
| 2026-05-30 | `/speckit-analyze`-Remediation fuer `013-wave2-visual-component-remediation` | Die vier relevanten Analyze-Funde wurden als gezielte Artefaktkorrektur eingepflegt: Der Lastenheft-Rename ist nun der letzte Polish-Task, die US4-Dokumentationsaufgaben verlangen German-first/English-second CEFR-B2-Inhalte, DocFX/web-a11y ist wegen der geplanten Guide-/README-Aenderungen deterministischer als erwarteter Nachweis formuliert, und der Acceptance-Contract vermeidet den platzhalterartigen `examples/<Example>`-Befehl. Validierung: 94/94 Tasks bleiben sequenziell, der Contract enthaelt keinen `examples/<Example>`-Platzhalter mehr, CEFR-B2 ist in den konkreten US4-Tasks sichtbar, `git diff --check` sauber; keine Build-/Testausfuehrung, weil nur Spec-Kit-Planungsdokumentation und Statistik geaendert wurden. Netto-Aenderungsvolumen vor diesem Ledger-Eintrag: `0` Produktionscode-Zeilen, `0` Testcode-Zeilen, Spec-Kit-Aufgaben-/Contract-Remediation ohne Nettozeilenaenderung plus diese Statistikfortschreibung. Sichtbares Arbeitsfenster: kurze Analyze-Remediation am 2026-05-30, als blended repository speedup und nicht als Stopwatch-Messung zu lesen. |
| 2026-05-30 | `/speckit-implement` fuer `013-wave2-visual-component-remediation` | Die sichtbare Wave-2-Komponenten-Remediation wurde umgesetzt: alle elf Wave-2-Beispiele besitzen jetzt eine echte sichtbare Hauptkomponente oder einen stabilen visuellen Runtime-Zustand, eine echte `TStatusLine`, einen tastaturerreichbaren `Help -> Description`-Pfad und primaere App-Loop-Smokes mit konkreter Zustandsassertion, View-Baum-Nachweis sowie Buffer-/Cell-Snapshot. Neu ist der gemeinsame Beispiel-Helfer `examples/Shared/Wave2Runtime.cs`; aktualisiert wurden die elf Beispiel-Apps, Example-Smokes, Guides, README, `Pflichtenheft.md`, Architektur-/Security-Nachweise, Agent-Guidance und `pr-evidence.md`. Zwischenvalidierung vor den finalen Gate-Kommandos: fokussierte Wave-2-Smokes `47/47` gruen und Matrix-Smokes `4/4` gruen. Netto-Aenderungsvolumen vor diesem Ledger-Eintrag: ca. `+980` Produktions-/Beispielcode-Zeilen, `+585` Testzeilen und ca. `+540` Dokumentations-/Evidence-/Governance-Zeilen; `Directory.Build.props` steht nach T094 und der finalen regulaeren Commit-Ausrichtung branchkonform auf `1.13.12.46`. Konservative Manualreferenz fuer rund `2105` fachliche Netto-Zeilen: `26,3` Tage (ca. `205,2` Stunden); Thorsten-Solo-Referenz: `16,8` Tage (ca. `131,4` Stunden); sichtbares Arbeitsfenster: eine Agentensitzung am 2026-05-30, als blended repository speedup und nicht als Stopwatch-Messung zu lesen. |
| 2026-05-30 | PR-#29-Copilot-Review-Cleanup fuer `013-wave2-visual-component-remediation` | Die zwei Copilot-Inline-Kommentare zu `scripts/check-homogeneity.sh` wurden geschlossen: Der JSON-Modus schreibt fuer `GIT-SCOPE-001` und `GIT-SCOPE-002` keine separaten `printf`-Objekte mehr; beide Warnungen laufen nur noch ueber `emit_result` und die finale Summary. `Directory.Build.props` steht fuer den dreizehnten 013-Branch-Commit auf `1.13.13.46`. Validierung: `./scripts/check-homogeneity.sh --json --dry-run .` erzeugt auf stdout genau ein JSON-Summary-Objekt; stderr meldet weiterhin die bereits vorhandenen fehlenden `hg_scan`-Helfer, weil `scripts/lib/hg-*.sh` in diesem Repo-Snapshot nicht vorhanden ist. `git diff --check` sauber. Netto-Aenderungsvolumen: kleine Script-Remediation plus Evidence-, Statistik- und Versionsmetadatenpflege; sichtbares Arbeitsfenster: kurze PR-Review-Nacharbeit am 2026-05-30, als blended repository speedup und nicht als Stopwatch-Messung zu lesen. |
| 2026-05-31 | `/speckit-specify` fuer `014-wave1-functional-hardening` | Aus `Lastenheft_Wave1-Functional-Hardening.md` wurde die Feature-Spezifikation fuer den Wave-1-Qualitaetsnachlauf erzeugt. Die Spec begrenzt den Scope auf `Desklogo`, `MsgCls`, `Tutorial` mit `tvguid01` bis `tvguid16` und `Videomode`, verlangt historische Read-only-Quellenreviews, eine Quellen-/C#-/Test-/Abweichungs-Matrix, fachlich relevante Smoke-Nachweise statt reiner Startup-/Textpraesenz, Helper-Klassifikation als `SetupOnly`, `PrimaryProof`, `SupplementalProof` oder `LegacyOrTemporary` und German-first/English-second Evidence. Wave-1-Visual-Component-Remediation, Wave 2 bis 4, breite Framework-Revisionen und interaktive Demo-Politur bleiben ausdruecklich ausser Scope; der Pflichtenheft-Marker auf Wave 3 bleibt offen. `Directory.Build.props` wurde fuer den ersten 014-Branch-Commit auf `1.14.1.46` ausgerichtet. Validierung: Spec-Kit-Branch-Hook fuer `014`, `.specify/feature.json` gueltig, keine offenen Spec-Platzhalter oder Clarification-Marker, Requirements-Checklist `PASS`, `git diff --check` sauber; keine Build-/Testausfuehrung, weil nur Specify-, Statistik- und Versionsmetadaten geaendert wurden. Netto-Aenderungsvolumen vor diesem Ledger-Eintrag: `0` Produktionscode-Zeilen, `0` Testcode-Zeilen, `+328` Spec-Kit-Dokumentationszeilen plus diese Statistikfortschreibung; `Directory.Build.props` ist reine Versionsmetadatenpflege. Konservative Manualreferenz fuer die neue Spezifikation und Checkliste: 80 Zeilen/Tag = `4,1` Tage (ca. `32,0` Stunden); Thorsten-Solo-Referenz: 125 Zeilen/Tag = `2,6` Tage (ca. `20,5` Stunden); sichtbares Arbeitsfenster: eine Agentensitzung am 2026-05-31, als blended repository speedup und nicht als Stopwatch-Messung zu lesen. |
| 2026-05-31 | DocFX-Pages-Workflow gegen Playwright-Install-Haenger gehaertet | Der fehlgeschlagene PR-#30-Check wurde als Infrastrukturhaenger im Schritt `Install Playwright Chromium` eingeordnet: DocFX selbst war gruen, der Chromium-Download erreichte 100 %, danach lief der Job bis zum GitHub-Actions-Abbruch nach rund sechs Stunden. `.github/workflows/pages.yml` begrenzt den Build-Job nun auf 30 Minuten, trennt Playwright-Systemabhaengigkeiten und Browserinstallation, setzt Schritt-Timeouts von 10 beziehungsweise 15 Minuten und cached `~/.cache/ms-playwright` ueber den `package-lock.json`-Hash. `Directory.Build.props` wurde fuer den zweiten 014-Branch-Commit auf `1.14.2.46` ausgerichtet. Validierung: YAML-Syntaxcheck, `git diff --check` sauber; keine Build-/Testausfuehrung, weil nur Workflow-, Statistik- und Versionsmetadaten geaendert wurden. |
| 2026-05-31 | PR-#30-DocFX-Playwright-Headless-Shell-Fix | Der zweite PR-#30-Run bestaetigte, dass der neue Timeout greift, der volle Playwright-Chromium-Install aber nach dem 100-%-Download weiter haengen kann. Der Pages-Workflow installiert fuer die headless DocFX-A11Y-Smokes deshalb nur noch die Chromium Headless Shell mit `npx playwright install chromium --only-shell`; das passt zur vorhandenen `playwright.config.ts`, weil kein Browser-`channel` gesetzt ist und die Tests headless laufen. `Directory.Build.props` wurde fuer den dritten 014-Branch-Commit auf `1.14.3.46` ausgerichtet. Validierung: YAML-Syntaxcheck, Playwright-Dry-Run fuer `chromium --only-shell`, realer `npx playwright install chromium --only-shell`, `npm test` in `tests/web-a11y/` mit 2/2 gruen, `git diff --check`; keine Dotnet-Build-/Testausfuehrung, weil nur Workflow-, Statistik- und Versionsmetadaten geaendert wurden. |
| 2026-05-31 | PR-#30-DocFX-System-Chrome-Fallback | Der GitHub-Run mit `--only-shell` zeigte denselben Haenger nach dem 100-%-Download der kleineren Chromium Headless Shell. Der Pages-Workflow nutzt im CI deshalb den auf GitHub-hosted Ubuntu vorhandenen System-Chrome ueber `PLAYWRIGHT_CHROMIUM_CHANNEL=chrome`, prueft ihn mit `google-chrome --version` und entfernt die Playwright-Browserdownload- und Cache-Schritte aus dem PR-Pfad. Lokal bleibt der Standard ohne gesetzten Channel unveraendert und nutzt weiter den installierten Playwright-Browser. `Directory.Build.props` wurde fuer den vierten 014-Branch-Commit auf `1.14.4.46` ausgerichtet. Validierung: YAML-Syntaxcheck, `npm test` in `tests/web-a11y/` mit 2/2 gruen im lokalen Standardpfad, `PLAYWRIGHT_CHROMIUM_CHANNEL=chrome npm test` mit 2/2 gruen im lokalen System-Chrome-Pfad, `git diff --check`; GitHub-PR-Run ist der massgebliche Nachweis fuer den Ubuntu-System-Chrome-Pfad. |
| 2026-05-31 | PR-#30-DocFX-A11Y-Smoke-Remediation | Der System-Chrome-Run beseitigte den Browserinstall-Haenger, legte aber zwei echte CI-Unterschiede frei: Playwrights Failure-Video benoetigte ohne Browserinstall ein fehlendes FFmpeg-Artefakt, und axe meldete auf der Linux-/Chrome-Viewport-Kombination `scrollable-region-focusable` fuer DocFX-Tabellencontainer. Der A11Y-Smoke schaltet Videoaufzeichnung jetzt aus, erhoeht das Test-Timeout auf 60 Sekunden, und das DocFX-Accessibility-Template macht `.table-responsive`-Container per `tabindex`, `role=region` und zweisprachigem Label tastaturerreichbar. `Directory.Build.props` wurde fuer den fuenften 014-Branch-Commit auf `1.14.5.46` ausgerichtet. Validierung: `docfx docfx.json` mit 0 Warnungen/0 Fehlern, `PLAYWRIGHT_CHROMIUM_CHANNEL=chrome npm test` in `tests/web-a11y/` mit 2/2 gruen, `git diff --check`; GitHub-PR-Run bleibt der massgebliche Linux-Nachweis. |

## Gesamtstatistik

Expand Down
44 changes: 44 additions & 0 deletions specs/014-wave1-functional-hardening/checklists/requirements.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Specification Quality Checklist: Wave 1 Functional Hardening

**Purpose**: Validate specification completeness and quality before proceeding
to planning
**Created**: 2026-05-31
**Feature**: [spec.md](../spec.md)

## Content Quality

- [x] No implementation details beyond project/domain constraints,
historical-source anchors, and constitution-required governance facts
- [x] Focused on user value and business needs
- [x] Written for non-technical stakeholders where the feature scope allows it
- [x] All mandatory sections completed

## Requirement Completeness

- [x] No [NEEDS CLARIFICATION] markers remain
- [x] Requirements are testable and unambiguous
- [x] Success criteria are measurable
- [x] Success criteria are technology-agnostic except where repository
governance explicitly requires named evidence surfaces
- [x] All acceptance scenarios are defined
- [x] Edge cases are identified
- [x] Scope is clearly bounded
- [x] Dependencies and assumptions identified

## Feature Readiness

- [x] All functional requirements have clear acceptance criteria
- [x] User scenarios cover primary flows
- [x] Feature meets measurable outcomes defined in Success Criteria
- [x] No implementation details leak into specification beyond accepted
repository artefact names, historical source references, helper
classification labels, and governance evidence obligations

## Notes

- Validation pass completed on 2026-05-31 after generating
`specs/014-wave1-functional-hardening/spec.md`.
- The specification intentionally names Wave-1 examples, historical source
files, proof classification labels, and governance evidence obligations
because these are binding repository and Lastenheft constraints rather than
optional implementation design.
Loading
Loading