fix(2.7.1): Auskuenfte, die stimmen - Fassung, Health, doctor, Ansicht

Der erste Durchlauf der Testinstanz hat neun Bugs zutage gefoerdert, und fast
alle waren dieselbe Sorte Fehler: eine Auskunft, die nicht stimmte.

Am folgenreichsten die Fassung. config/config.php fuehrte app.version als feste
Zeichenkette und stand seit 2.0.0 darauf, waehrend 2.7.0 lief - unbemerkt, weil
die Datei gitignored ist und in keinem Diff auftaucht. Zwei gemeldete Bugs sind
daran fehldiagnostiziert worden ("der Server ist zu alt"). src/bootstrap.php
leitet die Fassung jetzt aus "current" in public/docs/changelog.json ab.

Im Einzelnen:

- #346 Fassung aus dem Changelog statt aus der Konfiguration
- #60  /api/health ueberlebt eine leere Datenbank: eigener Check "schema",
       healthy=false mit Begruendung statt HTTP 500
- #54  dc-testkit doctor prueft Mindestfassung (semantisch) und Rechte, statt
       sie nur anzuzeigen - dafuer neu: GET /api/tokens/v1/whoami
- #53  dc-testkit.sh unter /testkit/ erreichbar (Route fehlte, der
       dokumentierte Bezugsweg hat nie funktioniert) und mit LF ausgeliefert
       (deploy.py/deploy_dev.py entfernen CR bei .sh/.bash beim Upload)
- #288 Filter und Formulare werfen nicht mehr aufs Dashboard zurueck: die
       offene Ansicht wandert bei GET als "view" in den Query-String, und die
       Filter loesen ueber requestSubmit() aus - form.submit() erzeugt kein
       submit-Ereignis, weshalb der zentrale Zuhoerer dort nie lief
- #347 /api/bugtracker/v1/roadmap auch ohne .php erreichbar
- #55  Fassungshinweis in TESTUMGEBUNG.md 4.6 (serverseitig war das mit 2.6.0
       bereits behoben)

Nicht geprueft: php -l. Auf dem Arbeitsplatz ist kein PHP installiert; die
Abnahme laeuft ueber die Testinstanz.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Deploymentcenter Bot
2026-08-30 21:06:33 +02:00
co-authored by Claude Opus 5
parent afcbb3c091
commit 3b56839a1e
13 changed files with 566 additions and 50 deletions
+37
View File
@@ -50,6 +50,43 @@ if (!is_array($dcConfig)) {
exit(1);
}
// --- Fassung: aus dem Changelog, nicht aus der Konfiguration ---
// Die ausgelieferte Fassung ist eine Eigenschaft des Standes, keine
// Einstellung der Installation. In config/config.php stand sie als
// Zeichenkette - und blieb dort auf 2.0.0 stehen, waehrend laengst 2.7.0 lief.
// Das war keine Schoenheitsfrage: /api/health meldete 2.0.0, Fehlermeldungen
// trugen eine falsche build_version, und wer die Fassung gegen eine
// Mindestanforderung prueft (dc-testkit doctor), bekam auf einem aktuellen
// Server eine Absage. public/docs/changelog.json wird bei jedem Release
// ohnehin gepflegt und ist damit die belastbarere Quelle. Der Wert aus der
// Konfiguration bleibt Rueckfallebene, falls die Datei fehlt.
//
// Gelesen wird nur der Kopf der Datei: sie ist rund 55 KB gross, und dafuer
// bei jedem Aufruf einen json_decode zu bezahlen, waere fuer eine einzelne
// Zeichenkette zu teuer. Findet sich der Schluessel dort nicht - etwa weil
// jemand die Datei umsortiert hat -, wird sie doch vollstaendig gelesen.
$dcChangelogFile = DC_ROOT . '/public/docs/changelog.json';
if (is_file($dcChangelogFile)) {
$dcVersion = null;
$dcHead = (string)file_get_contents($dcChangelogFile, false, null, 0, 4096);
if (preg_match('/"current"\s*:\s*"([^"]+)"/', $dcHead, $dcMatch) === 1) {
$dcVersion = $dcMatch[1];
} else {
$dcMeta = json_decode((string)file_get_contents($dcChangelogFile), true);
if (is_array($dcMeta) && is_string($dcMeta['current'] ?? null)) {
$dcVersion = $dcMeta['current'];
}
}
if (is_string($dcVersion) && $dcVersion !== '') {
if (!isset($dcConfig['app']) || !is_array($dcConfig['app'])) {
$dcConfig['app'] = [];
}
$dcConfig['app']['version'] = $dcVersion;
}
}
Deploymentcenter\Core\Config::load($dcConfig);
date_default_timezone_set((string)Deploymentcenter\Core\Config::get('app.timezone', 'UTC'));