Repository navigation
Releases
Realse 0.0.8
🎯 Audio Manager v0.0.8
Major Code Refactor & Optimization
🆕 What's New
Core / Application Recognition
- Complete application recognition system: New
registry/module with advanced detection - AppCache: Persistent cache for recognized applications (
~/.cache/audiomanager/app_cache.json) - AppDetector: Detection with fallback (cache → heuristics → API → game)
- AppHeuristics: Local recognition with 200+ applications and 50+ games
- AppIcons: Icon mapping for applications and games via SimpleIcons
- GameDetector: Automatic game detection for multiple platforms:
- Steam, Epic Games, GOG, Origin, Ubisoft, Battle.net
- Xbox, PlayStation, Nintendo
- Lutris, Heroic, Bottles, Itch.io, Humble Bundle
- GameAPI: Integration with SteamGridDB, RAWG, IGDB
- AppAPI: Recognition via SimpleIcons, Flathub, GitHub
- IconResolver: SimpleIcons resolution with intelligent fallback
apps.jsondatabase: 200+ applications and 50+ games
Core / Streaming
- New modules:
streaming/commands.py,streaming/channel.py - CallbackManager: Centralized callback management
UI / Widgets
- New folder structure:
ui/widgets/devices/(DeviceCard + LedDot)ui/widgets/settings/(SettingsCard + SettingsPage + UpdateWorker)ui/widgets/streaming/(Panel + ChannelCard + MixRow + Constants)ui/widgets/streaming/card/(StreamCard + StreamControls + StreamIcon)ui/widgets/changelog/(Page + Card + Item + Constants)
- New Changelog widgets: Category support with colored badges
- New Streaming widgets: Modular splitting for better maintainability
UI / Window
main_window.pysplit (508 lines → 4 files):main_window.py(main class)window_sidebar.py(SidebarBuilder)window_audio.py(AudioManager)window_pages.py(PagesManager)
🔧 Improvements
Code Organization
| File | Change |
|---|---|
streaming_panel.py |
Split 743 lines → 4 files (-34%) |
device_card.py |
Extracted LedDot to separate file |
stream_card.py |
Split into 3 files for better separation of concerns |
settings_page.py |
Split into 3 files (settings_page, settings_card, update_worker) |
changelog_page.py |
Split into 4 files with category support |
main_window.py |
Split 508 lines → 4 files |
Core Optimizations
| File | Reduction |
|---|---|
backends/linux.py |
-23% lines |
streaming/mixer.py |
-47% lines |
manager.py |
-16% lines |
UI Improvements
- Removed hardcoded app icons in favor of dynamic SimpleIcons loading
- Streamlined UI by removing redundant info labels
- Unified card styles in components.py
- Simplified builders in pages.py
🔒 Security
- Protection against malformed JSON in application registry
- 64 KB limit on icon downloads to prevent memory abuse
- 256 KB limit on GitHub update check response
- Forced update check via HTTPS only
- Route sanitization: rejection of non-string keys/values
- Protection on slug length in icon URL resolver (64 chars max)
🐛 Bug Fixes
| Bug | Fix |
|---|---|
webrtcvoiceengine not recognized as Discord |
Added to aliases |
Sober (Roblox Linux) not recognized as Roblox |
Added to aliases |
| Volume channels not validated | Validation and clamping (0.0–1.0) |
| Routes not sanitized | Rejection of non-string keys/values |
| No slug length limit | 64 characters max |
| No update response limit | 256 KB limit |
| HTTP update check possible | HTTPS only |
Icons not imported in streaming_panel.py |
Fixed import |
target_devices missing in stream_controls.py |
Added attribute |
nav_sections not imported in window_pages.py |
Fixed import |
QLabel not imported in window_audio.py |
Fixed import |
theme not imported in changelog files |
Fixed imports |
| Obsolete imports in backends/linux.py | Updated to new registry paths |
🗑️ Removals
streaming_micromodule (entire folder)micro.jsontranslation filesbuild_micro_page()from navigation- Dead code: Empty methods, unused attributes, unreachable branches
detect_running_apps()unused functionfallback()andlabel()from icons.py (unused)_apply_card_style()and_apply_slider_style()(empty methods)- Hardcoded icons in device_card.py, mix_row.py, channel_card.py, stream_icon.py, stream_controls.py
- Redundant constant in icon_resolver.py
- Unused coded icons from icons.py
📊 Statistics
| Metric | Before | After | Change |
|---|---|---|---|
streaming_panel.py |
743 lines | 4 files (~490 lines) | -34% |
main_window.py |
508 lines | 4 files (~525 lines) | +3% (org) |
backends/linux.py |
261 lines | ~200 lines | -23% |
streaming/mixer.py |
281 lines | ~150 lines | -47% |
manager.py |
166 lines | ~140 lines | -16% |
| Applications recognized | ~60 | 200+ | +233% |
| Games recognized | ~10 | 50+ | +400% |
🎯 Highlights
- ✅ 200+ applications and 50+ games automatically recognized
- ✅ Multi-platform game detection (Steam, Epic, GOG, Origin, Ubisoft, Battle.net, Xbox, PlayStation, Nintendo)
- ✅ Complete code reorganization with modular file structure
- ✅ Better maintainability and separation of concerns
- ✅ Improved security with input validation and limits
- ✅ Faster app recognition with persistent cache
- ✅ Modern Changelog with categories and colored badges
🔐 Verification
This release is signed with GPG. You can verify the authenticity of the executable before running it.
Public key fingerprint:
34C2C91E106AD7833D65785F1F5E959577226B2C
Verify the signature:
gpg --verify AudioManager.asc AudioManagerIf the verification fails or the fingerprint doesn't match, do not run the executable — it may have been tampered with.
Realse 0.0.7
[0.0.7] — 2026-08-07
Refactoring & Architecture
- Complete Style folder overhaul: Removed
dialogs_style.pyand splitbase_style.pyinto 4 separate files (base.py,buttons.py,components.py,pages.py) for better maintainability. - Import cleanup: Removed all
__init__.pyfiles across the project and updated imports to use explicit paths. - Style unification: Centralized card styles (DeviceCard, StreamCard) in the global stylesheet via dynamic properties.
Optimizations
- Icon caching: Implemented a caching system for FontAwesome icons to reduce CPU load during UI rendering.
- UI rendering optimization: Removed frequent
setStyleSheetcalls in widgets in favor of CSS property selectors, improving interface smoothness. - Code optimization: Overall code cleanup and improved module structure.
Fixed
- Fixed a bug where the navigation button to the Streaming page was not translated, present since the introduction of the translation system. Note: in v0.0.8, an option will be added to allow the "Streaming" button to remain untranslated, since many users already understand the term as-is (translated as "Flux" in French, "Transmisión" in Spanish). This option may be removed later.
🔐 Verification
This release is signed with GPG. You can verify the authenticity of the executable before running it.
Public key fingerprint:
34C2C91E106AD7833D65785F1F5E959577226B2C
Verify the signature:
gpg --verify AudioManager.asc AudioManagerIf the verification fails or the fingerprint doesn't match, do not run the executable — it may have been tampered with.
Realse 0.0.6
Added
- Full Navigation Unification: Settings and Changelog pages are now identical to other sections (Outputs, Inputs, etc.).
- Sidebar Reorganization: Settings and Changelog buttons moved to the bottom of the sidebar, just above the Refresh button.
- Removed internal headers and footers from Settings and Changelog to better integrate with the main interface.
Fixed
- Fixed a bug where changing language or theme would force navigation away from the Settings page.
- Restored audio safety (mute/unmute) when activating streaming mode, including during startup restoration.
- The Settings page now remains active after applying changes, providing a smoother user experience.
🔐 Verification
This release is signed with GPG. You can verify the authenticity of the executable before running it.
Public key fingerprint:
34C2C91E106AD7833D65785F1F5E959577226B2C
Verify the signature:
gpg --verify AudioManager.asc AudioManagerIf the verification fails or the fingerprint doesn't match, do not run the executable — it may have been tampered with.
Realse 0.0.5
Added
- Settings and Changelog now open directly inside the main window — no more separate pop-up windows.
- Startup loading screen that restores saved state (settings, streaming button) before showing the interface.
STREAMING_SAVE_BUTTON_STATEoption inconfig.py— when enabled, the streaming mode button state is persisted across launches.SPLASH_DURATION_MSoption inconfig.py— controls the duration of the startup loading screen.- Full compatibility with the language system (i18n) for all new features (splash screen messages in EN/FR/ES).
- Version 0.0.5 release notes added to all three language changelogs.
🔐 Verification
This release is signed with GPG. You can verify the authenticity of the executable before running it.
Public key fingerprint:
34C2C91E106AD7833D65785F1F5E959577226B2C
Verify the signature:
gpg --verify AudioManager.asc AudioManagerIf the verification fails or the fingerprint doesn't match, do not run the executable — it may have been tampered with.
Realse 0.0.4
Changed
- Refactored the codebase to improve structure and long-term maintainability.
- Reorganized several UI and core modules into dedicated folders for better clarity.
Fixed
- Fixed missing translations across the interface.
- Fixed full compatibility with the language system (i18n) in dialogs, cards, streaming views, and the main window.
- Fixed multiple hardcoded UI texts that were not using the translation system.
Full Changelog: 0.0.3...0.0.4
🔐 Verification
This release is signed with GPG. You can verify the authenticity of the executable before running it.
Public key fingerprint:
34C2C91E106AD7833D65785F1F5E959577226B2C
Verify the signature:
gpg --verify AudioManager.asc AudioManagerIf the verification fails or the fingerprint doesn't match, do not run the executable — it may have been tampered with.
Realse 0.0.3
Added
- Multi-language support (English and French and Spanish) — English is the default.
- Changelog dialog (this file's in-app counterpart) — accessible from the sidebar.
- "View Changelog" button under the Settings button.
i18n.pymodule with a full translation system (t(),set_language(),get_language()).
Changed
- Redesigned the Settings dialog with clearer sections (Appearance, Language, GitHub & Updates).
- Redesigned the update-check result dialog with a polished, consistent interface.
- Icons in the Settings dialog now correctly follow the active theme color (fixes white icons on the light theme).
- The Settings dialog now updates its texts and icons immediately when the language or theme is changed, without needing to close and reopen it.
Fixed
- Icons in Settings were always rendered in white regardless of the active theme.
Full Changelog: 0.0.2...0.0.3
🔐 Verification
This release is signed with GPG. You can verify the authenticity of the executable before running it.
Public key fingerprint:
34C2C91E106AD7833D65785F1F5E959577226B2C
Verify the signature:
gpg --verify AudioManager.asc AudioManagerIf the verification fails or the fingerprint doesn't match, do not run the executable — it may have been tampered with.