Skip to content

Commit a99b35a

Browse files
committed
Merge remote-tracking branch 'origin/staging' into feat/workflow-version-diff
# Conflicts: # scripts/check-tool-registry-boundary.baseline.json
2 parents b874363 + 491ab88 commit a99b35a

632 files changed

Lines changed: 15063 additions & 29091 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.

‎.claude/rules/sim-list-ordering.md‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
description: List and menu ordering that mirrors the sidebar or toolbar, with one separator before the destructive action
2+
description: List and menu ordering that mirrors the toolbar or settings nav, encoded once, with one separator before the destructive action
33
paths:
44
- "apps/sim/app/**/*.tsx"
55
- "apps/sim/ee/**/*.tsx"
@@ -8,7 +8,7 @@ paths:
88

99
# List & Menu Ordering
1010

11-
**A list orders itself the way the user already reads the same things somewhere else.** Dropdowns, context menus, tab strips, command palettes, and settings navs are all *second* presentations of a set the user has already seen — in the sidebar, in a toolbar, in a column-header row. When the second presentation reorders that set, the user re-reads it from scratch every time.
11+
**A list orders itself the way the user already reads the same things somewhere else.** Dropdowns, context menus, tab strips, command palettes, and settings navs are all *second* presentations of a set the user has already seen — in a toolbar, in the settings nav, in a column-header row. When the second presentation reorders that set, the user re-reads it from scratch every time.
1212

1313
This is not a style preference. Order is the cheapest affordance a list has, and the only one that costs nothing to get right.
1414

@@ -18,13 +18,14 @@ Before writing a list of items, find where the user sees those same items *first
1818

1919
| The list | Mirrors |
2020
| --- | --- |
21-
| Resource menus (`+` attach, `@` mention, resource-tab `+`) | the workspace **sidebar**, top-down |
2221
| A row / root **context menu** | that surface's **toolbar**, left-to-right → top-to-bottom |
2322
| Settings tab strip, recently-deleted tabs | the **settings nav**, top-down |
2423
| A "New …" menu | the order those things appear once created |
2524

2625
Left-to-right becomes top-to-bottom. A toolbar reading `Filter · Sort · Export · Delete` becomes a menu reading Filter, Sort, Export, Delete — never alphabetized, never grouped by implementation, never "destructive last" unless the toolbar already puts it last.
2726

27+
Resource menus (`+` attach, `@` mention, resource-tab `+`) do not mirror the sidebar. Their order is a product decision encoded in `RESOURCE_MENU_ORDER` (see below), and every resource menu shares it.
28+
2829
Platform-only entries (desktop **Browser** and **Terminal**) trail the shared set rather than interleaving, so the common prefix is identical on every platform.
2930

3031
## Grouping: a rule marks a change in what the action acts on
@@ -107,10 +108,10 @@ grouping wants the standard grouping.
107108
An order duplicated across surfaces is an order that will drift. Export **one** constant and sort by it — do not hand-maintain a matching literal per menu.
108109

