This is the CHANGELOG file for inLimbo
All notable changes to this project will be documented in this file.
This is a markdown file that will contain all the logs of ALPHA and STABLE release commits with a decent overview of changes.
This file is useful iff:
- A commit is hugely breaking and the changes have to be reverted
 
- To better understand the progression of this project
 
- General debugging cases
 
Format
This CHANGELOG follows the below format:
----
## [Version X.Y] --- DD-MM-YYYY
 
## CHANGETYPE: [{CHANGETYPES}]
 
### Added
- Description of the new feature or functionality.
- Example: Added support for new audio file formats in the parser.
 
### Changed
- Description of modifications or improvements.
- Example: Improved performance of metadata parsing.
 
### Fixed
- Description of bug fixes or issues resolved.
- Example: Fixed crash when parsing invalid files.
 
### Removed
- Description of removed features or code.
- Example: Deprecated the old file format parser.
 
---
- Important
 
- CHANGETYPES: [FEAT, CHORE, NET, MINOR, MED, CLANG] 
 
- Versions are of two types: [ALPHA, STABLE] 
 
----------------------------------— CHANGELOG STARTS -------------------------------------—
[ALPHA 0.1] — 26-12-2024
Added
NIL
Changed
- Made most the 
src/dirsort files as headers for easier and straightforward inclusion during compilation 
main.cpp in src/dirsort is renamed as test.cpp, as such that file can be used to test the song map that is created and its efficiency and other metrics 
- Pushing forward with an integration of 
src/dirsort utilities with the main.cpp (which comprises of the FTXUI components) 
- Addition of a new parent in 
config.toml ==> [debug]: will have all the fields required to turn on the debug logs during parsing, etc. 
- Moved the InodeMapper class to a 
src/dirsort/inode_mapper.hpp 
- Minor 
.gitignore changes 
CMakeLists.txt now requires taglib to compile 
- Updated 
src/network/NETWORK.md file:- Now explains on how to change password and salt in detail 
Fixed
- Unnecessary logs that slow down the storing of metadata in song map (with debug field in config.toml)
 
Removed
NIL
[ALPHA 0.2] — 26-12-2024
Added
NIL
Changed
- Attempted integration of 
src/dirsort with FTXUI components (NOT COMPLETE AT ALL) 
- Setup macros for parents and fields of 
src/parser/examples/config.toml in toml_parser.hpp 
- Moved MusicPlayer class to 
src/ui/ui_handler.hpp 
- Added logo to the assets (with credits)
 
- Officially started to work on the audio backend api class in 
src/music/audio_playback.hpp using miniaudio 
- Basic readme changes
 
Fixed
NIL
Removed
NIL
Overally pretty buggy, but integration was smoother than expected.
Known Issues to fix in immediate commits
-> Fix emscripten build by introducing TagLib's web-assembly build
-> Fix the FILENAME macro and its corresponding compilation problems in src/parser/toml_parser.hpp
[ALPHA 0.3] — 27-12-2024
Added
NIL
Changed
- Majorly developed FTXUI components and rendering problems
 
- Event::Tab now works fully as intended along with proper intended display of album -> songs (similar to CMUS)
 
- Finally shifted to reading TOML configs to 
$HOME/.config/inLimbo/config.toml 
- Added filePath to Metadata struct (for miniaudio and simplicity)
 
Fixed
- Compilation issues with 
src/network and src/dirsort source files due to improper accessing of src/parser/examples/config.toml 
^ (every source file now reads from $HOME/.config/inLimbo/config.toml by default)
Removed
NIL
Commit was clean but status bar components took a hit and are not rendering properly
Known Issues to fix in immediate commits
-> Fix emscripten build by introducing TagLib's web-assembly build
[ALPHA 0.4] — 29-12-2024
Added
NIL
Changed
- Started the integration of audio playback (miniaudio) and FTXUI class [A little rough on the edges but most of the functions in 
src/music/audio_playback.hpp work] 
- Fixed the EMSCRIPTEN compilation issues regarding taglib (but it still will not work as intended as dummy functions are placed for EMSCRIPTEN compilation instead)
 
- Made album names distinct items in the songs pane
 
- Clean up + Formatting
 
