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: 21ee602
Choose a base ref
...
head repository: simstudioai/sim
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 9d44d42
Choose a head ref
  • 10 commits
  • 165 files changed
  • 5 contributors

Commits on Jul 7, 2026

  1. fix(notion): align integration with live API docs, add block retrieva…

    …l coverage (#5491)
    
    * fix(notion): align integration with live API docs, add block retrieval coverage
    
    - wire up notion_update_page in the block (was registered but unreachable — no dropdown option or subBlocks)
    - fix legacy NotionBlock outputs to cover all 17 operations, not just content/metadata
    - trim ID params (pageId, databaseId, parentId) before use in request URLs across 8 tool files
    - remove content required:true on create_page (Notion allows title-only pages)
    - remove dead unused NotionReadDatabaseParams interface
    - add notion_retrieve_block/_v2 tool for GET /v1/blocks/{id}, filling a gap in block CRUD coverage
    
    * fix(notion): second validation pass — pagination gaps, phantom outputs, dead types, regen docs
    
    - add missing startCursor/start_cursor pagination param to notion_query_database and notion_search
    - fix notion_search missing from the shared pageSize/startCursor field's operation condition in NotionBlock
    - fix NotionV2Block title/url/created_time/last_edited_time outputs rendering unconditionally for every operation instead of only the ones that return them
    - remove 153 lines of dead unused output-shape constants from types.ts
    - regenerate integration docs
    
    * fix(notion): expose retrieve-block outputs in legacy block picker
    
    type/block/archived only conditioned on notion_update_block/notion_delete_block,
    and has_children was missing entirely — Retrieve Block's payload was invisible
    in the legacy NotionBlock output picker (Greptile P1 on PR #5491).
    
    * fix(notion): document type-specific content gap on retrieve_block output
    
    block.properties (BLOCK_OUTPUT_PROPERTIES) only covers common block fields,
    not the type-specific sub-object (paragraph.rich_text, image.file, etc.) —
    that varies per block type and isn't enumerable. Documented in the
    description per Greptile P2 on PR #5491; no functional change, block: data
    already carries the full object at runtime.
    waleedlatif1 authored Jul 7, 2026
    Configuration menu
    Copy the full SHA
    61ceedc View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    56cd2cf View commit details
    Browse the repository at this point in the history
  3. fix(tables): server-authoritative run badge, tail SSE from latest, ha…

    …rden Stop-all (#5492)
    
    * fix(tables): server-authoritative run badge, tail SSE from latest, harden Stop-all
    
    * fix(tables): return null dispatchId when Stop-all cancels a run during prep
    
    * improvement(tables): co-locate dispatcher imports, stamp throttle clock only on fetch start
    
    * fix(tables): table-wide hasRunning signal for Queueing label, fail fast on seq-read errors
    
    * fix(tables): clear hasRunning on table-wide stop, refetch rows when a run resolves without a dispatch
    
    * fix(tables): don't let dispatch-cancel cleanup mask the original prep failure
    
    * fix(tables): reconcile null-dispatch runs via invalidation, not stale snapshot restore
    
    * fix(tables): widen warm-cache remount check to either query cache
    TheodoreSpeaks authored Jul 7, 2026
    Configuration menu
    Copy the full SHA
    60e3509 View commit details
    Browse the repository at this point in the history
  4. fix(tables): canonicalize date cells, render times in effective timez…

    …one (#5465)
    
    * fix(tables): canonicalize date cells, render times in effective timezone
    
    * improvement(tables): render date cells wall-clock-faithful via offset-preserved storage
    
    * fix(tables): address review — preserve midnight instants, validate calendar days, effective-zone Today
    TheodoreSpeaks authored Jul 7, 2026
    Configuration menu
    Copy the full SHA
    619e912 View commit details
    Browse the repository at this point in the history
  5. fix(api-block): stop spoofing a browser fingerprint on outbound HTTP …

    …requests (#5496)
    
    * fix(api-block): stop spoofing a browser fingerprint on outbound HTTP requests
    
    getDefaultHeaders() sent a Chrome User-Agent, a Referer pointing at Sim's
    own app, and mismatched Sec-Ch-Ua client hints on every API block request.
    Atlassian's Jira/Confluence Cloud REST API (and other browser-aware
    anti-CSRF/bot-defense layers) reject requests carrying a browser
    User-Agent with 403 "XSRF check failed", even with a valid Basic-auth
    header and X-Atlassian-Token: no-check set.
    
    Default headers now identify honestly as Sim, matching how other HTTP
    clients (curl, Postman, axios) behave. User-supplied headers still
    override any default.
    
    * fix(testing): sync shared tool-tester mock headers with new defaults
    
    createMockHeaders in the shared @sim/testing tool-tester builder still
    hardcoded the old Chrome UA / Referer / Sec-Ch-Ua fallback values. It was
    unreachable in current tests but would silently diverge from production
    getDefaultHeaders() for any future test hitting its fallback path.
    waleedlatif1 authored Jul 7, 2026
    Configuration menu
    Copy the full SHA
    858f7d2 View commit details
    Browse the repository at this point in the history

Commits on Jul 8, 2026

  1. fix(copilot): don't surface custom blocks whose definition was deleted (

    #5498)
    
    * fix(copilot): keep custom blocks out of the VFS static component cache so a deleted definition doesn't linger
    
    * fix(copilot): drop deleted-definition custom blocks from a workflow's state so the copilot can't see unrenderable blocks
    
    * fix(copilot): don't strip placed custom blocks when the definition load fails (null vs empty set)
    
    * refactor(copilot): drop unreachable static-cache custom-block filter
    
    The VFS static cache is only ever built by materialize(), which runs
    outside any custom-block overlay (the overlay is scoped to edit_workflow
    / get_blocks_metadata, neither of which materializes the VFS). So
    getAllBlocks() there always returns first-party blocks only and no
    custom block can be frozen into the cache. Removed the dead guard.
    TheodoreSpeaks authored Jul 8, 2026
    Configuration menu
    Copy the full SHA
    aad2544 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    41fdcdb View commit details
    Browse the repository at this point in the history
  3. feat(db): auto-apply tracked script data migrations in db:migrate (#5497

    )
    
    * feat(db): auto-apply tracked script data migrations in db:migrate
    
    * fix(db): reset session lock_timeout before script migrations, guard journal insert
    
    * improvement(db): re-verify advisory-lock session before script migrations
    TheodoreSpeaks authored Jul 8, 2026
    Configuration menu
    Copy the full SHA
    12fb4a9 View commit details
    Browse the repository at this point in the history
  4. improvement(landing): homepage redesign with live hero and real platf…

    …orm UI feature cards (#5408)
    
    * improvement(landing): homepage redesign with live hero and real platform UI feature cards
    
    * improvement(landing): build-card workflow showcase, real Logs UI monitor window, proportional feature cards
    
    - Build card: replace the Mothership chat loop with a static left-to-right
      support-triage workflow showcase (two triggers converging on a triage agent,
      fanning out to Linear/Slack/Gmail/Tables) on the hero's solid --surface-3
      stage, with the goo cycle loader phasing in the bottom-left corner; the chat
      animation component stays parked in build-callout/components for reuse
    - Monitor card: swap the floating logs panel for the REAL platform Logs page
      captured as a full window (new capture-logs-ui pipeline), framed and
      positioned identically to the Context card, over a new canyon backdrop
    - Feature cards scale like Cursor's: media stages are aspect-locked
      (3:2 desktop, 4:3 stacked) instead of fixed-height, and the UI-window
      callouts use percentage insets so the whole composition scales
      proportionally with the browser
    - Eyebrow chips relocate into the copy column above the title on stacked
      breakpoints instead of overlapping the full-width media
    - Extract the hero stage's block card for reuse; export the horizontal
      smoothstep edge helper; drop the unused formation-graph and
      logs-table-preview components
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    
    * fix(landing): use surface-hover token for voice input button
    
    Matches the token already used by its sibling composer buttons instead of a raw hex hover color.
    
    * fix(landing): restore SandboxWorkspacePermissionsProvider for the capture harness
    
    Staging removed the sandbox provider as unused when the academy pages were
    deleted (#5388), but the landing-preview capture route committed on this
    branch imports it - the branch failed to compile after rebasing. Restore the
    lightweight provider with its consumer documented.
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    
    * fix(landing): satisfy HydrationState type in capture harness
    
    The mock hydration state set by the readme-tour-capture route was missing
    the required requestId/error fields added to HydrationState, breaking the
    production typecheck.
    
    * fix(landing): address Greptile/Cursor review findings
    
    - hero.tsx: object-top-left isn't a real Tailwind v3 utility, so the crop
      fell back to center; use object-left-top.
    - hero-workflow-stage.tsx: byId/builtIds were rebuilt on every render,
      including every drag pointermove frame; hoist the STAGE_BLOCKS lookup to
      module scope and memoize builtIds on builtCount.
    - hero-platform-loop.tsx: prefers-reduced-motion was only read once on
      mount, so toggling it mid-loop didn't stop the scheduled animation;
      listen for the media query's change event like BuildChatAnimation does.
    - landing-preview/page.tsx and readme-tour-capture/[workspaceId]/page.tsx:
      both are dev/preview-only scaffolds (one explicitly "local-only... delete
      before committing") that were reachable in production with no auth guard.
      404 them outside of production instead of leaving them open.
    
    * fix(landing): reset fading when reduced motion cuts the loop short
    
    showFinished (added when wiring up the prefers-reduced-motion change
    listener) set the finished phase but left fading true if the preference
    flipped mid reset-fade, leaving HeroChatLoop stuck at opacity-0.
    
    * fix(landing): sync reduced-motion mid-reply in HeroChatLoop
    
    The word-reveal effect only checked prefers-reduced-motion once per
    showReply transition. If HeroPlatformLoop's showFinished set phase to
    'reply' while it was already 'reply' (no re-render, no dependency change),
    the running stream interval kept ticking at normal speed instead of
    snapping to the full reply. Listen for the media query's change event,
    mirroring the fix already applied to HeroPlatformLoop and BuildChatAnimation.
    
    * fix(landing): sync reduced-motion mid-entrance in HeroStat
    
    HeroStat's staggered count-up entrance only checked prefers-reduced-motion
    once on mount, unlike the hero loops in this PR that now listen for the
    media query's change event. Toggling the preference mid-entrance left the
    scheduled timers/RAF running instead of snapping to the settled value.
    
    * fix(landing): stop double-seeding query cache in capture harness
    
    seed(queryClient) ran inside a useState lazy initializer, a render-phase
    side effect that Strict Mode invokes twice. Replace it with a ref guard so
    the store mutation runs exactly once, still synchronously before first
    paint. Flagged across three Greptile review rounds.
    
    * fix(landing): type the capture harness log filter seed as LogFilters
    
    qc.setQueryData(logKeys.list(...)) requires LogFilters, but the inline
    seed object had no annotation and timeRange inferred as string, which
    TypeScript widened past the TimeRange literal union. Failed prod build
    type-check. Also swap the stray `sandbox` prop back to `embedded` to
    match Workflow's actual prop name.
    
    ---------
    
    Co-authored-by: andresdjasso <andresdjasso@users.noreply.github.com>
    Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
    Co-authored-by: waleed <walif6@gmail.com>
    4 people authored Jul 8, 2026
    Configuration menu
    Copy the full SHA
    4aba3dc View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    9d44d42 View commit details
    Browse the repository at this point in the history
Loading