SAVINGSFinancial gain :Save $1,500 to $3,000 / year per studio (Zero software royalties)
NO SUBSCRIPTIONSoftware cost :$0 / month · Open-source, zero recurring fees, no vendor lock-in
MAC & MAC MINIStudio appliance :Perfect silent control unit: fanless profile, dual HDMI screens & auto-launch
APPLE SILICONM1 to M4 chips :Apple Silicon tuning: instant 4K playback with zero heat build-up
BUDGET MINI PCSAccessible hardware :Runs on refurbished hardware (Dell Wyse, HP ProDesk) starting at $40
GRAPHICS ACCELERATIONSmooth playback :Hardware-accelerated engine: buttery smooth 4K & 2K 60 fps playback
100% OFFLINEOutage proof :Operates without Internet: resilient against fiber cuts and ISP outages
TOUCH KIOSKSelf-service :Member touchscreen with live class countdown and easy selection
DUAL SCREENSMulti-display :Simultaneous feeds: main workout screen + gym floor TVs
24/7 GYM RADIOBackground music :Continuous music flow with seamless crossfade and automated voice alerts
CUSTOM CONTENTCatalog freedom :100% Agnostic: play your own workouts (Cycling, HIIT, Yoga, Pilates)
MULTI-OSCross-platform :Windows 10/11, macOS, Linux, Android tablets and iPadOS exploration
NATIVE ANDROIDDedicated app :Available on touchscreen tablets to control your fitness studio seamlessly
SIMPLE REMOTEEasy control :Choice of 2.4 GHz wireless clicker or local smartphone QR web app
PRIVACY & GDPRData sovereignty :100% Local: zero analytics, zero cameras, your data stays in your club
BLACKOUT RECOVERYElectrical resilience :Autonomous auto-recovery and instant playout resume after power outage
1-CLICK BACKUPUniversal export :Export and restore your entire schedule and video catalog in a single ZIP
ECO-FRIENDLYLow power draw :Under 10 Watts active draw: silent, cost-effective and eco-friendly
Back to releases
V3.0.4

Bobine V3.0.4

Bobine

La version 3.0.4 apporte une évolution majeure à l'ergonomie, au confort de pilotage et à la robustesse générale de Bobine sur l'ensemble des systèmes d'exploitation. Elle introduit le support universel des manettes de jeu (HTML5 Gamepad API), des télécommandes, de la souris et du tactile sur toutes les interfaces (/cinema, /grid, /kiosk, /radio), intègre le défilement horizontal fluide des titres longs (animation Marquee) avec imposition stricte des dimensions des miniatures, clarifie le périmètre câblé de /grid, généralise la désinstallation automatique en 1 clic sur tous les OS, et résout définitivement les saccades, boucles de lecture et décalages temporels.


Téléchargement des Binaires Officiels (Version 3.0.4)