- Modified 
src/music/audio_playback.hpp to work in a different thread to avoid any freezing of tui and other issues 
- Some API call changes to 
miniaudio for MiniAudioPlayer class to make functions like getDuration() work 
- General 
ui/ui_handler.hpp changes to accomodate for the integration 
Fixed
- Web compilation using EMSCRIPTEN
 
Removed
- taglib_parser.cpp (moved the definitions back to the header) [Subsequent changes to build files]
 
Commit is decently sized however now that integration is completed it is time to refactor and move to other goals
Known Issues to fix in immediate commits
NIL
[ALPHA 0.5] — 31-12-2024
Added
Changed
- Added keybind configuration and integrated them (WITH THE EXCEPTION OF SPECIAL KEYS LIKE TAB, ENTER, ESC ...)
 
- Updated UI code even further (no cleanup though) with better overall flow and neatness of the project
 
- Added seek functionality in miniaudio backend (BROKEN)
 
- Current playing state struct now holds even more metadata of the currently playing song (in hopes to display them in the future)
 
- Updated 
config.toml with keybinds as a new parent 
Fixed
- The previously ugly status bar is now slightly better
 
- Bug when in help window, other keybinds would still work and cause mishap (so now only one keybind works when in help win)
 
Removed
NIL
Commit is decently sized however now that integration is completed it is time to refactor and move to other goals
Known Issues to fix in immediate commits
NIL
[ALPHA 0.6] — 31-12-2024
Added
src/ui/misc.hpp for miscellaneous functions that help the UI of the project 
Changed
- Added more fields to 
config.toml:- goto_main_screen, toggle_mute and view_lyrics with subsequent parsing and UI changes and integrations 
- Fixed forward seek (works fine) but backward seek is still bugged
 
- Added screen macros and better screen management to FTXUI
 
- Lyrics and additional info is now displayed in another window clearly (lyrics are still not scrollable however)
 
Fixed
- Multiple screens code refactored the old code to just switch screens based on booleans
 
- Forward seek of a song
 
Removed
NIL
Commit is medium sized with decent changes to UI and configs.
Known Issues to fix in immediate commits
- Backward seek
 
- Scrolling of lyrics
 
[ALPHA 0.7] — 02-01-2025
Added
NIL
Changed
- Finally fixed the keybinds for special keys like 
Tab, Esc, Enter and Space and is completely dynamic (depends on config.toml ONLY) 
- Massively optimised 
src/ui/keymaps.hpp to have unordered_maps to hold and traverse required fields 
- Some more documentation in 
config.toml and src/network/NETWORK.md 
Fixed
- Keybinds are now FULLY dynamic (regardless of whether the event is dynamic or just a character as per FTXUIs Event system)
 
Removed
NIL
Commit is small but damn worth it. Fixed a very big issue and has solid optimisations
Known Issues to fix in immediate commits
- Backward seek
 
- Scrolling of lyrics
 
[ALPHA 0.8] — 03-01-2025
Added
NIL
Changed
seekTime backend function to fix forward and backward seek times now 
- Added a 
charToStr function for better code understanding 
- UI bug fix for song seek
 
Fixed
- Forward AND backward seek work now :) (an issue with the previous formula to calculate PCM frames)
 
- UI bug when the song would play from beginning but it would still not be shown as the beginning
 
Removed
NIL
Very small commit but noteworthy as it fixes two bugs which were quite annoying
Known Issues to fix in immediate commits
[ALPHA 0.9] — 03-01-2025
Added
NIL
Changed
- Changed 
CMakeLists.txt file to properly link and compile the project 
- TagLib parser now parses the duration metadata as well
 
- Formatting of code
 
- Slight refactor and optimisations of 
src/ui/ui_handler.hpp 
- Now when 
play_song is invoked, all the songs of the current artist after the selected song are enqueued to a list, so even if we just view and switch artists, it will not change the current song 
Fixed
- Play next and previous songs are fixed thanks to Song queue implementation
 
