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: nitrojs/nitro
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v2.13.5
Choose a base ref
...
head repository: nitrojs/nitro
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v2.13.6
Choose a head ref
  • 10 commits
  • 20 files changed
  • 6 contributors

Commits on Oct 29, 2026

  1. chore(deps): update archiver to v8 (#4936)

    agustin18 authored Oct 29, 2026
    Configuration menu
    Copy the full SHA
    f0c4732 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    726bd77 View commit details
    Browse the repository at this point in the history
  3. perf(externals): memoize tryResolve per importer directory in node-ex…

    …ternals (v2) (#4800)
    Liang Xu authored Oct 29, 2026
    Configuration menu
    Copy the full SHA
    4086aa2 View commit details
    Browse the repository at this point in the history

Commits on Nov 1, 2026

  1. Configuration menu
    Copy the full SHA
    a676074 View commit details
    Browse the repository at this point in the history

Commits on Nov 2, 2026

  1. fix(cache): only cache GET/HEAD and never store per-user responses

    - Only `GET` and `HEAD` requests read or write the handler cache; other
      methods and `Range` requests call the handler directly. `HEAD` uses a
      separate key (GET keys unchanged).
    - Never store responses that set cookies; `set-cookie` is only sent to the
      request that produced the response, and concurrent requests resolve
      their own response instead of sharing it.
    - Never store responses with `cache-control` private/no-store/no-cache and
      keep the handler's own `cache-control`.
    - Never store responses whose `vary` is `*` or names a header not in
      `varies` (except `accept-encoding`).
    - Remove a stored entry when a fresh response is no longer cacheable.
    - Capture `appendHeader` in the response proxy (multiple cookies).
    
    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
    pi0 and claude committed Nov 2, 2026
    Configuration menu
    Copy the full SHA
    9c2691d View commit details
    Browse the repository at this point in the history
  2. fix(route-rules): validate final proxy/redirect target scope

    Validate the resolved `/**` proxy and redirect target against the target
    base in addition to the request path. Canonicalize under both the fully
    decoded and WHATWG readings so empty `//` segments, prefix re-entry,
    raw dot segments with encoded separators and nested encodings cannot
    escape the configured prefix. Encoded target bases keep working.
    
    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
    pi0 and claude committed Nov 2, 2026
    Configuration menu
    Copy the full SHA
    353eff5 View commit details
    Browse the repository at this point in the history
  3. fix(route-rules): prevent open redirect via backslash and control cha…

    …racters in wildcard redirects
    
    A wildcard `redirect` rule targeting `/**` copied the rest of the request
    path into `Location` and only collapsed a leading `//`. A remainder starting
    with `\` (raw or `%5C`) or `<TAB>/` (`%09/`) was emitted unchanged, which
    browsers resolve as protocol-relative `//evil.com` (GHSA-49p7-jc25-v5fc,
    incomplete fix of GHSA-9phm-9p8f-hw5m).
    
    - Move target resolution to a pure `resolveRedirectTarget()` helper
    - Collapse any leading run of `/`, `\`, C0 controls/space and their
      percent-encoded forms to a single `/` (with and without strip base)
    - Reject (400) remainders whose dot-segments would climb above a
      path-prefixed target base once normalized
    - For root targets, always emit a path-absolute `Location` (also fixes
      the empty `Location` redirect loop for `/old` with `/old/**`)
    
    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
    pi0 and claude committed Nov 2, 2026
    Configuration menu
    Copy the full SHA
    f16a4fa View commit details
    Browse the repository at this point in the history
  4. test(route-rules): cover %2F segment absorbing .. in scope checks

    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
    pi0 and claude committed Nov 2, 2026
    Configuration menu
    Copy the full SHA
    c28ce30 View commit details
    Browse the repository at this point in the history
  5. chore(deps): update non-major dependencies and lockfile

    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
    pi0 and claude committed Nov 2, 2026
    Configuration menu
    Copy the full SHA
    b29e4e4 View commit details
    Browse the repository at this point in the history
  6. chore(release): v2.13.6

    pi0 committed Nov 2, 2026
    Configuration menu
    Copy the full SHA
    0b354b5 View commit details
    Browse the repository at this point in the history
Loading