feat(desktop): desktop app by Sg312 · Pull Request #5998 · simstudioai/sim · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
129 commits
Select commit Hold shift + click to select a range
1671834
top on a desk
Jul 18, 2026
36ddb56
fix auth stuff
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
Jul 18, 2026
0b00bf6
Huge
Sg312 Jul 18, 2026
6d929c0
fix banner
Jul 18, 2026
fafeaf7
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
Jul 18, 2026
061c5cb
ci: disable desktop release + e2e in CI for now
Jul 19, 2026
9b263a5
ci: exempt electron from the release-age gate (time-boxed)
Jul 19, 2026
5e67313
desktop: brand app icon (packaged + dev Dock)
Jul 19, 2026
f8e5f9e
desktop: switch app icon to the b&w brand mark
Jul 19, 2026
34dd7c4
fix banner
Jul 19, 2026
df802ab
Fix
Sg312 Jul 19, 2026
e20d836
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
Jul 19, 2026
c5b44bb
clean up launcher
Sg312 Jul 19, 2026
a79a31b
fix oauth
Jul 19, 2026
57911c8
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
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
Jul 23, 2026
927c767
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
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
Jul 23, 2026
329e413
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
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…
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
Jul 25, 2026
8ef6749
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
Jul 25, 2026
2381ef7
add terminal right click menu
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
Jul 25, 2026
1e210f4
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
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
Jul 26, 2026
984fba7
Merge branch 'staging-v4' of github.com:simstudioai/sim into staging-v4
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
Jul 27, 2026
7ea6747
fix visits marking
Jul 27, 2026
8f52988
chore(db): drop branch migrations ahead of staging merge
Jul 27, 2026
b804c24
Merge origin/staging into staging-v4
Jul 27, 2026
4602221
feat(db): regenerate copilot tool-permission migration on top of staging
Jul 27, 2026
df3ba63
add cmd f
Jul 28, 2026
8ab978a
review pass
Jul 28, 2026
811dc9c
chore(db): drop branch migration ahead of staging merge
Jul 28, 2026
de3d177
Merge origin/staging into staging-v4
Jul 28, 2026
d640a94
chore(db): drop branch migration ahead of staging merge
Jul 28, 2026
37ac4c8
Merge origin/staging into staging-v4
Jul 28, 2026
b34312c
style(db): biome-format the regenerated migration metadata
Jul 28, 2026
f65f301
fix(desktop): pin the platform in the OS-auth tests
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
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
Prev Previous commit
Next Next commit
Merge remote-tracking branch 'origin/staging' into staging-v4
Resolved by taking staging's copilot refactor (mv/mkdir/cp consolidation,
sim_key chips, CredentialLinkDisplay extraction, streaming-arg titles) and
re-grafting the desktop-only additions on top: desktopLocalFilesystem +
browserCapable payload params, local-filesystem tool schemas, local_*/browser_*
tool display titles, and the folder_access grant chip. Dropped the user-skill
(load_user_skill) wiring — staging removed lib/mothership/skills in mothership
v0.8. Generated tool catalog/schemas regenerated from the copilot contract
with staging's sync script.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
  • Loading branch information