Removed
NIL
Decently sized commit but the issue of songs changing just by traversal is fixed now thanks to Song queue. This also is step forward to adding more keybinds to add song to queue, remove song from queue so on..
Known Issues to fix in immediate commits
[ALPHA 1.0] — 04-01-2025
Added
src/ui/colors.hpp
Changed
- Finally shifted to all true colors by using 
ftxui::Color::RGB function 
- Removed 
spinner_frames 
- Updated main UI (Added number of songs in queue and next song display)
 
- Fixed help window to showcase the supported special chars (Tab, Enter, Space, Esc)
 
- Lyrics window is changed from (panes are now vertical not horizontal)
 
Fixed
- Help window fix for special chars
 
- True colors implementation
 
Removed
NIL
Medium sized commit that adds quite a few features and implementation but more work needs to be done.
Known Issues to fix in immediate commits
[ALPHA 1.1] — 05-01-2025
Added
NIL
Changed
- Added 3 new fields to 
config.toml and Adding Song to Queue and Replay Song has been integrated and subsequent changes to src/ui/keymaps.hpp 
- Changed MiniAudioPlayer class's play() function thread sleep to 10ms
 
- Removed Repeat Mode UI for now
 
- Additional thread detach and creation handling to 
PlayCurrentSong in src/ui/ui_handler.hpp 
Fixed
- Some concurrency issues in 
PlayCurrentSong when invoking the function too fast 
Removed
Commit that proceeds to add queue features and fix issues (regarding threads) along the way
Known Issues to fix in immediate commits
[ALPHA 1.2] — 07-01-2025
Added
- Colors customizability setup (
COLORS.md) 
- Better Song Menu Viewing
 
- Better error handling of MusicPlayer class
 
src/ui/components - Scroller component 
Changed
- Changing SongMenu from traditional menu to vector<Element> with apt rendering and scroll (NOT DYNAMIC SCROLLING THO)
 
- Added colors customizability with one field currently and subsequent changes to 
src/ui/colors.hpp 
- UI overhaul (MAJOR)
 
- Better formatting of lyrics (FIXED)
 
- Formatting + some refactor
 
- Tried to make the player more safe with
 
- New fields to 
config.toml 
- New component 
scroller to try and render the scroller in render lyrics func 
Fixed
- Formatting of lyrics
 
- Song menu UI
 
Removed
- Some redundant functions like 
format_song_info 
Very big commit in dev branch that is to be merged with main after some sanity checks
Known Issues to fix in immediate commits
- Scrolling of lyrics and sone menu
 
- Runtime errors with respect to 
PlayCurrentSong() that may be due to detaching the audio thread 
[ALPHA 1.3] — 10-01-2025
Added
- New field in 
config.toml -> Remove Song From Queue 
Changed
- Added QUEUE SCREEN with subsequent proper integration and error handling (with testing)
 
- Functionality of removing song from queue while in QUEUE SCREEN is added with testing
 
- CatchEvent changes with respect to active_screen to avoid confusion in UI
 
- Attempted to fix concurrency issues (still WIP)
 
Fixed
NIL
Removed
NIL
Decent commit with more to come, refactor TBD else its gonna be trouble
Known Issues to fix in immediate commits
- Scrolling of lyrics and sone menu
 
- Runtime errors with respect to 
PlayCurrentSong() that may be due to detaching the audio thread 
[ALPHA 1.4] — 11-01-2025
Added
- Some concurrency safechecks in 
src/music/audio_playback.hpp 
- Massive theming update, can use hexadecimal format to color the TUI with subsequent changes to 
src/ui/colors.hpp and src/ui/ui_handler.hpp 
- Added multiple DBG BUILD options to check for issues in addressing, threads etc.
 
- Implemented loading the songmap from cache file ("lib.sync") itself [However, the time to access the cache and time to load the directory seem to be very similar]
 
Changed
- Moved 
.clang-format to / in file source tree 
- Changes to README regarding how to debug build
 
- Changes to COLORS.md regarding how to theme using hexadecimal
 
- New fields to 
config.toml under [colors] => songs, artists title's bg and fg 
- Changed the InLimboColors struct in 
src/ui/colors.hpp to have ftxui::Color as member vars instead of TrueColor::Color 
- Implementation of rendering lyrics is moved to a menu, sort of dynamic fixing it soon
 
Fixed
- Bug with deleting the song from queue
 
- Some keybind issues while in different screens
 
