v0.9.29: tool credentials association fix, search mcp improvements, e… · simstudioai/sim@10de126 · GitHub
Skip to content

Commit 10de126

Browse files
authored
v0.9.29: tool credentials association fix, search mcp improvements, eMudhra CA distrust
2 parents 15e816b + 583e0ea commit 10de126

112 files changed

Lines changed: 1797 additions & 153 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.

‎.agents/skills/add-tools/SKILL.md‎

Lines changed: 5 additions & 2 deletions

‎.agents/skills/validate-integration/SKILL.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ For **each tool** in `tools.access`:
217217
- Long text/content → `long-input`
218218
- True/false → `switch` (a Yes/No `dropdown` only when the tool needs a third "unset" state)
219219
- Credentials → `oauth-input` with correct `serviceId`
220+
- Every tool with a `credential`/`oauthCredential` param declares `oauth: { required: true, provider }` matching that `serviceId`, plus `credentialKind: 'service-account'` when only service accounts are supported
220221
- [ ] Dropdown `value: () => 'default'` is set for dropdowns with a sensible default
221222
- [ ] Every `short-input`, `long-input`, `code`, and selector subBlock has a `placeholder` — including
222223
password fields (`Enter your API key`). Formatted values show the shape

‎apps/desktop/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"@types/node": "24.19.2",
5555
"@types/react": "^19",
5656
"@types/react-dom": "^19",
57-
"electron": "43.5.0",
57+
"electron": "43.8.1",
5858
"electron-builder": "26.15.3",
5959
"esbuild": "0.28.2",
6060
"jsdom": "^26.0.0",

‎apps/realtime/src/bootstrap.ts‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,18 @@
33
* loading the Socket.IO server, whose modules (`@/env`, DB preflight) read env
44
* at import time. See `@sim/runtime-secrets`.
55
*/
6+
import { createLogger } from '@sim/logger'
67
import { loadRuntimeSecrets } from '@sim/runtime-secrets'
8+
import { distrustCompromisedRoots } from '@sim/security/tls-trust'
79

10+
const tlsTrust = distrustCompromisedRoots()
811
await loadRuntimeSecrets()
12+
const logger = createLogger('Bootstrap')
13+
if (tlsTrust.unsupported || tlsTrust.error) {
14+
logger.error('Could not distrust compromised CA roots', tlsTrust)
15+
} else if (tlsTrust.removed.length > 0) {
16+
logger.info('Distrusted compromised CA roots', { removed: tlsTrust.removed })
17+
}
918
/**
1019
* Pin this process to the `realtime` DB role — covering both the realtime
1120
* `socketDb` pool and the shared `@sim/db` client used by handlers, preflight,
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { readRecallChatsContract } from '@/lib/api/contracts/mothership-chat-recall'
2+
import {
3+
defineInternalJsonRoute,
4+
internalOrchestrationErrorPolicy,
5+
internalRateLimits,
6+
} from '@/lib/api/server/routes'
7+
import { internalCopilotAuth } from '@/lib/mothership/auth/internal'
8+
import {
9+
RECALL_CHATS_AUDIENCE,
10+
readRecallChats,
11+
readRecallChatsOperation,
12+
} from '@/lib/mothership/chat/application/read-recall-chats'
13+
14+
export const POST = defineInternalJsonRoute({
15+
contract: readRecallChatsContract,
16+
auth: internalCopilotAuth(RECALL_CHATS_AUDIENCE, { organization: true }),
17+
operation: readRecallChatsOperation,
18+
rateLimit: internalRateLimits.none({
19+
reason: "Authenticated worker lists the chat owner's other live chats it may read back.",
20+
}),
21+
errorPolicy: internalOrchestrationErrorPolicy,
22+
mapInput: ({ body }) => body,
23+
useCase: readRecallChats,
24+
})

‎apps/sim/bootstrap.ts‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,18 @@
33
* loading the Next.js standalone server, so application modules that read env at
44
* import time see the full configuration. See `@sim/runtime-secrets`.
55
*/
6+
import { createLogger } from '@sim/logger'
67
import { loadRuntimeSecrets } from '@sim/runtime-secrets'
8+
import { distrustCompromisedRoots } from '@sim/security/tls-trust'
79

10+
const tlsTrust = distrustCompromisedRoots()
811
await loadRuntimeSecrets()
12+
const logger = createLogger('Bootstrap')
13+
if (tlsTrust.unsupported || tlsTrust.error) {
14+
logger.error('Could not distrust compromised CA roots', tlsTrust)
15+
} else if (tlsTrust.removed.length > 0) {
16+
logger.info('Distrusted compromised CA roots', { removed: tlsTrust.removed })
17+
}
918
// `server.js` is the Next standalone build artifact, a sibling of this file in
1019
// the image; it does not exist at type-check time, so the specifier is held in a
1120
// variable to keep it out of static module resolution.

‎apps/sim/content/changelog/README.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ The [editorial and media standard](./editorial-standard.md) defines story select
1010

1111
## What earns an entry
1212

13-
A public update needs one clear benefit, verified availability, a useful next step, and at least one reviewed feature image or video in the article. The cover alone is not enough. A reader should understand what they can now do and see evidence of that capability. A smaller improvement can join a related edition; it does not need its own announcement because a technical version shipped.
13+
A public update needs one clear benefit, verified availability, a useful next step, and at least one reviewed image or video in the article. The cover alone is not enough. A reader should understand what they can now do. Product claims need independent evidence even when the lead image is a conceptual illustration. A smaller improvement can join a related edition; it does not need its own announcement because a technical version shipped.
1414

1515
Review candidates twice a week and publish when a story meets that bar. Skip an edition if there is nothing meaningful to announce. Use a separate entry for a substantial launch. Aim for one lead story and a short selection of related improvements or fixes, rather than reproducing every commit. The GitHub release link carries the complete technical history.
1616

@@ -29,7 +29,7 @@ Each new update has one folder containing its public `index.mdx` and a non-rende
2929
| Gather evidence | Feature owner | Merged PRs, release version, deployment and permission availability, and a working example |
3030
| Choose the story | Editor | One headline, the situation it helps with, and related improvements worth including |
3131
| Prepare drafts | Editor, assisted by Codex | `index.mdx` with `draft: true`, demo shot list, and social/email copy in `production.md` |
32-
| Produce media | Feature owner | Real product recording, poster, and captions for speech |
32+
| Produce media | Feature owner and editor | Real product capture, verified diagram, or original editorial illustration; poster and captions for video |
3333
| Review | Feature owner and editor | Confirm the actual feature, rollout, and media; verify links and approve consistent copy |
3434
| Deploy | Site maintainer | Merge the reviewed entry with `draft: false`; website, detail page, archive, sitemap, and RSS update together |
3535
| Distribute | Editor | Send the reviewed announcement after the public URL and demo work |

‎apps/sim/content/changelog/editorial-standard.md‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ Use this contract for the Sim drafting workflow and the final editorial review.
44

55
## Choose the right-sized story
66

7-
A standalone update needs a meaningful capability, a substantial improvement to an existing task, or an action-required notice. State what a team can do, the situation it helps with, and how the proposed media will demonstrate it.
7+
A standalone update needs a meaningful capability, a substantial improvement to an existing task, or an action-required notice. State what a team can do, the situation it helps with, and how the proposed media supports the story.
88

9-
Routine retry fixes, loading improvements, internal refactors, and small polish belong in a related edition's short Improvements or Fixes section. Keep unrelated maintenance in the technical release history. A batch of commits is not a story. Defer a batch with only supporting notes instead of padding it into a launch. An urgent breaking change needs a timely notice and a verified explanatory image when there is no useful product screen.
9+
Choose by product impact, not commit type, integration count, or ease of screenshotting. Consider Chat, Search, Files, Tables, collaboration, building and running agents, and account controls alongside integrations and models. Ask what a team can do differently, what recurring friction was removed, or what action it must take. Compare credible alternatives before choosing the lead; do not turn an implementation mechanism into a launch to create variety. Integrations can lead when their benefit is the strongest story, but operation counts alone are not a headline.
10+
11+
A substantial product fix can join a related edition's short Improvements or Fixes section. Keep routine input validation, retry handling, cancellation cleanup, internal race fixes, refactors, and small polish in the technical release history; a clearer error alone is not an action-required notice. A batch of commits is not a story. Defer a batch with only supporting notes instead of padding it into a launch. An urgent breaking change needs a timely notice and a verified explanatory image when there is no useful product screen.
1012

1113
Keep existing article URLs, original dates, and RSS identities when refining historical copy. Do not merge existing entries just to make a larger announcement. Preserve material version, permission, and rollout restrictions.
1214

@@ -28,6 +30,8 @@ Use short active sentences and familiar words. Technical identifiers, retry timi
2830

2931
Choose the format before capture. A screenshot suits a state or configuration. A 20–45 second recording suits an interaction. A clearly labeled, verified diagram suits an invisible system change. Generated art can explain a concept, but cannot stand in for product evidence.
3032

33+
An original editorial illustration can be the article's lead image when a concept is clearer than a product capture. Use Sim's restrained monochrome, painterly landscape or architectural style, with no baked-in headline, fabricated UI, or invented results. Describe it as an illustration in alt text and record its prompt, provenance, and final asset in the production brief. Independently verify the feature and rollout; artwork never establishes either. Choose the story first and the appropriate media second.
34+
3135
Every production brief records:
3236

3337
1. The exact claim and what the demonstration does not establish.

‎apps/sim/content/changelog/maintenance-workflow.md‎

Lines changed: 8 additions & 2 deletions

0 commit comments

Comments
 (0)