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: triggerdotdev/trigger.dev
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v4.5.2
Choose a base ref
...
head repository: triggerdotdev/trigger.dev
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v4.5.3
Choose a head ref
  • 10 commits
  • 46 files changed
  • 8 contributors

Commits on Jul 9, 2026

  1. chore: retire legacy v3 dev websocket + delete legacy self-hosting do…

    …cs (#4198)
    
    Follow-up to #4194 (v3 execution app + core-helper removal). The v3
    (engine V1) is end-of-lifed and enforced off in prod, so this removes a
    self-contained slice of the remaining dead v3 code while **keeping every
    user-facing deprecation message** - a user still on v3 must still be
    told to upgrade.
    
    ## Legacy dev websocket
    
    `app/v3/handleWebsockets.server.ts` backs the `/ws` transport used
    **only** by the legacy v3 `trigger dev` CLI (v4 dev uses a different
    transport). It's now authenticate-then-close with
    `V3_DEV_DEPRECATION_MESSAGE`, so an old CLI is still told what to do -
    only the legacy `AuthenticatedSocketConnection` / `DevQueueConsumer`
    execution behind it (which can no longer run) is removed.
    
    - Deleted `app/v3/authenticatedSocketConnection.server.ts` (its only
    consumer).
    - `engineDeprecation.server.ts` and the deprecation message constants
    are untouched.
    
    ## Docs
    
    Deleted the intentionally-legacy "Docker (legacy)" self-hosting page
    (`open-source-self-hosting.mdx`) and redirected
    `/open-source-self-hosting` (+ the existing
    `/v3/open-source-self-hosting` alias) to `/self-hosting/overview`;
    repointed the two inbound links. The current `self-hosting/*` docs
    already describe the v4 (single supervisor) setup.
    
    ## Deliberately out of scope
    
    Despite the branch name, this PR does **not** touch MarQS or the
    socket.io coordinator/provider namespaces. Investigation found MarQS is
    entangled with **live v2** queue/metrics/concurrency/project-cleanup
    code (`runQueue`, `queueSizeLimits`, `taskRunConcurrencyTracker`,
    `EnvironmentQueuePresenter`, `registerProjectMetrics`, `deleteProject`),
    so it needs a per-file reviewed pass, not a bulk delete. That remainder
    stays on TRI-11883.
    
    refs TRI-11883
    nicktrn authored Jul 9, 2026
    Configuration menu
    Copy the full SHA
    0631c83 View commit details
    Browse the repository at this point in the history
  2. perf(webapp,clickhouse): move runs empty-state check to ClickHouse (#…

    …4202)
    
    ## Summary
    
    The runs page's empty-state check (whether an environment has ever had a
    run, which decides between the "getting started" and "no runs match your
    filters" states) ran a `findFirst` against the Postgres `TaskRun` table.
    This moves it to ClickHouse, the same store the runs list itself reads
    from, so the check no longer queries `TaskRun`.
    
    ## Design
    
    Only the runs list triggers the check now (via an `includeHasAnyRuns`
    flag); the other presenters that reuse `NextRunListPresenter` (API,
    schedule detail, waitpoint detail, error group) no longer issue it. When
    the list is empty it runs `SELECT 1 FROM task_runs_v2 ... LIMIT 1`
    filtered on the full `(organization_id, project_id, environment_id)`
    sort-key prefix with a configurable `created_at` lower bound
    (`RUN_LIST_HAS_RUNS_LOOKBACK_DAYS`, default 30), so it hits the primary
    index and reads minimal granules.
    
    Results are cached in a tiered memory + Redis SWR cache. Only positive
    ("has runs") results are cached, so an environment with no runs is
    always re-checked and its first run shows up immediately.
    ericallam authored Jul 9, 2026
    Configuration menu
    Copy the full SHA
    1a0198c View commit details
    Browse the repository at this point in the history
  3. fix(webapp): downgrade retryable directory-sync effect failures to wa…

    …rn (#4200)
    
    Directory-sync effects are idempotent and the accounts-webhook worker
    retries
    the whole event, so a single failed attempt (typically a role assignment
    losing a serializable race during a backfill burst) is self-healing
    rather
    than alert-worthy. Tag those thrown errors with logLevel "warn" so the
    worker
    logs at warn instead of error, keeping them visible for triage without
    paging.
    0ski authored Jul 9, 2026
    Configuration menu
    Copy the full SHA
    e57fd9c View commit details
    Browse the repository at this point in the history
  4. chore: ignore plugins package in changesets (#4210)

    ## Summary
    
    Excludes the non-published plugins workspace from Changesets release
    planning so it cannot drive public package version bumps.
    
    ## Verification
    
    Ran `pnpm run changeset:version` with temporary changesets for
    `@trigger.dev/plugins` and `@trigger.dev/core`; the ignored workspace
    produced no release-driver updates, and the public package changeset
    versioned normally.
    carderne authored Jul 9, 2026
    Configuration menu
    Copy the full SHA
    580f94a View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    105f489 View commit details
    Browse the repository at this point in the history
  6. chore(webapp): trim comments in directorySyncEffects (#4207)

    Condense the kept rationale comments (logLevel/warn, last-Owner dedup,
    role
    overwrite) and drop the obvious function-header comments that just
    restated
    the code. No behavior change.
    0ski authored Jul 9, 2026
    Configuration menu
    Copy the full SHA
    dc6c98a View commit details
    Browse the repository at this point in the history
  7. fix(webapp): show magic link confirmation instead of reloading login (#…

    …4215)
    
    ## Summary
    
    Submitting your email on the login page could reload back to an empty
    login form instead of showing the "we've sent you a magic link"
    confirmation. The magic link email was still sent, so it looked like
    nothing happened.
    
    ## Root cause
    
    The `/login/magic` route imported a server-only cookie module
    (`magicLinkEmailCookie.server.ts`) whose top-level `env.NODE_ENV` read
    got bundled into the route's client JS. On the client `env` is
    undefined, so the module threw a `TypeError` at module eval, which
    aborted Remix's client-side navigation to the confirmation and
    hard-reloaded back to `/login`. It only surfaced in production builds
    (local dev auto-logs-in, and local prod builds happen to tree-shake the
    module out), which is why it slipped through.
    
    ## Fix
    
    The email-link strategy already stores the submitted address in the
    session (`auth:email`), so the separate cookie was redundant. Deleted
    the cookie module and read the address from the session in the loader.
    With the module gone, nothing server-only can leak into the client
    bundle regardless of tree-shaking.
    
    Verified the confirmation renders with the email address, the SSO
    domain-policy redirect (with the email prefilled) still works, and a
    production build no longer bundles the module.
    samejr authored Jul 9, 2026
    Configuration menu
    Copy the full SHA
    afc8f9e View commit details
    Browse the repository at this point in the history
  8. chore: vouch brentshulman-silkline (#4216)

    Adds `brentshulman-silkline` to the list of vouched outside contributors
    so their PRs aren't auto-closed by the vouch check.
    matt-aitken authored Jul 9, 2026
    Configuration menu
    Copy the full SHA
    6b0588b View commit details
    Browse the repository at this point in the history

Commits on Jul 10, 2026

  1. fix(sdk): make inferred chat agent types portable for declaration emit (

    #4218)
    
    ## Summary
    
    Exporting a `chat.agent` from a project with `declaration: true` failed
    with TS2742: the inferred type of the agent references
    `ChatTaskWirePayload`, which was declared in an internal module not
    reachable through the package exports map, so tsc could only name it via
    a file path into `node_modules` and refused to emit. Consumers had to
    hand-mirror the wire type and annotate their export.
    
    ## Fix
    
    `ChatTaskWirePayload` and `ChatInputChunk` are now declared in
    `@trigger.dev/sdk/chat` (a public subpath) and re-exported type-only
    from the internal shared module, so every internal import is unchanged
    and the browser/server module split is untouched. Declaration emit for
    an inferred agent type now produces a portable specifier:
    
    ```ts
    export declare const chatAgent: Task<"chat-agent", import("@trigger.dev/sdk/chat").ChatTaskWirePayload<MyUIMessage, MyClientData>, unknown>;
    ```
    
    As a side effect the wire types are now directly importable, which is
    what affected users were reconstructing by hand.
    
    ## Verification
    
    Reproduced against the built 4.5.2-equivalent package: a consumer
    fixture with declaration emit produced `import("<file
    path>/ai-shared.js")` in its declaration (the TS2742 trigger); after the
    fix the same fixture emits the public specifier with zero diagnostics. A
    regression test now builds that consumer simulation in a temp directory
    on every test run: it copies the built package into a fake node_modules
    (copied, not symlinked, because tsc only applies exports-map naming to
    real node_modules paths), compiles the fixture with the TypeScript API,
    and asserts no errors, no relative-path imports, and no internal module
    references in the emit.
    ericallam authored Jul 10, 2026
    Configuration menu
    Copy the full SHA
    25254d0 View commit details
    Browse the repository at this point in the history
  2. chore: release v4.5.3 (#4219)

    ## Summary
    1 improvement, 2 bug fixes.
    
    ## Breaking changes
    - Removed support for the end-of-life v3 `trigger dev` CLI. Starting a
    dev session with an old v3 CLI now returns an upgrade message instead of
    connecting - upgrade to the v4 CLI to continue using `trigger dev`.
    ([#4198](#4198))
    
    ## Bug fixes
    - Fix TS2742 ("inferred type cannot be named") when exporting a
    `chat.agent` from a project with declaration emit: `ChatTaskWirePayload`
    and `ChatInputChunk` are now declared in the public
    `@trigger.dev/sdk/chat` subpath, so inferred agent types emit portable
    declarations and the wire types are directly importable.
    ([#4218](#4218))
    
    ## Server changes
    
    These changes affect the self-hosted Docker image and Trigger.dev Cloud:
    
    - Reduce primary database load on the runs page by serving its
    empty-state check from ClickHouse instead of Postgres.
    ([#4202](#4202))
    - Fixed submitting your email on the login page reloading back to an
    empty form instead of showing the magic link confirmation screen.
    ([#4215](#4215))
    
    <details>
    <summary>Raw changeset output</summary>
    
    # Releases
    ## @trigger.dev/build@4.5.3
    
    ### Patch Changes
    
    - Updated dependencies:
      - `@trigger.dev/core@4.5.3`
    ## trigger.dev@4.5.3
    
    ### Patch Changes
    
    - Updated dependencies:
      - `@trigger.dev/build@4.5.3`
      - `@trigger.dev/core@4.5.3`
      - `@trigger.dev/schema-to-json@4.5.3`
    ## @trigger.dev/python@4.5.3
    
    ### Patch Changes
    
    - Updated dependencies:
      - `@trigger.dev/sdk@4.5.3`
      - `@trigger.dev/build@4.5.3`
      - `@trigger.dev/core@4.5.3`
    ## @trigger.dev/react-hooks@4.5.3
    
    ### Patch Changes
    
    - Updated dependencies:
      - `@trigger.dev/core@4.5.3`
    ## @trigger.dev/redis-worker@4.5.3
    
    ### Patch Changes
    
    - Updated dependencies:
      - `@trigger.dev/core@4.5.3`
    ## @trigger.dev/rsc@4.5.3
    
    ### Patch Changes
    
    - Updated dependencies:
      - `@trigger.dev/core@4.5.3`
    ## @trigger.dev/schema-to-json@4.5.3
    
    ### Patch Changes
    
    - Updated dependencies:
      - `@trigger.dev/core@4.5.3`
    ## @trigger.dev/sdk@4.5.3
    
    ### Patch Changes
    
    - Fix TS2742 ("inferred type cannot be named") when exporting a
    `chat.agent` from a project with declaration emit: `ChatTaskWirePayload`
    and `ChatInputChunk` are now declared in the public
    `@trigger.dev/sdk/chat` subpath, so inferred agent types emit portable
    declarations and the wire types are directly importable.
    ([#4218](#4218))
    - Updated dependencies:
      - `@trigger.dev/core@4.5.3`
    ## @trigger.dev/core@4.5.3
    
    </details>
    
    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    github-actions[bot] authored Jul 10, 2026
    Configuration menu
    Copy the full SHA
    9f76c92 View commit details
    Browse the repository at this point in the history
Loading