Plateforme & EnvironnementFormatArchitectureTéléchargement DirectProfil & Fonctionnalités Clés
Android.apk
(Paquet natif)
ARM64
(arm64-v8a)
Télécharger Bobine-3.0.4.apkTablettes Tactiles & Régie Studio Mobile
• Régie autonome complète : remplace tout PC encombrant dans la salle
• Double affichage : pupitre coach tactile (/grid) + diffusion TV grand écran (/cinema)
• Prise en charge des manettes Bluetooth/USB et télécommandes relayées vers la TV
• Désinstallation native intégrée déclenchée depuis l'interface d'administration
• 100% hors-ligne, fiable même en sous-sol sans Wi-Fi ni réseau mobile
Windows 11.exe
(Installeur)
x86-64Télécharger Bobine-Setup-3.0.4.exePC de Bureau & Ordinateurs Portables Windows
• Désinstallation automatique en 1 clic via le désinstalleur officiel Inno Setup
• Démarrage discret près de l'horloge (icône de notification en arrière-plan)
• Mode capot fermé (clamshell) : branchez le portable en HDMI à la télé sans mise en veille
• Contrôle universel par manette (Xbox/PlayStation), télécommande ou smartphone
Debian Ubuntu Linux Mint.deb
(Paquet & Dépôt)
x86-64
(amd64)
Dépôt APT apt.bobine.fit
bobine_3.0.4_amd64.deb
Postes Linux de Bureau & PC Reconditionnés
• Désinstallation automatique intégrée avec dialogue d'élévation graphique Polkit
• Relance automatique des services utilisateur et système post-installation
• Mises à jour fluides en 1 clic via le dépôt officiel apt.bobine.fit ou Logithèque Ubuntu
• Pilotage complet à la manette ou à la télécommande sans clavier physique
Apple.dmg
(Image disque)
Apple Silicon
(arm64)
Télécharger Bobine-3.0.4.dmgMacBook, Mac mini & iMac (Apple Silicon)
• Désinstallation propre : purge du bundle /Applications/Bobine.app et des LaunchAgents
• Expérience Mac soignée : icône Retina native et menu discret dans la barre supérieure
• Diffusion 4K silencieuse : zéro surchauffe et zéro bruit de ventilateur sur MacBook
• Connexion directe à la TV ou au vidéo-projecteur du studio via HDMI ou USB-C
TauriBinaire natif
(Tauri 2)
x86-64 (Linux)Télécharger bobine-assistantAssistant Graphique de Gestion & Déploiement
• Scanner réseau intelligent : détecte automatiquement toutes les bornes Bobine sur le Wi-Fi/LAN
• Déploiement et mise à jour des bornes à distance sans toucher au terminal
• Connexion SSH assistée par mot de passe ou clé SSH importée en 1 clic
Debian ApplianceScript automatiséx86-64curl -sSL https://bobine.fit/install.sh | bashAppliance Dédiée Headless (Mini-PC Dédié)
• Déploiement automatisé en 18 étapes sur mini-PC dédié (Wyse 5070, NUC, Tiny)
• Désinstallation complète autonome via l'exécutable /usr/local/sbin/bobine-uninstall
• Redémarrage immédiat et inconditionnel des services après mise à jour
• Pilotage HDMI-CEC matériel : allume et éteint automatiquement le téléviseur
GitHubBinaires & SourcesMulti-OSVoir les Releases GitHubHistorique Complet des Versions & Code Source
• Sommes de contrôle SHA-256 certifiées, archives sources & notes de version

PARTIE I — NOUVELLES FONCTIONNALITÉS & AMÉLIORATIONS MAJEURES

1. Support Universel des Contrôles : Manettes de Jeu (HTML5 Gamepad), Télécommandes, Souris & Tactile

  • Manettes de jeu standard (Bluetooth & USB) : Intégration complète de la spécification standard HTML5 Gamepad API dans le gestionnaire universel useKioskRemote. Bobine reconnaît nativement les manettes Xbox Series / Xbox One, PlayStation DualSense / DualShock 4, Nintendo Switch Pro Controller, 8BitDo et manettes USB génériques :
    • Stick analogique gauche & Croix directionnelle (D-Pad) : Navigation bidirectionnelle et multidirectionnelle avec calcul géométrique 2D euclidien (moveDomFocus2D) vers la carte la plus proche. Gestion d'un debouncing strict et d'un seuil de zone morte (deadzone = 0.45) avec répétition fluide après 400ms d'appui continu.
    • Bouton A / Croix (Sud) : Validation, sélection d'un cours et lancement immédiat.
    • Bouton B / Rond (Est) : Retour en arrière, fermeture d'une modale ou arrêt de lecture.
    • Bouton X / Y (Nord / Ouest) : Mise en pause / reprise instantanée de la vidéo ou du fond audio.
    • Gâchettes L1 / R1 (Bumpers) : Saut rapide arrière / avant (-30s / +30s en cours de lecture, ou navigation par carte en grille).
    • Gâchettes analogiques L2 / R2 (Triggers) : Réglage fin du volume sonore (diminution / augmentation).
    • Bouton Start / Options : Pause / lecture globale.
    • Bouton Select / Back : Retour à l'écran précédent.
  • Télécommandes physiques multimédias (IR, Bluetooth, RF 2.4 GHz) :
    • Détection native des touches clavier multimédias standard : MediaPlayPause, MediaPlay, MediaPause, MediaTrackPrevious, MediaTrackNext, MediaFastForward, MediaRewind, MediaStop, AudioVolumeUp, AudioVolumeDown, AudioVolumeMute.
    • Prise en charge des télécommandes avec touches directionnelles (ArrowUp, ArrowDown, ArrowLeft, ArrowRight), validation (Enter, Space) et retour (Escape, Backspace, BrowserBack).
  • Souris, Pointeurs & Écrans Tactiles :
    • Interaction directe au clic ou au touch sur l'ensemble des éléments (.cinema-card, .cinema-all-item, commandes de lecture).
    • Clic ou tap direct sur la vidéo en cours pour basculer en lecture / pause sans nécessiter de barre de contrôle encombrante.
  • Disponibilité Universelle sur Toutes les Interfaces & Plateformes :
    • Actif sur le grand écran adhérents (/cinema), le pupitre coach tactile (/grid), le kiosque autonome (/kiosk) et la radio (/radio).
    • Fonctionne sous Windows, Linux Bureau, Debian Headless, macOS et Android.

