Important
Ce fork ajoute la prise en charge de la langue française, ainsi qu'une UX/UI « French touch ». Pour la version anglaise, consultez le README anglais.
Projet original : StarHubTH par AppleBoiy — qui propose une version en thaï.
StarHubFR est un gestionnaire de mods Stardew Valley natif pour macOS, en français. Installez, organisez et dépannez vos mods sans passer par le Finder ni le terminal, même avec plusieurs centaines de mods.
Le guide utilisateur accompagne le premier lancement et chaque usage courant : installer, mettre en pause, profils, mises à jour, dépannage, raccourcis, performances, traduction, retrouver un fichier remplacé, désinstaller proprement.
- 🇫🇷 En français de bout en bout — interface, erreurs et diagnostics, avec bascule instantanée vers l'anglais.
- 🩺 Il explique ce qui ne va pas — il lit le journal SMAPI à votre place et dit quoi faire, en clair.
- ✍️ Vous traduisez les mods dans l'app — un éditeur clé par clé écrit le
fr.jsonsans casser les marqueurs du jeu. - 🍎 Vraiment natif — Swift et SwiftUI, sans couche web, utilisable avec VoiceOver.
- 🧩 Fait pour les grosses collections — conçu et testé sur des installations de plusieurs centaines de mods (SVE et compagnie).
- 🧭 De nouveaux mods sans quitter l'app — tendances, mises à jour récentes et sélection française, croisées avec ce que vous avez déjà.
Quand le jeu plante ou qu'un mod refuse de se charger, StarHubFR transforme le journal SMAPI en diagnostic lisible.
- Des conseils, pas du jargon — « installez telle dépendance », « ce mod est installé en double », « ce mod ne prend pas en charge votre version du jeu ». Chaque conseil s'accompagne d'un bouton : installer la dépendance, ouvrir la fiche du mod ou lancer la recherche du mod responsable.
- L'état de santé en un coup d'œil — versions de SMAPI et du jeu, mods chargés, ignorés ou en échec avec leur raison, dépendances manquantes.
- Les mods à surveiller — ceux qui modifient le code du jeu ou vos sauvegardes, ceux qui produisent le plus d'erreurs, avec ce que cela implique.
- Les fausses alertes mises à part — GOG Galaxy, intégration optionnelle absente, mod compagnon manquant : le message est cité, un bouton mène à ses lignes, et le mod n'est plus accusé à tort.
- Un journal qui se lit — lignes répétitives repliées, regroupement par mod (les plus problématiques en tête), badge si le journal date d'avant votre session.
- Les erreurs suivies version par version — la fiche d'un mod dit si sa nouvelle version se comporte moins bien que la précédente.
- Tous vos raccourcis et leurs conflits — chaque touche des mods actifs, cherchable par mod, réglage ou touche ; à la capture, l'éditeur de config dit si un autre mod l'utilise déjà.
- Un plan pour démêler les raccourcis — les conflits passent sur des touches libres, rangées par famille : lettres pour l'action, chiffres pour l'information, touches F pour le reste. Chaque ligne se décoche, les config.json touchés sont sauvegardés avant écriture et « Annuler le plan » les restaure.
- Les conflits prévus avant de jouer — deux mods qui chargent le même asset en exclusif sont signalés, et l'activation (seule, groupée ou par profil) prévient en nommant l'asset.
- Retrouver le mod fautif — quand rien ne désigne de coupable, l'app met vos mods en pause par moitiés et pose une question par étape. Une dizaine d'essais suffisent ; tout se remet en un clic.
- Un clic vers la solution — depuis un conflit, un recouvrement ou une alerte, vous ouvrez directement la fiche du mod concerné, sur l'onglet où se trouve la correction.
La sonde StarHubFR, un petit mod SMAPI installé à votre demande, mesure le jeu pendant que vous jouez. L'onglet Performances compare deux moments et dit ce qui a changé.
- Temps de chargement — lancement et chargement de partie, comparés à l'état précédent de votre parc, avec les mods qui pèsent le plus.
- Benchmark automatique — l'app enchaîne seule plusieurs lancements en alternant les deux états, puis remet votre parc comme avant.
- Mesure guidée en un clic — la sonde conduit la partie (lieu, nuit, sortie propre) avant puis après un changement, et l'app rend le comparatif A/B ; vous gardez le changement ou revenez au parc d'avant, même après une interruption.
- Fluidité et mémoire — temps d'image, saccades, mémoire du processus et textures par mod, minute par minute, avec ce qui sépare deux sessions (mods, versions, réglages, scène).
- Pas de verdict au hasard — un écart ne compte qu'au-delà du bruit mesuré entre vos propres sessions ; sinon il reste gris.
- Diagnostics guidés et réversibles — pour Stardew Loading Optimizer et Stardropium, l'app installe si besoin, active les mesures le temps d'une partie, puis restaure réglages et mods, même après une interruption.
- Carte « Environnement » — réglages réellement appliqués par Stardew Loading Optimizer, mods configurables, poids et conflits de chaque pack Content Patcher.
- Glisser-déposer une archive (
.zip,.7z,.rar) sur la fenêtre, depuis n'importe quelle page — structure détectée (mod seul ou pack), format reconnu à ses octets, limites de sécurité (500 Mo d'archive, 2 Go décompressés), conflits et dépendances manquantes annoncés. - Le contenu d'un autre mod s'installe au bon endroit — un fichier pour un framework (un sac ItemBags, par exemple) est placé dans son mod hôte, chemin montré et fichier existant sauvegardé d'abord.
- Activer sans déplacer de fichiers — un mod, une sélection (clic, ⌘, ⇧, ⌘A, puis Espace) ou tous à la fois. Les mods livrés avec SMAPI restent actifs.
- Corbeille d'une sélection — un seul lot, restaurable en bloc ; la confirmation nomme les mods actifs qui en dépendent. Refusé jeu ouvert.
- Profils — plusieurs ensembles de mods, un clic pour passer de l'un à l'autre. Vous pouvez voir ce qu'un profil changerait avant de l'activer ; une pastille signale un profil appliqué à moitié ou interrompu, avec la marche à suivre.
- Revenir à un état d'avant — l'app enregistre l'état de vos mods avant chaque activation groupée, recherche ou benchmark ; un clic suffit pour y revenir.
- Groupes à soi — « Regrouper par » vos groupes ou par catégorie : bandeaux repliables, « Ranger dans » sur une ligne ou une sélection, tout un groupe activé ou mis en pause d'un geste. Un profil décrit un état, un groupe un rangement.
- Une liste qui se trie — catégories déduites du manifeste, filtres (configurables, « à écarter », non catégorisés…), tris par nom, auteur, approbations ou mise à jour la plus ancienne ; cadrages Tous, Activés, Désactivés, Problèmes et Mises à jour.
- Approbations Nexus — le pouce de chaque mod donne son nombre d'approbations et approuve d'un clic.
- Marque « à écarter » — un mod à retirer de la circulation sans le désinstaller : grisé, regroupé par un filtre, importable dans un profil.
- Vérification sans compte via smapi.io, à partir des manifestes. Un bouton « Arrêter » interrompt la vérification à tout moment.
- Si smapi.io tombe — l'app le dit et propose de vérifier directement sur Nexus : un tri sans clé ne revérifie que les pages modifiées, quelques dizaines de requêtes au lieu de plusieurs milliers.
- Les mods sans verdict, expliqués — ceux que ni smapi.io ni Nexus n'ont pu juger, chacun avec sa raison (aucun identifiant, page masquée ou supprimée…). Un identifiant saisi à la main remplace une clé cassée du manifeste.
- Chaque mod dit qu'il a une mise à jour — pastille « ↑ version » sur sa ligne et bandeau sur sa fiche. La correspondance se fait par identifiant de manifeste, jamais par identifiant Nexus. Les mises à jour des mods en pause sont regroupées à part.
- « Je l'ai déjà » — pour l'auteur qui publie sans changer la version de son manifeste : la ligne enregistre la version réellement installée, puis disparaît.
- Téléchargement dans l'app — direct avec un compte Premium, ou par le lien
nxm://avec un compte gratuit. La clé API reste dans le trousseau macOS. - Ce qu'une mise à jour change — options de config ajoutées ou retirées, textes à traduire, traductions écartées ; les clés renommées sont reportées, jamais écrasées. L'aperçu prévient aussi quand des mods actifs lisent le code interne du mod remplacé.
- Trois vitrines Nexus — tendances, mises à jour récentes et sélection française, mises en cache 24 h.
- Ce que vous avez déjà se voit — pastille « Installé » et filtre pour les masquer, avec le nombre masqué.
- Catégories et recherche — 26 catégories filtrées côté serveur, recherche par nom avec le total réel.
- Fiche éclair — description, version, approbations, puis Installer (Premium) ou Ouvrir sur Nexus.
- Jamais muette — sans clé, quota atteint ou panne réseau, chaque état dit ce qui se passe et propose l'action qui le lève.
- Six onglets — Aperçu, Santé, Dépendances, Traduction, Historique, Gestion. La fiche s'ouvre directement sur l'onglet utile : Dépendances pour une dépendance manquante, Historique pour une mise à jour.
- La compatibilité d'abord — le verdict de smapi.io et ce qu'en dit l'auteur, réunis dans une carte.
- Santé — un verdict et huit vérifications (liste noire SMAPI, chargement, smapi.io, journal, incompatibilités, raccourcis, doublons, page Nexus), avec « non vérifié » quand la donnée manque.
- Dépendances — ce qui est à régler apparaît en premier, avec un bouton « Activer » ou « Installer », suivi de l'arbre complet, replié par niveau, plus les mods dont celui-ci lit le code interne sans le déclarer.
- Description et journal des modifications rendus en texte natif (gras, listes, liens, images, spoilers).
- Identifiant Nexus et catégorie modifiables sur place.
Chaque fiche a un onglet Traduction qui montre l'état réel du français et sert d'éditeur.
- Anglais à gauche, français à droite, clé par clé ; un mod sans
fr.jsonen reçoit un au premier enregistrement. - Une IA locale propose le brouillon — un modèle qui tourne sur votre Mac (Ollama, LM Studio), par clé ou par lots, marqué « À relire ». Rien ne quitte la machine.
- Le glossaire vient du jeu — plus de mille noms d'objets, personnages et lieux, lus dans votre installation et imposés au modèle.
- Les marqueurs du jeu protégés — affichés en couleur, insérés d'un clic ; un enregistrement qui en perd un est refusé.
- Le vrai taux de traduction — 100 % seulement si toutes les clés sont faites ; clés vides, absentes ou obsolètes listées à part.
- Page « Traductions FR » — les traductions publiées sur Nexus pour vos mods, les mises à jour de celles installées, et « À finir » pour les traductions commencées. Un résultat erroné s'écarte d'un clic sur le pouce vers le bas ; un badge dans la barre latérale indique les traductions en attente.
- À plusieurs — export d'un lot ZIP pour un traducteur, fusion clé par clé à son retour.
- Mode focus — bandeaux et barre latérale masqués (Échap pour sortir).
- Éditeur de config — arborescence de réglages typés avec recherche, ou JSON brut validé en direct ; listes déroulantes avec les libellés traduits du mod.
- Sauvegardes des mods — avant chaque écrasement, plus vos
config.jsonetfr.json, et les fichiers qu'une mise à jour a emportés. Les configurations sont classées par mod et peuvent être comparées avant restauration ; une sauvegarde supprimée va dans la Corbeille du Mac. - Entretien — l'espace disque occupé par StarHubFR, et « Libérer de la place » en une seule action (en conservant 1, 3 ou 5 sauvegardes par mod).
- Parties — détail, copie, suppression, et retouche de l'argent ou des statistiques.
- Ce que vos mods laissent dans vos parties — mesuré avant la mise en pause ; « Réactiver ces mods » réactive ceux dont une partie a besoin, et « Nettoyer… » retire les données de mods disparus, après une sauvegarde.
- Un accueil qui va à l'essentiel — compteurs utiles et Lancer le jeu (⌘R), en Vanilla ou via SMAPI ; si une opération a été interrompue, l'accueil le signale et propose « Tout remettre comme avant ».
- Journaux en temps réel — sortie SMAPI et StarHubFR, filtrables par source et par niveau.
- Les mods dont l'app a besoin — listés dans les réglages, avec leur rôle, leur état et leur lien d'installation.
- Accessible et lisible — VoiceOver annonce chaque bouton, toute l'app s'utilise au clavier, et la liste des mods s'adapte aux fenêtres étroites.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- macOS 14 (Sonoma) ou ultérieur.
- Stardew Valley installé sur macOS (Steam ou GOG).
- SMAPI pour jouer avec des mods ; l'app sait l'installer.
- Téléchargez la dernière version sur la page Releases.
- Décompressez l'archive et glissez
StarHubFR.appdans Applications. - Au premier lancement, macOS peut bloquer l'app, qui n'est pas notarisée : ouvrez Réglages Système › Confidentialité et sécurité, puis Ouvrir quand même. Si macOS refuse encore, ou dit l'app « endommagée », levez la quarantaine avec Sentinel (ci-dessous).
- L'app cherche le jeu ; s'il n'est pas trouvé, désignez l'application du jeu elle-même (
Stardew Valley.app) : le dossierMods/est trouvé à partir de là.
Pour passer à une nouvelle version, quittez complètement l'app (⌘Q) avant de remplacer le bundle.
Pour vérifier l'archive, téléchargez aussi SHA256SUMS depuis la même release, puis, dans le dossier des deux fichiers : shasum -a 256 -c SHA256SUMS doit répondre OK.
L'app est signée par un certificat propre au projet (« StarHubFR Signature »). Il ne remplace pas la notarisation et ne suffit pas au Trousseau : après chaque mise à jour, macOS redemande l'accès aux clés Nexus et DeepL, une fois par clé — répondez « Toujours autoriser » (votre mot de passe de session est demandé). Seul un certificat Apple Developer lèverait cette demande.
macOS marque d'une « quarantaine » toute app téléchargée, et refuse d'ouvrir celles qui ne sont pas notarisées par Apple, ce qui est le cas de StarHubFR. Sentinel (GitHub), d'Alin Lupascu, retire cette marque en un geste.
- Installez Sentinel (macOS 13 ou ultérieur) :
- avec Homebrew :
brew install --cask alienator88-sentinel; - ou depuis la page Releases de Sentinel, puis glissez
Sentinel.appdans Applications et lancez-le depuis là.
- avec Homebrew :
- Glissez
StarHubFR.app(déjà dans Applications) sur la zone de gauche, Allow unsigned app to launch. Avec l'extension Finder de Sentinel, un clic droit sur l'app fait la même chose. Laissez la zone de droite (Sign app with) et l'interrupteur Gatekeeper tels quels. - Ouvrez StarHubFR normalement.
Capture : dépôt de Sentinel, Alin Lupascu.
À refaire après chaque nouvelle version de StarHubFR : la quarantaine revient avec chaque téléchargement. Ne levez la quarantaine que d'une app venue de la page Releases de ce dépôt. Sentinel sait aussi désactiver Gatekeeper pour tout le Mac : ce n'est pas nécessaire ici, la levée de quarantaine de la seule app suffit.
L'app est écrite en Swift et SwiftUI. Il faut macOS 14 et Xcode 16 (la version utilisée par la CI).
python3 build_app.py # compile, vérifie les conventions et produit StarHubFR.app
open StarHubFR.app
./run_tests.sh # tests du cœur (Swift Testing)
python3 release.py # archive de release dans bundles/Il n'y a pas de projet Xcode : build_app.py compile toutes les sources, et Package.swift ne décrit que le cœur testé.
La carte du code est dans docs/ARCHITECTURE.md. Pour signaler un bug, proposer une idée ou une pull request : CONTRIBUTING.md. Une faille de sécurité se signale en privé : SECURITY.md.
StarHubFR est publié sous licence MIT : forkez, modifiez, améliorez. Il dérive de StarHubTH par AppleBoiy, qui en propose une version en thaï.
StarHubFR s'appuie sur le travail de nombreux projets. La liste complète — API interrogées, fichiers lus, code repris, état de chacun — est tenue à jour dans docs/SOURCES.md.
Le jeu
- Stardew Valley par ConcernedApe — le jeu, dont l'app lit sur votre installation les traductions officielles (glossaire de l'éditeur) et vos contrôles (conflits de raccourcis).
SMAPI et diagnostic
- SMAPI, Content Patcher, StardewXnbHack et la liste de compatibilité par Pathoschild (MIT) — format des journaux et des manifestes vérifié dans les sources, points de mesure du chargement, schéma de config des packs, lecture des fichiers du jeu, verdicts hors ligne. L'installateur intégré télécharge les releases de SMAPI.
- smapi.io — l'API de mise à jour qui répond pour Nexus, CurseForge, ModDrop et GitHub sans clé ni compte, son analyseur de journaux et sa liste noire.
- SMAPILogDoctor.py par ZeroXPatch — l'idée d'un diagnostic de journal pensé pour le joueur.
Nexus Mods
- Nexus Mods — API v1 pour les fiches et les téléchargements, API GraphQL v2 (non documentée, relevée par introspection) pour la découverte, la recherche et le tri sans clé. Merci de la laisser ouverte.
- Nexus Mods App, node-nexus-api et Vortex — protocole
nxm://, forme des réponses, conventions de gestionnaire.
Traduction
- lzxd par Lonami (MIT / Apache-2.0) — transposé en Swift pour lire les traductions officielles du jeu ; libmspack par Stuart Caie (LGPL-2.1) en référence, sans code repris.
- stardew-i18n-translator par Nana1873 (GPL-3.0) — modèle de conception de notre éditeur, jusqu'à la protection des marqueurs. Aucun code repris.
- Transtar par wanniwa, Internationalization par bcmpinc et ModTRANS — d'autres approches de la traduction de mods, étudiées pour les nôtres.
- Ollama (MIT) et LM Studio — les serveurs d'IA locale que l'app détecte, sans les embarquer ; Qwen2.5 par l'équipe Qwen (Apache-2.0), le modèle conseillé ; DeepL, secours facultatif avec votre propre clé.
Configuration et sauvegardes
- Generic Mod Config Menu par spacechase0 et Modern Config Menu par palmhacker13 — ce que les mods déclarent de leurs réglages, et le menu en jeu de la sonde.
- stardew-save-editor par colecrouter — référence pour lire et modifier les sauvegardes.
- Newtonsoft.Json (MIT), tel qu'embarqué par le jeu et exécuté sous Mono — l'oracle de ce que SMAPI accepte vraiment comme JSON.
Performances
- Profiler par SinZ (MIT) — minuteurs de trame et lecture des pauses du ramasse-miettes repris par la sonde ; sa visionneuse Stardew Utilities a guidé la lecture du chargement.
- FastLoads par spajus, Stardew Loading Optimizer par neoiw, Stardropium par Arshia1381, UltraSmooth par palmhacker13, SDV-Radiance par PHUICMT et StardewOptimizer par baiyu — décompilés et étudiés pour savoir ce qu'ils changent au jeu, et donc ce que nos mesures doivent voir.
Outils
- ILSpy (MIT) — décompilation des mods pour en auditer les changements.
- dnfile (MIT) — oracle Python de notre lecteur de métadonnées .NET.
- 7-Zip, The Unarchiver (
unar) et unrar — utilisés, s'ils sont installés, pour ouvrir les archives.7zet.rar. - Sentinel par Alin Lupascu (Apache-2.0 avec Commons Clause) — la levée de quarantaine conseillée pour installer l'app, qui n'est pas notarisée ; la capture de la procédure d'installation vient de son dépôt.
Inspirations
- Stardrop par Floogen et son port macOS Stardrop – Native MacOS par kautsaralbaa — vérification en direct, notes, configurations par profil.
- JuniGrid par MLD210 et StarModsManager par Arborsm et Morning Dew par Nesryn Rose Juincy — d'autres gestionnaires, lus pour leurs idées comme pour leurs pièges.
- Keybind Radar par Wooa et hotkey hub par tangsuanz — deux regards en jeu sur les raccourcis des mods, qui ont nourri le signal de conflit à la capture et le plan de raccourcis.
- SaveSaver par Sky — il a guidé le nettoyage des données que les mods laissent dans les parties.




