Vikhyath Mondreti and claude committed Jul 18, 2026
commit fb4c2deca0cac9b1170ff2033faddea42832f119
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import {
ManageMcpTool,
ManageScheduledTask,
ManageSkill,
ManageSkillOperation,
QueryLogs,
Redeploy,
RunFromBlock,
Expand All @@ -31,6 +30,7 @@ import {
WorkspaceFileOperation,
} from '@/lib/copilot/generated/tool-catalog-v1'
import { VFS_DIR_TO_RESOURCE } from '@/lib/copilot/resources/types'
import { extractStreamingStringArgument } from '@/lib/copilot/tools/streaming-args'
import { getToolDisplayTitle, mvDisplayVerb } from '@/lib/copilot/tools/tool-display'
import type { ContentBlock, MothershipResource } from '@/app/workspace/[workspaceId]/home/types'
import { ToolCallStatus } from '@/app/workspace/[workspaceId]/home/types'
Expand All @@ -55,7 +55,7 @@ export const WORKFLOW_MUTATION_TOOL_NAMES: Set<string> = new Set([
'mv',
'cp',
DeleteWorkflow.id,
// Grace-period transcript/checkpoint compatibility.
// Removed legacy tools, kept while their grace-period executors remain.
'move_workflow',
'rename_workflow',
])
Expand Down Expand Up @@ -381,12 +381,20 @@ export function resolveStreamingToolDisplayTitle(
if (name === 'mv') {
const toolTitle = matchStreamingStringArg(streamingArgs, 'toolTitle')
if (!toolTitle) return undefined
// Same rename-vs-move derivation as the settled title: single source with
// only the leaf changing reads as a rename.
const multiSource = /"sources"\s*:\s*\[\s*"[^"]*"\s*,/.test(streamingArgs)
const firstSource = streamingArgs.match(/"sources"\s*:\s*\[\s*"([^"]*)"/m)?.[1]
const destination = matchStreamingStringArg(streamingArgs, 'destination')
const verb = multiSource
? 'Moving'
: mvDisplayVerb(firstSource ? decodeStreamingString(firstSource) : undefined, destination)
if (verb === 'Renaming' && firstSource && destination) {
return getToolDisplayTitle(name, {
sources: [decodeStreamingString(firstSource)],
destination,
})
}
return `${verb} ${toolTitle}`
}

Expand Down Expand Up @@ -447,17 +455,23 @@ export function resolveStreamingToolDisplayTitle(
}

if (name === ManageFolder.id) {
// create/rename/move remain here for checkpoint and transcript compatibility.
return resolveOperationDisplayTitle(
matchStreamingStringArg(streamingArgs, 'operation'),
{
create: 'Creating folder',
rename: 'Renaming folder',
move: 'Moving folder',
[ManageFolderOperation.delete]: 'Deleting folder',
},
'Folder action'
)
// create/rename/move are string literals: the live tool only offers delete
// (mkdir/mv replaced the rest), but grace-period checkpoint resumes and
// transcript replays still stream the legacy operations.
const operation = matchStreamingStringArg(streamingArgs, 'operation')
if (!operation) return undefined
return getToolDisplayTitle(name, {
operation,
path:
matchStreamingStringArg(streamingArgs, 'oldPath') ??
matchStreamingStringArg(streamingArgs, 'source') ??
matchStreamingStringArg(streamingArgs, 'path'),
name:
matchStreamingStringArg(streamingArgs, 'newPath') ??
matchStreamingStringArg(streamingArgs, 'destination') ??
matchStreamingStringArg(streamingArgs, 'newName') ??
matchStreamingStringArg(streamingArgs, 'name'),
})
}

return undefined
Expand Down
26 changes: 9 additions & 17 deletions apps/sim/lib/copilot/chat/payload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ interface BuildPayloadParams {
email?: string
timezone?: string
}
includeMothershipTools?: boolean
desktopLocalFilesystem?: boolean
browserCapable?: boolean
}
Expand Down Expand Up @@ -388,23 +387,16 @@ export async function buildCopilotRequestPayload(
)
}

if (params.includeMothershipTools && params.workspaceId) {
// Expose all workspace user-created skills via the single load_user_skill
// tool. Available to every user; content is fetched sim-side when the
// model calls it.
try {
const userSkillTool = await buildUserSkillTool(params.workspaceId)
if (userSkillTool) mothershipTools.push(userSkillTool)
} catch (error) {
logger.warn('Failed to build load_user_skill tool', {
error: toError(error).message,
})
}
}
if (params.workspaceId && params.mcpServerIds?.length) {
mothershipTools = await buildTaggedMcpToolSchemas(
userId,
params.workspaceId,
params.mcpServerIds
)
}

if (params.desktopLocalFilesystem) {
mothershipTools.push(...buildLocalFilesystemToolSchemas())
}
if (effectiveMode === 'build' && params.desktopLocalFilesystem) {
mothershipTools.push(...buildLocalFilesystemToolSchemas())
}

return {
Expand Down
4 changes: 2 additions & 2 deletions apps/sim/lib/copilot/chat/post.ts
Loading
You are viewing a condensed version of this merge commit. You can view the full changes here.