4.5 KiB
4.5 KiB
Migration Status
Implemented
- Replaced the default Tauri + Leptos starter UI with a desktop-oriented Razer app shell.
- Added native Linux hidraw discovery for supported devices:
- Razer Basilisk V3
1532:0099 - Razer Basilisk V3 Pro wired
1532:00aa - Razer Basilisk V3 Pro wireless
1532:00ab
- Razer Basilisk V3
- Ported the Python report framing used by
qdrazer.protocol.Reportinto Rust:- 90-byte report payload plus report id
- Basilisk transaction id
0x1f - command class/id layout
- XOR CRC over bytes 2 through 87
- feature report send/receive through
HIDIOCSFEATUREandHIDIOCGFEATURE
- Implemented a native connect and snapshot flow:
- serial number
- firmware version
- available onboard profiles
- basic profile settings
- Implemented native writes for the first vertical slice:
- scroll wheel mode
- scroll acceleration
- smart reel
- polling delay
- current DPI X/Y
- DPI stages get/set, stage count, and active stage selection
- Basic tab parity improvements from the Vue app:
- editable DPI stage list
- stage count control
- active stage control
Y = Xhelper for DPI stages
- Profile tab parity improvements from the Vue app:
- create profile
- delete profile
- direct + white/red/green/blue/cyan slot management UI
- YAML export/import for the selected profile's basic, button, and LED bundle
- backend profile info chunked read/write support (
0x0588/0x0508) carried in exported/imported bundles
- Connect flow parity improvements from the Vue app:
- scan + select device
- auto-connect first supported device after scan
- connect status and error handling
- LED tab parity improvements from the Vue app:
- region selection for wheel/logo/strip
- off/static/spectrum/wave effects
- per-region speed and brightness controls
- apply-to-all regions helper
- Button tab parity improvements from the Vue app:
- per-button assignment editing for normal and hypershift layers
- categories for mouse, keyboard, macro, DPI switch, profile switch, system, consumer, hypershift toggle, scroll mode toggle, and custom payloads
- native get/set button mapping commands through the Rust backend
- Macro tab parity improvements from the Vue app:
- macro list loading
- load/edit/save/delete by macro ID
- YAML export/import for all macro operation lists
- flash reset action
- native macro op encode/decode for keyboard, system, consumer, mouse button, mouse wheel, and delay operations
- preserve loaded
macro_info_hexwhen round-tripping an existing macro through the editor
- Sensor tab parity improvements from the Vue app:
- lift mode selection for smart, smart asym, config, and self calibration modes
- calibration start/stop controls
- retrieved calibration data editor
- parameter calculator for symmetric and asymmetric lift settings
- set-params write path for config A / config B blobs
- Debug tooling improvements:
- raw sent/received report logging from the Tauri hidraw backend
- log viewer and clear action in the Info tab
- warning/error entries for exclusive-access and command failures
Follow-Up Fixes Applied During Parity Review
- Removed the user-facing
Use Without Mouseentry point. - Added auto-connect after device scan.
- Replaced the polling delay number input with the source-style fixed Hz choices.
- Made short or partially decoded button mappings fall back to
custom/rawinstead of failing the tab. - Fixed the Sensor tab reactive loop that could freeze the app.
- Restored the stylesheet after the broken import split and re-split it into trunk-linked CSS files under the file-size cap.
- Fixed the button-mapping save payload shape for the Tauri
set_button_mappingcommand. - Fixed LED option/layout regressions caused by over-aggressive wrapping rules.
- Serialized "Apply to all regions" through a single backend command instead of racing multiple hidraw writes from the frontend.
Source Features Still To Port
- Completion audit and parity fixes against the Vue reference still remain.
Notes
This target no longer embeds Pyodide or uses WebHID. The backend is Tauri-native Rust and currently targets Linux hidraw devices. Running the real device workflow requires read/write permission for the matching /dev/hidraw* node, typically handled with a udev rule.
The active bundle target is AppImage. On modern rolling Linux distributions, linuxdeploy's bundled strip binary can fail on .relr.dyn ELF sections, so build AppImage artifacts with:
NO_STRIP=true cargo tauri build