Workspace-Liste laden und speichern #11
Reference in New Issue
Block a user
Delete Branch "feat/workspace-liste"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Setzt die Entscheidungen aus #3 (Ablageort) und #4 (Dateiformate) um. Bewusst ohne Oberfläche — dieser Teil lässt sich mit echten Tests prüfen statt nur mit
cargo check.Ablageort
Ein Ausdruck für alle Plattformen, ohne
#[cfg]:state_dir()liefert nur unter LinuxSome— dort führt die XDG-Spec „recently used files" ausdrücklich als State, gehört also nach$XDG_STATE_HOMEstatt~/.config. Windows und macOS fallen durch.Real ergibt das hier:
C:\Users\<Benutzer>\AppData\Local\dionotes\workspaces.ron— Local, nicht Roaming, weil absolute Workspace-Pfade maschinenspezifisch sind und beim Roaming auf einem anderen Rechner ins Leere zeigten. Ein Test hält den Ort fest.Inhalt
Nur Pfade. Kein Anzeigename — den liefert der Ordnername, ein eigenes Feld wäre nach dem ersten Umbenennen falsch. Kein Zeitstempel — die Reihenfolge ist die Sortierung;
promote()hebt einen Eintrag an die Spitze und entfernt ihn vorher, wodurch Duplikate gar nicht erst entstehen können.Keine Schema-Version, und eine unlesbare Datei ergibt eine leere Liste statt eines Fehlers: Sie enthält nichts Unwiederbringliches, der Nutzer wählt seine Ordner einmal neu. Migrationspfad und Reparaturlogik entfallen damit.
Abhängigkeiten
Neu ist allein
ron;dirsundserdelagen bereits transitiv im Graph und mussten nur explizit werden.directorieswäre der teurere Weg gewesen — sein einziger Mehrwert wäre die Kleinschreibung des Ordnernamens, die hier eine Konstante erledigt.Tests
6 Tests, alle grün:
promotefür neue und bekannte Einträge, RON-Roundtrip mit echten Windows-Pfaden (Backslash-Escaping), unlesbarer und leerer Inhalt, sowie der Ablageort.Die Parse-Logik ist von der Datei-Ein-/Ausgabe getrennt, damit sie ohne temporäre Dateien prüfbar bleibt.
7d0c7f93f1to37a7bab30f