Préférences d’affichage

fbxctl

Un moteur de contrôle Freebox partagé entre ligne de commande, interface terminal et application Mac native.

Interface Mac native de fbxctl montrant un profil Home fictif, des ressources DHCP et un inspecteur, avec les mentions Demo visibles

Interface macOS native · Demo synthétique capturée le 14 octobre 2026

Technologies · TypeScript · Bun · OpenTUI · Swift · SwiftUI

Problème et contexte

Administrer plusieurs Freebox demande de garder clairement visibles l’appareil choisi, le mode d’accès et les preuves disponibles avant toute modification. Un script, une session terminal et une application native doivent suivre les mêmes règles d’opération. Cet outil non officiel n’est affilié ni à Free ni à Iliad.

Ma contribution

Développé un moteur typé partagé pour les profils, l’inspection des ressources et les modifications de configuration soumises à revue. Relié une CLI scriptable et une interface OpenTUI à ce cœur, puis développé une application Mac SwiftUI autour de la CLI embarquée. Ajouté l’édition à partir des ressources, la comparaison entre l’état actuel et les réglages demandés, ainsi que des résultats conservés pour l’appareil et le mode d’accès sélectionnés.

Choix et compromis

Conserver un seul moteur d’opérations pour les trois interfaces.

Donner à chaque interface sa propre présentation en partageant l’identité de l’appareil, la confirmation et le sens des résultats. L’application native délègue les opérations à sa CLI embarquée au lieu de maintenir un second ensemble de règles pour le routeur.

Lier chaque modification à l’appareil exact et à l’état relu avant application.

Exiger un plan non périmé et sa confirmation exacte, relire avant l’envoi et refuser les plans modifiés ou déjà utilisés. Si une opération envoyée ne peut pas être vérifiée, conserver un résultat incertain qui demande un contrôle avant une nouvelle tentative.

Résultat

Un parcours cohérent implémenté pour les profils, l’inspection des ressources et les modifications relues, en CLI, dans le terminal et dans l’interface Mac native. La présentation utilise les données synthétiques de l’application locale en préversion.

Autres visuels

Profil Studio synthétique en accès distant, avec redirections de ports refusées et ports entrants inconnus présentés comme des états de preuve distincts
Demo native · lectures refusées et inconnues distinctes ; aucun routeur contacté
Revue synthétique d’une redirection de port avec valeurs avant et demandées, confirmation exacte et commande d’application désactivée
Demo native · revue d’une modification synthétique ; cet écran ne peut pas écrire sur une Freebox
Projets sélectionnés / sur 15