Compare commits

..

267 Commits

Author SHA1 Message Date
Siyuan 29226a629c fix c build warnings 2025-09-26 08:37:39 +00:00
Siyuan cf8e33b011 remove more unused code from lvgl 2025-09-26 08:22:02 +00:00
Siyuan 8f68956b44 fix lint errors 2025-09-26 08:22:02 +00:00
Siyuan c5034e00d6 fix linter errors 2025-09-26 08:22:02 +00:00
Siyuan 1d0226d765 update devcontainer.json 2025-09-26 08:22:02 +00:00
Siyuan Miao c3fe93c354 entrypoint script 2025-09-26 08:22:02 +00:00
Siyuan Miao 2cba020ffb cgo build script + ci helper 2025-09-26 08:22:02 +00:00
Siyuan Miao 7573fb1e51 exit on error in ci helper 2025-09-26 08:22:02 +00:00
Siyuan Miao 684f354dd4 load docker image 2025-09-26 08:22:02 +00:00
Siyuan Miao b46139e18d feat: add ci helper scripts 2025-09-26 08:22:02 +00:00
Siyuan Miao 1a2b0ceae1 build inside docker container 2025-09-26 08:22:02 +00:00
Siyuan Miao 01bc0e726c set TERM to dumb if not set 2025-09-26 08:22:02 +00:00
Siyuan Miao c9ad68a3ec update ci 2025-09-26 08:22:02 +00:00
Siyuan Miao fb5ed4d62e reduce initial build time 2025-09-26 08:22:01 +00:00
Siyuan Miao 5e1dab5522 ignore build cache 2025-09-26 08:22:01 +00:00
Siyuan Miao e53f7bdb70 add build cache to dev_deploy.sh 2025-09-26 08:22:01 +00:00
Adam Shiervani f1ebd840e7 fix: faster paste speed (#824)
* fix: update delay handling in PasteModal component

- Changed default delay value to 20 and adjusted validation to allow values between 0 and 65534.
- Cleaned up code formatting for better readability.

* fix: formatting
2025-09-26 08:22:01 +00:00
Marc Brooks 85468a5ce7 Update UI dependencies (#819) 2025-09-26 08:22:01 +00:00
Siyuan Miao 3c3b99aa14 chore: bump to 0.4.8 2025-09-26 08:22:01 +00:00
Siyuan Miao f20a7d7022 show video debugging info 2025-09-26 08:21:21 +00:00
Siyuan Miao d52773d064 makefile 2025-09-26 08:21:21 +00:00
Siyuan Miao d6802c982d dd script to build inside docker 2025-09-26 08:21:21 +00:00
Siyuan Miao 6c677f2f95 cleanup 2025-09-26 08:21:20 +00:00
Siyuan Miao a3ddb071e8 update state 2025-09-26 08:21:20 +00:00
Siyuan Miao 9bd3436536 fix ipv6 address truncation 2025-09-26 08:21:20 +00:00
Siyuan Miao 84a28454f4 minor ui fixes 2025-09-26 08:21:20 +00:00
Siyuan Miao 837b75f83c feat: add reset config and reboot buttons to UI 2025-09-26 08:21:20 +00:00
Siyuan Miao 8123900f26 add locks and missing comments 2025-09-26 08:21:20 +00:00
Siyuan Miao 2e939c918f chore: use log_error in native library 2025-09-26 08:21:20 +00:00
Siyuan Miao efaab7369b fix: race condition in native library 2025-09-26 08:21:20 +00:00
Siyuan Miao d0df8eaa44 remove lldp 2025-09-26 08:21:20 +00:00
Siyuan Miao 9db23f28db fix(native): add video init to native start 2025-09-26 08:21:20 +00:00
Siyuan Miao 8d368a8a7c hide unfinished features 2025-09-26 08:21:20 +00:00
Siyuan Miao ace2934111 add native library to make build process faster 2025-09-26 08:21:20 +00:00
Siyuan Miao 1ca576176a ignore generated include & lib files 2025-09-26 08:21:20 +00:00
Siyuan Miao 35c9401cdb chore: add built ui files 2025-09-26 08:21:20 +00:00
Siyuan Miao b4d242471b fix linting issues 2025-09-26 08:21:20 +00:00
Siyuan Miao e99fd0d639 add no network screen 2025-09-26 08:21:20 +00:00
Siyuan Miao b6db43c359 update development guide 2025-09-26 08:21:20 +00:00
Siyuan Miao f862b4c487 add missing deps 2025-09-26 08:21:20 +00:00
Siyuan Miao 9b755e7255 fix deps 2025-09-26 08:21:20 +00:00
Siyuan Miao 33c0f34f2b resolve conflicts 2025-09-26 08:21:19 +00:00
Siyuan Miao 13be5c451a chore: upgrade deps 2025-09-26 08:21:19 +00:00
Siyuan Miao 49adcfc82b chore: use UIObjSetState instead of Add+Remove 2025-09-26 08:21:19 +00:00
Siyuan Miao d0346c0890 remove useless lvgl config 2025-09-26 08:21:19 +00:00
Siyuan Miao 610f111a29 move event handling to native 2025-09-26 08:21:19 +00:00
Siyuan Miao f268a9622b chore: upgrade deps 2025-09-26 08:21:19 +00:00
Siyuan Miao 9df20e0d6e refactor functions 2025-09-26 08:21:19 +00:00
Siyuan Miao b8270fc2d5 remove build_afpacket from Makefile 2025-09-26 08:21:19 +00:00
Siyuan Miao 156903c59b feat: update github actions 2025-09-26 08:21:19 +00:00
Siyuan Miao 73a1ed3976 feat: remove lvgl examples and demos 2025-09-26 08:21:19 +00:00
Siyuan Miao 84bdbe0ebf chore: add LV_STATE_DISABLED to obj set state 2025-09-26 08:21:19 +00:00
Siyuan Miao be84ed101e feat: implement about screen 2025-09-26 08:21:19 +00:00
Siyuan Miao 74d177b365 feat: add video frame handling 2025-09-26 08:21:19 +00:00
Siyuan Miao 9468bf057b feat: native as lib 2025-09-26 08:21:19 +00:00
Siyuan Miao 52b773e97e fix lint issues 2025-09-26 08:21:19 +00:00
Siyuan Miao 5349553a8a feat(lldp): show neighbors in UI 2025-09-26 08:21:19 +00:00
Siyuan Miao 4bb790922f feat(lldp): implement rx 2025-09-26 08:21:19 +00:00
Aveline af7525bade feat: get local version only (#813) 2025-09-26 08:21:19 +00:00
Adam Shiervani 55f43f9aaf feat: re-add keyboard and keypress report handlers to RPC (#811) 2025-09-26 08:21:19 +00:00
Adam Shiervani 282c912898 fix: remove unnecessary grow-0 utility from in keyboard (#810) 2025-09-26 08:21:19 +00:00
Siyuan Miao 58fd25cae1 build: use immediate assignment for VERSION_DEV and other vars 2025-09-26 08:21:19 +00:00
Siyuan Miao 773440c157 chore: bump to 0.4.7 2025-09-26 08:21:19 +00:00
Aveline f64d8aaadd feat: release keyPress automatically (#796)
* feat: release keyPress automatically

* send keepalive when pressing the key

* remove logging

* clean up logging

* chore: use unreliable channel to send keepalive events

* chore: use ordered unreliable channel for pointer events

* chore: adjust auto release key interval

* chore: update logging for kbdAutoReleaseLock

* chore: update comment for KEEPALIVE_INTERVAL

* fix: should cancelAutorelease when pressed is true

* fix: handshake won't happen if webrtc reconnects

* chore: add trace log for writeWithTimeout

* chore: add timeout for KeypressReport

* chore: use the proper key to send release command

* refactor: simplify HID RPC keyboard input handling and improve key state management

- Updated `handleHidRPCKeyboardInput` to return errors directly instead of keys down state.
- Refactored `rpcKeyboardReport` and `rpcKeypressReport` to return errors instead of states.
- Introduced a queue for managing key down state updates in the `Session` struct to prevent input handling stalls.
- Adjusted the `UpdateKeysDown` method to handle state changes more efficiently.
- Removed unnecessary logging and commented-out code for clarity.

* refactor: enhance keyboard auto-release functionality and key state management

* fix: correct Windows default auto-repeat delay comment from 1ms to 1s

* refactor: send keypress as early as possible

* refactor: replace console.warn with console.info for HID RPC channel events

* refactor: remove unused NewKeypressKeepAliveMessage function from HID RPC

* fix: handle error in key release process and log warnings

* fix: log warning on keypress report failure

* fix: update auto-release keyboard interval to 225

* refactor: enhance keep-alive handling and jitter compensation in HID RPC

- Implemented staleness guard to ignore outdated keep-alive packets.
- Added jitter compensation logic to adjust timer extensions based on packet arrival times.
- Introduced new methods for managing keep-alive state and reset functionality in the Session struct.
- Updated auto-release delay mechanism to use dynamic durations based on keep-alive timing.
- Adjusted keep-alive interval in the UI to improve responsiveness.

* gofmt

* clean up code

* chore: use dynamic duration for scheduleAutoRelease

* Use harcoded timer reset value for now

* fix: prevent nil pointer dereference when stopping timers in Close method

* refactor: remove nil check for kbdAutoReleaseTimers in DelayAutoReleaseWithDuration

* refactor: optimize dependencies in useHidRpc hooks

* refactor: streamline keep-alive timer management in useKeyboard hook

* refactor: clarify comments in useKeyboard hook for resetKeyboardState function

* refactor: reduce keysDownStateQueueSize

* refactor: close and reset keysDownStateQueue in newSession function

* chore: resolve conflicts

* resolve conflicts

---------

Co-authored-by: Adam Shiervani <adam.shiervani@gmail.com>
2025-09-26 08:21:19 +00:00
Aveline dbeb08e0bc feat: send all paste keystrokes to backend (#789)
* feat: send all paste keystrokes to backend

* feat: cancel paste mode

* wip: send macro using hidRPC channel

* add delay

* feat: allow paste progress to be cancelled

* allow user to override delay

* chore: clear keysDownState

* fix: use currentSession.reportHidRPCKeyboardMacroState

* fix: jsonrpc.go:1142:21: Error return value is not checked (errcheck)

* fix: performance issue of Uint8Array concat

* chore: hide delay option when debugMode isn't enabled

* feat: use clientSide macro if backend doesn't support macros

* fix: update keysDownState handling

* minor issues

* refactor

* fix: send duplicated keyDownState

* chore: add max length for paste text

---------

Co-authored-by: Adam Shiervani <adam.shiervani@gmail.com>
2025-09-26 08:21:18 +00:00
Marc c269361adf fix: ensure that security-key backed SSH keys are supported (#807) 2025-09-26 08:21:18 +00:00
Aveline 9f5d03e1ac chore: upgrade jetkvm native and fix the params of fadeIn / fadeOut (#808) 2025-09-26 08:21:18 +00:00
Marc Brooks e9b0a60028 fix(timesync): ensure that auto-update waits for time sync (#609)
- Added check to not attempt auto update if time sync is needed and not yet successful (delays 30 second to recheck).
- Added resync of time when DHCP or link state changes if online
- Added conditional* fallback from configured* NTP servers to the IP-named NTP servers, and then to the DNS named ones if that fails
- Added conditional* fallback from the configured* HTTP servers to the default DNS named ones.
- Uses the configuration* option for how many queries to run in parallel
- Added known static IPs for time servers (in case DNS resolution isn't up yet)
- Added time.cloudflare.com to fall-back NTP servers
- Added fallback to NTP via hostnames
- Logs the resultant time (and mode)
2025-09-26 08:21:18 +00:00
Marc Brooks 99eb662299 feat: Adds IPv6 disabling feature (#803)
* Allow disabling IPv6

Simply ignores any IPv6 addresses in the lease and doesn't offer them to the RPC
Also fixed display issue for IPv6 link local address.
Fixes https://github.com/orgs/jetkvm/projects/7/views/1?pane=issue&itemId=122761546&issue=jetkvm%7Ckvm%7C685

* Don't listen on disabled addresses in mDNS or web server.

* We have to set the IPv4 and IPv6 modes on the server.
2025-09-26 08:21:18 +00:00
Aveline fbe5ff130f fix: goroutine leak issue of cloudBlink (#801)
* fix: goroutine leak issue of cloudBlink

* chore: add lock and allow context to be cancelled earlier
2025-09-26 08:21:18 +00:00
Aveline 2223abfccf docs: update pprof section of DEVELOPMENT.md (#802) 2025-09-26 08:21:18 +00:00
Marc Brooks 2bce4e999a chore: enhance the gzip and cacheable handling of static files
Add SVG and ICO to cacheable files.
Emit robots.txt directly.
Recognize WOFF2 (font) files as assets (so the get the immutable treatment)
Pre-gzip the entire /static/ directory (not just /static/assets/) and include SVG, ICO, and HTML files
Ensure fonts.css is processed by vite/rollup so that the preload and css reference the same immutable files (which get long-cached with hashes)
Add CircularXXWeb-Black to the preload list as it is used in the hot-path.
Handle system-driven color-scheme changes from dark to light correctly.
2025-09-26 08:21:18 +00:00
Aveline 46b5fc24ec update netboot.xyz-multiarch.iso to 2.0.88 (#799)
* chore: update netboot.xyz-multiarch.iso to 2.0.88

* feat: add script to update netboot.xyz iso
2025-09-26 08:21:18 +00:00
Aveline 06ff70691b feat: validate ssh public key before saving (#794)
* feat: validate ssh public key before saving

* fix: TestValidSSHKeyTypes
2025-09-26 08:21:18 +00:00
Adam Shiervani d968362548 refactor(ui): Don't fetch KeybardAndMouse Icon on every re-render (#795) 2025-09-26 08:21:18 +00:00
Aveline c49058616d chore: serve pre-compressed static files (#793) 2025-09-26 08:21:18 +00:00
dependabot[bot] 5e335c0786 build(deps-dev): bump vite (#788)
Bumps the npm_and_yarn group with 1 update in the /ui directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).


Updates `vite` from 7.1.4 to 7.1.5
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.1.5/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.1.5
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 08:21:18 +00:00
Marc Brooks d5134e3fe6 fix/Jiggler settings not saving (#786)
Ensure the jiggler config loads the defaults so they can be saved.
Ensure the file.Sync occurs before acknowledging save.
Also fixup the old KeyboardLayout to use en-US not en_US
2025-09-26 08:21:18 +00:00
Adam Shiervani 2f71b3f402 feat(ui): Enhance EDID settings with loading state (#691)
* feat(ui): Enhance EDID settings with loading state and Fieldset component

* fix(ui): Improve notifications and adjust styling in custom EDID component

* fix(ui): specify JsonRpcResponse type
2025-09-26 08:21:18 +00:00
Marc Brooks 7f7d2a49b0 fix(ui): Don't render a button in a button (#782)
Gets rid of warning at initial page load.
2025-09-26 08:21:18 +00:00
Claus Holst c11793cae3 Update URL Mount entries for Ubuntu, Fedora and Arch Linux (#783) 2025-09-26 08:21:18 +00:00
Adam Shiervani ea1a7fffc0 Enhance connection stats sidebar (#748)
* feat: add Metric component for data visualization

* refactor: update ConnectionStatsSidebar to use Metric component for improved data visualization

* feat: add someIterable utility function and update Metric components for consistent metric handling

- Introduced `someIterable` function to check for the presence of a metric in an iterable.
- Updated `CustomTooltip` and `Metric` components to use `metric` instead of `stat` for improved clarity.
- Refactored `StatChart` to align with the new metric naming convention.

* refactor: rename variable for clarity in Metric component

* docs: add JSDoc comments to createChartArray function in Metric component for better documentation

* feat: do an actual avg reference calc

* feat: Dont collect stats without a video track

* refactor: rename variables for clarity
2025-09-26 08:21:18 +00:00
Aveline 863053c2da feat: hid rpc channel (#755)
* feat: use hidRpcChannel to save bandwidth

* chore: simplify handshake of hid rpc

* add logs

* chore: add timeout when writing to hid endpoints

* fix issues

* chore: show hid rpc version

* refactor hidrpc marshal / unmarshal

* add queues for keyboard / mouse event

* chore: change logging level of JSONRPC send event to trace

* minor changes related to logging

* fix: nil check

* chore: add comments and remove unused code

* add useMouse

* chore: log msg data only when debug or trace mode

* chore: make tslint happy

* chore: unlock keyboardStateLock before calling onKeysDownChange

* chore: remove keyPressReportApiAvailable

* chore: change version handle

* chore: clean up unused functions

* remove comments
2025-09-26 08:21:18 +00:00
Marc Brooks fa4571a73b feat(ui) Fix the CapsLock and Shift key for VirtualKeyboard (#779)
* feat(ui) Fix the CapsLock and Shift key for VirtualKeyboard

* PR feedback: Default LED state in store
2025-09-26 08:21:18 +00:00
Marc Brooks ab8b0ca319 Upgrade vite and react-router (#778)
| Package                           | From | To       |
|----------------------------------|-----------|---------|
react-router                       | ( new ) | 7.8.2 |
react-router-dom             | 6.22.3 | ( del ) |
@vitejs/plugin-react-swc | 3.10.2 | 4.0.1 |
vite                                      | 6.3.5   | 7.1.4 |
2025-09-26 08:21:18 +00:00
Marc Brooks befb05e209 Bumps recharts to 3.1.2 (#777)
* Upgrade UI packages

| Package                                     | From     | To         |
|-----------------------------------|----------|----------|
| dayjs                                           | 1.1.13   | 1.11.18 |
| react-simple-keyboard               | 3.8.115 | 3.8.119 |
| @types/react                              | 19.1.11 | 19.1.12 |
| @types/react-dom                     | 19.1.8   | 19.1.9   |
|  @types/semver                         | 7.7.0      | 7.7.1    |
| @types/validator                        | 13.15.2 | 13.15.3 |
| @typescript-eslint/eslint-plugin | 8.41.0   | 8.42.0   |
| @typescript-eslint/parser           | 8.41.0   | 8.42.0   |

Also fixed lint warning about the missing autocomplete on the password field

* Upgrade recharts to 3.1.2

This is a major version jump, builds and runs correctly
2025-09-26 08:21:18 +00:00
Marc Brooks def8b8b97e Upgrade UI packages (#776)
| Package                                     | From     | To         |
|-----------------------------------|----------|----------|
| dayjs                                           | 1.1.13   | 1.11.18 |
| react-simple-keyboard               | 3.8.115 | 3.8.119 |
| @types/react                              | 19.1.11 | 19.1.12 |
| @types/react-dom                     | 19.1.8   | 19.1.9   |
|  @types/semver                         | 7.7.0      | 7.7.1    |
| @types/validator                        | 13.15.2 | 13.15.3 |
| @typescript-eslint/eslint-plugin | 8.41.0   | 8.42.0   |
| @typescript-eslint/parser           | 8.41.0   | 8.42.0   |

Also fixed lint warning about the missing autocomplete on the password field
2025-09-26 08:21:18 +00:00
Aveline 8987979f3c chore: upgrade deps (#780) 2025-09-26 08:21:18 +00:00
dependabot[bot] a1db5c702a build(deps): bump actions/checkout from 4 to 5 (#759)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 08:21:18 +00:00
Adam Shiervani ebb339000d Clean up Virtual Keyboard styling (#761)
* Clean up Virtual Keyboard styling

Make the header a bit taller
Add keyboard layout name to header
Make the detached keyboard render smaller key text so you can read them.
Updated the settings text for keyboard layout.

* Add the key graphics and missing keys

* style(ui): add cursor-pointer class to Button component for better UX

* refactor(ui): Improve header styling and detach bug

- Remove unused AttachIcon and related SVG asset.
- Replace icon usage with a styled LinkButton to improve consistency.
- Simplify and reformat VirtualKeyboard component for better readability.

* refactor(ui): Hide keyboard layout settings on mobile and fix minor styling

---------

Co-authored-by: Marc Brooks <IDisposable@gmail.com>
2025-09-26 08:21:18 +00:00
Marc Brooks 16c2abf726 chore/Deprecate browser mount (#752)
* chore/Deprecate browser mount

No longer supported.

* Remove device-side go code

* Removed diskChannel and localFile

* Removed RemoteVirtualMediaState.WebRTC

Also removed dead go code (to make that lint happy!)
2025-09-26 08:21:18 +00:00
Marc Brooks d564b03a91 Add application icon for Safari and saved-bookmarks (#749) 2025-09-26 08:21:18 +00:00
Adam Shiervani 3c14e77944 enhancement: add new EDID for DELL iDRAC (#693) 2025-09-26 08:21:18 +00:00
Marc Brooks 0884d8138c Add ability to track modifier state on the device (#725)
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
2025-09-26 08:21:18 +00:00
Marc Brooks fad6a00d9b feature/Faster loading (#746)
* feature/Faster loading

This refactors all the hot-path components for an already-setup JetKVM so that we only
lazy-load the components off the main path. This greatly reduces the initial .JS size at
initial page load from a single file of

dist/assets/index-D4LZBdmN.js                          1,969.46 kB │ gzip: 570.08 kB

To these files, of which the hot-path only loads the 963.29 kB index for a savings of
just over a megabyte (180kb savings in gzip).

dist/assets/login-DA9KVVX1.js                                     0.64 kB │ gzip:   0.40 kB
dist/assets/signup-Bb_VCzY1.js                                    0.67 kB │ gzip:   0.40 kB
dist/assets/devices._id.settings.macros.add-DpBnq5E0.js           0.82 kB │ gzip:   0.55 kB
dist/assets/devices._id.settings.appearance-VHd5B2H2.js           0.91 kB │ gzip:   0.52 kB
dist/assets/devices._id.settings.general.reboot-DsRBP5Dd.js       1.01 kB │ gzip:   0.52 kB
dist/assets/UpdateInProgressStatusCard-DJCdJo-z.js                1.05 kB │ gzip:   0.54 kB
dist/assets/devices._id.other-session-BpXjEP6K.js                 1.09 kB │ gzip:   0.56 kB
dist/assets/devices.already-adopted-BC1xoKrN.js                   1.16 kB │ gzip:   0.57 kB
dist/assets/Checkbox-DGO277w5.js                                  1.24 kB │ gzip:   0.64 kB
dist/assets/devices._id.settings.keyboard-Cno0kaUr.js             1.59 kB │ gzip:   0.81 kB
dist/assets/devices._id.settings.general._index-CNW0Pj5B.js       1.71 kB │ gzip:   0.76 kB
dist/assets/devices._id.settings.macros.edit-BYQGw2CJ.js          1.92 kB │ gzip:   1.00 kB
dist/assets/ConfirmDialog-lzerZkf7.js                             2.77 kB │ gzip:   1.13 kB
dist/assets/AuthLayout-H4vGP3TU.js                                2.96 kB │ gzip:   1.41 kB
dist/assets/AutoHeight-B-TU1fRg.js                                4.07 kB │ gzip:   1.63 kB
dist/assets/devices._id.settings.video-O3qJWstQ.js                5.68 kB │ gzip:   2.17 kB
dist/assets/devices._id.settings.advanced-Drd_iPzw.js             5.98 kB │ gzip:   2.08 kB
dist/assets/devices._id.settings.macros-D3unB0uf.js               6.05 kB │ gzip:   2.13 kB
dist/assets/devices._id.settings.access.local-auth-BltQI66N.js    6.17 kB │ gzip:   1.54 kB
dist/assets/devices._id.settings.mouse-CAwDHqxl.js               10.02 kB │ gzip:   3.59 kB
dist/assets/devices._id.settings.general.update-jkzXML1U.js      10.22 kB │ gzip:   2.67 kB
dist/assets/devices._id.settings.hardware-B7v3lfwA.js            10.41 kB │ gzip:   3.03 kB
dist/assets/devices._id.settings.network-CJYfzFt2.js             25.23 kB │ gzip:   7.21 kB
dist/assets/devices._id.mount-4AT1reig.js                        43.92 kB │ gzip:  19.81 kB
dist/assets/MacroForm-BQpdQgFn.js                                49.75 kB │ gzip:  16.25 kB
dist/assets/connectionStats-NM-PZeH3.js                         400.14 kB │ gzip: 110.33 kB
dist/assets/Terminal-Dgo3sfr-.js                                425.05 kB │ gzip: 109.49 kB
dist/assets/index-w6H2Mz3f.js                                   963.29 kB │ gzip: 294.20 kB

* Remove feral async declarations on things that have no await
2025-09-26 08:21:18 +00:00
Marc Brooks 68fd91b470 fix: useJsonRpc "any" issue
PR #743 didn't have all the files included in the commit.
Mea culpa, many apologies.
2025-09-26 08:21:18 +00:00
Alex Ballas ea1a71a609 chore: ensure that rpc messages get processed sequentially and avoid phantom and repeated key presses (#744) 2025-09-26 08:21:18 +00:00
Marc Brooks 4bdcbb66d8 fix: compiler error (#743)
Using { send } gives the resp a type instead of any
2025-09-26 08:21:18 +00:00
Adam Shiervani 35b0f70a19 feat: improve custom jiggler settings and add timezone support (#742)
* feat: add timezone support to jiggler and fix custom settings persistence

- Add timezone field to JigglerConfig with comprehensive IANA timezone list
- Fix custom settings not loading current values
- Remove business hours preset, add as examples in custom settings
- Improve error handling for invalid cron expressions

* fix: format jiggler.go with gofmt

* fix: add embedded timezone data and validation

- Import time/tzdata to embed timezone database in binary
- Add timezone validation in runJigglerCronTab() to gracefully fallback to UTC
- Add timezone to debug logging in rpcSetJigglerConfig
- Fixes 'unknown time zone' errors when system lacks timezone data

* refactor: add timezone field comments from jiggler options

* chore: move tzdata to backend

* refactor: fix JigglerSetting linting

- Adjusted useEffect dependency to include send function for better data fetching
- Modified layout classes for improved responsiveness and consistency
- Cleaned up code formatting for better readability

---------

Co-authored-by: Siyuan Miao <i@xswan.net>
2025-09-26 08:21:18 +00:00
Serhii 44f518cfea Update mount list for new Debian 13 release (#739)
* Update mount list for new Debian 13 release

* Keep Debian 12 Bookworm as old-stable release
2025-09-26 08:21:18 +00:00
Marc Brooks af22f916ef Lint fix from last merge. (#733) 2025-09-26 08:21:18 +00:00
jackislanding 662f46c490 Added crontab scheduler for jiggler (#316) 2025-09-26 08:21:18 +00:00
Marc Brooks 44bc58fa93 chore(ui)/package upgrades (#724)
| Package                          | From     | To           |
| -------------------------------- | ----------- | ------------ |
| @headlessui/react        | 2.2.4     | 2.2.7        |
| framer-motion              | 12.23.3 | 12.23.12 |
| react                                | 19.1.0   | 19.1.1     |
| react-dom                       | 19.1.0   | 19.1.1    |
| react-simple-keyboard | 3.8.93   | 3.8.106  |
|@eslint/js                         | 9.30.1   | 9.32.0    |
| @types/react                  | 19.1.8   | 19.1.9    |
| @types/react-dom         | 19.1.8   | 19.1.9   |
|eslint                                 | 9.30.1   | 9.32.0    |
|eslint-config-prettier       | 10.1.5   | 10.1.8   |
| typescript                         |  5.8.3    | 5.9.2     |
2025-09-26 08:21:18 +00:00
Silke pilon 0a7d723284 docs: add comprehensive DEVELOPMENT.md for JetKVM (#692)
* docs: add comprehensive DEVELOPMENT.md for JetKVM

Add a detailed development guide covering setup, project structure,
and workflows for both full device and frontend-only development.

Include prerequisites, build commands, deployment scripts, environment
variables, and testing instructions to streamline onboarding and
contributions.

This improves developer experience and standardizes development
practices across the project.

* docs: clean up DEVELOPMENT.md by removing outdated sections

Remove the Custom Build Tags and Release Process sections to simplify
the documentation and avoid confusion with deprecated build and release
instructions. Focus the document on current performance profiling steps.

* docs: rewrite DEVELOPMENT.md for clearer setup and usage

Revise the JetKVM development guide to improve clarity and usability.
Simplify the introduction and reorganize prerequisites and setup steps
to help new developers get started quickly. Add explicit instructions for
cloning, tool verification, deployment, and testing. Streamline common
tasks sections with clear commands for UI and backend development,
testing, and log viewing. Update project layout overview for easier
navigation. These changes reduce onboarding friction and enhance the
developer experience.

* docs: remove duplicate "Get Started" header in DEVELOPMENT.md

Clean up the DEVELOPMENT.md file by deleting the repeated
"Get Started" header

* docs: add recommended development environment section

Add guidance recommending Linux or macOS for development and suggest
using WSL on Windows to ensure compatibility with shell scripts and
build tools. This improves the developer experience and reduces setup
issues across different operating systems.

* docs: add links to prerequisites in DEVELOPMENT.md

Update DEVELOPMENT.md to URLs for Go, Node.js, Git, and SSH
access prerequisites. This improves clarity and helps developers quickly
find installation resources.
2025-09-26 08:21:18 +00:00
Aveline 1ba68d20eb chore: add issue templates (#686)
* chore: add issue templates

* chore: add remote device info
2025-09-26 08:21:18 +00:00
Marc Brooks af4d1915b1 chore/ Fix go lint error (#683) 2025-09-26 08:21:18 +00:00
Marc Brooks 1eaeebbeb4 chore(ui) Upgrade packages (#682) 2025-09-26 08:21:18 +00:00
Ben Kochie be597416c1 chore: add metrics for configuration and WOL (#193)
* Configuration load success/timestamp.
* Wake-on-Lan packets/errors.

Signed-off-by: SuperQ <superq@gmail.com>
2025-09-26 08:21:18 +00:00
Marc Brooks 60a06ad631 chore(ui): Clean new keyboard option (#495)
Fixed the Tailwind CSS syntax for `in` (nested) selector
Added missing React dependency for `useEffect`
2025-09-26 08:21:18 +00:00
Marc Brooks a9affa81ff refactor(ui): Refactor the keyboardLayouts (#497)
Add missing keyboard mappings for most layouts
Change  pasteModel.tsx to use the new structure and vastly clarified the way that keys are emitted.
Make each layout export just the KeyboardLayout object (which is a package of isoCode, name, and chars)
Made keyboardLayouts.ts export a function to select keyboard by `isoCode`, export the keyboards as label . value pairs (for a select list) and the list of keyboards.
Changed devices.$id.settings.keyboard.tsx use the exported keyboard option list.
2025-09-26 08:21:18 +00:00
rmschooley d4cbf0cbad Remove Out Endpoint Descriptors from Absolute Mouse and Relative Mouse (#542)
* Update hid_mouse_absolute.go

Added attribute to remove unnecessary out endpoint.

* Update hid_mouse_relative.go

Added attribute to remove unnecessary out endpoint.

* Update hid_keyboard.go

Added attribute to explicitly keep currently needed out endpoint and to make listed attributes consistent across the keyboard and mouse devices.

---------

Co-authored-by: Aveline <352441+ym@users.noreply.github.com>
2025-09-26 08:21:18 +00:00
Daniel Collins 99c2248325 Implement HTTP proxy option (#515). (#521)
This commit adds a "Proxy" field to the network settings screen, which
can be used to specify a HTTP proxy for any outgoing requests from the
device.
2025-09-26 08:21:18 +00:00
Daniel Collins f157dbbf47 Add -i/--install option to dev_deploy.sh (#527)
Running `dev_deploy.sh -i` will build the app in release mode and
install it to the device for longer term development/testing or just
running a custom variant of the app.
2025-09-26 08:21:18 +00:00
Bradley Wilson-Hunt 2c95dc382b feat(metrics): adding prometheus metrics for dc power extension (#556) 2025-09-26 08:21:18 +00:00
Aveline 27a396482e feat: add command to show version (#604)
* feat: add -version flag for jetkvm_app

* move code to kvm package
2025-09-26 08:21:18 +00:00
Siyuan Miao 96f27e1f9b chore(network): fix linting error errcheck 2025-09-26 08:21:18 +00:00
Marc Brooks fd3ceb182c chore: upgrade ui packages (#571)
Move to current on all non-major upgrades
Fixes the tainted hardware WebGL video renderer if video settings are at default (1.0) values

## Runtime

|  Package | From  | To  |
|---|---|---|
| @headlessui/react | 2.2.3 | 2.2.4 |
| @vitejs/plugin-basic-ssl | 2.0.0 | 2.1.0 |
| cva | 1.0.0-beta.3 | 1.0.0-beta.4 |
| focus-trap-react | 11.0.3 | 11.0.4 |
| framer-motion | 12.11.5 | 12.23.0 |
| react-simple-keyboard | 3.8.72 | 3.8.89 |
| tailwind-merge | 3.3.0 | 3.3.1 |
| validator | 13.15.0 | 13.15.15 |

## Dev

|  Package | From  | To  |
|---|---|---|
| @eslint/compat | 1.2.9 | 1.3.1 |
| @eslint/js | 9.26.0 | 9.30.1 |
| @tailwindcss/postcss | 4.1.7 | 4.1.11 |
| @tailwindcss/vite | 4.1.8 | 4.1.10 |
| @types/react | 19.1.4 | 19.1.8  |
| @types/react-dom | 19.1.5 | 19.1.6 |
| @types/validator | 13.15.0 | 13.15.2 |
| @typescript-eslint/eslint-plugin | 8.32.1 | 8.34.0 |
| @typescript-eslint/parser | 8.32.1 | 8.35.1  |
| @vitejs/plugin-react-swc | 3.9.0 | 3.10.2 |
| eslint | 9.26.0 | 9.30.1 |
| globals | 16.1.0 | 16.3.0 |
| postcss  | 8.5.3 | 8.5.6 |
| prettier | 3.5.3 | 3.6.2 |
| prettier-plugin-tailwindcss | 0.6.11 | 0.6.13 |
| tailwindcss | 4.1.7 | 4.1.11 |
2025-09-26 08:21:18 +00:00
Marc Brooks 4fe3ad4160 feat(ntp): enhances time sync with DHCP NTP and custom servers (#625)
* Ensure the mDNS mode is set every time network state changes

Eliminates (mostly) duplicate code

* Add custom NTP and HTTP time sync servers

Since the ordering may have been previously defaulted and saved as "ntp,http", but that was being ignored and fallback-defaults were being used, in Ordering, `ntp` means use the fallback NTP servers, and `http` means use the fallback HTTP URLs. Thus `ntp_user_provided` and `http_user_provided` are the user specified static lists.

* Add support for using DHCP-provided NTP server
2025-09-26 08:21:18 +00:00
Aveline ef52bde623 chore: remove /device/ui-config.js endpoint (#678) 2025-09-26 08:21:18 +00:00
adammkelly eac871b527 feat(ui): reboot device (#421) (#505) 2025-09-26 08:21:18 +00:00
Patrick Hofmann cae2d79883 feat(dc-power-extension): power restore mode in DCPowerControl component (#672)
* DC-extension: Supporting to set the power restore mode in DCPowerControl component

* fixing lint issue
2025-09-26 08:21:18 +00:00
Marc Brooks be2c2bbed3 chore: fix the base usb configuration (#610)
In reviewing the config.go settings for idProduct and bcdDevice are not formatted correctly. All examples on GitHub have 0x0104 and 0x0100 respectively. The idProduct value gets overwritten with valid values when you change the configuration (because they are correct in the options), but until you do the USB initialization will not be correct.
2025-09-26 08:21:18 +00:00
Marc Brooks 875b25f0f3 chore: remove ActionBar-Ctrl-Alt-Del (#669) 2025-09-26 08:21:18 +00:00
Siyuan Miao aee90253ea chore: bump to 0.4.7 2025-09-26 08:21:18 +00:00
Aveline d0e66021c3 chore: typo 'supression' should be 'suppression' (#671) 2025-09-26 08:21:18 +00:00
dependabot[bot] d060166741 build(deps): bump actions/setup-go from 4.2.1 to 5.5.0 (#666)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 4.2.1 to 5.5.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v4.2.1...v5.5.0)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: 5.5.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 08:21:18 +00:00
dependabot[bot] 5413f0aea4 build(deps): bump github.com/pion/webrtc/v4 from 4.1.2 to 4.1.3 (#667)
Bumps [github.com/pion/webrtc/v4](https://github.com/pion/webrtc) from 4.1.2 to 4.1.3.
- [Release notes](https://github.com/pion/webrtc/releases)
- [Changelog](https://github.com/pion/webrtc/blob/master/.goreleaser.yml)
- [Commits](https://github.com/pion/webrtc/compare/v4.1.2...v4.1.3)

---
updated-dependencies:
- dependency-name: github.com/pion/webrtc/v4
  dependency-version: 4.1.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 08:21:18 +00:00
dependabot[bot] 1eda2c497d build(deps): bump github.com/Masterminds/semver/v3 from 3.3.1 to 3.4.0 (#668)
Bumps [github.com/Masterminds/semver/v3](https://github.com/Masterminds/semver) from 3.3.1 to 3.4.0.
- [Release notes](https://github.com/Masterminds/semver/releases)
- [Changelog](https://github.com/Masterminds/semver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Masterminds/semver/compare/v3.3.1...v3.4.0)

---
updated-dependencies:
- dependency-name: github.com/Masterminds/semver/v3
  dependency-version: 3.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 08:21:18 +00:00
Aveline c89ec4448e fix(display): reset display state after native binary is restarted (#654)
* fix(usbgadget): add lock for logWithSupression

* fix(display): reset display state after native binary is restarted
2025-09-26 08:21:18 +00:00
Marc Brooks b8c3b14de3 build: upgrade packages and move to GitHub runner
* Move to GitHub runner for build action

Lint action

* Move to go 1.24.4

* Upgrade go packages

 github.com/coreos/go-oidc/v3  v3.11.0 -> v3.14.1
github.com/creack/pty v1.1.23 -> v1.1.24
github.com/gwatts/rootcerts  v0.0.0-20240401182218-3ab9db955caf -> v0.0.0-20250601184604-370a9a75f341
github.com/pion/logging v0.2.3 -> v0.2.4
github.com/pion/webrtc/v4 v4.0.16 -> v4.1.2
github.com/prometheus/common v0.62.0 -> v0.65.0
github.com/vishvananda/netlink v1.3.1 -> v1.3.1
go.bug.st/serial v1.6.2 -> v1.6.4
2025-09-26 08:21:18 +00:00
Aveline 660473aea2 fix(usbgadget): add lock for logWithSupression (#653) 2025-09-26 08:21:18 +00:00
iain MacDonnell d25693e0d6 fix: ensure certStore is initialised when adding custom cert (#639)
Fixes: #612
2025-09-26 08:21:18 +00:00
Siyuan Miao 18e991b8a6 chore: bump version to 0.4.6 2025-09-26 08:21:18 +00:00
Aveline 409d66f681 feat(usbgadget): suppress duplicate error logs (#630). 2025-09-26 08:21:18 +00:00
Marc Brooks 7523917e34 fix(ui) firefox permissions error handling (#631) 2025-09-26 08:21:18 +00:00
iain MacDonnell 840c870e1f fix: keyboard_layout default config (en-US/en_US) (#633) 2025-09-26 08:21:18 +00:00
Aveline 04f6775272 feat(native): restart jetkvm_native automatically (#629) 2025-09-26 08:21:18 +00:00
Marc Brooks 4a4e1c0f7d chore(mDNS): ensure the mDNS mode is set every time network state changes (#624)
Eliminates (mostly) duplicate code
2025-09-26 08:21:18 +00:00
ronskvm f87a74e23a chore(hid): change absolute mouse usb interface descriptor's subclass field to zero
Changed absolute mouse usb interface descriptor's subclass field to zero.
2025-09-26 08:21:18 +00:00
Siyuan Miao 46a28e1947 ui(actionBar): remove Ctrl + Alt + Del in favor of Keyboard Macros 2025-09-26 08:21:18 +00:00
Caedis 43a8e6a4a1 build: allow the versions in the Makefile to be overwritten with ENV variables (#619) 2025-09-26 08:21:18 +00:00
Aveline f7c547e2c0 fix(ui/cloud): missing SettingsNetworkRoute (#608) 2025-09-26 08:21:18 +00:00
Siyuan Miao 3056b6ba3b chore: bump version to 0.4.4 2025-09-26 08:21:18 +00:00
Aveline 7e0c865941 fix(timesync): queryMultipleHttp hanging if all servers are unreachable (#605) 2025-09-26 08:21:18 +00:00
Aveline d2e838c010 chore: use pure Go resolver and remove CGO_ENABLED=0 (#603) 2025-09-26 08:21:18 +00:00
Ben Kochie db75a4d111 fix: Update metric naming (#602)
Fix up metric names to follow best practice naming conventions[0].

[0]: https://prometheus.io/docs/practices/naming/

Signed-off-by: SuperQ <superq@gmail.com>
2025-09-26 08:21:18 +00:00
Siyuan Miao f0309a1bc8 chore: bump version to 0.4.3 2025-09-26 08:21:18 +00:00
Aveline ed2d32c854 chore: disable cgo (#601) 2025-09-26 08:21:18 +00:00
Aveline 70eeb0476c chore: upgrade go from 1.24.3 to 1.24.4 (#600) 2025-09-26 08:21:18 +00:00
dependabot[bot] 9434d214b4 build(deps): bump github.com/hanwen/go-fuse/v2 from 2.5.1 to 2.8.0 (#590)
Bumps [github.com/hanwen/go-fuse/v2](https://github.com/hanwen/go-fuse) from 2.5.1 to 2.8.0.
- [Commits](https://github.com/hanwen/go-fuse/compare/v2.5.1...v2.8.0)

---
updated-dependencies:
- dependency-name: github.com/hanwen/go-fuse/v2
  dependency-version: 2.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 08:21:18 +00:00
dependabot[bot] 2b98d763d4 build(deps): bump github.com/Masterminds/semver/v3 from 3.3.0 to 3.3.1 (#593)
Bumps [github.com/Masterminds/semver/v3](https://github.com/Masterminds/semver) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/Masterminds/semver/releases)
- [Changelog](https://github.com/Masterminds/semver/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Masterminds/semver/compare/v3.3.0...v3.3.1)

---
updated-dependencies:
- dependency-name: github.com/Masterminds/semver/v3
  dependency-version: 3.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 08:21:18 +00:00
dependabot[bot] 763d39f203 build(deps): bump github.com/go-jose/go-jose/v4 in the go_modules group (#596)
Bumps the go_modules group with 1 update: [github.com/go-jose/go-jose/v4](https://github.com/go-jose/go-jose).


Updates `github.com/go-jose/go-jose/v4` from 4.0.2 to 4.0.5
- [Release notes](https://github.com/go-jose/go-jose/releases)
- [Changelog](https://github.com/go-jose/go-jose/blob/main/CHANGELOG.md)
- [Commits](https://github.com/go-jose/go-jose/compare/v4.0.2...v4.0.5)

---
updated-dependencies:
- dependency-name: github.com/go-jose/go-jose/v4
  dependency-version: 4.0.5
  dependency-type: indirect
  dependency-group: go_modules
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 08:21:18 +00:00
dependabot[bot] dce2cac2f5 build(deps): bump golang.org/x/net from 0.40.0 to 0.41.0 (#580)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.40.0 to 0.41.0.
- [Commits](https://github.com/golang/net/compare/v0.40.0...v0.41.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.41.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 08:21:18 +00:00
dependabot[bot] cd9423a077 build(deps): bump github.com/beevik/ntp from 1.3.1 to 1.4.3 (#585)
Bumps [github.com/beevik/ntp](https://github.com/beevik/ntp) from 1.3.1 to 1.4.3.
- [Release notes](https://github.com/beevik/ntp/releases)
- [Changelog](https://github.com/beevik/ntp/blob/main/RELEASE_NOTES.md)
- [Commits](https://github.com/beevik/ntp/compare/v1.3.1...v1.4.3)

---
updated-dependencies:
- dependency-name: github.com/beevik/ntp
  dependency-version: 1.4.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 08:21:18 +00:00
dependabot[bot] a66b9d1158 build(deps): bump github.com/prometheus/procfs from 0.15.1 to 0.16.1 (#592)
Bumps [github.com/prometheus/procfs](https://github.com/prometheus/procfs) from 0.15.1 to 0.16.1.
- [Release notes](https://github.com/prometheus/procfs/releases)
- [Commits](https://github.com/prometheus/procfs/compare/v0.15.1...v0.16.1)

---
updated-dependencies:
- dependency-name: github.com/prometheus/procfs
  dependency-version: 0.16.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 08:21:18 +00:00
dependabot[bot] 6a65aa371e build(deps): bump github.com/prometheus/client_golang (#588)
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.21.0 to 1.22.0.
- [Release notes](https://github.com/prometheus/client_golang/releases)
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prometheus/client_golang/compare/v1.21.0...v1.22.0)

---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
  dependency-version: 1.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 08:21:18 +00:00
dependabot[bot] 68845bddd3 build(deps): bump github.com/gin-contrib/logger from 1.2.5 to 1.2.6 (#589)
Bumps [github.com/gin-contrib/logger](https://github.com/gin-contrib/logger) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/gin-contrib/logger/releases)
- [Changelog](https://github.com/gin-contrib/logger/blob/master/.goreleaser.yaml)
- [Commits](https://github.com/gin-contrib/logger/compare/v1.2.5...v1.2.6)

---
updated-dependencies:
- dependency-name: github.com/gin-contrib/logger
  dependency-version: 1.2.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 08:21:18 +00:00
dependabot[bot] a42575ae85 build(deps): bump actions/setup-go from 4 to 5 (#577)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 4 to 5.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 08:21:18 +00:00
Ben Kochie c1492e7a24 chore: enable dependabot (#256)
Enable dependabot to auto-update dependencies.
* Update montly to avoid too much PR noise.
* Enable updates for Go modules.
* Enable updates for GitHub Actions.
* Enable updates for NPM in /ui.

Signed-off-by: SuperQ <superq@gmail.com>
2025-09-26 08:21:18 +00:00
Marc Brooks 1b75993836 Upgrade pion modules to fix CVE (#572)
Fixes #570

## Required

|  Package | From  | To  |
|---|---|---|
| github.com/pion/logging | v0.2.2 | v0.2.3 |
| github.com/pion/wrbrtc/v4 | v4.0.0 | v4.0.16 |

## Indirect

|  Package | From  | To  |
|---|---|---|
| github.com/pion/datachannel | v1.5.9 | v1.5.10 |
| github.com/pion/dtls | v3.0.3 | v3.0.6 |
| github.com/pion/ice/v4 | v4.0.2 | v4.0.10 |
| github.com/pion/interceptor | v0.1.37 | v0.1.40 |
| github.com/pion/rtcp | v1.2.14 | v1.2.15 |
| github.com/pion/rtp | v1.8.9 | v1.8.18 |
| github.com/pion/sctp | v1.8.33 | v1.8.39 |
| github.com/pion/sdp | v3.0.9| v3.0.13 |
| github.com/pion/srtp | v3.0.4 | v3.0.5 |
| github.com/pion/turn | v4.0.0 | v4.0.2 |
2025-09-26 08:21:18 +00:00
ariedel87 5532354a5f feat(video): add video enhancement settings for saturation, brightness, and contrast (#557) 2025-09-26 08:21:18 +00:00
Siyuan Miao 9872236257 chore: fix eslint errors 2025-09-26 08:21:18 +00:00
John 9d8b15809f Re-add scroll blocking/throttling (#544) 2025-09-26 08:21:18 +00:00
John 9d9544d756 fix: Log spam when using a web terminal #547 (#550) 2025-09-26 08:21:18 +00:00
Marc Brooks a485ff650c fix(ui): Fix full-screen keyboard lock issues. (#535)
When the keyboard lock is supposed to be active (in full-screen mode), hitting the escape key (NOT long-pressing) should NOT dismiss the full-screen mode, and should send the Escape key through to the remote.

- Added awaits to the browser calls that need to complete in order.
- Cleaned up (mostly) duplicate code in the Absolute/Relative mouse handling
- Ensure we don't overrun any existing keyboard lock or pointer lock
- Release the keyboard lock when leaving full-screen
- Per standards, we need to acquire the keyboard and pointer locks before entering full-screen or the user may get multiple messages about exiting.
- Fixed all the missing/excess React dependencies.
- Moved the pointer lock bar up so it is visible.
- Somewhere along the way, the prompt to click the video when in relative-mouse-mode stopped being visible, restored it's visibility
- Fixed all the "should be readonly" warnings.
2025-09-26 08:21:18 +00:00
Alex Ballas d9c3dbd534 fix: the screen doesn't dim or turn off
* Fix for #531

Fix for https://github.com/jetkvm/kvm/issues/531

* typo

* Skip processing if lease hasn't changed to avoid unnecessary wake-ups

* Add comment to clarify the need to stop the tickers
2025-09-26 08:21:18 +00:00
Marc Brooks 042a8b09a8 chore(ui): Clean up warnings (#536) 2025-09-26 08:21:18 +00:00
Alex Goodkind 94d016d353 feat: add local web server loopback mode configuration (#511)
* feat: add local web server loopback mode configuration

- Introduced a new configuration option `LocalWebServerLoopbackOnly` to restrict the web server to listen only on the loopback interface.
- Added RPC methods `rpcGetLocalWebServerLoopbackOnly` and `rpcSetLocalWebServerLoopbackOnly` for retrieving and updating this setting.
- Updated the web server startup logic to bind to the appropriate address based on the new configuration.
- Modified the `LocalDevice` struct to include the loopback setting in the response.

* remove extra logs

* chore: add VSCode extensions for improved development environment

* refactor: rename LocalWebServerLoopbackOnly to LocalLoopbackOnly

- Updated the configuration struct and related RPC methods to use the new name `LocalLoopbackOnly` for clarity.
- Adjusted the web server binding logic and device response structure to reflect this change.

* feat: add loopback-only mode functionality to UI

- Implemented a new setting for enabling loopback-only mode, restricting web interface access to localhost.
- Added a confirmation dialog to warn users before enabling this feature.
- Updated the ConfirmDialog component to accept React nodes for the description prop.
- Refactored imports and adjusted component structure for clarity.

* refactor: optimize device settings handlers for better performance

- Refactored the `handleDevChannelChange` and `handleLoopbackOnlyModeChange` functions to use `useCallback` for improved performance and to prevent unnecessary re-renders.
- Consolidated the logic for applying loopback-only mode into a separate `applyLoopbackOnlyMode` function, enhancing code clarity and maintainability.
- Updated the confirmation flow for enabling loopback-only mode to ensure user warnings are displayed appropriately.
2025-09-26 08:21:18 +00:00
Marc Brooks 89fe0eaa42 feat(ui): Add Ctrl+Alt+Del to the action bar (#498)
Since this is the sort of thing we do all the time, make it one-click away
2025-09-26 08:21:18 +00:00
Marc Brooks b90756d1ee chore(ui): Removed unused DeviceSettingState (#496)
Now that we don't do any mouse/trackpad sensitivity settings, this whole interface is unused.
2025-09-26 08:21:18 +00:00
Aveline 2953839784 feat(websecure): add support for ed25519 certificates (#513) 2025-09-26 08:21:18 +00:00
ariedel87 7fb9dc9881 feat(Keyboard): Hide Pressed Keys (#518) 2025-09-26 08:21:18 +00:00
Alex Goodkind 97bbab7826 chore: add VSCode extensions for improved development environment (#509) 2025-09-26 08:21:17 +00:00
Marc Brooks 08471e75a0 fix(ui): Default the keyboardLayout to en-US if not set (#512)
The recent fix to PasteModal will silently fail a paste if the keyboardLayout hasn't been selected in the settings yet, then when you look in Settings it looks like it's set to Belgian, but it's really just blank. Set it to default to en-US in both these places so it works like it did previously.

Fixes #492
2025-09-26 08:21:17 +00:00
Aveline a6715df6f0 feat: allow user to disable keyboard LED synchronization (#507)
* feat: allow user to disable keyboard LED synchronization

* Update ui/src/hooks/stores.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-26 08:21:17 +00:00
adammkelly 57ee095c40 chore(ui): Allow mac address copying (#504) (#506) 2025-09-26 08:21:17 +00:00
Aveline 44e361f7a3 feat: sync keyboard led status (#502) 2025-09-26 08:21:17 +00:00
Siyuan Miao 7b5d9ca3cd chore: bump version to 0.4.1 2025-09-26 08:21:17 +00:00
Siyuan Miao cc31689f75 chore: fix linter issues 2025-09-26 08:21:17 +00:00
Aveline 10c1f9bf6e fix: display scaling broken (#499) 2025-09-26 08:21:17 +00:00
Aveline 0fca85a6b4 refactor: remove init functions (#489) 2025-09-26 08:21:17 +00:00
Daniel Lorch 31752ad2fd feat(ui): enable multiple keyboard layouts for "paste text" to remote host (#405)
* Enable multiple keyboard layouts for paste text from host

* Trema is the more robust method for capital umlauts

* Improve error handling and pre-loading

* Improve accent handling

* Remove obscure Alt-Gr keys, unsure if they are supported everywhere

* Add Swiss French

* Change line ordering

* Fix whitespace

* Add French (France)

* Add English (UK)

* Add Swedish

* Add Spanish

* Fix fr_FR special characters

* Add more keys to Spanish

* Remove default value shift: false

* Add Norwegian

* Operator precedence 🤦

* Add Italian

* Add Czech

* Move guard statements outside of loop

* Move language name definitions into the keyboard layout files

* Change the locale names to their native language

German->Deutsch et. al.

* Move hold key handling into Go backend analogous to https://www.kernel.org/doc/Documentation/usb/gadget_hid.txt

* Remove trailing whitespace

* Fix

* Add Belgisch Nederlands

* Add JSONRPC handling

* Use useSettingsStore

* Revert "Move hold key handling into Go backend analogous to https://www.kernel.org/doc/Documentation/usb/gadget_hid.txt"

This reverts commit 146cee9309.

* Move FeatureFlag to navigation

* Fix: flip Y/Z

* Add useEffect dependencies

* Embolden language

* Add to useCallback dependencies

---------

Co-authored-by: Marc Brooks <IDisposable@gmail.com>
2025-09-26 08:21:17 +00:00
Marc Brooks 714c419197 Handle panics when calling the RPCHandler instead of dying (#488)
Added a wrapper around the callRPCHandler function to recover from panic and translate that to and error so that the RPC thread doesn't just die when something malformed comes in. This should keep the Jet flying.
2025-09-26 08:21:17 +00:00
Siyuan Miao 3ee732eced chore: bump version to 0.4.0 2025-09-26 08:21:17 +00:00
Siyuan Miao 75b2f5da4b build: enable trimpath for both dev and prod releases 2025-09-26 08:21:17 +00:00
Adam Shiervani 48a3dfd7a8 style(ui): update styling for access and network settings components (#487)
* style(ui): update styling for access and network settings components

* fix(ui): simplify conditional rendering in network settings component
2025-09-26 08:21:17 +00:00
Siyuan Miao 9b7a58db3d build: add trimpath to go build command 2025-09-26 08:21:17 +00:00
Aveline e1b32a94d9 chore: upgrade golang to 1.24.3 and nodejs to 22.x (#483) 2025-09-26 08:21:17 +00:00
Adam Shiervani d0b0c096f8 refactor: network settings UI (#486)
* feat(ui): update prettier configuration and quote styles

- Add cx to tailwind functions
- Set tailwind stylesheet path
- Convert single quotes to double quotes in CSS
- Add prettier ignore comments for animation utilities

* refactor(ui): extract network information into separate components

- Create DhcpLeaseCard component
- Create Ipv6NetworkCard component

* style(ui): refine component styling and layout

- Add padding to AutoHeight component
- Improve lifetime label display format
- Enhance network information card layouts

* style(ui): enhance checkbox and radio button styling

- Update Checkbox component to use form-checkbox class
- Refactor radio button classes for consistency across components

* style(ui): Add opacity for fade-in animations

* refactor(ui): enhance Modal and network settings components

- Add stable scrollbar gutter to Modal component
- Refactor custom domain input handling and layout adjustments
2025-09-26 08:21:17 +00:00
Aveline 1a301ff7a3 chore: always return local version if update check fails (#485) 2025-09-26 08:21:17 +00:00
Aveline fa92516e35 chore: reset usb after updating config (#482)
* fix(usbgadget): do not panic if a change isn't found

* chore(usbgadget): rebind usb after updating config
2025-09-26 08:21:17 +00:00
Aveline 93be974e93 fix(usbgadget): do not panic if a change isn't found (#481)
* fix(usbgadget): do not panic if a change isn't found

* chore(usbgadget): rebind usb after updating config
2025-09-26 08:21:17 +00:00
Siyuan Miao 7587caa5c8 fix: jetkvm_app path is now bin/jetkvm_app 2025-09-26 08:21:17 +00:00
Aveline 77507bb831 fix: configFS might not be mounted if the directory exists (#479) 2025-09-26 08:21:17 +00:00
Siyuan Miao f34dbcdb41 build: set up golang (smoketest) 2025-09-26 08:21:17 +00:00
Siyuan Miao d3addba37a build: add device-tests 2025-09-26 08:21:17 +00:00
Siyuan Miao eeeb65bbaf fix: add missing files for building unit tests 2025-09-26 08:21:17 +00:00
Aveline f5642870f7 fix: unit test not returning error when test fails
* fix: unit test not returning error when test fails

* chore: add unit test to smoketest.yml

* fix: make linter happy
2025-09-26 08:21:17 +00:00
Adam Shiervani eb1052a424 refactor: remove scroll sensitivity functionality and clean up related code (#477)
- Removed scroll sensitivity state and associated functions from jsonrpc.go and WebRTCVideo component.
- Cleaned up device settings store by eliminating unused scroll sensitivity logic.
- Updated mouse settings route to reflect the removal of scroll sensitivity feature.
- Simplified mouse wheel event handling in WebRTCVideo component.
2025-09-26 08:21:17 +00:00
Aveline a942cd02a8 chore(usbgadget): update usbgadget config only when needed (#474) 2025-09-26 08:21:17 +00:00
rmschooley 482462dc9b Improve/Simplify Mouse Wheel Scroll Behavior (#470)
* Improve/Simplify Mouse Wheel Scroll Behavior

* Update hid_mouse_absolute.go

Attempt to fix line reported as improperly formatted by lint.

* Update utils.go

Removed abs() function since lint states it is no longer used.
2025-09-26 08:21:17 +00:00
Julian Zander 6156b255c8 chore: add Go Report Card
Add Go Report Card
2025-09-26 08:21:17 +00:00
Siyuan Miao 97b2b0a3c2 chore: append package name to build script 2025-09-26 08:21:17 +00:00
Siyuan Miao a9021354b4 fix: golang test report input argument 2025-09-26 08:21:17 +00:00
Marc Brooks 7e9ca3dbe3 chore(ui): Patch-bump packages and use tailwind upgrade (#456)
* chore(ui): Patch bump in tailwind related packages and framer-motion

tailwind: [4.1.6 -> 4.1.7](https://github.com/tailwindlabs/tailwindcss/compare/v4.1.6...v4.1.7)
@tailwindcss/postcss: 4.1.6 -> 4.1.7
@tailwindcss/vite: 4.1.6 -> 4.1.7

Also patch-bump of:
framer-motion: [12.11.0 -> 12.11.4](https://github.com/motiondivision/motion/compare/v12.11.0...v12.11.4)

No source changes seemingly needed, have not rerun the migrate.

* chore(ui): Run tailwind upgrade and review changes

Ran the `npx @tailwindcss/upgrade` and accepted the changes that seemed safe.

They're things like:
- `data-[closed]:translate-y-9` -> `data-closed:translate-y-8` ()swaps the square bracket syntax to a `-` modifier)
- `bg-gradient-to-*` -> `bg-linear-to-*`
- `/[*%]` -> `/*` (swap square bracket syntax for inline)
- `theme(*.*)` -> `var(--*-*)` (theme styles are exposed as variables with hyphens for dots now)
- `[background-size:*]` -> `bg-size[*]` (move the square brackets inside tag)
- `[.active_&]:` -> `in[.active]:` (new syntax for parent query)
- `!class` -> `class!` (e.g. _!overflow-visible_ to _overflow-visible!_, for [important flag](https://tailwindcss.com/docs/styling-with-utility-classes#using-the-important-flag style)
- `w-[1px]` -> `w-px` (that's a new syntax for a 1px width)
- `h-[1px]` -> `h-px` (that's a new syntax for a 1px height)
- moved `html` and `html, body` global settings in the _index.css_

Also killed off an unused `import` and blank css class.
Also picked up the two `flex-grow` -> `grow` that I missed last pass, oops.
2025-09-26 08:21:17 +00:00
Aveline cbe1460295 chore: run golang tests 2025-09-26 08:21:17 +00:00
Marc Brooks fdbaafb629 fix(ui): Fix regression on Shift-Backspace not being handled (#454)
This keystroke is valid and means "delete to the right" on MacOS.
2025-09-26 08:21:17 +00:00
Marc Brooks 3eaf6da015 Update devcontainer.json to match ui package.json (#457)
Missed that we upgraded the ui's package.json, need to _also_ update the devcontainer.json to matching verison 22.15.0
2025-09-26 08:21:17 +00:00
Adam Shiervani b8f470d63a fix(ui): Adjust EmptyCard icon size and tweak SettingsMacros (#452) 2025-09-26 08:21:17 +00:00
Adam Shiervani dff6a5b3b2 refactor: Migrate from tailwind.js config to Tailwind CSS config (#451)
* refactor: Migrate from tailwind.js config to Tailwind CSS configuration and improve component styling

- Removed extensive theme and animation configurations from tailwind.config.js, migrating them to index.css for better organization.
- Updated components to utilize CSS variables for grid layouts and animations, enhancing maintainability.
- Adjusted various components to reflect the new CSS structure, ensuring consistent styling across the application.
- Improved accessibility and responsiveness in several UI components, including headers and popovers.
- Fixed minor styling issues and optimized class usage for better performance.

* style: use default tailwindcss/forms options

* refactor(Header): remove unused LuUser icon import
2025-09-26 08:21:17 +00:00
Marc Brooks 6047ea634e feat(ui): Enhance Virtual Keyboard for US (#449)
* feat(ui): Add Ctrl+Alt-Backspace combination key to Virtual Keyboard

Fixes #445 (somewhat)

* fix(ui): Correct virtual keyboard display when shift key is down.

Somewhere along the way, the handling of the shift-key state for letters and numbers was lost and we stopped displaying the capital/symbol for the key.
Also update page up and page down to have the space in the on-screen key.

* feat(ui): Add missing keys for virtual keyboard

Enable insert, delete, numpad equal, print scree, scroll lock, pause, system request, break keys.
2025-09-26 08:21:17 +00:00
Marc Brooks ba2f6f6500 chore: Upgrade UI vite and tailwind packages (#443)
* chore: Upgrade UI vite and tailwind packages

Vite 5.2.0 -> 6.3.5
@vitejs/plugin-basic-ssl 1.2.0 -> 2.0.0
cva: 1.0.0-beta.1 -> 1.0.0-beta.3
focus-trap-react 10.2.3 -> 11.0.3
framer-motion 11.15.0 -> 12.11.0
@tailwindcss/postcss 4.1.6
@tailwindcss/vite 4.1.6
tailwind 3.4.17 -> 4.1.6
tailwind-merge 2.5.5 -> 3.3.0

Minor updates:
@headlessui/react 2.2.2 -> 2.2.3
@types/react 19.1.3 -> 19.1.4
@types/react-dom 19.1.3 -> 19.1.5
@typescript-eslint/eslint-plugin 8.32.0 -> 8.32.1
@typescript-eslint/parser 8.32.0 -> 8.32.1
react-simple-keyboard 3.8.71 -> 3.8.72

The new version of vite required an Node 22.15 (since that's current LTS and node 21.x is EOL)

The changes to css due to the tailwind 3 to 4 upgrade were done following [the upgrade guide](https://tailwindcss.com/docs/upgrade-guide#changes-from-v3)

Done in this order (important):
`shadow-sm` -> `shadow-xs`
`shadow` -> `shadown-sm`
`rounded` -> `rounded-sm`
`outline-none` -> `outline-hidden`
`32rem_32rem_at_center` -> `center_at_32rem_32rem` (revised order of gradient props)
`ring-1 ring-black ring-opacity-5` -> `ring-1 ring-black/50`
`flex-shrink-0` -> `shrink-0`
`flex-grow-0` -> `grow-0`
`outline outline-1` -> `outline-1`

ALSO removed the **extra** `opacity-0` on the video element (trips up latest tailwind causing the video to be invisible)

FocusTrap is now not exported as the default, so change those imports

headlessui's Menu completely changed, so upgrade to the new syntax which necessitated a reorganization of the Header.tsx to enable the "menu" to still work

* Update eslint config and fix errors
2025-09-26 08:21:17 +00:00
Adam Shiervani c167e34c21 feat(network): enhance network settings UI (#364)
* feat(network): enhance network settings UI with domain management and improved layout

- Added custom domain input and selection options for DHCP and local domains.
- Improved layout for displaying network settings, including DHCP lease information and IPv6 addresses.
- Refactored state management for network settings and added handlers for hostname and domain changes.
- Updated the display of network settings to enhance user experience and accessibility.

* Re-add save button

* fix: add ConfirmDialog for renewing DHCP lease and improve network settings layout

- Integrated ConfirmDialog component to confirm DHCP lease renewal.
- Enhanced the layout of network settings, including better organization of IPv4 and IPv6 information.
- Updated state management for displaying network settings and lease information.
- Improved user experience with clearer descriptions and structured UI elements.

* Fix lint errors

* fix: useRef TS2554

---------

Co-authored-by: Siyuan Miao <i@xswan.net>
2025-09-26 08:21:17 +00:00
Marc Brooks 3d67cb84a9 feat: Reset optionally reset USB HID in dev-deploy (#440)
Adds `--reset-usb-hid` command to delete the configured USB HID device before running.
2025-09-26 08:21:17 +00:00
Aveline c105699bf8 chore: update jetkvm_native binary (4e2ce48) (#442) 2025-09-26 08:21:17 +00:00
Aveline 2046c7c76d chore: create images folder when starting the application (#437) 2025-09-26 08:21:17 +00:00
Aveline 38a28ee534 feat(usb_mass_storage): mount as disk (#333)
* feat(usb_mass_storage): mount as disk

* chore: try to set initial virtual media state from sysfs

* chore(usb-mass-storage): fix inquiry_string
2025-09-26 08:21:17 +00:00
Marc Brooks 4bcd53997d Update npm packages for the UI (#432)
Upgraded most packages to current as of 2025-05-09 for almost everything.
Remove the erroneous extra dependency to old xterm package since the correct @xterm/xterm package was already included (suspect a bad merge) and it was causing issues with react 19.1.
Switched to using the hooks exposed in the usehooks-ts package (this package was already referenced, suspect a bad merge) removing our private copies of useInterval, useIsMounted, useResizeObserver which are identical.
Added import of JSX from react now needed because NPX is not in global scope in react 19.x.
Explicitly cast the ref of included elements due to change in react 19.x
2025-09-26 08:21:17 +00:00
Daniel Lorch dc086834a3 Fix: Alt Gr not recognized (#399)
* Fix: Alt-Gr not recognized

* Proper fix for Alt-Gr not being recognized

* Add comment on codes and modifiers

* Add comment on paste box

* Remove comment

* Improve description

* Wording...

* Formatting...

* Improve description again
2025-09-26 08:21:17 +00:00
Qishuai Liu 03ee14dd79 ntp: fix panic on NTP query error and add IPv6 server for IPv6-only support (#424)
* fix(ntp): prevent panic on NTP query error and add IPv6 server in defaultNTPServers

* fix(ntp): make sure queryMultipleNTP finish if all servers failed
2025-09-26 08:21:17 +00:00
John 34450e9366 fix: absolute mouse scroll (#434)
Co-authored-by: wup-one <wup@deepspace.game>
2025-09-26 08:21:17 +00:00
Peder Toftegaard Olsen 297c9306da feat: UI for changing display orientation
* Added UI for changing display orientation.

* Fixed lint issue.
2025-09-26 08:21:17 +00:00
Siyuan Miao 81a3510810 chore: bump version to 0.4.0 2025-09-26 08:21:17 +00:00
Aveline 96fc1a20ad network enhanecment / refactor (#361)
* chore(network): improve connectivity check

* refactor(network): rewrite network and timesync component

* feat(display): show cloud connection status

* chore: change logging verbosity

* chore(websecure): update log message

* fix(ota): validate root certificate when downloading update

* feat(ui): add network settings tab

* fix(display): cloud connecting animation

* fix: golintci issues

* feat: add network settings tab

* feat(timesync): query servers in parallel

* refactor(network): move to internal/network package

* feat(timesync): add metrics

* refactor(log): move log to internal/logging package

* refactor(mdms): move mdns to internal/mdns package

* feat(developer): add pprof endpoint

* feat(logging): add a simple logging streaming endpoint

* fix(mdns): do not start mdns until network is up

* feat(network): allow users to update network settings from ui

* fix(network): handle errors when net.IPAddr is nil

* fix(mdns): scopedLogger SIGSEGV

* fix(dhcp): watch directory instead of file to catch fsnotify.Create event

* refactor(nbd): move platform-specific code to different files

* refactor(native): move platform-specific code to different files

* chore: fix linter issues

* chore(dev_deploy): allow to override PION_LOG_TRACE
2025-09-26 08:21:17 +00:00
Aveline d2ed3439fb feat: implement pointer-lock and keyboard-lock (#352)
* feat: implement pointer-lock and keyboard-lock

* feat: Add Pointer lock functionality and SSL support in dev mode

- Introduced @vitejs/plugin-basic-ssl for enabling SSL in development.
- Added a new script `dev:ssl` to run the development server with SSL.
- Implemented pointer lock feature in the WebRTCVideo component, enhancing user interaction.
- Added a PointerLockBar component to guide users on enabling mouse control.
- Cleaned up the VideoOverlay and WebRTCVideo components for better readability and functionality.

---------

Co-authored-by: Adam Shiervani <adam.shiervani@gmail.com>
2025-09-26 08:21:17 +00:00
Simão Gomes Viana a1e65ae6d1 VideoOverlay: add missing word to adapter line (#355)
THe sentence was incomplete without "ensure".
2025-09-26 08:21:17 +00:00
Ben Kochie 99015c80fe refactor: update golintci-lint and linter issues
* Update golangci-lint

Update golangci-lint to v2.

Signed-off-by: SuperQ <superq@gmail.com>

* Fixup various linter issues.

Signed-off-by: SuperQ <superq@gmail.com>

---------

Signed-off-by: SuperQ <superq@gmail.com>
2025-09-26 08:21:17 +00:00
Siyuan Miao 22ceb698c5 chore(ntp): add logging for time sync errors 2025-09-26 08:21:17 +00:00
Siyuan Miao b8ec8b46a1 fix(log): segmentation violation when err is nil 2025-09-26 08:21:17 +00:00
Siyuan Miao 80dc1a5257 chore(cloud): use request id from the cloud 2025-09-26 08:21:17 +00:00
Siyuan Miao acd0b94871 chore(log): ntp logger 2025-09-26 08:21:17 +00:00
Siyuan Miao aafc9318ab chore(log): add nbdLogger 2025-09-26 08:21:17 +00:00
Siyuan Miao 22a757cac7 chore: fix linting issue 2025-09-26 08:21:17 +00:00
Siyuan Miao 26064f44f0 chore: update logging 2025-09-26 08:21:17 +00:00
Siyuan Miao 265ea5ab8b chore(log): add wolLogger 2025-09-26 08:21:17 +00:00
Siyuan Miao f61b16421c fix(ota): verifyFile missing arguments 2025-09-26 08:21:17 +00:00
Siyuan Miao 1b34e3f35d chore(log): add webRtcLogger 2025-09-26 08:21:17 +00:00
Siyuan Miao a0bc18ea90 chore(log): add terminalLogger 2025-09-26 08:21:17 +00:00
Siyuan Miao e2b6883342 chore(log): add serialLogger 2025-09-26 08:21:17 +00:00
Siyuan Miao 15d95a8147 chore(log): add otaLogger 2025-09-26 08:21:17 +00:00
Siyuan Miao 0302faa030 chore(log): add watchdogLogger 2025-09-26 08:21:17 +00:00
Siyuan Miao 74a11ef7e9 chore(log): add jsonRpcLogger 2025-09-26 08:21:17 +00:00
Siyuan Miao 6e5493503e feat(tls): #330 2025-09-26 08:21:17 +00:00
Siyuan Miao 6c6ce4e5cb refactor: use structured logging 2025-09-26 08:21:17 +00:00
Andrew Davis 63176c8b53 Add keyboard macros (#305)
* add jsonrpc keyboard macro get/set

* add ui keyboard macros settings and macro bar

* use notifications component and handle jsonrpc errors

* cleanup settings menu

* return error rather than truncate steps in validation

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* feat(ui): add className prop to Checkbox component to allow custom styling

* use existing components and CTA

* extract display key mappings

* create generic combobox component

* remove macro description

* cleanup styles and macro list

* create sortable list component

* split up macro routes

* remove sortable list and simplify

* cleanup macrobar

* use and add info to fieldlabel

* add useCallback optimizations

* add confirm dialog component

* cleanup delete buttons

* revert info on field label

* cleanup combobox focus

* cleanup icons

* set default label for delay

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-26 08:21:17 +00:00
Adam Shiervani 5708653617 chore(dev_deploy): update logging for websocket in deployment script (#348) 2025-09-26 08:21:17 +00:00
Aveline 4aa37e2aa7 chore(websocket): logging and metrics improvement (#347)
* chore(websocket): only show warning if websocket is closed abnormally

* chore(websocket): add counter for ping requests received
2025-09-26 08:21:17 +00:00
Aveline daf28ac225 feat(websocket): handle ping messages sent from react and add logging (#346) 2025-09-26 08:21:17 +00:00
Adam Shiervani f1ba567ca3 fix(ui): adjust layout and z-index for improved UI consistency in KvmIdRoute (#345) 2025-09-26 08:21:17 +00:00
Adam Shiervani c14149f547 fix(ui): update WebRTCVideo component to properly animate on peer connection state (#343) 2025-09-26 08:21:17 +00:00
Ben Kochie 1ee3ae5aa6 fix: Shell linting (#328)
Cleanup various shell linting issues
* Use `/usr/bin/env` consistently for better platform compatibility.
* SC2317 (info): Command appears to be unreachable.
* SC2002 (style): Useless cat.

Signed-off-by: SuperQ <superq@gmail.com>
2025-09-26 08:21:17 +00:00
Adam Shiervani de857ec32d fix(ui): increase z-index for Modal component to improve layering (#341) 2025-09-26 08:21:17 +00:00
Adam Shiervani 0c3ea6e423 fix(dev_device): update JETKVM_PROXY_URL to use WebSocket protocol (#342) 2025-09-26 08:21:17 +00:00
Adam Shiervani 2c99d356b6 Don't block new PC if connection is stable. No need to (#340) 2025-09-26 08:21:16 +00:00
Adam Shiervani 14909b22de refactor: remove unnecessary whitespace in setupRouter function 2025-09-26 08:21:16 +00:00
Adam Shiervani c3a44cd953 re-add old signaling for when upgrading 2025-09-26 08:21:16 +00:00
Siyuan Miao fcb1fc3555 fix(ota): certificate signed by unknown authority 2025-09-26 08:21:16 +00:00
Adam Shiervani d4a2557d10 Feat/Trickle ice (#336)
* feat(cloud): Use Websocket signaling in cloud mode

* refactor: Enhance WebRTC signaling and connection handling

* refactor: Improve WebRTC connection management and logging in KvmIdRoute

* refactor: Update PeerConnectionDisconnectedOverlay to use Card component for better UI structure

* refactor: Standardize metric naming and improve websocket logging

* refactor: Rename WebRTC signaling functions and update deployment script for debug version

* fix: Handle error when writing new ICE candidate to WebRTC signaling channel

* refactor: Rename signaling handler function for clarity

* refactor: Remove old http local http endpoint

* refactor: Improve metric help text and standardize comparison operator in KvmIdRoute

* chore(websocket): use MetricVec instead of Metric to store metrics

* fix conflicts

* fix: use wss when the page is served over https

* feat: Add app version header and update WebRTC signaling endpoint

* fix: Handle error when writing device metadata to WebRTC signaling channel

---------

Co-authored-by: Siyuan Miao <i@xswan.net>
2025-09-26 08:21:16 +00:00
Aveline 06a595a610 chore(ota): allow a longer timeout when downloading packages (#332) 2025-09-26 08:21:16 +00:00
Siyuan Miao 075437410f feat(cloud): disconnect from cloud immediately when cloud URL changes or user requests to deregister 2025-09-26 08:21:16 +00:00
Adam Shiervani 095f5c542d refactor: Update WebRTC connection handling and overlays (#320)
* refactor: Update WebRTC connection handling and overlays

* fix: Update comments for WebRTC connection handling in KvmIdRoute

* chore: Clean up import statements in devices.$id.tsx
2025-09-26 08:21:16 +00:00
Siyuan Miao 2d1b327159 feat(cloud): add metrics for cloud connections 2025-09-26 08:21:16 +00:00
Siyuan Miao 24bc04123d chore: skip websocket client if net isn't up or time sync hasn't complete 2025-09-26 08:21:16 +00:00
Cameron Fleming e0ea91d977 chore: Update README Discord Link
Corrects Discord link in the help section.
2025-09-26 08:21:16 +00:00
SuperQ 235c1ef6e9 chore: Enable more linters
Enable more golangci-lint linters.
* `forbidigo` to stop use of non-logger console printing.
* `goimports` to make sure `import` blocks are formatted nicely.
* `misspell` to catch spelling mistakes.
* `whitespace` to catch whitespace issues.

Signed-off-by: SuperQ <superq@gmail.com>
2025-09-26 08:21:16 +00:00
Siyuan Miao e5a2d490c8 chore: fix linting issues of web_tls.go 2025-09-26 08:21:16 +00:00
Adam Shiervani bdcbadd6b1 Improve error handling when `RTCPeerConnection` throws (#289)
* fix(WebRTC): improve error handling during peer connection creation and add connection error overlay

* refactor: update peer connection state handling and improve type definitions across components
2025-09-26 08:21:16 +00:00
9 changed files with 141 additions and 19 deletions

View File

@ -368,7 +368,7 @@ The patches are generated by
```bash
git diff --cached --diff-filter=d > ../internal/native/cgo/lvgl-minify.patch && \
git diff --name-only --diff-filter=d --cached > ../internal/native/cgo/lvgl-minify.del
git diff --name-only --diff-filter=D --cached > ../internal/native/cgo/lvgl-minify.del
```

View File

@ -2,8 +2,8 @@ BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
BUILDDATE := $(shell date -u +%FT%T%z)
BUILDTS := $(shell date -u +%s)
REVISION := $(shell git rev-parse HEAD)
VERSION_DEV := 0.5.0-dev$(shell date +%Y%m%d%H%M)
VERSION := 0.4.9
VERSION_DEV := 0.4.9-dev$(shell date +%Y%m%d%H%M)
VERSION := 0.4.8
PROMETHEUS_TAG := github.com/prometheus/common/version
KVM_PKG_NAME := github.com/jetkvm/kvm

View File

@ -30,8 +30,17 @@ void jetkvm_set_video_handler(jetkvm_video_handler_t *handler) {
video_handler = handler;
}
static jetkvm_indev_handler_t *jetkvm_indev_handler = NULL;
static void jetkvm_indev_wrapper(lv_event_code_t code) {
if (jetkvm_indev_handler != NULL) {
(*jetkvm_indev_handler)((int)code);
}
}
void jetkvm_set_indev_handler(jetkvm_indev_handler_t *handler) {
lvgl_set_indev_handler(handler);
jetkvm_indev_handler = handler;
lvgl_set_indev_handler(jetkvm_indev_wrapper);
}
void jetkvm_set_rpc_handler(jetkvm_rpc_handler_t *handler) {
@ -45,8 +54,7 @@ void jetkvm_call_rpc_handler(const char *method, const char *params) {
}
const char *jetkvm_ui_event_code_to_name(int code) {
lv_event_code_t cCode = (lv_event_code_t)code;
return lv_event_code_get_name(code);
return lv_event_code_get_name((lv_event_code_t)code);
}
void video_report_format(bool ready, const char *error, u_int16_t width, u_int16_t height, double frame_per_second)
@ -386,7 +394,7 @@ char *jetkvm_video_get_edid_hex() {
if (edid_len < 0) {
return NULL;
}
return bytes_to_hex(edid, edid_len);
return (char *)bytes_to_hex(edid, edid_len);
}
jetkvm_video_state_t *jetkvm_video_get_status() {
@ -394,7 +402,7 @@ jetkvm_video_state_t *jetkvm_video_get_status() {
}
char *jetkvm_video_log_status() {
return videoc_log_status();
return (char *)videoc_log_status();
}
int jetkvm_video_init() {

View File

@ -117,8 +117,6 @@ const char *videoc_log_status()
{
int fd;
char *buffer = NULL;
size_t buffer_size = 0;
ssize_t bytes_read;
fd = open(V4L_SUBDEV, O_RDWR);
if (fd < 0)

View File

@ -555,6 +555,78 @@ examples/widgets/tileview/index.rst
examples/widgets/tileview/lv_example_tileview_1.c
examples/widgets/win/index.rst
examples/widgets/win/lv_example_win_1.c
src/draw/dma2d/lv_draw_dma2d.c
src/draw/dma2d/lv_draw_dma2d.h
src/draw/dma2d/lv_draw_dma2d_fill.c
src/draw/dma2d/lv_draw_dma2d_img.c
src/draw/dma2d/lv_draw_dma2d_private.h
src/draw/nema_gfx/lv_draw_nema_gfx.c
src/draw/nema_gfx/lv_draw_nema_gfx.h
src/draw/nema_gfx/lv_draw_nema_gfx_arc.c
src/draw/nema_gfx/lv_draw_nema_gfx_border.c
src/draw/nema_gfx/lv_draw_nema_gfx_fill.c
src/draw/nema_gfx/lv_draw_nema_gfx_img.c
src/draw/nema_gfx/lv_draw_nema_gfx_label.c
src/draw/nema_gfx/lv_draw_nema_gfx_layer.c
src/draw/nema_gfx/lv_draw_nema_gfx_line.c
src/draw/nema_gfx/lv_draw_nema_gfx_stm32_hal.c
src/draw/nema_gfx/lv_draw_nema_gfx_triangle.c
src/draw/nema_gfx/lv_draw_nema_gfx_utils.c
src/draw/nema_gfx/lv_draw_nema_gfx_utils.h
src/draw/nema_gfx/lv_nema_gfx_path.c
src/draw/nema_gfx/lv_nema_gfx_path.h
src/draw/opengles/lv_draw_opengles.c
src/draw/opengles/lv_draw_opengles.h
src/draw/renesas/dave2d/lv_draw_dave2d.c
src/draw/renesas/dave2d/lv_draw_dave2d.h
src/draw/renesas/dave2d/lv_draw_dave2d_arc.c
src/draw/renesas/dave2d/lv_draw_dave2d_border.c
src/draw/renesas/dave2d/lv_draw_dave2d_fill.c
src/draw/renesas/dave2d/lv_draw_dave2d_image.c
src/draw/renesas/dave2d/lv_draw_dave2d_label.c
src/draw/renesas/dave2d/lv_draw_dave2d_line.c
src/draw/renesas/dave2d/lv_draw_dave2d_mask_rectangle.c
src/draw/renesas/dave2d/lv_draw_dave2d_triangle.c
src/draw/renesas/dave2d/lv_draw_dave2d_utils.c
src/draw/renesas/dave2d/lv_draw_dave2d_utils.h
src/drivers/glfw/lv_glfw_window.c
src/drivers/glfw/lv_glfw_window.h
src/drivers/glfw/lv_glfw_window_private.h
src/drivers/glfw/lv_opengles_debug.c
src/drivers/glfw/lv_opengles_debug.h
src/drivers/glfw/lv_opengles_driver.c
src/drivers/glfw/lv_opengles_driver.h
src/drivers/glfw/lv_opengles_texture.c
src/drivers/glfw/lv_opengles_texture.h
src/drivers/wayland/lv_wayland.c
src/drivers/wayland/lv_wayland.h
src/drivers/wayland/lv_wayland_private.h
src/drivers/wayland/lv_wayland_smm.c
src/drivers/wayland/lv_wayland_smm.h
src/drivers/wayland/lv_wl_cache.c
src/drivers/wayland/lv_wl_dmabuf.c
src/drivers/wayland/lv_wl_keyboard.c
src/drivers/wayland/lv_wl_keyboard.h
src/drivers/wayland/lv_wl_pointer.c
src/drivers/wayland/lv_wl_pointer.h
src/drivers/wayland/lv_wl_pointer_axis.c
src/drivers/wayland/lv_wl_pointer_axis.h
src/drivers/wayland/lv_wl_seat.c
src/drivers/wayland/lv_wl_shell.c
src/drivers/wayland/lv_wl_shm.c
src/drivers/wayland/lv_wl_touch.c
src/drivers/wayland/lv_wl_touch.h
src/drivers/wayland/lv_wl_window.c
src/drivers/wayland/lv_wl_window.h
src/drivers/wayland/lv_wl_window_decorations.c
src/drivers/wayland/lv_wl_xdg_shell.c
src/drivers/windows/lv_windows_context.c
src/drivers/windows/lv_windows_context.h
src/drivers/windows/lv_windows_display.c
src/drivers/windows/lv_windows_display.h
src/drivers/windows/lv_windows_input.c
src/drivers/windows/lv_windows_input.h
src/drivers/windows/lv_windows_input_private.h
src/font/lv_font_dejavu_16_persian_hebrew.c
src/font/lv_font_montserrat_10.c
src/font/lv_font_montserrat_12.c

View File

@ -122,6 +122,44 @@ index 5c6b05ed8..a18044d64 100644
############################## SET GLOBAL VARIABLES ######################################
if (HAS_PARENT_SCOPE)
diff --git a/src/drivers/lv_drivers.h b/src/drivers/lv_drivers.h
index 085010813..6e93deab1 100644
--- a/src/drivers/lv_drivers.h
+++ b/src/drivers/lv_drivers.h
@@ -31,33 +31,12 @@ extern "C" {
#include "display/st7789/lv_st7789.h"
#include "display/st7796/lv_st7796.h"
-#include "display/renesas_glcdc/lv_renesas_glcdc.h"
#include "display/st_ltdc/lv_st_ltdc.h"
#include "display/ft81x/lv_ft81x.h"
-#include "nuttx/lv_nuttx_entry.h"
-#include "nuttx/lv_nuttx_fbdev.h"
-#include "nuttx/lv_nuttx_touchscreen.h"
-#include "nuttx/lv_nuttx_lcd.h"
-#include "nuttx/lv_nuttx_libuv.h"
-
#include "evdev/lv_evdev.h"
#include "libinput/lv_libinput.h"
-#include "windows/lv_windows_input.h"
-#include "windows/lv_windows_display.h"
-
-#include "glfw/lv_glfw_window.h"
-#include "glfw/lv_opengles_texture.h"
-#include "glfw/lv_opengles_driver.h"
-
-#include "qnx/lv_qnx.h"
-
-#include "wayland/lv_wayland.h"
-
-#include "uefi/lv_uefi_context.h"
-#include "uefi/lv_uefi_indev.h"
-#include "uefi/lv_uefi_display.h"
/*********************
* DEFINES
diff --git a/src/font/lv_font.h b/src/font/lv_font.h
index 180891832..b66c30eaa 100644
--- a/src/font/lv_font.h

View File

@ -11,8 +11,8 @@
#include "ui_index.h"
#include "ctrl.h"
#define DISP_BUF_SIZE (300 * 240 * 2)
static lv_color_t buf[DISP_BUF_SIZE];
// #define DISP_BUF_SIZE (300 * 240 * 2)
// static lv_color_t buf[DISP_BUF_SIZE];
indev_handler_t *indev_handler = NULL;
@ -97,8 +97,8 @@ void lvgl_set_rotation(lv_display_t *disp, u_int16_t rotation) {
}
log_info("refreshing objects");
lv_obj_report_style_change(&flex_screen_style);
lv_obj_report_style_change(&flex_screen_menu_style);
lv_obj_report_style_change(flex_screen_style);
lv_obj_report_style_change(flex_screen_menu_style);
}
uint32_t custom_tick_get(void)
@ -151,7 +151,7 @@ const char *ui_get_current_screen() {
return NULL;
}
lv_img_dsc_t *ui_get_image(const char *name) {
const lv_img_dsc_t *ui_get_image(const char *name) {
for (size_t i = 0; i < ui_images_size; i++) {
if (strcmp(ui_images[i].name, name) == 0) {
return ui_images[i].img;

View File

@ -41,8 +41,15 @@ lv_style_t *ui_get_style(const char *name);
* @brief Get the image with the given name
*
* @param name The name of the image
* @return lv_img_dsc_t* The image with the given name
* @return const lv_img_dsc_t* The image with the given name
*/
lv_img_dsc_t *ui_get_image(const char *name);
const lv_img_dsc_t *ui_get_image(const char *name);
/**
* @brief Get the current screen name
*
* @return const char* The name of the current screen
*/
const char *ui_get_current_screen();
#endif // SCREEN_H

View File

@ -1,6 +1,7 @@
#include "actions.h"
#include "screens.h"
#include <stdio.h>
#include <string.h>
#include "ui.h"
#include "vars.h"
@ -81,7 +82,6 @@ const int REBOOT_HOLD_TIME = 5;
void action_reset_config(lv_event_t * e) {
lv_event_code_t event_code = lv_event_get_code(e);
lv_obj_t *obj = lv_event_get_target(e);
if (event_code == LV_EVENT_PRESSED) {
t_reset_config = lv_tick_get();
@ -112,7 +112,6 @@ void action_reset_config(lv_event_t * e) {
void action_reboot(lv_event_t * e) {
lv_event_code_t event_code = lv_event_get_code(e);
lv_obj_t *obj = lv_event_get_target(e);
if (event_code == LV_EVENT_PRESSED) {
t_reboot = lv_tick_get();