* fix: implement factory reset replacing config-only reset (#529)
- Add rpcFactoryReset that removes all user data (config, images,
TLS certs, SSH keys, serial settings, crash dumps) and reboots
- Remove rpcResetConfig RPC handler (keep internal resetConfig for
OTA and native event use)
- Replace Reset Config UI with Factory Reset button (danger theme)
and confirmation dialog in Settings > Advanced
- Update localization: add factory reset keys, remove reset config keys
- Add E2E test verifying factory reset UI and dialog copy
- Update ra-all factory reset test to restore SSH keys after reset
* fix: ensure factory reset reboots even when path removal fails
The early return on error exited rpcFactoryReset before reaching the
goroutine that triggers hwReboot, leaving the device partially wiped
with no reboot. Log the warning instead and always fall through to
the reboot.
* fix: remove hardcoded screenshot path from factory reset e2e test
The display-off timer never fires when a WebRTC session is active because
background system events (video state changes, session count updates, USB
state changes, network state changes) all call requestDisplayUpdate with
shouldWakeDisplay=true. Each wake resets both the dim and off tickers via
wakeDisplay, so the off timer restarts from zero on every event and never
reaches its threshold.
Only physical input device events (touchscreen taps, reported as
indev_event) should wake the display and reset the timers. Background
state updates still need to refresh the LCD content but should not
interfere with the backlight timeout cycle.
Change requestDisplayUpdate calls from background event handlers to pass
shouldWakeDisplay=false in native.go (video_state_changed), network.go
(network_state_changed), usb.go (usb_state_changed), and webrtc.go
(active_sessions_changed). Startup paths (init_display, native_restart)
retain shouldWakeDisplay=true.
Fixes#1133
* Enhance synctrace logging.
Switched the maps to be indexed by the .Pointer (not a string)
Grouped the lockCount, unlockCount ,and lastLock in an trackingEntry so we can detect unlocks of something that wasn't ever locked and excessive unlocks and also tracks the first time locked and the last unlock time.
Added LogDangledLocks for debugging use.
Added a panic handler to the Main so we can log out panics
* Switch to traceable sync for most everything
* More documentation
* Update internal/sync/log.go
* Update DEVELOPMENT.md
* Resolve merge issue.
* Applied review comments
* Restore --enable-sync-trace option.
* Use WithLevel so we can re-panic as desired
Remove LED sync source option and add keypress reporting while still working with devices that haven't been upgraded
We return the modifiers as the valid bitmask so that the VirtualKeyboard and InfoBar can represent the correct keys as down. This is important when we have strokes like Left-Control + Right-Control + Keypad-1 (used in switching KVMs and such).
Fix handling of modifier keys in client and also removed the extraneous resetKeyboardState.
Manage state to eliminate rerenders by judicious use of useMemo.
Centralized keyboard layout and localized display maps
Move keyboardOptions to useKeyboardLayouts
Added translations for display maps.
Add documentation on the legacy support.
Return the KeysDownState from keyboardReport
Clear out the hidErrorRollOver once sent to reset the keyboard to nothing down.
Handles the returned KeysDownState from keyboardReport
Now passes all logic through handleKeyPress.
If we get a state back from a keyboardReport, use it and also enable keypressReport because we now know it's an upgraded device.
Added exposition on isoCode management
Fix de-DE chars to reflect German E2 keyboard.
https://kbdlayout.info/kbdgre2/overview+virtualkeys
Ran go modernize
Morphs Interface{} to any
Ranges over SplitSeq and FieldSeq for iterating splits
Used min for end calculation remote_mount.Read
Used range 16 in wol.createMagicPacket
DID NOT apply the Omitempty cleanup.
Strong typed in the typescript realm.
Cleanup react state management to enable upgrading Zustand
In prep to add golangci-lint, fix various linting issues.
* Make the `kvm` package a fully-qualified public package.
Signed-off-by: SuperQ <superq@gmail.com>
This commit adds the config entry "EdidString" and saves the EDID string
when it's modified via the RPC.
The EDID is restored when the jetkvm_native control socket connects
(usually at boot)
Signed-off-by: Cameron Fleming <cameron@nevexo.space>