Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
131 commits
Select commit Hold shift + click to select a range
1671834
top on a desk
icecrasher321 Jul 18, 2026
36ddb56
fix auth stuff
icecrasher321 Jul 18, 2026
37df74b
intermediate state
Sg312 Jul 18, 2026
a8da276
update
Sg312 Jul 18, 2026
68f5857
local filesystem fixes
Sg312 Jul 18, 2026
fb4c2de
Merge remote-tracking branch 'origin/staging' into staging-v4
icecrasher321 Jul 18, 2026
0b00bf6
Huge
Sg312 Jul 18, 2026
6d929c0
fix banner
icecrasher321 Jul 18, 2026
fafeaf7
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
icecrasher321 Jul 18, 2026
061c5cb
ci: disable desktop release + e2e in CI for now
icecrasher321 Jul 19, 2026
9b263a5
ci: exempt electron from the release-age gate (time-boxed)
icecrasher321 Jul 19, 2026
5e67313
desktop: brand app icon (packaged + dev Dock)
icecrasher321 Jul 19, 2026
f8e5f9e
desktop: switch app icon to the b&w brand mark
icecrasher321 Jul 19, 2026
34dd7c4
fix banner
icecrasher321 Jul 19, 2026
df802ab
Fix
Sg312 Jul 19, 2026
e20d836
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
icecrasher321 Jul 19, 2026
c5b44bb
clean up launcher
Sg312 Jul 19, 2026
a79a31b
fix oauth
icecrasher321 Jul 19, 2026
57911c8
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
icecrasher321 Jul 19, 2026
178ac98
update desktop app
Sg312 Jul 19, 2026
d41919d
Improve browser use and consolidate desktop app
Sg312 Jul 19, 2026
97ef2af
Desktop app ui cleanup
Sg312 Jul 20, 2026
96b74ee
Updates
Sg312 Jul 20, 2026
6498381
Updates
Sg312 Jul 20, 2026
2dacf52
remove dev tool option
Sg312 Jul 20, 2026
fec8b4b
Browser updates
Sg312 Jul 20, 2026
46a62bd
Fix electron bug
Sg312 Jul 20, 2026
39c9fe6
Browser shortcuts
Sg312 Jul 20, 2026
911c0d7
lifecycle
Sg312 Jul 20, 2026
8ae3d60
feat(desktop): SSRF hardening + shared @sim/security/ssrf (re-home of…
waleedlatif1 Jul 21, 2026
7430094
refactor: split pure host helpers into @sim/security/hostnames (ipadd…
waleedlatif1 Jul 21, 2026
2453f36
Desktop app fullscreen mode
Sg312 Jul 21, 2026
c8a65d0
fix(copilot): report closed browser session as a distinct terminal to…
Sg312 Jul 22, 2026
78b3b41
fix(desktop): route Cmd+W to focused browser tabs
Sg312 Jul 22, 2026
ac633f5
fix(desktop): reserve macOS title bar safe area
Sg312 Jul 22, 2026
4510963
fix(desktop): limit title bar safe area to login
Sg312 Jul 23, 2026
9c791c5
fix install script
icecrasher321 Jul 23, 2026
927c767
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
icecrasher321 Jul 23, 2026
3154713
feat(desktop): improve local folder settings
Sg312 Jul 23, 2026
dc8c39c
feat(desktop): harden local capabilities and window chrome
Sg312 Jul 23, 2026
36bb046
fix(invitations): live refetches
icecrasher321 Jul 23, 2026
329e413
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
icecrasher321 Jul 23, 2026
4d7cde9
fix(desktop): make manual update checks use updater state
Sg312 Jul 23, 2026
b314160
fix(desktop): review fixes — OAuth error handling, query freshness, i…
icecrasher321 Jul 23, 2026
997ae73
updates
Sg312 Jul 24, 2026
d2cce12
fix(desktop): use workflow colors for environment icons
Sg312 Jul 24, 2026
1217c70
fix(desktop): use orange for dev icon border
Sg312 Jul 24, 2026
3a3bb88
fix(login): change one time token generation to GET
TheodoreSpeaks Jul 24, 2026
6e7211b
improvement(desktop): reveal local folders from settings
TheodoreSpeaks Jul 24, 2026
0148922
improvement(desktop): row actions menu for folder grants, larger vers…
TheodoreSpeaks Jul 24, 2026
ff39812
feat(desktop): improve browser tab usability
Sg312 Jul 24, 2026
2f2d219
fix(desktop): thicken environment icon borders
Sg312 Jul 24, 2026
6ab3aa0
fix(desktop): strengthen environment icon borders
Sg312 Jul 24, 2026
dc5d1b5
feat(desktop): support multiple windows and harden the agent browser
Sg312 Jul 24, 2026
a151d0a
fix(desktop): close clipboard, glob DoS, and authorization holes
Sg312 Jul 24, 2026
a5e15f2
fix(desktop): stop double sign-out, stranded retries, and redundant w…
Sg312 Jul 24, 2026
2ac89be
fix(desktop): leaked timers, silent grep failures, and crashed tabs
Sg312 Jul 24, 2026
4529d5d
fix(desktop): reach framed elements and harden the loopback sign-in
Sg312 Jul 24, 2026
2b7a509
refactor(desktop): drop duplicated helpers and stop logging query str…
Sg312 Jul 24, 2026
60ebcbe
refactor(desktop): move browser compositing out of the session module
Sg312 Jul 24, 2026
b0c2d66
refactor: drop the legacy local_* filesystem tool shim
Sg312 Jul 24, 2026
ac55b1f
refactor(copilot): remove the plan/changelog VFS artifacts and workfl…
Sg312 Jul 24, 2026
c432ee9
refactor(copilot): remove the dead planArtifact column plumbing
Sg312 Jul 24, 2026
fb2132e
chore(copilot): sync the tool catalog for load_skill
Sg312 Jul 24, 2026
68b5366
refactor(copilot): follow the load_custom_tool rename to load_mcp_tool
Sg312 Jul 24, 2026
8690cab
chore(copilot): sync the tool catalog and hide load_skill in the UI
Sg312 Jul 24, 2026
a3f39e3
fix(auth): handle session expiry in the app, not the desktop shell
TheodoreSpeaks Jul 24, 2026
270ca93
fix(copilot): port the scheduled-task and VFS fixes onto staging-v4
Sg312 Jul 25, 2026
bc48f0d
feat(desktop): let the model actually see browser screenshots
Sg312 Jul 25, 2026
2b34864
fix(desktop): polish browser panel and environment tray icon
Sg312 Jul 25, 2026
3d20666
fix(desktop): enlarge environment tray markers
Sg312 Jul 25, 2026
1666f33
fix(desktop): smooth environment tray markers
Sg312 Jul 25, 2026
4621a6d
refactor(copilot): consolidate resource mutation tools
Sg312 Jul 25, 2026
3795a89
chore(copilot): clean up VFS follow-ups
Sg312 Jul 25, 2026
d42666d
fix(desktop): round the dev tray marker
Sg312 Jul 25, 2026
d078cd0
feat(desktop): add integrated terminal resources
Sg312 Jul 25, 2026
93de905
Fix electron app resize causing glitchy browser frames
TheodoreSpeaks Jul 25, 2026
791aa59
feat(copilot): add persistent tool permissions
Sg312 Jul 25, 2026
ec3f997
fix(copilot): retire stale tool permission prompts
Sg312 Jul 25, 2026
abc7a36
fix(desktop): keep terminal rendering responsive
Sg312 Jul 25, 2026
ffe603a
fix(desktop): preserve resource rendering continuity
Sg312 Jul 25, 2026
98e796a
feat(desktop): add browser tab duplication actions
Sg312 Jul 25, 2026
055b7b4
feat(desktop): add terminal tab context actions
Sg312 Jul 25, 2026
39754e7
fix(desktop): allow browser agent localhost navigation
Sg312 Jul 25, 2026
d8f7970
feat(desktop): add tmux-backed terminal sessions
Sg312 Jul 25, 2026
db6eab4
fix(desktop): restore terminal scrollback per view
Sg312 Jul 25, 2026
aafa050
chore(copilot): sync updated wait tool contract
Sg312 Jul 25, 2026
859e1d7
poll terminal session state for non regular shells
icecrasher321 Jul 25, 2026
8ef6749
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
icecrasher321 Jul 25, 2026
2381ef7
add terminal right click menu
icecrasher321 Jul 25, 2026
6edd6e8
feat(desktop): add terminal handoff and key batching
Sg312 Jul 25, 2026
8e92133
fix(desktop): reserve the traffic-light lane from the platform
TheodoreSpeaks Jul 25, 2026
4ba5456
fix(desktop): avoid transient terminal tab labels
Sg312 Jul 25, 2026
fb28fff
feat(copilot): attach browser and terminal tab context
Sg312 Jul 25, 2026
2dc58e6
feat(desktop): close tmux panes from terminal tools
Sg312 Jul 25, 2026
edadf4e
fix(desktop): keep terminal tab icons stable
Sg312 Jul 25, 2026
436ffd6
add right click to browser and cleanup terminal right click options
icecrasher321 Jul 25, 2026
1e210f4
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
icecrasher321 Jul 25, 2026
7c146c6
fix(desktop): reduce hidden panel background work
Sg312 Jul 26, 2026
d49fa58
perf(desktop): shrink browser panel snapshots
Sg312 Jul 26, 2026
98a818d
perf(desktop): reduce terminal main process overhead
Sg312 Jul 26, 2026
a7539dc
perf(terminal): pause work for hidden sessions
Sg312 Jul 26, 2026
096e2f7
fix session arch for desktop
icecrasher321 Jul 26, 2026
984fba7
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
icecrasher321 Jul 26, 2026
d7a4647
fix(desktop): replace exited terminal sessions
Sg312 Jul 26, 2026
f822a52
feat(copilot): persist desktop resources across chats
Sg312 Jul 26, 2026
18fa325
fix(emcn): keep resource tab widths consistent
Sg312 Jul 26, 2026
6839966
fix(copilot): restore active client panels
Sg312 Jul 26, 2026
8f45b0c
feat(desktop): import Chrome browser data
Sg312 Jul 26, 2026
7ef8ae7
fix(copilot): close resources before chat creation
Sg312 Jul 26, 2026
9b22924
feat(desktop): suggest imported browser sites
Sg312 Jul 26, 2026
bd59c5c
fix(desktop): autofill identifier-first sign-ins
Sg312 Jul 26, 2026
6117140
fix resizing issues + cookies source
icecrasher321 Jul 27, 2026
7ea6747
fix visits marking
icecrasher321 Jul 27, 2026
8f52988
chore(db): drop branch migrations ahead of staging merge
icecrasher321 Jul 27, 2026
b804c24
Merge origin/staging into staging-v4
icecrasher321 Jul 27, 2026
4602221
feat(db): regenerate copilot tool-permission migration on top of staging
icecrasher321 Jul 27, 2026
df3ba63
add cmd f
icecrasher321 Jul 28, 2026
8ab978a
review pass
icecrasher321 Jul 28, 2026
811dc9c
chore(db): drop branch migration ahead of staging merge
icecrasher321 Jul 28, 2026
de3d177
Merge origin/staging into staging-v4
icecrasher321 Jul 28, 2026
d640a94
chore(db): drop branch migration ahead of staging merge
icecrasher321 Jul 28, 2026
37ac4c8
Merge origin/staging into staging-v4
icecrasher321 Jul 28, 2026
b34312c
style(db): biome-format the regenerated migration metadata
icecrasher321 Jul 28, 2026
f65f301
fix(desktop): pin the platform in the OS-auth tests
icecrasher321 Jul 28, 2026
267bfd8
fix(desktop): refine environment dock icons
Sg312 Jul 29, 2026
41d41f3
fix(desktop): align packaged environment icons
Sg312 Jul 29, 2026
ae44d28
fix(desktop): keep packaged dock icon rendering consistent
Sg312 Jul 29, 2026
3f3253d
Merge remote-tracking branch 'origin/staging' into staging-v4
icecrasher321 Jul 29, 2026
5e118e3
fix(desktop): origin urls for prod
icecrasher321 Jul 29, 2026
045007a
Merge remote-tracking branch 'origin/staging' into fix/desktop-prod-o…
icecrasher321 Jul 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions apps/desktop/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Sim Desktop (macOS)

A thin Electron shell around the hosted Sim web app. The renderer loads the configured origin (default `https://sim.ai`) as a normal top-level page in a bundled, pinned Chromium — rendering is identical to Chrome of that version on every machine. No UI is re-implemented and no server stack is bundled.
A thin Electron shell around the hosted Sim web app. The renderer loads the configured origin (default `https://www.sim.ai` — the origin the server actually serves; the apex 301s there) as a normal top-level page in a bundled, pinned Chromium — rendering is identical to Chrome of that version on every machine. No UI is re-implemented and no server stack is bundled.

## Layout

Expand Down Expand Up @@ -44,7 +44,7 @@ e2e/ # Playwright _electron smoke suite
```bash
bun install # workspace root
cd apps/desktop
bun run dev # bundle + launch against https://sim.ai
bun run dev # bundle + launch against https://www.sim.ai
SIM_DESKTOP_ORIGIN=http://localhost:3000 bun run dev # against local sim
```

Expand Down Expand Up @@ -74,7 +74,7 @@ Deviations from the original plan doc (deliberate):

## Provider matrix (U5 spike — keep current)

Host lists live in `src/main/navigation.ts` (`SYSTEM_BROWSER_IDP_HOSTS`, `IN_WINDOW_IDP_HOSTS`). Verified so far: Google + Microsoft blocked (by policy, not spike); GitHub assumed lenient. **Before GA, run the spike**: GitHub sign-in, consumer-Microsoft, a sample of integration connects (Notion, Slack, Linear, Atlassian, Box, Dropbox), SSO, and Turnstile-on-signup in a packaged build, then update the lists and this section.
The host list lives in `src/main/navigation.ts` (`SYSTEM_BROWSER_IDP_HOSTS`) and now applies to **integration connects only** — sign-in always goes through the system-browser handoff whatever the IdP, so no provider needs to be classified as embed-tolerant for login. (The old `IN_WINDOW_IDP_HOSTS` list existed to keep GitHub sign-in in-window; embedding a login is a one-way door in a chrome-less shell and splits better-auth's OAuth state across two cookie jars, so it was removed.) Verified so far: Google + Microsoft block embedding by policy. **Before GA, run the spike** for connects: a sample of integration connects (Notion, Slack, Linear, Atlassian, Box, Dropbox) plus SSO and Turnstile-on-signup in a packaged build, then update the list and this section.

## Web-app coupling contract (audit on web-app changes)

Expand Down
2 changes: 1 addition & 1 deletion apps/desktop/scripts/build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const watch = process.argv.includes('--watch')
// non-prod environment): SIM_DESKTOP_DEFAULT_ORIGIN=https://www.dev.sim.ai.
// Baked into the bundle so it applies to fresh installs with no settings —
// unlike the SIM_DESKTOP_ORIGIN env var, which only affects terminal-launched
// processes. Official builds leave it unset (default https://sim.ai).
// processes. Official builds leave it unset (default https://www.sim.ai).
const bakedDefaultOrigin = process.env.SIM_DESKTOP_DEFAULT_ORIGIN ?? ''
if (
bakedDefaultOrigin &&
Expand Down
8 changes: 5 additions & 3 deletions apps/desktop/scripts/install-local.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,11 @@ const CHANNEL_FLAGS: Record<string, ChannelIdentity> = {
appId: 'ai.sim.desktop.staging',
origin: 'https://www.staging.sim.ai',
},
// Bare sim.ai, matching official prod builds (config.ts) — www.sim.ai
// would land in a different cookie partition than a real install.
'--prod': { name: 'Sim', appId: 'ai.sim.desktop', origin: 'https://sim.ai' },
// Origin left unset, exactly as official prod builds do, so this install
// resolves the same DEFAULT_ORIGIN (config.ts) and therefore the same cookie
// partition as a real one. Naming an origin here re-creates the drift that
// pinned prod to the apex while the server serves www.
'--prod': { name: 'Sim', appId: 'ai.sim.desktop' },
}

const DEFAULT_IDENTITY: ChannelIdentity = { name: 'Sim', appId: 'ai.sim.desktop' }
Expand Down
9 changes: 8 additions & 1 deletion apps/desktop/src/main/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,13 @@ const logger = createLogger('DesktopConfig')
* define replaces the env read at bundle time, so a packaged app never
* consults the runtime environment for this. http is accepted only for
* loopback origins (the localhost dev-server channel).
*
* This must be the origin the server actually *serves*, not a hostname that
* redirects to it. Every environment canonicalizes the apex to `www` (the load
* balancer 301s `sim.ai` → `www.sim.ai`), and the navigation guards compare
* origins for exact equality — so an apex origin here silently leaves every
* page off-origin, which reclassifies social login as an integration connect
* and strands the sign-in in the browser with no way back.
*/
function isValidBakedOrigin(origin: string | undefined): origin is string {
if (!origin) return false
Expand All @@ -29,7 +36,7 @@ function isValidBakedOrigin(origin: string | undefined): origin is string {

export const DEFAULT_ORIGIN = isValidBakedOrigin(process.env.SIM_DESKTOP_DEFAULT_ORIGIN)
? process.env.SIM_DESKTOP_DEFAULT_ORIGIN
: 'https://sim.ai'
: 'https://www.sim.ai'
Comment thread
icecrasher321 marked this conversation as resolved.
Comment thread
icecrasher321 marked this conversation as resolved.

/**
* The environment a build is keyed to, derived from its baked default origin.
Expand Down
1 change: 1 addition & 0 deletions apps/desktop/src/main/menu.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ describe('buildMenuTemplate', () => {
expect(submenu(template, 'View').map((item) => item.label ?? item.role ?? item.type)).toEqual([
'Toggle Sidebar',
'separator',
'Back',
'Reload',
'separator',
'Actual Size',
Expand Down
15 changes: 15 additions & 0 deletions apps/desktop/src/main/menu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,21 @@ export function buildMenuTemplate(deps: MenuDeps): MenuItemConstructorOptions[]
click: deps.toggleSidebar,
},
{ type: 'separator' },
/**
* The shell has no browser chrome, so an in-window integration connect
* that leaves the app origin (the IdP's consent page) is otherwise a
* one-way door for anyone who decides not to finish it.
*/
{
label: 'Back',
accelerator: 'CmdOrCtrl+[',
click: withWindow((win) => {
const history = win.webContents.navigationHistory
if (history.canGoBack()) {
history.goBack()
}
}),
},
{
label: 'Reload',
accelerator: 'CmdOrCtrl+R',
Expand Down
16 changes: 14 additions & 2 deletions apps/desktop/src/main/navigation.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
openExternalSafe,
} from '@/main/navigation'

const APP = 'https://sim.ai'
const APP = 'https://www.sim.ai'

describe('classifyNavigation', () => {
it('keeps same-origin navigation in-app', () => {
Expand Down Expand Up @@ -65,12 +65,24 @@ describe('classifyNavigation', () => {
).toBe('idp-system-connect')
})

it('keeps verified-lenient IdPs in-window from the login surface', () => {
it('routes every sign-in to the system browser, including IdPs that tolerate embedding', () => {
// GitHub used to be kept in-window. Embedded, it is a one-way door (no
// browser chrome to back out of) and it splits better-auth's OAuth state
// cookie across two user agents, which comes back `state_mismatch`.
expect(
classifyNavigation('https://github.com/login/oauth/authorize?client_id=x', {
appOrigin: APP,
currentUrl: `${APP}/login`,
})
).toBe('idp-system-login')
})

it('keeps the same IdP in-window when it is an integration connect', () => {
expect(
classifyNavigation('https://github.com/login/oauth/authorize?client_id=x', {
appOrigin: APP,
currentUrl: `${APP}/workspace/ws1/integrations/github`,
})
).toBe('idp-in-window')
})

Expand Down
49 changes: 24 additions & 25 deletions apps/desktop/src/main/navigation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ export interface NavigationContext {
}

/**
* IdP hosts that hard-block OAuth inside embedded user agents. Navigation to
* these hosts is cancelled and rerouted: from an auth surface the app starts
* the system-browser login handoff; from anywhere else it offers to finish the
* integration connect in the browser (tokens land server-side either way).
* IdP hosts that hard-block OAuth inside embedded user agents. An integration
* connect heading for one of these is cancelled and offered as a finish-in-the-
* browser flow instead (tokens land server-side either way). Sign-in never
* consults this list — see {@link classifyNavigation}.
*/
export const SYSTEM_BROWSER_IDP_HOSTS: readonly string[] = [
'accounts.google.com',
Expand All @@ -38,14 +38,6 @@ export const SYSTEM_BROWSER_IDP_HOSTS: readonly string[] = [
'sts.windows.net',
]

/**
* IdP hosts verified lenient toward embedded user agents (the U5 provider
* matrix). Only consulted for navigations leaving an auth surface — everywhere
* else unknown hosts already stay in-window because same-window departures
* from workspace pages are OAuth connect flows in this app.
*/
export const IN_WINDOW_IDP_HOSTS: readonly string[] = ['github.com']

const AUTH_SURFACE_PREFIXES: readonly string[] = [
'/login',
'/signup',
Expand Down Expand Up @@ -101,11 +93,21 @@ export function isAuthSurfacePath(pathname: string): boolean {
* Classifies a top-level navigation (will-navigate / will-redirect).
*
* Same-window departures to non-origin hosts are OAuth flows in this app —
* regular external links always go through window.open — so unknown hosts stay
* in-window (lenient IdP assumption) except for the known embedded-blocking
* hosts, which are rerouted through the system browser. Departures from auth
* surfaces default to the system browser because SSO IdPs need real-browser
* device claims.
* regular external links always go through window.open.
*
* A departure from an auth surface is a *sign-in*, and sign-in always runs in
* the system browser (RFC 8252), whatever the IdP. Embedding one is a one-way
* door: the shell has no browser chrome, so a user who reaches the IdP and
* decides not to continue has no way back to the app. It also splits the flow
* across two cookie jars — better-auth binds its OAuth state cookie to the user
* agent that started the flow, so an in-window start that finishes anywhere
* else comes back `state_mismatch`. The handoff keeps the whole flow in one
* jar and hands a one-time token back over the loopback.
*
* Everything else is an integration connect from a workspace page: those stay
* in-window (the session cookie is already in this partition) unless the IdP
* hard-blocks embedded user agents, which is what {@link
* SYSTEM_BROWSER_IDP_HOSTS} enumerates.
*/
export function classifyNavigation(rawUrl: string, ctx: NavigationContext): MainNavigationAction {
if (rawUrl === 'about:blank') {
Expand All @@ -125,16 +127,13 @@ export function classifyNavigation(rawUrl: string, ctx: NavigationContext): Main
const fromAuthSurface = current
? current.origin === ctx.appOrigin && isAuthSurfacePath(current.pathname)
: false
if (matchesHostList(url.hostname, SYSTEM_BROWSER_IDP_HOSTS)) {
return fromAuthSurface ? 'idp-system-login' : 'idp-system-connect'
if (fromAuthSurface) {
return 'idp-system-login'
}
if (matchesHostList(url.hostname, IN_WINDOW_IDP_HOSTS)) {
return 'idp-in-window'
}
if (current && current.origin !== ctx.appOrigin) {
return 'idp-in-window'
if (matchesHostList(url.hostname, SYSTEM_BROWSER_IDP_HOSTS)) {
return 'idp-system-connect'
}
return fromAuthSurface ? 'idp-system-login' : 'idp-in-window'
return 'idp-in-window'
Comment thread
icecrasher321 marked this conversation as resolved.
}

/**
Expand Down
Loading