Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: simstudioai/sim
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 207785c
Choose a base ref
...
head repository: simstudioai/sim
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: e01bfb1
Choose a head ref
  • 6 commits
  • 12 files changed
  • 1 contributor

Commits on Jul 12, 2026

  1. feat(sidebar): add Cmd+B shortcut to toggle sidebar collapse (#5618)

    * feat(sidebar): add Cmd+B shortcut to toggle sidebar collapse
    
    * fix(sidebar): skip Cmd+B sidebar toggle inside editable fields
    
    * fix(sidebar): don't dead-zone Cmd+B on read-only editors; drop stale Mod+B ownership
    
    * chore(lint): apply biome fixes
    waleedlatif1 authored Jul 12, 2026
    Configuration menu
    Copy the full SHA
    1fe94d3 View commit details
    Browse the repository at this point in the history
  2. fix(webhooks): resolve env var references before deploy-triggered sub…

    …scription creation (#5619)
    
    * fix(webhooks): resolve env var references before deploy-triggered subscription creation
    
    Provider config fields like an API key can reference an environment
    variable via {{VAR_NAME}}. The interactive trigger-save route already
    resolved these before calling a provider's createSubscription, but the
    async deployment-outbox path (workflow deploy -> saveTriggerWebhooksForDeploy
    -> createExternalWebhookSubscription) did not, so the literal unresolved
    {{VAR_NAME}} string was sent to the provider as the credential and
    rejected. Resolve env vars in createExternalWebhookSubscription itself so
    both callers behave the same; the persisted providerConfig keeps storing
    the unresolved template, only the outbound call gets the resolved value.
    
    * fix(webhooks): guard against a non-string workspaceId when resolving env vars
    
    workflow.workspaceId as string | undefined was an unchecked cast on a
    Record<string, unknown> — if a caller ever passed a workflow-like object
    where workspaceId isn't actually a string, workspace-scoped {{VAR}}
    references would silently stay unresolved and the provider would receive
    the literal template as the credential, reproducing the exact class of bug
    this change exists to fix. Replaced with a runtime typeof check that falls
    back to undefined (personal-env-only resolution) instead of forwarding an
    unvalidated value.
    waleedlatif1 authored Jul 12, 2026
    Configuration menu
    Copy the full SHA
    f9b09ec View commit details
    Browse the repository at this point in the history
  3. fix(ashby): parse alternateEmailAddresses and socialLinks into arrays…

    … before dispatch (#5621)
    
    * fix(ashby): parse alternateEmailAddresses and socialLinks into arrays before dispatch
    
    The Ashby create_candidate and update_candidate tools require
    alternateEmailAddresses (string[]) and socialLinks ({type,url}[]) as
    JSON arrays in the request body, guarded by Array.isArray checks. The
    block collected both through long-input text fields but forwarded the
    raw string straight through to tools.config.params, so Array.isArray
    was always false and both fields were silently dropped on every
    create/update call.
    
    Parse them in tools.config.params (execution-time, after variable
    resolution) using the same comma-separated-or-JSON-array pattern used
    elsewhere in the codebase (see blocks/findymail.ts), and add wandConfig
    to both fields so the AI wand can generate well-formed input for them.
    
    * fix(ashby): drop json-object generationType from array-shaped wandConfig fields
    
    generationType: 'json-object' makes the wand API append an instruction
    that the response must start with { and end with }, but
    alternateEmailAddresses/socialLinks parse a raw JSON array or
    comma-separated string, not an object. A wand-generated
    {"emails":[...]}-shaped response would get comma-split into invalid
    email fragments by parseStringListInput, and an object-wrapped
    socialLinks response would get silently dropped by parseSocialLinksInput
    returning []. Matches the existing array-field wandConfig pattern in
    blocks/findymail.ts, which never sets generationType and relies on the
    prompt text alone.
    
    * fix(ashby): remove the non-functional candidateId filter from list_applications
    
    Live-verified against Ashby's application.list endpoint: passing
    candidateId (including a nonexistent UUID) returns identical, unfiltered
    results either way — Ashby's API silently ignores this body field
    entirely. Sending it gave users the false impression of filtering by
    candidate while actually returning every application. Removed the param,
    the tool type, and the block's filterCandidateId subBlock/wiring/input.
    The correct path for a candidate's applications is ashby_get_candidate's
    applicationIds field.
    
    * fix(ashby): add subblock-id migration for the removed filterCandidateId field
    
    The subblock ID stability CI check correctly caught that removing
    filterCandidateId without a migration entry would silently drop the
    value on already-deployed workflows. Added the standard _removed_ mapping,
    following the same pattern already used for this block's prior removals
    (emailType, phoneType, expandApplicationFormDefinition,
    expandSurveyFormDefinitions).
    waleedlatif1 authored Jul 12, 2026
    Configuration menu
    Copy the full SHA
    5dec4f3 View commit details
    Browse the repository at this point in the history
  4. fix(global-commands): use isContentEditable for the editable guard (#…

    …5623)
    
    * fix(global-commands): use isContentEditable for the editable guard
    
    * chore(lint): keep focusable span in editable-guard test with biome-ignore
    waleedlatif1 authored Jul 12, 2026
    Configuration menu
    Copy the full SHA
    b20bbdc View commit details
    Browse the repository at this point in the history
  5. fix(ashby): fail loudly instead of silently dropping malformed social…

    …Links (#5624)
    
    * fix(ashby): fail loudly instead of silently dropping malformed socialLinks
    
    parseSocialLinksInput returned [] for any non-JSON-parseable input, and
    tools.config.params only sets result.socialLinks when the parsed array is
    non-empty — so a malformed socialLinks string (user typo, or a wand
    response that didn't follow the JSON-array prompt) silently omitted the
    field entirely. The Ashby candidate.update call then succeeded without
    applying the requested links, with no error surfaced to the workflow
    author. Throw a clear error instead, matching the existing
    throw-on-invalid-JSON pattern used elsewhere (e.g. blocks/airtable.ts).
    
    * fix(ashby): use getErrorMessage instead of inline error-message extraction
    
    check:utils bans the e instanceof Error ? e.message : fallback pattern in
    favor of getErrorMessage(e, fallback?) from @sim/utils/errors.
    waleedlatif1 authored Jul 12, 2026
    Configuration menu
    Copy the full SHA
    29cf3e7 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    e01bfb1 View commit details
    Browse the repository at this point in the history
Loading