Add: setting window for tauri - bugs not fixed yet
This commit is contained in:
98
issues/issue3.md
Normal file
98
issues/issue3.md
Normal file
@@ -0,0 +1,98 @@
|
||||
## Title
|
||||
|
||||
`sprimo-tauri` settings window invoke errors for sprite-pack switch and always-on-top toggle.
|
||||
|
||||
## Severity
|
||||
|
||||
P1
|
||||
|
||||
## Environment
|
||||
|
||||
- OS: Windows
|
||||
- App version/build: `sprimo-tauri` workspace runtime
|
||||
- Renderer/backend details: Tauri UI settings pop-out window
|
||||
- Evidence screenshots:
|
||||
- `issues/screenshots/issue3.png`
|
||||
- `issues/screenshots/issue3-b.png`
|
||||
|
||||
## Summary
|
||||
|
||||
When using the settings pop-out window, changing character or toggling always-on-top shows
|
||||
invoke argument validation errors and the action fails to apply.
|
||||
|
||||
## Reproduction Steps
|
||||
|
||||
1. Start `sprimo-tauri` and open tray menu `Settings`.
|
||||
2. Change `Character` selection.
|
||||
3. Toggle `Always on top`.
|
||||
4. Observe red error banner in settings window.
|
||||
|
||||
## Expected Result
|
||||
|
||||
- Character change applies successfully and updates active sprite pack.
|
||||
- Always-on-top toggle applies successfully and updates main window z-order state.
|
||||
- No invoke argument error appears.
|
||||
|
||||
## Actual Result
|
||||
|
||||
- Character change fails with:
|
||||
- `invalid args 'packIdOrPath' for command 'set_sprite_pack'`
|
||||
- Always-on-top toggle fails with:
|
||||
- `invalid args 'alwaysOnTop' for command 'set_always_on_top'`
|
||||
|
||||
## Root Cause Analysis
|
||||
|
||||
- Frontend invoke payload keys were sent in snake_case (`pack_id_or_path`, `always_on_top`).
|
||||
- Tauri JS invoke argument mapping for these Rust command parameter names expects camelCase
|
||||
keys (`packIdOrPath`, `alwaysOnTop`).
|
||||
- Because the required keys were missing from Tauri's perspective, command handlers were not run.
|
||||
|
||||
## Fix Plan
|
||||
|
||||
1. Update settings invoke payload keys to Tauri-compatible camelCase names.
|
||||
2. Add typed helper wrappers for settings invokes to centralize argument naming.
|
||||
3. Rebuild UI and run Rust compile checks.
|
||||
4. Perform runtime manual validation and capture after screenshot evidence.
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
Implemented in `frontend/tauri-ui/src/main.tsx`:
|
||||
|
||||
1. Added typed invoke wrappers:
|
||||
- `invokeSetSpritePack(packIdOrPath)`
|
||||
- `invokeSetScale(scale)`
|
||||
- `invokeSetVisibility(visible)`
|
||||
- `invokeSetAlwaysOnTop(alwaysOnTop)`
|
||||
|
||||
2. Updated failing settings call sites to use wrappers and camelCase payload keys.
|
||||
|
||||
## Verification
|
||||
|
||||
### Commands Run
|
||||
|
||||
- [x] `npm --prefix frontend/tauri-ui run build`
|
||||
- [x] `cargo check -p sprimo-tauri`
|
||||
|
||||
### Visual Checklist
|
||||
|
||||
- [x] Before screenshot(s): `issues/screenshots/issue3.png`
|
||||
- [x] Before screenshot(s): `issues/screenshots/issue3-b.png`
|
||||
- [ ] After screenshot(s): `issues/screenshots/issue3-after-YYYYMMDD-HHMMSS.png`
|
||||
|
||||
### Result
|
||||
|
||||
- Status: `Fix Implemented`
|
||||
- Notes: compile/build checks pass; runtime visual verification still required.
|
||||
|
||||
## Status History
|
||||
|
||||
- `2026-02-14 00:00` - reporter - `Reported` - settings errors captured in `issue3.png` and `issue3-b.png`.
|
||||
- `2026-02-14 00:00` - codex - `Triaged` - localized to invoke argument key mismatch.
|
||||
- `2026-02-14 00:00` - codex - `Fix Implemented` - updated settings invoke keys to camelCase via typed wrappers.
|
||||
|
||||
## Closure
|
||||
|
||||
- Current Status: `Fix Implemented`
|
||||
- Close Date:
|
||||
- Owner:
|
||||
- Linked PR/commit:
|
||||
Reference in New Issue
Block a user