Commit Graph
433 Commits
Author SHA1 Message Date
Eduard Gert 3175b880e4 add better keyboard nav and fix sonar lint 2026-06-18 13:56:41 +02:00
Eduard Gert 79e7dce47e make settings accessible
 Conflicts:
	client/ui/frontend/src/modules/profiles/ProfilesTab.tsx
2026-06-18 13:56:41 +02:00
Eduard Gert 77fe022351 make main screen accessible 2026-06-18 13:56:41 +02:00
Eduard Gert 9cdc6e3013 add a11y keys 2026-06-18 13:56:41 +02:00
Zoltán Papp f6e50995b6 [client] Classify session extend errors for the UI
Route services.Session errors through the same classifier Connection
uses so RequestExtend/WaitExtend return a structured ClientError with a
clean localized short message instead of the raw daemon error. Extract
the shared errorClassifier into errors.go, and fall back to the gRPC
status code when no message substring matches, since the daemon now
forwards a clean desc without the English marker text.
2026-06-18 13:37:58 +02:00
Zoltan Papp a6d1194b5d Merge branch 'main' into ui-refactor
Resolve conflicts and complete the profile display-name -> ID migration
across the daemon, CLI, UI services, tray, and React frontend.

- Regenerate client/proto daemon.pb.go from the merged proto so it carries
  both branches' RPCs (ui-refactor: SubscribeStatus/RegisterUILog/ExtendAuthSession,
  main: RenameProfile + id fields); keep the v6.33.1 generator header
- server.go: combine ui-refactor's profile-list-changed events with main's
  id-bearing responses; publish profile-list-changed on rename
- Drop the deleted Fyne client_ui.go/profile.go and port main's profile-ID
  changes into the refactored services/tray
- UI services, tray and React: send the profile ID as the daemon handle and
  keep the display name for rendering only (activeProfileId vs activeProfile)
- Relax the profile-name input to match the daemon's sanitizeDisplayName
  (spaces, emoji, any valid UTF-8); cap at 128
- Expose RenameProfile via a Profiles.Rename services wrapper (+ regenerated
  bindings) for the frontend to wire up
