feat(fleet): integrate Fleet enrollment and live runner UI in Desktop - #281
Closed
KafuChino123 wants to merge 22 commits into
Closed
feat(fleet): integrate Fleet enrollment and live runner UI in Desktop#281KafuChino123 wants to merge 22 commits into
KafuChino123 wants to merge 22 commits into
Conversation
Add a FleetControlClient Swift package with generated protobuf and gRPC stubs for the fleet agent local control API. Wire the local package into the ArcBox app target so phase 1 desktop integration can import the generated client types.
Wrap the generated fleet control stubs in a high-level client for lifecycle, state watch, and settings RPCs. Map proto responses into desktop-facing models while preserving optional settings update presence semantics, and cover the mapping behavior with tests.
Add the local fleet control client to SwiftUI environment values and app scene injection. Start the fleet control transport outside daemon startup, log through the fleet category, and close it during app termination.
Drive fleet agent state from the local control watch stream. Add lifecycle actions, settings updates, reconnect backoff, and user-readable error handling for the runners dashboard.
Consume the signed-in OIDC session to list Platform workspaces and issue workspace-scoped Fleet enrollment tokens. Wire token issuance into local Fleet Agent enrollment and configure the Platform endpoint for app and CI builds.
Replace RUN-9 sample data and stub actions with FleetViewModel watch snapshots, workspace enrollment, and local drain/resume controls. Expose the runner section in release builds and cover the presentation-state mapping.
Let ArcBoxTests consume FleetControlClient through the hosted ArcBox target, avoiding Xcode’s duplicate dynamic gRPC package graph. Handle runner item-selection deep links explicitly so navigation remains exhaustive.
- coordinate authenticated token handoff with local Agent state - keep Fleet watch and client transport app-scoped - reconcile unknown outcomes and graceful termination
On macOS 26, any state change inside a fixedSize(vertical: true) subtree triggers a window-sizing pass that resizes the window — or the NavigationSplitView content when the window cannot grow — to the screen's visible-frame height, sliding the sidebar under the title bar and pushing the account button off-screen. Drop the modifier from the dynamic error label (it wraps identically without it) and document the pitfall in AGENTS.md.
This was referenced Jul 16, 2026
Member
Author
|
Superseded by #320, which carries the RUN-9 integration forward with the Better Auth device-authorization flow, Fleet Platform enrollment, and the latest master history. |
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.
Summary
Architecture boundary
ArcBox Desktop owns OIDC, Platform REST requests, enrollment orchestration, local gRPC transport, and UI state. It does not install, create, launch, stop, or update the Fleet Agent. Runner VM lifecycle remains Fleet Agent ->
arcbox-daemon.On application termination, Desktop waits briefly for enrollment reconciliation and closes only its Fleet gRPC transport. The existing core
arcbox-daemonshutdown behavior is unchanged pending a separate team decision.Validation
make verify-arcbox-protobufswift-format lint -r --strict ArcBox/ Packages/swiftlint lint --strict --config .swiftlint.yml— 263 files, 0 violationsxcodegen generatewith no tracked project diffSKIP_RUST_BUILD=1 CODE_SIGN_IDENTITY=-Why this is a draft
arcbox-daemonKnown non-blocking warnings
LocalRootFSOutlineCoordinatoractor-isolation warnings remain unchanged