- A bug where 
album_indices_traversed was unaccounted for when navigating song menu to the top 
Removed
NIL
Pretty big commit that added a lot of changes, hopefully shifting toward refactoring in the next immediate commits
Known Issues to fix in immediate commits
- Scrolling of lyrics and song menu (lyrics is almost done)
 
- Runtime errors with respect to 
PlayCurrentSong() that may be due to detaching the audio thread 
[ALPHA 1.5] — 12-01-2025
Added
src/dbus -> To interact with dbus using gio (general purpose IO lib) and glib (utility lib) 
- Added 
gio and glib as inLimbo's dependencies 
Changed
- Changes to README.md to showcase dependencies
 
- Complete integration of MPRISService class into inLimbo with subsequent changes and testing
 
- Metadata of current song is given to dbus that can be easily accessed by playerctl and similar daemons
 
Fixed
NIL
Removed
NIL
Minor commit that somehow added a pretty neat feature. Will continue to work on setting up implementations (if needed)
Known Issues to fix in immediate commits
- Scrolling of lyrics and song menu (lyrics is almost done)
 
- Runtime errors with respect to 
PlayCurrentSong() that may be due to detaching the audio thread 
[ALPHA 1.6] — 13-01-2025
Added
- Doxygen documentation setup 
.Doxyfile 
- New resized logo for Doxygen
 
- Landing page basic html file
 
- Changes to all markdown files for doxygen docs
 
Changed
- Comments to most headers to add Doxygen documentation
 
- Added 
add_artists_songs_to_queue and play_this_song_next fields to config.toml with subsequent integration 
Fixed
- Issue with RenderQueueScreen's menu disappearing when removing song from queue
 
Removed
NIL
Weird commit that sets up for better and more transparent way of understanding the project thanks to doxygen
Known Issues to fix in immediate commits
- Scrolling of lyrics and song menu (lyrics is almost done)
 
- Runtime errors with respect to 
PlayCurrentSong() that may be due to detaching the audio thread 
[ALPHA 1.7] — 13-01-2025
Added
src/ui/thread_manager.hpp -> To handle concurrency in UI with testing + doxygen docs setup 
- A LOT of new color fields to 
config.toml (Check it out) with subsequent integration in src/ui/colors.hpp and src/ui/ui_handler.hpp 
- Some object deletion and freeing when calling MPRISService destructor
 
src/signal -> To catch all signals and handle gracefully (FULL INTEGRATION NOT DONE YET) 
- Some changes to format lyrics function and added ComponentState in 
src/ui/misc.hpp to keep track of all components of UI together 
Changed
- Added more functions in misc.hpp to refactor code in ui_handler
 
Fixed
- Finally fixed scrolling lyrics menu issue, now it completely works with testing
 
- Weird issue with deletion of song from queue is fully fixed with testing
 
Removed
NIL
Sizeable commit with refactoring and more configuration options as its priority, more such commits expected in future
Known Issues to fix in immediate commits
- Runtime errors with respect to 
PlayCurrentSong() that may be due to detaching the audio thread 
[ALPHA 1.8] — 13-01-2025
Added
.clang-tidy file for better code practice 
Changed
- SignalHandler class now sends all errors with backtrace and other information to a log file in 
$HOME/.cache/inLimbo/ directory 
- Added unlockPlayMutex in 
src/ui/thread_manager.hpp with doxygen docs 
- Formatting and other refactoring changes (small)
 
Fixed
NIL
Removed
NIL
Small commit that may fix codeql CI issue, going for refactor + small feature updates like cache, playlists, etc. (before the network integration)
Known Issues to fix in immediate commits
- Runtime errors with respect to 
PlayCurrentSong() that may be due to detaching the audio thread 
[ALPHA 1.9] — 14-01-2025
Added
- Image Template processing kit 
CImg.h and ftxui::image_view component in src/ui/components/ and src/ui/components/libs 
- Thumbnail parsing function using taglib
 
Changed
- New screen (SHOW_SONG_INFO_SCREEN) with thumbnail and currently playing song info with progress bar
 
- New field in 
config.toml to view song info screen (subsequent changes to keymaps.hpp and ui_handler.hpp) 
- Modifications to build file (
CMakeLists.txt) to include the component as library for proper linking 
- Readme changes
 
