{
  "interval": {
    "intervalStart": "2026-04-23T00:00:00.000Z",
    "intervalEnd": "2026-04-24T00:00:00.000Z",
    "intervalType": "day"
  },
  "repository": "elizaos/eliza",
  "overview": "From 2026-04-23 to 2026-04-24, elizaos/eliza had 22 new PRs (19 merged), 1 new issues, and 6 active contributors.",
  "topIssues": [
    {
      "id": "I_kwDOMT5cIs8AAAABAW0dtw",
      "title": "Trustless Agent-to-Agent Deals via Local ZK Proofs",
      "author": "jvonb",
      "number": 7073,
      "repository": "elizaos/eliza",
      "body": "**Is your feature request related to a problem? Please describe.**\n\nEliza agents are getting insanely smart, but when Agent A interacts with Agent B, there is no decentralized, private way to verify state without leaking the underlying data of the prompt/decision engine to a centralized server\n\n**Describe the solution you'd like**\n\nA sidecar integration where Eliza agents compute ZK-proofs locally before talking to other agents. I've built a universal Trust Layer for this called **[Project Rohan](https://github.com/rohan-protocol/sdk)**. It uses the Midnight Blockchain to settle agent-deals trustlessly via a Gasless Relayer.\n\nInstead of raw API handshakes, the Eliza agent simply routes the payload through the local prover:\n`await agent.handshake(contractRef, mySecretLogic)`\n\n\n**Additional context**\n\nWe'd love to build an official Eliza-Plugin for this. Are there specific plugin architecture guidelines we should follow for cryptographic sidecars? We've already tested the node.js bindings and the relayer architecture works flawlessly.\n",
      "createdAt": "2026-04-23T21:08:42Z",
      "closedAt": "2026-04-24T04:21:42Z",
      "state": "CLOSED",
      "commentCount": 0
    }
  ],
  "topPRs": [
    {
      "id": "PR_kwDOMT5cIs7VG9uE",
      "title": "feat(lifeops): support multi-calendar Google feeds",
      "author": "dutchiono",
      "number": 7072,
      "body": "This completes the LifeOps multi-calendar stack on the app/runtime side and adds the last safety fallback for hosted cloud lag.\n\n## Included\n- list and persist available calendars in LifeOps settings\n- merge included calendar feeds across calendars/accounts\n- surface calendar origin in merged feeds\n- support cloud-managed secondary calendars\n- fall back to primary aggregation when managed calendar discovery is temporarily unavailable\n\n## Dependency\n- hosted connector route is tracked separately in [cloud#472](https://github.com/elizaOS/cloud/pull/472)\n- this PR intentionally leaves the `cloud` submodule pointer alone until that cloud change lands upstream\n\n## Why\nHosted users were getting blank or incorrect calendar views when the connector only exposed `primary` or when the new managed calendar-list route was not yet deployed. This keeps the UI and agent behavior stable while the cloud route lands.\n\n## Validation\n- `bun run --cwd C:\\Users\\epj33\\Documents\\Playground\\milady\\eliza\\apps\\app-lifeops test -- service-mixin-calendar.test.ts`\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\nThis PR completes the LifeOps multi-calendar stack: it adds `listCalendars` / `setCalendarIncluded` service methods, a `getCalendarFeed` path that aggregates across all user-enabled calendars (with a fallback to primary when managed calendar discovery is unavailable), per-calendar `includeInFeed` preferences stored in the scheduler task metadata, and UI for toggling calendar visibility in Settings.\n\n- **P1 — multi-account preference key collision**: `calendarFeedIncludes` is keyed only by `calendarId`. Users with two connected Google accounts both have a calendar with `calendarId: \\\"primary\\\"`, so toggling one will silently override the other's preference. The UI already uses a `${grantId}:${calendarId}` composite key for React rendering — the backend persistence and lookup should do the same.\n\n<h3>Confidence Score: 4/5</h3>\n\nSafe to merge for single-account users; multi-account users will see incorrect calendar visibility preferences until the key collision is fixed.\n\nOne P1 correctness issue: calendarFeedIncludes keyed by calendarId alone causes a data collision for any user with two Google accounts sharing a 'primary' calendarId. All other findings are P2 (fragile error string match, unnecessary API call on toggle). The fallback, merge, and UI logic are otherwise well-structured and the new tests give good coverage of the happy paths.\n\napps/app-lifeops/src/lifeops/service-mixin-calendar.ts (preference lookup) and apps/app-lifeops/src/lifeops/owner-profile.ts (preference storage key)\n\n<h3>Important Files Changed</h3>\n\n\n\n\n| Filename | Overview |\n|----------|----------|\n| apps/app-lifeops/src/lifeops/service-mixin-calendar.ts | Core multi-calendar logic: adds listCalendars, setCalendarIncluded, aggregateCalendarFeedsAcrossCalendars, and getCalendarFeed path selection. Has a P1 preference-key collision bug (calendarId-only key breaks multi-account users who both have \"primary\") and a fragile 503 fallback. |\n| apps/app-lifeops/src/lifeops/owner-profile.ts | Adds LifeOpsCalendarFeedPreferences storage: ensureLifeOpsCalendarFeedIncludes and setLifeOpsCalendarFeedIncluded. Logic is clean but the key type (calendarId only) propagates the P1 multi-account collision described in service-mixin-calendar.ts. |\n| apps/app-lifeops/src/lifeops/google-calendar.ts | Adds listGoogleCalendars function fetching calendarList with minAccessRole=reader. Passes showHidden=false in query params and also filters hidden items in the loop (harmless redundancy). Parsing and normalization look correct. |\n| apps/app-lifeops/src/components/LifeOpsSettingsSection.tsx | Adds calendar list + toggle UI in GoogleConnectorSideCard. Correctly uses cancelled-flag cleanup in useEffect. Local state update after toggle correctly matches on both grantId and calendarId, though the backend ignores grantId when persisting. |\n| apps/app-lifeops/src/routes/lifeops-routes.ts | Adds GET /api/lifeops/calendar/calendars and PUT /api/lifeops/calendar/calendars/:id/include routes. Body/path calendarId consistency check is a good defensive guard. |\n| packages/shared/src/contracts/lifeops.ts | Adds LifeOpsCalendarSummary, ListLifeOpsCalendarsRequest/Response, SetLifeOpsCalendarIncludedRequest/Response types, and extends GetLifeOpsCalendarFeedRequest and LifeOpsCalendarEvent. Type design looks correct. |\n| apps/app-lifeops/src/lifeops/service-mixin-calendar.test.ts | New test file covering mergeAggregatedCalendarFeedEvents deduplication and fallback to primary aggregation on empty or unavailable calendar list. Good coverage of the happy path and the 503 fallback. |\n| apps/app-lifeops/src/lifeops/owner-profile.test.ts | Tests for ensureLifeOpsCalendarFeedIncludes (default-true for new, preserve false for existing) and setLifeOpsCalendarFeedIncluded explicit toggle. Tests verify the calendarId-only key behavior — which means they pass even with the multi-account collision issue. |\n| apps/app-lifeops/src/lifeops/google-managed-client.ts | Adds ManagedGoogleCalendarSummaryResponse interface and listCalendars method on GoogleManagedClient. Straightforward delegation to the managed API. |\n| apps/app-lifeops/src/components/LifeOpsWorkspaceView.tsx | Adds eventOriginLabel helper combining calendarSummary and accountEmail; replaces raw accountEmail with it in AccountBadge. Clean change. |\n| apps/app-lifeops/src/components/chat/widgets/plugins/lifeops-channels.tsx | Adds empty-state label and sub-line calendarSummary display to the calendar widget. Structural change from items-center to items-start is appropriate for multi-line event rows. |\n| packages/app-core/src/api/client-lifeops.ts | Adds getLifeOpsCalendars and setLifeOpsCalendarIncluded client methods using appendOptionalParam; mirrors the app-lifeops client implementation. |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant UI as Settings UI\n    participant Client as ElizaClient\n    participant Route as lifeops-routes\n    participant Svc as LifeOpsService\n    participant GMC as GoogleManagedClient\n    participant GCal as Google CalendarList API\n    participant Profile as owner-profile (Task)\n\n    UI->>Client: getLifeOpsCalendars({side, mode})\n    Client->>Route: GET /api/lifeops/calendar/calendars\n    Route->>Svc: listCalendars(url, request)\n    alt cloud_managed grant\n        Svc->>GMC: listCalendars({side, grantId})\n        GMC-->>Svc: ManagedGoogleCalendarSummaryResponse[]\n    else browser/local grant\n        Svc->>GCal: GET calendarList (Bearer token)\n        GCal-->>Svc: GoogleCalendarListEntry[]\n    end\n    Svc->>Profile: ensureLifeOpsCalendarFeedIncludes(calendarIds)\n    Profile-->>Svc: LifeOpsCalendarFeedPreferences\n    Svc-->>Route: LifeOpsCalendarSummary[] (includeInFeed merged)\n    Route-->>Client: { calendars }\n    Client-->>UI: render toggle list\n\n    UI->>Client: setLifeOpsCalendarIncluded({calendarId, includeInFeed, grantId})\n    Client->>Route: PUT /api/lifeops/calendar/calendars/:id/include\n    Route->>Svc: setCalendarIncluded(url, request)\n    Svc->>Svc: listCalendars() — verify existence\n    Svc->>Profile: setLifeOpsCalendarFeedIncluded(calendarId, included)\n    Profile-->>Svc: updated LifeOpsCalendarFeedPreferences\n    Svc-->>Route: updated LifeOpsCalendarSummary\n    Route-->>Client: { calendar }\n    Client-->>UI: optimistic local state update\n```\n\n<!-- greptile_failed_comments -->\n<details><summary><h3>Comments Outside Diff (3)</h3></summary>\n\n1. `apps/app-lifeops/src/lifeops/service-mixin-calendar.ts`, line 1350-1358 ([link](https://github.com/elizaos/eliza/blob/08fdc406cdcb575815fa342c4392a23246aa70e5/apps/app-lifeops/src/lifeops/service-mixin-calendar.ts#L1350-L1358)) \n\n   <a href=\"#\"><img alt=\"P1\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/p1.svg?v=7\" align=\"top\"></a> **Calendar preference key collision for multi-account users**\n\n   `calendarFeedIncludes` is stored as `Record<string, boolean>` keyed only by `calendarId`. Google's calendarList API returns `\"primary\"` as the `calendarId` for every account's primary calendar — so two connected Google accounts will share the same key in the preferences store. Toggling the primary calendar on account A will silently affect account B's primary calendar visibility as well.\n\n   The UI already uses the composite key `${calendar.grantId}:${calendar.calendarId}` for React's `key` prop and for local-state matching after a toggle, but the backend drops `grantId` before persisting. The preference lookup here also ignores `grantId`:\n\n   ```ts\n   preferences.calendarFeedIncludes[summary.calendarId] !== false\n   ```\n\n   The fix is to key preferences by `${grantId}:${calendarId}` throughout (`ensureLifeOpsCalendarFeedIncludes`, `setLifeOpsCalendarFeedIncluded`, and the lookup in `listCalendars`).\n\n\n2. `apps/app-lifeops/src/lifeops/service-mixin-calendar.ts`, line 1432-1458 ([link](https://github.com/elizaos/eliza/blob/08fdc406cdcb575815fa342c4392a23246aa70e5/apps/app-lifeops/src/lifeops/service-mixin-calendar.ts#L1432-L1458)) \n\n   <a href=\"#\"><img alt=\"P2\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/p2.svg?v=7\" align=\"top\"></a> **Fragile error-message substring match for 503 fallback**\n\n   The fallback to primary aggregation is gated on `error.message.includes(\"managed calendar-list route\")`. This is a coupling between the error-throw site in `listCalendars` (same file) and this catch site; if the message is ever rephrased or if a different 503 from the managed client triggers `listCalendars`, the fallback silently does not fire.\n\n   Consider using a dedicated error subclass or a typed error code (`error.code === \"MANAGED_CALENDAR_LIST_UNAVAILABLE\"`) that is stable across refactors and locale-agnostic.\n\n\n3. `apps/app-lifeops/src/lifeops/service-mixin-calendar.ts`, line 1380-1401 ([link](https://github.com/elizaos/eliza/blob/08fdc406cdcb575815fa342c4392a23246aa70e5/apps/app-lifeops/src/lifeops/service-mixin-calendar.ts#L1380-L1401)) \n\n   <a href=\"#\"><img alt=\"P2\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/p2.svg?v=7\" align=\"top\"></a> **`setCalendarIncluded` issues a full Google API round-trip to validate the calendar**\n\n   `setCalendarIncluded` calls `this.listCalendars(...)` — which hits either the managed cloud API or Google's calendarList endpoint for every grant — purely to confirm the target `calendarId` exists before writing the preference. For users with several connected accounts this means multiple external calls on every toggle.\n\n   Consider persisting a local snapshot of known calendars (already returned to the UI) so this validation can be done from cache, or skip the existence check if it's acceptable to trust the client-supplied `calendarId`.\n\n</details>\n\n<!-- /greptile_failed_comments -->\n\n<sub>Reviews (1): Last reviewed commit: [\"fix(lifeops): fall back when managed cal...\"](https://github.com/elizaos/eliza/commit/08fdc406cdcb575815fa342c4392a23246aa70e5) | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=29510472)</sub>\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-23T20:08:10Z",
      "mergedAt": "2026-04-24T03:23:53Z",
      "additions": 1315,
      "deletions": 35
    },
    {
      "id": "PR_kwDOMT5cIs7U1cIm",
      "title": "settings UI polish: dropdown sizing, model picker, layout pairing, header drag-strip fix, hot-reload shutdown timeout",
      "author": "binkyfishai",
      "number": 7059,
      "body": "## Summary\n\nA batch of focused fixes to the elizaOS app shell + settings UI, all six commits stacked cleanly on top of \\`develop\\`:\n\n- **a3f9fdddc3** \\`feat(settings): constrain provider dropdown, drop Advanced Dashboard button, add simple Model picker\\`\n  - Cap \\`SelectTrigger\\` at \\`max-w-sm\\` (was stretching to full panel width) and \\`SelectContent\\` at \\`max-h-64\\`.\n  - Add a single Model dropdown in the AI Model card so users can pick the primary tier without clicking \"Show advanced\".\n  - Remove the \\`elizaclouddashboard.AdvancedDashboard\\` external-link button from the Cloud overview row (and the now-unused \\`ELIZA_CLOUD_INSTANCES_URL\\` import).\n\n- **f4fe726f6a** \\`feat(settings): add cloud media model picker, advanced-gate companion perf, side-by-side AI/Media layout\\`\n  - In MediaSettingsSection, surface a per-category Model select for cloud mode (image/video/audio/vision) writing to \\`<category>.cloud.model\\` (new \\`CloudMediaConfig\\` type + zod schema entry, additive).\n  - Hide the 3D companion performance controls behind \\`Show advanced\\`.\n  - Pair AI Model + Media in a 2-col grid on \\`xl\\`; Appearance flows into the left column.\n\n- **aeca256d36** \\`fix(settings,shell): hide local-ai from provider dropdown; push header below native mac drag strip\\`\n  - Filter the AI provider dropdown to only catalog-recognised entries — \\`local-ai\\` was offered but the backend's \\`/api/provider/switch\\` rejected it (it's configured via the dedicated Local Models section).\n  - Apply the previously-declared-but-unconsumed \\`--eliza-macos-frame-top-inset\\` as \\`padding-top\\` on the header toolbar wrapper. Without it, the top ~22pt of every nav button sits under the native \\`ElectrobunNativeDragView\\` (window-effects.mm), so only the bottom half of each tab is click-through. Falls back to \\`0.25rem\\` when the frameless class isn't present (web / detached shells).\n\n- **f9420a3b4e** \\`fix(settings): cap Permissions section width (max-w-3xl)\\` _(superseded — see below)_\n\n- **f08629c09f** \\`refactor(settings): pair remaining sections into 2-col grids; drop Permissions width cap\\`\n  - Group Local Models + Coding Agents into one \\`xl:grid-cols-2\\` row.\n  - Group Capabilities + Permissions into another.\n  - Drop the max-w-3xl cap inside PermissionsSection so it fills its grid column naturally.\n\n- **e35a10d706** \\`fix(runtime): cap hot-reload shutdown at 2s so provider switches don't block on PTY teardown\\`\n  - \\`runtime.stop()\\` awaits every service.stop() sequentially. PTYService.stop drains active sessions with a per-session timeout (~5s), so any one idle PTY session turns a provider-dropdown click into a multi-second block, during which the server's \\`providerSwitchInProgress\\` flag rejects further clicks with 409 — the \"switch feels stuck / dropdown reverts\" UX.\n  - Wrap \\`shutdownRuntime()\\` in the hot-reload \\`onRestart\\` path with a 2 s \\`Promise.race\\`. If the old runtime stops in time, great; otherwise log and bring up the new runtime anyway. Services that miss the window are GC'd as the reference drops.\n\n## Test plan\n\n- [ ] Settings → AI Model: provider dropdown caps at 384 px wide; popover scrolls within ~256 px instead of \\~384 px.\n- [ ] Settings → AI Model: Model picker visible without \"Show advanced\"; selecting a model persists and triggers a restart.\n- [ ] Settings → AI Model: provider dropdown no longer lists \"Local AI\"; switching to any catalog provider succeeds.\n- [ ] Settings → Cloud Dashboard: \"Advanced External Dashboard\" link is gone from the overview row.\n- [ ] Settings → Media: cloud mode shows a per-category Model select for image/video/audio/vision; companion 3D controls only visible with \"Show advanced\" on.\n- [ ] Settings layout: at \\`xl\\` (≥1280px), AI Model + Appearance share a column with Media on the right; Local Models + Coding Agents pair below; Capabilities + Permissions pair below that.\n- [ ] macOS Electrobun shell: top of every header nav tab is now click-through (no longer hits the native drag NSView).\n- [ ] Rapidly click through 3+ providers in the dropdown — no \"stuck\" 5+ second block; restart completes inside ~3 s even with active PTY sessions.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\nThis PR delivers a batch of UI polish across the settings shell: dropdown width capping, a simple-mode primary model picker, per-category cloud media model selectors, 2-col xl grid layouts, local-ai filtered out of the provider dropdown, the macOS drag-strip header fix, and a 2 s `Promise.race` timeout on hot-reload shutdown to eliminate PTY-induced provider-switch stalls.\n\n- **P1 (`eliza.ts`)**: `Promise.race` resolves via the 2 s timer but leaves `shutdownRuntime` still running with no `.catch`. If it subsequently rejects, Node.js surfaces an unhandled rejection (process-crashing in Node ≥ v15 default mode). The fix is to attach `.catch` to the shutdown promise before passing it to the race.\n\n<h3>Confidence Score: 4/5</h3>\n\nSafe to merge after fixing the unhandled-rejection bug in the hot-reload shutdown race.\n\nAll seven UI/type changes are low-risk and well-structured; the one P1 is in the runtime hot-reload path where a late-throwing shutdownRuntime could produce an unhandled rejection that crashes the process.\n\npackages/agent/src/runtime/eliza.ts — the Promise.race pattern around shutdownRuntime needs a .catch on the shutdown promise to prevent unhandled rejections.\n\n<h3>Important Files Changed</h3>\n\n\n\n\n| Filename | Overview |\n|----------|----------|\n| packages/agent/src/runtime/eliza.ts | Adds a 2 s Promise.race timeout around shutdownRuntime in the hot-reload path — solves the PTY-stall UX — but the dangling shutdownRuntime promise can produce an unhandled rejection if it throws after the timer fires (P1). |\n| packages/app-core/src/components/pages/SettingsView.tsx | Adds simple/advanced complexity toggle with localStorage persistence, 2-col xl grid layouts for paired sections, and section-level visibility gating. activeSection is correctly reset via useEffect when a section becomes invisible. |\n| packages/app-core/src/components/settings/ProviderSwitcher.tsx | Filters out providers with no ONBOARDING_PROVIDER_CATALOG entry (fixing local-ai), constrains dropdown width, adds a simple-mode primary model picker, and hides the 7-dropdown cloud model grid behind showAdvanced. |\n| packages/app-core/src/components/settings/MediaSettingsSection.tsx | Adds per-category cloud model dropdowns (writing to category.cloud.model), replaces SegmentedGroup tabs with icon+underline tab bar, and gates 3D companion controls behind showAdvanced. Contains a redundant activeTab !== \"voice\" guard (P2). |\n| packages/app-core/src/config/zod-schema.core.ts | Additive: introduces CloudMediaConfigSchema (strict, optional object with optional model string) and wires it into ImageConfigSchema, VideoConfigSchema, AudioGenConfigSchema, and VisionConfigSchema. |\n| packages/agent/src/contracts/config.ts | Additive type changes: introduces CloudMediaConfig and adds optional cloud field to all four media config types. Mirrors the zod-schema changes correctly. |\n| packages/app-core/src/components/pages/ElizaCloudDashboard.tsx | Removes the AdvancedDashboard external-link button and unused ELIZA_CLOUD_INSTANCES_URL import; shrinks the balance display to a more compact inline layout. |\n| packages/ui/src/components/shell/Header.tsx | Applies --eliza-macos-frame-top-inset as inline paddingTop on the toolbar wrapper so nav buttons clear the native macOS drag strip; falls back to 0.25rem on other shells. |\n\n</details>\n\n\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant UI as ProviderSwitcher (UI)\n    participant API as /api/provider/switch\n    participant Eliza as startEliza onRestart\n    participant RT as shutdownRuntime\n    participant Timer as 2s Timer\n\n    UI->>API: POST /provider/switch\n    API->>Eliza: onRestart()\n    Eliza->>RT: shutdownRuntime() [async]\n    Eliza->>Timer: setTimeout(2000ms)\n    alt shutdown completes < 2s\n        RT-->>Eliza: resolved\n        Note over Timer: timer still fires later (handle not cleared)\n    else shutdown exceeds 2s\n        Timer-->>Eliza: resolved (shutdownTimedOut=true)\n        Note over RT: still running — if it rejects, UNHANDLED REJECTION\n    end\n    Eliza->>Eliza: loadElizaConfig() + start new runtime\n    Eliza-->>API: new runtime ready\n    API-->>UI: 200 OK\n```\n\n<!-- greptile_failed_comments -->\n<details><summary><h3>Comments Outside Diff (2)</h3></summary>\n\n1. `packages/agent/src/runtime/eliza.ts`, line 3895-3916 ([link](https://github.com/elizaos/eliza/blob/e35a10d706b6b033fe3d490cb08ee5eba429d4ae/packages/agent/src/runtime/eliza.ts#L3895-L3916)) \n\n   <a href=\"#\"><img alt=\"P1\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/p1.svg?v=7\" align=\"top\"></a> **Unhandled rejection when `shutdownRuntime` throws after the 2 s timeout**\n\n   `Promise.race` resolves via the timer if shutdown takes longer than 2 s, but the `shutdownRuntime` promise is still running in the background. If it subsequently rejects, that rejection has no `.catch` handler — the outer `try/catch` only guards `Promise.race` itself, not the dangling promise. In Node.js ≥ v15 (with `--unhandled-rejections=throw`) this crashes the process.\n\n   Fix: attach a `.catch` to the shutdown promise before passing it to the race so any late rejection is absorbed:\n\n   ```\n   try {\n     const SHUTDOWN_TIMEOUT_MS = 2000;\n     let shutdownTimedOut = false;\n     const shutdownPromise = shutdownRuntime(runtime, \"hot-reload cleanup\").catch(\n       (stopErr) => {\n         logger.warn(\n           `[eliza] Hot-reload: old runtime stop failed: ${formatError(stopErr)}`,\n         );\n       },\n     );\n     await Promise.race([\n       shutdownPromise,\n       new Promise<void>((resolve) =>\n         setTimeout(() => {\n           shutdownTimedOut = true;\n           resolve();\n         }, SHUTDOWN_TIMEOUT_MS),\n       ),\n     ]);\n     if (shutdownTimedOut) {\n       logger.warn(\n         `[eliza] Hot-reload: old runtime shutdown exceeded ${SHUTDOWN_TIMEOUT_MS}ms; proceeding with new runtime`,\n       );\n     }\n   } catch (stopErr) {\n     logger.warn(\n       `[eliza] Hot-reload: old runtime stop failed: ${formatError(stopErr)}`,\n     );\n   }\n   ```\n\n\n2. `packages/app-core/src/components/settings/MediaSettingsSection.tsx`, line 782-784 ([link](https://github.com/elizaos/eliza/blob/e35a10d706b6b033fe3d490cb08ee5eba429d4ae/packages/app-core/src/components/settings/MediaSettingsSection.tsx#L782-L784)) \n\n   <a href=\"#\"><img alt=\"P2\" src=\"https://greptile-static-assets.s3.amazonaws.com/badges/p2.svg?v=7\" align=\"top\"></a> **Redundant `activeTab !== \"voice\"` guard**\n\n   This code lives inside the `else` branch of the `activeTab === \"voice\" ? … : …` ternary (outer JSX), so `activeTab` is already guaranteed to be non-`\"voice\"` here. The extra check is a no-op but signals potential confusion about the render tree structure.\n\n</details>\n\n<!-- /greptile_failed_comments -->\n\n<sub>Reviews (1): Last reviewed commit: [\"fix(runtime): cap hot-reload shutdown at...\"](https://github.com/elizaos/eliza/commit/e35a10d706b6b033fe3d490cb08ee5eba429d4ae) | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=29373689)</sub>\n\n> Greptile also left **1 inline comment** on this PR.\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-23T03:09:44Z",
      "mergedAt": "2026-04-23T04:03:16Z",
      "additions": 505,
      "deletions": 180
    },
    {
      "id": "PR_kwDOMT5cIs7U0OVe",
      "title": "Complete Android default role wiring",
      "author": "lalalune",
      "number": 7052,
      "body": "<!-- Use this template by filling in information and copying and pasting relevant items out of the HTML comments. -->\r\n\r\n# Relates to\r\n\r\n<!-- LINK TO ISSUE OR TICKET -->\r\n\r\n<!-- This risks section must be filled out before the final review and merge. -->\r\n\r\n# Risks\r\n\r\n<!--\r\nLow, medium, large. List what kind of risks and what could be affected.\r\n-->\r\n\r\n# Background\r\n\r\n## What does this PR do?\r\n\r\n## What kind of change is this?\r\n\r\n<!--\r\nBug fixes (non-breaking change which fixes an issue)\r\nImprovements (misc. changes to existing features)\r\nFeatures (non-breaking change which adds functionality)\r\nUpdates (new versions of included code)\r\n-->\r\n\r\n<!-- This \"Why\" section is most relevant if there are no linked issues explaining why. If there is a related issue, it might make sense to skip this why section. -->\r\n<!--\r\n## Why are we doing this? Any context or related work?\r\n-->\r\n\r\n# Documentation changes needed?\r\n\r\n<!--\r\nMy changes do not require a change to the project documentation.\r\nMy changes require a change to the project documentation.\r\nIf documentation change is needed: I have updated the documentation accordingly.\r\n-->\r\n\r\n<!-- Please show how you tested the PR. This will really help if the PR needs to be retested and probably help the PR get merged quicker. -->\r\n\r\n# Testing\r\n\r\n## Where should a reviewer start?\r\n\r\n## Detailed testing steps\r\n\r\n<!--\r\nNone: Automated tests are acceptable.\r\n-->\r\n\r\n<!--\r\n- As [anon/admin], go to [link]\r\n  - [do action]\r\n  - verify [result]\r\n-->\r\n\r\n<!-- If there is a UI change, please include before and after screenshots or videos. This will speed up PRs being merged. It is extra nice to annotate screenshots with arrows or boxes pointing out the differences. -->\r\n<!--\r\n## Screenshots\r\n### Before\r\n### After\r\n-->\r\n\r\n<!-- If there is anything about the deployment, please make a note. -->\r\n<!--\r\n# Deploy Notes\r\n-->\r\n\r\n<!--  Copy and paste command line output. -->\r\n<!--\r\n## Database changes\r\n-->\r\n\r\n<!--  Please specify deploy instructions if there is something more than the automated steps. -->\r\n<!--\r\n## Deployment instructions\r\n-->\r\n\r\n<!-- If you are on Discord, please join https://discord.gg/ai16z and state your Discord username here for the contributor role and join us in #development-feed -->\r\n<!--\r\n## Discord username\r\n\r\n-->\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\nThis PR wires up two new Android components — `MiladyRespondViaMessageService` (handles quick-reply SMS when declining calls) and `MiladySmsComposeActivity` (intercepts `SENDTO` intents and deep-links into the app's compose screen) — and updates the build script to copy their Java sources and inject the corresponding manifest entries idempotently.\n\n<h3>Confidence Score: 5/5</h3>\n\nSafe to merge; all findings are P2 style/best-practice suggestions that do not block functionality.\n\nThe two new Java files are straightforward and functionally correct. The build-script changes cleanly remove-then-re-inject manifest blocks. The only issues are a deprecated API (getDefault()) that still works and a mismatch between declared MMS schemes and the SMS-only send implementation — both are minor and do not break the primary use-case.\n\nMiladyRespondViaMessageService.java — deprecated SmsManager API and mms/mmsto scheme handling.\n\n<h3>Important Files Changed</h3>\n\n| Filename | Overview |\n|----------|----------|\n| packages/app-core/platforms/android/app/src/main/java/ai/elizaos/app/MiladyRespondViaMessageService.java | New service that handles RESPOND_VIA_MESSAGE intents and sends SMS; uses deprecated SmsManager.getDefault() and declares MMS schemes it doesn't actually service. |\n| packages/app-core/platforms/android/app/src/main/java/ai/elizaos/app/MiladySmsComposeActivity.java | New transparent activity that intercepts SENDTO intents and routes them into the app's deep-link compose flow; logic is straightforward and correct. |\n| packages/app-core/scripts/run-mobile-build.mjs | Build script updated to copy new Java sources, remove stale manifest entries via regex, and inject updated manifest blocks for RESPOND_VIA_MESSAGE service and SENDTO compose activity. |\n\n</details>\n\n<h3>Sequence Diagram</h3>\n\n```mermaid\nsequenceDiagram\n    participant System as Android System\n    participant RVMS as MiladyRespondViaMessageService\n    participant SMSCompose as MiladySmsComposeActivity\n    participant Main as MainActivity\n\n    Note over System,RVMS: Decline-call quick reply\n    System->>RVMS: startService(RESPOND_VIA_MESSAGE, sms/smsto URI)\n    RVMS->>RVMS: parseRecipients(uri)\n    RVMS->>System: SmsManager.sendTextMessage(recipient, message)\n    RVMS->>RVMS: stopSelf()\n\n    Note over System,Main: Compose new SMS (SENDTO intent)\n    System->>SMSCompose: startActivity(SENDTO, sms:/smsto: URI)\n    SMSCompose->>SMSCompose: extract recipient + body\n    SMSCompose->>Main: startActivity(ai.elizaos.app://messages/compose?recipient=...&body=...)\n    SMSCompose->>SMSCompose: finish()\n```\n\n<sub>Reviews (1): Last reviewed commit: [\"Complete Android default role wiring\"](https://github.com/elizaos/eliza/commit/7bb3fbe780075d6b3939c8f3f2329c1ea1c44b29) | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=29367742)</sub>\n\n> Greptile also left **2 inline comments** on this PR.\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-23T01:44:35Z",
      "mergedAt": "2026-04-23T04:03:15Z",
      "additions": 222,
      "deletions": 0
    },
    {
      "id": "PR_kwDOMT5cIs7Ux4pd",
      "title": "chore(deps): bump the npm_and_yarn group across 28 directories with 1 update",
      "author": "dependabot",
      "number": 7044,
      "body": "Bumps the npm_and_yarn group with 1 update in the /apps/app-form directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/a2a/typescript directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/app/capacitor/backend directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/app/electron/backend directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/autonomous/typescript directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/avatar directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/bluesky/typescript directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/browser-extension/chrome directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/chat/typescript directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/cloudflare directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/code directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/convex directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/discord/typescript directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/form/typescript directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/gcp/typescript directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/mcp/typescript directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/moltbook directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/next directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/polymarket/typescript directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/react directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/react-wasm directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/rest-api/elysia directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/rest-api/express directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/rest-api/hono directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/roblox/typescript directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/text-adventure/typescript directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/vercel directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/typescript directory: [uuid](https://github.com/uuidjs/uuid).\n\nUpdates `uuid` from 13.0.0 to 14.0.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/releases\">uuid's releases</a>.</em></p>\n<blockquote>\n<h2>v14.0.0</h2>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n</ul>\n<h3>Features</h3>\n<ul>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\">dc4ddb8</a>)</li>\n</ul>\n<h3>Bug Fixes</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\">f2c235f</a>)</li>\n<li>Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\">ffa3138</a>)</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md\">uuid's changelog</a>.</em></p>\n<blockquote>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>Security</h3>\n<ul>\n<li>Fixes <a href=\"https://github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq\">GHSA-w5hq-g745-h8pq</a>: <code>v3()</code>, <code>v5()</code>, and <code>v6()</code> did not validate that writes would remain within the bounds of a caller-supplied buffer, allowing out-of-bounds writes when an invalid <code>offset</code> was provided. A <code>RangeError</code> is now thrown if <code>offset &lt; 0</code> or <code>offset + 16 &gt; buf.length</code>.</li>\n</ul>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li><code>crypto</code> is now expected to be globally defined (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li>upgrade minimum supported TypeScript version to 5.4.3, in keeping with the project's policy of supporting TypeScript versions released within the last two years</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/7c1ea087a8149b57380fc8bb7f68c3a215cb6e4b\"><code>7c1ea08</code></a> chore(main): release 14.0.0 (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/926\">#926</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/3d2c5b0342f0fcb52a5ac681c3d47c13e7444b34\"><code>3d2c5b0</code></a> Merge commit from fork</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\"><code>f2c235f</code></a> fix!: expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/529ef0899f5dd503d2ee90d690585d63d78bc212\"><code>529ef08</code></a> chore: upgrade TypeScript and fixup types (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/927\">#927</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/086fd7976f11433edf9ac80be876b3ad243fe087\"><code>086fd79</code></a> chore: update dependencies (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/933\">#933</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\"><code>dc4ddb8</code></a> feat!: drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0f1f9c9c9cedbae5a1d363d5406c5dfbabe81404\"><code>0f1f9c9</code></a> chore: switch to Biome for parsing and linting (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/932\">#932</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/e2879e64bf125add903c1eff6e0860542c605013\"><code>e2879e6</code></a> chore: use maintained version of npm-run-all (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/930\">#930</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\"><code>ffa3138</code></a> fix: Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0423d49df2dc8efc300c804731d25f4d7e0fccc4\"><code>0423d49</code></a> docs: remove obsolete v1 option notes (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/915\">#915</a>)</li>\n<li>Additional commits viewable in <a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">compare view</a></li>\n</ul>\n</details>\n<details>\n<summary>Maintainer changes</summary>\n<p>This version was pushed to npm by <a href=\"https://www.npmjs.com/~GitHub%20Actions\">GitHub Actions</a>, a new releaser for uuid since your current version.</p>\n</details>\n<br />\n\nUpdates `uuid` from 13.0.0 to 14.0.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/releases\">uuid's releases</a>.</em></p>\n<blockquote>\n<h2>v14.0.0</h2>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n</ul>\n<h3>Features</h3>\n<ul>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\">dc4ddb8</a>)</li>\n</ul>\n<h3>Bug Fixes</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\">f2c235f</a>)</li>\n<li>Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\">ffa3138</a>)</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md\">uuid's changelog</a>.</em></p>\n<blockquote>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>Security</h3>\n<ul>\n<li>Fixes <a href=\"https://github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq\">GHSA-w5hq-g745-h8pq</a>: <code>v3()</code>, <code>v5()</code>, and <code>v6()</code> did not validate that writes would remain within the bounds of a caller-supplied buffer, allowing out-of-bounds writes when an invalid <code>offset</code> was provided. A <code>RangeError</code> is now thrown if <code>offset &lt; 0</code> or <code>offset + 16 &gt; buf.length</code>.</li>\n</ul>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li><code>crypto</code> is now expected to be globally defined (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li>upgrade minimum supported TypeScript version to 5.4.3, in keeping with the project's policy of supporting TypeScript versions released within the last two years</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/7c1ea087a8149b57380fc8bb7f68c3a215cb6e4b\"><code>7c1ea08</code></a> chore(main): release 14.0.0 (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/926\">#926</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/3d2c5b0342f0fcb52a5ac681c3d47c13e7444b34\"><code>3d2c5b0</code></a> Merge commit from fork</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\"><code>f2c235f</code></a> fix!: expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/529ef0899f5dd503d2ee90d690585d63d78bc212\"><code>529ef08</code></a> chore: upgrade TypeScript and fixup types (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/927\">#927</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/086fd7976f11433edf9ac80be876b3ad243fe087\"><code>086fd79</code></a> chore: update dependencies (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/933\">#933</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\"><code>dc4ddb8</code></a> feat!: drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0f1f9c9c9cedbae5a1d363d5406c5dfbabe81404\"><code>0f1f9c9</code></a> chore: switch to Biome for parsing and linting (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/932\">#932</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/e2879e64bf125add903c1eff6e0860542c605013\"><code>e2879e6</code></a> chore: use maintained version of npm-run-all (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/930\">#930</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\"><code>ffa3138</code></a> fix: Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0423d49df2dc8efc300c804731d25f4d7e0fccc4\"><code>0423d49</code></a> docs: remove obsolete v1 option notes (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/915\">#915</a>)</li>\n<li>Additional commits viewable in <a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">compare view</a></li>\n</ul>\n</details>\n<details>\n<summary>Maintainer changes</summary>\n<p>This version was pushed to npm by <a href=\"https://www.npmjs.com/~GitHub%20Actions\">GitHub Actions</a>, a new releaser for uuid since your current version.</p>\n</details>\n<br />\n\nUpdates `uuid` from 13.0.0 to 14.0.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/releases\">uuid's releases</a>.</em></p>\n<blockquote>\n<h2>v14.0.0</h2>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n</ul>\n<h3>Features</h3>\n<ul>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\">dc4ddb8</a>)</li>\n</ul>\n<h3>Bug Fixes</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\">f2c235f</a>)</li>\n<li>Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\">ffa3138</a>)</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md\">uuid's changelog</a>.</em></p>\n<blockquote>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>Security</h3>\n<ul>\n<li>Fixes <a href=\"https://github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq\">GHSA-w5hq-g745-h8pq</a>: <code>v3()</code>, <code>v5()</code>, and <code>v6()</code> did not validate that writes would remain within the bounds of a caller-supplied buffer, allowing out-of-bounds writes when an invalid <code>offset</code> was provided. A <code>RangeError</code> is now thrown if <code>offset &lt; 0</code> or <code>offset + 16 &gt; buf.length</code>.</li>\n</ul>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li><code>crypto</code> is now expected to be globally defined (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li>upgrade minimum supported TypeScript version to 5.4.3, in keeping with the project's policy of supporting TypeScript versions released within the last two years</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/7c1ea087a8149b57380fc8bb7f68c3a215cb6e4b\"><code>7c1ea08</code></a> chore(main): release 14.0.0 (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/926\">#926</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/3d2c5b0342f0fcb52a5ac681c3d47c13e7444b34\"><code>3d2c5b0</code></a> Merge commit from fork</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\"><code>f2c235f</code></a> fix!: expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/529ef0899f5dd503d2ee90d690585d63d78bc212\"><code>529ef08</code></a> chore: upgrade TypeScript and fixup types (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/927\">#927</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/086fd7976f11433edf9ac80be876b3ad243fe087\"><code>086fd79</code></a> chore: update dependencies (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/933\">#933</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\"><code>dc4ddb8</code></a> feat!: drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0f1f9c9c9cedbae5a1d363d5406c5dfbabe81404\"><code>0f1f9c9</code></a> chore: switch to Biome for parsing and linting (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/932\">#932</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/e2879e64bf125add903c1eff6e0860542c605013\"><code>e2879e6</code></a> chore: use maintained version of npm-run-all (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/930\">#930</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\"><code>ffa3138</code></a> fix: Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0423d49df2dc8efc300c804731d25f4d7e0fccc4\"><code>0423d49</code></a> docs: remove obsolete v1 option notes (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/915\">#915</a>)</li>\n<li>Additional commits viewable in <a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">compare view</a></li>\n</ul>\n</details>\n<details>\n<summary>Maintainer changes</summary>\n<p>This version was pushed to npm by <a href=\"https://www.npmjs.com/~GitHub%20Actions\">GitHub Actions</a>, a new releaser for uuid since your current version.</p>\n</details>\n<br />\n\nUpdates `uuid` from 13.0.0 to 14.0.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/releases\">uuid's releases</a>.</em></p>\n<blockquote>\n<h2>v14.0.0</h2>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n</ul>\n<h3>Features</h3>\n<ul>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\">dc4ddb8</a>)</li>\n</ul>\n<h3>Bug Fixes</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\">f2c235f</a>)</li>\n<li>Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\">ffa3138</a>)</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md\">uuid's changelog</a>.</em></p>\n<blockquote>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>Security</h3>\n<ul>\n<li>Fixes <a href=\"https://github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq\">GHSA-w5hq-g745-h8pq</a>: <code>v3()</code>, <code>v5()</code>, and <code>v6()</code> did not validate that writes would remain within the bounds of a caller-supplied buffer, allowing out-of-bounds writes when an invalid <code>offset</code> was provided. A <code>RangeError</code> is now thrown if <code>offset &lt; 0</code> or <code>offset + 16 &gt; buf.length</code>.</li>\n</ul>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li><code>crypto</code> is now expected to be globally defined (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li>upgrade minimum supported TypeScript version to 5.4.3, in keeping with the project's policy of supporting TypeScript versions released within the last two years</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/7c1ea087a8149b57380fc8bb7f68c3a215cb6e4b\"><code>7c1ea08</code></a> chore(main): release 14.0.0 (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/926\">#926</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/3d2c5b0342f0fcb52a5ac681c3d47c13e7444b34\"><code>3d2c5b0</code></a> Merge commit from fork</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\"><code>f2c235f</code></a> fix!: expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/529ef0899f5dd503d2ee90d690585d63d78bc212\"><code>529ef08</code></a> chore: upgrade TypeScript and fixup types (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/927\">#927</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/086fd7976f11433edf9ac80be876b3ad243fe087\"><code>086fd79</code></a> chore: update dependencies (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/933\">#933</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\"><code>dc4ddb8</code></a> feat!: drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0f1f9c9c9cedbae5a1d363d5406c5dfbabe81404\"><code>0f1f9c9</code></a> chore: switch to Biome for parsing and linting (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/932\">#932</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/e2879e64bf125add903c1eff6e0860542c605013\"><code>e2879e6</code></a> chore: use maintained version of npm-run-all (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/930\">#930</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\"><code>ffa3138</code></a> fix: Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0423d49df2dc8efc300c804731d25f4d7e0fccc4\"><code>0423d49</code></a> docs: remove obsolete v1 option notes (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/915\">#915</a>)</li>\n<li>Additional commits viewable in <a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">compare view</a></li>\n</ul>\n</details>\n<details>\n<summary>Maintainer changes</summary>\n<p>This version was pushed to npm by <a href=\"https://www.npmjs.com/~GitHub%20Actions\">GitHub Actions</a>, a new releaser for uuid since your current version.</p>\n</details>\n<br />\n\nUpdates `uuid` from 13.0.0 to 14.0.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/releases\">uuid's releases</a>.</em></p>\n<blockquote>\n<h2>v14.0.0</h2>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n</ul>\n<h3>Features</h3>\n<ul>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\">dc4ddb8</a>)</li>\n</ul>\n<h3>Bug Fixes</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\">f2c235f</a>)</li>\n<li>Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\">ffa3138</a>)</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md\">uuid's changelog</a>.</em></p>\n<blockquote>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>Security</h3>\n<ul>\n<li>Fixes <a href=\"https://github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq\">GHSA-w5hq-g745-h8pq</a>: <code>v3()</code>, <code>v5()</code>, and <code>v6()</code> did not validate that writes would remain within the bounds of a caller-supplied buffer, allowing out-of-bounds writes when an invalid <code>offset</code> was provided. A <code>RangeError</code> is now thrown if <code>offset &lt; 0</code> or <code>offset + 16 &gt; buf.length</code>.</li>\n</ul>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li><code>crypto</code> is now expected to be globally defined (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li>upgrade minimum supported TypeScript version to 5.4.3, in keeping with the project's policy of supporting TypeScript versions released within the last two years</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/7c1ea087a8149b57380fc8bb7f68c3a215cb6e4b\"><code>7c1ea08</code></a> chore(main): release 14.0.0 (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/926\">#926</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/3d2c5b0342f0fcb52a5ac681c3d47c13e7444b34\"><code>3d2c5b0</code></a> Merge commit from fork</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\"><code>f2c235f</code></a> fix!: expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/529ef0899f5dd503d2ee90d690585d63d78bc212\"><code>529ef08</code></a> chore: upgrade TypeScript and fixup types (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/927\">#927</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/086fd7976f11433edf9ac80be876b3ad243fe087\"><code>086fd79</code></a> chore: update dependencies (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/933\">#933</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\"><code>dc4ddb8</code></a> feat!: drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0f1f9c9c9cedbae5a1d363d5406c5dfbabe81404\"><code>0f1f9c9</code></a> chore: switch to Biome for parsing and linting (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/932\">#932</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/e2879e64bf125add903c1eff6e0860542c605013\"><code>e2879e6</code></a> chore: use maintained version of npm-run-all (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/930\">#930</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\"><code>ffa3138</code></a> fix: Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0423d49df2dc8efc300c804731d25f4d7e0fccc4\"><code>0423d49</code></a> docs: remove obsolete v1 option notes (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/915\">#915</a>)</li>\n<li>Additional commits viewable in <a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">compare view</a></li>\n</ul>\n</details>\n<details>\n<summary>Maintainer changes</summary>\n<p>This version was pushed to npm by <a href=\"https://www.npmjs.com/~GitHub%20Actions\">GitHub Actions</a>, a new releaser for uuid since your current version.</p>\n</details>\n<br />\n\nUpdates `uuid` from 11.1.0 to 14.0.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/releases\">uuid's releases</a>.</em></p>\n<blockquote>\n<h2>v14.0.0</h2>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n</ul>\n<h3>Features</h3>\n<ul>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\">dc4ddb8</a>)</li>\n</ul>\n<h3>Bug Fixes</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\">f2c235f</a>)</li>\n<li>Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\">ffa3138</a>)</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md\">uuid's changelog</a>.</em></p>\n<blockquote>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>Security</h3>\n<ul>\n<li>Fixes <a href=\"https://github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq\">GHSA-w5hq-g745-h8pq</a>: <code>v3()</code>, <code>v5()</code>, and <code>v6()</code> did not validate that writes would remain within the bounds of a caller-supplied buffer, allowing out-of-bounds writes when an invalid <code>offset</code> was provided. A <code>RangeError</code> is now thrown if <code>offset &lt; 0</code> or <code>offset + 16 &gt; buf.length</code>.</li>\n</ul>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li><code>crypto</code> is now expected to be globally defined (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li>upgrade minimum supported TypeScript version to 5.4.3, in keeping with the project's policy of supporting TypeScript versions released within the last two years</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/7c1ea087a8149b57380fc8bb7f68c3a215cb6e4b\"><code>7c1ea08</code></a> chore(main): release 14.0.0 (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/926\">#926</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/3d2c5b0342f0fcb52a5ac681c3d47c13e7444b34\"><code>3d2c5b0</code></a> Merge commit from fork</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\"><code>f2c235f</code></a> fix!: expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/529ef0899f5dd503d2ee90d690585d63d78bc212\"><code>529ef08</code></a> chore: upgrade TypeScript and fixup types (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/927\">#927</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/086fd7976f11433edf9ac80be876b3ad243fe087\"><code>086fd79</code></a> chore: update dependencies (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/933\">#933</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\"><code>dc4ddb8</code></a> feat!: drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0f1f9c9c9cedbae5a1d363d5406c5dfbabe81404\"><code>0f1f9c9</code></a> chore: switch to Biome for parsing and linting (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/932\">#932</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/e2879e64bf125add903c1eff6e0860542c605013\"><code>e2879e6</code></a> chore: use maintained version of npm-run-all (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/930\">#930</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\"><code>ffa3138</code></a> fix: Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0423d49df2dc8efc300c804731d25f4d7e0fccc4\"><code>0423d49</code></a> docs: remove obsolete v1 option notes (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/915\">#915</a>)</li>\n<li>Additional commits viewable in <a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">compare view</a></li>\n</ul>\n</details>\n<details>\n<summary>Maintainer changes</summary>\n<p>This version was pushed to npm by <a href=\"https://www.npmjs.com/~GitHub%20Actions\">GitHub Actions</a>, a new releaser for uuid since your current version.</p>\n</details>\n<br />\n\nUpdates `uuid` from 13.0.0 to 14.0.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/releases\">uuid's releases</a>.</em></p>\n<blockquote>\n<h2>v14.0.0</h2>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n</ul>\n<h3>Features</h3>\n<ul>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\">dc4ddb8</a>)</li>\n</ul>\n<h3>Bug Fixes</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\">f2c235f</a>)</li>\n<li>Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\">ffa3138</a>)</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md\">uuid's changelog</a>.</em></p>\n<blockquote>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>Security</h3>\n<ul>\n<li>Fixes <a href=\"https://github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq\">GHSA-w5hq-g745-h8pq</a>: <code>v3()</code>, <code>v5()</code>, and <code>v6()</code> did not validate that writes would remain within the bounds of a caller-supplied buffer, allowing out-of-bounds writes when an invalid <code>offset</code> was provided. A <code>RangeError</code> is now thrown if <code>offset &lt; 0</code> or <code>offset + 16 &gt; buf.length</code>.</li>\n</ul>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li><code>crypto</code> is now expected to be globally defined (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li>upgrade minimum supported TypeScript version to 5.4.3, in keeping with the project's policy of supporting TypeScript versions released within the last two years</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/7c1ea087a8149b57380fc8bb7f68c3a215cb6e4b\"><code>7c1ea08</code></a> chore(main): release 14.0.0 (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/926\">#926</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/3d2c5b0342f0fcb52a5ac681c3d47c13e7444b34\"><code>3d2c5b0</code></a> Merge commit from fork</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\"><code>f2c235f</code></a> fix!: expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/529ef0899f5dd503d2ee90d690585d63d78bc212\"><code>529ef08</code></a> chore: upgrade TypeScript and fixup types (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/927\">#927</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/086fd7976f11433edf9ac80be876b3ad243fe087\"><code>086fd79</code></a> chore: update dependencies (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/933\">#933</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\"><code>dc4ddb8</code></a> feat!: drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0f1f9c9c9cedbae5a1d363d5406c5dfbabe81404\"><code>0f1f9c9</code></a> chore: switch to Biome for parsing and linting (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/932\">#932</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/e2879e64bf125add903c1eff6e0860542c605013\"><code>e2879e6</code></a> chore: use maintained version of npm-run-all (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/930\">#930</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\"><code>ffa3138</code></a> fix: Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0423d49df2dc8efc300c804731d25f4d7e0fccc4\"><code>0423d49</code></a> docs: remove obsolete v1 option notes (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/915\">#915</a>)</li>\n<li>Additional commits viewable in <a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">compare view</a></li>\n</ul>\n</details>\n<details>\n<summary>Maintainer changes</summary>\n<p>This version was pushed to npm by <a href=\"https://www.npmjs.com/~GitHub%20Actions\">GitHub Actions</a>, a new releaser for uuid since your current version.</p>\n</details>\n<br />\n\nUpdates `uuid` from 11.1.0 to 14.0.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/releases\">uuid's releases</a>.</em></p>\n<blockquote>\n<h2>v14.0.0</h2>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n</ul>\n<h3>Features</h3>\n<ul>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\">dc4ddb8</a>)</li>\n</ul>\n<h3>Bug Fixes</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\">f2c235f</a>)</li>\n<li>Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\">ffa3138</a>)</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md\">uuid's changelog</a>.</em></p>\n<blockquote>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>Security</h3>\n<ul>\n<li>Fixes <a href=\"https://github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq\">GHSA-w5hq-g745-h8pq</a>: <code>v3()</code>, <code>v5()</code>, and <code>v6()</code> did not validate that writes would remain within the bounds of a caller-supplied buffer, allowing out-of-bounds writes when an invalid <code>offset</code> was provided. A <code>RangeError</code> is now thrown if <code>offset &lt; 0</code> or <code>offset + 16 &gt; buf.length</code>.</li>\n</ul>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li><code>crypto</code> is now expected to be globally defined (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li>upgrade minimum supported TypeScript version to 5.4.3, in keeping with the project's policy of supporting TypeScript versions released within the last two years</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/7c1ea087a8149b57380fc8bb7f68c3a215cb6e4b\"><code>7c1ea08</code></a> chore(main): release 14.0.0 (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/926\">#926</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/3d2c5b0342f0fcb52a5ac681c3d47c13e7444b34\"><code>3d2c5b0</code></a> Merge commit from fork</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\"><code>f2c235f</code></a> fix!: expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/529ef0899f5dd503d2ee90d690585d63d78bc212\"><code>529ef08</code></a> chore: upgrade TypeScript and fixup types (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/927\">#927</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/086fd7976f11433edf9ac80be876b3ad243fe087\"><code>086fd79</code></a> chore: update dependencies (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/933\">#933</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\"><code>dc4ddb8</code></a> feat!: drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0f1f9c9c9cedbae5a1d363d5406c5dfbabe81404\"><code>0f1f9c9</code></a> chore: switch to Biome for parsing and linting (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/932\">#932</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/e2879e64bf125add903c1eff6e0860542c605013\"><code>e2879e6</code></a> chore: use maintained version of npm-run-all (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/930\">#930</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\"><code>ffa3138</code></a> fix: Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0423d49df2dc8efc300c804731d25f4d7e0fccc4\"><code>0423d49</code></a> docs: remove obsolete v1 option notes (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/915\">#915</a>)</li>\n<li>Additional commits viewable in <a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">compare view</a></li>\n</ul>\n</details>\n<details>\n<summary>Maintainer changes</summary>\n<p>This version was pushed to npm by <a href=\"https://www.npmjs.com/~GitHub%20Actions\">GitHub Actions</a>, a new releaser for uuid since your current version.</p>\n</details>\n<br />\n\nUpdates `uuid` from 13.0.0 to 14.0.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/releases\">uuid's releases</a>.</em></p>\n<blockquote>\n<h2>v14.0.0</h2>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n</ul>\n<h3>Features</h3>\n<ul>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\">dc4ddb8</a>)</li>\n</ul>\n<h3>Bug Fixes</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\">f2c235f</a>)</li>\n<li>Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\">ffa3138</a>)</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md\">uuid's changelog</a>.</em></p>\n<blockquote>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>Security</h3>\n<ul>\n<li>Fixes <a href=\"https://github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq\">GHSA-w5hq-g745-h8pq</a>: <code>v3()</code>, <code>v5()</code>, and <code>v6()</code> did not validate that writes would remain within the bounds of a caller-supplied buffer, allowing out-of-bounds writes when an invalid <code>offset</code> was provided. A <code>RangeError</code> is now thrown if <code>offset &lt; 0</code> or <code>offset + 16 &gt; buf.length</code>.</li>\n</ul>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li><code>crypto</code> is now expected to be globally defined (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li>upgrade minimum supported TypeScript version to 5.4.3, in keeping with the project's policy of supporting TypeScript versions released within the last two years</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/7c1ea087a8149b57380fc8bb7f68c3a215cb6e4b\"><code>7c1ea08</code></a> chore(main): release 14.0.0 (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/926\">#926</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/3d2c5b0342f0fcb52a5ac681c3d47c13e7444b34\"><code>3d2c5b0</code></a> Merge commit from fork</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\"><code>f2c235f</code></a> fix!: expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/529ef0899f5dd503d2ee90d690585d63d78bc212\"><code>529ef08</code></a> chore: upgrade TypeScript and fixup types (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/927\">#927</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/086fd7976f11433edf9ac80be876b3ad243fe087\"><code>086fd79</code></a> chore: update dependencies (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/933\">#933</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\"><code>dc4ddb8</code></a> feat!: drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0f1f9c9c9cedbae5a1d363d5406c5dfbabe81404\"><code>0f1f9c9</code></a> chore: switch to Biome for parsing and linting (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/932\">#932</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/e2879e64bf125add903c1eff6e0860542c605013\"><code>e2879e6</code></a> chore: use maintained version of npm-run-all (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/930\">#930</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\"><code>ffa3138</code></a> fix: Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0423d49df2dc8efc300c804731d25f4d7e0fccc4\"><code>0423d49</code></a> docs: remove obsolete v1 option notes (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/915\">#915</a>)</li>\n<li>Additional commits viewable in <a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">compare view</a></li>\n</ul>\n</details>\n<details>\n<summary>Maintainer changes</summary>\n<p>This version was pushed to npm by <a href=\"https://www.npmjs.com/~GitHub%20Actions\">GitHub Actions</a>, a new releaser for uuid since your current version.</p>\n</details>\n<br />\n\nUpdates `uuid` from 11.1.0 to 14.0.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/releases\">uuid's releases</a>.</em></p>\n<blockquote>\n<h2>v14.0.0</h2>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n</ul>\n<h3>Features</h3>\n<ul>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\">dc4ddb8</a>)</li>\n</ul>\n<h3>Bug Fixes</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\">f2c235f</a>)</li>\n<li>Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\">ffa3138</a>)</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md\">uuid's changelog</a>.</em></p>\n<blockquote>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>Security</h3>\n<ul>\n<li>Fixes <a href=\"https://github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq\">GHSA-w5hq-g745-h8pq</a>: <code>v3()</code>, <code>v5()</code>, and <code>v6()</code> did not validate that writes would remain within the bounds of a caller-supplied buffer, allowing out-of-bounds writes when an invalid <code>offset</code> was provided. A <code>RangeError</code> is now thrown if <code>offset &lt; 0</code> or <code>offset + 16 &gt; buf.length</code>.</li>\n</ul>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li><code>crypto</code> is now expected to be globally defined (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li>upgrade minimum supported TypeScript version to 5.4.3, in keeping with the project's policy of supporting TypeScript versions released within the last two years</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/7c1ea087a8149b57380fc8bb7f68c3a215cb6e4b\"><code>7c1ea08</code></a> chore(main): release 14.0.0 (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/926\">#926</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/3d2c5b0342f0fcb52a5ac681c3d47c13e7444b34\"><code>3d2c5b0</code></a> Merge commit from fork</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\"><code>f2c235f</code></a> fix!: expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/529ef0899f5dd503d2ee90d690585d63d78bc212\"><code>529ef08</code></a> chore: upgrade TypeScript and fixup types (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/927\">#927</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/086fd7976f11433edf9ac80be876b3ad243fe087\"><code>086fd79</code></a> chore: update dependencies (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/933\">#933</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\"><code>dc4ddb8</code></a> feat!: drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0f1f9c9c9cedbae5a1d363d5406c5dfbabe81404\"><code>0f1f9c9</code></a> chore: switch to Biome for parsing and linting (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/932\">#932</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/e2879e64bf125add903c1eff6e0860542c605013\"><code>e2879e6</code></a> chore: use maintained version of npm-run-all (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/930\">#930</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\"><code>ffa3138</code></a> fix: Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0423d49df2dc8efc300c804731d25f4d7e0fccc4\"><code>0423d49</code></a> docs: remove obsolete v1 option notes (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/915\">#915</a>)</li>\n<li>Additional commits viewable in <a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">compare view</a></li>\n</ul>\n</details>\n<details>\n<summary>Maintainer changes</summary>\n<p>This version was pushed to npm by <a href=\"https://www.npmjs.com/~GitHub%20Actions\">GitHub Actions</a>, a new releaser for uuid since your current version.</p>\n</details>\n<br />\n\nUpdates `uuid` from 13.0.0 to 14.0.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/releases\">uuid's releases</a>.</em></p>\n<blockquote>\n<h2>v14.0.0</h2>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n</ul>\n<h3>Features</h3>\n<ul>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\">dc4ddb8</a>)</li>\n</ul>\n<h3>Bug Fixes</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\">f2c235f</a>)</li>\n<li>Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\">ffa3138</a>)</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md\">uuid's changelog</a>.</em></p>\n<blockquote>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>Security</h3>\n<ul>\n<li>Fixes <a href=\"https://github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq\">GHSA-w5hq-g745-h8pq</a>: <code>v3()</code>, <code>v5()</code>, and <code>v6()</code> did not validate that writes would remain within the bounds of a caller-supplied buffer, allowing out-of-bounds writes when an invalid <code>offset</code> was provided. A <code>RangeError</code> is now thrown if <code>offset &lt; 0</code> or <code>offset + 16 &gt; buf.length</code>.</li>\n</ul>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li><code>crypto</code> is now expected to be globally defined (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li>upgrade minimum supported TypeScript version to 5.4.3, in keeping with the project's policy of supporting TypeScript versions released within the last two years</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/7c1ea087a8149b57380fc8bb7f68c3a215cb6e4b\"><code>7c1ea08</code></a> chore(main): release 14.0.0 (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/926\">#926</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/3d2c5b0342f0fcb52a5ac681c3d47c13e7444b34\"><code>3d2c5b0</code></a> Merge commit from fork</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\"><code>f2c235f</code></a> fix!: expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/529ef0899f5dd503d2ee90d690585d63d78bc212\"><code>529ef08</code></a> chore: upgrade TypeScript and fixup types (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/927\">#927</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/086fd7976f11433edf9ac80be876b3ad243fe087\"><code>086fd79</code></a> chore: update dependencies (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/933\">#933</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\"><code>dc4ddb8</code></a> feat!: drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0f1f9c9c9cedbae5a1d363d5406c5dfbabe81404\"><code>0f1f9c9</code></a> chore: switch to Biome for parsing and linting (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/932\">#932</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/e2879e64bf125add903c1eff6e0860542c605013\"><code>e2879e6</code></a> chore: use maintained version of npm-run-all (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/930\">#930</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\"><code>ffa3138</code></a> fix: Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>)</li>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/0423d49df2dc8efc300c804731d25f4d7e0fccc4\"><code>0423d49</code></a> docs: remove obsolete v1 option notes (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/915\">#915</a>)</li>\n<li>Additional commits viewable in <a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">compare view</a></li>\n</ul>\n</details>\n<details>\n<summary>Maintainer changes</summary>\n<p>This version was pushed to npm by <a href=\"https://www.npmjs.com/~GitHub%20Actions\">GitHub Actions</a>, a new releaser for uuid since your current version.</p>\n</details>\n<br />\n\nUpdates `uuid` from 13.0.0 to 14.0.0\n<details>\n<summary>Release notes</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/releases\">uuid's releases</a>.</em></p>\n<blockquote>\n<h2>v14.0.0</h2>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n</ul>\n<h3>Features</h3>\n<ul>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/dc4ddb87272ed2843faccd130bcc41d492688bd3\">dc4ddb8</a>)</li>\n</ul>\n<h3>Bug Fixes</h3>\n<ul>\n<li>expect <code>crypto</code> to be global everywhere (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/f2c235f93059325fa43e1106e624b5291bb523c4\">f2c235f</a>)</li>\n<li>Use GITHUB_TOKEN for release-please and enable npm provenance (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/925\">#925</a>) (<a href=\"https://github.com/uuidjs/uuid/commit/ffa31383e8e4e1f0b4e22e504561272041b8738c\">ffa3138</a>)</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Changelog</summary>\n<p><em>Sourced from <a href=\"https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md\">uuid's changelog</a>.</em></p>\n<blockquote>\n<h2><a href=\"https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0\">14.0.0</a> (2026-04-19)</h2>\n<h3>Security</h3>\n<ul>\n<li>Fixes <a href=\"https://github.com/uuidjs/uuid/security/advisories/GHSA-w5hq-g745-h8pq\">GHSA-w5hq-g745-h8pq</a>: <code>v3()</code>, <code>v5()</code>, and <code>v6()</code> did not validate that writes would remain within the bounds of a caller-supplied buffer, allowing out-of-bounds writes when an invalid <code>offset</code> was provided. A <code>RangeError</code> is now thrown if <code>offset &lt; 0</code> or <code>offset + 16 &gt; buf.length</code>.</li>\n</ul>\n<h3>⚠ BREAKING CHANGES</h3>\n<ul>\n<li><code>crypto</code> is now expected to be globally defined (requires node@20+) (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/935\">#935</a>)</li>\n<li>drop node@18 support (<a href=\"https://redirect.github.com/uuidjs/uuid/issues/934\">#934</a>)</li>\n<li>upgrade minimum supported TypeScript version to 5.4.3, in keeping with the project's policy of supporting TypeScript versions released within the last two years</li>\n</ul>\n</blockquote>\n</details>\n<details>\n<summary>Commits</summary>\n<ul>\n<li><a href=\"https://github.com/uuidjs/uuid/commit/7c1ea087a8149b573...\n\n_Description has been truncated_\n\n<!-- greptile_comment -->\n\n<h3>Greptile Summary</h3>\n\nAutomated dependabot PR bumping `uuid` from 11.x/13.x to 14.0.0 across 28 directories. `uuid` v14 drops Node 18 support and requires a global `crypto` (Node 20+), but the project already pins Node 24.15.0 in its root `engines` field, so no compatibility concern. The PR also includes an undocumented `undici` bump (7.24.4 → 7.24.5) in `packages/app-core/test/contracts/lib/openzeppelin-contracts/`, which is a dev-only test fixture not mentioned in the PR description.\n\n<h3>Confidence Score: 5/5</h3>\n\nSafe to merge — routine dependency bump with no API-breaking impact given the project's Node 24 baseline\n\nAll changes are version bumps in package.json files. uuid v14's breaking changes (Node 20+ requirement, global crypto) are fully satisfied by the project's Node 24 engine pin. The uuid v14 security fix (GHSA-w5hq-g745-h8pq) is a positive inclusion. The undocumented undici patch in the openzeppelin-contracts test fixture is trivial.\n\nNo files require special attention\n\n<h3>Important Files Changed</h3>\n\n| Filename | Overview |\n|----------|----------|\n| apps/app-form/package.json | Bumps `uuid` from ^13.0.0 to ^14.0.0; compatible with project's Node 24 requirement |\n| packages/examples/avatar/package.json | Bumps `uuid` from ^11.1.0 to ^14.0.0, jumping three major versions — no API-breaking changes affect typical v4() usage |\n| packages/typescript/package.json | Bumps `uuid` from ^13.0.0 to ^14.0.0; all other dependencies unchanged |\n| packages/app-core/test/contracts/lib/openzeppelin-contracts/package.json | Bumps `undici` from ^7.24.4 to ^7.24.5 (dev dependency in test contracts); not mentioned in the PR description which only covers uuid |\n| packages/app-core/test/contracts/lib/openzeppelin-contracts/package-lock.json | Lock file update reflecting `undici` bump from 7.24.4 to 7.24.5 |\n\n</details>\n\n<h3>Flowchart</h3>\n\n```mermaid\n%%{init: {'theme': 'neutral'}}%%\nflowchart TD\n    A[dependabot PR] --> B[uuid 13.x / 11.x → 14.0.0\\n28 package.json files]\n    A --> C[undici 7.24.4 → 7.24.5\\nopenzeppelin-contracts test fixture]\n    B --> D{uuid v14 breaking changes}\n    D --> E[Requires Node ≥ 20\\nglobal crypto]\n    D --> F[Security fix\\nGHSA-w5hq-g745-h8pq]\n    E --> G[✅ Project engines: Node 24.15.0]\n    F --> G\n    C --> H[✅ Dev-only test dep, no runtime impact]\n```\n\n<sub>Reviews (1): Last reviewed commit: [\"chore(deps): bump the npm\\_and\\_yarn group...\"](https://github.com/elizaos/eliza/commit/51c86a7bf41518382b6dcefb653d1e2aad5126ac) | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=29347030)</sub>\n\n<!-- /greptile_comment -->",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-22T22:08:10Z",
      "mergedAt": "2026-04-23T01:52:59Z",
      "additions": 33,
      "deletions": 33
    },
    {
      "id": "PR_kwDOMT5cIs7U2FAk",
      "title": "fix(deps): update dependency psutil to v7 - autoclosed",
      "author": "renovate",
      "number": 7060,
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [psutil](https://redirect.github.com/giampaolo/psutil) | `~=5.9.6` → `~=7.2.2` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/psutil/7.2.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/psutil/5.9.8/7.2.2?slim=true) |\n\n---\n\n> [!WARNING]\n> Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/79) for more information.\n\n---\n\n### Release Notes\n\n<details>\n<summary>giampaolo/psutil (psutil)</summary>\n\n### [`v7.2.2`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#722)\n\n[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-7.2.1...release-7.2.2)\n\n\\=====\n\n2026-01-28\n\n**Enhancements**\n\n- 2705\\_: \\[Linux]: `Process.wait()`\\_ now uses `pidfd_open()` + `poll()` for\n  waiting, resulting in no busy loop and faster response times. Requires\n  Linux >= 5.3 and Python >= 3.9. Falls back to traditional polling if\n  unavailable.\n- 2705\\_: \\[macOS], \\[BSD]: `Process.wait()`\\_ now uses `kqueue()` for waiting,\n  resulting in no busy loop and faster response times.\n\n**Bug fixes**\n\n- 2701\\_, \\[macOS]: fix compilation error on macOS < 10.7.  (patch by Sergey\n  Fedorov)\n- 2707\\_, \\[macOS]: fix potential memory leaks in error paths of\n  `Process.memory_full_info()` and `Process.threads()`.\n- 2708\\_, \\[macOS]: Process.cmdline()`_ and `Process.environ()`_ may fail with ``OSError: [Errno 0] Undefined error`` (from ``sysctl(KERN_PROCARGS2)``).\n  They now raise `AccessDenied\\`\\_ instead.\n\n### [`v7.2.1`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#721)\n\n[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-7.2.0...release-7.2.1)\n\n\\=====\n\n2025-12-29\n\n**Bug fixes**\n\n- 2699\\_, \\[FreeBSD], \\[NetBSD]: `heap_info()`\\_ does not detect small allocations\n  (<= 1K). In order to fix that, we now flush internal jemalloc cache before\n  fetching the metrics.\n\n### [`v7.2.0`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#720)\n\n[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-7.1.3...release-7.2.0)\n\n\\=====\n\n2025-12-23\n\n**Enhancements**\n\n- 1275\\_: new `heap_info()`\\_ and `heap_trim()`\\_ functions, providing direct\n  access to the platform's native C heap allocator (glibc, mimalloc,\n  libmalloc). Useful to create tools to detect memory leaks.\n- 2403\\_, \\[Linux]: publish wheels for Linux musl.\n- 2680\\_: unit tests are no longer installed / part of the distribution. They\n  now live under `tests/` instead of `psutil/tests`.\n\n**Bug fixes**\n\n- 2684\\_, \\[FreeBSD], \\[critical]: compilation fails on FreeBSD 14 due to missing\n  include.\n- 2691\\_, \\[Windows]: fix memory leak in `net_if_stats()`\\_ due to missing\n  `Py_CLEAR`.\n\n**Compatibility notes**\n\n- 2680\\_: `import psutil.tests` no longer works (but it was never documented to\n  begin with).\n\n### [`v7.1.3`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#713)\n\n[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-7.1.2...release-7.1.3)\n\n\\=====\n\n2025-11-02\n\n**Enhancements**\n\n- 2667\\_: enforce `clang-format` on all C and header files. It is now the\n  mandatory formatting style for all C sources.\n- 2672\\_, \\[macOS], \\[BSD]: increase the chances to recognize zombie processes and\n  raise the appropriate exception (`ZombieProcess`\\_).\n- 2676\\_, 2678\\_: replace unsafe `sprintf` / `snprintf` / `sprintf_s` calls with\n  `str_format()`. Replace `strlcat` / `strlcpy` with safe `str_copy` /\n  `str_append`. This unifies string handling across platforms and reduces\n  unsafe usage of standard string functions, improving robustness.\n\n**Bug fixes**\n\n- 2674\\_, \\[Windows]: `disk_usage()`\\_ could truncate values on 32-bit platforms,\n  potentially reporting incorrect total/free/used space for drives larger than\n  4GB.\n- 2675\\_, \\[macOS]: `Process.status()`\\_ incorrectly returns \"running\" for 99%\n  of the processes.\n- 2677\\_, \\[Windows]: fix MAC address string construction in `net_if_addrs()`\\_.\n  Previously, the MAC address buffer was incorrectly updated using a fixed\n  increment and `sprintf_s`, which could overflow or misformat the\n  string if the MAC length or formatting changed. Also, the final '\\n' was\n  inserted unnecessarily.\n- 2679\\_, \\[OpenBSD], \\[NetBSD], \\[critical]: can't build due to C syntax error.\n\n### [`v7.1.2`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#712)\n\n[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-7.1.1...release-7.1.2)\n\n\\=====\n\n2025-10-25\n\n**Enhancements**\n\n- 2657\\_: stop publishing prebuilt Linux and Windows wheels for 32-bit Python.\n  32-bit CPython is still supported, but psutil must now be built from source.\n  2565\\_: produce wheels for free-thread cPython 3.13 and 3.14 (patch by\n  Lysandros Nikolaou)\n\n**Bug fixes**\n\n- 2650\\_, \\[macOS]: `Process.cmdline()`\\_ and `Process.environ()`\\_ may incorrectly\n  raise `NoSuchProcess`\\_ instead of `ZombieProcess`\\_.\n- 2658\\_, \\[macOS]: double `free()` in `Process.environ()`\\_ when it fails\n  internally. This posed a risk of segfault.\n- 2662\\_, \\[macOS]: massive C code cleanup to guard against possible segfaults\n  which were (not so) sporadically spotted on CI.\n\n**Compatibility notes**\n\n- 2657\\_: stop publishing prebuilt Linux and Windows wheels for 32-bit Python.\n\n### [`v7.1.1`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#711)\n\n[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-7.1.0...release-7.1.1)\n\n\\=====\n\n2025-10-19\n\n**Enhancements**\n\n- 2645\\_, \\[SunOS]: dropped support for SunOS 10.\n- 2646\\_, \\[SunOS]: add CI test runner for SunOS.\n\n**Bug fixes**\n\n- 2641\\_, \\[SunOS]: cannot compile psutil from sources due to missing C include.\n- 2357\\_, \\[SunOS]: `Process.cmdline()`\\_ does not handle spaces properly. (patch\n  by Ben Raz)\n\n**Compatibility notes**\n\n- 2645\\_: SunOS 10 is no longer supported.\n\n### [`v7.1.0`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#710)\n\n[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-7.0.0...release-7.1.0)\n\n\\=====\n\n2025-09-17\n\n**Enhancements**\n\n- 2581\\_, \\[Windows]: publish ARM64 wheels.  (patch by Matthieu Darbois)\n- 2571\\_, \\[FreeBSD]: Dropped support for FreeBSD 8 and earlier. FreeBSD 8 was\n  maintained from 2009 to 2013.\n- 2575\\_: introduced `dprint` CLI tool to format .yml and .md files.\n\n**Bug fixes**\n\n- 2473\\_, \\[macOS]: Fix build issue on macOS 11 and lower.\n- 2494\\_, \\[Windows]: All APIs dealing with paths, such as\n  `Process.memory_maps()`*, `Process.exe()`* and `Process.open_files()`\\_ does\n  not properly handle UNC paths. Paths such as `\\\\??\\\\C:\\\\Windows\\\\Temp` and\n  `'\\\\Device\\\\HarddiskVolume1\\\\Windows\\\\Temp'` are now converted to\n  `C:\\\\Windows\\\\Temp`.  (patch by Ben Peddell)\n- 2506\\_, \\[Windows]: Windows service APIs had issues with unicode services using\n  special characters in their name.\n- 2514\\_, \\[Linux]: `Process.cwd()`\\_ sometimes fail with `FileNotFoundError` due\n  to a race condition.\n- 2526\\_, \\[Linux]: `Process.create_time()`*, which is used to univocally\n  identify a process over time, is subject to system clock updates, and as such\n  can lead to `Process.is_running()`* returning a wrong result. A monotonic\n  creation time is now used instead.  (patch by Jonathan Kohler)\n- 2528\\_, \\[Linux]: `Process.children()`\\_ may raise `PermissionError`. It will\n  now raise `AccessDenied`\\_ instead.\n- 2540\\_, \\[macOS]: `boot_time()`\\_ is off by 45 seconds (C precision issue).\n- 2541\\_, 2570\\_, 2578\\_ \\[Linux], \\[macOS], \\[NetBSD]: `Process.create_time()`\\_ does\n  not reflect system clock updates.\n- 2542\\_: if system clock is updated `Process.children()`\\_ and\n  `Process.parent()`\\_ may not be able to return the right information.\n- 2545\\_: \\[Illumos]: Fix handling of MIB2\\_UDP\\_ENTRY in `net_connections()`\\_.\n- 2552\\_, \\[Windows]: `boot_time()`\\_ didn't take into account the time spent\n  during suspend / hibernation.\n- 2560\\_, \\[Linux]: `Process.memory_maps()`\\_ may crash with `IndexError` on\n  RISCV64 due to a malformed `/proc/{PID}/smaps` file.  (patch by Julien\n  Stephan)\n- 2586\\_, \\[macOS], \\[CRITICAL]: fixed different places in C code which can\n  trigger a segfault.\n- 2604\\_, \\[Linux]: `virtual_memory()`\\_ \"used\" memory does not match recent\n  versions of `free` CLI utility.  (patch by Isaac K. Ko)\n- 2605\\_, \\[Linux]: `psutil.sensors_battery()` reports a negative amount for\n  seconds left.\n- 2607\\_, \\[Windows]: `WindowsService.description()` method may fail with\n  `ERROR_NOT_FOUND`. Now it returns an empty string instead.\n- 2610:, \\[macOS], \\[CRITICAL]: fix `cpu_freq()`\\_ segfault on ARM architectures.\n\n**Compatibility notes**\n\n- 2571\\_: dropped support for FreeBSD 8 and earlier.\n\n### [`v7.0.0`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#700)\n\n[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-6.1.1...release-7.0.0)\n\n\\=====\n\n2025-02-13\n\n**Enhancements**\n\n- 669\\_, \\[Windows]: `net_if_addrs()`\\_ also returns the `broadcast` address\n  instead of `None`.\n- 2480\\_: Python 2.7 is no longer supported. Latest version supporting Python\n  2.7 is psutil 6.1.X. Install it with: `pip2 install psutil==6.1.*`.\n- 2490\\_: removed long deprecated `Process.memory_info_ex()` method. It was\n  deprecated in psutil 4.0.0, released 8 years ago. Substitute is\n  `Process.memory_full_info()`.\n\n**Bug fixes**\n\n- 2496\\_, \\[Linux]: Avoid segfault (a cPython bug) on `Process.memory_maps()`\n  for processes that use hundreds of GBs of memory.\n- 2502\\_, \\[macOS]: `virtual_memory()`\\_ now relies on `host_statistics64`\n  instead of `host_statistics`. This is the same approach used by `vm_stat`\n  CLI tool, and should grant more accurate results.\n\n**Compatibility notes**\n\n- 2480\\_: Python 2.7 is no longer supported.\n- 2490\\_: removed long deprecated `Process.memory_info_ex()` method.\n\n### [`v6.1.1`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#611)\n\n[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-6.1.0...release-6.1.1)\n\n\\=====\n\n2024-12-19\n\n**Enhancements**\n\n- 2471\\_: use Vulture CLI tool to detect dead code.\n\n**Bug fixes**\n\n- 2418\\_, \\[Linux]: fix race condition in case /proc/PID/stat does not exist, but\n  /proc/PID does, resulting in FileNotFoundError.\n- 2470\\_, \\[Linux]: `users()`\\_ may return \"localhost\" instead of the actual IP\n  address of the user logged in.\n\n### [`v6.1.0`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#610)\n\n[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-6.0.0...release-6.1.0)\n\n\\=====\n\n2024-10-17\n\n**Enhancements**\n\n- 2366\\_, \\[Windows]: drastically speedup `process_iter()`*. We now determine\n  process unique identity by using process \"fast\" create time method. This\n  will considerably speedup those apps which use `process_iter()`* only once,\n  e.g. to look for a process with a certain name.\n- 2446\\_: use pytest instead of unittest.\n- 2448\\_: add `make install-sysdeps` target to install the necessary system\n  dependencies (python-dev, gcc, etc.) on all supported UNIX flavors.\n- 2449\\_: add `make install-pydeps-test` and `make install-pydeps-dev`\n  targets. They can be used to install dependencies meant for running tests and\n  for local development. They can also be installed via `pip install .[test]`\n  and `pip install .[dev]`.\n- 2456\\_: allow to run tests via `python3 -m psutil.tests` even if `pytest`\n  module is not installed. This is useful for production environments that\n  don't have pytest installed, but still want to be able to test psutil\n  installation.\n\n**Bug fixes**\n\n- 2427\\_: psutil (segfault) on import in the free-threaded (no GIL) version of\n  Python 3.13.  (patch by Sam Gross)\n- 2455\\_, \\[Linux]: `IndexError` may occur when reading /proc/pid/stat and\n  field 40 (blkio\\_ticks) is missing.\n- 2457\\_, \\[AIX]: significantly improve the speed of `Process.open_files()`\\_ for\n  some edge cases.\n- 2460\\_, \\[OpenBSD]: `Process.num_fds()`\\_ and `Process.open_files()`\\_ may fail\n  with `NoSuchProcess`\\_ for PID 0. Instead, we now return \"null\" values (0 and\n  \\[] respectively).\n\n### [`v6.0.0`](https://redirect.github.com/giampaolo/psutil/blob/HEAD/HISTORY.rst#600)\n\n[Compare Source](https://redirect.github.com/giampaolo/psutil/compare/release-5.9.8...release-6.0.0)\n\n\\======\n\n2024-06-18\n\n**Enhancements**\n\n- 2109\\_: `maxfile` and `maxpath` fields were removed from the namedtuple\n  returned by `disk_partitions()`\\_. Reason: on network filesystems (NFS) this\n  can potentially take a very long time to complete.\n- 2366\\_, \\[Windows]: log debug message when using slower process APIs.\n- 2375\\_, \\[macOS]: provide arm64 wheels.  (patch by Matthieu Darbois)\n- 2396\\_: `process_iter()`\\_ no longer pre-emptively checks whether PIDs have\n  been reused. This makes `process_iter()`\\_ around 20x times faster.\n- 2396\\_: a new `psutil.process_iter.cache_clear()` API can be used the clear\n  `process_iter()`\\_ internal cache.\n- 2401\\_, Support building with free-threaded CPython 3.13. (patch by Sam Gross)\n- 2407\\_: `Process.connections()`\\_ was renamed to `Process.net_connections()`\\_.\n  The old name is still available, but it's deprecated (triggers a\n  `DeprecationWarning`) and will be removed in the future.\n- 2425\\_: \\[Linux]: provide aarch64 wheels.  (patch by Matthieu Darbois / Ben Raz)\n\n**Bug fixes**\n\n- 2250\\_, \\[NetBSD]: `Process.cmdline()`\\_ sometimes fail with EBUSY. It usually\n  happens for long cmdlines with lots of arguments. In this case retry getting\n  the cmdline for up to 50 times, and return an empty list as last resort.\n- 2254\\_, \\[Linux]: offline cpus raise NotImplementedError in cpu\\_freq() (patch\n  by Shade Gladden)\n- 2272\\_: Add pickle support to psutil Exceptions.\n- 2359\\_, \\[Windows], \\[CRITICAL]: `pid_exists()`\\_ disagrees with `Process`\\_ on\n  whether a pid exists when ERROR\\_ACCESS\\_DENIED.\n- 2360\\_, \\[macOS]: can't compile on macOS < 10.13.  (patch by Ryan Schmidt)\n- 2362\\_, \\[macOS]: can't compile on macOS 10.11.  (patch by Ryan Schmidt)\n- 2365\\_, \\[macOS]: can't compile on macOS < 10.9.  (patch by Ryan Schmidt)\n- 2395\\_, \\[OpenBSD]: `pid_exists()`\\_ erroneously return True if the argument is\n  a thread ID (TID) instead of a PID (process ID).\n- 2412\\_, \\[macOS]: can't compile on macOS 10.4 PowerPC due to missing `MNT_`\n  constants.\n\n**Porting notes**\n\nVersion 6.0.0 introduces some changes which affect backward compatibility:\n\n- 2109\\_: the namedtuple returned by `disk_partitions()`\\_' no longer has\n  `maxfile` and `maxpath` fields.\n- 2396\\_: `process_iter()`\\_ no longer pre-emptively checks whether PIDs have\n  been reused. If you want to check for PID reusage you are supposed to use\n  `Process.is_running()`\\_ against the yielded `Process`\\_ instances. That will\n  also automatically remove reused PIDs from `process_iter()`\\_ internal cache.\n- 2407\\_: `Process.connections()`\\_ was renamed to `Process.net_connections()`\\_.\n  The old name is still available, but it's deprecated (triggers a\n  `DeprecationWarning`) and will be removed in the future.\n\n</details>\n\n---\n\n### Configuration\n\n📅 **Schedule**: (UTC)\n\n- Branch creation\n  - At any time (no schedule defined)\n- Automerge\n  - At any time (no schedule defined)\n\n🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.\n\n♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.\n\n🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.\n\n---\n\n - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/elizaOS/eliza).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzkuNCIsInVwZGF0ZWRJblZlciI6IjQzLjEzOS43IiwidGFyZ2V0QnJhbmNoIjoiZGV2ZWxvcCIsImxhYmVscyI6W119-->\n",
      "repository": "elizaos/eliza",
      "createdAt": "2026-04-23T04:05:58Z",
      "mergedAt": "2026-04-24T06:07:42Z",
      "additions": 27,
      "deletions": 13
    }
  ],
  "codeChanges": {
    "additions": 871,
    "deletions": 314,
    "files": 84,
    "commitCount": 205
  },
  "completedItems": [
    {
      "title": "chore(deps): bump the cargo group across 3 directories with 2 updates",
      "prNumber": 7047,
      "type": "other",
      "body": "Bumps the cargo group with 2 updates in the /packages/examples/telegram/rust/telegram-agent directory: [rand](https://github.com/rust-random/rand) and [rustls-webpki](https://github.com/rustls/webpki).\nBumps the cargo group with 2 updates i",
      "files": [
        "packages/examples/telegram/rust/telegram-agent/Cargo.lock",
        "packages/examples/text-adventure/rust/game/Cargo.lock",
        "packages/examples/twitter-xai/rust/xai-agent/Cargo.lock"
      ]
    },
    {
      "title": "fix(deps): update dependency uuid to v14 [security]",
      "prNumber": 7046,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [uuid](https://redirect.github.com/uuid",
      "files": [
        "apps/app-form/package.json",
        "packages/typescript/package.json"
      ]
    },
    {
      "title": "chore(deps): bump the cargo group across 6 directories with 1 update",
      "prNumber": 7045,
      "type": "other",
      "body": "Bumps the cargo group with 1 update in the /packages/examples/autonomous-rust-agent directory: [openssl](https://github.com/rust-openssl/rust-openssl).\nBumps the cargo group with 1 update in the /packages/examples/aws/rust directory: [opens",
      "files": [
        "packages/examples/autonomous-rust-agent/Cargo.lock",
        "packages/examples/aws/rust/Cargo.lock",
        "packages/examples/bluesky/rust/bluesky-agent/Cargo.lock",
        "packages/examples/polymarket/rust/polymarket-demo/Cargo.lock",
        "packages/examples/roblox/rust/Cargo.lock",
        "packages/examples/virus/Cargo.lock"
      ]
    },
    {
      "title": "chore(deps): bump the npm_and_yarn group across 28 directories with 1 update",
      "prNumber": 7044,
      "type": "other",
      "body": "Bumps the npm_and_yarn group with 1 update in the /apps/app-form directory: [uuid](https://github.com/uuidjs/uuid).\nBumps the npm_and_yarn group with 1 update in the /packages/examples/a2a/typescript directory: [uuid](https://github.com/uui",
      "files": [
        "apps/app-form/package.json",
        "packages/app-core/test/contracts/lib/openzeppelin-contracts/package-lock.json",
        "packages/app-core/test/contracts/lib/openzeppelin-contracts/package.json",
        "packages/examples/a2a/typescript/package.json",
        "packages/examples/app/capacitor/backend/package.json",
        "packages/examples/app/electron/backend/package.json",
        "packages/examples/autonomous/typescript/package.json",
        "packages/examples/avatar/package.json",
        "packages/examples/bluesky/typescript/package.json",
        "packages/examples/browser-extension/chrome/package.json",
        "packages/examples/chat/typescript/package.json",
        "packages/examples/cloudflare/package.json",
        "packages/examples/code/package.json",
        "packages/examples/convex/package.json",
        "packages/examples/discord/typescript/package.json",
        "packages/examples/form/typescript/package.json",
        "packages/examples/gcp/typescript/package.json",
        "packages/examples/mcp/typescript/package.json",
        "packages/examples/moltbook/package.json",
        "packages/examples/next/package.json",
        "packages/examples/polymarket/typescript/package.json",
        "packages/examples/react-wasm/package.json",
        "packages/examples/react/package.json",
        "packages/examples/rest-api/elysia/package.json",
        "packages/examples/rest-api/express/package.json",
        "packages/examples/rest-api/hono/package.json",
        "packages/examples/roblox/typescript/package.json",
        "packages/examples/text-adventure/typescript/package.json",
        "packages/examples/vercel/package.json",
        "packages/typescript/package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency vitest to v4",
      "prNumber": 7043,
      "type": "tests",
      "body": "> ℹ️ **Note**\n> \n> This PR body was truncated due to platform limits.\n\nThis PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-con",
      "files": [
        "packages/benchmarks/configbench/package.json",
        "packages/scenario-runner/package.json",
        "plugins/plugin-app-control/typescript/package.json",
        "plugins/plugin-calendly/package.json",
        "plugins/plugin-computeruse/package.json",
        "plugins/plugin-github/package.json"
      ]
    },
    {
      "title": "chore(deps): update dependency typescript to v6",
      "prNumber": 7042,
      "type": "other",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [typescript](https://www.typescriptlang",
      "files": [
        "apps/app-companion/package.json",
        "packages/app-core/package.json",
        "packages/benchmarks/gauntlet/sdk/typescript/package.json",
        "packages/benchmarks/solana/solana-gym-env/docs/trajectory-viewer/package.json",
        "packages/elizaos/templates/fullstack-app/apps/app/package.json",
        "packages/native-plugins/location/package.json",
        "packages/native-plugins/macosalarm/package.json",
        "packages/native-plugins/talkmode/package.json",
        "packages/templates/fullstack-app/apps/app/package.json",
        "packages/ui/package.json",
        "plugins/plugin-app-control/package.json",
        "plugins/plugin-app-control/typescript/package.json",
        "plugins/plugin-bluebubbles/typescript/package.json",
        "packages/native-plugins/contacts/package.json",
        "packages/native-plugins/messages/package.json",
        "packages/native-plugins/phone/package.json",
        "packages/native-plugins/system/package.json"
      ]
    },
    {
      "title": "fix(reflection,providers): reduce prompt bloat blowing long-context cap",
      "prNumber": 7013,
      "type": "bugfix",
      "body": "## Summary\n\nThree targeted cuts against the action-planner + reflection pipeline that were shipping duplicate and oversized context on every chat turn. Verified live on a self-hosted deployment (Claude Max subscription) where messages from ",
      "files": [
        "packages/typescript/src/features/advanced-capabilities/evaluators/reflection.ts",
        "packages/typescript/src/features/trust/evaluators/reflection.ts",
        "packages/typescript/src/prompts.ts",
        "packages/typescript/src/services/message.ts"
      ]
    },
    {
      "title": "settings UI polish: dropdown sizing, model picker, layout pairing, header drag-strip fix, hot-reload shutdown timeout",
      "prNumber": 7059,
      "type": "bugfix",
      "body": "## Summary\n\nA batch of focused fixes to the elizaOS app shell + settings UI, all six commits stacked cleanly on top of \\`develop\\`:\n\n- **a3f9fdddc3** \\`feat(settings): constrain provider dropdown, drop Advanced Dashboard button, add simple ",
      "files": [
        "packages/agent/src/contracts/config.ts",
        "packages/agent/src/runtime/eliza.ts",
        "packages/app-core/src/components/pages/ElizaCloudDashboard.tsx",
        "packages/app-core/src/components/pages/SettingsView.tsx",
        "packages/app-core/src/components/settings/MediaSettingsSection.tsx",
        "packages/app-core/src/components/settings/ProviderSwitcher.tsx",
        "packages/app-core/src/config/zod-schema.core.ts",
        "packages/ui/src/components/shell/Header.tsx"
      ]
    },
    {
      "title": "fix(deps): update dependency gymnasium to v1.3.0",
      "prNumber": 7058,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [gymnasium](https://redirect.github.com",
      "files": [
        "packages/benchmarks/OSWorld/pyproject.toml",
        "packages/benchmarks/OSWorld/requirements.txt",
        "packages/benchmarks/OSWorld/setup.py",
        "packages/benchmarks/OSWorld/uv.lock"
      ]
    },
    {
      "title": "fix(deps): update dependency commander to v14",
      "prNumber": 7057,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [commander](https://redirect.github.com",
      "files": [
        "packages/app-core/package.json",
        "packages/elizaos/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency com.google.firebase:firebase-common-ktx to v21",
      "prNumber": 7056,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [com.google.firebase:firebase-common-kt",
      "files": [
        "packages/app-core/platforms/android/app/build.gradle"
      ]
    },
    {
      "title": "fix(deps): update dependency com.android.tools.build:gradle to v9",
      "prNumber": 7055,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [com.android.tools.build:gradle](https:",
      "files": [
        "packages/app-core/platforms/android/build.gradle"
      ]
    },
    {
      "title": "fix(deps): update dependency @xterm/xterm to v6",
      "prNumber": 7054,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@xterm/xterm](https://redirect.github.",
      "files": [
        "apps/app-task-coordinator/package.json",
        "packages/app-core/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency com.google.firebase:firebase-common-ktx to v20.4.3",
      "prNumber": 7053,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [com.google.firebase:firebase-common-kt",
      "files": [
        "packages/app-core/platforms/android/app/build.gradle"
      ]
    },
    {
      "title": "Complete Android default role wiring",
      "prNumber": 7052,
      "type": "other",
      "body": "<!-- Use this template by filling in information and copying and pasting relevant items out of the HTML comments. -->\r\n\r\n# Relates to\r\n\r\n<!-- LINK TO ISSUE OR TICKET -->\r\n\r\n<!-- This risks section must be filled out before the final review ",
      "files": [
        "packages/app-core/platforms/android/app/src/main/java/ai/elizaos/app/MiladyRespondViaMessageService.java",
        "packages/app-core/platforms/android/app/src/main/java/ai/elizaos/app/MiladySmsComposeActivity.java",
        "packages/app-core/scripts/run-mobile-build.mjs"
      ]
    },
    {
      "title": "fix(deps): update dependency @noble/hashes to v2",
      "prNumber": 7051,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@noble/hashes](https://paulmillr.com/n",
      "files": [
        "packages/typescript/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency @capacitor/push-notifications to v8",
      "prNumber": 7050,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@capacitor/push-notifications](https:/",
      "files": [
        "packages/app-core/package.json"
      ]
    },
    {
      "title": "fix(deps): update dependency @capacitor/barcode-scanner to v3",
      "prNumber": 7049,
      "type": "bugfix",
      "body": "This PR contains the following updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n| [@capacitor/barcode-scanner](https://re",
      "files": [
        "packages/app-core/package.json"
      ]
    },
    {
      "title": "chore(deps): update node.js to v24",
      "prNumber": 7048,
      "type": "other",
      "body": "> ℹ️ **Note**\n> \n> This PR body was truncated due to platform limits.\n\nThis PR contains the following updates:\n\n| Package | Type | Update | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovateb",
      "files": [
        "plugins/plugin-app-control/typescript/package.json"
      ]
    }
  ],
  "topContributors": [
    {
      "username": "dutchiono",
      "avatarUrl": "https://avatars.githubusercontent.com/u/86275975?u=0d8badaa81aa47682651f87dc2d363837876de98&v=4",
      "totalScore": 65.9990992996116,
      "prScore": 65.6590992996116,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.33999999999999997,
      "summary": null
    },
    {
      "username": "binkyfishai",
      "avatarUrl": "https://avatars.githubusercontent.com/u/172897890?u=13dcfbbffef5a3f90ae60741795eaf47cc93a244&v=4",
      "totalScore": 56.12351051090354,
      "prScore": 56.12351051090354,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "lalalune",
      "avatarUrl": "https://avatars.githubusercontent.com/u/18633264?u=e2e906c3712c2506ebfa98df01c2cfdc50050b30&v=4",
      "totalScore": 43.11075765719018,
      "prScore": 43.11075765719018,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "MrTalecky",
      "avatarUrl": "https://avatars.githubusercontent.com/u/27448908?u=ae6c26a3dab091f951977912df874e42d12f02ed&v=4",
      "totalScore": 13.631573590279972,
      "prScore": 13.631573590279972,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "greptile-apps",
      "avatarUrl": "https://avatars.githubusercontent.com/in/867647?v=4",
      "totalScore": 13.5,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 13.5,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "jvonb",
      "avatarUrl": "https://avatars.githubusercontent.com/u/262670638?u=3911e2ec7a9ef3bf1eccd31e147dea1cdd4ba715&v=4",
      "totalScore": 2,
      "prScore": 0,
      "issueScore": 2,
      "reviewScore": 0,
      "commentScore": 0,
      "summary": null
    },
    {
      "username": "0xSolace",
      "avatarUrl": "https://avatars.githubusercontent.com/u/257989456?u=e0d4e0c6385403319241eb46ba647b49083d4a05&v=4",
      "totalScore": 0.33999999999999997,
      "prScore": 0,
      "issueScore": 0,
      "reviewScore": 0,
      "commentScore": 0.33999999999999997,
      "summary": null
    }
  ],
  "newPRs": 22,
  "mergedPRs": 19,
  "newIssues": 1,
  "closedIssues": 0,
  "activeContributors": 6
}