109110
```ts
110-
/** Top-down order for every menu listing resource families, mirroring the sidebar. */
111+
/** Top-down order for every menu listing resource families. */
111112
export const RESOURCE_MENU_ORDER: readonly MothershipResourceType[] = [
112-
'integration', 'task', 'table', 'file', 'filefolder',
113-
'knowledgebase', 'log', 'workflow', 'folder', 'browser', 'terminal', 'generic',
113+
'integration', 'task', 'dashboard', 'table', 'file', 'filefolder',
114+
'knowledgebase', 'workflow', 'log', 'folder', 'browser', 'terminal', 'generic',
114115
]
115116

116117
export function byResourceMenuOrder<T extends { type: MothershipResourceType }>(a: T, b: T) {

‎.cursor/rules/sim-list-ordering.mdc‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
---
2-
description: "List and menu ordering that mirrors the sidebar or toolbar, with one separator before the destructive action"
2+
description: "List and menu ordering that mirrors the toolbar or settings nav, encoded once, with one separator before the destructive action"
33
globs: ["apps/sim/app/**/*.tsx","apps/sim/ee/**/*.tsx","apps/sim/components/**/*.tsx"]
44
---
55

66
<!-- Generated from .claude/rules/sim-list-ordering.md by `bun run skills:sync`. Edit the source, not this file. -->
77

88
# List & Menu Ordering
99

10-
**A list orders itself the way the user already reads the same things somewhere else.** Dropdowns, context menus, tab strips, command palettes, and settings navs are all *second* presentations of a set the user has already seen — in the sidebar, in a toolbar, in a column-header row. When the second presentation reorders that set, the user re-reads it from scratch every time.
10+
**A list orders itself the way the user already reads the same things somewhere else.** Dropdowns, context menus, tab strips, command palettes, and settings navs are all *second* presentations of a set the user has already seen — in a toolbar, in the settings nav, in a column-header row. When the second presentation reorders that set, the user re-reads it from scratch every time.
1111

1212
This is not a style preference. Order is the cheapest affordance a list has, and the only one that costs nothing to get right.
1313

@@ -17,13 +17,14 @@ Before writing a list of items, find where the user sees those same items *first
1717

1818
| The list | Mirrors |
1919
| --- | --- |
20-
| Resource menus (`+` attach, `@` mention, resource-tab `+`) | the workspace **sidebar**, top-down |
2120
| A row / root **context menu** | that surface's **toolbar**, left-to-right → top-to-bottom |
2221
| Settings tab strip, recently-deleted tabs | the **settings nav**, top-down |
2322
| A "New …" menu | the order those things appear once created |
2423

2524
Left-to-right becomes top-to-bottom. A toolbar reading `Filter · Sort · Export · Delete` becomes a menu reading Filter, Sort, Export, Delete — never alphabetized, never grouped by implementation, never "destructive last" unless the toolbar already puts it last.
2625

26+
Resource menus (`+` attach, `@` mention, resource-tab `+`) do not mirror the sidebar. Their order is a product decision encoded in `RESOURCE_MENU_ORDER` (see below), and every resource menu shares it.
27+
2728
Platform-only entries (desktop **Browser** and **Terminal**) trail the shared set rather than interleaving, so the common prefix is identical on every platform.
2829

2930
## Grouping: a rule marks a change in what the action acts on
@@ -106,10 +107,10 @@ grouping wants the standard grouping.
106107
An order duplicated across surfaces is an order that will drift. Export **one** constant and sort by it — do not hand-maintain a matching literal per menu.
107108

108109
```ts
109-
/** Top-down order for every menu listing resource families, mirroring the sidebar. */
110+
/** Top-down order for every menu listing resource families. */
110111
export const RESOURCE_MENU_ORDER: readonly MothershipResourceType[] = [
111-
'integration', 'task', 'table', 'file', 'filefolder',
112-
'knowledgebase', 'log', 'workflow', 'folder', 'browser', 'terminal', 'generic',
112+
'integration', 'task', 'dashboard', 'table', 'file', 'filefolder',
113+
'knowledgebase', 'workflow', 'log', 'folder', 'browser', 'terminal', 'generic',
113114
]
114115