imagemagick is now a required dependency for the inLimbo project 
Fixed
NIL
Removed
NIL
Medium commit with a new screen, I should really start to refactor now...
Known Issues to fix in immediate commits
- Runtime errors with respect to 
PlayCurrentSong() that may be due to detaching the audio thread 
- Centering of the image_view
 
[ALPHA 2.0] — 16-01-2025
Added
- Added 
cereal serialization and deserialization library (header only) to load songs statically (it is insanely fast as hoped) 
Changed
- inLimbo will now always try to load songs from a 
$HOME/.config/inLimbo/lib.bin file (static load) if not found dynamic load 
- Added documentation for 
src/dirsort headers 
Fixed
NIL
Removed
NIL
Small commit that adds a new dependency and a greatly needed feature of caching the song directory
Known Issues to fix in immediate commits
- Runtime errors with respect to 
PlayCurrentSong() that may be due to detaching the audio thread 
- Centering of the image_view
 
[ALPHA 2.1] — 17-01-2025
Added
Changed
- Command line arguments setup with subsequent changes to 
src/cmg-line-args.hpp and main.cpp 
Fixed
- Issue with flac file thumbnail extraction
 
Removed
NIL
Small commit with some issues + cmd line args setup
Known Issues to fix in immediate commits
- Runtime errors with respect to 
PlayCurrentSong() that may be due to detaching the audio thread 
- Centering of the image_view
 
[ALPHA 2.2] — 19-01-2025
Added
assets/completions/inLimbo-completions.fish and assets/inLimbo.desktop 
Changed
- Refactored the arg-handler and cmd-line-args headers
 
- Completions for 
BASH, ZSH and FISH shells work with testing 
- inLimbo.desktop setup works (with rofi, not ags for some reason)
 
init.sh now sets up the preferred shell for command line args completion 
- Added option to build globally
 
Fixed
- Completions for BASH and ZSH
 
- Removed unnecessary header that broke CodeQL CI
 
Removed
NIL
Small commit with some nice touch ups for user interaction with the binary
Known Issues to fix in immediate commits
- Runtime errors with respect to 
PlayCurrentSong() that may be due to detaching the audio thread (BIG) 
- Centering of the image_view (NOT THAT BIG)
 
[ALPHA 2.3] — 22-01-2025
Added
src/ui/properties.hpp – To parse global properties from config.toml and subsequent changes to ui_handler 
Makefile for easier building without a hassle, subsequent changes to README 
Changed
- Added new color field (inactive_menu_cursor_bg) and complete integration
 
- New cmd-line-arg 
--update-cache-run :- Removes cache then reads the directory from config.toml and runs the application (subsequent changes to completions, cmd-line-args.hpp, arg-handler.hpp) 
- Parsing bitrate using TagLib integrated and tested 
mp3 and flac files 
- Audio file MIME types are found and displayed in SongInfoScreen
 
- UI should not try to PlayNextSong() in Run() function if song_queue is empty.
 
Fixed
NIL
Removed
NIL
Sizeable commit with new fields, changes and features that bring the app together
Known Issues to fix in immediate commits
- Runtime errors with respect to 
PlayCurrentSong() that may be due to detaching the audio thread (BIG) 
- Centering of the image_view (NOT THAT BIG)
 
[ALPHA 2.4] — 24-01-2025
Added
- Added tests/ directory to perform unit tests using GTest and subsequent new files and test suites
 
src/threads/ created to have a worker thread system for better concurrency handling 
- Added a new screen to view current audio sinks (outputs) 
 
- Added a destructor to ThreadManager class to properly join all non-detached threads
 
Changed
- Cleanups in 
src/ui , src/music src/dirsort 
- Changed ThreadManager drastically
 
- Modified Run function in ui_handler to NOT be detached
 
- Got rid of mutex unlock and used lock_guard instead + more concurrency changes
 
- New field in config.toml -> toggle_audio_devices (will change this name later)
 
- Made mpris_dbus_thread a unique thread
 
- PlayCurrentSong now uses the WorkerThread Pool to enqueue all tasks and has a more robust way to handle concurrency
 
- New workflow to build tests
 
