OFIBO Development Update: Shuffle, Better Waveforms and Collaborative Playlists
September 16, 2026
September 16 was another productive development day for OFIBO. We worked across both the frontend and backend, improving the music player, upgrading waveform quality for long audio, introducing collaborative playlists, refining playlist management, and fixing an important profile-settings issue.
Most of these upgrades were built by extending the systems OFIBO already had instead of replacing working production architecture. This allowed us to introduce substantial new functionality while keeping the existing player queue, playlists and application structure intact.
Shuffle Arrived in the OFIBO Player
One of the biggest player upgrades was the addition of Shuffle.
Instead of rebuilding or replacing OFIBO's existing playback queue, Shuffle was created
as a thin layer on top of the queue already managed by PlayerContext.
This means the production pagination and dynamically assembled queue continue working
exactly as before.
Shuffle now works in both the waveform player and the compact player. It keeps track of which songs have already been played so tracks are not repeated until the currently available queue has been traversed.
It also automatically incorporates new songs that are appended to the queue later. This is particularly important for OFIBO because the application can continue loading songs while the listener is already playing music.
We also added shuffle playback history. Because of this, Previous now follows the actual shuffled listening path instead of jumping backward through the original playlist order.
Better Player Controls Across Mobile, Tablet and Desktop
After testing the compact player at real production screen sizes, we refined the responsive layout of its controls.
On phone-sized screens, Favorite and Shuffle remain on the left side of the player. On tablet and desktop layouts, those controls move to the right side immediately before the cart and licensing control.
We also fixed a responsive bug that could cause the song identity to appear twice in the compact player around the 640–767px screen-width range. The issue came from the visibility breakpoint used for the inline song title and has now been corrected.
Proper Time Display for Hour-Long Tracks
OFIBO is not limited to short songs, so the player also needed to correctly represent long-form audio.
Previously, tracks longer than one hour could continue displaying accumulated minutes.
We upgraded the player time formatter so long tracks now use the much clearer
H:MM:SS format.
For example, a long recording can now display: 4:23:31.
Normal songs still use the familiar M:SS format, so nothing changes for
ordinary tracks.
Massively Better Waveform Resolution for Long Audio
We also investigated why waveform detail became increasingly poor on hour-long and multi-hour audio files.
The problem was traced to the waveform generation process. The previous WaveSurfer export path effectively produced only around 8,000 peaks per channel, largely regardless of the duration of the audio.
That resolution can work well for a short song, but the same number of waveform points stretched across one, two or four hours of audio becomes increasingly coarse.
We replaced this fixed-resolution approach with waveform generation that scales according to the duration of the track.
Our new quality target is approximately 10,000 peaks for every four minutes of audio, or roughly 41.67 peaks per second.
That means OFIBO can now generate approximately:
- 10,000 peaks for a 4-minute song
- 150,000 peaks for a 1-hour recording
- 600,000 peaks for a 4-hour recording
We also verified the Laravel backend while investigating the issue. The existing waveform endpoint was already capable of accepting the peaks array and storing the complete JSON payload.
In other words, the suspected backend payload limitation was not the problem. The correct fix was made where it belonged: in waveform generation and export.
Collaborative Playlists
Another major area of work was playlist collaboration.
OFIBO playlists can now have approved collaborators who can participate in managing the playlist together with its owner.
Importantly, we implemented this without creating an unnecessary second membership
system. OFIBO continues using the existing playlist_user pivot table.
The playlists.user_id field remains the canonical playlist owner, while
approved collaborators are represented through existing
playlist_user records using
is_collaborator = true.
This keeps the data model cleaner and allows collaboration to integrate naturally with the playlist system OFIBO already uses.
A New Playlist Invitation System
While approved membership continues using the existing pivot table, invitation state needed its own lifecycle.
For that purpose, we introduced the new
playlist_invitations table.
It handles pending and denied collaboration requests separately from approved playlist membership.
Collaborators can be discovered and invited by username. The invitation system also protects against several invalid situations:
- Users cannot invite themselves.
- Existing approved collaborators cannot be invited again.
- Duplicate pending invitations are prevented.
- Users who previously denied an invitation can be invited again later.
When an invitation is approved, OFIBO creates or updates the corresponding
playlist_user membership and marks the user as a collaborator.
If the invitation is denied, no playlist membership is created.
Collaborators Can Actually Manage the Playlist
Collaboration is not just a name displayed beside a playlist.
We extended authenticated playlist authorization so approved collaborators can open and edit shared playlists whether those playlists are public, unlisted or private.
Approved collaborators can:
- Add songs
- Remove songs
- Reorder songs
- Work inside the existing playlist-management interface
We deliberately reused the existing playlist editor instead of creating a separate collaboration editor. This keeps the OFIBO interface consistent and avoids maintaining two different systems for essentially the same task.
Playlist Ownership Still Matters
Although collaborators can manage the contents of a playlist, the original owner remains distinct from collaborators.
Playlist deletion is therefore an owner-only action.
We added the missing Delete Playlist action for owners and implemented deletion through
Laravel soft deletes while preserving OFIBO's existing logical
deleted flag.
Collaborators cannot delete the playlist, and the destructive action is not exposed to them in the interface.
Playlist Invitations Inside My Playlists
Invited users now receive an Invitations to playlists section inside the existing My Playlists experience.
From there, users can Approve or Deny an invitation. Once approved, the shared playlist joins their existing playlist experience instead of appearing inside a completely separate collaboration system.
A Cleaner “Invite Collaborator” Interface
We also refined the playlist invitation UI after testing it.
Instead of permanently displaying the entire collaborator search and invitation form, the playlist page initially shows a simple Invite collaborator button.
The full username-search and invitation interface opens only when it is needed.
This keeps the playlist page cleaner while retaining all collaboration functionality.
Showing the Owner and Collaborators Together
Playlist identity was also upgraded.
The owner username continues to appear first, but approved collaborators are now displayed alongside the owner.
A playlist can therefore show an identity line similar to:
@owner and @collaborator
This makes it immediately clear when a playlist is being maintained by more than one OFIBO user while still identifying who originally owns it.
Profile Settings Browser Bug Fixed
Finally, we fixed a browser-level issue that could prevent unrelated profile settings from being saved.
The problem came from the HTML pattern used by the username field. In
browsers using the newer Unicode v regular-expression mode, the hyphen in
the character class [a-z0-9._-] could trigger an
Invalid character in character class exception.
Because browser validation happens before the form reaches the backend, this could prevent updates to completely unrelated settings such as gender or privacy.
The hyphen is now correctly escaped, eliminating the browser exception and restoring normal profile-form submission.
Building OFIBO Without Breaking What Already Works
A recurring theme in the September 16 work was extending OFIBO without unnecessarily replacing stable production systems.
Shuffle was built on top of the existing player queue. Collaborative playlists reused the existing playlist-membership pivot. Shared editing reused the existing playlist editor. The waveform investigation confirmed the backend was already doing its job before changes were made to the generation process.
The result is a more capable OFIBO music app with smarter playback, much more detailed long-form waveforms, true playlist collaboration, cleaner playlist management and more reliable profile settings.
Step by step, OFIBO continues growing into a faster and more complete platform for listening to, sharing and managing music.
