Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
09ed990
feat(mothership): erase private memory when a member leaves or an org…
waleedlatif1 Oct 31, 2026
3dfcaa0
fix(files): accept files/ VFS paths in v2 file describe, rename and d…
waleedlatif1 Oct 31, 2026
03b80f4
fix(desktop): keep sign-in popups working in the agent browser (#9506)
waleedlatif1 Oct 31, 2026
c2cb498
improvement(sim-links): pass queries through, trim pasted punctuation…
waleedlatif1 Oct 31, 2026
922b667
improvement(oauth): serve still-valid tokens while refreshing ahead o…
waleedlatif1 Oct 31, 2026
621e4ef
improvement(extension): document browser data handling and limited us…
waleedlatif1 Oct 31, 2026
4a7ba87
improvement(desktop): bring agent browser menus, keys and fullscreen …
waleedlatif1 Oct 31, 2026
e985d51
fix(auth): refuse account creation from disposable email domains for …
waleedlatif1 Oct 31, 2026
e0b3427
improvement(cli): files batch-delete takes file ids as arguments (#9518)
waleedlatif1 Oct 31, 2026
2db94a5
fix(mothership): say why a workflow copilot chat cannot read other ch…
waleedlatif1 Oct 31, 2026
d3f4739
improvement(desktop): install updates on one click, asking only about…
waleedlatif1 Oct 31, 2026
a4519ea
improvement(cli): sim credentials providers lists providers (#9522)
waleedlatif1 Oct 31, 2026
5f00f19
feat(desktop): continue a passkey sign-in in your browser and bring t…
waleedlatif1 Oct 31, 2026
c56d83e
fix(extension): keep site access compatible with strict CSP (#9524)
waleedlatif1 Oct 31, 2026
4dd5ef3
feat(people): organization People page with profiles, reporting lines…
waleedlatif1 Oct 31, 2026
d3a81eb
improvement(desktop): sign-in prompts for the agent browser — site pa…
waleedlatif1 Oct 31, 2026
22bf85a
fix(execution): name the signal exit code of a failed sandbox process…
waleedlatif1 Oct 31, 2026
09627c5
improvement(search): overlap live search stages and report every unse…
waleedlatif1 Oct 31, 2026
3e23d39
feat(mothership): answer a long workflow tool run still running, and …
waleedlatif1 Oct 31, 2026
1559a18
fix(people): keep a suspended manager link on edit and never fail the…
waleedlatif1 Oct 31, 2026
d30a1ad
feat(library): Best AI Agents for Jira Triage and Datadog Incident Re…
waleedlatif1 Oct 31, 2026
2dfdc37
docs(library): update best-multi-agent-frameworks-2026 (#9534)
waleedlatif1 Oct 31, 2026
962526f
fix(auth): block only curated disposable domains, and never gate SSO …
waleedlatif1 Oct 31, 2026
28bacdf
feat(library): AI Agent Output Controls Compared: Guardrails, Structu…
waleedlatif1 Oct 31, 2026
6a35cb4
fix(files): authorize the workspace before resolving a files/ path (#…
waleedlatif1 Oct 31, 2026
914f92f
fix(desktop): ask before an update restart from the menu, count uploa…
waleedlatif1 Oct 31, 2026
8c7bd74
fix(mothership): Stop only cancels detached runs still running, and a…
waleedlatif1 Oct 31, 2026
0954143
chore(auth): correct where the short disposable list runs (#9535)
waleedlatif1 Oct 31, 2026
20fb744
chore(search): retire legacy search knowledge base projection rows in…
waleedlatif1 Oct 31, 2026
82cf74d
fix(oauth): keep a five-minute floor on served tokens and refresh ahe…
waleedlatif1 Oct 31, 2026
1515ce2
improvement(release): harden favicons, sim links, and the extension f…
waleedlatif1 Oct 31, 2026
04b66d4
improvement(docs): collect reader feedback inline (#9538)
waleedlatif1 Oct 31, 2026
f16b71a
fix(auth): check a workspace's personal-key switch after membership (…
waleedlatif1 Oct 31, 2026
a502fb2
fix(oauth): take over a lapsed refresh lease, share overlapping servi…
waleedlatif1 Oct 31, 2026
7ca3f1a
fix(files): resolve v2 file paths only on the v2 surface, through the…
waleedlatif1 Oct 31, 2026
30d6f67
chore(ci): reach the database over the tailnet when CI_DB_TAILNET is …
waleedlatif1 Oct 31, 2026
5815964
fix(files): stream served files with byte ranges instead of buffering…
waleedlatif1 Oct 31, 2026
53a2caa
fix(ci): drop the duplicate --accept-routes the Tailscale action alre…
waleedlatif1 Nov 1, 2026
aa60ac2
fix(desktop): address release review — count app downloads and unchec…
waleedlatif1 Nov 1, 2026
425f9a4
fix(oauth): default a leader-lock follower's wait to the lease so its…
waleedlatif1 Nov 1, 2026
e407f28
fix(release): read Excel start dates, refuse impossible times and rep…
waleedlatif1 Nov 1, 2026
ac604b7
fix(files): share one served-bytes predicate between the serve route …
waleedlatif1 Nov 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .github/scripts/http-e2e.sh
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ case "$group" in
export DB_TX_TRIPWIRE=throw
export NEXT_PUBLIC_CHAT_DISABLED=true
export SIM_LINKS=true
export PEOPLE=true
start_app scim 3017 SCIM record-http-status
SCIM_E2E_BASE_URL="$local_app_url" \
SCIM_E2E_DATABASE_URL="$DATABASE_URL" \
Expand All @@ -161,6 +162,11 @@ case "$group" in
SIM_LINKS_E2E_AUTH_SECRET="$BETTER_AUTH_SECRET" \
SIM_LINKS_E2E_REPORT_PATH="$report_dir/sim-links-e2e-report.json" \
bun run test:sim-links:e2e
PEOPLE_E2E_BASE_URL="$local_app_url" \
PEOPLE_E2E_DATABASE_URL="$DATABASE_URL" \
PEOPLE_E2E_AUTH_SECRET="$BETTER_AUTH_SECRET" \
PEOPLE_E2E_REPORT_PATH="$report_dir/people-e2e-report.json" \
bun run test:people:e2e
;;

# The search suites serve their own fixtures in-process and need no app. They share this group
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ jobs:
migrate:
permissions:
contents: read
id-token: write
name: migrate
needs: [checks]
# Explicit need results instead of the implicit success(): a skipped job
Expand All @@ -133,6 +134,8 @@ jobs:
STAGING_DATABASE_URL: ${{ secrets.STAGING_DATABASE_URL }}
MIGRATION_DATABASE_URL: ${{ secrets.MIGRATION_DATABASE_URL }}
STAGING_MIGRATION_DATABASE_URL: ${{ secrets.STAGING_MIGRATION_DATABASE_URL }}
TS_OAUTH_CLIENT_ID: ${{ secrets.TS_OAUTH_CLIENT_ID }}
TS_AUDIENCE: ${{ secrets.TS_AUDIENCE }}

# Same ordering for dev (schema push before the dev image lands in ECR)
migrate-dev:
Expand All @@ -146,6 +149,8 @@ jobs:
environment: dev
secrets:
DEV_DATABASE_URL: ${{ secrets.DEV_DATABASE_URL }}
TS_OAUTH_CLIENT_ID: ${{ secrets.TS_OAUTH_CLIENT_ID }}
TS_AUDIENCE: ${{ secrets.TS_AUDIENCE }}

# Dev: build immutable images alongside the schema push and Trigger upload.
image-dev:
Expand Down Expand Up @@ -1166,6 +1171,9 @@ jobs:

# Process docs embeddings (only when docs change, after images are promoted)
docs:
permissions:
contents: read
id-token: write
name: docs
needs: [promote, docs-changes]
# Explicit results: see migrate's comment.
Expand All @@ -1178,6 +1186,8 @@ jobs:
secrets:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
TS_OAUTH_CLIENT_ID: ${{ secrets.TS_OAUTH_CLIENT_ID }}
TS_AUDIENCE: ${{ secrets.TS_AUDIENCE }}

# Create GitHub Release (only for version commits on main, after all builds complete)
release:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/desktop-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ jobs:
PLAYWRIGHT_JSON_OUTPUT_FILE: test-results/desktop-smoke.json
BACKGROUND_EXECUTOR_REPORT_PATH: test-results/background-executor-report.json
TERMINAL_CANCEL_REPORT_PATH: test-results/terminal-cancel-report.json
CONTINUE_SIGN_IN_REPORT_PATH: test-results/continue-sign-in-report.json

- name: Upload test results
if: failure()
Expand Down Expand Up @@ -192,6 +193,7 @@ jobs:
env:
BACKGROUND_EXECUTOR_REPORT_PATH: test-results/background-executor-report.json
TERMINAL_CANCEL_REPORT_PATH: test-results/terminal-cancel-report.json
CONTINUE_SIGN_IN_REPORT_PATH: test-results/continue-sign-in-report.json

- name: Upload test results
if: failure()
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/docs-negotiation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -226,9 +226,16 @@ jobs:
if: always() && steps.build.outcome == 'success'
run: |
mkdir -p apps/docs/test-results
FEEDBACK_TLS_DIR=$(mktemp -d)
export DOCS_FEEDBACK_TEST_CERT="$FEEDBACK_TLS_DIR/cert.pem"
export DOCS_FEEDBACK_TEST_KEY="$FEEDBACK_TLS_DIR/key.pem"
openssl req -x509 -newkey rsa:2048 -nodes -days 1 -subj '/CN=127.0.0.1' -addext 'subjectAltName=IP:127.0.0.1' -keyout "$DOCS_FEEDBACK_TEST_KEY" -out "$DOCS_FEEDBACK_TEST_CERT" 2>/dev/null
export NODE_EXTRA_CA_CERTS="$DOCS_FEEDBACK_TEST_CERT"
export DOCS_FEEDBACK_WEBHOOK_URL=https://127.0.0.1:3443/feedback
export DOCS_FEEDBACK_WEBHOOK_TOKEN=$(openssl rand -hex 32)
bun run --cwd apps/docs start --port 3001 >apps/docs/test-results/docs-server.log 2>&1 &
DOCS_SERVER_PID=$!
trap 'kill "$DOCS_SERVER_PID" 2>/dev/null || true' EXIT
trap 'kill "$DOCS_SERVER_PID" 2>/dev/null || true; rm -rf "$FEEDBACK_TLS_DIR"' EXIT
STATUS=0
bun run --cwd apps/docs test:negotiation:e2e || STATUS=1
bun run --cwd apps/docs scripts/test-docs-interfaces-e2e.ts || STATUS=1
Expand Down
17 changes: 17 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ on:
required: false
OPENAI_API_KEY:
required: false
TS_OAUTH_CLIENT_ID:
required: false
TS_AUDIENCE:
required: false
workflow_dispatch:
inputs:
publish:
Expand Down Expand Up @@ -40,6 +44,10 @@ jobs:
concurrency:
group: docs-search-index-production
cancel-in-progress: false
permissions:
contents: read
# Tailscale workload identity federation exchanges this job's OIDC token.
id-token: write

steps:
- name: Record verified deployment and backup
Expand Down Expand Up @@ -68,6 +76,15 @@ jobs:
provider: ${{ vars.CI_PROVIDER }}
node-version: '24'

# Database IP restrictions admit the tailnet's app connector; see migrate.yml.
- name: Join the tailnet
if: vars.CI_DB_TAILNET == 'true'
uses: tailscale/github-action@d1b6cd204f8dceda5b3eaad7f1f767be390056cd # v4.2.0
with:
oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
audience: ${{ secrets.TS_AUDIENCE }}
tags: tag:ci

- name: Process docs embeddings
working-directory: ./apps/docs
env:
Expand Down
20 changes: 20 additions & 0 deletions .github/workflows/migrate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ on:
required: false
STAGING_MIGRATION_DATABASE_URL:
required: false
TS_OAUTH_CLIENT_ID:
required: false
TS_AUDIENCE:
required: false
workflow_dispatch:
inputs:
environment:
Expand Down Expand Up @@ -46,6 +50,10 @@ jobs:
concurrency:
group: migrate-${{ inputs.environment }}
cancel-in-progress: false
permissions:
contents: read
# Tailscale workload identity federation exchanges this job's OIDC token.
id-token: write

steps:
# An environment only migrates from its own branch, so a manual dispatch
Expand Down Expand Up @@ -73,6 +81,18 @@ jobs:
exit 1
fi

# Database IP restrictions admit the tailnet's app connector, never a
# runner's address. The action already passes --accept-routes, which
# Linux nodes need to use app connector routes; repeating it in args
# makes `tailscale up` reject the duplicate flag.
- name: Join the tailnet
if: vars.CI_DB_TAILNET == 'true'
uses: tailscale/github-action@d1b6cd204f8dceda5b3eaad7f1f767be390056cd # v4.2.0
with:
oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
audience: ${{ secrets.TS_AUDIENCE }}
tags: tag:ci

- name: Checkout code
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6
with:
Expand Down
5 changes: 5 additions & 0 deletions apps/desktop/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,11 @@ tabs and popups select their session from the destination origin. Sign-out and a
or server changes use the existing browser teardown. Browser views retain their own
permission/download policy, SSRF guards, and minimal preload with no `simDesktop` API.

**Continue in Chrome** (browser menu, plus a hint on known sign-in hosts) opens the active
https tab in a chosen Chromium-family profile and **Bring session back** imports only that
page's registrable-domain cookies from it; the rationale and gating live on
`SimDesktopBrowserImportApi.continueSignIn` in `@sim/desktop-bridge`.

Generated HTML remains inside its `allow-scripts` sandbox. The driver can inspect and
interact with inline frames through isolated Chromium worlds, including out-of-process
frames; it does not grant those pages access to the parent app. These shell changes
Expand Down
5 changes: 0 additions & 5 deletions apps/desktop/build/entitlements.mac.plist
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,5 @@
Hardened Runtime denies the camera no matter what the user allowed. -->
<key>com.apple.security.device.camera</key>
<true/>
<!-- WebAuthn hybrid transport (passkey on the user's phone via QR) rides
Bluetooth proximity; without this the QR option silently never
completes in signed builds. -->
<key>com.apple.security.device.bluetooth</key>
<true/>
</dict>
</plist>
1 change: 1 addition & 0 deletions apps/desktop/e2e-durations.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"chat-panel.spec.ts": 31.08,
"check-report.spec.ts": 3.78,
"computer-use.spec.ts": 2.07,
"continue-sign-in.spec.ts": 5.8,
"desktop-tools-live-sim.spec.ts": 0.0,
"local-files.spec.ts": 27.68,
"packaged-smoke.spec.ts": 0.0,
Expand Down
Loading
Loading