Skip to content

Commit 393bfe4

Browse files
authored
v0.9.37: search split, deps bumps, db improvements, unified integration permissions, sim links, new docs
2 parents a52fc50 + 873489c commit 393bfe4

1,096 files changed

Lines changed: 472892 additions & 15320 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.gitattributes‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,6 @@ Dockerfile* text eol=lf
4141
*.ttf binary
4242
*.eot binary
4343
*.pdf binary
44+
45+
apps/docs/migration/report.json linguist-generated=true
46+
apps/docs/migration/verification/** linguist-generated=true

‎.github/ci-suites.json‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616
"group": "desktop-inbox",
1717
"task": "ci:e2e-desktop-inbox"
1818
},
19+
{
20+
"group": "browser-extension",
21+
"task": "ci:e2e-browser-extension"
22+
},
1923
{
2024
"group": "seo",
2125
"task": "ci:e2e-seo"

‎.github/scripts/ci-plan.gql‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ query($base: String!, $head: String!) {
33
affectedTasks(base: $base, head: $head, tasks: [
44
"test", "build", "type-check", "ci:integration", "ci:desktop-live",
55
"ci:e2e-scim", "ci:e2e-cli", "ci:e2e-stop-after", "ci:e2e-desktop-inbox",
6-
"ci:e2e-project-files", "ci:e2e-mobile", "ci:e2e-seo"
6+
"ci:e2e-browser-extension", "ci:e2e-project-files", "ci:e2e-mobile", "ci:e2e-seo"
77
]) {
88
items {
99
name

‎.github/scripts/http-e2e.sh‎

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# CI groups, which reuse the production build from `e2e-build`.
44
# The job extracts it into apps/sim/.next before running these suites.
55
#
6-
# Usage: http-e2e.sh <scim|cli|stop-after|desktop-inbox|project-files|mobile|seo> (run from apps/sim)
6+
# Usage: http-e2e.sh <scim|cli|stop-after|desktop-inbox|browser-extension|project-files|mobile|seo> (run from apps/sim)
77
#
88
# The job provides DATABASE_URL, BETTER_AUTH_SECRET and ENCRYPTION_KEY; each group sets the rest of
99
# its app's environment here. Reports and server logs land in $RUNNER_TEMP/e2e.
@@ -20,7 +20,7 @@
2020
# telemetry flush runs detached and still writes .next/dev).
2121
set -euo pipefail
2222

23-
group=${1:?usage: http-e2e.sh <scim|cli|stop-after|desktop-inbox|project-files|mobile|seo>}
23+
group=${1:?usage: http-e2e.sh <scim|cli|stop-after|desktop-inbox|browser-extension|project-files|mobile|seo>}
2424
report_dir="$RUNNER_TEMP/e2e"
2525
ready_timeout_seconds=600
2626
mkdir -p "$report_dir"
@@ -144,6 +144,7 @@ case "$group" in
144144
export INTERNAL_API_SECRET=scim-http-ci-local-secret-at-least-32-characters
145145
export DB_TX_TRIPWIRE=throw
146146
export NEXT_PUBLIC_CHAT_DISABLED=true
147+
export SIM_LINKS=true
147148
start_app scim 3017 SCIM record-http-status
148149
SCIM_E2E_BASE_URL="$local_app_url" \
149150
SCIM_E2E_DATABASE_URL="$DATABASE_URL" \
@@ -155,6 +156,11 @@ case "$group" in
155156
VERSION_COMPARE_E2E_AUTH_SECRET="$BETTER_AUTH_SECRET" \
156157
VERSION_COMPARE_E2E_REPORT_PATH="$report_dir/version-compare-http-report.json" \
157158
bun run test:workflow-version-compare:e2e
159+
SIM_LINKS_E2E_BASE_URL="$local_app_url" \
160+
SIM_LINKS_E2E_DATABASE_URL="$DATABASE_URL" \
161+
SIM_LINKS_E2E_AUTH_SECRET="$BETTER_AUTH_SECRET" \
162+
SIM_LINKS_E2E_REPORT_PATH="$report_dir/sim-links-e2e-report.json" \
163+
bun run test:sim-links:e2e
158164
;;
159165

160166
# The search suites serve their own fixtures in-process and need no app. They share this group
@@ -198,11 +204,14 @@ case "$group" in
198204
;;
199205

200206
# The desktop background executor's protocol: device registration, the SSE doorbell over Redis
201-
# pub/sub, presence, leased claims, Stop and isolation. The only group whose app gets Redis.
207+
# pub/sub, presence, leased claims, Stop and isolation.
202208
desktop-inbox)
203209
export REDIS_URL=redis://127.0.0.1:6379
204210
export NEXT_PUBLIC_FORCE_HOSTED=false
205211
export COPILOT_TOOL_PERMISSIONS_ENABLED=true
212+
export KNOWLEDGE_MEMBER_ACCESS=true CREDENTIAL_GROUPS=true ACCESS_CONTROL_ENABLED=true
213+
export NEXT_PUBLIC_ACCESS_CONTROL_ENABLED=true NEXT_PUBLIC_ORGANIZATIONS_ENABLED=true
214+
bunx --no-install playwright install --with-deps chromium
206215
export INTERNAL_API_SECRET=desktop-inbox-http-ci-local-secret-at-least-32-characters
207216
export DB_TX_TRIPWIRE=throw
208217
start_app desktop-inbox 3019 'desktop executor' record-http-status
@@ -212,6 +221,41 @@ case "$group" in
212221
DESKTOP_INBOX_E2E_AUTH_SECRET="$BETTER_AUTH_SECRET" \
213222
DESKTOP_INBOX_E2E_REPORT_PATH="$report_dir/desktop-inbox-http-report.json" \
214223
bun run test:desktop-inbox:e2e
224+
ASSISTANT_ACTIONS_E2E_BASE_URL="$local_app_url" \
225+
ASSISTANT_ACTIONS_E2E_DATABASE_URL="$DATABASE_URL" \
226+
ASSISTANT_ACTIONS_E2E_AUTH_SECRET="$BETTER_AUTH_SECRET" \
227+
ASSISTANT_ACTIONS_E2E_REPORT_PATH="$report_dir/assistant-actions-ui-report.json" \
228+
bun --no-env-file scripts/test-assistant-actions-e2e.ts
229+
ORGANIZATION_SEARCH_E2E_BASE_URL="$local_app_url" \
230+
ORGANIZATION_SEARCH_E2E_DATABASE_URL="$DATABASE_URL" \
231+
ORGANIZATION_SEARCH_E2E_AUTH_SECRET="$BETTER_AUTH_SECRET" \
232+
ORGANIZATION_SEARCH_E2E_REPORT_PATH="$report_dir/organization-search-ui-report.json" \
233+
bun --no-env-file scripts/test-organization-search-e2e.ts
234+
;;
235+
236+
browser-extension)
237+
export REDIS_URL=redis://127.0.0.1:6379
238+
export NEXT_PUBLIC_FORCE_HOSTED=false
239+
export KNOWLEDGE_MEMBER_ACCESS=true CREDENTIAL_GROUPS=true ACCESS_CONTROL_ENABLED=true
240+
export NEXT_PUBLIC_ACCESS_CONTROL_ENABLED=true
241+
export API_ENCRYPTION_KEY="$ENCRYPTION_KEY"
242+
bunx --no-install playwright install --with-deps chromium
243+
extension_identity=$(bun - <<'JS'
244+
import { generateKeyPairSync, createHash } from 'node:crypto'
245+
const { publicKey } = generateKeyPairSync('rsa', { modulusLength: 2048 })
246+
const der = publicKey.export({ type: 'spki', format: 'der' })
247+
const id = [...createHash('sha256').update(der).digest('hex').slice(0, 32)]
248+
.map(c => String.fromCharCode(97 + parseInt(c, 16))).join('')
249+
process.stdout.write(`${der.toString('base64')}\n${id}`)
250+
JS
251+
)
252+
export SIM_EXTENSION_KEY="${extension_identity%%$'\n'*}"
253+
export BROWSER_EXTENSION_IDS="${extension_identity#*$'\n'}"
254+
start_app browser-extension 3007 'browser extension' record-http-status
255+
EXTENSION_APP_E2E_BASE_URL="$local_app_url" \
256+
EXTENSION_APP_E2E_DATABASE_URL="$DATABASE_URL" \
257+
EXTENSION_APP_E2E_REPORT_PATH="$report_dir/browser-extension/report.json" \
258+
bun run test:browser-extension:e2e
215259
;;
216260

217261
project-files)
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: browser-extension
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- '.github/workflows/browser-extension.yml'
7+
- 'apps/extension/**'
8+
- 'packages/browser-extension-protocol/**'
9+
- 'apps/sim/app/extension/**'
10+
- 'apps/sim/app/workspace/**/home/**'
11+
- 'apps/sim/stores/mothership-drafts/**'
12+
- 'apps/sim/scripts/test-browser-extension-e2e.ts'
13+
- 'apps/sim/lib/core/security/**'
14+
- 'apps/sim/lib/mothership/chat/**'
15+
- 'apps/sim/lib/api/contracts/mothership-chat-context.ts'
16+
- 'apps/sim/proxy.ts'
17+
- 'apps/sim/next.config.ts'
18+
- 'apps/sim/package.json'
19+
- 'packages/emcn/**'
20+
- 'packages/logger/**'
21+
- 'packages/utils/**'
22+
- 'bun.lock'
23+
workflow_dispatch:
24+
25+
permissions:
26+
contents: read
27+
28+
concurrency:
29+
group: browser-extension-${{ github.ref }}
30+
cancel-in-progress: true
31+
32+
jobs:
33+
transport:
34+
runs-on: ubuntu-24.04
35+
timeout-minutes: 10
36+
steps:
37+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6
38+
with:
39+
persist-credentials: false
40+
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v6
41+
with:
42+
node-version: '24'
43+
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
44+
with:
45+
bun-version: 1.4.4
46+
- run: bun install --frozen-lockfile
47+
- run: bunx playwright install --with-deps chromium
48+
working-directory: apps/extension
49+
- run: bun run type-check && bun run build && bun run test:e2e
50+
working-directory: apps/extension
51+
env:
52+
EXTENSION_REPORT_PATH: test-results/extension-report.json
53+
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
54+
if: always()
55+
with:
56+
name: browser-extension-results
57+
path: apps/extension/test-results
58+
retention-days: 7

‎.github/workflows/checks.yml‎

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,9 @@ jobs:
217217
--health-interval 5s
218218
--health-timeout 5s
219219
--health-retries 10
220-
# Desktop inbox and Project Files use Redis.
220+
# Desktop inbox, browser extension, and Project Files use Redis.
221221
redis:
222-
image: ${{ (matrix.group == 'desktop-inbox' || matrix.group == 'project-files') && 'redis:8.2-alpine' || '' }}
222+
image: ${{ (matrix.group == 'desktop-inbox' || matrix.group == 'browser-extension' || matrix.group == 'project-files') && 'redis:8.2-alpine' || '' }}
223223
ports:
224224
- 6379:6379
225225
options: >-
@@ -296,7 +296,10 @@ jobs:
296296
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
297297
with:
298298
name: e2e-reports-${{ matrix.group }}
299-
path: ${{ runner.temp }}/e2e/**/*.json
299+
path: |
300+
${{ runner.temp }}/e2e/**/*.json
301+
${{ runner.temp }}/e2e/browser-extension/**/*.png
302+
${{ runner.temp }}/e2e/*-ui-report.json.artifacts/*.png
300303
if-no-files-found: ignore
301304
retention-days: 7
302305

@@ -681,6 +684,9 @@ jobs:
681684
tar -xzf "$archive" -C "$RUNNER_TEMP" actionlint
682685
"$RUNNER_TEMP/actionlint" -color -shellcheck= -pyflakes=
683686
687+
- name: Generate documentation modules for import audits
688+
run: bun run --cwd apps/docs content:generate
689+
684690
# Every zero-argument `check:*` script, run concurrently. The list is derived in
685691
# scripts/run-audits.ts, which also writes the per-audit timing table to the job
686692
# summary and annotates failures. Audits needing a base ref stay separate below.

‎.github/workflows/ci.yml‎

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ jobs:
287287
if [ -n "$TRIGGER_BRANCH" ]; then
288288
TARGET_ARGS+=(--branch "$TRIGGER_BRANCH")
289289
fi
290-
bunx trigger.dev@4.7.6 deploy "${TARGET_ARGS[@]}" --skip-promotion
290+
bunx trigger.dev@4.8.2 deploy "${TARGET_ARGS[@]}" --skip-promotion
291291
292292
- name: Validate deployment version output
293293
env:
@@ -638,7 +638,7 @@ jobs:
638638
if [ -n "$TRIGGER_BRANCH" ]; then
639639
TARGET_ARGS+=(--branch "$TRIGGER_BRANCH")
640640
fi
641-
bunx trigger.dev@4.7.6 promote "$VERSION" "${TARGET_ARGS[@]}"
641+
bunx trigger.dev@4.8.2 promote "$VERSION" "${TARGET_ARGS[@]}"
642642
643643
# Production only, once the new app serves traffic: submit the library and comparison URLs this
644644
# push changed to IndexNow. Best effort: nothing depends on it, and a failure never fails the run.
@@ -1149,9 +1149,20 @@ jobs:
11491149
with:
11501150
filters: |
11511151
docs:
1152-
- 'apps/docs/content/docs/**'
1153-
- 'apps/sim/scripts/process-docs.ts'
1154-
- 'apps/sim/lib/chunkers/**'
1152+
- 'apps/docs/content/**'
1153+
- 'apps/docs/components/workflow-preview/examples.ts'
1154+
- 'apps/docs/components/workflow-preview/block-display-workflows.ts'
1155+
- 'apps/docs/scripts/compile-content.ts'
1156+
- 'apps/docs/scripts/index-search.ts'
1157+
- 'apps/docs/lib/content/**'
1158+
- 'apps/docs/lib/search/**'
1159+
- 'apps/docs/lib/openapi-specs.ts'
1160+
- 'apps/docs/lib/urls.ts'
1161+
- 'apps/docs/openapi*.json'
1162+
- 'apps/docs/package.json'
1163+
- 'bun.lock'
1164+
- '.github/workflows/docs.yml'
1165+
- '.github/workflows/ci.yml'
11551166
11561167
# Process docs embeddings (only when docs change, after images are promoted)
11571168
docs:

0 commit comments

Comments
 (0)