Fixed
NIL
Removed
NIL
Huge commit (I have not mentioned a lot changes here do read the commit history)
Known Issues to fix in immediate commits
- Runtime errors with respect to 
PlayCurrentSong() that may be due to detaching the audio thread (BIG) [Seems to be solvable] 
- Centering of the image_view (NOT THAT BIG)
 
[ALPHA 2.5] — 25-01-2025
Added
- New tests for 
taglib and toml_parser with integration 
- BUILD.md for clear and concise build instructions using Makefile, CMake and web-asm
 
src/helpers directory for general helpers -> Added levenshtein.hpp for measuring difference btw 2 strings (for possible suggestions) 
run_tests.sh to run all the tests in tests/ directory and give a cumulative output (will use in workflow) 
Changed
- Cmd-line-arg string suggestion moved from naive findClosestMatch function to levenshtein distance measure
 
- Added a MACRO 
INLIMBO_CONFIG_HOME that allows for custom location of config.toml with subsequent changes to toml_parser.hpp 
- Color field error now reports the field that is giving the error (better verbosity) for more clarity on the config issue
 
- Workflow update to run tests as well
 
Fixed
- Mild issue where color field error would be vague in error description
 
Removed
NIL
Medium commit, moving strictly towards testing + refactor
Known Issues to fix in immediate commits
- Runtime errors with respect to 
PlayCurrentSong() that may be due to detaching the audio thread (BIG) [Seems to be solvable] 
- Centering of the image_view (NOT THAT BIG)
 
[ALPHA 2.6] — 26-01-2025
Added
NIL
Changed
- Followed better trailing return types for a lot of functions
 
- More verbosity for taglib parser logs using parseFile function call
 
- loadFile and getSongDuration functions in miniaudio are now an async functions that have significant performace improvement especially during fast UI calls to play a song
 
- UpdatePlayingState is now part of the worker thread pool with better struct data protection to avoid any corrupt values in fields
 
- Fetching the debugLogBool value should be faster now (previously there were so many string comparisons idk what i was thinking, now it is just a boolean)
 
- Keybinds and InLimboColors structs are initialized in main func and given as parameterized values to MusicPlayer
 
- Subsequent changes to 
tests/audio and tests/taglib test suites 
Fixed
- The MAJOR issue of the player just exiting if the song queue was <= ~6 songs is fixed :)
 
- Unknown songs being overwritten in song map to track 0 by default is fixed (now every unknown song that taglib could not parse is shown under 
<Unknown Artist>) 
- When traversing back down to the last song, the album_indices_traversed value was buggy (would cause songs to not be played), now it is fixed
 
Removed
- Unnecessary libsync file and constructor and destructor of InodeMapper (might add them later when logging is setup)
 
- Useless function processCacheFile in InodeMapper
 
Sizeable commit, a lot of bugs resolved which is great, still hoping for better refactor and more test suite inclusion
Known Issues to fix in immediate commits
- Holding the keybind for PlayNextSong() / PlayPrevSong() doesnt break anything, but MiniAudioPlayer class is not as responsive as the UI, so it lags behind (MAJOR ISSUE)
 
(The outcome of the above issue would be that if you hold PlayNextSong() func call and it goes to Song A, the MiniAudioPlayer might still be playing Song B, which appears BEFORE Song A)
- Centering of the image_view (NOT THAT BIG)
 
[ALPHA 2.7] — 27-01-2025
Added
NIL
Changed
- Overall version bump to 2.7
 
- Added 
build-global, build-global-uninstall to makefile 
- Subsequent makefile, readme and build file changes
 
- CMakeLists.txt now posts a very neat verbose output of the build configuration it will undergo (useful for debugging)
 
- Moved 
PlayingState struct definition outside of ui_handler header 
- Overall code formatting and minor fixes
 
Fixed
- Debug builds for ASan and TSan using makefile
 
Removed
- Removed debounce time for now, seems unnecessary but might add in the future
 
Small commit with some neat build changes that makes life pretty easy
Known Issues to fix in immediate commits
- Holding the keybind for PlayNextSong() / PlayPrevSong() doesnt break anything, but MiniAudioPlayer class is not as responsive as the UI, so it lags behind (MAJOR ISSUE)
 
(The outcome of the above issue would be that if you hold PlayNextSong() func call and it goes to Song A, the MiniAudioPlayer might still be playing Song B, which appears BEFORE Song A)
- Centering of the image_view (NOT THAT BIG)
 
[ALPHA 2.8] — 29-01-2025
Added
- New workflow to build in g++ and clang++ (x86 arch)
 
Changed
- Makefile now gives the option to compile to any desired c++ compiler
 
- General code refactor + minor issues fix mainly in ui_handler
 
- UI overhaul + updates to several render functions
 
- New function in miniaudio class to show case more details regarding the miniaudio engine, device config etc..
 
- Artist menu is now a scroller base component not a menu anymore
 
- New colors and keybinds fields (more updates soon)
 
Fixed
- Minor issue of a song first loading with full volume by default before getting updated (would sound weird and jarring)
 
Removed
Medium commit with some refactoring and small, nice QOL changes
Known Issues to fix in immediate commits
- Holding the keybind for PlayNextSong() / PlayPrevSong() doesnt break anything, but MiniAudioPlayer class is not as responsive as the UI, so it lags behind (MAJOR ISSUE)
 
(The outcome of the above issue would be that if you hold PlayNextSong() func call and it goes to Song A, the MiniAudioPlayer might still be playing Song B, which appears BEFORE Song A)
- Centering of the image_view (NOT THAT BIG)
 
- Fixing current_position bug when run refresh thread is woken up a lot of times (BIG)
 
[ALPHA 2.9] — 01-02-2025
Added
- Trie 
src/helpers/trie.hpp --> For efficient string search 
- Powerful and neat string search for artists (songs does not work atm) with next and previous search match (circular match)
 
Changed
- Every header now uses 
#pragma once instead of #ifndef (idk why i was doing that) 
- Overall refactor / code change to most headers
 
- Added 2 new debug parser logs (keybinds and colors)
 
- Much better UI for Song Info screen
 
- Readme changes to explain the default keybinds and their use
 
Fixed
- Centered the Image View component in Song Info Screen
 
Removed
- setDevice in MiniAudioPlayer (will add in future but not the priority right now)
 
Medium commit with some refactoring and neat changes, getting to better UI and codebase maybe
Known Issues to fix in immediate commits
- Holding the keybind for PlayNextSong() / PlayPrevSong() doesnt break anything, but MiniAudioPlayer class is not as responsive as the UI, so it lags behind (MAJOR ISSUE)
 
(The outcome of the above issue would be that if you hold PlayNextSong() func call and it goes to Song A, the MiniAudioPlayer might still be playing Song B, which appears BEFORE Song A)
- Fixing current_position bug when run refresh thread is woken up a lot of times (BIG)
 
[ALPHA 3.0] — 02-02-2025
Added
- State management header 
src/ui/states/state.hpp that has the member structs and methods of Queue, PlayingState and Component for now (will add more soon) 
- New and modified arguments 
--print-song-tree, --print-songs-by-artist=, --print-songs-by-genre-all, --print-artists-all 
Changed
- Refactor sizeable code in ui_handler for better state management
 
- Modified 
--print-song-tree argument for a better unicode tree like representation (like lsblk) 
- Changed all completion files to accomodate for new cmd-line-args
 
- Reading the version is no longer statically compiled, it now reads from 
VERSION file and prints it 
- CommandLineArgs got a change to print the value from the positional argument for a more robust cli interface
 
- Readme changes
 
Fixed
- The issue of unknown tracks being numbered correctly only at dynamic load with taglib debug log on is fixed (now works as intended)
 
Removed
NIL
Medium commit with very satisfactory refactoring changes, some features to the cli interface
Known Issues to fix in immediate commits
- Holding the keybind for PlayNextSong() / PlayPrevSong() doesnt break anything, but MiniAudioPlayer class is not as responsive as the UI, so it lags behind (MAJOR ISSUE)
 
(The outcome of the above issue would be that if you hold PlayNextSong() func call and it goes to Song A, the MiniAudioPlayer might still be playing Song B, which appears BEFORE Song A)
- Fixing current_position bug when run refresh thread is woken up a lot of times (BIG)