115116
export function byResourceMenuOrder<T extends { type: MothershipResourceType }>(a: T, b: T) {

‎.github/workflows/ci.yml‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,6 @@ jobs:
222222
platforms: linux/amd64
223223
tags: ${{ steps.login-ecr.outputs.registry }}/${{ steps.ecr-repo.outputs.name }}:${{ github.sha }}-dev
224224
build-args: |
225-
SIM_SEARCH_LIVE_DEFAULT=true
226225
MSHIP_PLAN_MODE_DEFAULT=true
227226
max-cache-size-mb: ${{ matrix.cache_mb }}
228227

‎.github/workflows/desktop-e2e.yml‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,23 @@ on:
1111
- '.github/workflows/desktop-release.yml'
1212
- 'apps/desktop/**'
1313
- 'apps/sim/app/_shell/desktop-update-*.tsx'
14+
- 'apps/sim/app/workspace/**/home/hooks/use-mothership-resize.ts'
15+
- 'apps/sim/app/workspace/**/home/hooks/use-resource-panel.ts'
16+
- 'apps/sim/app/workspace/**/home/components/chat-panel-layout.tsx'
17+
- 'apps/sim/stores/chat-panel/**'
18+
- 'apps/sim/stores/constants.ts'
19+
- 'apps/sim/lib/browser-agent/transport.ts'
20+
- 'apps/sim/lib/core/utils/separator-keys.ts'
21+
- 'apps/sim/scripts/fixtures/chat-panel.tsx'
1422
- 'apps/sim/app/layout.tsx'
1523
- 'apps/sim/hooks/use-desktop-update-state.ts'
1624
- 'apps/sim/lib/desktop/**'
1725
- 'apps/sim/app/desktop/connect/**'
1826
- 'apps/sim/app/credential-groups/**'
1927
- 'apps/sim/hooks/queries/slack-search.ts'
28+
- 'apps/sim/hooks/queries/personal-search-integrations.ts'
29+
- 'apps/sim/hooks/use-search-integration-connection.ts'
2030
- 'apps/sim/hooks/use-github-installation-setup.ts'
21-
- 'apps/sim/app/o/**/integrations/indexed/use-member-enrollment.ts'
2231
- 'apps/sim/lib/api/contracts/desktop-source-connect.ts'
2332
- 'apps/sim/scripts/fixtures/desktop-source-connect.tsx'
2433
- 'apps/sim/app/workspace/**/browser-session/**'

‎.github/workflows/desktop-release.yml‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,10 @@ jobs:
172172
SIM_DESKTOP_DEFAULT_ORIGIN: ${{ steps.channel.outputs.origin }}
173173
run: bun run build
174174

175+
- name: Install system-browser fixture
176+
working-directory: apps/desktop
177+
run: bunx playwright install chromium
178+
175179
- name: Run Electron smoke tests
176180
working-directory: apps/desktop
177181
env:

‎CLAUDE.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ The `'use client'` server boundary, the app/worker runtime env split, and featur
9191
- **Components**: `'use client'` only for hooks or browser APIs. Structure order, extraction thresholds, and list-render rules: `.claude/rules/sim-components.md`. Render-performance idioms (lazy-init refs, hoisting, `Map` pre-indexing, `[...arr].sort()` never `toSorted()` on client paths): `.claude/rules/sim-react-performance.md`. For effect/state/memo/callback anti-patterns use the `/you-might-not-need-*` skills and verify against the running UI.
9292
- **State ownership**: React Query owns server data — never `useState` + `fetch`; shareable client view-state (tabs, filters, search, pagination, selected id) lives in the URL via `nuqs`; Zustand owns global client state; `useState` owns UI-only state. Hooks: `.claude/rules/sim-hooks.md`. Stores (`devtools`, `persist` only with an explicit `partialize` whitelist, workflow value invariants): `.claude/rules/sim-stores.md`. URL state: `.claude/rules/sim-url-state.md`.
9393
- **Utils**: inline a helper with one consumer; create `utils.ts` when 2+ files share it — in `lib/` (app-wide) or `feature/utils/` (feature-scoped). Check `lib/` before writing a new one.
94-
- **Lists and menus** mirror the order the user already reads elsewhere (sidebar, toolbar), encoded in one exported order constant; a separator marks only a change in what the action acts on (typically one, before the destructive action): `.claude/rules/sim-list-ordering.md`.
94+
- **Lists and menus** mirror the order the user already reads elsewhere (toolbar, settings nav), encoded in one exported order constant (resource menus share `RESOURCE_MENU_ORDER`, a product order that does not mirror the sidebar); a separator marks only a change in what the action acts on (typically one, before the destructive action): `.claude/rules/sim-list-ordering.md`.
9595
- **Caching**: `lru-cache` with a `max` ceiling, never a hand-rolled TTL `Map`; a lifecycle map is not a cache; cache the gate, never the credential: `.claude/rules/sim-caching.md`.
9696

9797
## API Contracts and Routes

0 commit comments

Comments
 (0)