2. Défilement Horizontal Fluide des Titres Longs (Marquee Animation) & Imposition Stricte des Miniatures

  • Problème résolu : Auparavant, un titre de cours particulièrement long (ex. « BODYPUMP 125 — Express 30 Minutes Renforcement & Cardio ») repoussait la largeur minimale intrinsèque du conteneur flex, déformant la vignette proportionnellement et cassant l'alignement des rangées.
  • Composant MarqueeText :
    • Détection automatique et dynamique du dépassement textuel (scrollWidth > clientWidth).
    • Si le titre tient dans l'espace alloué, il reste rigoureusement statique.
    • Si le titre dépasse, il s'anime d'un défilement horizontal fluide en aller-retour alterné (style Apple TV, Spotify et Netflix), avec pause de lecture au début et à la fin, sans jamais couper brutalement les mots.
    • Masque de fondu progressif sur la tranche droite (mask-image: linear-gradient) pour un rendu visuel moderne et cinématique.
  • Dimensions des Miniatures Rigoureusement Imposées :
    • Cartes horizontales de la grille (.cinema-card) : Largeur strictement verrouillée à 280px (width: 280px !important; min-width: 280px; max-width: 280px).
    • Vignettes 16:9 (.cinema-card-thumb) : Hauteur verrouillée à 157.5px (flex: 0 0 157.5px).
    • Liste intégrale inférieure (.cinema-all-thumb) : Dimensions imposées de 120px × 67.5px, avec troncature et défilement du titre (.cinema-all-title) confiné à la zone réservée.
    • Plus aucun cours, quelle que soit la longueur de son intitulé, ne peut altérer la géométrie de la grille.

3. Clarification du Périmètre /grid Câblé Exclusif dans l'App & la Documentation

  • Périmètre d'action clarifié : Sur /grid (le pupitre tactile coach), la sélection d'un cours pilote exclusivement la sortie câblée (HDMI / loopback). La sortie réseau indépendante est quant à elle administrée depuis /dashboard-network.
  • Intégration dans l'interface Réglages : Ajout d'un encadré pédagogique sous le sélecteur du mode d'affichage câblé précisant explicitement ce découplage fonctionnel, éliminant tout doute pour l'exploitant de la salle.
  • Mise à jour de la documentation technique : Synchronisation des spécifications dans docs/ARCHITECTURE.md et docs/cahier-des-charges-affichage-hybride.md.

4. Désinstallation Automatique Multi-Plateforme en 1 Clic

  • Linux Bureau (.deb) : Déclenchement automatique d'un processus privilégié via Polkit (pkexec apt-get remove -y bobine ou pkexec dpkg -P bobine) avec dialogue natif de confirmation graphique du bureau.
  • Windows (.exe) : Lancement en processus détaché du désinstalleur officiel Inno Setup (unins000.exe) et fermeture propre de l'icône de barre des tâches (BobineTray).
  • macOS (.dmg) : Purge automatisée du LaunchAgent com.bobine.app.plist et suppression du bundle /Applications/Bobine.app.
  • Android (.apk) : Appel de l'intent système standard Intent.ACTION_DELETE, ouvrant la boîte de dialogue native Android de désinstallation.
  • Appliance Headless (Debian) : Exécution de /usr/local/sbin/bobine-uninstall avec purge des services systemd, profils Chromium et scripts X11.
  • Sécurisation par modale stricte : Saisie obligatoire du mot « DÉSINSTALLER » pour valider l'opération.

