WIP v1 release - service based playit#126
Open
loriopatrick wants to merge 71 commits intomasterfrom
Open
Conversation
65c23bc to
8e2d5bf
Compare
* 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 - 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
- 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
d155f6b to
44b0b0d
Compare
- 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
- 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
- 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
- Skip fallback service stop when the installed service is already inactive - Reuse a shared Linux service-activity check for start and stop paths
- shut down removed UDP clients before dropping them - cover tunnel relay flow recovery after cleanup - verify parallel UDP flows survive client eviction
- 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
- Bind LAN UDP sockets for IPv4 or IPv6 targets - Accept IPv6 origin packets in UDP client matching - Add integration coverage for IPv6 origin tunneling
- 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
- 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
- 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
- Replace custom slot management with `slotmap` - Preserve vacant-entry capacity semantics - Add regression test for dropped vacant entries
- 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
- Route left and right tray clicks through a shared menu helper - Keep post-menu refresh behavior in one place
- suppress console windows for Windows service and CLI launches - clean up old console startup shortcuts during tray startup
- 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
- Centralize IPC response extraction with shared error handling - Split daemon startup into runtime, secret, and agent phases - Preserve shutdown behavior while supporting secret reprovisioning
- 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 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
- Add IPC error classification for closed connections - Downgrade expected client disconnects to debug logs - Cover connection-close detection with unit tests
- Track pending start/stop requests in tray state - Prevent repeated clicks until backend responds - Open playit directly on left click
- Stop deleting old console shortcut variants - Drop obsolete tray helper-arg test and dead code - Trim unused agent_core dev-dependency comments
- Drop stale unit tests across agent, IPC, CLI, and daemon crates - Keep production code unchanged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.