Alle Migrationen entfernen #137

Closed
opened 2026-09-18 08:33:19 +02:00 by admin · 1 comment

Wie der Titel schon sagt, würde ich gerne alles was mit Migration zu tun hat entfernen. Ich habe zu dem Zeitpunkt schon alle vorhandenen Projekte einmal geöffnet und neu gespeichert, sprich diese sind am aktuellen Speicherstand.

Wie der Titel schon sagt, würde ich gerne alles was mit Migration zu tun hat entfernen. Ich habe zu dem Zeitpunkt schon alle vorhandenen Projekte einmal geöffnet und neu gespeichert, sprich diese sind am aktuellen Speicherstand.
admin added this to the Development project 2026-09-18 08:33:24 +02:00
admin moved this to Next in Development on 2026-09-18 08:33:30 +02:00
Owner

Erledigt – c91c18f (Wiki 8d85fa7)

Im ganzen Repo (src, api, tools, tests) gab es genau zwei Lade-Migrationen, beide im Loader src/core/store/serialize.ts. Beide sind entfernt:

  1. migrateAsset (autotile → tile, #131): Ein Asset vom Typ autotile ist jetzt ein unbekannter Typ und fällt beim Laden weg.
  2. Alte Zellform (Layer mit cells-Map statt rows, vor #134): ein solcher Layer lädt leer, isStoredCells in tilemapCells.ts ist mit weg.

Vorher geprüft: Alle 7 Projekte in data/projects/ haben formatVersion 2, kein autotile und keinen Layer ohne rows. Die Seeder schreiben keine alte Form.

Zweiter, gründlicher Durchgang (auf Nachfrage), ohne weiteren Fund:

  • Git-Historie: Frühere Migrationen hat schon 8a71859 entfernt, danach kamen nur #131 und #134 dazu.
  • Nach stillen Umdeutungen gesucht: coerceValue/coerceAs (Enums fallen auf die Vorgabe, nichts wird umbenannt), Frame-Slices, startSceneId, Graph-, Track- und Layer-Leser. Dort gibt es nur „ein fehlendes Feld gilt als Vorgabe“, das ist das normale Format und keine Migration.
  • Die PHP-API liest und schreibt Projekte roh, sie formt nichts um.
  • Die autotile-Namen in model/autotile.ts sind das Viertel-Raster der Tiles, keine Umbenennung.

Bewusst stehen gelassen: Die Anzeige einer Animations-Id im Texture-Feld als <id>? (#143) ist die allgemeine Regel für fehlende Verweise. Nebenbefund, nicht angefasst: api/lib/Store.php legt neue Projekte mit formatVersion: 1 an, der Client setzt beim Laden ohnehin 2.

Tests (lokal)

npm run check                                          → 102 Files, 1380 Tests, CHECK EXIT 0
npm run build                                          → BUILD EXIT 0
GM_STEPS=1-16,24,25,33,36,38,39,40 (frisch geseedet)   → ALL PASSED – 612 checks
  • Die zwei Migrationstests sind umgestellt und nicht nur gelöscht: Sie prüfen jetzt, dass die alten Formen nicht mehr gelesen werden.
  • Gegenprobe mit dem alten Loader-Code: Zuerst war nur einer der beiden Tests rot, weil toMatchObject mit cells: {} auf jedes Objekt passt. Die Prüfung ist jetzt toEqual({}), danach waren beide rot.
  • Check-Summe bleibt 1042. CI zu c91c18f habe ich beim Schreiben noch nicht gelesen.

Wiki: Tiles.md (Abschnitt Older projects gestrichen), Tilemaps.md („older projects still load“ ersetzt).

## Erledigt – `c91c18f` (Wiki `8d85fa7`) Im ganzen Repo (`src`, `api`, `tools`, `tests`) gab es genau **zwei** Lade-Migrationen, beide im Loader `src/core/store/serialize.ts`. Beide sind entfernt: 1. **`migrateAsset`** (autotile → tile, #131): Ein Asset vom Typ `autotile` ist jetzt ein unbekannter Typ und fällt beim Laden weg. 2. **Alte Zellform** (Layer mit `cells`-Map statt `rows`, vor #134): ein solcher Layer lädt leer, `isStoredCells` in `tilemapCells.ts` ist mit weg. **Vorher geprüft:** Alle 7 Projekte in `data/projects/` haben `formatVersion 2`, kein `autotile` und keinen Layer ohne `rows`. Die Seeder schreiben keine alte Form. **Zweiter, gründlicher Durchgang** (auf Nachfrage), ohne weiteren Fund: - Git-Historie: Frühere Migrationen hat schon `8a71859` entfernt, danach kamen nur #131 und #134 dazu. - Nach stillen Umdeutungen gesucht: `coerceValue`/`coerceAs` (Enums fallen auf die Vorgabe, nichts wird umbenannt), Frame-Slices, `startSceneId`, Graph-, Track- und Layer-Leser. Dort gibt es nur „ein fehlendes Feld gilt als Vorgabe“, das ist das normale Format und keine Migration. - Die PHP-API liest und schreibt Projekte roh, sie formt nichts um. - Die `autotile`-Namen in `model/autotile.ts` sind das Viertel-Raster der Tiles, keine Umbenennung. **Bewusst stehen gelassen:** Die Anzeige einer Animations-Id im Texture-Feld als `<id>?` (#143) ist die allgemeine Regel für fehlende Verweise. Nebenbefund, nicht angefasst: `api/lib/Store.php` legt neue Projekte mit `formatVersion: 1` an, der Client setzt beim Laden ohnehin 2. ### Tests (lokal) ``` npm run check → 102 Files, 1380 Tests, CHECK EXIT 0 npm run build → BUILD EXIT 0 GM_STEPS=1-16,24,25,33,36,38,39,40 (frisch geseedet) → ALL PASSED – 612 checks ``` - Die zwei Migrationstests sind umgestellt und nicht nur gelöscht: Sie prüfen jetzt, dass die alten Formen nicht mehr gelesen werden. - **Gegenprobe** mit dem alten Loader-Code: Zuerst war nur einer der beiden Tests rot, weil `toMatchObject` mit `cells: {}` auf jedes Objekt passt. Die Prüfung ist jetzt `toEqual({})`, danach waren beide rot. - Check-Summe bleibt 1042. CI zu `c91c18f` habe ich beim Schreiben noch nicht gelesen. Wiki: `Tiles.md` (Abschnitt *Older projects* gestrichen), `Tilemaps.md` („older projects still load“ ersetzt).
admin moved this to Done in Development on 2026-09-18 16:30:28 +02:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#137