Files
playit-agent/docker
Patrick LorioandGitHub 4b11067fd8 v1 release
* Use clap enum & struct parser rather than macro fn

* Oneshot doing a service

* working :)

* bugfixes

* Improve log format

* fix comp for unix

* stage changes

* Move stuff around, improve ipc

* improvements...

* improve commands

* Add window service support

* Setup macos

* UDP improvements

* Start on MTU discovery logic

* Do not start windows service on install or boot

* change start condition for windows to fix service

* fix windows service and update service perms

* Improve setup logic

* Add windows-build.sh

* Improve secret setup logic

* Add Windows tray companion for playitd (#136)

* Add Windows tray companion for playitd

- Build and install a new `playitd-tray` binary
- Register a startup shortcut and poll the service to show the tray icon
- Let the tray app open status or stop the installed service

* Improve Windows tray service controls

- Add start/stop service actions to the tray menu
- Keep tray icon status in sync with service state
- Allow removing the tray startup shortcut

* Embed tray icon in Windows build

- Add a Windows resource build step for the tray binary
- Load the embedded icon at startup with a fallback to the default icon

* Switch Windows tray to tray-icon

- Replace custom Win32 tray/menu code with `tray-icon`
- Remove the `winres` build script and embed the tray icon asset
- Add Windows tray menu handling for service actions

* Wrap tray state access in unsafe block

- Keep `refresh_tray_status` safe at the function boundary
- Limit `unsafe` to the `get_state(hwnd).as_mut()` call

* Simplify tray menu state updates on Windows

- Stop treating menu item enable/disable as fallible
- Keep tray tooltip and service state in sync

* Tighten unsafe boundaries in Windows tray code

- Wrap Win32 calls in explicit unsafe blocks
- Keep tray event handlers using HWND values that outlive the closures
- Make state access helpers safe wrappers around raw window data

* Add Windows tray debug console logging

- Add an optional `--debug-console` mode for the tray process
- Attach or allocate a console and emit tray lifecycle logs

* Stabilize Windows tray menu and tooltip updates

- Track tray menu visibility to defer tooltip refreshes until the menu closes
- Avoid holding mutable app state across `show_menu()` on Windows
- Clean up IPC and logging imports plus formatting

* Remove macOS release build from workflow

- Drop the macOS packaging, signing, and notarization job from the release pipeline
- Leave Windows and Linux release jobs unchanged

* Launch tray app after MSI install

- Add a Wix shell exec custom action for the tray executable
- Start the tray app automatically after successful installs

* Launch playit.exe with auto mode from tray

- Change the Windows tray service to invoke `playit.exe auto` instead of `attach`
- Update the launch error message to match the new subcommand

* Add tray action to reset agent secret

- add a Windows tray menu item for resetting the agent
- reset the IPC secret and stop playitd after a successful reset
- make the installer launch action wait for completion

* do not use auto command

* Launch playit setup after starting service

- Add a helper to spawn `playit.exe` in a new console
- Run the setup executable after successfully starting the Windows service

* Wait for playitd startup before auto-attach

- Poll lifecycle until playitd leaves Starting
- Return a timeout error if startup never completes
- Reformat UI imports and widget lines

* Disable Reset Agent while playitd is waiting or stopping

- Query playitd lifecycle over IPC before enabling the tray action
- Block Reset Agent during WaitingForSecret and Stopping states
- Keep the menu state in sync on startup and polling

* Move tray service actions to background threads

- Run refresh, start, stop, and reset actions asynchronously
- Disable tray controls while background work is in progress
- Refresh tray state after each action completes

* Retry daemon setup after invalid agent secret

- detect invalid or expired agent secrets during startup
- wait for reprovisioning before retrying agent creation
- add tests for secret error classification

* Ensure daemon shuts down agent task cleanly

- keep the agent running flag until shutdown
- await the agent task during teardown to avoid leaks

* Abort agent tasks on shutdown

- add cooperative shutdown for tunnel and UDP tasks
- clean up formatting and import ordering across agent core

* Swap tray actions between playit launch and status window

- Left-click now opens playit directly
- Rename helper calls so setup launches the status window with `attach`

* Stop playitd via IPC before service shutdown

- Add a tray stop path that sends IPC stop first, then falls back to the installed service
- After agent secret reset, request the service stop separately before relaunching playit

* stop service after secret reset

* Split tray app into its own crate (#138)

* Split tray app into its own crate

- Add `playitd-tray` as a workspace member
- Move Windows tray-specific dependencies into the new package
- Remove the tray binary and related deps from `playitd`

* Allow same-version upgrades in WiX installer

- Set `AllowSameVersionUpgrades=yes` for the CLI installer
- Keep downgrade protection in place

* Refactor Windows tray background work onto a runtime worker

- Move tray async actions off ad hoc threads
- Add a dedicated runtime worker and async service helpers
- Update tray state handling to dispatch background jobs through the runtime

* Close tray app before Playit install

- Add WiX CloseApplication entry for `playitd-tray.exe`
- Prompt the tray process to exit before setup continues

* Refactor Windows tray backend and frontend split

- Replace the tray runtime with a dedicated backend request loop
- Split UI event handling from backend responses and rename modules

* Add detailed backend and service lifecycle logging

- Log tray backend request flow and wakeup handling
- Log service start/stop/reset and lifecycle checks for debugging

* Defer tray refresh until after menu closes

- Queue a deferred refresh UI event after closing the menu
- Add debug logging for busy dispatch coalescing and dropped actions

* Refine tray refresh request handling

- Track refresh requests independently from other backend work
- Allow UI controls to stay enabled while refreshes are in flight
- Queue deferred refreshes when the backend is saturated

* remove ping_monitor code

* Switch Linux packaging to manage playit systemd unit (#140)

- Package both `playit` CLI and `playitd` daemon in the .deb
- Install and control the `playit` systemd service during postinst
- Update Linux service launch target and add unit-target tests

* Resolve origin hostnames asynchronously (#142)

* Resolve origin hostnames asynchronously

- Allow origin local_ip to be a hostname as well as an IP
- Resolve origin targets asynchronously in TCP and UDP clients
- Add tests for hostname parsing and lookup

* change resolve call order to improve perf

* Update version

* update package versions

* fix daemon tunnel print

* Update docker build

* Include tray package in Windows release build (#145)

- Build `playitd-tray` alongside the CLI and daemon in the release workflow
- Keep the MSI packaging step unchanged

* format action and update windows exe bin

* Refactor CLI attach UI and simplify stdout logging (#149)

- Split attach handling into interactive TUI and stdout modes
- Remove legacy log capture UI plumbing
- Route setup and claim flows through the new console UI

* Skip restarting active playitd and prompt before start

- Detect when the installed service is already running
- Prompt before starting systemd on Linux from CLI flows
- Thread console access through start and setup commands

* Surface clearer Linux IPC socket errors

- Wait briefly for the installed service socket before failing
- Report precise Linux socket access diagnostics when IPC is unreachable
- Preserve the specific socket error in auto-attach handling

* Restrict Linux IPC socket to playit group

- Create the `playit` system group during Debian packaging
- Set root-owned Unix socket permissions to `0660` and `playit`
- Improve CLI diagnostics when access is blocked by group membership

* Improve Linux socket access errors

- Split playit socket diagnostics into structured cases
- Add clearer guidance for playit group access and shell refresh
- Expand tests for multiline permission messages

* Refactor Linux service handling into shared modules

- Move Linux CLI socket diagnostics and startup checks into `linux.rs`
- Centralize daemon socket permission setup in `playitd::linux`
- Preserve clearer IPC errors for installed service startup

* fix service command

* Handle agent-limit failures in CLI and daemon

- Add a DisabledOverLimit lifecycle and service error code
- Surface recovery guidance in CLI, TUI, and IPC status handling
- Retry daemon startup until the account limit is resolved

* Improve over-limit messaging across CLI and daemon

- Rewrite agent-limit errors with clearer titles and guidance
- Format service phase labels in natural language
- Update IPC daemon provisioning error to include setup guidance

* Move tray startup shortcut management into tray app

- Add CLI modes to create or remove the Windows startup shortcut
- Self-heal the tray shortcut on normal startup
- Shift installer actions to invoke the tray helper instead of shipping the shortcut

* Refine tray close and startup shortcut handling

- Split tray menu actions for startup shortcut management and close behavior
- Prompt before closing while the service is still running
- Track startup shortcut presence to keep menu state in sync

* Enable status button only while service is running

- Disable the Open Status action unless the Windows service is active
- Keep service control button states in sync with runtime state

* remove exe name and cleanup dead code

* bump readme

* remove broken & dead macos build scripts

* Add hello handshake to IPC protocol

- Rename protocol version fields to IPC version
- Send server hello before requests and ignore unknown event types
- Decode requests by type and surface invalid request errors

* Handle unknown IPC message types without losing typed validation

- Parse request and event envelopes into known-or-unknown variants
- Preserve errors for malformed payloads on known message types
- Return clearer invalid request responses for future IPC types

* Simplify TUI to remove panel navigation

- Remove focus switching and scrolling state from the CLI TUI
- Always render tunnels and logs in fixed follow mode
- Update help text and tests for the reduced key handling

* Handle stopped installed service in CLI stop flow

- Skip fallback service stop when the installed service is already inactive
- Reuse a shared Linux service-activity check for start and stop paths

* Await UDP client cleanup and add tunnel integration tests

- shut down removed UDP clients before dropping them
- cover tunnel relay flow recovery after cleanup
- verify parallel UDP flows survive client eviction

* Add UDP tunnel stress throughput test

- add ignored multi-threaded stress coverage for UDP tunnel bitrate
- log payload and wire throughput by packet size
- factor out helpers for warmup and throughput measurement

* incease stress packet count

* Support IPv6 UDP origin addresses (#152)

- Bind LAN UDP sockets for IPv4 or IPv6 targets
- Accept IPv6 origin packets in UDP client matching
- Add integration coverage for IPv6 origin tunneling

* Harden Windows IPC ACLs and package secret files

- Restrict Windows named pipes to admins and the installed user SID
- Persist the installed user SID during MSI install
- Write Linux config and log directories with tighter permissions

* Rewrite playit user messages for clarity (#154)

- Replace terse service and setup errors with friendlier guidance
- Update tray and daemon text to match the new terminology
- Improve setup prompts and status messages across CLI flows

* Refactor IPC paths and platform helpers

- Switch CLI config parsing to `serde_yml`
- Centralize IPC endpoint and default socket path logic
- Move Unix account and Windows startup shortcut helpers into shared modules

* Switch IdSlab to slotmap-backed storage

- Replace custom slot management with `slotmap`
- Preserve vacant-entry capacity semantics
- Add regression test for dropped vacant entries

* Switch IPC transport to framed JSON codecs

- Replace manual line buffering with tokio-util framed readers and writers
- Reuse shared IPC connect and framing helpers in client and server
- Add codec dependencies for IPC message handling

* Consolidate tray menu display handling

- Route left and right tray clicks through a shared menu helper
- Keep post-menu refresh behavior in one place

* Hide Windows consoles and remove legacy startup shortcuts

- suppress console windows for Windows service and CLI launches
- clean up old console startup shortcuts during tray startup

* Split Windows setup helper into its own binary

- Add playitd-windows-setup for shortcut and SID setup tasks
- Update MSI and build pipeline to package the new helper
- Simplify playitd-tray to reject helper-only CLI args

* Refactor daemon startup and IPC response handling

- Centralize IPC response extraction with shared error handling
- Split daemon startup into runtime, secret, and agent phases
- Preserve shutdown behavior while supporting secret reprovisioning

* Propagate cancellation through agent TCP and UDP tasks

- Thread a shared cancellation token through PlayitAgent, TcpClients, and TcpPipe
- Stop background work promptly on shutdown and avoid hanging channel sends/connects
- Increase TCP pipe buffer and keep busy loops cooperative

* add public cert and update windows sign script

* Handle Windows service start and stop directly

- Add Windows-specific start/stop control paths for the installed service
- Treat already-running and already-stopped service states as success
- Factor shared SCM opening and service-not-found error handling

* Log client disconnects as debug in IPC server

- Add IPC error classification for closed connections
- Downgrade expected client disconnects to debug logs
- Cover connection-close detection with unit tests

* Disable duplicate service actions in tray

- Track pending start/stop requests in tray state
- Prevent repeated clicks until backend responds
- Open playit directly on left click

* Remove legacy startup shortcut cleanup

- Stop deleting old console shortcut variants
- Drop obsolete tray helper-arg test and dead code
- Trim unused agent_core dev-dependency comments

* Remove obsolete test modules

- Drop stale unit tests across agent, IPC, CLI, and daemon crates
- Keep production code unchanged

* update cert

* update cert chain
2026-05-15 13:18:55 -07:00
..
2026-05-15 13:18:55 -07:00