Releases: mayrinck/blufixer
Releases · mayrinck/blufixer
BluFixer 1.6.7
BluFixer 1.6.7
Architecture
- Monolithic
main.csplit into 9 modular files undersrc/ - Root
main.cdeleted (dead code, never compiled) src/main.crenamed tosrc/app.c;AppDatanow a namedtypedef structwithextern
Stability & Safety
- Race condition on
scanningflag fixed viag_atomic_int - Double-launch guard in
launch_async_action()(checks widget sensitivity) - Dynamic
error_detailperCommandContext(no global buffer, thread-safe by construction) last_error_detailchanged tochar *with properg_free()— memory leak fixed- NULL guards added: error detail dialog, spinner, window/button in callbacks, manufacturer field
atexit(cleanup_temp_files)registered once via static guardsystem()replaced withg_spawn_command_line_sync()in Flatpak path- Temp file
unlink()failures logged as warnings instead of silently cast - Cache fix checks
/var/lib/bluetoothexists beforerm -rf
System Fixes
- Exclusive Fixes section — device-specific fixes group (Realtek, Broadcom, GH Live) hidden by default
- Barrot/Generic Dual Mode fix — manages
ControllerMode=dualinmain.conf+ restart; gated behind Energy fix - GH Live fix — creates udev rules file for Guitar Hero Live controller (
12ba:0100) - System Fixes reordered: Energy → Dual Mode → Legacy pairing → ERTM
- All fix titles normalized to sentence case across all 5 languages
- Dead code (
g_autofree char *fw_check) removed in Realtek fix
Device Database & Categories
- Sony
054cvendor — DualSense PS5 (0ce6), DualSense Edge (0df2), DualShock 4 Gen 1/2 (05c4/09cc), PS4 USB Adaptor (0ba0) - Sony
12baexpanded — Guitar Hero Live (0100), Rock Band Keyboard (0210) - CECHYA-0080 (
12ba:0030) — Headset category, Sony manufacturer, PS3 licensed - Mouse category —
1ea7:0064→"Mouse"withinput-mouse-symbolic - Category icon system —
lookup_categorytable with 8 entries, displayed at 14px in device list - Device name sanitisation —
&replaced with-e-in scan post-processing loop - Vendor ID expansion — Intel (
8086+8087), MediaTek (0e8d+14c3), Broadcom/Cypress (0a5c+1000), Sony (12ba+054c) - PS licensed device detection covers PS3, PS4, and PS5 by hardware ID
UI & UX
- Preferences dialog (Ctrl+P) — Theme and Language via
AdwActionRow+GtkDropDown - Keyboard shortcuts — F1 (help), F5 (rescan), F12 (debug), Ctrl+Shift+C (copy tech sheet), Ctrl+P (prefs)
- Shortcuts dialog rewritten as
AdwAlertDialogwithAdwPreferencesPagelayout - Copy tech sheet format changed to
{title}: {value}instead of bare values - Bluetooth HCI version parsed across 3 tools (bluetoothctl, btmgmt, hciconfig)
- Update button only shown when release tag > app version
- Dark mode compatible —
.device-subusesalpha(@theme_fg_color, 0.55) - Language change shows restart toast; theme change applies immediately
i18n
- 5 languages: English, Portuguese, Spanish, Russian, Chinese
- Custom i18n table (no gettext dependency)
- 15 missing translation keys added, including
/var/lib/bluetooth not found
Other
- Comprehensive
TESTING.md(165 lines, 14 sections)
Install
# Binary tarball
tar -xzf BluFixer-1.6.7-x86_64.tar.gz && cd BluFixer-1.6.7 && ./blufixer
# RPM (Fedora 43+)
sudo dnf install BluFixer-1.6.7-x86_64.rpm
# DEB (Debian 12+ / Ubuntu 24.04+)
sudo dpkg -i BluFixer-1.6.7-amd64.deb && sudo apt install -f
# From source
make && sudo make installBluFixer 1.6.0
BluFixer 1.6.0
What's New
- Theme selector — System / Light / Dark, persisted in
~/.config/blufixer/theme - Update button — appears in the header bar when a new GitHub release is detected
- Website link — in the app menu, pointing to the GitHub project page
- Modular codebase — monolithic
main.csplit into 9 modules undersrc/(i18n, dialogs, fixes, scan, version, platform, ui_helpers, header) - Legal notice — About dialog now includes an AI assistance disclosure
- Binary tarball —
make distnow ships a pre-compiled executable (extract & run) - i18n updates — new keys for Theme, Legal Notice, Website, Update button; unused keys removed
Install (from terminal)
# Binary tarball (recommended)
tar -xzf BluFixer-1.6.0-x86_64.tar.gz && cd BluFixer-1.6.0 && ./blufixer
# RPM (Fedora 43+)
sudo dnf install build/BluFixer-1.6.0-x86_64.rpm
# DEB (Debian 12+ / Ubuntu 24.04+)
sudo dpkg -i build/BluFixer-1.6.0-amd64.deb && sudo apt install -f
# From source
make && sudo make installBlueFix v1.5.5
New
- Full async I/O — All popen() reads (version detection, device scan) moved to GThread + g_idle_add, eliminating UI freezes.
- Case-insensitive scan — lsusb filtering now matches regardless of letter casing.
Fixes
- Command injection — g_shell_quote() on usermod -aG lp username parameter.
- Reliable restart — Replaced system("blufixer &") with g_spawn_async(argv) + g_application_quit().
- Scan race condition — Timeout cancellation + scanning guard flag.
- Widget leaks — g_list_free → g_list_free_full(..., g_object_unref) on all dynamic row lists.
- Crash on rapid close — Idle callbacks now guard with gtk_widget_get_realized().
- Version parse validation — strtol endptr checks for bluetoothctl/btmgmt/hciconfig parsers.
- Pango markup escaping — <> → <>, & → & in info dialogs.
- Translation audit — 6 key mismatches fixed, 3 missing entries added, PT text corrections.
- Askpass i18n — Zenity prompt now uses _(); atexit always registered.
Internal
- GError logging on subprocess spawn failures.
- (void) casts on all pclose() calls.
- Dead info_body() removed (fully replaced by info5()).
- Buffer sizes bumped (label[64] → [128]).
- Repo URL updated to github.com/mayrinck/blufixer.