Commit Graph
52 Commits
Author SHA1 Message Date
ZacharyZcR 5582087025 test: update Guacamole toolbar display mock (#1360) 2026-08-28 10:41:59 +08:00
ZacharyZcR 363e61961c fix: reset host virtualizer after editing (#1358) 2026-08-28 10:37:12 +08:00
ZacharyZcR 9a8f0ba888 fix: unify connection toolbar visibility (#1357) 2026-08-28 10:37:05 +08:00
ZacharyZcR 0f39ce6369 fix: upload files to redirected RDP drives (#1356) 2026-08-28 10:36:54 +08:00
ZacharyZcR bf67f56c51 fix: recover expired dashboard metrics sessions (#1355) 2026-08-28 10:36:47 +08:00
ZacharyZcR c129666d7f fix: harden connection, payload, and persisted state handling (#1354)
* fix: clean up Cloudflare tunnel timeouts

* fix: couple tunnel socket lifecycle

* fix: validate Docker console messages

* fix: bound homepage proxy responses

* fix: bound reconnect and response failures

* fix: harden persisted and socket state

* fix: support local connections to shared hosts
2026-08-28 10:36:39 +08:00
ZacharyZcR 703e8cd037 fix: enforce SSH pool connection limits (#1353)
* fix: enforce SSH pool connection limits

* fix: discard stale pooled connections
2026-08-28 10:36:31 +08:00
ZacharyZcR 14d4128266 fix: harden file reads and timer cleanup (#1352)
* fix: harden file reads and timer cleanup

* fix: preserve literal file path escapes
2026-08-28 10:36:08 +08:00
ZacharyZcR 50f1882fa9 fix: surface remote sync reauthentication failures (#1351) 2026-08-27 17:06:16 +08:00
ZacharyZcR 6277d15c2a fix: preserve omitted host protocol settings (#1350) 2026-08-27 13:41:25 +08:00
ZacharyZcR 19d4d91eee fix: retry protected file reads with sudo (#1349) 2026-08-27 06:39:16 +08:00
ZacharyZcR 6323459af2 feat: add terminal copy-on-select option (#1346) 2026-08-27 06:39:05 +08:00
ZacharyZcR 6406c3a923 fix: prompt shared RDP users for credentials (#1345) 2026-08-27 06:38:56 +08:00
ZacharyZcR f848dee343 fix: package sharp for both macOS architectures (#1344) 2026-08-27 06:38:33 +08:00
ZacharyZcR 302ac19e6c feat: folder shares apply to hosts added later (#1343)
* feat: folder shares apply to hosts added later

Sharing a folder only fanned grants out to the hosts in it at the time.
The share is now also kept as a standing rule on the folder, and a host
created in or moved into it (or a subfolder) inherits the same access
and secret snapshots. Rules follow folder renames and can be stopped
from the share dialog.

* fix: stabilize folder access migrations
2026-08-25 04:50:51 +08:00
ZacharyZcR 82143946c7 feat: share credentials with users and roles, inherit data on account deletion (#1342)
* feat: share credentials with users and roles, inherit data on account deletion

Credentials can be shared at "use" or "manage" level. Recipients get
a copy re-encrypted under their own data key (shared_credential_secrets),
kept in step with the owner's row through the same lifecycle hooks as
shared host secrets. One gate, findUsableCredential(), replaces the
private-namespace lookups so a shared credential works wherever a
private one does. Deleting a user now hands their hosts and credentials
to a successor (the deleting admin by default) instead of revoking
everything they shared.

* fix: harden credential ownership transfer
2026-08-25 04:12:47 +08:00
ZacharyZcR 5f55289e00 feat: 1Password Connect secret sources for SSH credentials (#1341)
* feat: 1Password Connect secret sources for SSH credentials

Hosts and credentials can hold op://vault/item/field references instead
of secrets; they are resolved at connect time from the user's secret
source (1Password Connect) at the single point where every subsystem
receives plaintext credentials, so terminal, SFTP, Docker, metrics and
tunnels all work without per-subsystem changes. Sources are per user,
optionally shared, with the access token encrypted under the owner's
data key; resolved values are cached briefly in memory.

* style: format secret source changes
2026-08-25 03:06:37 +08:00
ZacharyZcR 32d77fc6d0 feat: Step CA SSH certificates as a host authentication type (#1340)
* feat: Step CA SSH certificates as a host authentication type

Issue short-lived SSH user certificates from a smallstep CA through its
OIDC provisioner, over the CA's HTTP API rather than the step binary.
Everything after issuance reuses the OPKSSH plumbing: the same encrypted
per-user/host token store, WebSocket dialog and ssh2 certificate
injection, with the connect paths branching on a shared
usesIssuedCertificate() predicate. Instance-wide CA settings live in the
admin panel, with a private-host allowlist for the SSRF guard.

* fix: harden Step CA callback flow

* style: format Step CA changes
2026-08-25 02:56:44 +08:00
ZacharyZcR 0ab7cf2ab8 feat: improve collaboration rooms (#1338) 2026-08-25 02:15:44 +08:00
ZacharyZcR 8d0bcb3b1f fix: guide users to Auto-Tmux when a persisted session expires (#1336)
* fix: guide users to Auto-Tmux when a persisted session expires

A timed-out terminal session silently reconnected to a fresh shell, so
people running long jobs lost them with no explanation and never learned
about Auto-Tmux. Explain the expiry with a one-click Enable Auto-Tmux
action, let admins default it for new hosts and tune the persistence
timeout from the UI, and move the setting up with copy that says what it
does. The global default stays off.

* style: format terminal expiry notice
2026-08-25 02:15:23 +08:00
ZacharyZcR ae9cce4de3 feat: compact snippet list option (#1339)
A "Show Commands" toggle in the snippets settings menu hides the command
text under each snippet name, for people who dock the panel on the
narrow right rail and only need the names. Local preference, on by
default.
2026-08-25 02:15:09 +08:00
ZacharyZcR c17134a2a4 fix: authenticate unwatched hosts during the status probe (#1337)
With metrics enabled, the status probe left SSH authentication to the
metrics poll - which only runs while someone is viewing the host. An
unwatched host therefore never left "reachable", while a host with
metrics disabled (whose probe always authenticates) showed online. The
probe now authenticates whenever no metrics poll will.
2026-08-25 02:14:51 +08:00
ZacharyZcR 404608867f feat: quick connect for RDP and VNC (#1335)
The Quick Connect panel gets a protocol switch. RDP/VNC quick hosts are
built like SSH ones (never saved) and opened as regular remote desktop
tabs; GuacamoleApp mints their token from the typed fields through the
existing /guacamole/token endpoint instead of a host-row lookup.
2026-08-25 01:40:42 +08:00
ZacharyZcR 672f5ba80b fix: make RDP drive redirection writable on the stock deployment (#1333)
* fix: make RDP drive redirection writable on the stock deployment

The default drive-path was /drive on the guacd side, which the official
guacd image cannot create as its non-root user, so every upload was
refused with guacd's raw "FAIL (CANNOT OPEN)" ack. Default to
GUACD_DRIVE_PATH (set to the shared termix-data volume in compose) with
one folder per user, and explain guacd's refusal in the file browser.

* style: format RDP drive settings
2026-08-25 01:40:20 +08:00
ZacharyZcR 8260af2d57 fix: harden collaboration room access (#1332)
* fix: harden collaboration room access

* fix: confirm guest link lifecycle changes
2026-08-25 01:36:19 +08:00
ZacharyZcR c51c3a9449 fix: show the full command line in the process inspector (#1334)
The CMD column rendered ps's comm field, which the kernel caps at 15
characters, so anything longer looked truncated no matter how wide the
column was. The full args were already collected; show them.
2026-08-25 01:36:02 +08:00
ZacharyZcR dc47c4ca86 fix: restore RDP clipboard paste across browsers (#1331) 2026-08-25 00:56:26 +08:00
ZacharyZcR 81d79cc89b feat: collaboration rooms with switchable presenter (#1328)
* feat: add collaboration rooms with switchable presenter

Rooms are a group of members watching one stage - the live SSH/RDP/VNC
session the current presenter shares. Any member can take over the
stage; the host can invite, force-stop and end the meeting. Stages
reuse session_shares (new room share type), so gating, recording,
expiry and the global sharing toggle all apply unchanged.

* feat: add stage control handoff to collaboration rooms

The presenter or host can grant any member write access to the live
stage and take it back; members can raise a hand to ask. SSH flips the
participant's permission on the live gate; RDP/VNC re-mint the viewer's
join token. Control clears on every stage switch.

* feat: guest links, role invites and invite awareness for collab rooms

- Anonymous guest link per room (host toggles/rotates), followed by
  polling the public resolve endpoint; SSH guests join over the terminal
  WS with roomGuestToken, guac guests get read-only join tokens
- Invite by role (expands to current members, snapshot semantics)
- Toast when a room you were invited to appears
- Stale stages are cleared lazily when the presenter is gone
- Telnet presenting, expired-tab fallback, documented single-instance
  and guac-kick limits
- Tests for the collab routes, room hub, share access and control flip

* fix: keep remote desktop collaboration read-only
2026-08-25 00:56:04 +08:00
ZacharyZcR d35458f78b fix: allow approved private notification hosts (#1330) 2026-08-25 00:55:36 +08:00
ZacharyZcR f06d540466 fix: reject malformed Guacamole tokens safely (#1329) 2026-08-25 00:55:14 +08:00
ZacharyZcR f3a1087f51 feat: enforce RBAC and harden collaboration features (#1327)
* feat: enforce RBAC and harden collaboration features

- Mount requirePermission on hosts/snippets/credentials/automations/AI routes
- Seed and backfill system role permissions on every dialect at startup
- Support personal credential overrides for RDP/VNC/Telnet shared hosts
- Broadcast participant presence in shared terminal sessions
- Make audit log forwarding configurable from the admin panel
- Add role members endpoint and snippet folder sharing

* fix: enforce RBAC across split routes
2026-08-24 19:47:29 +08:00
ZacharyZcR 69002e6416 feat: add semantic motion system (#1320)
* feat: add semantic motion system

* feat: animate session workspace transitions

* feat: refine motion accessibility and transfer feedback
2026-08-24 19:36:10 +08:00
ZacharyZcR e5ea61e28a Fix remote desktop connection timeout (#1319) 2026-08-24 08:43:12 +08:00
ZacharyZcR f0cb81c3b5 fix: verify OPKSSH binary integrity (#1318) 2026-08-24 07:58:09 +08:00
ZacharyZcR 2de9bb236b fix: harden application trust boundaries (#1317) 2026-08-24 07:55:17 +08:00
ZacharyZcR 30d72554fc fix: harden HTTP trust boundaries (#1316) 2026-08-24 07:52:31 +08:00
ZacharyZcR b3cc66efdf feat: add host context menu actions (#1315) 2026-08-24 05:31:31 +08:00
ZacharyZcR c476ef6b3b feat: add VNC display zoom controls (#1314) 2026-08-24 05:31:14 +08:00
ZacharyZcR 20eca69d56 feat: support additional TOTP authenticators (#1312) 2026-08-24 05:30:55 +08:00
ZacharyZcR fa0fa7f836 fix: support macOS VNC connections (#1311) 2026-08-24 03:59:37 +08:00
ZacharyZcR ad266956cc fix: restore split layout selection (#1310) 2026-08-24 03:59:11 +08:00
ZacharyZcR cad7520c9f Add configurable global hotkeys (#1305) 2026-08-24 01:10:19 +08:00
ZacharyZcR 9ee50d624a Improve file manager navigation and compact layout (#1308) 2026-08-24 01:09:00 +08:00
ZacharyZcR 433ede0b0d Add selectable host temperature sensors (#1307) 2026-08-24 01:08:39 +08:00
ZacharyZcR 5e76aec2bf Add accessible interface font choices (#1306) 2026-08-24 01:08:03 +08:00
ZacharyZcR f1226b1f1b Fix command palette keyboard navigation (#1304) 2026-08-24 01:05:24 +08:00
ZacharyZcR 0a9086fb79 Fix Proxmox sync jump host persistence (#1303) 2026-08-23 22:57:37 +08:00
ZacharyZcR c42cd40a2c Fix synced client tunnel endpoints (#1302) 2026-08-23 22:55:45 +08:00
ZacharyZcR 780cfb58e2 Fix Fleet command results layout (#1301) 2026-08-23 22:55:41 +08:00
ZacharyZcR a4b61cc27f Fix Proxmox credential guest imports (#1300) 2026-08-23 22:45:24 +08:00
ZacharyZcR b5d13c3664 Fix private AI custom endpoints (#1299) 2026-08-23 22:38:03 +08:00
ZacharyZcR 38e128bd16 Revert "feat: add Open File Manager to tab right-click menu (#1046)" (#1050)
This reverts commit 0712fdd731.
2026-07-14 01:36:12 +08:00