Skip to content

Realse 0.0.8

Latest

Choose a tag to compare

@DiumStream-tech DiumStream-tech released this 18 Aug 13:22

🎯 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.json database: 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.py split (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_micro module (entire folder)
  • micro.json translation files
  • build_micro_page() from navigation
  • Dead code: Empty methods, unused attributes, unreachable branches
  • detect_running_apps() unused function
  • fallback() and label() 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 AudioManager

If the verification fails or the fingerprint doesn't match, do not run the executable β€” it may have been tampered with.