docs: replace ASCII umlaut fallbacks with proper äöüß across all .md
Most German docs were written with `ue`/`ae`/`oe`/`ss` ASCII fallbacks (`fuer`, `aenderung`, `koennen`, `gemaess`) — relic from older toolchain constraints. Replaced 237 occurrences across 38 .md files with proper umlauts and ß so the docs read naturally. Substitutions are constrained to plain prose: fenced code blocks (```...```), inline code spans (`...`), markdown link targets `[..](..)`, and HTML comments are preserved verbatim. Path references like `docs/howto-erste-aenderung.md` keep their original (umlaut-replaced) filenames — only the surrounding prose is normalised. Tool: bin/fix-md-umlauts.py (idempotent — no-op on already-clean files). Re-runnable if ASCII fallbacks creep back in via copy-paste. Doc-link-check + doc-drift-check stay green. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -4,11 +4,11 @@ Letzte Aktualisierung: 2026-03-25
|
||||
|
||||
## Ziel
|
||||
|
||||
Verbindlicher Contract fuer `modules/*/module.php`, damit Module zur Runtime deterministisch geladen und validiert werden.
|
||||
Verbindlicher Contract für `modules/*/module.php`, damit Module zur Runtime deterministisch geladen und validiert werden.
|
||||
|
||||
## Status
|
||||
|
||||
Dieses Dokument ist die kanonische (normative) Quelle fuer Manifest-, Runtime- und Guard-Regeln des Modul-Systems.
|
||||
Dieses Dokument ist die kanonische (normative) Quelle für Manifest-, Runtime- und Guard-Regeln des Modul-Systems.
|
||||
`/docs/reference-extension-readiness.md` referenziert diesen Contract und dupliziert keine Felddefinitionen.
|
||||
|
||||
## JSON-Schema-Enforcement
|
||||
@@ -25,8 +25,8 @@ Ein Manifest muss sowohl:
|
||||
|
||||
## Namespace-Konvention
|
||||
|
||||
Alle PHP-Klassen eines Moduls muessen den Namespace `MintyPHP\Module\<Name>\*` verwenden.
|
||||
Core-Namespaces (`MintyPHP\Service\*`, `MintyPHP\Repository\*`, `MintyPHP\Support\*`) sind fuer Modul-Code verboten.
|
||||
Alle PHP-Klassen eines Moduls müssen den Namespace `MintyPHP\Module\<Name>\*` verwenden.
|
||||
Core-Namespaces (`MintyPHP\Service\*`, `MintyPHP\Repository\*`, `MintyPHP\Support\*`) sind für Modul-Code verboten.
|
||||
|
||||
Verzeichnis-Layout:
|
||||
|
||||
@@ -75,8 +75,8 @@ Der `ModuleAutoloader` registriert daraus den absoluten Pfad `modules/<id>/i18n/
|
||||
```
|
||||
|
||||
- `key` und `description` sind Pflichtfelder.
|
||||
- Runtime-Sync erfolgt ueber `php bin/console module:sync`.
|
||||
- `module:sync` fuehrt diesen Sync automatisch aus.
|
||||
- Runtime-Sync erfolgt über `php bin/console module:sync`.
|
||||
- `module:sync` führt diesen Sync automatisch aus.
|
||||
|
||||
## `scheduler_jobs` Contract
|
||||
|
||||
@@ -101,8 +101,8 @@ Der `ModuleAutoloader` registriert daraus den absoluten Pfad `modules/<id>/i18n/
|
||||
],
|
||||
```
|
||||
|
||||
- Manifest ist Source of Truth fuer Job-Metadaten und Defaults.
|
||||
- Handler werden zur Laufzeit container-resolvable fuer `execute(...)` geladen.
|
||||
- Manifest ist Source of Truth für Job-Metadaten und Defaults.
|
||||
- Handler werden zur Laufzeit container-resolvable für `execute(...)` geladen.
|
||||
|
||||
## `ui_slots` Contract (V1.2)
|
||||
|
||||
@@ -118,15 +118,15 @@ Neue generische Slot-Typen:
|
||||
Abgrenzung CSS:
|
||||
|
||||
- `layout.head_style` = global auf allen Seiten.
|
||||
- `asset_groups` = seiten-/kontextbezogen ueber `style_groups`.
|
||||
- `asset_groups` = seiten-/kontextbezogen über `style_groups`.
|
||||
|
||||
## Guard-Regeln
|
||||
|
||||
- Route-Kollisionen sind fail-fast:
|
||||
- Modul vs Modul auf `target` und `path`.
|
||||
- Modul vs Core auf `path` beim Router-Boot.
|
||||
- Layout-Provider duerfen reservierte Core-Keys nicht ueberschreiben (`moduleSlots`, `csrfKey`, `currentTenant`, ...).
|
||||
- Layout-Provider-Top-Level-Keys muessen namespaced sein (`<module_id>.<key>`).
|
||||
- Layout-Provider duerfen reservierte Core-Keys nicht überschreiben (`moduleSlots`, `csrfKey`, `currentTenant`, ...).
|
||||
- Layout-Provider-Top-Level-Keys müssen namespaced sein (`<module_id>.<key>`).
|
||||
|
||||
## Runtime-Fingerprint
|
||||
|
||||
@@ -141,16 +141,16 @@ Methoden: `ModuleRuntimePageBuilder::expectedFingerprint()`, `readFingerprint()`
|
||||
|
||||
## API-Channel-Isolation
|
||||
|
||||
API-Requests (`api/`-Prefix) ueberspringen den gesamten Web-Session-Flow:
|
||||
API-Requests (`api/`-Prefix) überspringen den gesamten Web-Session-Flow:
|
||||
|
||||
- Kein `Session::start()`, kein Cookie-Setting, kein CSRF-Token
|
||||
- Kein Remember-Me, kein Session-Timeout, kein Tenant-UI-Refresh
|
||||
- API-Auth erfolgt ueber `ApiBootstrap.php` (Bearer-Token)
|
||||
- API-Auth erfolgt über `ApiBootstrap.php` (Bearer-Token)
|
||||
- `AccessControl` listet `api/` als always-public
|
||||
|
||||
## Standard-Runbook
|
||||
|
||||
`php bin/console module:sync` fuehrt in fester Reihenfolge aus:
|
||||
`php bin/console module:sync` führt in fester Reihenfolge aus:
|
||||
|
||||
1. `module:migrate`
|
||||
2. `module:permissions-sync`
|
||||
|
||||
Reference in New Issue
Block a user