À propos du projet

Amgi (mot coréen signifiant « mémorisation ») est un client de cartes mémoire open source, compatible Anki et fonctionnant hors ligne pour iOS, accompagné d'une application watchOS. Plutôt que de réimplémenter la logique d'Anki, il encapsule le backend Rust officiel ankitects/anki via C FFI, de sorte que la planification, les modèles de cartes, la recherche, l'import/export, les statistiques et la synchronisation s'exécutent tous sur le même moteur que celui utilisé par Anki Desktop et AnkiDroid. Capacités principales décrites dans le README : - Fonctionnement hors ligne d'abord : l'application fonctionne sans connexion réseau et se synchronise lorsqu'une connexion est disponible. - Synchronisation avec tout serveur compatible, y compris AnkiWeb ou un serveur de synchronisation auto-hébergé, avec une fusion sûre lorsque les collections divergent. - Planification FSRS, plus un simulateur FSRS par paquet. - Un lecteur EPUB intégré avec recherche hors ligne dans un dictionnaire compatible Yomitan, destiné à permettre aux utilisateurs de créer des cartes à partir de leurs lectures. - Fonctionnalités pour utilisateurs avancés telles que l'occlusion d'image, les modèles de cartes, la recherche Anki avec des puces de filtre par paquet et par étiquette, et des statistiques incluant les séries et une prévision des échéances futures. - Au-delà du téléphone : des widgets d'écran d'accueil, une application Apple Watch qui exécute le moteur sur l'appareil, et des actions Shortcuts/Siri. Architecture : les modules de fonctionnalités SwiftUI reposent au-dessus de clients d'injection de dépendances, de façades de services, de requêtes protobuf typées, d'un wrapper Swift autour du backend, d'une couture C FFI à quatre fonctions, et enfin du framework dynamique Rust. Swift possède l'interface utilisateur ; Rust possède la base de données (SQLite), la synchronisation, la planification, les modèles, la recherche, l'import/export et les statistiques. La sérialisation utilise Protocol Buffers avec 25 définitions de services .proto. Pile technique : Swift 6.2 avec concurrence stricte (mode de langage v6), swift-dependencies pour l'injection, SPM pour les modules de bibliothèque et de fonctionnalités, et xcodegen pour les cibles app, widget et watch. Le support EPUB intègre EPUBKit (MIT) et utilise hoshidicts pour les dictionnaires Yomitan. La compilation nécessite Xcode 26, Rust (stable et nightly, ce dernier pour la tranche watchOS), protoc et xcodegen. Le projet est généré plutôt que versionné ; le README fournit les commandes pour compiler le xcframework Rust, générer les types Swift protobuf et générer le projet Xcode. La documentation couvre les fonctionnalités, la compilation, l'architecture, le pont Rust, les flux de données et le style de code. Licence : AGPL-3.0, car il intègre ankitects/anki, qui est également sous AGPL-3.0. Le README précise que distribuer le logiciel ou l'exécuter en tant que service réseau nécessite de rendre l'intégralité du code source disponible sous la même licence. Les contributions sont bienvenues via CONTRIBUTING.md, et le README crédite le projet Anki, un fork antérieur ayant contribué au travail sur l'occlusion d'image et les thèmes, AnkiDroid pour le modèle de pont Rust mobile, et Point-Free pour swift-dependencies.