Aus #231 („Vorerst nicht dabei: … Export als Datei.“).
Befund
Projekte und Snapshots liegen nur am Server (data/projects/, data/snapshots/). Es gibt keinen Weg, einen Stand herunterzuladen oder einen heruntergeladenen wieder einzuspielen.
Seit #85 Runde 8 sind die Dateien auch statisch nicht mehr abrufbar (403). Vorher war das der einzige, unbeabsichtigte Weg.
Nebenbefund aus #85 Runde 8: deserializeProject nimmt eine Datei in der Server-Hülle ({id, name, owner, revision, updatedAt, project}) ohne Fehler als leeres Projekt an. Ein Import muss das selbst abfangen.
Zu bauen (Vorschlag)
Download: im Snapshots-Dialog je Eintrag und für den aktuellen Stand. Heraus kommt eine .json mit dem Projekt.
Import: im Projekt-Picker „Import project…“. Es legt aus so einer Datei ein neues Projekt des eigenen Kontos an, mit neuer Id. Eine Datei ohne erkennbares Projekt wird abgelehnt, statt leer zu laden.
Bilder, Fonts und Sounds sind inhaltsadressiert und bleiben am Server. Eine Datei von diesem Server lädt also vollständig.
Tests: Unit für den Import (Hülle, fehlendes project, alter Stand), e2e: Download, Import, das neue Projekt zeigt dieselben Assets.
Offen (mit Vorschlag)
Mit Bildern, Fonts und Sounds? Vorschlag: vorerst nur die JSON. Mit Dateien wäre es eine ZIP wie beim Spiel-Export (#278).
Import in ein bestehendes Projekt, als Restore? Vorschlag: nein, immer ein neues Projekt.
Aus #231 („Vorerst nicht dabei: … Export als Datei.“).
## Befund
- Projekte und Snapshots liegen nur am Server (`data/projects/`, `data/snapshots/`). Es gibt keinen Weg, einen Stand herunterzuladen oder einen heruntergeladenen wieder einzuspielen.
- Seit #85 Runde 8 sind die Dateien auch statisch nicht mehr abrufbar (403). Vorher war das der einzige, unbeabsichtigte Weg.
- Nebenbefund aus #85 Runde 8: `deserializeProject` nimmt eine Datei in der Server-Hülle (`{id, name, owner, revision, updatedAt, project}`) ohne Fehler als **leeres** Projekt an. Ein Import muss das selbst abfangen.
## Zu bauen (Vorschlag)
- **Download:** im Snapshots-Dialog je Eintrag und für den aktuellen Stand. Heraus kommt eine `.json` mit dem Projekt.
- **Import:** im Projekt-Picker „Import project…“. Es legt aus so einer Datei ein neues Projekt des eigenen Kontos an, mit neuer Id. Eine Datei ohne erkennbares Projekt wird abgelehnt, statt leer zu laden.
- Bilder, Fonts und Sounds sind inhaltsadressiert und bleiben am Server. Eine Datei von diesem Server lädt also vollständig.
- Tests: Unit für den Import (Hülle, fehlendes `project`, alter Stand), e2e: Download, Import, das neue Projekt zeigt dieselben Assets.
## Offen (mit Vorschlag)
1. **Mit Bildern, Fonts und Sounds?** Vorschlag: vorerst nur die JSON. Mit Dateien wäre es eine ZIP wie beim Spiel-Export (#278).
2. **Import in ein bestehendes Projekt, als Restore?** Vorschlag: nein, immer ein neues Projekt.
meleki
added the new label 2026-09-29 18:26:31 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Aus #231 („Vorerst nicht dabei: … Export als Datei.“).
Befund
data/projects/,data/snapshots/). Es gibt keinen Weg, einen Stand herunterzuladen oder einen heruntergeladenen wieder einzuspielen.deserializeProjectnimmt eine Datei in der Server-Hülle ({id, name, owner, revision, updatedAt, project}) ohne Fehler als leeres Projekt an. Ein Import muss das selbst abfangen.Zu bauen (Vorschlag)
.jsonmit dem Projekt.project, alter Stand), e2e: Download, Import, das neue Projekt zeigt dieselben Assets.Offen (mit Vorschlag)