What's Changed
- feat(i18n): add Welsh (Cymraeg) localization by @agh in #1294
- fix(security): sanitize filename in rpcMountBuiltInImage by @agh in #1292
- fix(security): persist session token to disk on login by @agh in #1293
- fix(security): redact secrets from diagnostics ZIP export by @agh in #1291
- fix(security): enforce bcrypt 72-byte password length limit by @agh in #1290
- fix(ui): use consistent name for KVM terminal across action bar and panel by @agh in #1286
- chore: use consistent @/ import path for ru_RU keyboard layout by @agh in #1285
- feat(keyboard): add Hungarian keyboard layout (hu_HU) by @agh in #1284
- fix(ui): enable scrolling on cloud devices page by @agh in #1282
- fix(hid): skip mouse reports when mouse device is disabled by @agh in #1283
- fix(ui): add warning when SSH public key is empty in developer mode by @agh in #1280
- fix(video): prevent space bar from pausing video in fullscreen by @agh in #1278
- fix(display): prevent background events from resetting off timer by @agh in #1277
- fix(security): rate limit /device/setup endpoint by @flightlesstux in #1271
- fix(security): add missing HTTP security headers by @flightlesstux in #1267
- fix(security): sanitize error messages returned to clients by @flightlesstux in #1270
- fix(ui): restore terminal focus after closing settings modal by @agh in #1287
- fix(ui): send raw characters for KVM terminal instead of JSON envelope by @adamshiervani in #1295
- fix: auto-recover USB gadget when host power-cycles by @adamshiervani in #1297
- feat: Added copy text to clipboard from kvm using OCR by @tvinhas in #1207
- fix(network): restore IPv6 disabled option in network settings by @agh in #1279
- fix(make): fix dev_release e2e test env vars and coverage by @adamshiervani in #1298
- fix(make): require JETKVM_REMOTE_HOST for release targets and clean up test commands by @adamshiervani in #1299
- feat: display hostname in browser tab and nav bar by @DiamondCortex in #1163
- fix(timesync): remove pool.ntp.org from default NTP servers by @agh in #1301
- refactor(web): extract magic cache and cookie TTL constants by @agh in #1304
- refactor(cmd): replace fmt.Printf with zerolog in supervisor by @agh in #1302
- fix(webrtc): stop restricting ICE candidate gathering to mDNS net types by @adamshiervani in #1307
- UI/split button clipboard by @adamshiervani in #1308
- feat: Add detached window with optional toolbar and hostname display by @tvinhas in #1187
- feat(network): add Tailscale status to Settings > Network by @agh in #1276
- fix(e2e): re-read caps_lock LED state each retry iteration by @adamshiervani in #1319
- fix: update stale Debian 13 and Ubuntu 24.04 ISO URLs by @adamshiervani in #1317
- MQTT Support / Home Assistant Integration by @PH89 in #1195
- feat(remote): add support for custom tailscale control servers by @dotWee in #1312
- refactor: move tailscale logic into internal/tailscale package by @adamshiervani in #1318
- feat(e2e): add OTA upgrade-from-stable test by @adamshiervani in #1324
- fix(ota): return only the matched entity from parseAndValidateKeyring by @agh in #1316
- test(ota): add GPG signing subkey verification tests by @adamshiervani in #1325
- feat(build): add podman support for dev deploy scripts by @tvinhas in #1303
- ci: redesign workflows into lint + build by @adamshiervani in #1330
- fix: gate public IP check behind cloud adoption status by @adamshiervani in #1328
- chore(ui): add husky and lint-staged for pre-commit linting by @adamshiervani in #1335
- fix: replace hardcoded English strings with i18n message functions (#1162) by @adamshiervani in #1322
- fix: prevent cursor jumping to top-left on window blur (#392) by @adamshiervani in #1359
- feat: add horizontal mouse wheel scrolling support (#415) by @adamshiervani in #1358
- feat: add 4th and 5th button support for absolute mouse (#416) by @adamshiervani in #1357
- fix: add settling delay when waking HDMI capture chip from sleep (#519) by @adamshiervani in #1356
- feat: add factory reset to replace config-only reset (#529) by @adamshiervani in #1355
- fix: reset HID file handles after disk-mode virtual media mount (#560) by @adamshiervani in #1349
- feat(ui): add toggles to hide header and status bars (#1333) by @adamshiervani in #1343
- feat: add Portuguese (pt-PT) keyboard layout (#697) by @adamshiervani in #1337
- fix: replace default EDID with JetKVM v1 EDID by @adamshiervani in #1341
- fix(video): align VENC virtual width/height to 16 bytes for non-standard resolutions (#699) by @adamshiervani in #1347
- feat: add Polish (Polski) keyboard layout for paste support (#566) by @adamshiervani in #1348
- fix: modifier key auto-release and keyboard reset on disconnect (#641) by @adamshiervani in #1339
- feat: add USB CDC-ACM serial console gadget (#726) by @adamshiervani in #1352
- chore(ui): migrate to Vite 8, oxlint, and oxfmt by @adamshiervani in #1362
- feat: add custom broadcast IP option to Wake-on-LAN (#1238) by @adamshiervani in #1345
- fix: USB HID startup recovery, unreliable channel fallback, and e2e test stability by @adamshiervani in #1364
- fix(i18n): improve translation quality across all 13 languages by @adamshiervani in #1365
- fix: swap menu screen padding on display rotation (#637) by @adamshiervani in #1354
- chore(ui): remove vite-tsconfig-paths plugin by @adamshiervani in #1367
- feat: add scroll direction setting for macOS Natural Scrolling (#640) by @adamshiervani in #1340
- fix: reset USB gadget when virtual media unmount fails with EBUSY by @adamshiervani in #1331
- fix: recover HID chardev after DWC3 rebind race on RV1106 by @adamshiervani in #1366
- test: add keyboard keepalive and auto-release e2e tests by @adamshiervani in #1346
- fix: remove goroutine from HID message handler to prevent leak and disconnect race by @adamshiervani in #1336
- feat: add hide/show text toggle to paste modal (#694) by @adamshiervani in #1353
- fix(video): scale stream to fill available viewport by @agh in #1281
- fix: send mouse button state changes via reliable WebRTC channel (#695) by @adamshiervani in #1338
- fix: add hold-to-force-off hint for ATX Power button by @adamshiervani in #1327
- fix(e2e): kill remote-agent before scp to avoid ETXTBSY by @adamshiervani in #1368
- feat(usb): enable remote wakeup for HID devices by @jlian in #1235
- fix(keyboard): serialise keyboard state mutations to eliminate race by @adamshiervani in #1369
- feat(network): add custom NTP/HTTP time sync configuration UI by @agh in #1289
- test(timesync): add e2e tests for custom NTP configuration by @adamshiervani in #1370
- fix(ui): sync default EDID with updated backend value by @adamshiervani in #1374
- test(ota): add e2e test for upgrading to a signed release by @adamshiervani in #1373
- feat(video): add H.265 codec support with auto-negotiation by @adamshiervani in #1371
- feat(video): tune encoder for better quality and faster recovery by @adamshiervani in #1372
- fix(ui): fix virtual keyboard crash after Vite 8 upgrade by @adamshiervani in #1375
- fix(test): fix e2e flakiness from RPC timeouts and stale session dialogs by @adamshiervani in #1376
- fix(test): fix e2e flakiness from HDMI signal not detected during beforeAll by @adamshiervani in #1377
- feat(ui): replace detach mode with embed mode by @adamshiervani in #1378
- fix(ui): hide H.265 codec option when browser doesn't support it by @adamshiervani in #1380
- fix(ui): reconcile codec preference against available options by @adamshiervani in #1381
- fix(test): fix e2e flakiness from hook timeouts, EDID drops, and USB recovery by @adamshiervani in #1382
- fix(test): add ota-upgrade-to-signed project to dev_release target by @adamshiervani in #1384
- fix(test): add wakeDisplay and waitForVideoStream to video codec tests by @adamshiervani in #1385
New Contributors
- @agh made their first contribution in #1294
- @flightlesstux made their first contribution in #1271
- @tvinhas made their first contribution in #1207
- @DiamondCortex made their first contribution in #1163
- @jlian made their first contribution in #1235
Full Changelog: release/0.5.4...release/0.5.5