first commit

This commit is contained in:
Alexander Daichendt 2026-05-17 21:33:41 +02:00
commit 2a1252cc7a
69 changed files with 7559 additions and 0 deletions

94
MIGRATION_STATUS.md Normal file
View file

@ -0,0 +1,94 @@
# 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`
- Ported the Python report framing used by `qdrazer.protocol.Report` into 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 `HIDIOCSFEATURE` and `HIDIOCGFEATURE`
- 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 = X` helper 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_hex` when 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 Mouse` entry 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/raw` instead 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_mapping` command.
- 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:
```sh
NO_STRIP=true cargo tauri build
```