5. Refonte Ergonomique de la Zone de Danger (Réglages)

  • Deux cartes distinctes et aérées : Séparation complète de la Remise à zéro des données (vidéothèque, musiques, réglages) et de la Désinstallation du logiciel.
  • Élimination des redondances : Textes clarifiés, boutons explicites, fin des répétitions de sous-titres confus.
  • Rappel contextuel de la méthode manuelle : Indication pour chaque système de la ligne de commande ou de la méthode standard équivalente.

6. Écran de Pause Cinématique, Descriptions & Métadonnées Réelles Vérifiées

  • Présence scénique : Logo Bobine agrandi jusqu'à 150px avec halo lumineux respirant.
  • Bouton « Reprendre » réactif : Couleurs d'accentuation calquées dynamiquement sur le thème actif (var(--accent-primary) et var(--accent-primary-fg)).
  • Détection dynamique des formats audio/vidéo :
    • Canaux audio réels vérifiés par FFprobe : affichage de Stéréo 2.0, Surround 5.1 ou Mono 1.0.
    • Résolution réelle : 4K Ultra HD (>= 2160p), 1440p QHD, 1080p Full HD ou 720p HD.
    • Élimination des informations techniques inutiles (débit et framerate masqués sur l'écran de pause pour préserver l'élégance visuelle).
  • Champ Synopsis & Descriptions de cours : Édition dans la Bibliothèque, extraction des balises MP4/MKV à l'import, et affichage typographique épuré sur l'écran de pause.
  • Rétro-remplissage automatique : Analyse en arrière-plan des métadonnées étendues des vidéos déjà présentes lors de la migration 3.0.4 sans réimportation.

PARTIE II — CORRECTIFS DE BUGS & FIABILISATION SYSTÈME

1. Élimination de la Boucle Play/Pause Infinie et des Saccades Vidéo

  • Cause racine identifiée : Un watchdog agressif programmé toutes les 2,5 secondes dans /cinema et /kiosk surveillait la progression du compteur video.currentTime. Lors d'une charge CPU momentanée ou d'un léger retard de décodage, le watchdog considérait à tort la vidéo comme figée et forçait un cycle destructif pause() -> currentTime = lastTime -> play(). Ce comportement réinitialisait le tampon du décodeur toutes les 2,5s, créant des saccades visibles et une boucle de relance infinie.
  • Correctif apporté :
    • Suppression intégrale de cette logique destructive de relance permanente.
    • Remplacement par une détection douce de gel avéré : seuil allongé à 7,5 secondes consécutives sans progression avant de déclencher une reprise non intrusive (play()), sans altérer le pointeur de lecture ni interrompre le flux décompressé.
    • Ajout d'une période de grâce de 3,5s après tout seek manuel.
    • Protection anti-rebond stricte de 1,5 seconde sur les clics de lancement de cours dans /grid (handleSelect), empêchant les doubles envois WebSocket concurrents lors d'un tap tactile répété.

2. Lissage Monotone du Temps de Lecture sur l'Interface Headless

  • Cause racine identifiée : Sur l'interface /grid en mode headless, le bandeau de contrôle du cours en cours affichait un compteur qui sautait de 2 à 3 secondes d'avant en arrière. Ce phénomène provenait de la gigue réseau (jitter) entre les rapports d'état WebSocket émis par le lecteur et l'interpolation temporelle locale du composant React.
  • Correctif apporté :
    • Implémentation d'une progression strictement monotone du temps de lecture : le compteur temporel affiché ne peut plus jamais reculer tant que la lecture est active (Math.max(lastPosition, currentPosition)).
    • Dès lors qu'un seek volontaire est opéré par le coach, le saut temporel est immédiatement pris en compte.

