Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1194 commits
Select commit Hold shift + click to select a range
ba56a7d
perf(chat): batch mention reads into one query per family
waleedlatif1 Nov 9, 2026
a8ad52c
fix(chat): name review card buttons by their text inside the card's n…
waleedlatif1 Nov 9, 2026
5c758be
Merge branch 'wip/ws-perf' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
9765a4a
test(chat): prove the batched mention reads against real PostgreSQL
waleedlatif1 Nov 9, 2026
416c6ce
feat(integrations): restore restricted apps, GitLab token, app skills…
waleedlatif1 Nov 9, 2026
dcd714d
chore(checks): shrink the explicit-any baseline after the dashboard p…
waleedlatif1 Nov 9, 2026
ff33d9c
Merge branch 'wip/ws-integrations-leftovers' into wip/platform-org-wi…
waleedlatif1 Nov 9, 2026
48260f8
chore(platform): drop secrets data re-exports the shared credential m…
waleedlatif1 Nov 9, 2026
f890970
feat(chat): panel + picker, streamed file preview, animated stat pane…
waleedlatif1 Nov 9, 2026
8a6b62c
Merge branch 'wip/ws-panel-leftovers' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
10c5bbe
fix(desktop): bind a turn sent right after sign-in to the desktop exe…
waleedlatif1 Nov 9, 2026
f55877a
Merge branch 'wip/ws-desktop-bg' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
d8bdf53
fix(chat): compact the review card preview into aligned label/value rows
waleedlatif1 Nov 9, 2026
2b32edd
ci(platform): give the macOS Electron checks' development server time…
waleedlatif1 Nov 9, 2026
a6ca628
test(e2e): start the extension viewer's team from their personal orga…
waleedlatif1 Nov 9, 2026
2b2c74f
fix(chat): review a message's saved page context in the product chat
waleedlatif1 Nov 9, 2026
fa48569
fix(chat): name the panel's open link after its resource
waleedlatif1 Nov 9, 2026
8dc654c
fix(desktop): dismiss a page choice prompt on Enter and bundle Monaco…
waleedlatif1 Nov 9, 2026
779a1c1
fix(proxy): send a signed-out product visit to login with its path as…
waleedlatif1 Nov 9, 2026
e5ad152
ci(platform): keep the dummy Resend key out of the live app's runtime
waleedlatif1 Nov 9, 2026
d0c56e9
test(platform): settle the live product specs on the mounted shell
waleedlatif1 Nov 9, 2026
95e5fca
Merge branch 'wip/ws-e2e-fixes' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
269adc0
Merge branch 'wip/ws-live-suite' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
e32a172
test(desktop): pass the panel picker and reorder handler in the chat …
waleedlatif1 Nov 9, 2026
eb77c4b
test(assistant-actions): open the receipt before reading its site, as…
waleedlatif1 Nov 9, 2026
681a519
fix(extension): open a workspace for a viewer who left its team
waleedlatif1 Nov 9, 2026
37c9e7d
Merge branch 'wip/ws-voice-toast' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
5a4606e
test(extension): record console errors and warnings in the browser ex…
waleedlatif1 Nov 9, 2026
4483b61
fix(extension): open the workspace picker for a viewer in a personal …
waleedlatif1 Nov 9, 2026
735c31d
fix(chat): wait for hydration before mounting the live conversation
waleedlatif1 Nov 9, 2026
56aca1b
fix(chat): restore focus to the review decision button once saving se…
waleedlatif1 Nov 9, 2026
4b1f8e3
Merge branch 'wip/fix-search-hydration' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
3c204c6
Merge branch 'wip/fix-review-focus' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
dcddd4c
ci(platform-design): download the Electron binary before the desktop …
waleedlatif1 Nov 9, 2026
6c44f1f
refactor(chat): gate the viewer id on hydration in the data layer
waleedlatif1 Nov 9, 2026
de23f06
test(extension): log voice startup steps and notices inside the app f…
waleedlatif1 Nov 9, 2026
14583e5
Merge branch 'wip/fix-voice-toast' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
ad60b94
fix(chat): interleave review cards with receipts in turn order
waleedlatif1 Nov 9, 2026
f5a3eb2
Merge branch 'wip/fix-review-focus' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
debf618
refactor(chat): keep the pending review card type local to its file
waleedlatif1 Nov 9, 2026
2ea48de
test(extension): trace the microphone click inside the app frame
waleedlatif1 Nov 9, 2026
a12c008
fix(platform): compile the desktop check's routes before Electron lau…
waleedlatif1 Nov 9, 2026
781d933
test(extension): bring the panel back to front before the first micro…
waleedlatif1 Nov 9, 2026
1dcb757
fix(people): give a phone's directory search its own row out to the p…
waleedlatif1 Nov 9, 2026
0d83ab4
test(org): read nav destinations apart from the sections and hold Peo…
waleedlatif1 Nov 9, 2026
a588aae
Merge branch 'wip/fix-org-redesign' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
399643b
fix(platform): give Home, Search, Settings and chat one main landmark…
waleedlatif1 Nov 9, 2026
6cabeb2
test(e2e): assert Home's shared widget height and its restored sugges…
waleedlatif1 Nov 9, 2026
a82996c
fix(chat): restore the Assistant's Ask heading and hold the panel tog…
waleedlatif1 Nov 9, 2026
4f63f70
fix(integrations): keep the referrer off provider details and show no…
waleedlatif1 Nov 9, 2026
fa7ae4e
fix(search): widen the Search field's button targets to the touch tar…
waleedlatif1 Nov 9, 2026
655bb81
test(org): assert Emir's Assistant composer, Search header and restor…
waleedlatif1 Nov 9, 2026
897fa45
fix(chat): send a Home resource handoff to the new chat and restore i…
waleedlatif1 Nov 9, 2026
f25f426
fix(links): list Links in Settings and render it as a Settings section
waleedlatif1 Nov 9, 2026
689d42c
fix(settings): restore legacy behavior in Credential Groups, SSO, Ins…
waleedlatif1 Nov 9, 2026
22dfb65
Merge branch 'wip/or-chat' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
9faba0f
test(org): a member's own agent chat is absent from Search, as in legacy
waleedlatif1 Nov 9, 2026
ece9836
Merge branch 'wip/or-settings' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
7b71998
fix(auth): navigate once after an email sign-in
waleedlatif1 Nov 9, 2026
15e1853
refactor(home): fold the resource handoff into Home's redirect gate
waleedlatif1 Nov 9, 2026
f3c74a3
fix(platform): redirect an organization's root and Home before the sh…
waleedlatif1 Nov 9, 2026
2e610d3
fix(platform): name the account chip by the person it belongs to
waleedlatif1 Nov 9, 2026
5b3846b
fix(platform): return focus to Rename organization after a rename
waleedlatif1 Nov 9, 2026
c41ffda
fix(platform): treat an open assistant chat under Search as the activ…
waleedlatif1 Nov 9, 2026
a77c316
fix(platform): offer the macOS app in Help on a Mac browser only
waleedlatif1 Nov 9, 2026
1eec951
test(org): read the current destination apart from the open chat's ow…
waleedlatif1 Nov 9, 2026
7e76a0e
Merge branch 'wip/or-shell' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
1a09174
refactor(home): keep the member gate apart from the resource handoff
waleedlatif1 Nov 9, 2026
4b2b2a7
fix(platform): open fixture product pages without sign-in and record …
waleedlatif1 Nov 9, 2026
17e2c8e
Merge branch 'wip/fix-desktop-renderer-2' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
df4c17e
fix(search): show Get started on the Assistant landing
waleedlatif1 Nov 9, 2026
56c0318
fix(chat): hold a /skill sent before the skill list lands
waleedlatif1 Nov 9, 2026
5385b7e
fix(platform): read the fixture-server rule from a host config module
waleedlatif1 Nov 9, 2026
1167df4
Merge branch 'wip/or-chat-gaps' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
6602654
refactor(chat): own the skill list status in the data layer
waleedlatif1 Nov 9, 2026
00b4f87
test(desktop): open the account menu by the person's name, as on staging
waleedlatif1 Nov 9, 2026
b102211
fix(settings): redirect a legacy Settings alias before the shell streams
waleedlatif1 Nov 9, 2026
c949eae
test(platform): let the unscoped audit feed answer before opening the…
waleedlatif1 Nov 9, 2026
359c2ed
test(platform): wait out first-visit compile and chart hydration in b…
waleedlatif1 Nov 9, 2026
2a4ace7
fix(chat): keep Close chat panel on an empty panel
waleedlatif1 Nov 9, 2026
5e2c763
fix(chat): read only skills for a slash, and nothing on focus
waleedlatif1 Nov 9, 2026
ddcd9d6
test(e2e): match the composer's mentions reads and its busy frame
waleedlatif1 Nov 9, 2026
4e7397d
test(org): count lit destination rows below the nav's own scope
waleedlatif1 Nov 9, 2026
ef43a22
fix(platform): give the composer focus once it mounts, as legacy did
waleedlatif1 Nov 9, 2026
facb46f
fix(platform): mark every Home recent with its site's favicon or a globe
waleedlatif1 Nov 9, 2026
b972d69
test(org): measure a connect button and its card in one frame, and pu…
waleedlatif1 Nov 9, 2026
caa0c02
Merge branch 'wip/or2-composer' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
6355fa9
Merge branch 'wip/or2-shell' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
d67f713
fix(settings): send Credential Groups requests past an invalid address
waleedlatif1 Nov 9, 2026
a01f940
fix(sso): keep a typed provider ID when its popup closes
waleedlatif1 Nov 9, 2026
4b75ef2
fix(platform): redirect a workspace's bare URL before the shell streams
waleedlatif1 Nov 9, 2026
afb65a0
fix(integrations): seed the Generic Secrets source for first paint
waleedlatif1 Nov 9, 2026
9c0d528
Merge branch 'wip/or2-settings' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
b6de88b
fix(platform): warm the desktop window's client chunks and record the…
waleedlatif1 Nov 9, 2026
bb2a65f
Merge branch 'wip/fix-desktop-renderer-3' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
28f077e
test(extension): drop the voice startup and click traces
waleedlatif1 Nov 9, 2026
24005fb
test(platform): blur Home's focused composer before the live Mod+B check
waleedlatif1 Nov 9, 2026
9670db8
perf(platform): seed the session query on the server so first paint s…
waleedlatif1 Nov 9, 2026
3b2a3a5
test(platform): warm every fixture page the browser checks open befor…
waleedlatif1 Nov 9, 2026
6e806bf
test(platform): wait for hydration after every fixture check's page load
waleedlatif1 Nov 9, 2026
cd27b1b
Merge branch 'wip/fixture-hydration' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
d8cca90
ci(platform-design): carry Turbopack's dev cache between desktop runs
waleedlatif1 Nov 9, 2026
d53823c
chore(auth): use the shared toRecord and sleep helpers in the session…
waleedlatif1 Nov 9, 2026
c1c3f26
fix(auth): reveal the viewer to each component only after it hydrates
waleedlatif1 Nov 9, 2026
ac8ea77
fix(search): pin a bare Search URL's mode on the server, never from t…
waleedlatif1 Nov 9, 2026
09bc7de
fix(search): pin a bare Search URL in the shell before anything streams
waleedlatif1 Nov 9, 2026
7804e3f
test(platform): wait for hydration in the live checks too
waleedlatif1 Nov 9, 2026
4629675
test(desktop): give the renderer spec time for both themes on the mac…
waleedlatif1 Nov 9, 2026
441009a
test(desktop): wait for the Electron window to hydrate before using it
waleedlatif1 Nov 9, 2026
4319679
fix(platform): reveal shell data to each component only after it hydr…
waleedlatif1 Nov 9, 2026
19acb26
Merge branch 'wip/fix-search-418' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
76a1bdb
ci(platform-design): sample memory and swap during the desktop render…
waleedlatif1 Nov 9, 2026
2bd09d3
ci(platform-design): run the desktop memory sampler from its own script
waleedlatif1 Nov 9, 2026
eab28db
ci(platform-design): run the desktop renderer spec on the xlarge macO…
waleedlatif1 Nov 9, 2026
01aaa88
test(platform): let the desktop entry walk settle and give a run's fi…
waleedlatif1 Nov 9, 2026
51ae4e1
test(desktop): give the renderer spec's expectations the dev server's…
waleedlatif1 Nov 9, 2026
1cac1bc
Merge remote-tracking branch 'origin/staging' into wip/platform-org-w…
waleedlatif1 Nov 9, 2026
54febd6
chore(platform): regenerate the permission catalog for staging's new …
waleedlatif1 Nov 9, 2026
820bbce
fix(organizations): lock the personal organization row before retirin…
waleedlatif1 Nov 9, 2026
fe64beb
feat(db): enforce one owner per personal organization in the database
waleedlatif1 Nov 9, 2026
4482fdd
refactor(chat): drop the unmounted Sim link scope from the legacy sou…
waleedlatif1 Nov 9, 2026
65c4579
test(organizations): cover the personal-organization backfill's candi…
waleedlatif1 Nov 9, 2026
9c35c04
fix(platform): record a workspace visit when a live workspace opens
waleedlatif1 Nov 9, 2026
e6bfbbb
fix(mothership): fail a steer whose permission lookup fails instead o…
waleedlatif1 Nov 9, 2026
32a5cb4
test(platform): drop mock-wiring tests of the shell scope, legacy red…
waleedlatif1 Nov 9, 2026
34e7d4e
refactor(tables): drop the table view autosave hook
waleedlatif1 Nov 9, 2026
7e6bb7d
fix(checks): guard the product surfaces in the client-boundary and in…
waleedlatif1 Nov 9, 2026
54144aa
fix(checks): refuse duplicate parity rows and settle the stale ledger…
waleedlatif1 Nov 9, 2026
9b99739
test(organizations): prove the surface read's tenant isolation agains…
waleedlatif1 Nov 9, 2026
abb4968
fix(checks): fail check:platform-design on allowlist entries that nam…
waleedlatif1 Nov 9, 2026
2e55364
fix(integrations): reconnect a Dataverse credential to its bound envi…
waleedlatif1 Nov 9, 2026
6144a33
ci: escape the landing route group in turbo inputs and widen platform…
waleedlatif1 Nov 9, 2026
72ee4c9
docs(platform): bring agent guidance up to the product cutover
waleedlatif1 Nov 9, 2026
31b07d4
fix(platform): resolve product redirects from one route table
waleedlatif1 Nov 9, 2026
8a1aed8
refactor(desktop): remove the workspace-keyed desktop activity chain
waleedlatif1 Nov 9, 2026
76a9c33
refactor(copilot): remove the workflow copilot chat create and delete…
waleedlatif1 Nov 9, 2026
c45e1b4
refactor(settings): drop the legacy organization settings section res…
waleedlatif1 Nov 9, 2026
2b6f030
refactor(workspaces): read the workspace shell through an application…
waleedlatif1 Nov 9, 2026
15286a9
fix(platform): one SessionProvider for every root, so checkout return…
waleedlatif1 Nov 9, 2026
3edfee4
fix(platform): read browser storage hydration-safely instead of hidin…
waleedlatif1 Nov 9, 2026
1a0b508
fix(platform): ask before unloading while a workspace upload sends
waleedlatif1 Nov 9, 2026
b9e1c49
feat(platform): make fixture mode a build-time switch
waleedlatif1 Nov 9, 2026
b749eda
ci(platform): run the fixture checks against a fixture production build
waleedlatif1 Nov 9, 2026
66da8d9
Merge branch 'wip/fx-session' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
d5a2d34
refactor(workflow-editor): read the reference scope from the live edi…
waleedlatif1 Nov 9, 2026
bb0cf4d
Merge branch 'wip/fx-orgs' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
2799c53
test(e2e): wait for hydration and frames instead of retrying input or…
waleedlatif1 Nov 9, 2026
fa590eb
test(platform): sign in once per person without waiting out the rate …
waleedlatif1 Nov 9, 2026
50cf473
test(platform): keep destructive live checks off the shared seed, and…
waleedlatif1 Nov 9, 2026
3cc75e6
test(e2e): cover a pending SSO save and a one-time SCIM token in the …
waleedlatif1 Nov 9, 2026
20e7b70
test(e2e): scope SCIM sync status to its page, and prove a denied cha…
waleedlatif1 Nov 9, 2026
4ee9223
test(e2e): drop dev-server budgets the production-build suites no lon…
waleedlatif1 Nov 9, 2026
5a8a879
test(platform): isolate route resolution from the shell-scope seam it…
waleedlatif1 Nov 9, 2026
2844d77
Merge branch 'wip/fx-fixtures' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
c6923f9
chore(cleanup): delete legacy modules, exports and styles the cutover…
waleedlatif1 Nov 9, 2026
655c1d5
Merge branch 'wip/fx-tests' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
3e4ac58
refactor(platform): fold Home's hydration gate into useHiddenHomeWidgets
waleedlatif1 Nov 9, 2026
423cdf0
chore(platform): drop orphaned table view types and stale audit entries
waleedlatif1 Nov 9, 2026
57bc397
chore(checks): name the file page's current gateways in the tool-regi…
waleedlatif1 Nov 9, 2026
bc8921d
Merge branch 'wip/fx-parity' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
8383d55
Merge branch 'wip/fx-cleanup' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
57c1fa1
refactor(platform): record workspace visits without the workspace que…
waleedlatif1 Nov 9, 2026
fe2c01a
chore(api): drop the orphaned copilot chats list route
waleedlatif1 Nov 9, 2026
33735d6
fix(platform): answer 404 for a workspace the viewer cannot open befo…
waleedlatif1 Nov 9, 2026
2f628e3
chore(checks): shrink the test-type baseline for the table view test …
waleedlatif1 Nov 9, 2026
e0c51ca
test(cleanup): drive chat cleanup cases through surviving delete paths
waleedlatif1 Nov 9, 2026
7f1e97b
Merge branch 'wip/fx-chat-cleanup-test' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
26a7c97
refactor(home): remove suggested actions
emir-karabeg Nov 9, 2026
4c3cdad
chore(chat): drop an unused import from the browser session
emir-karabeg Nov 9, 2026
9d9dcb8
revert(platform): offer Reconnect only on an account that can reconnect
waleedlatif1 Nov 9, 2026
5b97c03
refactor(home): remove the Workspaces widget again, as the design has it
waleedlatif1 Nov 9, 2026
4335175
fix(composer): paint nothing in a workspace submenu until its resourc…
waleedlatif1 Nov 9, 2026
bc279e2
docs(platform): mark Suggested actions and the Home Workspaces widget…
waleedlatif1 Nov 9, 2026
fc4e9eb
fix(platform): keep the branded not-found page for a workspace the vi…
waleedlatif1 Nov 9, 2026
8fe92df
Merge branch 'wip/em-home' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
de85770
fix(platform): paint nothing while settings, credentials and paged li…
waleedlatif1 Nov 9, 2026
f20bc3f
fix(links): restore Emir's quiet search and action order in the Links…
waleedlatif1 Nov 9, 2026
e5f5fd8
refactor(emcn): drop the bar IconButton size and line TextArea for Em…
waleedlatif1 Nov 9, 2026
1dc31d5
revert(emcn): restore Emir's composer, data display and summary styling
waleedlatif1 Nov 9, 2026
0dd5e32
feat(checks): fail loading copy, unreasoned variants and unreasoned a…
waleedlatif1 Nov 9, 2026
1fde519
Merge branch 'wip/em-style' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
7a3116a
chore(platform-design): drop the resource-menu loading-copy owner the…
waleedlatif1 Nov 9, 2026
3e49967
feat(platform): read and edit live credentials in the credential page…
waleedlatif1 Nov 9, 2026
228a868
feat(platform): give workspace Integrations app pages the example pag…
waleedlatif1 Nov 9, 2026
455c89b
feat(platform): list the workspace catalog and credentials on the mem…
waleedlatif1 Nov 9, 2026
d81f4ee
Merge branch 'wip/em-integrations' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
45c3fd6
fix(platform): keep fixture query state out of live links and the liv…
waleedlatif1 Nov 9, 2026
9717c69
fix(platform): assert Emir's button sizes in the mobile suite
waleedlatif1 Nov 9, 2026
ad312e7
fix(platform): link live credential rows and keep the member page's l…
waleedlatif1 Nov 9, 2026
f139ab7
fix(platform): hide the Dashboard, Changelog, Issues and Tests worksp…
waleedlatif1 Nov 9, 2026
d007673
fix(home): hide Needs your attention until the designer's pass
waleedlatif1 Nov 9, 2026
62bc71c
fix(home): show failed reads with the shared FailureNotice
waleedlatif1 Nov 9, 2026
db390d7
fix(platform): run every product redirect through the one route table
waleedlatif1 Nov 9, 2026
98873b6
fix(home): render the heading, composer and Recents before hydration
waleedlatif1 Nov 9, 2026
4f8f940
fix(platform): give People its own users glyph instead of Home's
waleedlatif1 Nov 9, 2026
534a304
fix(chat): drop review pending copy and restore the reconnect account…
waleedlatif1 Nov 9, 2026
b179881
fix(settings): paint nothing while Slack, admin and audit reads run
waleedlatif1 Nov 9, 2026
73746ab
fix(platform): paint nothing while composer suggestions and a people …
waleedlatif1 Nov 9, 2026
c8b1fc4
fix(platform): use the ellipsis character in placeholders and pending…
waleedlatif1 Nov 9, 2026
f5be677
revert(home): restore Emir's Home subtitle under the greeting
waleedlatif1 Nov 9, 2026
dcb2ae1
revert(emcn): paint the load-more status grey unless it failed, as Em…
waleedlatif1 Nov 9, 2026
7ab1343
revert(emcn): drop the 16px coarse-pointer field text rule (24b60760ac)
waleedlatif1 Nov 9, 2026
ed5f632
revert(emcn): drop Tabs drag and keyboard reordering (4d9b95c0f9) and…
waleedlatif1 Nov 9, 2026
e6ae142
revert(emcn): drop isCompactViewport (ef43a224f4) and the composer's …
waleedlatif1 Nov 9, 2026
4df0c68
fix(workspaces): create the default workspace idempotently on the ser…
waleedlatif1 Nov 9, 2026
a812907
fix(platform): list every openable workspace in the shell and create …
waleedlatif1 Nov 9, 2026
be35245
revert(emcn): drop MenuAction onOpen, empty submenus, keepOpen and th…
waleedlatif1 Nov 9, 2026
6b2e3b1
fix(emcn-platform): drop PlatformSurface's dead systemFont and system…
waleedlatif1 Nov 9, 2026
52e00f1
fix(platform): format the files the designer-alignment changes touched
waleedlatif1 Nov 9, 2026
699250b
test(platform): hydrate the Search route over the seeded workspace list
waleedlatif1 Nov 9, 2026
85eb2e8
fix(search): keep typing before the session loads and title Search pa…
waleedlatif1 Nov 9, 2026
5deb2bb
perf(platform): read the live shell's and workspace layout's independ…
waleedlatif1 Nov 9, 2026
07f58b8
fix(platform): keep the workspace tab flag lookup typed now that ever…
waleedlatif1 Nov 9, 2026
6a1b70c
revert(composer): keep Emir's pending line in the @ and / list
waleedlatif1 Nov 9, 2026
9b0101f
fix(home): hold the greeting for hydration in the data seam, not the …
waleedlatif1 Nov 9, 2026
6d3ccc0
refactor(platform): call the landing organization's provisioning by name
waleedlatif1 Nov 9, 2026
295c3e3
fix(chat): keep MentionRequest private to the mention hooks
waleedlatif1 Nov 9, 2026
490ec23
Merge branch 'wip/fx-emir' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
c874adb
refactor(queries): delete query keys nothing reads and their invalida…
waleedlatif1 Nov 9, 2026
7b135b1
fix(platform): paint nothing while a record's access boundary is pend…
waleedlatif1 Nov 9, 2026
d53e6fc
fix(platform): tell a missing workspace record from a failed read on …
waleedlatif1 Nov 9, 2026
a24383d
fix(platform): resource lists show a failed folders read and keep row…
waleedlatif1 Nov 9, 2026
7a57d20
fix(platform): open the canvas's workflow logs filtered to that workflow
waleedlatif1 Nov 9, 2026
5e10004
fix(platform): render the Workflows, Issues and Settings tab pages pe…
waleedlatif1 Nov 9, 2026
357c8bc
fix(platform): keep the Workflows list live and offer its New command…
waleedlatif1 Nov 9, 2026
4e184a8
fix(platform): workspace Settings fails closed when the permission gr…
waleedlatif1 Nov 9, 2026
b54226e
fix(desktop): open a pre-cutover workspace chat's approval at its wor…
waleedlatif1 Nov 9, 2026
569701d
docs(api): show the workflow editor's current URL when finding a work…
waleedlatif1 Nov 9, 2026
2fb66c4
fix(platform): offer the 80% usage email on personal paid plans, as l…
waleedlatif1 Nov 9, 2026
10586dc
fix(mothership): link inbox replies to the chat's organization page
waleedlatif1 Nov 9, 2026
6722c7d
docs(platform): record table views, CSV import and the editor Copilot…
waleedlatif1 Nov 9, 2026
cf0e8e6
refactor(queries): one invalidation list for an organization's accoun…
waleedlatif1 Nov 9, 2026
69224d6
test(platform): prove the chat link and Home's hidden attention list …
waleedlatif1 Nov 9, 2026
75eb143
refactor(admin): one recent-impersonations store, read through useCli…
waleedlatif1 Nov 9, 2026
4742696
Merge branch 'wip/fx-workspaces' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
9265103
fix(navigation): redirect legacy workspace Settings Integrations and …
waleedlatif1 Nov 9, 2026
86e5ee4
refactor(platform): drop the unreachable Sim links nav warmer, non-nu…
waleedlatif1 Nov 9, 2026
a154c0f
fix(platform): pass ProductSession's props by name and seed the test'…
waleedlatif1 Nov 9, 2026
c11c535
chore(exports): unexport what the deleted query keys left without imp…
waleedlatif1 Nov 9, 2026
fdeb412
fix(platform): keep the legacy workspace pages on the table's legacy …
waleedlatif1 Nov 9, 2026
a4e8115
Merge branch 'wip/fx-shell' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
1c02f5e
test(platform): give each live check its own session and put back wha…
waleedlatif1 Nov 9, 2026
3419935
test(platform): cover legacy query redirects, first loads, approvals …
waleedlatif1 Nov 9, 2026
5aa2580
test(platform): wait on concrete states in the desktop renderer and o…
waleedlatif1 Nov 9, 2026
5709a24
test(organizations): hold one transaction open so the personal-organi…
waleedlatif1 Nov 9, 2026
ed92cea
test(platform): delete mock-everything and copy-asserting unit tests …
waleedlatif1 Nov 9, 2026
cd05749
test(ci): upload Platform suite reports on success and say which suit…
waleedlatif1 Nov 9, 2026
e0577be
fix(platform): give the fixture session the scenarios it requires
waleedlatif1 Nov 9, 2026
bf8b710
Merge branch 'wip/fx-e2e' into wip/platform-org-wiring
waleedlatif1 Nov 9, 2026
b37e2f0
chore: unexport helpers only their own modules use
waleedlatif1 Nov 9, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
8 changes: 4 additions & 4 deletions .agents/skills/add-column-type/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Decide what a cell literally holds in `user_table_rows.data` (JSONB). This drive

