Repository navigation
v0.9.43: Sim links from search and file shares, synced org chart, CLI recovery guidance, image and video catalog refresh - #9660
Conversation
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>
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.
…g the search incomplete (#9635)
…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
…t lint from apply warnings (#9645)
…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
* fix(media): preserve video settings and Google URI delivery * fix(image): keep legacy prompt documentation accurate
|
@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 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.
|
@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`, | |||
There was a problem hiding this comment.
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!
There was a problem hiding this comment.
1 issue found across 370 files
Confidence score: 4/5
- In
dispatcher.ts, the computed leading sort key prevents thelastDispatchedAtindex 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`, | |||
There was a problem hiding this comment.
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>
…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.
|
@cubic-dev-ai review this PR |
@waleedlatif1 I have started the AI code review. It will take a few minutes to complete. |
There was a problem hiding this comment.
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
Uh oh!
There was an error while loading. Please reload this page.