Beta-gate SwiftBot Remote and stabilize remote onboarding/window chromeSwift bot rmeote#4
Merged
Beta-gate SwiftBot Remote and stabilize remote onboarding/window chromeSwift bot rmeote#4
Conversation
Adds macOS Server style remote view
Note this UI is incorrect and will be changed. UI rework will be completed in future for this view as it should match local view
This feature is in beta and May cause issues
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
This PR lands the new SwiftBot Remote work in a merge-safe state.
It fixes the remote OAuth/session handoff, makes remote API auth work with the app’s authenticated session flow, and routes completed remote setups into the dedicated remote dashboard. It also avoids exposing the unfinished unified remote shell to normal users by gating SwiftBot Remote behind beta builds plus Developer Mode.
Along the way, it removes the in-window remote toggle in favor of the View menu, hides remote switching when the app is running in standby/failover scenarios, surfaces the manual remote access token in Web UI settings, and fixes the Settings window chrome bug where the preferences window could become transparent and unclickable after repeated open/close cycles.
What changed
Fixed Discord OAuth remote onboarding so the browser callback returns to the app with a session token.
Updated remote API auth to accept authenticated OAuth sessions in addition to the manual bearer token.
Added a dedicated View menu entry for Local/Remote dashboard switching.
Removed the problematic in-window remote toggle near the start/stop controls.
Gated SwiftBot Remote behind beta build + Developer Mode.
Ensured dedicated remote-control setups land in RemoteModeRootView.
Kept the unfinished provider-based remote shell off the normal runtime path.
Exposed the manual remote app access token in Web UI preferences.
Fixed Settings window styling so it stays opaque and clickable across repeated opens.
Why
The branch had a few merge blockers:
remote OAuth could not complete end-to-end
remote API auth expected a different token than the app stored
remote dashboard switching had a dead-end UX
the new unified remote shell was not fully providerized yet
the Settings window could inherit the main transparent chrome and become unusable
This PR resolves the blockers while keeping the larger remote/dashboard refactor available behind a safer beta/developer gate.
Testing
Built successfully with:
xcodebuild -scheme SwiftBot -project SwiftBot.xcodeproj -configuration Debug -sdk macosx build
Verified code paths for:
remote OAuth deep-link handoff
remote API authorization
local/remote dashboard menu switching
standby/failover gating
settings window chrome reset
Notes
SwiftBot Remote is intentionally beta-gated for now.
There are still actor-isolation warnings around LocalBotProvider; those are follow-up cleanup, not a merge blocker for this PR.
Short merge note
This merges the SwiftBot Remote work in a guarded state: functional enough for beta/dev testing, but not broadly exposed until the unified remote shell is finished.