Skip to content

v0.9.43: Sim links from search and file shares, synced org chart, CLI recovery guidance, image and video catalog refresh - #9660

Open
waleedlatif1 wants to merge 60 commits into
mainfrom
release/v0.9.43
Open

waleedlatif1 wants to merge 60 commits into
mainfrom
release/v0.9.43

Conversation

@waleedlatif1

@waleedlatif1 waleedlatif1 commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator

dependabot Bot and others added 30 commits November 3, 2026 09:25
Bumps the actions group with 7 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [useblacksmith/checkout](https://github.com/useblacksmith/checkout) | `1.8.1` | `1.8.2` |
| [actions/setup-java](https://github.com/actions/setup-java) | `5.7.0` | `6.1.0` |
| [actions/setup-dotnet](https://github.com/actions/setup-dotnet) | `5.4.0` | `6.0.0` |
| [actions/setup-go](https://github.com/actions/setup-go) | `6.5.0` | `7.0.0` |
| [tailscale/github-action](https://github.com/tailscale/github-action) | `4.2.0` | `4.4.0` |
| [oras-project/setup-oras](https://github.com/oras-project/setup-oras) | `2.0.2` | `2.0.3` |
| [helm/chart-releaser-action](https://github.com/helm/chart-releaser-action) | `1.7.0` | `1.9.0` |



Updates `useblacksmith/checkout` from 1.8.1 to 1.8.2
- [Changelog](https://github.com/useblacksmith/checkout/blob/main/CHANGELOG.md)
- [Commits](useblacksmith/checkout@25227e6...2b9fe87)

Updates `actions/setup-java` from 5.7.0 to 6.1.0
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](actions/setup-java@b6effb0...b843ebf)

Updates `actions/setup-dotnet` from 5.4.0 to 6.0.0
- [Release notes](https://github.com/actions/setup-dotnet/releases)
- [Commits](actions/setup-dotnet@26b0ec1...a98b568)

Updates `actions/setup-go` from 6.5.0 to 7.0.0
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](actions/setup-go@924ae3a...b7ad1da)

Updates `tailscale/github-action` from 4.2.0 to 4.4.0
- [Release notes](https://github.com/tailscale/github-action/releases)
- [Commits](tailscale/github-action@d1b6cd2...064b105)

Updates `oras-project/setup-oras` from 2.0.2 to 2.0.3
- [Release notes](https://github.com/oras-project/setup-oras/releases)
- [Commits](oras-project/setup-oras@005458a...5e2f248)

Updates `helm/chart-releaser-action` from 1.7.0 to 1.9.0
- [Release notes](https://github.com/helm/chart-releaser-action/releases)
- [Commits](helm/chart-releaser-action@cae68fe...92c6b97)

---
updated-dependencies:
- dependency-name: useblacksmith/checkout
  dependency-version: 1.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: actions/setup-java
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: actions/setup-dotnet
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: actions/setup-go
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: tailscale/github-action
  dependency-version: 4.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: oras-project/setup-oras
  dependency-version: 2.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: helm/chart-releaser-action
  dependency-version: 1.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…-rag-platform (#9623)

Co-authored-by: Sim Pi Agent <pi@sim.ai>
…lows (#9622)

Co-authored-by: Sim Pi Agent <pi@sim.ai>
… Reports to Slack? (#9625)

Co-authored-by: Sim Pi Agent <pi@sim.ai>
…sting-tools (#9624)

* docs(library): update best-ai-agent-platforms-for-connecting-your-existing-tools

* Pi Babysit: address PR #9624 feedback

---------

Co-authored-by: Sim Pi Agent <pi@sim.ai>
…ny Rollout in 2026 (#9626)

* feat(library): Fastest AI Agent Platforms for Time to Value and Company Rollout in 2026

* Pi Babysit: address PR #9626 feedback

---------

Co-authored-by: Sim Pi Agent <pi@sim.ai>
* fix(search): remember the last selected view

* fix(search): target the search field in the focus test
…ger secret, gated per environment (#9632)

* chore(trigger): sync Trigger.dev env vars from the app's Secrets Manager secret, gated per environment

* fix(trigger): re-read values before flagging secrets so a rotation is never undone
* fix(admin): stop counting workflow runs on dashboard list pages

The organizations and users lists counted each entity's distinct workflow
executions alongside its spend. No entity index carries execution_id, so the
count heap-fetched every workflow ledger row in each entity's period and the
list grew past the statement timeout as the ledger grew.

- Lists and the reporting-period preview read spend only (index-only) and
  return workflowRuns: null.
- Organization detail counts runs once, total plus every actor's share in one
  GROUPING SETS scan, under a 5s budget via readLedgerBounded; past it the
  count is null and the page still loads. Former actors' runs come from the
  same scan.
- The contract makes workflowRuns nullable.

* test(admin): avoid Promise.withResolvers in the run-budget test

* fix(admin): count former actors' runs once, not once per actor

Former actors' workflow runs were the sum of their per-user counts, so a run
shared by two former actors counted twice. Group the same scan by a
former-actor flag as well and read the distinct count from it. The flag
tests membership against two uncorrelated lists, so each is hashed once.

Also drop the last non-null assertion in the organizations list and shrink
the explicit-any baseline.
…low tools (#9634)

* fix(mothership): surface the real run error for browser-settled workflow tools

* fix(mothership): clean up run logs and snapshots before the workspace in the test
* improvement(executor): make run-from-block refusals actionable

* fix(executor): name the outermost container and catch parallel children by workflow id

* chore(executor): type subflow configs in new run-from-block tests
…int findings in apply warnings (#9638)

* improvement(workflows): lint the manual-run entry check and surface lint findings in apply warnings

* improvement(workflows): describe every case where manualRunIssue is null

* docs(workflows): make the apply-operations response example a wired graph
* feat(video): expand the fal text-to-video model catalog

* fix(video): retain hosted fal receipts before delivery

* fix(video): poll nested fal models through the app queue
…s instead of answering 500 (#9639)

* fix(api): classify transient database reads and client-caused failures instead of answering 500

* fix(api): count late edge refusals per operation and map MCP list failures to 502

* fix(uploads): leave an already-consumed multipart body as a server error
…9641)

* improvement(ci): fetch only the docs acceptance revision

* improvement(ci): install only the Chromium runtime each suite uses

* improvement(ci): keep library media on the landing acceptance path
* feat(people): add a synced organization chart

* fix(people): keep provisioning responsive during directory sync

* fix(people): refresh published charts and isolate sync retries

* fix(people): preserve sync drafts and label paged search
Run push validation independently of the deployment queue, and require the exact trusted successful run before migrations. Preserve deployment and release ordering.

Validate the admission protocol with real Bash/jq boundary cases and guard mutations.
…9643)

* improvement(ci): partition extension acceptance by fixture lifecycle

* docs(ci): describe the three extension acceptance groups
…pe refusal (#9646)

* improvement(cli): recovery guidance on every parse error and body-shape refusal

* fix(cli): valid JSON recovery examples, short-flag siblings, root guidance, baseline
…n Search Assistant (#9647)

* improvement(search): cite public web results like connected sources in Search Assistant

* fix(search): retarget unrelated-tool fixtures, type the web citation test, mark chat open-world
…st audit (#9650)

- CLI parse-error guidance branches on commander's error codes, reads hidden
  siblings through Help.visibleCommands, and names a misplaced positional
  only when unambiguous (no unknown option, one missing required flag, one
  extra operand); the hint uses the option's long flag, not '-w,'
- body-variant shape errors use isRecordLike, compute the shape once, and
  show a generic example
- workflow lint builds sections eagerly, derives hasWorkflowLintIssues from
  them, and phrases Run-button advice from the issue's fields
- shared quotedBlockLabel; formatQuotedNameList takes a quote formatter
- grep marks skipped non-text files instead of threading a callback
- drop dead run-from-block loop branch and unreachable run-hook guard
- shared empty lint report test factory; tighter assertions
Reuse the existing trusted PR checkout mirror for integration jobs while retaining plain checkout for forks, pushes and the GitHub runner fallback.
…le shares (#9648)

* feat(sim-links): create or copy a Sim link from search results and file shares

* fix(sim-links): scope result shortcuts to the organization sim/ resolves, hide on failed lookups
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cubic-dev-ai review this PR

@cubic-dev-ai

cubic-dev-ai Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

@cubic-dev-ai review this PR

@waleedlatif1 I have started the AI code review. It will take a few minutes to complete.

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cubic-dev-ai review this PR

@cubic-dev-ai

cubic-dev-ai Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

@cubic-dev-ai review this PR

@waleedlatif1 I have started the AI code review. It will take a few minutes to complete.

Allow selected read-only custom-element text, preserve the initiating composer focus through deferred capture, and correct encoded organization bookmark names and legacy Sim aliases.

Retain keyboard and mouse denial coverage with real typing assertions. Four regressions reproduced on the unfixed code; final CI passed with 55 successful checks and 26 intentional skips.
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cubic-dev-ai review this PR

@cubic-dev-ai

cubic-dev-ai Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

@cubic-dev-ai review this PR

@waleedlatif1 I have started the AI code review. It will take a few minutes to complete.

@@ -661,6 +701,7 @@ export async function prepareWorkspaceFileSearchDispatch(
})
.from(fileSearchDispatchQueue)
.orderBy(
sql`(${wokenSinceDispatch} AND NOT ${ownerSlotsFull}) DESC`,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Dispatch scans the whole queue

The new leading sort key makes each dispatch pass read the whole file_search_dispatch_queue before choosing at most 100 owners. The existing index starts with lastDispatchedAt, so it cannot provide this order. Calculating ownerSlotsFull also adds an active-claim lookup for eligible owners.

During backfills or bulk file writes, choosing a small batch now gets more expensive as the queue grows. This is non-blocking, but indexed priority buckets or a stored priority would keep batch selection bounded.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 370 files

Confidence score: 4/5

  • In dispatcher.ts, the computed leading sort key prevents the lastDispatchedAt index from satisfying the ordering, so limited dispatches can still scan and sort the growing queue. Use an indexed priority or another bounded candidate strategy.
Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="apps/sim/lib/workspace-files/search/dispatcher.ts">

<violation number="1" location="apps/sim/lib/workspace-files/search/dispatcher.ts:704">
P2: This computed leading sort key prevents the `lastDispatchedAt` index from satisfying the ordering, so a limited dispatch can still scan and sort the growing queue. Use an indexed priority or another bounded candidate-selection strategy.</violation>
</file>

Note: This PR contains a large number of files. cubic selects up to 200 of the highest-priority eligible files for this review, so some files may not have been reviewed.

Turn on auto-fix | Re-trigger cubic

@@ -661,6 +701,7 @@ export async function prepareWorkspaceFileSearchDispatch(
})
.from(fileSearchDispatchQueue)
.orderBy(
sql`(${wokenSinceDispatch} AND NOT ${ownerSlotsFull}) DESC`,

@cubic-dev-ai cubic-dev-ai Bot Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: This computed leading sort key prevents the lastDispatchedAt index from satisfying the ordering, so a limited dispatch can still scan and sort the growing queue. Use an indexed priority or another bounded candidate-selection strategy.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At apps/sim/lib/workspace-files/search/dispatcher.ts, line 704:

<comment>This computed leading sort key prevents the `lastDispatchedAt` index from satisfying the ordering, so a limited dispatch can still scan and sort the growing queue. Use an indexed priority or another bounded candidate-selection strategy.</comment>

<file context>
@@ -661,6 +701,7 @@ export async function prepareWorkspaceFileSearchDispatch(
           })
           .from(fileSearchDispatchQueue)
           .orderBy(
+            sql`(${wokenSinceDispatch} AND NOT ${ownerSlotsFull}) DESC`,
             sql`${fileSearchDispatchQueue.lastDispatchedAt} ASC NULLS FIRST`,
             asc(fileSearchDispatchQueue.enqueuedAt),
</file context>
Fix with cubic

…reaped claims ahead of the rotation (#9671)

* fix(file-search): fill dispatch capacity in selection order and reap before the backfill

The claim cut ranked every selected owner's candidates by revision age, so with less capacity
than candidates a woken owner selected first could lose every slot to an older backlog selected
after it, and the claim's stamp then filed it behind the rotation. Claims now fill capacity owner
by owner in the pass's selection order (each still up to its free slots).

The backfill page ran before the reaper in the same transaction, so an owner it queued as a
reconciliation wake-up absorbed the reaper's wake-up (both writes at the transaction time) and
the released claim waited behind the rotation. The reaper now runs first; the backfill's wake-ups
leave queued owners untouched.

Tests: a two-slot pass with a woken owner against an older backlog, and a reaped claim whose
owner the backfill queues in the same pass; the capacity filler's files are deleted so the
backfill never re-queues it.

* fix(file-search): keep the dispatch pass's file-then-queue lock order

Reaping before the backfill held the owner's queue row while the backfill took FOR SHARE on its
unindexed files; a concurrent save holds its file while its trigger waits on that queue row, so the
two could deadlock. The pass runs backfill then reap again, and a wake that conflicts with a row this
transaction's backfill just stamped as a reconciliation clears the stamp, so a reaped claim stays
ahead of the rotation.
…nknown sync target (#9672)

* fix(trigger): keep secret text out of env sync errors and refuse an unknown sync target

A malformed env-vars secret failed with the JSON parser's message, which quotes the text around
the fault, and the Trigger.dev deploy prints that error to a public CI log; the error now names
only the failure. TRIGGER_ENV_SYNC_TARGETS was split on commas without trimming or validation, so
a typo or a space silently kept an environment on its old configuration; it is now parsed by
parseTriggerEnvSyncTargets, which trims entries and refuses a name with no mapped secret (by own
key, so prototype names cannot pass), and the deploy logs which path it took.

Comments now say the CLI applies synced variables when it uploads the version and that the sync
never deletes, describe the retry as every failed request, and point the worker marker at
TRIGGER_CONSTANT_VARS.

* fix(trigger): accept only the exact sync-target list the deploy workflows match

The workflows grant the secret-read credentials by matching TRIGGER_ENV_SYNC_TARGETS as an exact
comma list, so a trimmed parser could accept a padded entry the credential step skipped and fail
inside the sync instead. The parser now refuses a padded, empty, or unknown entry with a message
naming the expected format.
…the preview budget (#9673)

The enterprise issuance preflight counted the organization's billable workflow runs under the
ledger's default 60s bound, the same COUNT DISTINCT the organization detail page already caps at
5s because it can outlast the admin proxy's request timeout on a large payer. The preflight now
reads it through getBillingPeriodWorkflowRunCountWithinBudget, which reports null past the shared
WORKFLOW_RUN_COUNT_BUDGET_MS, so the preview still loads; the contract already allows null. The
over-budget classification moves next to readLedgerBounded as isLedgerReadOverBudget, shared by
both callers.
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cubic-dev-ai review this PR

@cubic-dev-ai

cubic-dev-ai Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

@cubic-dev-ai review this PR

@waleedlatif1 I have started the AI code review. It will take a few minutes to complete.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 378 files

Confidence score: 5/5

  • Automated review surfaced no issues in the provided summaries.
  • No files require special attention.

Note: This PR contains a large number of files. cubic selects up to 200 of the highest-priority eligible files for this review, so some files may not have been reviewed.

Turn on auto-fix | Re-trigger cubic

This branch was previously deployed

1 inactive deployment
Preview — 0de05d47 Deployed Nov 4, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant