mana-swift-llm/CHANGELOG.md
till 7bbde8ed1a v0.2.0 — Lift LLMBackendPreferenceStore + LLMDownloadOverCellularStore aus memoro-native
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>
2026-05-22 14:19:46 +02:00

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.llmBackendmana.llm.backend
    • memoro.onDeviceLLMEnabled (alter Bool-Toggle) → mapped zu .appleFM / .noOp, dann mana.llm.backend
    • memoro.llmDownloadOverCellularmana.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, .serialized wegen UserDefaults.standard).

Geändert

  • GemmaBackend.removeCachedModel()-Signatur: throwsasync throws (für Protocol-Konformität). Caller müssen try await schreiben statt try.

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).