Repository navigation
π― 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.