## Step 2: Add the icon

Create `packages/emcn/src/icons/type-{name}.tsx`, copying the geometry conventions of its siblings exactly:
Create `packages/emcn-legacy/src/icons/type-{name}.tsx`, copying the geometry conventions of its siblings exactly:

```tsx
import type { SVGProps } from 'react'
Expand Down Expand Up @@ -82,7 +82,7 @@ export function Type{Pascal}(props: SVGProps<SVGSVGElement>) {

- `viewBox='-1.75 -1.5 24 24'` is the **`type-*` family** value, not the set-wide default. Match the family.
- Center the glyph on the viewBox's optical center (**y = 10.5**, **x = 10.25**) — every sibling does, and a few tenths off is visible at `size-[14px]`.
- Export alphabetically **by component name** in `packages/emcn/src/icons/index.ts`.
- Export alphabetically **by component name** in `packages/emcn-legacy/src/icons/index.ts`.

## Step 3: Write the type file

Expand Down Expand Up @@ -118,7 +118,7 @@ Prefer set-based SQL. When the transform genuinely needs JS (`currency`'s separa

- **Import cycles.** `column-types/select.ts` imports `lib/table/select-values.ts`, so `select-values.ts` must **not** import the registry — that closes a cycle and fails at module init. Inside a type's own helper module the string literal is the implementation, not a config leak.
- **The client-safe boundary.** `registry.ts` and everything it imports must stay free of `@sim/db`, `drizzle-orm`, and `next/server` — the tables grid imports it directly. A React icon is fine (it's a component *reference*, never called server-side). Only `registry.server.ts` may touch drizzle.
- **Don't re-export the registry from `@/lib/table`.** Dozens of server modules import that barrel; routing this through it pulls `@sim/emcn/icons` into all of them. Deep-import `@/lib/table/column-types`.
- **Don't re-export the registry from `@/lib/table`.** Dozens of server modules import that barrel; routing this through it pulls `@sim/emcn-legacy/icons` into all of them. Deep-import `@/lib/table/column-types`.
- **`import.ts`'s `coerceValue` is a SECOND write path and is not opt-in.** Importing into a column of your type always hits it, and its `default` arm silently `String(value)`s — so a missing `case` stores text in a column whose `jsonbCast` is numeric, and then every filter and sort on that column errors in Postgres. Add a `case`, even though the switch compiles without one. (It is deliberately separate from the registry's `coerce`: an import wants an unparseable value to survive as its raw string so the row error can name it.)
- **CSV inference** is an ordered heuristic in `import.ts`, deliberately not registry-driven. A new type is not inferred from a CSV unless you extend `inferColumnType` — usually you should not, since inference cannot supply configuration (an option set, a currency code).

Expand Down Expand Up @@ -156,6 +156,6 @@ Copy `currency`'s service function and orchestration branch.

1. **`cd apps/sim && bun run type-check`** — must be clean. If any file *outside* `column-types/` errors, that file has a hardcoded type list; fix it to read the registry.
2. **Grep for leaks** — `grep -rnE "(===|!==) '{id}'|case '{id}':" apps/sim --include='*.ts' --include='*.tsx' | grep -v column-types/`. (All three forms: a plain `!==` and a `case` are how half of `currency`'s real branches are written.) Hits are expected; judge each. A hit is fine when it mounts a specific React component or encodes a genuinely one-off behavior (`json`'s mono textarea, `date`'s timezone-aware parsing). A hit is a **leak** when it restates something the registry could answer — an icon, a label, a colour, an operator set, a cast, a coercion. Leaks get a registry field, not a new branch.
3. **Run the suite** — `bun run --cwd apps/sim test lib/table 'app/workspace/[workspaceId]/tables' lib/api app/api/table app/api/v1`. Existing tests must pass **unchanged**; needing to edit one means you changed behavior for the other types.
3. **Run the suite** — `bun run --cwd apps/sim test lib/table 'app/(product)/workspace/[workspaceId]/tables' lib/api app/api/table app/api/v1`. Existing tests must pass **unchanged**; needing to edit one means you changed behavior for the other types.
4. **`bun run lint`, `bun run check:api-validation:strict`, `bun run check:client-boundary`** from the repo root.
5. **Exercise it in the running app** on a table with one column of every type: create, edit inline / in the expanded popover / in the row modal, paste from a spreadsheet, filter, sort, convert to and from other types, export CSV, undo a column delete.
4 changes: 2 additions & 2 deletions .agents/skills/add-enrichment/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ Why it matters: the cascade runner only bills (and only reads `output.cost.total
Create `apps/sim/enrichments/{id}/{id}.ts` and a barrel `index.ts`. Mirror the entries registered in `enrichments/registry.ts`.