3. Relais Universel des Événements Entrée & Focus HDMI sur Android

  • Cause racine identifiée : En mode headless sur Android, la sortie HDMI secondaire pilotée par BobinePresentation ne recevait aucun événement d'entrée clavier, souris, manette ou télécommande car la fenêtre de présentation était configurée avec le drapeau FLAG_NOT_FOCUSABLE.
  • Correctif apporté :
    • Configuration de la fenêtre BobinePresentation comme réceptive aux focus (isFocusable = true, levée du flag FLAG_NOT_FOCUSABLE).
    • Relais transparent dans MainActivity.kt de dispatchKeyEvent et dispatchGenericMotionEvent vers l'instance active de BobinePresentation.
    • Les télécommandes USB branchées sur la tablette ou les manettes Bluetooth connectées contrôlent désormais directement la vitrine /cinema affichée sur le téléviseur.

4. Résolution de l'Affichage HDMI Headless Android & Multi-OS

  • Cause racine identifiée : En mode headless, l'affichage /cinema sur l'écran HDMI externe présentait parfois un écran noir ou incomplet sans la grille des cours.
  • Correctif apporté :
    • Harmonisation du routage d'affichage : lorsque le mode headless est actif, /cinema affiche désormais la vitrine cinématique et la grille complète de cours prêtes à être explorées.
    • En mode double écran studio (dual_screen), l'écran HDMI affiche l'attente passive élégante pendant que la tablette tactile affiche le pupitre de contrôle /grid.

5. Audio Direct & Sans Délai au Lancement Vidéo

  • Cause racine identifiée : Les vidéos lancées démarraient avec une coupure de son d'une demi-seconde ou un retard perceptible sur certaines sorties HDMI et récepteurs audio.
  • Correctif apporté :
    • Initialisation explicite et immédiate des flux audio dans les balises vidéo (volume = 1.0, muted = false).
    • Activation de preload="auto" pour amorcer le décodage des premières trames audio avant le déclenchement de la lecture.
    • Suppression de tout délai artificiel ou tentative de fade-in audio prématuré au démarrage.

6. Suppression Intégrale de la Vidéo d'Introduction (lancement.mp4) & Démarrage Instantané

  • Mesure définitive :
    • Suppression complète du fichier lancement.mp4 de l'arborescence du dépôt, des scripts de packaging et des archives d'installation.
    • Retrait du réglage d'activation/désactivation de l'animation d'introduction dans les Réglages et la base de données.
    • Réduction immédiate de l'empreinte disque et du poids des binaires d'environ 11 Mo.
    • Démarrage instantané de tous les cours dès la sélection, sans aucun temps d'attente.

7. Fiabilisation du Redémarrage des Services Post-Installation & Post-Mise à Jour

  • Script d'installation appliance (install.sh) : Remplacement de l'instruction passive systemctl enable --now par un redémarrage forcé explicite systemctl restart || systemctl start sur les services bobine-backend.service, bobine-kiosk.service, bobine-audio-guard.service et le timer bobine-watchdog.timer.
  • Paquets Debian (.deb / apt.bobine.fit) :
    • Le script de pré-suppression (prerm) mémorise dans /run/bobine-restart-after-upgrade si des processus Bobine étaient actifs.
    • Le script de post-installation (postinst) relance automatiquement le service utilisateur systemctl --user restart bobine.service ou l'exécutable /usr/bin/bobine en arrière-plan pour la session de bureau active, et redémarre les services systemd globaux sur les déploiements headless.
  • Gestionnaire de mise à jour 1-clic Linux Bureau : Suppression de l'arrêt prématuré du backend dans self.restart_services() avant la validation du mot de passe Polkit.

Référencement & Mots-Clés (GEO)

Bobine est un logiciel libre distribué sous licence GNU AGPL-3.0. Le code source complet est public, auditable et accessible sur le dépôt officiel : https://github.com/FantasmaGlad/Bobine.

Mots-clés de référence :
régie vidéo autonome salle de sport, support manette jeu fitness html5 gamepad, télécommande usb affichage dynamique, défilement horizontal titres marquee, miniatures 16 9 verrouillées, diffusion vidéo cours collectifs fitness hors-ligne, alternative open source Les Mills Cinema, alternative Wexer Virtual, affichage dynamique 4K natif sans abonnement, désinstallation automatique multi-plateforme en 1 clic, double écran indépendant tablette tactile et projecteur HDMI, pupitre coach tactile, écran de pause cinématique dynamique, redémarrage automatique services systemd linux, paquet debian officiel logithèque ubuntu app center, lecteur vidéo autonome AGPL-3.0.