Mise à jour du développement d’OFIBO : Shuffle, meilleures formes d’onde et playlists collaboratives
16 septembre 2026
Le 16 septembre a été une nouvelle journée productive de développement pour OFIBO. Nous avons travaillé à la fois sur le frontend et le backend, en améliorant le lecteur de musique, en augmentant la qualité des formes d’onde pour les longs fichiers audio, en introduisant les playlists collaboratives, en affinant la gestion des playlists et en corrigeant un problème important dans les paramètres de profil.
La plupart de ces améliorations ont été construites en étendant les systèmes déjà présents dans OFIBO, plutôt qu’en remplaçant une architecture de production qui fonctionnait déjà. Cela nous a permis d’ajouter des fonctionnalités importantes tout en conservant intactes la file d’attente existante du lecteur, les playlists et la structure de l’application.
Shuffle arrive dans le lecteur OFIBO
L’une des améliorations les plus importantes du lecteur a été l’ajout de Shuffle.
Au lieu de reconstruire ou de remplacer la file de lecture existante d’OFIBO, Shuffle a été conçu comme une couche légère au-dessus de la file déjà gérée par PlayerContext. Cela signifie que la pagination de production et la file assemblée dynamiquement continuent de fonctionner exactement comme auparavant.
Shuffle fonctionne désormais à la fois dans le lecteur avec forme d’onde et dans le lecteur compact. Il garde la trace des chansons déjà lues afin qu’elles ne soient pas répétées avant que toute la file disponible à ce moment-là ait été parcourue.
Il intègre également automatiquement les nouvelles chansons ajoutées plus tard à la file. C’est particulièrement important pour OFIBO, car l’application peut continuer à charger des chansons pendant que l’auditeur écoute déjà de la musique.
Nous avons aussi ajouté un historique de lecture aléatoire. Grâce à cela, Précédent suit maintenant le véritable parcours d’écoute en mode aléatoire au lieu de revenir dans l’ordre original de la playlist.
De meilleurs contrôles du lecteur sur mobile, tablette et ordinateur
Après avoir testé le lecteur compact avec de véritables tailles d’écran de production, nous avons affiné la disposition responsive de ses contrôles.
Sur les écrans de téléphone, Favori et Shuffle restent du côté gauche du lecteur. Sur les mises en page tablette et ordinateur, ces contrôles passent du côté droit, juste avant le panier et le contrôle des licences.
Nous avons également corrigé un bug responsive qui pouvait afficher deux fois l’identité de la chanson dans le lecteur compact autour de la plage de largeur d’écran 640–767px. Le problème venait du breakpoint de visibilité utilisé pour le titre de chanson en ligne et il est désormais corrigé.
Affichage correct du temps pour les pistes de plusieurs heures
OFIBO ne se limite pas aux chansons courtes, le lecteur devait donc aussi représenter correctement les longs fichiers audio.
Auparavant, les pistes de plus d’une heure pouvaient continuer à afficher des minutes cumulées. Nous avons amélioré le formateur de durée du lecteur afin que les longues pistes utilisent désormais le format beaucoup plus clair H:MM:SS.
Par exemple, un long enregistrement peut maintenant afficher : 4:23:31.
Les chansons normales continuent d’utiliser le format familier M:SS, rien ne change donc pour les pistes habituelles.
Une bien meilleure résolution de forme d’onde pour les longs fichiers audio
Nous avons également étudié pourquoi le niveau de détail des formes d’onde diminuait progressivement sur des fichiers audio d’une ou plusieurs heures.
Le problème a été identifié dans le processus de génération de la forme d’onde. L’ancien chemin d’exportation de WaveSurfer produisait en pratique seulement environ 8 000 pics par canal, presque indépendamment de la durée du fichier audio.
Cette résolution peut convenir à une chanson courte, mais le même nombre de points de forme d’onde réparti sur une, deux ou quatre heures d’audio devient de plus en plus grossier.
Nous avons remplacé cette approche à résolution fixe par une génération de forme d’onde qui s’adapte à la durée de la piste.
Notre nouvel objectif de qualité est d’environ 10 000 pics pour quatre minutes d’audio, soit environ 41,67 pics par seconde.
Cela signifie qu’OFIBO peut désormais générer approximativement :
- 10 000 pics pour une chanson de 4 minutes
- 150 000 pics pour un enregistrement d’une heure
- 600 000 pics pour un enregistrement de 4 heures
Nous avons aussi vérifié le backend Laravel pendant l’enquête. L’endpoint de formes d’onde existant était déjà capable d’accepter le tableau de pics et d’enregistrer l’intégralité de la charge JSON.
Autrement dit, la supposée limitation de taille du payload backend n’était pas le problème. La bonne correction a été appliquée là où elle devait l’être : dans la génération et l’exportation de la forme d’onde.
Playlists collaboratives
Un autre grand domaine de travail a été la collaboration sur les playlists.
Les playlists OFIBO peuvent désormais avoir des collaborateurs approuvés qui participent à leur gestion aux côtés du propriétaire.
Point important : nous avons implémenté cela sans créer un second système d’adhésion inutile. OFIBO continue d’utiliser la table pivot existante playlist_user.
Le champ playlists.user_id reste le propriétaire canonique de la playlist, tandis que les collaborateurs approuvés sont représentés par les enregistrements existants de playlist_user avec is_collaborator = true.
Cela conserve un modèle de données plus propre et permet à la collaboration de s’intégrer naturellement au système de playlists déjà utilisé par OFIBO.
Un nouveau système d’invitations aux playlists
Même si l’adhésion approuvée continue d’utiliser la table pivot existante, l’état des invitations avait besoin de son propre cycle de vie.
Nous avons donc introduit la nouvelle table playlist_invitations.
Elle gère séparément les demandes de collaboration en attente et refusées par rapport aux membres approuvés de la playlist.
Les collaborateurs peuvent être recherchés et invités par nom d’utilisateur. Le système d’invitation protège aussi contre plusieurs situations invalides :
- Les utilisateurs ne peuvent pas s’inviter eux-mêmes.
- Les collaborateurs déjà approuvés ne peuvent pas être invités à nouveau.
- Les invitations en attente en double sont empêchées.
- Les utilisateurs ayant refusé une invitation auparavant peuvent être réinvités plus tard.
Lorsqu’une invitation est approuvée, OFIBO crée ou met à jour l’adhésion correspondante dans playlist_user et marque l’utilisateur comme collaborateur.
Si l’invitation est refusée, aucune adhésion à la playlist n’est créée.
Les collaborateurs peuvent réellement gérer la playlist
La collaboration n’est pas simplement un nom affiché à côté d’une playlist.
Nous avons étendu l’autorisation authentifiée des playlists afin que les collaborateurs approuvés puissent ouvrir et modifier des playlists partagées, qu’elles soient publiques, non répertoriées ou privées.
Les collaborateurs approuvés peuvent :
- Ajouter des chansons
- Supprimer des chansons
- Réorganiser les chansons
- Travailler dans l’interface de gestion de playlists existante
Nous avons volontairement réutilisé l’éditeur de playlists existant au lieu de créer un éditeur de collaboration séparé. Cela garde l’interface OFIBO cohérente et évite de maintenir deux systèmes différents pour pratiquement la même tâche.
La propriété de la playlist reste importante
Même si les collaborateurs peuvent gérer le contenu d’une playlist, le propriétaire d’origine reste distinct des collaborateurs.
C’est pourquoi la suppression d’une playlist est une action réservée au propriétaire.
Nous avons ajouté l’action manquante Supprimer la playlist pour les propriétaires et implémenté la suppression via les soft deletes de Laravel, tout en conservant l’indicateur logique deleted déjà utilisé par OFIBO.
Les collaborateurs ne peuvent pas supprimer la playlist et cette action destructive ne leur est pas affichée dans l’interface.
Invitations aux playlists dans Mes playlists
Les utilisateurs invités disposent maintenant d’une section Invitations aux playlists dans l’expérience existante Mes playlists.
Depuis cette section, ils peuvent Approuver ou Refuser une invitation. Une fois approuvée, la playlist partagée rejoint leur expérience normale de playlists au lieu d’apparaître dans un système de collaboration complètement séparé.
Une interface plus propre pour « Inviter un collaborateur »
Nous avons également affiné l’interface d’invitation aux playlists après l’avoir testée.
Au lieu d’afficher en permanence l’ensemble du formulaire de recherche et d’invitation des collaborateurs, la page de playlist affiche d’abord un simple bouton Inviter un collaborateur.
L’interface complète de recherche par nom d’utilisateur et d’invitation ne s’ouvre que lorsqu’elle est nécessaire.
Cela garde la page de playlist plus propre sans perdre aucune fonctionnalité de collaboration.
Afficher ensemble le propriétaire et les collaborateurs
L’identité de la playlist a également été améliorée.
Le nom d’utilisateur du propriétaire apparaît toujours en premier, mais les collaborateurs approuvés sont maintenant affichés à ses côtés.
Une playlist peut donc afficher une ligne d’identité similaire à :
@proprietaire et @collaborateur
Cela indique immédiatement qu’une playlist est maintenue par plusieurs utilisateurs OFIBO, tout en identifiant clairement son propriétaire d’origine.
Correction d’une erreur du navigateur dans les paramètres de profil
Enfin, nous avons corrigé un problème au niveau du navigateur qui pouvait empêcher l’enregistrement de paramètres de profil sans rapport entre eux.
Le problème venait du pattern HTML utilisé par le champ du nom d’utilisateur. Dans les navigateurs utilisant le nouveau mode d’expressions régulières Unicode v, le tiret de la classe de caractères [a-z0-9._-] pouvait provoquer une exception Invalid character in character class.
Comme la validation du navigateur se produit avant que le formulaire atteigne le backend, cela pouvait empêcher la mise à jour d’autres paramètres, comme le genre ou la confidentialité.
Le tiret est maintenant correctement échappé, ce qui élimine l’exception du navigateur et rétablit l’envoi normal du formulaire de profil.
Construire OFIBO sans casser ce qui fonctionne déjà
Un thème récurrent du travail du 16 septembre a été d’étendre OFIBO sans remplacer inutilement des systèmes de production stables.
Shuffle a été construit au-dessus de la file existante du lecteur. Les playlists collaboratives ont réutilisé la table pivot d’adhésion existante. L’édition partagée a réutilisé l’éditeur de playlists existant. L’étude des formes d’onde a confirmé que le backend faisait déjà correctement son travail avant toute modification du processus de génération.
Le résultat est une application musicale OFIBO plus capable, avec une lecture plus intelligente, des formes d’onde beaucoup plus détaillées pour les longs fichiers audio, une véritable collaboration sur les playlists, une gestion des playlists plus propre et des paramètres de profil plus fiables.
Étape après étape, OFIBO continue de grandir pour devenir une plateforme plus rapide et plus complète pour écouter, partager et gérer de la musique.
