CSS display:inline-flex overrode the HTML hidden attribute, leaving an empty pill between display and audio with uneven margins.
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
Hide the billing pane reliably after Skip/Submit, add the missing panel
billing/check route for the package badge, quiet connect-password 404s,
blend report styling with the disconnect card, and localize report strings.
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
Import latest release failed with generic_agent_release_redirect_host_invalid
because browser_download_url redirects to release-assets.githubusercontent.com,
which was missing from the SSRF allowlist (already allowed in the module installer).
Refs #475
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
Exempt POST /api/settings/restore from JSON Content-Type middleware so FormData uploads reach multer. Use resolvePathUnderRoot for special/mesh_agent_server.pem in pre-update backup create/restore.
Refs #473
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
Map API codes like generic_agent_release_not_found to locale strings
instead of showing raw error codes in Generator.
Refs #474
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
Add scoped tag rename/delete APIs and Devices UI (Manage tags modal, context menu, edit/detail hints) so operators can retire or rename tags without editing every peer.
Refs #470
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
qr_code_scanner is missing from the bundled Material Icons font, so the sidebar showed raw ligature text instead of an icon.
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
Align the Node panel with Go role_permissions, protect user-directory paths and relays, and add regression coverage. Make the embedded worker test explicitly select its optional maintainer mode.
Refs #468
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
browseParent sent bare C: instead of C:\, so Win32 listed the process cwd. Use drive-root-aware parentRemotePath; clear stale remote rows while loading.
Refs #467
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
Import signed BetterDesk-Client releases instead of compiling on the panel host; mark build toolchain optional; add Główne → Aktywuj agenta pairing entry and Download Hub i18n.
Refs #466
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
Console proxy source IPs are Docker bridge addresses, not loopback; default PANEL_SIGNAL_PROXY_CIDRS on the Go server so browser remote is not denied as initiator_not_registered.
Refs #465
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
Long panel installs were surfacing as generic Request failed when a reverse
proxy cut the HTTP call around ~120s while applyUpdate kept running. Poll
install-status after gateway disconnect, clarify 502/504 errors, pin
GOTOOLCHAIN=local, and report spawn kill/timeout signals for #464.
Refs #464
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
Modernize Commercialization on packages/sessions IA: Settings Time tab with
BILLING_TIMEZONE, group-only packages, monthly period history with midnight
split, Web Remote report overlay, pending_report in Sessions, and package
preview as a centered modal. Includes panel form polish and desktop-client
API notes.
Refs #456
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
Add optional server-observed peer availability transitions and PunchHole/RequestRelay session tracking for the device Metrics tab. Drop duplicated CPU/RAM/disk cards from Metrics (kept on Overview), expose Settings toggle/retention, and wire full-width Metrics UI across all locales.
Refs #455
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
Use allowlisted hostname literals with https.get options instead of a
full URL string so request-forgery analysis sees a fixed host.
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
Store OIDC discovery retry interval atomically and Close() background
goroutines so TestDiscoveryRetryAfterFailure is race-free. Bump toolchain
to go1.26.9 and golang.org/x/text to v0.41.0 (govulncheck clean). Confine
multer unlink paths; harden guest session ID entropy; stop interpolating
device IDs into console format strings; expand CodeQL query filters for
validated/admin-only paths.
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)
Make guard-sqlite-auth-split self-contained via _guard_file_exists so
orphan auth.db detection works when the script is sourced alone (unit
tests) while still preferring file_exists_as_betterdesk under entrypoints.
Align bootstrap credential tests with #385 (generate/export shared
password; publish ADMIN_PASSWORD to .admin_credentials).
Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow); muopc (@muopc)