Skip to content

chore(deps)(deps-dev): bump esbuild from 0.28.0 to 0.28.1 in /server - #22

Open
dependabot[bot] wants to merge 233 commits into
Masterfrom
dependabot/npm_and_yarn/server/esbuild-0.28.1
Open

chore(deps)(deps-dev): bump esbuild from 0.28.0 to 0.28.1 in /server#22
dependabot[bot] wants to merge 233 commits into
Masterfrom
dependabot/npm_and_yarn/server/esbuild-0.28.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jun 13, 2026

Copy link
Copy Markdown
Contributor

Bumps esbuild from 0.28.0 to 0.28.1.

Release notes

Sourced from esbuild's releases.

v0.28.1

  • Disallow \ in local development server HTTP requests (GHSA-g7r4-m6w7-qqqr)

    This release fixes a security issue where HTTP requests to esbuild's local development server could traverse outside of the serve directory on Windows using a \ backslash character. It happened due to the use of Go's path.Clean() function, which only handles Unix-style / characters. HTTP requests with paths containing \ are no longer allowed.

    Thanks to @​dellalibera for reporting this issue.

  • Add integrity checks to the Deno API (GHSA-gv7w-rqvm-qjhr)

    The previous release of esbuild added integrity checks to esbuild's npm install script. This release also adds integrity checks to esbuild's Deno install script. Now esbuild's Deno API will also fail with an error if the downloaded esbuild binary contains something other than the expected content.

    Note that esbuild's Deno API installs from registry.npmjs.org by default, but allows the NPM_CONFIG_REGISTRY environment variable to override this with a custom package registry. This change means that the esbuild executable served by NPM_CONFIG_REGISTRY must now match the expected content.

    Thanks to @​sondt99 for reporting this issue.

  • Avoid inlining using and await using declarations (#4482)

    Previously esbuild's minifier sometimes incorrectly inlined using and await using declarations into subsequent uses of that declaration, which then fails to dispose of the resource correctly. This bug happened because inlining was done for let and const declarations by avoiding doing it for var declarations, which no longer worked when more declaration types were added. Here's an example:

    // Original code
    {
      using x = new Resource()
      x.activate()
    }
    // Old output (with --minify)
    new Resource().activate();
    // New output (with --minify)
    {using e=new Resource;e.activate()}

  • Fix module evaluation when an error is thrown (#4461, #4467)

    If an error is thrown during module evaluation, esbuild previously didn't preserve the state of the module for subsequent module references. This was observable if import() or require() is used to import a module multiple times. The thrown error is supposed to be thrown by every call to import() or require(), not just the first. With this release, esbuild will now throw the same error every time you call import() or require() on a module that throws during its evaluation.

  • Fix some edge cases around the new operator (#4477)

    Previously esbuild incorrectly printed certain edge cases involving complex expressions inside the target of a new expression (specifically an optional chain and/or a tagged template literal). The generated code for the new target was not correctly wrapped with parentheses, and either contained a syntax error or had different semantics. These edge cases have been fixed so that they now correctly wrap the new target in parentheses. Here is an example of some affected code:

    // Original code
    new (foo()`bar`)()
    new (foo()?.bar)()
    // Old output
    new foo()bar();
    new (foo())?.bar();

... (truncated)

Changelog

Sourced from esbuild's changelog.

0.28.1

  • Disallow \ in local development server HTTP requests (GHSA-g7r4-m6w7-qqqr)

    This release fixes a security issue where HTTP requests to esbuild's local development server could traverse outside of the serve directory on Windows using a \ backslash character. It happened due to the use of Go's path.Clean() function, which only handles Unix-style / characters. HTTP requests with paths containing \ are no longer allowed.

    Thanks to @​dellalibera for reporting this issue.

  • Add integrity checks to the Deno API (GHSA-gv7w-rqvm-qjhr)

    The previous release of esbuild added integrity checks to esbuild's npm install script. This release also adds integrity checks to esbuild's Deno install script. Now esbuild's Deno API will also fail with an error if the downloaded esbuild binary contains something other than the expected content.

    Note that esbuild's Deno API installs from registry.npmjs.org by default, but allows the NPM_CONFIG_REGISTRY environment variable to override this with a custom package registry. This change means that the esbuild executable served by NPM_CONFIG_REGISTRY must now match the expected content.

    Thanks to @​sondt99 for reporting this issue.

  • Avoid inlining using and await using declarations (#4482)

    Previously esbuild's minifier sometimes incorrectly inlined using and await using declarations into subsequent uses of that declaration, which then fails to dispose of the resource correctly. This bug happened because inlining was done for let and const declarations by avoiding doing it for var declarations, which no longer worked when more declaration types were added. Here's an example:

    // Original code
    {
      using x = new Resource()
      x.activate()
    }
    // Old output (with --minify)
    new Resource().activate();
    // New output (with --minify)
    {using e=new Resource;e.activate()}

  • Fix module evaluation when an error is thrown (#4461, #4467)

    If an error is thrown during module evaluation, esbuild previously didn't preserve the state of the module for subsequent module references. This was observable if import() or require() is used to import a module multiple times. The thrown error is supposed to be thrown by every call to import() or require(), not just the first. With this release, esbuild will now throw the same error every time you call import() or require() on a module that throws during its evaluation.

  • Fix some edge cases around the new operator (#4477)

    Previously esbuild incorrectly printed certain edge cases involving complex expressions inside the target of a new expression (specifically an optional chain and/or a tagged template literal). The generated code for the new target was not correctly wrapped with parentheses, and either contained a syntax error or had different semantics. These edge cases have been fixed so that they now correctly wrap the new target in parentheses. Here is an example of some affected code:

    // Original code
    new (foo()`bar`)()
    new (foo()?.bar)()
    // Old output
    new foo()bar();
    new (foo())?.bar();

... (truncated)

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

dependabot Bot and others added 30 commits May 18, 2026 16:12
Bumps [esbuild](https://github.com/evanw/esbuild) from 0.24.2 to 0.28.0.
- [Release notes](https://github.com/evanw/esbuild/releases)
- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2024.md)
- [Commits](evanw/esbuild@v0.24.2...v0.28.0)

---
updated-dependencies:
- dependency-name: esbuild
  dependency-version: 0.28.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…esbuild-0.28.0

chore(deps)(deps-dev): bump esbuild from 0.24.2 to 0.28.0 in /server
Auto-built by .github/workflows/build.yml from src/.
- Add badges: License, Build status, CodeQL status, GitHub stars
- Drop the duplicate architecture diagram (was two near-identical copies);
  keep the one that mentions CDP, and correct the storage label from
  "SQLite" to "file-based, <project>/.continuum/"
- Update the Memory model section: the architecture moved to file-based
  storage in .continuum/ a few versions back; the README still claimed
  one-SQLite-file-per-project
- Drop dead env vars (SUPER_TESTER_MEMORY_BACKEND, SUPER_TESTER_DB_PATH)
  and replace with the actual override (SUPER_TESTER_DATA_DIR)
- Add Contributing + License footer linking to LICENSE, SECURITY.md,
  issues, discussions

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds the v1 design for browser_upload_stage and browser_upload_file —
two new browser MCP tools that bypass the native OS file picker via a
strategy chain (direct setFileInputFiles → file-chooser intercept →
drag-drop synthesis → paste synthesis) backed by content-addressed
storage under .continuum/uploads/. Includes smart-wait, path
allowlist, error taxonomy, and a five-fixture integration test plan.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
25-task TDD plan implementing the spec in
docs/superpowers/specs/2026-05-19-browser-file-upload-design.md.
Builds server-side uploads.js (stage, dedup, GC, undici URL fetch),
extension/upload.js (4 strategies, smart wait, frame traversal),
five fixture pages, and end-to-end integration runner.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds extension/upload.js as a statically-imported ES module (manifest already
has "type": "module"). The module exposes handleUploadFile(params, clientId)
which background.js calls from a new "upload_file" case in dispatch().

Helpers needed by upload.js (cdp, ensureAttached, getSession, targetTab) are
mirrored onto globalThis from background.js to avoid a circular import. The
strategy chain itself is stubbed in this commit — real strategies land in
Tasks 14-17, smart wait in Task 18.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…earch)

Adds resolveTargetNode + frame walking + auto-detect-from-anchor to upload.js.
In this codebase `ref` is already a CSS selector (mochi snapshots emit
selectors as the "ref" field), so target.ref routes through DOM.querySelector
identically to target.selector — there is no separate ref->nodeId table to
consult, and the plan's globalThis.refToNodeId hook is intentionally absent.

autoDetectFromAnchor uses Runtime.callFunctionOn on the anchor's JS object to
find a nearby <input type=file>: descendants first, then up to 5 following
siblings, then ancestors' descendants up to 3 levels. If none match, the
anchor itself is returned as a trigger element so the intercept strategy can
click it later.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…/input events

Replaces the runStrategy stub with a dispatch table (direct/intercept/drop/
paste) and implements strategyDirect: resolve target -> describe node ->
verify it's <input type=file> -> DOM.setFileInputFiles -> dispatch
change/input events via Runtime.callFunctionOn.

Note: DOM.describeNode returns attributes as a flat [name, value, name,
value, ...] array, not a map — iterating pairwise.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…rDialog + handleFileChooser

Adds strategyIntercept and a transient CDP-event-listener fanout in
background.js's chrome.debugger.onEvent handler. The fanout reads
globalThis.__mochiCdpListeners — a Map upload.js populates per-call and
cleans up in a finally block — so listeners never leak past their request.

Intercept flow: enable Page.setInterceptFileChooserDialog -> register
chooser-listener -> Input.dispatchMouseEvent at the trigger's center
(real synthetic click required for the chooser to dispatch) -> on
Page.fileChooserOpened call Page.handleFileChooser with our file paths ->
wait up to 3s for the event -> always tear down the listener + disable
intercept in finally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds strategyDrop: requires fileBytes from the server (base64 + mime + name
per file), then inside the page builds File objects from those bytes, stuffs
them into a DataTransfer, dispatches dragenter -> dragover -> drop on the
resolved target, and waits 500ms for a MutationObserver to observe at least
one mutation as proof the page reacted.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds strategyPaste: like 'drop' but dispatches a ClipboardEvent('paste')
carrying a DataTransfer. The target is the resolved element when it's
content-editable or a text input; otherwise the call falls back to
document.activeElement (some chat composers swallow paste only on the
focused inner editor). Mutation observation as the success signal.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…istener)

Replaces the smartWait stub with a real implementation that polls three
parallel signals until one wins or the timeout expires:

1. network-2xx — a transient CDP listener watches Network.responseReceived
   for 2xx responses whose URL matches an upload-ish pattern (configurable
   via waitFor.networkPattern; default /upload|media|attach|photo/i).
2. preview-img — an in-page MutationObserver installed via Runtime.evaluate
   watches for any element matching waitFor.previewSelector (default:
   blob:/data: image+video sources).
3. successSelector — if provided, polled every 250ms via DOM.querySelector.

Returns { signal, durationMs, ... } on success, { signal: null, reason:
'timeout', evidence } on timeout. Cleans up the network listener entry and
the in-page observer in a finally block so neither leaks across waits.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…n-depth)

The scaffold in commit 354b7b9 already landed the basic .continuum/uploads/
substring check inside handleUploadFile. This commit completes Task 21 by
hardening isPathAllowed against path-traversal: any '..' segment in the
incoming path is rejected outright, even if the surrounding prefix would
otherwise match. The server normalises paths before sending, so a '..'
reaching the extension is suspicious enough to refuse.

Documents the SUPER_TESTER_UPLOAD_ALLOW_PATHS extension point that lets the
server widen the allowlist on a per-request basis without rebuilding the
extension.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…on yet)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…jsonl

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
DevZonayed and others added 24 commits June 10, 2026 02:37
Add T63 regression tests for telemetry gate anti-nag suppression: assert
that undecided telemetry config + source=resume (and =compact) does not
emit the '[continuum:telemetry] This repo hasn't decided' ASK string,
locking down the same source-aware anti-nag contract as comms gate T58.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ompact compaction counter (Task 17)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…eview-auto/flush/reset-id/purge); show===emit redact

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…/mochi:insights; register all three commands

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… bucketing, whitelist serializer)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… iid-drop + erasure

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add missing KEEP-path edge test for §13.4 iid-drop contract: assert that a
recent event (ts within dedupWindowDays) retains its iid while a 30-day-old
event in the same sweep has its iid stripped.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add corrupt-line resilience test to _store.test.mjs, covering the
deliberate try/catch fault-tolerance in readAllEvents and eraseIid
against blank + truncated/corrupt JSONL lines (mirrors run-telemetry-log.mjs test #3 pattern).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fall back to current-day bucket (Date.now()) instead of epoch 0 when
ts is absent or non-numeric in appendEvents. This prevents distillation
records (which carry no ts field) from landing in 1970-01-01.jsonl where
they would be immediately deleted by the first sweepRetention call.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ry + improvement backlog

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…/global token buckets

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ped, all §13.8 views)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-limit), dashboard, summary, erasure, health

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Wrap the http.createServer async handler body in a top-level try/catch so
FS errors (ENOSPC, EACCES, ENOTDIR) from appendEvents, eraseIid, readAllEvents,
aggregate, and renderDashboard are caught and returned as HTTP 500 responses
instead of escaping as unhandled rejections that terminate the process.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…README; full node --test suite green

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…st in build.yml

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… (Task 31)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…e dashboard login

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…he production endpoint

The hook subprocesses (session_end flush) can't have their fetch mocked, so with the
real write-key baked in, the harness was POSTing session_close to the live ingest.
emit now honors MOCHI_INGEST_URL; run-telemetry.sh points it at a dead local no-op.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…cy critique + self-hosted dashboard

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…mochi-plugin

# Conflicts:
#	.claude-plugin/plugin.json
#	CHANGELOG.md
#	server/package.json
@dependabot @github

dependabot Bot commented on behalf of github Jun 13, 2026

Copy link
Copy Markdown
Contributor Author

Labels

The following labels could not be found: area/server, dependencies. Please create them before Dependabot can add them to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

@DevZonayed
DevZonayed force-pushed the dependabot/npm_and_yarn/server/esbuild-0.28.1 branch from 5ff9a9d to 194db5d Compare July 17, 2026 10:36
@DevZonayed
DevZonayed force-pushed the dependabot/npm_and_yarn/server/esbuild-0.28.1 branch 3 times, most recently from 8df1a52 to f351f7e Compare August 8, 2026 04:59
@DevZonayed
DevZonayed force-pushed the dependabot/npm_and_yarn/server/esbuild-0.28.1 branch from f351f7e to cdc1bf6 Compare August 17, 2026 08:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant