Skip to content

Bump next from 16.2.1 to 16.2.2 - #2

Merged
NiveditJain merged 1 commit into
open-source-cleanupfrom
dependabot/bun/next-16.2.2
Apr 6, 2026
Merged

Bump next from 16.2.1 to 16.2.2#2
NiveditJain merged 1 commit into
open-source-cleanupfrom
dependabot/bun/next-16.2.2

Conversation

@dependabot

@dependabotdependabotBot commented on behalf of githubApr 6, 2026

Copy link
Copy Markdown
Contributor

Bumps next from 16.2.1 to 16.2.2.

Release notes

Sourced from next's releases.

v16.2.2

[!NOTE] This release is backporting bug fixes. It does not include all pending features/changes on canary.

Core Changes

  • backport: Move expanded adapters docs to API reference (#92115) (#92129)
  • Backport: TypeScript v6 deprecations for baseUrl and moduleResolution (#92130)
  • [create-next-app] Skip interactive prompts when CLI flags are provided (#91840)
  • next.config.js: Accept an option for serverFastRefresh (#91968)
  • Turbopack: enable server HMR for app route handlers (#91466)
  • Turbopack: exclude metadata routes from server HMR (#92034)
  • Fix CI for glibc linux builds
  • Backport: disable bmi2 in qfilter #92177
  • [backport] Fix CSS HMR on Safari (#92174)

Credits

Huge thanks to @​nextjs-bot, @​icyJoseph, @​ijjk, @​gaojude, @​wbinnssmith, @​lukesandberg, and @​bgw for helping!

Commits

@dependabotdependabotBot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Apr 6, 2026
@coderabbitai

coderabbitaiBot commented Apr 6, 2026

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Free

Run ID: ea2cd7a9-1a36-4adc-aee1-ad76d4ffb350

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands and usage tips.

@dependabot
dependabotBotforce-pushed the dependabot/bun/next-16.2.2 branch from dc578f5 to 4076e63CompareApril 6, 2026 04:24
Bumps [next](https://github.com/vercel/next.js) from 16.2.1 to 16.2.2.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](vercel/next.js@v16.2.1...v16.2.2)
---
updated-dependencies:
- dependency-name: next
dependency-version: 16.2.2
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabotBotforce-pushed the dependabot/bun/next-16.2.2 branch from 4076e63 to 241a629CompareApril 6, 2026 05:21
@NiveditJain
NiveditJain merged commit 237fdd3 into open-source-cleanupApr 6, 2026
1 check passed
@dependabot
dependabotBot deleted the dependabot/bun/next-16.2.2 branch April 6, 2026 05:25
NiveditJain added a commit that referenced this pull request Apr 30, 2026
* [docs] sanitize JSX attribute quotes in auto-translated MDX
The German translator periodically emits `<Tab title="Tab „Richtlinien"">`
where it intends `„…"` typographic quotes but uses ASCII `"` for the
closing — the inner straight `"` terminates the JSX attribute and the
real attribute close becomes a stray `"` before `>`, which trips
`mintlify validate` with `Unexpected character "`.
PR #229 fixed this once by hand on `docs/de/dashboard.mdx`. The next
auto-translation run regenerated the same broken markup, so the same
parse error landed on `main` again after #246.
Make it stick:
- `scripts/translate-docs/mdx-translator.ts` adds `sanitizeJsxAttributes`,
which strips stray trailing ASCII `"` after a JSX attribute close and
drops unmatched typographic opening quotes (`„`, `"`, `«`, `‹`, `「`,
`『`) inside the same value. Matched pairs (e.g. `「ポリシー」`) are
preserved. Wired into `translateMdxPage` ahead of `rewriteInternalLinks`.
- `scripts/translate-docs/translator.ts` extends rule #2 of the system
prompt to forbid ASCII `"` inside JSX attribute values entirely, so
the LLM is less likely to produce the pattern in the first place.
- `__tests__/scripts/translate-docs/mdx-translator.test.ts` covers the
exact `de/dashboard.mdx` failure plus self-close, multi-attribute,
matched typographic pairs, empty-value, and multiple-on-one-line cases.
- `docs/de/dashboard.mdx` drops the inner German quotes from the two
`<Tab title>` attributes (mirrors #229) so CI on `main` goes green
immediately rather than waiting for the next translation cycle.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* [docs] address CodeRabbit review on sanitizeJsxAttributes
Two findings on PR #247:
1. mdx-translator.ts:50 — `cleaned.split(open).join("")` removed *every*
occurrence of an opener when `opens > closes`, so a value containing
one matched typographic pair plus one stray opener (e.g.
`„Foo“ und „Bar`) lost the matched pair too. Fix: drop only the
surplus = opens - closes openers, scanning from the right with
`lastIndexOf` so the leftmost matched pair is preserved.
2. mdx-translator.test.ts — add a regression test for that mixed case
(one matched „…“ pair + one dangling „) so the bug above can't
recur.
Also drop the English curly “…” pair from the openings list. U+201C
is both the German closer and the English-curly opener, so processing
the English pair after the German pair would strip the very German
closer we just preserved. The remaining pairs (German, French ×2,
Japanese ×2) all have unambiguous openers.
1177 unit tests pass (was 1176 — the new mixed-case test is the +1).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
chhhee10 added a commit that referenced this pull request Jul 10, 2026
Verified the real Hermes tool argument shapes against a live ~/.hermes/state.db:
read_file / write_file / patch deliver the file path as `path` (Claude builtins
read `file_path`); write_file's `content`, patch's `old_string`/`new_string`,
and search_files' `pattern`/`path` are already canonical.
- types.ts: add HERMES_TOOL_INPUT_MAP (Read/Write/Edit: path -> file_path),
mirroring PI_TOOL_INPUT_MAP; drop the "tentative / verify" note.
- tool-name-canonicalize.ts: add the `hermes` branch to canonicalizeToolInput,
replacing the interim "no map yet" caveat.
- CLAUDE.md: mark the tool-input canonicalization as done (was a documented gap).
- Add a focused canonicalization test (name + input).
Now block-env-files / block-secrets-write / block-read-outside-cwd fire on
Hermes read/write/patch tool calls, not just Bash commands.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
NiveditJain pushed a commit that referenced this pull request Jul 11, 2026
…t + audit (#486)
* feat(audit): add Hermes as an audit-only integration
Discover hermes-agent gateway sessions from the single ~/.hermes/state.db
by shelling out to the hermes CLI (sessions list + export), mirroring the
OpenCode adapter's driverless shell-out. Parse the OpenAI-shape export into
the shared LogEntry[] form (Codex-family parser) and replay through the
existing policy engine + audit detectors.
- lib/hermes-sessions.ts: pure parseHermesExport() + getHermesSessionLog()
- lib/hermes-projects.ts: pure parseHermesSessionList() + getHermesSessions()
- src/audit/cli-adapters/hermes.ts: adapter (list + stream)
- types: add "hermes" to INTEGRATION_TYPES + HERMES_TOOL_MAP
- canonicalizeToolName: hermes branch
- INTEGRATIONS to Partial so audit-only CLIs are not offered for hook install
- 13 unit tests for the pure parsers
Audit-only (Pillar 2); live hooks are a separate future effort.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* feat(audit): SQLite-driven Hermes reads + dashboard history browser
Replace the initial shell-out audit path with a reusable, bundled SQLite
read layer, and surface Hermes gateway sessions in the dashboard's
projects/history browser.
- lib/sqlite-reader.ts: tiered reader — Node's built-in node:sqlite
(WAL-aware; sees rows still in the write-ahead log) preferred, pure-JS
sql.js as the Node <22.5 fallback (no native build; survives
`npm install --ignore-scripts`). Reusable by future SQLite-backed agents;
opencode and every shipped CLI keep their existing shell-out.
- lib/hermes-sessions.ts / hermes-projects.ts: read the sessions + messages
tables directly from ~/.hermes/state.db, parse the OpenAI-shape rows into
the shared LogEntry[] form, group by source (slack/telegram/cli/cron),
use MAX(messages.timestamp) as live last-activity, and carry Slack/Telegram
user + channel metadata.
- History browser: getHermesProjects() -> hermes-<source> projects; the
project-detail page + session viewer render the full transcript (badged
Hermes) with JSONL download. Wired through lib/projects.ts,
lib/cli-registry.ts, lib/download-session.ts, app/project/[name] routes.
- Tests: real sql.js state.db integration + parser unit tests; drop the
superseded hermes-projects.test.ts.
- Dep: sql.js (kept external in the CLI bundle like posthog-node).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* feat(policies): Hermes live hooks — real-time policy enforcement (Pillar 1)
Promote Hermes from audit-only to a full live-hook integration so custom
policies intercept and block Hermes tool calls in real time on the gateway.
- src/hooks/integrations.ts: `hermes` Integration (registered in INTEGRATIONS).
Config is YAML (~/.hermes/config.yaml) under a `hooks:` map, edited through a
comment-preserving yaml Document round-trip (readYamlDoc/writeYamlDoc) so the
operator's other keys + comments survive. User-scope only; installs a marked
{command,timeout:30} entry per event and sets hooks_auto_accept:true for the
headless (TTY-less) gateway.
- src/hooks/types.ts: HERMES_HOOK_SCOPES, HERMES_HOOK_EVENT_TYPES,
HERMES_EVENT_MAP (pre_tool_call->PreToolUse, ...). No Stop mapping — Hermes
has no turn-end event.
- src/hooks/handler.ts: canonicalize Hermes snake_case events via HERMES_EVENT_MAP.
- src/hooks/policy-evaluator.ts: Hermes block contract — deny emits
{"decision":"block","reason"} on stdout (Hermes ignores exit codes); one
branch covers PreToolUse/PostToolUse/SubagentStop. instruct degrades to
allow + logged note (no additional-context channel).
- src/hooks/resolve-transcript-path.ts: explicit hermes case (no transcript file).
- bin/failproofai.mjs: accept `--cli hermes` in the hook dispatch + all three
VALID_CLIS sets + help text.
- Platform-independent by design: pre_tool_call fires on the tool event, so one
install intercepts slack/telegram/cli/cron + internal subagents uniformly.
- Tests: integration object (YAML round-trip preserves comments), event map,
deny/instruct shapes; updated install-prompt counts (hermes now installable).
- Docs: CLAUDE.md Hermes hooks section. Dep: yaml (pure JS, no native build).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* docs: document Hermes across README, reference docs, and changelog
Add Hermes (hermes-agent) everywhere the other CLIs are enumerated:
- README: install examples + dual-pillar note (live hooks + audit).
- docs/configuration.mdx: a Hermes per-CLI section (user-scope YAML config,
block contract, HERMES_EVENT_MAP/TOOL_MAP, no-Stop + no-redaction limits)
plus the --cli enumerations and install example.
- docs/getting-started.mdx: config path + `--cli hermes` install example.
- docs/dashboard.mdx: Hermes as an audit/history source (~/.hermes/state.db,
hermes-<source> projects, HERMES_DB_PATH).
- docs/introduction.mdx: add Hermes to the supported-agents list.
- CHANGELOG: Docs entry.
Translations under docs/<lang>/ regenerate via `bun run translate:docs` and are
intentionally left for that pipeline.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* docs(readme): add Hermes logo to the supported-CLIs grid
Add a placeholder Hermes monogram (assets/logos/hermes.svg — indigo "H"
matching the dashboard's Hermes badge) to the README logo grid, with a TODO
to swap in the official Hermes brand asset and URL.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* docs(readme): use the real Hermes Agent logo (light + dark variants)
Replace the placeholder monogram with the official Hermes Agent glyph, split
into theme variants (hermes-light.svg #181818 for light backgrounds,
hermes-dark.svg #ffffff for dark) served via <picture> — matching how the
other logos adapt to GitHub's light/dark themes.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix: address CodeRabbit + hermes-exosphere PR review
Code fixes:
- download-session.ts / session page: align HERMES_SESSION_RE with the loader's
ID pattern so a session can't list/open in the viewer yet fail its download
with RangeError("Invalid session ID") (CR#8 / HE#11).
- integrations.ts removeHooksFromFile: always drop hooks_auto_accept on
uninstall, even when the hooks were already removed manually, so it can't
silently auto-accept future operator hooks (CR#5).
- hermes-projects.ts + audit adapter: decide emptiness from actual message rows
(MAX(timestamp) non-null via hasMessages), not the denormalized message_count
which Hermes can write lazily — otherwise in-progress sessions are hidden (HE#10).
Docs / comments:
- CLAUDE.md: narrow the comment-preservation claim (comments inside the hooks:
block aren't kept) and drop the unreachable npx "project form" (user-scope
only) (CR#3, CR#4).
- integrations.ts / install-prompt.ts: fix stale "(e.g. hermes) is audit-only"
comments — hermes is a full live-hook integration now (CR#9, HE#12).
- CHANGELOG: drop the stale "no live hooks yet" wording; add (#486) to entries
(CR#2, and the correct answer to CR#1).
- docs/dashboard.mdx: add Hermes to the remaining filter/badge/viewer lists
(CR#7). docs/configuration.mdx: "builtin" -> "built-in" (CR#6).
Tests: regression tests for auto-accept-drop-on-uninstall and the
stale-message_count in-progress-session cases.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore: remove stray commit-message temp file + gitignore it
* fix: address second-round PR review (hermes-exosphere)
- projects.test.ts: mock @/lib/hermes-projects (getProjectFolders now calls
getHermesProjects, which does real ~/.hermes/state.db I/O — without the mock
the suite was non-hermetic and failed on any box with a real gateway DB).
Adds a Hermes standalone-project parity test. (RED)
- session viewer page: add the missing `hermes` arm to the LazyLogViewer
projectName fallback ternary — a null-source Hermes session was rendering the
"Gemini CLI" label. (Nit)
- Document the tool-INPUT canonicalization gap (no HERMES_TOOL_INPUT_MAP yet):
a code note in canonicalizeToolInput + a CLAUDE.md limitation. Tool names +
Bash `command` are canonical/verified; file-path/content builtins only enforce
on Hermes if the arg keys already match canonical. The real map needs the arg
shapes verified against a live state.db — not guessed. (Yellow, interim)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix(hermes): canonicalize tool-input keys (close review #2)
Verified the real Hermes tool argument shapes against a live ~/.hermes/state.db:
read_file / write_file / patch deliver the file path as `path` (Claude builtins
read `file_path`); write_file's `content`, patch's `old_string`/`new_string`,
and search_files' `pattern`/`path` are already canonical.
- types.ts: add HERMES_TOOL_INPUT_MAP (Read/Write/Edit: path -> file_path),
mirroring PI_TOOL_INPUT_MAP; drop the "tentative / verify" note.
- tool-name-canonicalize.ts: add the `hermes` branch to canonicalizeToolInput,
replacing the interim "no map yet" caveat.
- CLAUDE.md: mark the tool-input canonicalization as done (was a documented gap).
- Add a focused canonicalization test (name + input).
Now block-env-files / block-secrets-write / block-read-outside-cwd fire on
Hermes read/write/patch tool calls, not just Bash commands.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependenciesPull requests that update a dependency filejavascriptPull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@NiveditJain