Stores leben jetzt im Package mit App-übergreifenden Keys (mana.llm.backend, mana.llm.allowCellular). Auto-Migration aus memoro.* Legacy-Keys beim ersten Read (memoro.llmBackend, memoro.onDeviceLLMEnabled Bool-Toggle, memoro.llmDownloadOverCellular). Ermöglicht ManaLLMUI in mana-swift-ui 0.8.0 als geteilte Settings- Schicht für alle 4 Konsumenten (Memoro, Pageta, Comicello, Herbatrium). Außerdem: - LLMBackend.removeCachedModel() als Protocol-Methode mit Default- No-Op. GemmaBackend überschreibt (async throws statt throws). - 13 neue Tests in LLMPreferenceStoresTests (.serialized wegen UserDefaults.standard). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.2 KiB
Changelog
Alle Änderungen werden hier dokumentiert. Format orientiert an Keep a Changelog, Versionierung nach Semver.
[Unreleased]
[0.2.0] — 2026-05-22
Minor — Preference-Stores nach ManaLLM geliftet + UI-Konsoldierung
in mana-swift-ui möglich gemacht.
Hintergrund
Vorher lebten LLMBackendPreferenceStore und
LLMDownloadOverCellularStore mit Memoro-spezifischen UserDefaults-Keys
(memoro.llmBackend, memoro.llmDownloadOverCellular) ausschließlich
in memoro-native. Damit die anderen ManaLLM-Konsumenten (Pageta,
Comicello, Herbatrium) ebenfalls eine Settings-UI bekommen können
(siehe mana-swift-ui 0.8.0 / ManaLLMUI), wandern die Stores hier
ins Package und nutzen App-übergreifende Keys (mana.llm.*).
Neu
LLMBackendPreferenceStore— UserDefaults-Store für die On-Device- LLM-Wahl (mana.llm.backend). Default:.appleFM.LLMDownloadOverCellularStore— WiFi-only-Default für Modell- Downloads (mana.llm.allowCellular). Default:false.- Beide Stores migrieren beim ersten Read einmalig aus Legacy-Keys:
memoro.llmBackend→mana.llm.backendmemoro.onDeviceLLMEnabled(alter Bool-Toggle) → mapped zu.appleFM/.noOp, dannmana.llm.backendmemoro.llmDownloadOverCellular→mana.llm.allowCellular
LLMBackend.removeCachedModel()— neue Protocol-Methode mit Default-No-Op-Impl.GemmaBackendüberschreibt (löscht HF-Repo-Pfad im App-Group-Container). Apple FM und NoOp bleiben No-Op.- Test-Suite
LLMPreferenceStoresTests(13 Tests,.serializedwegenUserDefaults.standard).
Geändert
GemmaBackend.removeCachedModel()-Signatur:throws→async throws(für Protocol-Konformität). Caller müssentry awaitschreiben statttry.
Migration für Apps
Apps die schon ManaLLM konsumieren brauchen nichts zu ändern —
Symbol-Namen bleiben identisch, Defaults bleiben identisch, alte
UserDefaults-Keys werden transparent migriert. Memoro hat seine
lokalen Store-Duplikate gelöscht; der Build bleibt grün, weil
Memoro import ManaLLM schon hatte.
Apps die heute keine LLM-Settings-UI haben können jetzt
ManaLLMUI aus mana-swift-ui 0.8.0 einhängen (drop-in).