Git és Snapshot
Az app nem akar Git-kliens lenni. Nincs benne rebase, cherry-pick, remote-menedzsment — a repó teljesen normális Git repó, aki azt akarja, használja a saját eszközét.
Git réteg
| Művelet | Mikor | Hogyan |
|---|---|---|
init | Projekt létrehozásakor, ha még nem repo | os/exec git |
commit | Manuálisan a UI-ból (Beállítások → Git), üzenet-sablonnal | spec(DEV-001): acceptance criteria frissítés |
status / diff | A „Változások" panelben, entitásonként csoportosítva | Kanonikus JSON miatt olvasható |
API: GET /api/v1/vcs/status, POST /api/v1/vcs/commit (stage-all).
capabilities.git = a git bináris megléte.
(A képernyőkép pótlása folyamatban.)
Snapshot / Restore
History-szennyezés nélkül:
CreateSnapshot—git stash create→ dangling commit → annotált tagcraftingtable-snapshot/<ts>(tiszta fánál a HEAD). Nem szennyezi a history-t.ListSnapshots—for-each-refa snapshot-tageken.RestoreSnapshot(dir, id, subpath)—git checkout <tag> -- .craftingtable(staged).DeleteSnapshot.
API: GET/POST /api/v1/vcs/snapshots, POST .../{id}/restore, DELETE .../{id}.
UI: Beállítások → Git → „Snapshotok" szekció (címke + létrehozás + lista visszaállítás/törlés
gombokkal).
Snapshot ZIP (Export/Import projekt)
A .index/snapshots/*.zip a JSON+MD teljes állapotát egy fájlban tartja — ez az „Export
projekt" / „Import projekt" mechanizmusa (Git nélkül dolgozó félnek, gépváltáshoz). A ZIP a
JSON-okat tartalmazza, nem a SQLite db-t (az újraépíthető).