- cmd/login.go: use the profile ID for GetProfileState
2026-06-18 11:40:51 +02:00
Theodor Midtlien ee360963f9 [client] Migrate profile identity from display name to ID and allow renaming of profiles (#6367)
* Migrate to profile ids

* Migrate android profile manager

* Clean up

* Fix review

* Add ID type

* Fix test and runes in ShortID()

* Fix profile switch on up and android comments

* Revert android profile to string id

* Fix feedback

* Fix UI feedback

* Fix id assignment

* Add renaming of profiles

* Fix review

* Remove ui binary
* Fix getProfileConfigPath not validating id

* Change resolve handle order and fix server merge problems

* Fix mdm test
2026-06-18 08:49:19 +02:00
Zoltán Papp f9acc6a2e9 [client] Exclude UI fallback stubs from FreeBSD build
The _other.go fallback stubs in client/ui and client/ui/services matched
FreeBSD, dragging the Wails-importing services package into the FreeBSD
build and failing it (Wails v3 has no FreeBSD port). Add !freebsd (plus
!android/!ios/!js) to align them with the rest of these packages so the
whole UI is excluded on FreeBSD.
2026-06-17 17:46:54 +02:00
Eduard Gert 262372ce6c fix copy icon alignment 2026-06-17 17:29:35 +02:00
Eduard Gert f5e5a12a90 add virtual scroll and fix empty results overlay 2026-06-17 17:26:38 +02:00
Eduard Gert 622e5e140f add overlay if daemon not compatible 2026-06-17 14:06:38 +02:00
Eduard Gert 6e696719c8 update tray images 2026-06-17 13:46:31 +02:00
Zoltán Papp fedef7588f ui: detect outdated daemon via WailsUIReady probe
Add a no-op WailsUIReady RPC the UI probes once at startup. A reachable
daemon that returns Unimplemented predates this UI and is too old to
drive it; the probe distinguishes that from an unreachable daemon. On an
outdated daemon the UI fires a localized OS notification, since the main
window may not open to show an in-app error.

Proto regenerated with protoc 33.1 to keep the v6.33.1 header.
2026-06-17 13:00:13 +02:00
Zoltán Papp 3715fe9b72 ui: fix FreeBSD build by matching tray_theme_other build tags to tray.go
tray_theme_other.go references Tray but its build tag selected it on
FreeBSD, where tray.go (which defines Tray) is excluded via !freebsd.
Add the same !android && !ios && !freebsd && !js exclusions to the stub.
2026-06-17 12:37:50 +02:00
Eduard Gert db2ea7554f remove mdm test scripts and other markdown files 2026-06-17 11:43:07 +02:00
Zoltán Papp 3a283f813f ui: extract applyMDMRestrictions to reduce cognitive complexity
Splits the MDM field-mapping block out of GetRestrictions into its own
helper to bring the function's cognitive complexity below the S3776 limit.
2026-06-17 11:32:36 +02:00
Zoltán Papp bd924431ec ui: move dock_other no-op comment inside function body 2026-06-17 11:31:22 +02:00
Eduard Gert 855ef2465f refresh restrictions also on status changes 2026-06-17 10:25:20 +02:00
Eduard Gert 3e1dc1f023 microsoft windows only: open application on left click and tray menu on right click 2026-06-17 09:55:00 +02:00
Pascal Fischer 0c21aefc7f Left-click support for linux (#6410) 2026-06-16 17:46:48 +02:00
Zoltán Papp 1f69cd189e ui: elevate Windows debug-bundle reveal to bypass SystemTemp ACL
The daemon runs as SYSTEM and writes the bundle into C:\Windows\SystemTemp,
whose ACL denies the logged-in user, so a plain 'explorer /select' could not
open it. The Windows reveal now elevates via ShellExecuteW with the runas verb,
falling back to an unelevated reveal of the parent dir on decline.
2026-06-16 15:34:09 +02:00
Eduard Gert 44709983f7 fix focus on windows windows 2026-06-16 15:03:51 +02:00
Eduard Gert e4918e0277 update main toggle switch 2026-06-16 14:03:13 +02:00
Eduard Gert 192c3109c0 add more ui logs and fix sonarqube lint 2026-06-16 13:45:54 +02:00
Eduard Gert b16bdf5e8f refetch restrictions on window visibility change 2026-06-16 13:30:17 +02:00
Eduard Gert 4ae37919c0 keep general settings tab visible when update settings are locked 2026-06-16 12:24:06 +02:00
Eduard Gert 951e08e35c add mdm helper (windows) (can be deleted later) 2026-06-16 12:11:47 +02:00
Eduard Gert 64c9551a4d remove "Loading..." from profile dropdown and show skeleton 2026-06-16 12:09:49 +02:00
Eduard Gert 44156b6256 mdm test script (can be deleted later) 2026-06-16 11:33:10 +02:00
Eduard Gert ebaaddc14b show macos dock icon when any window is visible 2026-06-16 11:32:04 +02:00
Eduard Gert 28d85ecae3 adjust offset on macos 2026-06-15 16:27:44 +02:00
Eduard Gert c37f24d1b0 adjust vertical offset on macos 2026-06-15 16:13:03 +02:00
Eduard Gert c7a338c006 update config on config changed event 2026-06-15 16:13:03 +02:00
braginini 8f200e8489 Change browser login wording 2026-06-15 15:46:33 +02:00
Eduard Gert 780296a7db force disable spellcheck for inputs 2026-06-15 14:53:37 +02:00
Eduard Gert 91cbae8910 fix session expired dialog 2026-06-15 14:15:39 +02:00
Eduard Gert 4f72be6a42 fix mdm advanced view 2026-06-15 14:00:05 +02:00
Eduard Gert 83c9e5b0d1 fix allowserverssh mdm 2026-06-15 13:54:07 +02:00
Eduard Gert 47efdd839c Merge remote-tracking branch 'origin/ui-refactor' into ui-refactor 2026-06-15 13:20:34 +02:00
Eduard Gert 90be56788a fix mdm allowserverssh 2026-06-15 13:20:16 +02:00
Zoltán Papp 715a2b0943 docs(contributing): update UI build guidelines for Wails v3
The UI client migrated from Fyne to Wails v3 + React. Update the
Requirements and Build sections accordingly, fix the Windows installer
UI build command to use the task runner, bump the Go version to 1.25,
and drop the now-redundant client/ui/README.md.
2026-06-15 13:19:45 +02:00
Zoltán Papp b6246e7c02 refactor(ui): extract critical severity into a constant
The critical-event gate compared against a bare "critical" literal while
the matching string is produced from the proto SystemEvent_CRITICAL enum in
systemEventFromProto. Add services.SeverityCritical next to the Status*
constants so the two sides share one definition.
2026-06-15 12:31:23 +02:00
Zoltán Papp 37eb150535 fix(ui): match severity gate case-insensitively
The critical-event gate used a case-sensitive == "critical" where every
other status/severity compare in the UI uses strings.EqualFold, so a
daemon-side reword to a different case would silently drop the bypass.
2026-06-15 12:29:50 +02:00
Zoltán Papp 6c15e8b51c fix(ui): close session bus when XEmbed host fails to start
newXembedHost failure left the private session bus open, leaking an fd
per RegisterStatusNotifierItem on systems without an XEmbed tray. Add a
closeBus helper that logs on close failure and use it at every back-off
path instead of discarding the error.
2026-06-15 12:27:46 +02:00
Zoltán Papp b0f08645c3 fix(ui): install X11 error handler so tray races don't kill the UI
Xlib's default protocol-error handler calls exit() on any async X error,
so a tray race (tray manager window dying between find and dock, XMoveWindow
on a popup the WM already destroyed) would take the whole UI process down.

Install process-global logging no-op handlers via XSetErrorHandler/
XSetIOErrorHandler after every XOpenDisplay. Since the handler slot is
process-global and GDK init can clobber it, additionally wrap the popup
code's raw Xlib calls on GDK's Display in gdk_x11_display_error_trap_push/
pop_ignored, which is independent of the global handler.
2026-06-15 12:26:53 +02:00
Eduard Gert 2089b79630 show profiles also when mdm update setting is active 2026-06-15 12:20:28 +02:00
Zoltan Papp c68bb8f99f fix(ui): resolve active profile before GetConfig in GetRestrictions
GetRestrictions called the daemon GetConfig with an empty
GetConfigRequest, which the daemon has rejected since multi-profile
support landed ("active profile name is empty") because it reads the
profile name from the request. Resolve the active profile via
GetActiveProfile first and pass its name/username, mirroring the
working Settings.GetConfig path. GetActiveProfile self-heals to the
default profile, so a valid name is always supplied; the
profile-switch-disabled MDM flag is orthogonal and unaffected.
2026-06-15 12:04:50 +02:00
Zoltan Papp 9e5bcb26eb fix(ui): include error name and message in forwarded logs
WebKit (macOS WKWebView) omits the "Name: message" header from
Error.stack, so forwarding only the stack hid the real cause of
failures. Prepend the error name, message and optional cause before
the stack so daemon RPC errors surface in gui-client.log.
2026-06-15 11:57:34 +02:00
Zoltán Papp 7b08e750d5 feat(ui): hide macOS Dock icon, run as tray-only accessory app 2026-06-15 11:26:57 +02:00
Eduard Gert 79e0a05f52 fix psk behaviour and allow to clear psk 2026-06-15 10:43:48 +02:00