From 2392a9895ea34e6defbaa9c74dd6308fa00d398a Mon Sep 17 00:00:00 2001 From: Devin Foley Date: Thu, 3 Sep 2026 15:02:27 -0700 Subject: [PATCH 01/16] fix(ui): drop the "Open invite" action from the invites section (#12787) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Thinking Path > - Paperclip is the open source app people use to manage AI agents for work > - The Members page has an Invites tab where an admin mints single-use invite links for people > - After a link is created, the section offers two actions: "Copy link" and "Open invite" > - "Open invite" opens the inviter's own single-use link in a new tab, which is never what the inviter means — the link is for the invitee > - This pull request removes the "Open invite" button and keeps "Copy link" as the only action > - The benefit is that the section no longer invites a mistake, and the one remaining action matches the section's purpose ## Linked Issues or Issue Description No existing issue. Description follows the enhancement template: **What existing behavior does this improve?** The latest-invite panel on the Members page Invites tab. **Subsystem affected** UI — `ui/src/components/access/InvitesSection.tsx`. **Current behavior** After an invite is created, the panel shows a "Copy link" button and an "Open invite" button. "Open invite" opens the invite URL in a new tab as the inviter. **Proposed behavior** The panel shows only "Copy link". The invite URL field itself stays visible and selectable. **Reason and benefit** Invite links are single-use and addressed to the invitee. The inviter opening their own link at best shows them their own landing page and at worst walks the link toward consumption. Removing the button removes the trap. **Breaking changes** None. No API or data change. ## What Changed - Removed the "Open invite" anchor button from `InvitesSection`. - Removed the now-unused `ExternalLink` icon import. - The component test now asserts the action is absent. ## Verification - `cd ui && npx vitest run src/components/access/InvitesSection.test.tsx` — 3 tests pass. - `cd ui && npx tsc -p tsconfig.json --noEmit` — clean. - Manual: create an invite on the Members page Invites tab; the latest-invite panel shows the URL field and "Copy link" only. ## Risks Low risk. UI-only removal of one button; the invite URL remains fully visible and copyable. ## Model Used Claude Fable 5 (`claude-fable-5`, Anthropic), extended thinking, agentic tool use via Claude Code. ## Checklist - [x] I have included a thinking path that traces from project context to this change - [x] I have specified the model used (with version and capability details) - [x] I have checked ROADMAP.md and confirmed this PR does not duplicate planned core work - [x] I have searched GitHub for duplicate or related PRs and linked them above - [x] I have either (a) linked existing issues with `Fixes: #` / `Closes #` / `Refs #` OR (b) described the issue in-PR following the relevant issue template - [x] I have not referenced internal/instance-local Paperclip issues or links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip` URLs) - [x] My branch name describes the change (e.g. `docs/...`, `fix/...`) and contains no internal Paperclip ticket id or instance-derived details - [x] I have run tests locally and they pass - [x] I have added or updated tests where applicable - [x] I have updated relevant documentation to reflect my changes - [x] I have considered and documented any risks above - [ ] All Paperclip CI gates are green - [ ] Greptile is 5/5 with no open P2s, recommendations, or follow-ups - [x] I will address all Greptile and reviewer comments before requesting merge --- ui/src/components/access/InvitesSection.test.tsx | 4 +++- ui/src/components/access/InvitesSection.tsx | 8 +------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/ui/src/components/access/InvitesSection.test.tsx b/ui/src/components/access/InvitesSection.test.tsx index be0403737f..6c46f9725b 100644 --- a/ui/src/components/access/InvitesSection.test.tsx +++ b/ui/src/components/access/InvitesSection.test.tsx @@ -207,7 +207,9 @@ describe("InvitesSection", () => { "https://paperclip.local/invite/new-token", ); expect(container.textContent).toContain("Copy link"); - expect(container.textContent).toContain("Open invite"); + // The inviter opening their own single-use link is never what they + // mean, so the section deliberately offers no "Open invite" action. + expect(container.textContent).not.toContain("Open invite"); expect(pushToastMock).toHaveBeenCalledWith({ title: "Invite created", body: "Invite ready below and copied to clipboard.", diff --git a/ui/src/components/access/InvitesSection.tsx b/ui/src/components/access/InvitesSection.tsx index bc1c274156..db6f22c76e 100644 --- a/ui/src/components/access/InvitesSection.tsx +++ b/ui/src/components/access/InvitesSection.tsx @@ -1,6 +1,6 @@ import { useEffect, useMemo, useRef, useState } from "react"; import { useInfiniteQuery, useMutation, useQueryClient } from "@tanstack/react-query"; -import { Check, Copy, ExternalLink } from "lucide-react"; +import { Check, Copy } from "lucide-react"; import { accessApi } from "@/api/access"; import { ApiError } from "@/api/client"; import { Button } from "@/components/ui/button"; @@ -271,12 +271,6 @@ export function InvitesSection() { Copy link - ) : null} From 3e28ec5f4c683badb06540315a5782dd032f0d9c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 15:04:36 -0700 Subject: [PATCH 02/16] chore(deps): bump react-i18next from 17.0.11 to 17.0.12 (#12263) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [react-i18next](https://github.com/i18next/react-i18next) from 17.0.11 to 17.0.12.
Changelog

Sourced from react-i18next's changelog.

17.0.12

  • fix(IcuTrans): key-less icu.macro nodes (<Trans>Welcome, {name}!</Trans>, <Select>, <Plural> without i18nKey) rendered an empty string since 17.0.0. The macro now emits <IcuTrans defaultTranslation="…"> without a key and IcuTrans passed undefined to t(), which returns ''. Like Trans, IcuTrans now uses defaultTranslation as the key when i18nKey is not provided.
Commits
  • ea721fb 17.0.12
  • 6c2a71e fix(IcuTrans): use defaultTranslation as key when no i18nKey is given
  • 258c96d chore(examples): upgrade all example apps off unmaintained toolchains
  • b8677c8 chore: update dependencies to close dependabot alerts
  • aa9c92b docs: point Trans component links at the current docs (#1929)
  • See full diff in compare view

Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 10 +++++----- ui/package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8a847c7d0d..d6a5218609 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1117,8 +1117,8 @@ importers: specifier: ^19.2.8 version: 19.2.8(react@19.2.8) react-i18next: - specifier: ^17.0.11 - version: 17.0.11(i18next@26.4.0(typescript@7.0.2))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2) + specifier: ^17.0.12 + version: 17.0.12(i18next@26.4.0(typescript@7.0.2))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2) react-markdown: specifier: ^10.1.0 version: 10.1.0(@types/react@19.2.18)(react@19.2.8) @@ -7496,8 +7496,8 @@ packages: peerDependencies: react: ^19.2.8 - react-i18next@17.0.11: - resolution: {integrity: sha512-cDtkXgxjuFTWUH6V+aQn1Ve5vDiUztCNPWW5GtSHDccsgRXO1nE6QFWCEmc1KAutrb3OUv87wFShJL5RhUwPXg==} + react-i18next@17.0.12: + resolution: {integrity: sha512-lFWPEGkxQ6RhusdUkysFBD58VHfSSzvHBzqMgN0SvfVpdQGfwtNkStTqdy08/sJd7s807qqutgx93fRpD0DJ3Q==} peerDependencies: i18next: '>= 26.2.0' react: ^19.2.8 @@ -15101,7 +15101,7 @@ snapshots: dependencies: react: 19.2.8 - react-i18next@17.0.11(i18next@26.4.0(typescript@7.0.2))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2): + react-i18next@17.0.12(i18next@26.4.0(typescript@7.0.2))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2): dependencies: '@babel/runtime': 7.29.7 html-parse-stringify: 4.0.1 diff --git a/ui/package.json b/ui/package.json index 01fef4028b..82f8685554 100644 --- a/ui/package.json +++ b/ui/package.json @@ -65,7 +65,7 @@ "radix-ui": "^1.6.7", "react": "^19.2.8", "react-dom": "^19.2.8", - "react-i18next": "^17.0.11", + "react-i18next": "^17.0.12", "react-markdown": "^10.1.0", "react-resizable-panels": "^4.12.3", "react-router-dom": "^7.18.2", From a0028d7e1b375cc3ec7007ae9188f785df013e3e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 15:16:02 -0700 Subject: [PATCH 03/16] chore(deps-dev): bump vitest from 4.1.10 to 4.1.11 (#12262) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 4.1.10 to 4.1.11.
Release notes

Sourced from vitest's releases.

v4.1.11

   🐞 Bug Fixes

    View changes on GitHub
Commits
  • 9bd8d46 chore: release v4.1.11 (#10995)
  • 9851dbc fix(browser): trigger playwright/chromium gc on lower disk availability [back...
  • See full diff in compare view

Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- packages/adapters/hermes-gateway/package.json | 2 +- packages/adapters/hermes/package.json | 2 +- packages/db/package.json | 2 +- .../google-sheets-mcp-server/package.json | 2 +- packages/kv-demo-mcp-server/package.json | 2 +- packages/mcp-server/package.json | 2 +- packages/paperclip-runner/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- packages/plugins/plugin-llm-wiki/package.json | 2 +- .../plugin-workspace-diff/package.json | 2 +- packages/tailscale-https-broker/package.json | 2 +- pnpm-lock.yaml | 324 ++++-------------- server/package.json | 2 +- ui/package.json | 2 +- 17 files changed, 76 insertions(+), 280 deletions(-) diff --git a/package.json b/package.json index 744719a708..0a7fb82bab 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "cross-env": "^10.1.0", "esbuild": "^0.28.2", "typescript": "^7.0.2", - "vitest": "^4.1.10" + "vitest": "^4.1.11" }, "engines": { "node": ">=24.11.0" diff --git a/packages/adapters/hermes-gateway/package.json b/packages/adapters/hermes-gateway/package.json index 95beb0c0ba..71f3c206a2 100644 --- a/packages/adapters/hermes-gateway/package.json +++ b/packages/adapters/hermes-gateway/package.json @@ -73,7 +73,7 @@ "devDependencies": { "@types/node": "^24.0.0", "typescript": "^7.0.2", - "vitest": "^4.1.10" + "vitest": "^4.1.11" }, "engines": { "node": ">=24.11.0" diff --git a/packages/adapters/hermes/package.json b/packages/adapters/hermes/package.json index 8c605b2386..b097155e62 100644 --- a/packages/adapters/hermes/package.json +++ b/packages/adapters/hermes/package.json @@ -105,7 +105,7 @@ "devDependencies": { "@types/node": "^24.0.0", "typescript": "^7.0.2", - "vitest": "^4.1.10" + "vitest": "^4.1.11" }, "engines": { "node": ">=24.11.0" diff --git a/packages/db/package.json b/packages/db/package.json index 01a90c1b7f..98bb72b12d 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -57,7 +57,7 @@ "drizzle-kit": "^0.31.10", "tsx": "^4.23.12", "typescript": "^7.0.2", - "vitest": "^4.1.10" + "vitest": "^4.1.11" }, "engines": { "node": ">=24.11.0" diff --git a/packages/google-sheets-mcp-server/package.json b/packages/google-sheets-mcp-server/package.json index 8ac02e5ada..3028d0b277 100644 --- a/packages/google-sheets-mcp-server/package.json +++ b/packages/google-sheets-mcp-server/package.json @@ -52,7 +52,7 @@ "devDependencies": { "@types/node": "^24.0.0", "typescript": "^7.0.2", - "vitest": "^4.1.10" + "vitest": "^4.1.11" }, "engines": { "node": ">=24.11.0" diff --git a/packages/kv-demo-mcp-server/package.json b/packages/kv-demo-mcp-server/package.json index 0896975820..62fa36df95 100644 --- a/packages/kv-demo-mcp-server/package.json +++ b/packages/kv-demo-mcp-server/package.json @@ -50,7 +50,7 @@ "devDependencies": { "@types/node": "^24.0.0", "typescript": "^7.0.2", - "vitest": "^4.1.10" + "vitest": "^4.1.11" }, "engines": { "node": ">=24.11.0" diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index 0db2126470..dd4aea8e06 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -50,7 +50,7 @@ "devDependencies": { "@types/node": "^24.0.0", "typescript": "^7.0.2", - "vitest": "^4.1.10" + "vitest": "^4.1.11" }, "engines": { "node": ">=24.11.0" diff --git a/packages/paperclip-runner/package.json b/packages/paperclip-runner/package.json index dcff595e2f..b982609bde 100644 --- a/packages/paperclip-runner/package.json +++ b/packages/paperclip-runner/package.json @@ -186,6 +186,6 @@ "tsx": "^4.23.12", "typescript": "^7.0.2", "vite": "^6.1.0", - "vitest": "^4.1.10" + "vitest": "^4.1.11" } } diff --git a/packages/plugins/examples/plugin-authoring-smoke-example/package.json b/packages/plugins/examples/plugin-authoring-smoke-example/package.json index 34a9f4cde5..3a97b9d64d 100644 --- a/packages/plugins/examples/plugin-authoring-smoke-example/package.json +++ b/packages/plugins/examples/plugin-authoring-smoke-example/package.json @@ -37,7 +37,7 @@ "rollup": "^4.63.1", "tslib": "^2.8.1", "typescript": "^7.0.2", - "vitest": "^4.1.10" + "vitest": "^4.1.11" }, "peerDependencies": { "react": ">=18" diff --git a/packages/plugins/examples/plugin-orchestration-smoke-example/package.json b/packages/plugins/examples/plugin-orchestration-smoke-example/package.json index 038ec8783b..0fe28e7d49 100644 --- a/packages/plugins/examples/plugin-orchestration-smoke-example/package.json +++ b/packages/plugins/examples/plugin-orchestration-smoke-example/package.json @@ -38,7 +38,7 @@ "rollup": "^4.63.1", "tslib": "^2.8.1", "typescript": "^7.0.2", - "vitest": "^4.1.10" + "vitest": "^4.1.11" }, "peerDependencies": { "react": ">=18" diff --git a/packages/plugins/paperclip-plugin-fake-sandbox/package.json b/packages/plugins/paperclip-plugin-fake-sandbox/package.json index e6db052e43..34999b0afc 100644 --- a/packages/plugins/paperclip-plugin-fake-sandbox/package.json +++ b/packages/plugins/paperclip-plugin-fake-sandbox/package.json @@ -24,7 +24,7 @@ "devDependencies": { "@types/node": "^24.0.0", "typescript": "^7.0.2", - "vitest": "^4.1.10" + "vitest": "^4.1.11" }, "engines": { "node": ">=24.11.0" diff --git a/packages/plugins/plugin-llm-wiki/package.json b/packages/plugins/plugin-llm-wiki/package.json index 8c7d7ffeba..e94a5a9c91 100644 --- a/packages/plugins/plugin-llm-wiki/package.json +++ b/packages/plugins/plugin-llm-wiki/package.json @@ -47,7 +47,7 @@ "rollup": "^4.63.1", "tslib": "^2.8.1", "typescript": "^7.0.2", - "vitest": "^4.1.10" + "vitest": "^4.1.11" }, "peerDependencies": { "react": ">=18" diff --git a/packages/plugins/plugin-workspace-diff/package.json b/packages/plugins/plugin-workspace-diff/package.json index 186b11b13d..d236a05add 100644 --- a/packages/plugins/plugin-workspace-diff/package.json +++ b/packages/plugins/plugin-workspace-diff/package.json @@ -62,7 +62,7 @@ "react": "^19.2.8", "react-dom": "^19.2.8", "typescript": "^7.0.2", - "vitest": "^4.1.10" + "vitest": "^4.1.11" }, "peerDependencies": { "react": ">=18", diff --git a/packages/tailscale-https-broker/package.json b/packages/tailscale-https-broker/package.json index 4abd196b2d..9b4d42978e 100644 --- a/packages/tailscale-https-broker/package.json +++ b/packages/tailscale-https-broker/package.json @@ -20,7 +20,7 @@ "devDependencies": { "@types/node": "^24.0.0", "typescript": "^7.0.2", - "vitest": "^4.1.10" + "vitest": "^4.1.11" }, "engines": { "node": ">=24.11.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d6a5218609..46752757f1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,8 +49,8 @@ importers: specifier: ^7.0.2 version: 7.0.2 vitest: - specifier: ^4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) cli: dependencies: @@ -280,8 +280,8 @@ importers: specifier: ^7.0.2 version: 7.0.2 vitest: - specifier: ^4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) packages/adapters/hermes-gateway: dependencies: @@ -296,8 +296,8 @@ importers: specifier: ^7.0.2 version: 7.0.2 vitest: - specifier: ^4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) packages/adapters/kimi-local: dependencies: @@ -397,8 +397,8 @@ importers: specifier: ^7.0.2 version: 7.0.2 vitest: - specifier: ^4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) packages/google-sheets-mcp-server: dependencies: @@ -419,8 +419,8 @@ importers: specifier: ^7.0.2 version: 7.0.2 vitest: - specifier: ^4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) packages/kv-demo-mcp-server: dependencies: @@ -438,8 +438,8 @@ importers: specifier: ^7.0.2 version: 7.0.2 vitest: - specifier: ^4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) packages/mcp-server: dependencies: @@ -460,8 +460,8 @@ importers: specifier: ^7.0.2 version: 7.0.2 vitest: - specifier: ^4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) packages/paperclip-eval-kernel: devDependencies: @@ -536,8 +536,8 @@ importers: specifier: ^6.1.0 version: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.33.0)(tsx@4.23.12) vitest: - specifier: ^4.1.10 - version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(jsdom@30.0.1(@noble/hashes@2.4.0))(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.33.0)(tsx@4.23.12)) + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) packages/plugins/create-paperclip-plugin: dependencies: @@ -583,8 +583,8 @@ importers: specifier: ^7.0.2 version: 7.0.2 vitest: - specifier: ^4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) packages/plugins/examples/plugin-file-browser-example: dependencies: @@ -701,8 +701,8 @@ importers: specifier: ^7.0.2 version: 7.0.2 vitest: - specifier: ^4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) packages/plugins/plugin-llm-wiki: devDependencies: @@ -740,8 +740,8 @@ importers: specifier: ^7.0.2 version: 7.0.2 vitest: - specifier: ^4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) packages/plugins/plugin-workspace-diff: dependencies: @@ -774,8 +774,8 @@ importers: specifier: ^7.0.2 version: 7.0.2 vitest: - specifier: ^4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) packages/plugins/sdk: dependencies: @@ -828,8 +828,8 @@ importers: specifier: ^7.0.2 version: 7.0.2 vitest: - specifier: ^4.1.10 - version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(jsdom@30.0.1(@noble/hashes@2.4.0))(vite@8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)) + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) packages/teams-catalog: devDependencies: @@ -895,7 +895,7 @@ importers: version: link:../packages/skills-catalog '@vercel/connect': specifier: 0.6.1 - version: 0.6.1(better-auth@1.7.2(@opentelemetry/api@1.9.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(kysely@0.29.5)(pg@8.18.0)(postgres@3.4.9))(pg@8.18.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12))) + version: 0.6.1(better-auth@1.7.2(@opentelemetry/api@1.9.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(kysely@0.29.5)(pg@8.18.0)(postgres@3.4.9))(pg@8.18.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12))) acpx: specifier: 0.13.1 version: 0.13.1(patch_hash=lzpwjtiaybzoijy455dfycwavu) @@ -907,7 +907,7 @@ importers: version: 3.0.1(ajv@8.20.0) better-auth: specifier: 1.7.2 - version: 1.7.2(@opentelemetry/api@1.9.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(kysely@0.29.5)(pg@8.18.0)(postgres@3.4.9))(pg@8.18.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12)) + version: 1.7.2(@opentelemetry/api@1.9.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(kysely@0.29.5)(pg@8.18.0)(postgres@3.4.9))(pg@8.18.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12)) chokidar: specifier: ^5.0.0 version: 5.0.0 @@ -1003,8 +1003,8 @@ importers: specifier: ^8.2.2 version: 8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12) vitest: - specifier: ^4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) ui: dependencies: @@ -1178,8 +1178,8 @@ importers: specifier: ^8.2.2 version: 8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12) vitest: - specifier: ^4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) + specifier: ^4.1.11 + version: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) packages: @@ -2619,8 +2619,8 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} @@ -5089,23 +5089,9 @@ packages: '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - '@vitest/expect@4.1.10': - resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} - '@vitest/expect@4.1.11': resolution: {integrity: sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==} - '@vitest/mocker@4.1.10': - resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} - peerDependencies: - msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true - '@vitest/mocker@4.1.11': resolution: {integrity: sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==} peerDependencies: @@ -5120,39 +5106,24 @@ packages: '@vitest/pretty-format@3.2.4': resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} - '@vitest/pretty-format@4.1.10': - resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} - '@vitest/pretty-format@4.1.11': resolution: {integrity: sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==} - '@vitest/runner@4.1.10': - resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} - '@vitest/runner@4.1.11': resolution: {integrity: sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==} - '@vitest/snapshot@4.1.10': - resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} - '@vitest/snapshot@4.1.11': resolution: {integrity: sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==} '@vitest/spy@3.2.4': resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - '@vitest/spy@4.1.10': - resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} - '@vitest/spy@4.1.11': resolution: {integrity: sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==} '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@vitest/utils@4.1.10': - resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} - '@vitest/utils@4.1.11': resolution: {integrity: sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==} @@ -6078,9 +6049,6 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-module-lexer@2.3.1: - resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==} - es-module-lexer@2.3.2: resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} @@ -7339,10 +7307,6 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@4.0.5: - resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} - engines: {node: '>=12'} - picomatch@4.0.7: resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} engines: {node: '>=12'} @@ -7970,12 +7934,8 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@1.2.4: - resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} - engines: {node: '>=18'} - - tinyexec@1.3.0: - resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} + tinyexec@1.3.1: + resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} engines: {node: '>=18'} tinyglobby@0.2.17: @@ -7986,10 +7946,6 @@ packages: resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} - tinyrainbow@3.1.0: - resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} - engines: {node: '>=14.0.0'} - tinyrainbow@3.1.1: resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} engines: {node: '>=14.0.0'} @@ -8273,46 +8229,6 @@ packages: yaml: optional: true - vitest@4.1.10: - resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.10 - '@vitest/browser-preview': 4.1.10 - '@vitest/browser-webdriverio': 4.1.10 - '@vitest/coverage-istanbul': 4.1.10 - '@vitest/coverage-v8': 4.1.10 - '@vitest/ui': 4.1.10 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@opentelemetry/api': - optional: true - '@types/node': - optional: true - '@vitest/browser-playwright': - optional: true - '@vitest/browser-preview': - optional: true - '@vitest/browser-webdriverio': - optional: true - '@vitest/coverage-istanbul': - optional: true - '@vitest/coverage-v8': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - vitest@4.1.11: resolution: {integrity: sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -8329,7 +8245,6 @@ packages: '@vitest/ui': 4.1.11 happy-dom: '*' jsdom: '*' - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -8536,7 +8451,7 @@ snapshots: '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.8.0 - tinyexec: 1.3.0 + tinyexec: 1.3.1 '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.232': optional: true @@ -9916,7 +9831,7 @@ snapshots: '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': @@ -9926,12 +9841,12 @@ snapshots: '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/sourcemap-codec@1.6.0': {} '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@lexical/a11y@0.48.0(typescript@7.0.2)': dependencies: @@ -12323,11 +12238,11 @@ snapshots: dependencies: execa: 5.1.1 - '@vercel/connect@0.6.1(better-auth@1.7.2(@opentelemetry/api@1.9.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(kysely@0.29.5)(pg@8.18.0)(postgres@3.4.9))(pg@8.18.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12)))': + '@vercel/connect@0.6.1(better-auth@1.7.2(@opentelemetry/api@1.9.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(kysely@0.29.5)(pg@8.18.0)(postgres@3.4.9))(pg@8.18.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12)))': dependencies: '@vercel/oidc': 3.8.2 optionalDependencies: - better-auth: 1.7.2(@opentelemetry/api@1.9.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(kysely@0.29.5)(pg@8.18.0)(postgres@3.4.9))(pg@8.18.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12)) + better-auth: 1.7.2(@opentelemetry/api@1.9.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(kysely@0.29.5)(pg@8.18.0)(postgres@3.4.9))(pg@8.18.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12)) '@vercel/oidc@3.8.2': dependencies: @@ -12353,15 +12268,6 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/expect@4.1.10': - dependencies: - '@standard-schema/spec': 1.1.0 - '@types/chai': 5.2.3 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 - chai: 6.2.2 - tinyrainbow: 3.1.0 - '@vitest/expect@4.1.11': dependencies: '@standard-schema/spec': 1.1.0 @@ -12371,22 +12277,6 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.1 - '@vitest/mocker@4.1.10(vite@8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12))': - dependencies: - '@vitest/spy': 4.1.10 - estree-walker: 3.0.3 - magic-string: 0.30.21 - optionalDependencies: - vite: 8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12) - - '@vitest/mocker@4.1.11(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.33.0)(tsx@4.23.12))': - dependencies: - '@vitest/spy': 4.1.11 - estree-walker: 3.0.3 - magic-string: 0.30.21 - optionalDependencies: - vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.33.0)(tsx@4.23.12) - '@vitest/mocker@4.1.11(vite@8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12))': dependencies: '@vitest/spy': 4.1.11 @@ -12399,31 +12289,15 @@ snapshots: dependencies: tinyrainbow: 2.0.0 - '@vitest/pretty-format@4.1.10': - dependencies: - tinyrainbow: 3.1.0 - '@vitest/pretty-format@4.1.11': dependencies: tinyrainbow: 3.1.1 - '@vitest/runner@4.1.10': - dependencies: - '@vitest/utils': 4.1.10 - pathe: 2.0.3 - '@vitest/runner@4.1.11': dependencies: '@vitest/utils': 4.1.11 pathe: 2.0.3 - '@vitest/snapshot@4.1.10': - dependencies: - '@vitest/pretty-format': 4.1.10 - '@vitest/utils': 4.1.10 - magic-string: 0.30.21 - pathe: 2.0.3 - '@vitest/snapshot@4.1.11': dependencies: '@vitest/pretty-format': 4.1.11 @@ -12435,8 +12309,6 @@ snapshots: dependencies: tinyspy: 4.0.4 - '@vitest/spy@4.1.10': {} - '@vitest/spy@4.1.11': {} '@vitest/utils@3.2.4': @@ -12445,12 +12317,6 @@ snapshots: loupe: 3.2.1 tinyrainbow: 2.0.0 - '@vitest/utils@4.1.10': - dependencies: - '@vitest/pretty-format': 4.1.10 - convert-source-map: 2.0.0 - tinyrainbow: 3.1.0 - '@vitest/utils@4.1.11': dependencies: '@vitest/pretty-format': 4.1.11 @@ -12624,7 +12490,7 @@ snapshots: dependencies: tweetnacl: 0.14.5 - better-auth@1.7.2(@opentelemetry/api@1.9.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(kysely@0.29.5)(pg@8.18.0)(postgres@3.4.9))(pg@8.18.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12)): + better-auth@1.7.2(@opentelemetry/api@1.9.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(kysely@0.29.5)(pg@8.18.0)(postgres@3.4.9))(pg@8.18.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(vitest@4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12)): dependencies: '@better-auth/core': 1.7.2(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.10)(kysely@0.29.5)(nanostores@1.5.3) '@better-auth/drizzle-adapter': 1.7.2(@better-auth/core@1.7.2(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.4.0(zod@4.4.3))(jose@6.2.10)(kysely@0.29.5)(nanostores@1.5.3))(@better-auth/utils@0.4.2)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(kysely@0.29.5)(pg@8.18.0)(postgres@3.4.9)) @@ -12649,7 +12515,7 @@ snapshots: pg: 8.18.0 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) + vitest: 4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12) transitivePeerDependencies: - '@cloudflare/workers-types' - '@opentelemetry/api' @@ -13230,8 +13096,6 @@ snapshots: es-errors@1.3.0: {} - es-module-lexer@2.3.1: {} - es-module-lexer@2.3.2: {} es-object-atoms@1.1.1: @@ -13454,10 +13318,6 @@ snapshots: dependencies: format: 0.2.2 - fdir@6.5.0(picomatch@4.0.5): - optionalDependencies: - picomatch: 4.0.5 - fdir@6.5.0(picomatch@4.0.7): optionalDependencies: picomatch: 4.0.7 @@ -14041,7 +13901,7 @@ snapshots: magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 markdown-table@3.0.4: {} @@ -14871,8 +14731,6 @@ snapshots: picocolors@1.1.1: {} - picomatch@4.0.5: {} - picomatch@4.0.7: {} pino-abstract-transport@3.0.0: @@ -15727,19 +15585,15 @@ snapshots: tinybench@2.9.0: {} - tinyexec@1.2.4: {} - - tinyexec@1.3.0: {} + tinyexec@1.3.1: {} tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 tinyrainbow@2.0.0: {} - tinyrainbow@3.1.0: {} - tinyrainbow@3.1.1: {} tinyspy@4.0.4: {} @@ -15978,26 +15832,26 @@ snapshots: jiti: 2.7.0 tsx: 4.23.12 - vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12): + vitest@4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(tsx@4.23.12): dependencies: - '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)) - '@vitest/pretty-format': 4.1.10 - '@vitest/runner': 4.1.10 - '@vitest/snapshot': 4.1.10 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 - es-module-lexer: 2.3.1 + '@vitest/expect': 4.1.11 + '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)) + '@vitest/pretty-format': 4.1.11 + '@vitest/runner': 4.1.11 + '@vitest/snapshot': 4.1.11 + '@vitest/spy': 4.1.11 + '@vitest/utils': 4.1.11 + es-module-lexer: 2.3.2 expect-type: 1.4.0 magic-string: 0.30.21 obug: 2.1.4 pathe: 2.0.3 - picomatch: 4.0.5 + picomatch: 4.0.7 std-env: 4.2.0 tinybench: 2.9.0 - tinyexec: 1.2.4 + tinyexec: 1.3.1 tinyglobby: 0.2.17 - tinyrainbow: 3.1.0 + tinyrainbow: 3.1.1 vite: 8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12) why-is-node-running: 2.3.0 optionalDependencies: @@ -16018,64 +15872,6 @@ snapshots: - tsx - yaml - vitest@4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(jsdom@30.0.1(@noble/hashes@2.4.0))(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.33.0)(tsx@4.23.12)): - dependencies: - '@vitest/expect': 4.1.11 - '@vitest/mocker': 4.1.11(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.33.0)(tsx@4.23.12)) - '@vitest/pretty-format': 4.1.11 - '@vitest/runner': 4.1.11 - '@vitest/snapshot': 4.1.11 - '@vitest/spy': 4.1.11 - '@vitest/utils': 4.1.11 - es-module-lexer: 2.3.2 - expect-type: 1.4.0 - magic-string: 0.30.21 - obug: 2.1.4 - pathe: 2.0.3 - picomatch: 4.0.5 - std-env: 4.2.0 - tinybench: 2.9.0 - tinyexec: 1.3.0 - tinyglobby: 0.2.17 - tinyrainbow: 3.1.1 - vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.33.0)(tsx@4.23.12) - why-is-node-running: 2.3.0 - optionalDependencies: - '@opentelemetry/api': 1.9.1 - '@types/node': 24.13.3 - jsdom: 30.0.1(@noble/hashes@2.4.0) - transitivePeerDependencies: - - msw - - vitest@4.1.11(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(jsdom@30.0.1(@noble/hashes@2.4.0))(vite@8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)): - dependencies: - '@vitest/expect': 4.1.11 - '@vitest/mocker': 4.1.11(vite@8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)) - '@vitest/pretty-format': 4.1.11 - '@vitest/runner': 4.1.11 - '@vitest/snapshot': 4.1.11 - '@vitest/spy': 4.1.11 - '@vitest/utils': 4.1.11 - es-module-lexer: 2.3.2 - expect-type: 1.4.0 - magic-string: 0.30.21 - obug: 2.1.4 - pathe: 2.0.3 - picomatch: 4.0.5 - std-env: 4.2.0 - tinybench: 2.9.0 - tinyexec: 1.3.0 - tinyglobby: 0.2.17 - tinyrainbow: 3.1.1 - vite: 8.2.2(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12) - why-is-node-running: 2.3.0 - optionalDependencies: - '@opentelemetry/api': 1.9.1 - '@types/node': 24.13.3 - jsdom: 30.0.1(@noble/hashes@2.4.0) - transitivePeerDependencies: - - msw - vscode-jsonrpc@9.0.1: {} w3c-keyname@2.2.8: {} diff --git a/server/package.json b/server/package.json index 46cb5c1476..a9ea4de864 100644 --- a/server/package.json +++ b/server/package.json @@ -103,7 +103,7 @@ "tsx": "^4.23.12", "typescript": "^7.0.2", "vite": "^8.2.2", - "vitest": "^4.1.10" + "vitest": "^4.1.11" }, "peerDependencies": { "@opentelemetry/auto-instrumentations-node": "0.79.0", diff --git a/ui/package.json b/ui/package.json index 82f8685554..2d6abb814f 100644 --- a/ui/package.json +++ b/ui/package.json @@ -87,7 +87,7 @@ "tailwindcss": "^4.3.3", "typescript": "^7.0.2", "vite": "^8.2.2", - "vitest": "^4.1.10" + "vitest": "^4.1.11" }, "engines": { "node": ">=24.11.0" From daa23910218a5a816841aecc0ad9b9d5b6648b2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 15:16:31 -0700 Subject: [PATCH 04/16] chore(deps): bump @aws-sdk/client-s3 from 3.1120.0 to 3.1122.0 (#12261) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3) from 3.1120.0 to 3.1122.0.
Release notes

Sourced from @​aws-sdk/client-s3's releases.

v3.1122.0

3.1122.0(2026-08-31)

Documentation Changes
  • client-controltower: Updated the descriptions for the AWS Control Tower ListEnabledControls API parameters to make them more accurate and intuitive. (c54ac4e6)
New Features
  • client-pinpoint-sms-voice-v2: AWS End User Messaging SMS now returns ConditionalBehavior on DescribeRegistrationFieldDefinitions, allowing you to programmatically discover which registration fields are required, optional, or disallowed based on the values of other fields in the same form. (9cbace13)
  • client-customer-profiles: This release introduces new APIs for segment membership events allowing segment definition membership events to be exported to a kinesis stream for downstream processing. Additionally, includes new calculated attribute statistic and 2 new segment dimension types. (be1a9dab)
  • client-sagemaker: Amazon SageMaker Batch Transform now supports G6e instances, powered by NVIDIA L40S Tensor Core GPUs. G6e instances are the most cost-efficient GPU instances for deploying generative AI models and the highest-performance GPU instances for spatial computing workloads. (b063cf77)
  • client-quicksight: This release adds support for managing apps in Amazon QuickSight with ListApps, SearchApps, DescribeApp, DescribeAppPermissions, UpdateAppPermissions, and DeleteApp (98a49570)
  • client-connect: Added support for global routing on Amazon Connect Global Resiliency instances. New APIs GetCrossRegionRouting and UpdateCrossRegionRouting allow you to view and control cross-region contact routing between linked instances, so both Regions are active at all times. (ce410263)
  • client-agent-registry-control: AWS Agent Registry becomes Generally Available (e41244e9)
  • client-kinesis: Adds support for data delivery to Amazon S3 Tables (Apache Iceberg) and general purpose Amazon S3 buckets with new CreateChannel, UpdateChannel, DeleteChannel, DescribeChannel, and ListChannels APIs for Amazon Kinesis Data Streams. (64ebb058)
  • client-agent-registry: AWS Agent Registry becomes Generally Available (e60306f1)
  • client-devops-agent: Adds support for Slack bidirectional communication configuration in AWS DevOps Agent agent spaces. (75bc6d6d)
  • client-kafkaconnect: Amazon MSK Connect now supports restarting newly created connectors via the asynchronous RestartConnector API. Restart all tasks or only failed tasks, while preserving configuration and committed offsets. This returns a connector operation ARN that you can track with DescribeConnectorOperation. (8771afaf)
  • client-support: AWS Support now allows up to 10 attachments (150 MB each) per case correspondence, up from 3 at 5 MB. Customers can share large diagnostic logs, heap dumps, and packet captures directly in cases to reduce back-and-forth and speed up resolution. Available in US East, US West, and Europe (Ireland). (4ddd79c1)
  • client-workspaces-instances: Amazon WorkSpaces Core managed instances now support nested virtualization. Customers can enable nested virtualization with supported instance types at launch via CpuOptions.NestedVirtualization in CreateWorkspaceInstance to run hypervisors and virtual machines inside their WorkSpaces Instance. (29587d12)

For list of updated packages, view updated-packages.md in assets-3.1122.0.zip

v3.1121.0

3.1121.0(2026-08-28)

New Features
  • client-ecs: Amazon Elastic Container Service - This release adds support for early success criteria on ECS rolling deployments, letting deployment complete once a configurable percentage of tasks are healthy, with configurable BLOCKING (required) or DEFERRED (asynchronous) cleanup of previous service revisions. (ef22d750)
  • client-healthlake: New HealthLake API, RestoreFHIRDatastore, providing the capability to restore active datastores to a point in time within the last 30 days or recover a deleted datastore from the delete snapshot. (62491742)
  • client-bedrock-agentcore: AgentCore Memory now supports direct ingestion into long-term memory via IngestData API (20d652de)
  • client-partnercentral-selling: Releasing PARC, new APN Program that lets sellers add solftware revenue details to aws opportunity summary (2b6350f0)
  • client-cognito-identity-provider: Adds two new operations - GetClientToken which allows M2M auth through the SDK, and DescribeTermsByClient to find which Terms are associated with a user-pool client without knowing the Terms resource id. (86dffd28)
  • client-bedrock-agent: Adds an optional syncSchedule field to CreateDataSource and UpdateDataSource for Managed Knowledge Bases data source connectors, so a data source can sync automatically on a daily, weekly, or monthly schedule. (a8d3714a)

For list of updated packages, view updated-packages.md in assets-3.1121.0.zip

Changelog

Sourced from @​aws-sdk/client-s3's changelog.

3.1122.0 (2026-08-31)

Note: Version bump only for package @​aws-sdk/client-s3

3.1121.0 (2026-08-28)

Note: Version bump only for package @​aws-sdk/client-s3

Commits

Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 92 ++++++++++++++++++++++----------------------- server/package.json | 2 +- 2 files changed, 47 insertions(+), 47 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 46752757f1..0256ee936d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -840,8 +840,8 @@ importers: server: dependencies: '@aws-sdk/client-s3': - specifier: ^3.1120.0 - version: 3.1120.0 + specifier: ^3.1122.0 + version: 3.1122.0 '@opentelemetry/api': specifier: ^1.9.0 version: 1.9.1 @@ -1390,8 +1390,8 @@ packages: resolution: {integrity: sha512-Dtu0gr4dnATZAPwEYbpCsG+MpLM7OAliy2gTepEFQwl1vZ6DL3QMH2FveMa3HLvPsOdhJsPRB3KtxVhph9T75A==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-s3@3.1120.0': - resolution: {integrity: sha512-UunWgNl/U8wIlxVRyhUPqlozFkUS88UqXjAH50XfPDXaZeK9P7KVYTAh4KREVrLPQTzPxVSbQGog3gHlc/P6vg==} + '@aws-sdk/client-s3@3.1122.0': + resolution: {integrity: sha512-efrWRspDhSf+bbL/yOnM8IzZhX7FZqkb6K35XkIRk1KqR6Vxll6weZzmeiIWlYmERI7BmaB5BhGZaw4lrYtk7Q==} engines: {node: '>=20.0.0'} '@aws-sdk/core@3.977.9': @@ -1414,8 +1414,8 @@ packages: resolution: {integrity: sha512-Jb59xfEISoN5mmbnA+HYqdtrSX3CgCtJoof+V5D8/TgUI56W63GEEd5Y58WijU3Ou6+WEgaLD1feVzaRXV5IDQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-node@3.972.81': - resolution: {integrity: sha512-Rml+WitoFvXmv6JZ18U/xGdGDGGvB/mOin0ya0lTnTrdC0Z1lrVxTYh7iNklZBcvcRMrs4DoEf6xy1KWyrLQQw==} + '@aws-sdk/credential-provider-node@3.972.82': + resolution: {integrity: sha512-znDkEOGXB8W3kG1LJUKP3foBZY/9qLM0eil/DxWXSp37XsdsRLQHE/d/OaCGGVgKpA6znR38h/+INk8do1FjiA==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-process@3.972.70': @@ -4450,20 +4450,20 @@ packages: resolution: {integrity: sha512-A9uSdn72ozbRUSit0eib0TW7nXuNPlaeM0zcGkJ+nE6tFcSDbnmtwoxbTCFBukVQcszDAyvsd7+rTduPTXpygg==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.7.2': - resolution: {integrity: sha512-nZyWTmSpJEXl6VtWVMBJve/7x12DZu6sIX1z1a+ZMaHlQQRs9Zpu6NbTe/gmxYXVRpkjxyDYpZ5gx2IM6f/Wkw==} + '@smithy/fetch-http-handler@5.8.0': + resolution: {integrity: sha512-ycSJu3tFAQ4v04CBB0agqFMVsSQ1iG3yw+SpgxRqKfaURpQD4CZ8Wn0zPMmSnOuTpTh65Vz+EA0rMrw089wvkA==} engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.11.3': - resolution: {integrity: sha512-2jY1tSpERfPfWqyBV2pH+iGFaghVsIJszJNsT7hxtQYhVJpWDyc0LqOWI+nXOxOAHaEfZ4PXXtp1wW1TGpHhkA==} + '@smithy/node-http-handler@4.12.1': + resolution: {integrity: sha512-ThMkboGeONWXAelq9FvGsuJC4rOi+qyC4/zhUF58xYpxUg5sQKx2VXZYJmtNjr4dSuBJ1HeJXETQILCz3wOHvw==} engines: {node: '>=18.0.0'} '@smithy/signature-v4@5.7.3': resolution: {integrity: sha512-7ImGm+FkHRLcBaRttIAMZ6bzJZWb2cJGoYjq46F2UjycujWzrL9GEN9h4w7eQyXJYnltrUhxbbieBAIRrdqpow==} engines: {node: '>=18.0.0'} - '@smithy/types@4.17.2': - resolution: {integrity: sha512-FOKpVZob9MPTn2znRzGrnsMHv7BOsKVw3XiP/cOyYLDVZ9qKp4nifIiSCuUU/fIj5Vu0UOAxCFr+qRAtG0NUkA==} + '@smithy/types@4.18.0': + resolution: {integrity: sha512-CgB6HHWer/vrKps24ulRIbpcpb7K4xAU7SkZ7YHzBPlwHsvsrCJFEXK421s+cJzX+ZrqtA/TuU5w1HzI7k9N8A==} engines: {node: '>=18.0.0'} '@stablelib/base64@1.0.1': @@ -8616,21 +8616,21 @@ snapshots: '@aws-sdk/core': 3.977.9 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 - '@aws-sdk/client-s3@3.1120.0': + '@aws-sdk/client-s3@3.1122.0': dependencies: '@aws-sdk/checksums': 3.1000.29 '@aws-sdk/core': 3.977.9 - '@aws-sdk/credential-provider-node': 3.972.81 + '@aws-sdk/credential-provider-node': 3.972.82 '@aws-sdk/middleware-sdk-s3': 3.972.75 '@aws-sdk/signature-v4-multi-region': 3.996.46 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/fetch-http-handler': 5.7.2 - '@smithy/node-http-handler': 4.11.3 - '@smithy/types': 4.17.2 + '@smithy/fetch-http-handler': 5.8.0 + '@smithy/node-http-handler': 4.12.1 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@aws-sdk/core@3.977.9': @@ -8640,7 +8640,7 @@ snapshots: '@aws/lambda-invoke-store': 0.3.0 '@smithy/core': 3.33.3 '@smithy/signature-v4': 5.7.3 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 bowser: 2.14.1 tslib: 2.8.1 @@ -8649,7 +8649,7 @@ snapshots: '@aws-sdk/core': 3.977.9 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@aws-sdk/credential-provider-http@3.972.72': @@ -8657,9 +8657,9 @@ snapshots: '@aws-sdk/core': 3.977.9 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/fetch-http-handler': 5.7.2 - '@smithy/node-http-handler': 4.11.3 - '@smithy/types': 4.17.2 + '@smithy/fetch-http-handler': 5.8.0 + '@smithy/node-http-handler': 4.12.1 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@aws-sdk/credential-provider-ini@3.973.15': @@ -8675,7 +8675,7 @@ snapshots: '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 '@smithy/credential-provider-imds': 4.5.2 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@aws-sdk/credential-provider-login@3.972.77': @@ -8684,10 +8684,10 @@ snapshots: '@aws-sdk/nested-clients': 3.997.44 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-node@3.972.81': + '@aws-sdk/credential-provider-node@3.972.82': dependencies: '@aws-sdk/credential-provider-env': 3.972.70 '@aws-sdk/credential-provider-http': 3.972.72 @@ -8698,7 +8698,7 @@ snapshots: '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 '@smithy/credential-provider-imds': 4.5.2 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@aws-sdk/credential-provider-process@3.972.70': @@ -8706,7 +8706,7 @@ snapshots: '@aws-sdk/core': 3.977.9 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@aws-sdk/credential-provider-sso@3.973.14': @@ -8716,7 +8716,7 @@ snapshots: '@aws-sdk/token-providers': 3.1116.0 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@aws-sdk/credential-provider-web-identity@3.972.76': @@ -8725,7 +8725,7 @@ snapshots: '@aws-sdk/nested-clients': 3.997.44 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@aws-sdk/middleware-sdk-s3@3.972.75': @@ -8734,7 +8734,7 @@ snapshots: '@aws-sdk/signature-v4-multi-region': 3.996.46 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@aws-sdk/nested-clients@3.997.44': @@ -8743,16 +8743,16 @@ snapshots: '@aws-sdk/signature-v4-multi-region': 3.996.46 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/fetch-http-handler': 5.7.2 - '@smithy/node-http-handler': 4.11.3 - '@smithy/types': 4.17.2 + '@smithy/fetch-http-handler': 5.8.0 + '@smithy/node-http-handler': 4.12.1 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@aws-sdk/signature-v4-multi-region@3.996.46': dependencies: '@aws-sdk/types': 3.974.5 '@smithy/signature-v4': 5.7.3 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@aws-sdk/token-providers@3.1116.0': @@ -8761,17 +8761,17 @@ snapshots: '@aws-sdk/nested-clients': 3.997.44 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@aws-sdk/types@3.974.5': dependencies: - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@aws-sdk/xml-builder@3.972.40': dependencies: - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@aws/lambda-invoke-store@0.3.0': {} @@ -11640,34 +11640,34 @@ snapshots: '@smithy/core@3.33.3': dependencies: - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@smithy/credential-provider-imds@4.5.2': dependencies: '@smithy/core': 3.33.3 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.7.2': + '@smithy/fetch-http-handler@5.8.0': dependencies: '@smithy/core': 3.33.3 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 - '@smithy/node-http-handler@4.11.3': + '@smithy/node-http-handler@4.12.1': dependencies: '@smithy/core': 3.33.3 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 '@smithy/signature-v4@5.7.3': dependencies: '@smithy/core': 3.33.3 - '@smithy/types': 4.17.2 + '@smithy/types': 4.18.0 tslib: 2.8.1 - '@smithy/types@4.17.2': + '@smithy/types@4.18.0': dependencies: tslib: 2.8.1 diff --git a/server/package.json b/server/package.json index a9ea4de864..13a9b007a0 100644 --- a/server/package.json +++ b/server/package.json @@ -44,7 +44,7 @@ "typecheck": "pnpm run prepare:runner-vendor && pnpm --filter @paperclipai/plugin-sdk ensure-build-deps && tsc --noEmit" }, "dependencies": { - "@aws-sdk/client-s3": "^3.1120.0", + "@aws-sdk/client-s3": "^3.1122.0", "@opentelemetry/api": "^1.9.0", "@paperclipai/adapter-claude-local": "workspace:*", "@paperclipai/adapter-codex-local": "workspace:*", From fa86407ad8c763e392670fc0b31bff53cb174420 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 15:16:56 -0700 Subject: [PATCH 05/16] chore(deps): bump yjs from 13.6.29 to 13.6.32 (#12256) Bumps [yjs](https://github.com/yjs/yjs) from 13.6.29 to 13.6.32.
Release notes

Sourced from yjs's releases.

v13.6.32

  • fix #797 - undomanager clears destroy handler 95e890d9

https://github.com/yjs/yjs/compare/v13.6.31...v13.6.32

v13.6.31

  • Merge branch &#39;ppiotrowicz-fix/757-undo-attr-redo&#39; into v13 1ddba7e4
  • fix #757 in v13 d9aaff72
  • fix undoing setAttribute combined with delete corrupts remote state - closes #757 67c809ee

https://github.com/yjs/yjs/compare/v13.6.30...v13.6.31

v13.6.30

  • lint 0504939a
  • fix mutation of DeleteItem in sortAndMergeDeleteSet - closes #767 5d5f1ad6

https://github.com/yjs/yjs/compare/v13.6.29...v13.6.30

Commits

Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 26 +++++++++++++------------- ui/package.json | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0256ee936d..9642897921 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1028,7 +1028,7 @@ importers: version: 0.48.0(typescript@7.0.2) '@mdxeditor/editor': specifier: ^4.2.3 - version: 4.2.3(@codemirror/language@6.12.4)(@lezer/highlight@1.2.3)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2)(yjs@13.6.29) + version: 4.2.3(@codemirror/language@6.12.4)(@lezer/highlight@1.2.3)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2)(yjs@13.6.32) '@paperclipai/adapter-claude-local': specifier: workspace:* version: link:../packages/adapters/claude-local @@ -1135,8 +1135,8 @@ importers: specifier: ^3.6.0 version: 3.6.0 yjs: - specifier: 13.6.29 - version: 13.6.29 + specifier: 13.6.32 + version: 13.6.32 devDependencies: '@sentry/browser': specifier: 10.71.0 @@ -8366,8 +8366,8 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yjs@13.6.29: - resolution: {integrity: sha512-kHqDPdltoXH+X4w1lVmMtddE3Oeqq48nM40FD5ojTd8xYhQpzIDcfE2keMSU5bAgRPJBe225WTUdyUgj1DtbiQ==} + yjs@13.6.32: + resolution: {integrity: sha512-lfiJIIC4Xayt5ItynE407ehlE03pCjeOc4hkR4yxxvvNJ4kuiN25B0g+Qp8XagYz361LLL7DCzR5bvFJ81QKtQ==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} zod-to-json-schema@3.25.2: @@ -9996,7 +9996,7 @@ snapshots: optionalDependencies: typescript: 7.0.2 - '@lexical/react@0.48.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2)(yjs@13.6.29)': + '@lexical/react@0.48.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2)(yjs@13.6.32)': dependencies: '@floating-ui/react': 0.27.20(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@lexical/a11y': 0.48.0(typescript@7.0.2) @@ -10016,13 +10016,13 @@ snapshots: '@lexical/table': 0.48.0(typescript@7.0.2) '@lexical/text': 0.48.0(typescript@7.0.2) '@lexical/utils': 0.48.0(typescript@7.0.2) - '@lexical/yjs': 0.48.0(typescript@7.0.2)(yjs@13.6.29) + '@lexical/yjs': 0.48.0(typescript@7.0.2)(yjs@13.6.32) lexical: 0.48.0(typescript@7.0.2) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: typescript: 7.0.2 - yjs: 13.6.29 + yjs: 13.6.32 '@lexical/rich-text@0.48.0(typescript@7.0.2)': dependencies: @@ -10069,12 +10069,12 @@ snapshots: optionalDependencies: typescript: 7.0.2 - '@lexical/yjs@0.48.0(typescript@7.0.2)(yjs@13.6.29)': + '@lexical/yjs@0.48.0(typescript@7.0.2)(yjs@13.6.32)': dependencies: '@lexical/internal': 0.48.0(typescript@7.0.2) '@lexical/selection': 0.48.0(typescript@7.0.2) lexical: 0.48.0(typescript@7.0.2) - yjs: 13.6.29 + yjs: 13.6.32 optionalDependencies: typescript: 7.0.2 @@ -10183,7 +10183,7 @@ snapshots: '@types/react': 19.2.18 react: 19.2.8 - '@mdxeditor/editor@4.2.3(@codemirror/language@6.12.4)(@lezer/highlight@1.2.3)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2)(yjs@13.6.29)': + '@mdxeditor/editor@4.2.3(@codemirror/language@6.12.4)(@lezer/highlight@1.2.3)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2)(yjs@13.6.32)': dependencies: '@codemirror/commands': 6.11.0 '@codemirror/lang-markdown': 6.5.2 @@ -10198,7 +10198,7 @@ snapshots: '@lexical/list': 0.48.0(typescript@7.0.2) '@lexical/markdown': 0.48.0(typescript@7.0.2) '@lexical/plain-text': 0.48.0(typescript@7.0.2) - '@lexical/react': 0.48.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2)(yjs@13.6.29) + '@lexical/react': 0.48.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2)(yjs@13.6.32) '@lexical/rich-text': 0.48.0(typescript@7.0.2) '@lexical/selection': 0.48.0(typescript@7.0.2) '@lexical/utils': 0.48.0(typescript@7.0.2) @@ -15955,7 +15955,7 @@ snapshots: yallist@3.1.1: {} - yjs@13.6.29: + yjs@13.6.32: dependencies: lib0: 0.2.117 diff --git a/ui/package.json b/ui/package.json index 2d6abb814f..7c2fd10795 100644 --- a/ui/package.json +++ b/ui/package.json @@ -71,7 +71,7 @@ "react-router-dom": "^7.18.2", "remark-gfm": "^4.0.1", "tailwind-merge": "^3.6.0", - "yjs": "13.6.29" + "yjs": "13.6.32" }, "devDependencies": { "@sentry/browser": "10.71.0", From 871f7d1124632449ac39d937005b9cf7515d5b23 Mon Sep 17 00:00:00 2001 From: scotttong Date: Thu, 3 Sep 2026 15:35:39 -0700 Subject: [PATCH 06/16] fix(ui): polish core navigation and task layout (#12793) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Thinking Path > - Paperclip is the open source app people use to manage AI agents for work. > - Operators use the main navigation, contextual navigation, and task chat throughout the product. > - The recent core UI refactor left uneven spacing and inconsistent navigation styles. > - The Apps label also did not match the Connectors product language. > - The account area did not provide a clear direct path for feedback. > - This pull request aligns these related core UI surfaces and preserves their existing behavior. > - The benefit is a more consistent interface with clearer navigation and balanced task-chat layout. ## Linked Issues or Issue Description **What existing behavior does this improve?** This improves the core sidebar, Settings navigation, Connectors catalog, task-chat layout, and account controls. **Subsystem affected** `ui/` — React and Vite board UI. **Current behavior** The task chat had uneven edge treatment. Settings used a separate contextual-navigation style. Apps used inconsistent product labels. The account footer did not expose a direct feedback control. **Proposed behavior** The task chat keeps balanced content padding while its scrollbar sits at the properties boundary. Settings replaces the primary sidebar with a matching navigation surface and a Back to app link. Apps uses Connectors and Browse labels. The account footer provides a dedicated feedback icon with a tooltip. **Reason and benefit** These changes make related navigation and layout patterns predictable. They reduce duplicate labels and improve access to feedback. **Breaking changes** None. Routes, APIs, and stored data do not change. ## What Changed - Balanced the task-chat content gutter and moved its scrollbar to the properties-panel boundary. - Reworked Settings navigation to replace the main sidebar and use the shared primary-sidebar style. - Added a Back to app navigation item to Settings. - Renamed Apps to Connectors in the main navigation and added the `Unplug` icon. - Renamed the Connectors contextual item to Browse. - Added the Connectors top-level header and aligned the search field with the connector cards. - Added account-footer hover states and a direct feedback flag with a Share feedback tooltip. - Removed the duplicate Feedback item from the account popover. - Added regression coverage for each changed UI surface. ## Verification - `pnpm --filter @paperclipai/ui exec vitest run src/components/AppsSidebar.test.tsx src/components/CompanySettingsSidebar.test.tsx src/components/Layout.test.tsx src/components/Sidebar.test.tsx src/components/SidebarAccountMenu.test.tsx src/components/task-chat/TaskMessageScroller.test.tsx src/pages/apps/Browse.test.tsx` — 90 tests passed. - `pnpm --filter @paperclipai/ui typecheck` — passed. - `pnpm --filter @paperclipai/ui build` — passed. - `pnpm check:token-gates` — passed. - `git diff --check origin/master...HEAD` — passed. - `env PAPERCLIP_PLAYWRIGHT_CHANNEL=chrome PAPERCLIP_E2E_PORT=3201 pnpm exec playwright test --config tests/e2e/playwright.config.ts tests/e2e/apps-dark-mode-shots.spec.ts tests/e2e/sidebar-takeover.spec.ts` — 10 tests passed. - The full workspace typecheck and build reached the Rust runner and stopped because `cargo` is not installed on this machine. - The full test suite exposed unrelated server and workspace-runtime failures and was stopped after the affected suites completed. No changed UI test failed. - Manually verified the changed Settings, Connectors, task-chat, and account-menu surfaces in the running app. ## Risks - Low risk. The change affects layout and navigation presentation only. - The Settings sidebar now replaces the main sidebar by design. Users must use Back to app to return to the application navigation. - The task scrollbar offset depends on the existing responsive page gutters. Regression tests cover both narrow and desktop spacing. > For core feature work, check [`ROADMAP.md`](ROADMAP.md) first and discuss it in `#dev` before opening the PR. Feature PRs that overlap with planned core work may need to be redirected — check the roadmap first. See `CONTRIBUTING.md`. ## Model Used - OpenAI Codex, `gpt-5.6-sol`, extended reasoning with tool use and code execution. The host does not expose the context-window size. ## Checklist - [x] I have included a thinking path that traces from project context to this change - [x] I have specified the model used (with version and capability details) - [x] I have checked ROADMAP.md and confirmed this PR does not duplicate planned core work - [x] I have searched GitHub for duplicate or related PRs and linked them above - [x] I have either (a) linked existing issues with `Fixes: #` / `Closes #` / `Refs #` OR (b) described the issue in-PR following the relevant issue template - [x] I have not referenced internal/instance-local Paperclip issues or links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip` URLs) - [x] My branch name describes the change (e.g. `docs/...`, `fix/...`) and contains no internal Paperclip ticket id or instance-derived details - [ ] I have run tests locally and they pass - [x] I have added or updated tests where applicable - [x] I have updated relevant documentation to reflect my changes - [x] I have considered and documented any risks above - [x] All Paperclip CI gates are green - [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups - [x] I will address all Greptile and reviewer comments before requesting merge --------- Co-authored-by: Scott Tong Co-authored-by: Paperclip --- tests/e2e/apps-dark-mode-shots.spec.ts | 8 +- tests/e2e/sidebar-takeover.spec.ts | 18 +- ui/src/components/AppsSidebar.production.tsx | 10 +- ui/src/components/AppsSidebar.test.tsx | 43 ++- ui/src/components/AppsSidebar.tsx | 4 +- .../CompanySettingsSidebar.test.tsx | 35 ++- ui/src/components/CompanySettingsSidebar.tsx | 25 +- ui/src/components/Layout.test.tsx | 24 +- ui/src/components/Layout.tsx | 5 +- ui/src/components/Sidebar.production.tsx | 4 +- ui/src/components/Sidebar.test.tsx | 13 +- ui/src/components/Sidebar.tsx | 13 +- .../SidebarAccountMenu.production.tsx | 38 ++- ui/src/components/SidebarAccountMenu.test.tsx | 143 +++++++--- ui/src/components/SidebarAccountMenu.tsx | 270 +++++++++--------- ui/src/components/primary-sidebar-styles.ts | 9 + .../task-chat/TaskMessageScroller.test.tsx | 10 +- .../task-chat/TaskMessageScroller.tsx | 15 +- ui/src/pages/apps/Browse.test.tsx | 6 +- ui/src/pages/apps/Browse.tsx | 8 +- 20 files changed, 452 insertions(+), 249 deletions(-) create mode 100644 ui/src/components/primary-sidebar-styles.ts diff --git a/tests/e2e/apps-dark-mode-shots.spec.ts b/tests/e2e/apps-dark-mode-shots.spec.ts index bbc1de02f7..4090a0a2a7 100644 --- a/tests/e2e/apps-dark-mode-shots.spec.ts +++ b/tests/e2e/apps-dark-mode-shots.spec.ts @@ -115,12 +115,12 @@ test.describe.serial("dark-mode Apps surfaces", () => { await healthy?.close(); }); - test("sidebar says Apps and links to /apps", async ({ page }) => { + test("sidebar says Connectors and links to /apps", async ({ page }) => { await forceDark(page); await page.goto(`/${seed.prefix}/dashboard`); - const appsLink = page.getByRole("link", { name: "Apps", exact: true }); - await expect(appsLink).toBeVisible({ timeout: 30_000 }); - await expect(appsLink).toHaveAttribute("href", new RegExp(`/${seed.prefix}/apps$`)); + const connectorsLink = page.getByRole("link", { name: "Connectors", exact: true }); + await expect(connectorsLink).toBeVisible({ timeout: 30_000 }); + await expect(connectorsLink).toHaveAttribute("href", new RegExp(`/${seed.prefix}/apps$`)); }); test("apps list dark mode with attention banner", async ({ page }) => { diff --git a/tests/e2e/sidebar-takeover.spec.ts b/tests/e2e/sidebar-takeover.spec.ts index af55e6fff8..e979aaa1a4 100644 --- a/tests/e2e/sidebar-takeover.spec.ts +++ b/tests/e2e/sidebar-takeover.spec.ts @@ -3,9 +3,9 @@ import { test, expect, request as pwRequest, type APIRequestContext } from "@pla /** * E2E: contextual sidebar companion model. * - * Contextual routes render their navigation beside the stable global sidebar. - * The global company navigation and account menu remain available, and leaving - * the surface restores the user's global sidebar preference. + * Most contextual routes render their navigation beside the stable global + * sidebar. Settings intentionally takes over that sidebar while preserving the + * account menu, and its Back to app link restores the global navigation. * * Plugin route sidebars share the same Layout path. A live plugin-route test * requires a plugin fixture, so that branch remains covered by Layout tests. @@ -60,7 +60,7 @@ test.describe("Contextual sidebar companion", () => { }, COLLAPSED_STORAGE_KEY); }); - test("shows Settings beside the global navigation", async ({ page }) => { + test("replaces global navigation with Settings navigation", async ({ page }) => { await page.goto(`/${prefix}/company/settings`); const contextual = page.locator('[data-contextual-sidebar="settings"]'); @@ -70,10 +70,10 @@ test.describe("Contextual sidebar companion", () => { await expect(contextual.getByRole("link", { name: "General" })).toBeVisible(); await expect(contextual.getByText("Environments", { exact: true })).toBeVisible(); - await expect(page.getByRole("button", { name: "Back from Settings" })).toBeVisible(); + await expect(contextual.getByRole("link", { name: "Back to app" })).toBeVisible(); await expect(page.getByRole("button", { name: "Open account menu" })).toBeVisible(); - await expect(page.getByRole("link", { name: "Dashboard" })).toBeVisible(); + await expect(page.getByRole("link", { name: "Dashboard" })).toHaveCount(0); await expect(page.getByLabel(APP_SIDEBAR_EXPANDED_MARKER)).toHaveCount(0); }); @@ -91,7 +91,7 @@ test.describe("Contextual sidebar companion", () => { test("keeps the retired collapse control absent across contextual navigation", async ({ page }) => { await page.goto(`/${prefix}/company/settings`); await expect(page.locator('[data-contextual-sidebar="settings"]')).toBeVisible(); - await expect(page.getByRole("link", { name: "Dashboard" })).toBeVisible(); + await expect(page.getByRole("link", { name: "Back to app" })).toBeVisible(); await expect(page.getByLabel(APP_SIDEBAR_EXPANDED_MARKER)).toHaveCount(0); await page.goto(`/${prefix}/dashboard`); @@ -101,9 +101,9 @@ test.describe("Contextual sidebar companion", () => { await expect(page.getByLabel(APP_SIDEBAR_EXPANDED_MARKER)).toHaveCount(0); }); - test("uses Dashboard as the safe fallback for a direct Settings link", async ({ page }) => { + test("uses Dashboard as the destination for a direct Settings link", async ({ page }) => { await page.goto(`/${prefix}/company/settings`); - await page.getByRole("button", { name: "Back from Settings" }).click(); + await page.getByRole("link", { name: "Back to app" }).click(); await expect(page).toHaveURL(new RegExp(`/${prefix}/dashboard$`)); await expect(page.locator("[data-contextual-sidebar]")).toHaveCount(0); diff --git a/ui/src/components/AppsSidebar.production.tsx b/ui/src/components/AppsSidebar.production.tsx index d3f09d355d..a04d31f3b6 100644 --- a/ui/src/components/AppsSidebar.production.tsx +++ b/ui/src/components/AppsSidebar.production.tsx @@ -8,10 +8,10 @@ import { useReviewCount } from "@/pages/apps/useReviewCount"; import { SidebarNavItem } from "./SidebarNavItem.production"; /** - * Secondary sidebar for the prosumer Apps area (PAP-10856; three-door IA + * Secondary sidebar for the prosumer Connectors area (PAP-10856; three-door IA * PAP-13254 / U3). * - * ← Back · APPS: Browse / Review (n) + * ← Back · CONNECTORS: Browse / Review (n) * DEVELOPER: Connections / Gateways / Profiles / Rules / Health / Activity * * "Browse" is the store and "Review" holds decisions waiting on the user's @@ -19,7 +19,7 @@ import { SidebarNavItem } from "./SidebarNavItem.production"; * "Needs attention" is no longer a door: health/error triage folds into * Connections as a status filter + banner, so approvals are never buried * behind an error label. The Developer section was folded in from the retired - * ToolsSidebar (PAP-10915) so the whole Apps area shares one sidebar; a + * ToolsSidebar (PAP-10915) so the whole Connectors area shares one sidebar; a * one-line caption frames who it's for (Finding A). "Run your own" and "Paste a * config" moved out of the sidebar into rows on the Connect-an-app page * (PAP-10922). @@ -49,13 +49,13 @@ export function AppsSidebar() {
- Apps + Connectors