Skip to content

Releases: mayrinck/blufixer

BluFixer 1.6.7

23 May 02:18

Choose a tag to compare

BluFixer 1.6.7

Architecture

  • Monolithic main.c split into 9 modular files under src/
  • Root main.c deleted (dead code, never compiled)
  • src/main.c renamed to src/app.c; AppData now a named typedef struct with extern

Stability & Safety

  • Race condition on scanning flag fixed via g_atomic_int
  • Double-launch guard in launch_async_action() (checks widget sensitivity)
  • Dynamic error_detail per CommandContext (no global buffer, thread-safe by construction)
  • last_error_detail changed to char * with proper g_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 guard
  • system() replaced with g_spawn_command_line_sync() in Flatpak path
  • Temp file unlink() failures logged as warnings instead of silently cast
  • Cache fix checks /var/lib/bluetooth exists before rm -rf

System Fixes

  • Exclusive Fixes section — device-specific fixes group (Realtek, Broadcom, GH Live) hidden by default
  • Barrot/Generic Dual Mode fix — manages ControllerMode=dual in main.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 054c vendor — DualSense PS5 (0ce6), DualSense Edge (0df2), DualShock 4 Gen 1/2 (05c4/09cc), PS4 USB Adaptor (0ba0)
  • Sony 12ba expanded — Guitar Hero Live (0100), Rock Band Keyboard (0210)
  • CECHYA-0080 (12ba:0030) — Headset category, Sony manufacturer, PS3 licensed
  • Mouse category1ea7:0064"Mouse" with input-mouse-symbolic
  • Category icon systemlookup_category table 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 AdwAlertDialog with AdwPreferencesPage layout
  • 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-sub uses alpha(@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 install

BluFixer 1.6.0

21 May 04:16

Choose a tag to compare

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.c split into 9 modules under src/ (i18n, dialogs, fixes, scan, version, platform, ui_helpers, header)
  • Legal notice — About dialog now includes an AI assistance disclosure
  • Binary tarballmake dist now 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 install

BlueFix v1.5.5

20 May 17:26

Choose a tag to compare

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.