```typescript
import { SomeIcon } from '@sim/emcn/icons'
import { SomeIcon } from '@sim/emcn-legacy/icons'
import { filterUndefined } from '@sim/utils/object'
import { normalizeDomain, splitName, str, toolProvider } from '@/enrichments/providers'
import type { EnrichmentConfig } from '@/enrichments/types'
Expand Down Expand Up @@ -111,7 +111,7 @@ export { myEnrichment } from './my-enrichment'
```

Rules:
- Keep the file **client-safe**: import only `@sim/emcn/icons`, `@sim/utils/*`, `@/enrichments/providers`, and the types. **Never import `@/tools`** here — the runner does the tool call.
- Keep the file **client-safe**: import only `@sim/emcn-legacy/icons`, `@sim/utils/*`, `@/enrichments/providers`, and the types. **Never import `@/tools`** here — the runner does the tool call.
- `buildParams` returns `null` when inputs are insufficient (provider skipped). `mapOutput` returns `null`/empty for a miss (falls through). Use `filterUndefined` when assembling optional tool params; coerce numbers explicitly (don't pass `''` to number outputs).
- Output `id`s are the keys `mapOutput` returns; output `name`s are the default column names (the user can rename them in the config).

Expand Down
2 changes: 1 addition & 1 deletion .agents/skills/add-managed-cli/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ bun run --cwd apps/sim test \
lib/execution/remote-sandbox/cli-tools-boundary.test.ts \
lib/execution/remote-sandbox/spec.test.ts \
lib/execution/remote-sandbox/resolve.test.ts \
'app/workspace/[workspaceId]/settings/components/sandboxes/utils.test.ts'
'components/settings/sections/sandboxes/utils.test.ts'
```

From the repository root:
Expand Down
38 changes: 20 additions & 18 deletions .agents/skills/add-settings-page/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
---
name: add-settings-page
description: Add a new Sim settings page, or audit existing settings pages for design-system compliance with the shared SettingsPanel layout. Use when creating a settings tab, or when asked to check/clean up settings pages so they match the design system (consistent title, header, search, spacing).
description: Add or audit the account and self-hosted settings pages that use SettingsPanel. Use implement-platform for Platform organization and workspace Settings.
---

# Settings Page (add / audit)

For Platform Settings (`apps/sim/app/(product)/**`, `apps/sim/platform/**`), use [implement-platform](../implement-platform/SKILL.md). In a mixed request, apply the steps below only to the account and self-hosted settings.

Settings page chrome (header bar, scroll region, content column, nav-driven
title + description) is owned by the `settings/[section]/layout.tsx` shell. Each
title + description) is owned by `StandaloneSettingsShell`, which the account and
self-hosted `settings/layout.tsx` mount. Each
page renders through **`SettingsPanel`**, which registers the page's header data
(actions, search, back) with that shell and renders only the body. The full
convention lives in `.claude/rules/sim-settings-pages.md` — read it first; this
skill is the procedure.

Key paths:
- Chrome shell: `apps/sim/app/workspace/[workspaceId]/settings/[section]/layout.tsx` (`SettingsHeaderShell`)
- Chrome shell: `apps/sim/components/settings/standalone-settings-shell.tsx` (`SettingsHeaderShell` from `settings-header.tsx`), mounted by `apps/sim/app/(site)/account/settings/layout.tsx` and `apps/sim/app/(site)/selfhost/settings/layout.tsx`
- `SettingsPanel` registrar: `apps/sim/components/settings/settings-panel.tsx`
- Nav metadata (titles + descriptions): `apps/sim/components/settings/navigation.ts`
- Section switch + provider: `apps/sim/app/workspace/[workspaceId]/settings/[section]/settings.tsx`
- Pages: `apps/sim/app/workspace/[workspaceId]/settings/components/<name>/<name>.tsx` and EE pages under `apps/sim/ee/<feature>/components/`
- Section switch: `apps/sim/components/settings/account-settings-renderer.tsx` and `selfhost-settings-renderer.tsx`
- Pages: `apps/sim/components/settings/sections/<name>/<name>.tsx` and EE pages under `apps/sim/ee/<feature>/components/`

## Mode A — Add a new settings page

Expand All @@ -27,10 +30,10 @@ Key paths:
product voice per `.claude/rules/constitution.md`). Set gating flags
(`requiresHosted`, `requiresEnterprise`, …) on `unified`, and add `planes` only if the
section also exists on a standalone plane.
2. **Wire the switch.** Register the module in `SECTION_MODULES`
(`settings/section-warmers.ts`), then add
`const X = dynamic(() => SECTION_MODULES.x().then((m) => m.X))` and its case in the
`effectiveSection` switch in `settings/[section]/settings.tsx`.
2. **Wire the switch.** In the plane's renderer (`account-settings-renderer.tsx` or
`selfhost-settings-renderer.tsx`), add
`const X = dynamic(() => import('@/components/settings/sections/<name>/<name>').then((m) => m.X))`
and its branch.
3. **Build the body inside `SettingsPanel`** per the rule's canonical page shape:
`actions`, `search`, `children`, modal siblings in a fragment.
4. **If the page has editable state**, wire the shared save/discard stack exactly as in
Expand All @@ -45,28 +48,27 @@ For each page component, confirm the checklist in `.claude/rules/sim-settings-pa
Each grep lists candidates; review every match against the expected ones named below.

1. Find hand-rolled shells that should be `SettingsPanel`:
`git grep -n "flex h-full flex-col bg-\[var(--bg)\]" -- 'apps/sim/**/settings/**' 'apps/sim/ee/'`
— expected matches: the workspace and organization `settings/layout.tsx` shells and the
shared header shell (`components/settings/settings-header.tsx`); an entitlement/loading gate
is also fine. `CredentialDetailLayout` (the `settings/secrets/[credentialId]` exception) is
`git grep -n "flex h-full flex-col bg-\[var(--bg)\]" -- 'apps/sim/**/settings/**' 'apps/sim/ee/' ':(exclude)apps/sim/platform/**'`
— expected match: the shared header shell (`components/settings/settings-header.tsx`); an
entitlement/loading gate is also fine. `CredentialDetailLayout` (the `settings/secrets/[credentialId]` exception) is
an exempt hand-rolled shell outside these pathspecs. A detail sub-view is never a match: it
passes `back={{ text, icon: ArrowLeft, onSelect }}` to `SettingsPanel`. Anything else is a
violation: render it through `SettingsPanel`.
2. Find hand-rolled title blocks:
`git grep -n "text-\[var(--text-body)\] text-lg" -- 'apps/sim/**/settings/**' 'apps/sim/ee/'`
`git grep -n "text-\[var(--text-body)\] text-lg" -- 'apps/sim/**/settings/**' 'apps/sim/ee/' ':(exclude)apps/sim/platform/**'`
— the only title is the `<h1>` in `settings-header.tsx`; a non-heading value at that size
(e.g. the credit balance in `ee/organization-usage/components/usage-credits.tsx`) is fine.
(e.g. a metric value in `components/settings/sections/mothership/mothership.tsx`) is fine.
3. Find literal pixel text sizes (should be 0 — see "Text Scale" in
`.claude/rules/sim-styling.md`):
`git grep -nE "text-\[1[0-8]px\]" -- 'apps/sim/**/settings/**' 'apps/sim/ee/'`.
`git grep -nE "text-\[1[0-8]px\]" -- 'apps/sim/**/settings/**' 'apps/sim/ee/' ':(exclude)apps/sim/platform/**'`.
Display type above the scale (`text-[40px]` hero headings) is deliberate and out of
scope.
4. Confirm each page imports `SettingsPanel` and that its registry entry has an
accurate `description` of consistent length with its peers.
- Editable pages: confirm Save/Discard go through `saveDiscardActions()` and
dirty is wired via `useSettingsUnsavedGuard` (called before early-return
gates) — flag any hand-rolled Save button, `beforeunload`, or unsaved modal.
`git grep -n "beforeunload" -- 'apps/sim/**/settings/**' 'apps/sim/ee/' 'apps/sim/components/settings/' ':(exclude,glob)**/*.test.*'`
`git grep -n "beforeunload" -- 'apps/sim/**/settings/**' 'apps/sim/ee/' 'apps/sim/components/settings/' ':(exclude)apps/sim/platform/**' 'apps/sim/hooks/use-settings-browser-navigation.ts' ':(exclude,glob)**/*.test.*'`
should only hit the centralized `use-settings-browser-navigation.ts`.
5. Fix each finding with the smallest structural change that satisfies the checklist;
do not touch handlers, state, queries, or gate returns. A pixel-size fix swaps
Expand All @@ -81,7 +83,7 @@ Read "The resource row" in `.claude/rules/sim-settings-pages.md` first — it is
contract. Then, per page:

1. Find hand-rolled rows:
`git grep -n "truncate text-\[var(--text-body)\] text-sm" -- 'apps/sim/app/workspace/' 'apps/sim/ee/'`
`git grep -n "truncate text-\[var(--text-body)\] text-sm" -- 'apps/sim/components/' 'apps/sim/ee/'`
Every match outside `settings-resource-row.tsx` is either a row to migrate or a
genuinely different shape (multi-line body, tabular columns, a grid) that stays
bespoke — decide which, and say so.
Expand Down
2 changes: 1 addition & 1 deletion .agents/skills/cleanup/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Run these in parallel on the parsed `scope`:
3. `/you-might-not-need-a-callback <scope> fix=false`
4. `/you-might-not-need-state <scope> fix=false`
5. `/react-query-best-practices <scope> fix=false`
6. `/emcn-design-review <scope> fix=false`
6. Design review: route `apps/sim/platform/**` to [implement-platform](../implement-platform/SKILL.md) and existing app EMCN paths to [emcn-design-review](../emcn-design-review/SKILL.md). For a mixed diff, the same pass reviews each subset with its own contract. Both reviews are read-only and return proposals for Step 2.
7. `/you-might-not-need-url-state <scope> fix=false`
8. `/you-might-not-need-a-comment <scope> fix=false`
9. `/test-audit audit <test paths>` — read-only; only when the scope adds or changes test files (`*.test.ts(x)`, `*.integration.ts`, `**/e2e/**`, `apps/sim/scripts/test-*-e2e.ts`). First resolve a free-form scope to the concrete list of added or changed test paths (`git diff --name-only` against the scope's base) and pass those paths. It applies the authoring gate to every new or changed test and proposes deleting the ones that fail it.
Expand Down
4 changes: 2 additions & 2 deletions .agents/skills/design-taste-frontend/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ source: https://github.com/leonxlnx/taste-skill — skills/taste-skill/SKILL.md
description: Anti-slop frontend skill for landing pages, portfolios, and redesigns. The agent reads the brief, infers the right design direction, and ships interfaces that do not look templated. Real design systems when applicable, audit-first on redesigns, strict pre-flight check.
---

> **In this repo:** Tailwind 4 (CSS-first config in `apps/sim/app/_styles/globals.css`); animation via `import { motion } from 'framer-motion'` (not `motion/react`); icons from `@sim/emcn/icons`; colors through the CSS-variable tokens in `.claude/rules/sim-styling.md` (no hardcoded `text-gray-*`/hex/`zinc` utilities, no paired `dark:` utilities). This note overrides any conflicting guidance or code sample anywhere in this file. Fonts are fixed (Season body, Inter); never introduce new families, and never use Martian Mono on landing (`apps/sim/app/(landing)/CLAUDE.md`). Font weight is only `font-normal`/`font-medium`/`font-semibold`. Elevation uses the `shadow-subtle|medium|overlay|card` tokens. Type size uses named tokens, never `text-[Npx]`. Every labeled field inside a `ChipModalBody` is a `ChipModalField`. Use `bunx`, never `npx`. Do not add GSAP, Lenis, Three, or shadcn. On landing pages, motion is CSS first; an animation library stays out of the initial bundle and loads below the fold through `next/dynamic` (`apps/sim/app/(landing)/CLAUDE.md`). Landing copy and SEO follow `.claude/rules/constitution.md` and `.claude/rules/landing-seo-geo.md`.
> **In this repo:** Tailwind 4 (CSS-first config in `apps/sim/app/_styles/globals.css`); animation via `import { motion } from 'framer-motion'` (not `motion/react`); icons from `@sim/emcn-legacy/icons`; colors through the CSS-variable tokens in `.claude/rules/sim-styling.md` (no hardcoded `text-gray-*`/hex/`zinc` utilities, no paired `dark:` utilities). This note overrides any conflicting guidance or code sample anywhere in this file. Fonts are fixed (Season body, Inter); never introduce new families, and never use Martian Mono on landing (`apps/sim/app/(landing)/CLAUDE.md`). Font weight is only `font-normal`/`font-medium`/`font-semibold`. Elevation uses the `shadow-subtle|medium|overlay|card` tokens. Type size uses named tokens, never `text-[Npx]`. Every labeled field inside a `ChipModalBody` is a `ChipModalField`. Use `bunx`, never `npx`. Do not add GSAP, Lenis, Three, or shadcn. On landing pages, motion is CSS first; an animation library stays out of the initial bundle and loads below the fold through `next/dynamic` (`apps/sim/app/(landing)/CLAUDE.md`). Landing copy and SEO follow `.claude/rules/constitution.md` and `.claude/rules/landing-seo-geo.md`.

# tasteskill: Anti-Slop Frontend Skill

Expand Down Expand Up @@ -141,7 +141,7 @@ Unless the design read picks a real design system (Section 2.A), these are the d
* **NEVER** use `useState` to track continuous values driven by user input (mouse position, scroll progress, pointer physics, magnetic hover). Use Motion's `useMotionValue` / `useTransform` / `useScroll`. `useState` re-renders the React tree on every change and collapses on mobile.

### 3.C Icons
* **Icons:** in this repo, `@sim/emcn/icons` only — one family per tree, `strokeWidth` standardized. Outside this repo, pick one maintained library and standardize on it.
* **Icons:** in this repo, `@sim/emcn-legacy/icons` only — one family per tree, `strokeWidth` standardized. Outside this repo, pick one maintained library and standardize on it.

### 3.D Emoji Policy
Discouraged by default in code, markup, and visible text. Replace symbols with icon-library glyphs. **Override:** allow emojis only when the user explicitly asks for a playful / chat-style / social-native vibe - and even then use them sparingly with intent.
Expand Down
Loading