From 6d0183e60c957357194313c0b6b3f03c9b8091cb Mon Sep 17 00:00:00 2001 From: Ehab Younes Date: Fri, 27 Mar 2026 19:33:10 +0300 Subject: [PATCH] docs: rename CLAUDE.md to AGENTS.md and update README Rename CLAUDE.md to AGENTS.md (the cross-tool standard for AI coding agents). Restructure guidelines with clearer sections for relationship, foundational rules, and commands table. Add rules for `as unknown as` and unnecessary changes. Update README with current feature list, update CONTRIBUTING with current sidebar panels, and bump dev dependencies. --- .vscodeignore | 2 +- AGENTS.md | 123 +++++++++++++ CLAUDE.md | 88 ---------- CONTRIBUTING.md | 14 +- README.md | 52 +++--- package.json | 4 +- pnpm-lock.yaml | 354 +++++++++++++++++++------------------- pnpm-workspace.yaml | 2 +- test/mocks/testHelpers.ts | 1 + 9 files changed, 347 insertions(+), 293 deletions(-) create mode 100644 AGENTS.md delete mode 100644 CLAUDE.md diff --git a/.vscodeignore b/.vscodeignore index 2db69c15..65811dca 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -45,5 +45,5 @@ node_modules/** # Documentation and media usage.md -CLAUDE.md +AGENTS.md *.gif diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..22cffe04 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,123 @@ +# Coder Extension Development Guidelines + +You are an experienced, pragmatic software engineer. Simple solutions +over clever ones. Readability is a primary concern. + +## Our Relationship + +We're colleagues - push back on bad ideas and speak up when something +doesn't make sense. Honesty over agreeableness. + +- Disagree when I'm wrong - act as a critical peer reviewer +- Call out bad ideas, unreasonable expectations, and mistakes +- Ask for clarification rather than making assumptions +- Discuss architectural decisions before implementation; + routine fixes don't need discussion + +## Foundational Rules + +- Doing it right is better than doing it fast +- YAGNI - don't add features we don't need right now +- Make the smallest reasonable changes to achieve the goal +- Reduce code duplication, even if it takes extra effort +- Match the style of surrounding code - consistency within a file matters +- Fix bugs immediately when you find them + +## Essential Commands + +| Task | Command | +| ------------------------- | --------------------------------------------------- | +| **Build** | `pnpm build` | +| **Watch mode** | `pnpm watch` | +| **Package** | `pnpm package` | +| **Type check** | `pnpm typecheck` | +| **Format** | `pnpm format` | +| **Format check** | `pnpm format:check` | +| **Lint** | `pnpm lint` | +| **Lint with auto-fix** | `pnpm lint:fix` | +| **All unit tests** | `pnpm test` | +| **Extension tests** | `pnpm test:extension` | +| **Webview tests** | `pnpm test:webview` | +| **Integration tests** | `pnpm test:integration` | +| **Single extension test** | `pnpm test:extension ./test/unit/filename.test.ts` | +| **Single webview test** | `pnpm test:webview ./test/webview/filename.test.ts` | + +## Testing + +- Test observable behavior and outputs, not implementation details +- Descriptive names, minimal setup, no shared mutable state +- Never mock in end-to-end tests; minimize mocking in unit tests +- Find root causes, not symptoms - read error messages carefully +- When mocking constructors (classes) with + `vi.mocked(...).mockImplementation()`, use regular functions, not arrow + functions. Arrow functions can't be called with `new`. + +```typescript +// Wrong +vi.mocked(SomeClass).mockImplementation(() => mock); +// Correct +vi.mocked(SomeClass).mockImplementation(function () { + return mock; +}); +``` + +### Test File Organization + +```text +test/ +├── unit/ # Extension unit tests (mirrors src/ structure) +├── webview/ # Webview unit tests (by package name) +├── integration/ # VS Code integration tests (uses Mocha, not Vitest) +├── utils/ # Test utilities that are also tested +└── mocks/ # Shared test mocks +``` + +## Code Style + +- TypeScript with strict typing +- Use Prettier for code formatting and ESLint for code linting +- Use ES6 features (arrow functions, destructuring, etc.) +- Use `const` by default; `let` only when necessary +- Never use `any` - use exact types when possible +- Avoid `as unknown as` - fix the types instead +- Prefix unused variables with underscore (e.g., `_unused`) +- Error handling: wrap and type errors appropriately +- Use async/await for promises, avoid explicit Promise construction where + possible +- Unit test files must be named `*.test.ts` and use Vitest +- Extension tests go in `./test/unit/` +- Webview tests go in `./test/webview//` +- Never disable ESLint rules without user approval + +### Naming and Comments + +Names should describe what code does, not how it's implemented. + +Comments explain what code does or why it exists: + +- Never add comments about what used to be there or how things changed +- Never use temporal terms like "new", "improved", "refactored", "legacy" +- Code should be evergreen - describe it as it is +- Do not add comments when you can instead use proper variable/function + naming + +### Avoid Unnecessary Changes + +When fixing a bug or adding a feature, don't modify code unrelated to your +task. Unnecessary changes make PRs harder to review and can introduce +regressions. + +Don't reword existing comments or code unless the change is directly +motivated by your task. Don't delete existing comments that explain +non-obvious behavior. + +When adding tests for existing behavior, read existing tests first to +understand what's covered. Add cases for uncovered behavior. Edit existing +tests as needed, but don't change what they verify. + +## Version Control + +- Commit frequently throughout development +- Never skip or disable pre-commit hooks +- Check `git status` before using `git add` +- Don't use `git push --force` unless explicitly requested diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 33b99155..00000000 --- a/CLAUDE.md +++ /dev/null @@ -1,88 +0,0 @@ -# Coder Extension Development Guidelines - -## Working Style - -You're an experienced, pragmatic engineer. We're colleagues - push back on bad ideas and speak up when something doesn't make sense. Honesty over agreeableness. - -- Simple solutions over clever ones. Readability is a primary concern. -- YAGNI - don't add features we don't need right now -- Make the smallest reasonable changes to achieve the goal -- Reduce code duplication, even if it takes extra effort -- Match the style of surrounding code - consistency within a file matters -- Fix bugs immediately when you find them - -## Naming and Comments - -Names should describe what code does, not how it's implemented. - -Comments explain what code does or why it exists: - -- Never add comments about what used to be there or how things changed -- Never use temporal terms like "new", "improved", "refactored", "legacy" -- Code should be evergreen - describe it as it is -- Do not add comments when you can instead use proper variable/function naming - -## Testing and Debugging - -- Tests must comprehensively cover functionality -- Never mock behavior in end-to-end tests - use real data -- Mock as little as possible in unit tests - try to use real data -- Find root causes, not symptoms. Read error messages carefully before attempting fixes. -- When mocking constructors (classes) with `vi.mocked(...).mockImplementation()`, use regular functions, not arrow functions. Arrow functions can't be called with `new`. - ```typescript - // ✗ Wrong - vi.mocked(SomeClass).mockImplementation(() => mock); - // ✓ Correct - vi.mocked(SomeClass).mockImplementation(function () { - return mock; - }); - ``` - -## Version Control - -- Commit frequently throughout development -- Never skip or disable pre-commit hooks -- Check `git status` before using `git add` - -## Build and Test Commands - -- Build: `pnpm build` -- Watch mode: `pnpm watch` -- Package: `pnpm package` -- Type check: `pnpm typecheck` -- Format: `pnpm format` -- Format check: `pnpm format:check` -- Lint: `pnpm lint` -- Lint with auto-fix: `pnpm lint:fix` -- All unit tests: `pnpm test` -- Extension tests: `pnpm test:extension` -- Webview tests: `pnpm test:webview` -- Integration tests: `pnpm test:integration` -- Run specific extension test: `pnpm test:extension ./test/unit/filename.test.ts` -- Run specific webview test: `pnpm test:webview ./test/webview/filename.test.ts` - -## Test File Organization - -```text -test/ -├── unit/ # Extension unit tests (mirrors src/ structure) -├── webview/ # Webview unit tests (by package name) -├── integration/ # VS Code integration tests (uses Mocha, not Vitest) -├── utils/ # Test utilities that are also tested -└── mocks/ # Shared test mocks -``` - -## Code Style - -- TypeScript with strict typing -- Use Prettier for code formatting and ESLint for code linting -- Use ES6 features (arrow functions, destructuring, etc.) -- Use `const` by default; `let` only when necessary -- Never use `any`, and use exact types when you can -- Prefix unused variables with underscore (e.g., `_unused`) -- Error handling: wrap and type errors appropriately -- Use async/await for promises, avoid explicit Promise construction where possible -- Unit test files must be named `*.test.ts` and use Vitest -- Extension tests go in `./test/unit/` -- Webview tests go in `./test/webview//` -- Never disable ESLint rules without user approval diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9c554484..f81a2f06 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -60,11 +60,17 @@ file to display network information. ## Other features -There is a sidebar that shows all the user's workspaces, and all users' -workspaces if the user has the required permissions. +The extension provides several sidebar panels: -There are also notifications for an outdated workspace and for workspaces that -are close to shutting down. +- **My Workspaces / All Workspaces** - tree views showing workspaces with status + indicators, quick actions, and search. +- **Coder Tasks** - a React webview for creating, monitoring, and managing AI + agent tasks with real-time log streaming. +- **Coder Chat** - an embedded chat UI for delegating tasks to AI coding agents + (gated behind the `coder.agentsEnabled` context flag). + +There are also notifications for outdated workspace templates and for workspaces +that are close to shutting down. ## Webviews diff --git a/README.md b/README.md index 05c11d2e..392bf440 100644 --- a/README.md +++ b/README.md @@ -5,22 +5,39 @@ [!["Join us on Discord"](https://badgen.net/discord/online-members/coder)](https://coder.com/chat?utm_source=github.com/coder/vscode-coder&utm_medium=github&utm_campaign=readme.md) -The Coder Remote extension lets you open [Coder](https://github.com/coder/coder) -workspaces with a single click. +The Coder Remote extension connects your editor to +[Coder](https://github.com/coder/coder) workspaces with a single click. -- Open workspaces from the dashboard in a single click. -- Automatically start workspaces when opened. -- No command-line or local dependencies required - just install your editor! -- Works in air-gapped or restricted networks. Just connect to your Coder - deployment! -- Supports multiple editors: VS Code, Cursor, and Windsurf. +![Demo](https://github.com/coder/vscode-coder/raw/main/demo.gif?raw=true) -> [!NOTE] -> The extension builds on VS Code-provided implementations of SSH. Make -> sure you have the correct SSH extension installed for your editor -> (`ms-vscode-remote.remote-ssh` or `codeium.windsurf-remote-openssh` for Windsurf). +## Features + +- **One-click workspace access** - open workspaces from the Coder dashboard or + the editor sidebar. Workspaces start automatically when opened. +- **Multi-editor support** - works with VS Code, Cursor, Windsurf, and other + VS Code forks. +- **Workspace sidebar** - browse, search, and create workspaces. View agent + metadata and app statuses at a glance. +- **Coder Tasks** - create, monitor, and manage AI agent tasks directly from + the sidebar with real-time log streaming. +- **Coder Chat** - delegate development tasks to AI coding agents from the + sidebar. Requires [Coder Agents](https://coder.com/docs/ai-coder/agents) to + be enabled on your deployment. +- **Multi-deployment support** - connect to multiple Coder deployments and + switch between them without losing credentials. +- **Dev container support** - open dev containers running inside workspaces. +- **Secure authentication** - session tokens stored in the OS keyring + (macOS/Windows), with optional OAuth 2.1 support. +- **Air-gapped / restricted networks** - no external dependencies beyond your + Coder deployment. +- **Automatic SSH tuning** - applies recommended SSH settings for reliable + long-lived connections and recovers from sleep/wake. -![Demo](https://github.com/coder/vscode-coder/raw/main/demo.gif?raw=true) +> [!NOTE] +> The extension builds on VS Code-provided implementations of SSH. Make sure you +> have the correct SSH extension installed for your editor +> (`ms-vscode-remote.remote-ssh`, `anysphere.remote-ssh` for Cursor, or +> `codeium.windsurf-remote-openssh` for Windsurf). ## Getting Started @@ -34,11 +51,6 @@ ext install coder.coder-remote Alternatively, manually install the VSIX from the [latest release](https://github.com/coder/vscode-coder/releases/latest). -### Variables Reference - -Coder uses `${userHome}` from VS Code's +All extension settings are under the `coder.*` namespace in the Settings UI. +Paths in settings accept `~` and `${userHome}` from VS Code's [variables reference](https://code.visualstudio.com/docs/editor/variables-reference). -Use this when formatting paths in the Coder extension settings rather than `~` -or `$HOME`. - -Example: ${userHome}/foo/bar.baz diff --git a/package.json b/package.json index c8ae475f..ec436030 100644 --- a/package.json +++ b/package.json @@ -562,7 +562,7 @@ "@typescript-eslint/eslint-plugin": "^8.57.2", "@typescript-eslint/parser": "^8.57.2", "@vitejs/plugin-react": "catalog:", - "@vitest/coverage-v8": "^4.1.1", + "@vitest/coverage-v8": "^4.1.2", "@vscode/test-cli": "^0.0.12", "@vscode/test-electron": "^2.5.2", "@vscode/vsce": "^3.7.1", @@ -589,7 +589,7 @@ "typescript-eslint": "^8.57.2", "utf-8-validate": "^6.0.6", "vite": "catalog:", - "vitest": "^4.1.1" + "vitest": "^4.1.2" }, "extensionPack": [ "ms-vscode-remote.remote-ssh" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fbfa5aec..35a11681 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,8 +49,8 @@ catalogs: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^8.0.2 - version: 8.0.2 + specifier: ^8.0.3 + version: 8.0.3 overrides: semver: 7.7.4 @@ -124,7 +124,7 @@ importers: version: 7.5.1 '@rolldown/plugin-babel': specifier: 'catalog:' - version: 0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.11)(vite@8.0.2(@types/node@22.19.15)(esbuild@0.27.4)) + version: 0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.12)(vite@8.0.3(@types/node@22.19.15)(esbuild@0.27.4)) '@tanstack/react-query': specifier: 'catalog:' version: 5.95.2(react@19.2.4) @@ -172,10 +172,10 @@ importers: version: 8.57.2(eslint@10.1.0)(typescript@5.9.3) '@vitejs/plugin-react': specifier: 'catalog:' - version: 6.0.1(@rolldown/plugin-babel@0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.11)(vite@8.0.2(@types/node@22.19.15)(esbuild@0.27.4)))(babel-plugin-react-compiler@1.0.0)(vite@8.0.2(@types/node@22.19.15)(esbuild@0.27.4)) + version: 6.0.1(@rolldown/plugin-babel@0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.12)(vite@8.0.3(@types/node@22.19.15)(esbuild@0.27.4)))(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@types/node@22.19.15)(esbuild@0.27.4)) '@vitest/coverage-v8': - specifier: ^4.1.1 - version: 4.1.1(vitest@4.1.1(@types/node@22.19.15)(jsdom@29.0.1)(vite@8.0.2(@types/node@22.19.15)(esbuild@0.27.4))) + specifier: ^4.1.2 + version: 4.1.2(vitest@4.1.2(@types/node@22.19.15)(jsdom@29.0.1)(vite@8.0.3(@types/node@22.19.15)(esbuild@0.27.4))) '@vscode/test-cli': specifier: ^0.0.12 version: 0.0.12 @@ -193,7 +193,7 @@ importers: version: 4.1.0 coder: specifier: 'catalog:' - version: https://codeload.github.com/coder/coder/tar.gz/c408210661b5295814834e1635b2fa063cb8fa2b + version: https://codeload.github.com/coder/coder/tar.gz/0ec0f8faaf16cef7aa8e1f415d16987b589313c4 concurrently: specifier: ^9.2.1 version: 9.2.1 @@ -253,10 +253,10 @@ importers: version: 6.0.6 vite: specifier: 'catalog:' - version: 8.0.2(@types/node@22.19.15)(esbuild@0.27.4) + version: 8.0.3(@types/node@22.19.15)(esbuild@0.27.4) vitest: - specifier: ^4.1.1 - version: 4.1.1(@types/node@22.19.15)(jsdom@29.0.1)(vite@8.0.2(@types/node@22.19.15)(esbuild@0.27.4)) + specifier: ^4.1.2 + version: 4.1.2(@types/node@22.19.15)(jsdom@29.0.1)(vite@8.0.3(@types/node@22.19.15)(esbuild@0.27.4)) packages/shared: devDependencies: @@ -293,7 +293,7 @@ importers: devDependencies: '@rolldown/plugin-babel': specifier: 'catalog:' - version: 0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.11)(vite@8.0.2(@types/node@24.10.12)(esbuild@0.27.4)) + version: 0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.12)(vite@8.0.3(@types/node@24.10.12)(esbuild@0.27.4)) '@types/react': specifier: 'catalog:' version: 19.2.14 @@ -302,7 +302,7 @@ importers: version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': specifier: 'catalog:' - version: 6.0.1(@rolldown/plugin-babel@0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.11)(vite@8.0.2(@types/node@24.10.12)(esbuild@0.27.4)))(babel-plugin-react-compiler@1.0.0)(vite@8.0.2(@types/node@24.10.12)(esbuild@0.27.4)) + version: 6.0.1(@rolldown/plugin-babel@0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.12)(vite@8.0.3(@types/node@24.10.12)(esbuild@0.27.4)))(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@types/node@24.10.12)(esbuild@0.27.4)) babel-plugin-react-compiler: specifier: 'catalog:' version: 1.0.0 @@ -311,7 +311,7 @@ importers: version: 5.9.3 vite: specifier: 'catalog:' - version: 8.0.2(@types/node@24.10.12)(esbuild@0.27.4) + version: 8.0.3(@types/node@24.10.12)(esbuild@0.27.4) packages/webview-shared: dependencies: @@ -513,8 +513,8 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.1': - resolution: {integrity: sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==} + '@csstools/css-syntax-patches-for-csstree@1.1.2': + resolution: {integrity: sha512-5GkLzz4prTIpoyeUiIu3iV6CSG3Plo7xRVOFPKI7FVEJ3mZ0A8SwK0XU3Gl7xAkiQ+mDyam+NNp875/C5y+jSA==} peerDependencies: css-tree: ^3.2.1 peerDependenciesMeta: @@ -1029,97 +1029,97 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@rolldown/binding-android-arm64@1.0.0-rc.11': - resolution: {integrity: sha512-SJ+/g+xNnOh6NqYxD0V3uVN4W3VfnrGsC9/hoglicgTNfABFG9JjISvkkU0dNY84MNHLWyOgxP9v9Y9pX4S7+A==} + '@rolldown/binding-android-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-rc.11': - resolution: {integrity: sha512-7WQgR8SfOPwmDZGFkThUvsmd/nwAWv91oCO4I5LS7RKrssPZmOt7jONN0cW17ydGC1n/+puol1IpoieKqQidmg==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.11': - resolution: {integrity: sha512-39Ks6UvIHq4rEogIfQBoBRusj0Q0nPVWIvqmwBLaT6aqQGIakHdESBVOPRRLacy4WwUPIx4ZKzfZ9PMW+IeyUQ==} + '@rolldown/binding-darwin-x64@1.0.0-rc.12': + resolution: {integrity: sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-rc.11': - resolution: {integrity: sha512-jfsm0ZHfhiqrvWjJAmzsqiIFPz5e7mAoCOPBNTcNgkiid/LaFKiq92+0ojH+nmJmKYkre4t71BWXUZDNp7vsag==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + resolution: {integrity: sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.11': - resolution: {integrity: sha512-zjQaUtSyq1nVe3nxmlSCuR96T1LPlpvmJ0SZy0WJFEsV4kFbXcq2u68L4E6O0XeFj4aex9bEauqjW8UQBeAvfQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + resolution: {integrity: sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.11': - resolution: {integrity: sha512-WMW1yE6IOnehTcFE9eipFkm3XN63zypWlrJQ2iF7NrQ9b2LDRjumFoOGJE8RJJTJCTBAdmLMnJ8uVitACUUo1Q==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.11': - resolution: {integrity: sha512-jfndI9tsfm4APzjNt6QdBkYwre5lRPUgHeDHoI7ydKUuJvz3lZeCfMsI56BZj+7BYqiKsJm7cfd/6KYV7ubrBg==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.11': - resolution: {integrity: sha512-ZlFgw46NOAGMgcdvdYwAGu2Q+SLFA9LzbJLW+iyMOJyhj5wk6P3KEE9Gct4xWwSzFoPI7JCdYmYMzVtlgQ+zfw==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.11': - resolution: {integrity: sha512-hIOYmuT6ofM4K04XAZd3OzMySEO4K0/nc9+jmNcxNAxRi6c5UWpqfw3KMFV4MVFWL+jQsSh+bGw2VqmaPMTLyw==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.11': - resolution: {integrity: sha512-qXBQQO9OvkjjQPLdUVr7Nr2t3QTZI7s4KZtfw7HzBgjbmAPSFwSv4rmET9lLSgq3rH/ndA3ngv3Qb8l2njoPNA==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.11': - resolution: {integrity: sha512-/tpFfoSTzUkH9LPY+cYbqZBDyyX62w5fICq9qzsHLL8uTI6BHip3Q9Uzft0wylk/i8OOwKik8OxW+QAhDmzwmg==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.11': - resolution: {integrity: sha512-mcp3Rio2w72IvdZG0oQ4bM2c2oumtwHfUfKncUM6zGgz0KgPz4YmDPQfnXEiY5t3+KD/i8HG2rOB/LxdmieK2g==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.11': - resolution: {integrity: sha512-LXk5Hii1Ph9asuGRjBuz8TUxdc1lWzB7nyfdoRgI0WGPZKmCxvlKk8KfYysqtr4MfGElu/f/pEQRh8fcEgkrWw==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': + resolution: {integrity: sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.11': - resolution: {integrity: sha512-dDwf5otnx0XgRY1yqxOC4ITizcdzS/8cQ3goOWv3jFAo4F+xQYni+hnMuO6+LssHHdJW7+OCVL3CoU4ycnh35Q==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.11': - resolution: {integrity: sha512-LN4/skhSggybX71ews7dAj6r2geaMJfm3kMbK2KhFMg9B10AZXnKoLCVVgzhMHL0S+aKtr4p8QbAW8k+w95bAA==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -1141,8 +1141,8 @@ packages: vite: optional: true - '@rolldown/pluginutils@1.0.0-rc.11': - resolution: {integrity: sha512-xQO9vbwBecJRv9EUcQ/y0dzSTJgA7Q6UVN7xp6B81+tBGSLVAK03yJ9NkJaUA7JFD91kbjxRSC/mDnmvXzbHoQ==} + '@rolldown/pluginutils@1.0.0-rc.12': + resolution: {integrity: sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==} '@rolldown/pluginutils@1.0.0-rc.7': resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} @@ -1545,20 +1545,20 @@ packages: babel-plugin-react-compiler: optional: true - '@vitest/coverage-v8@4.1.1': - resolution: {integrity: sha512-nZ4RWwGCoGOQRMmU/Q9wlUY540RVRxJZ9lxFsFfy0QV7Zmo5VVBhB6Sl9Xa0KIp2iIs3zWfPlo9LcY1iqbpzCw==} + '@vitest/coverage-v8@4.1.2': + resolution: {integrity: sha512-sPK//PHO+kAkScb8XITeB1bf7fsk85Km7+rt4eeuRR3VS1/crD47cmV5wicisJmjNdfeokTZwjMk4Mj2d58Mgg==} peerDependencies: - '@vitest/browser': 4.1.1 - vitest: 4.1.1 + '@vitest/browser': 4.1.2 + vitest: 4.1.2 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@4.1.1': - resolution: {integrity: sha512-xAV0fqBTk44Rn6SjJReEQkHP3RrqbJo6JQ4zZ7/uVOiJZRarBtblzrOfFIZeYUrukp2YD6snZG6IBqhOoHTm+A==} + '@vitest/expect@4.1.2': + resolution: {integrity: sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==} - '@vitest/mocker@4.1.1': - resolution: {integrity: sha512-h3BOylsfsCLPeceuCPAAJ+BvNwSENgJa4hXoXu4im0bs9Lyp4URc4JYK4pWLZ4pG/UQn7AT92K6IByi6rE6g3A==} + '@vitest/mocker@4.1.2': + resolution: {integrity: sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1568,20 +1568,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.1': - resolution: {integrity: sha512-GM+TEQN5WhOygr1lp7skeVjdLPqqWMHsfzXrcHAqZJi/lIVh63H0kaRCY8MDhNWikx19zBUK8ceaLB7X5AH9NQ==} + '@vitest/pretty-format@4.1.2': + resolution: {integrity: sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==} - '@vitest/runner@4.1.1': - resolution: {integrity: sha512-f7+FPy75vN91QGWsITueq0gedwUZy1fLtHOCMeQpjs8jTekAHeKP80zfDEnhrleviLHzVSDXIWuCIOFn3D3f8A==} + '@vitest/runner@4.1.2': + resolution: {integrity: sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==} - '@vitest/snapshot@4.1.1': - resolution: {integrity: sha512-kMVSgcegWV2FibXEx9p9WIKgje58lcTbXgnJixfcg15iK8nzCXhmalL0ZLtTWLW9PH1+1NEDShiFFedB3tEgWg==} + '@vitest/snapshot@4.1.2': + resolution: {integrity: sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==} - '@vitest/spy@4.1.1': - resolution: {integrity: sha512-6Ti/KT5OVaiupdIZEuZN7l3CZcR0cxnxt70Z0//3CtwgObwA6jZhmVBA3yrXSVN3gmwjgd7oDNLlsXz526gpRA==} + '@vitest/spy@4.1.2': + resolution: {integrity: sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==} - '@vitest/utils@4.1.1': - resolution: {integrity: sha512-cNxAlaB3sHoCdL6pj6yyUXv9Gry1NHNg0kFTXdvSIZXLHsqKH7chiWOkwJ5s5+d/oMwcoG9T0bKU38JZWKusrQ==} + '@vitest/utils@4.1.2': + resolution: {integrity: sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==} '@vscode-elements/elements@2.4.0': resolution: {integrity: sha512-3VzHabhhT+mdaCTQhR0uxN/BFHcy+QjRVxnqjoG/ERsRxNEYZ+BycMFwmvV1H2gZSW9GBpUS6YpmPfAIhLAmgg==} @@ -1762,8 +1762,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.10: - resolution: {integrity: sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==} + baseline-browser-mapping@2.10.11: + resolution: {integrity: sha512-DAKrHphkJyiGuau/cFieRYhcTFeK/lBuD++C7cZ6KZHbMhBrisoi+EvhQ5RZrIfV5qwsW8kgQ07JIC+MDJRAhg==} engines: {node: '>=6.0.0'} hasBin: true @@ -1798,11 +1798,11 @@ packages: boundary@2.0.0: resolution: {integrity: sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==} - brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + brace-expansion@1.1.13: + resolution: {integrity: sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==} - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@2.0.3: + resolution: {integrity: sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==} brace-expansion@5.0.5: resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} @@ -1928,8 +1928,8 @@ packages: resolution: {integrity: sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==} engines: {node: '>=16'} - coder@https://codeload.github.com/coder/coder/tar.gz/c408210661b5295814834e1635b2fa063cb8fa2b: - resolution: {tarball: https://codeload.github.com/coder/coder/tar.gz/c408210661b5295814834e1635b2fa063cb8fa2b} + coder@https://codeload.github.com/coder/coder/tar.gz/0ec0f8faaf16cef7aa8e1f415d16987b589313c4: + resolution: {tarball: https://codeload.github.com/coder/coder/tar.gz/0ec0f8faaf16cef7aa8e1f415d16987b589313c4} version: 0.0.0 color-convert@2.0.1: @@ -2130,8 +2130,8 @@ packages: resolution: {integrity: sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ==} engines: {ecmascript: '>= es5', node: '>=4'} - electron-to-chromium@1.5.323: - resolution: {integrity: sha512-oQm+FxbazvN2WICCbvJgj3IYPKV8awip57+W5VP+Aatk4kFU4pDYCPHZOX22Z27zpw8uttBehEqgK+VTJAYrVw==} + electron-to-chromium@1.5.328: + resolution: {integrity: sha512-QNQ5l45DzYytThO21403XN3FvK0hOkWDG8viNf6jqS42msJ8I4tGDSpBCgvDRRPnkffafiwAym2X2eHeGD2V0w==} electron@37.7.0: resolution: {integrity: sha512-LBzvfrS0aalynOsnC11AD7zeoU8eOois090mzLpQM3K8yZ2N04i2ZW9qmHOTFLrXlKvrwRc7EbyQf1u8XHMl6Q==} @@ -3600,8 +3600,8 @@ packages: resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} engines: {node: '>=8.0'} - rolldown@1.0.0-rc.11: - resolution: {integrity: sha512-NRjoKMusSjfRbSYiH3VSumlkgFe7kYAa3pzVOsVYVFY3zb5d7nS+a3KGQ7hJKXuYWbzJKPVQ9Wxq2UvyK+ENpw==} + rolldown@1.0.0-rc.12: + resolution: {integrity: sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3987,8 +3987,8 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici@7.24.5: - resolution: {integrity: sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q==} + undici@7.24.6: + resolution: {integrity: sha512-Xi4agocCbRzt0yYMZGMA6ApD7gvtUFaxm4ZmeacWI4cZxaF6C+8I8QfofC20NAePiB/IcvZmzkJ7XPa471AEtA==} engines: {node: '>=20.18.1'} unicorn-magic@0.1.0: @@ -4060,8 +4060,8 @@ packages: resolution: {integrity: sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg==} engines: {node: '>=4'} - vite@8.0.2: - resolution: {integrity: sha512-1gFhNi+bHhRE/qKZOJXACm6tX4bA3Isy9KuKF15AgSRuRazNBOJfdDemPBU16/mpMxApDPrWvZ08DcLPEoRnuA==} + vite@8.0.3: + resolution: {integrity: sha512-B9ifbFudT1TFhfltfaIPgjo9Z3mDynBTJSUYxTjOQruf/zHH+ezCQKcoqO+h7a9Pw9Nm/OtlXAiGT1axBgwqrQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -4103,18 +4103,18 @@ packages: yaml: optional: true - vitest@4.1.1: - resolution: {integrity: sha512-yF+o4POL41rpAzj5KVILUxm1GCjKnELvaqmU9TLLUbMfDzuN0UpUR9uaDs+mCtjPe+uYPksXDRLQGGPvj1cTmA==} + vitest@4.1.2: + resolution: {integrity: sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==} 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.1 - '@vitest/browser-preview': 4.1.1 - '@vitest/browser-webdriverio': 4.1.1 - '@vitest/ui': 4.1.1 + '@vitest/browser-playwright': 4.1.2 + '@vitest/browser-preview': 4.1.2 + '@vitest/browser-webdriverio': 4.1.2 + '@vitest/ui': 4.1.2 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4501,7 +4501,7 @@ snapshots: dependencies: '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.1(css-tree@3.2.1)': + '@csstools/css-syntax-patches-for-csstree@1.1.2(css-tree@3.2.1)': optionalDependencies: css-tree: 3.2.1 @@ -5046,72 +5046,72 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@rolldown/binding-android-arm64@1.0.0-rc.11': + '@rolldown/binding-android-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.11': + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.11': + '@rolldown/binding-darwin-x64@1.0.0-rc.12': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.11': + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.11': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.11': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.11': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.11': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.11': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.11': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.11': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.11': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.11': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': dependencies: '@napi-rs/wasm-runtime': 1.1.1 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.11': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.11': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': optional: true - '@rolldown/plugin-babel@0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.11)(vite@8.0.2(@types/node@22.19.15)(esbuild@0.27.4))': + '@rolldown/plugin-babel@0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.12)(vite@8.0.3(@types/node@22.19.15)(esbuild@0.27.4))': dependencies: '@babel/core': 7.29.0 picomatch: 4.0.4 - rolldown: 1.0.0-rc.11 + rolldown: 1.0.0-rc.12 optionalDependencies: '@babel/runtime': 7.29.2 - vite: 8.0.2(@types/node@22.19.15)(esbuild@0.27.4) + vite: 8.0.3(@types/node@22.19.15)(esbuild@0.27.4) - '@rolldown/plugin-babel@0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.11)(vite@8.0.2(@types/node@24.10.12)(esbuild@0.27.4))': + '@rolldown/plugin-babel@0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.12)(vite@8.0.3(@types/node@24.10.12)(esbuild@0.27.4))': dependencies: '@babel/core': 7.29.0 picomatch: 4.0.4 - rolldown: 1.0.0-rc.11 + rolldown: 1.0.0-rc.12 optionalDependencies: '@babel/runtime': 7.29.2 - vite: 8.0.2(@types/node@24.10.12)(esbuild@0.27.4) + vite: 8.0.3(@types/node@24.10.12)(esbuild@0.27.4) - '@rolldown/pluginutils@1.0.0-rc.11': {} + '@rolldown/pluginutils@1.0.0-rc.12': {} '@rolldown/pluginutils@1.0.0-rc.7': {} @@ -5545,26 +5545,26 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-react@6.0.1(@rolldown/plugin-babel@0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.11)(vite@8.0.2(@types/node@22.19.15)(esbuild@0.27.4)))(babel-plugin-react-compiler@1.0.0)(vite@8.0.2(@types/node@22.19.15)(esbuild@0.27.4))': + '@vitejs/plugin-react@6.0.1(@rolldown/plugin-babel@0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.12)(vite@8.0.3(@types/node@22.19.15)(esbuild@0.27.4)))(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@types/node@22.19.15)(esbuild@0.27.4))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.2(@types/node@22.19.15)(esbuild@0.27.4) + vite: 8.0.3(@types/node@22.19.15)(esbuild@0.27.4) optionalDependencies: - '@rolldown/plugin-babel': 0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.11)(vite@8.0.2(@types/node@22.19.15)(esbuild@0.27.4)) + '@rolldown/plugin-babel': 0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.12)(vite@8.0.3(@types/node@22.19.15)(esbuild@0.27.4)) babel-plugin-react-compiler: 1.0.0 - '@vitejs/plugin-react@6.0.1(@rolldown/plugin-babel@0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.11)(vite@8.0.2(@types/node@24.10.12)(esbuild@0.27.4)))(babel-plugin-react-compiler@1.0.0)(vite@8.0.2(@types/node@24.10.12)(esbuild@0.27.4))': + '@vitejs/plugin-react@6.0.1(@rolldown/plugin-babel@0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.12)(vite@8.0.3(@types/node@24.10.12)(esbuild@0.27.4)))(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@types/node@24.10.12)(esbuild@0.27.4))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.2(@types/node@24.10.12)(esbuild@0.27.4) + vite: 8.0.3(@types/node@24.10.12)(esbuild@0.27.4) optionalDependencies: - '@rolldown/plugin-babel': 0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.11)(vite@8.0.2(@types/node@24.10.12)(esbuild@0.27.4)) + '@rolldown/plugin-babel': 0.2.2(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.12)(vite@8.0.3(@types/node@24.10.12)(esbuild@0.27.4)) babel-plugin-react-compiler: 1.0.0 - '@vitest/coverage-v8@4.1.1(vitest@4.1.1(@types/node@22.19.15)(jsdom@29.0.1)(vite@8.0.2(@types/node@22.19.15)(esbuild@0.27.4)))': + '@vitest/coverage-v8@4.1.2(vitest@4.1.2(@types/node@22.19.15)(jsdom@29.0.1)(vite@8.0.3(@types/node@22.19.15)(esbuild@0.27.4)))': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.1.1 + '@vitest/utils': 4.1.2 ast-v8-to-istanbul: 1.0.0 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 @@ -5573,46 +5573,46 @@ snapshots: obug: 2.1.1 std-env: 4.0.0 tinyrainbow: 3.1.0 - vitest: 4.1.1(@types/node@22.19.15)(jsdom@29.0.1)(vite@8.0.2(@types/node@22.19.15)(esbuild@0.27.4)) + vitest: 4.1.2(@types/node@22.19.15)(jsdom@29.0.1)(vite@8.0.3(@types/node@22.19.15)(esbuild@0.27.4)) - '@vitest/expect@4.1.1': + '@vitest/expect@4.1.2': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.1 - '@vitest/utils': 4.1.1 + '@vitest/spy': 4.1.2 + '@vitest/utils': 4.1.2 chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.1(vite@8.0.2(@types/node@22.19.15)(esbuild@0.27.4))': + '@vitest/mocker@4.1.2(vite@8.0.3(@types/node@22.19.15)(esbuild@0.27.4))': dependencies: - '@vitest/spy': 4.1.1 + '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.2(@types/node@22.19.15)(esbuild@0.27.4) + vite: 8.0.3(@types/node@22.19.15)(esbuild@0.27.4) - '@vitest/pretty-format@4.1.1': + '@vitest/pretty-format@4.1.2': dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.1.1': + '@vitest/runner@4.1.2': dependencies: - '@vitest/utils': 4.1.1 + '@vitest/utils': 4.1.2 pathe: 2.0.3 - '@vitest/snapshot@4.1.1': + '@vitest/snapshot@4.1.2': dependencies: - '@vitest/pretty-format': 4.1.1 - '@vitest/utils': 4.1.1 + '@vitest/pretty-format': 4.1.2 + '@vitest/utils': 4.1.2 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.1': {} + '@vitest/spy@4.1.2': {} - '@vitest/utils@4.1.1': + '@vitest/utils@4.1.2': dependencies: - '@vitest/pretty-format': 4.1.1 + '@vitest/pretty-format': 4.1.2 convert-source-map: 2.0.0 tinyrainbow: 3.1.0 @@ -5832,7 +5832,7 @@ snapshots: base64-js@1.5.1: optional: true - baseline-browser-mapping@2.10.10: {} + baseline-browser-mapping@2.10.11: {} basic-ftp@5.2.0: {} @@ -5862,12 +5862,12 @@ snapshots: boundary@2.0.0: {} - brace-expansion@1.1.12: + brace-expansion@1.1.13: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.2: + brace-expansion@2.0.3: dependencies: balanced-match: 1.0.2 @@ -5883,9 +5883,9 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.10.10 + baseline-browser-mapping: 2.10.11 caniuse-lite: 1.0.30001781 - electron-to-chromium: 1.5.323 + electron-to-chromium: 1.5.328 node-releases: 2.0.36 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -5982,7 +5982,7 @@ snapshots: parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 - undici: 7.24.5 + undici: 7.24.6 whatwg-mimetype: 4.0.0 chokidar@3.6.0: @@ -6022,7 +6022,7 @@ snapshots: cockatiel@3.2.1: {} - coder@https://codeload.github.com/coder/coder/tar.gz/c408210661b5295814834e1635b2fa063cb8fa2b: {} + coder@https://codeload.github.com/coder/coder/tar.gz/0ec0f8faaf16cef7aa8e1f415d16987b589313c4: {} color-convert@2.0.1: dependencies: @@ -6207,7 +6207,7 @@ snapshots: dependencies: version-range: 4.15.0 - electron-to-chromium@1.5.323: {} + electron-to-chromium@1.5.328: {} electron@37.7.0: dependencies: @@ -6966,7 +6966,7 @@ snapshots: '@asamuzakjp/css-color': 5.0.1 '@asamuzakjp/dom-selector': 7.0.4 '@bramus/specificity': 2.4.2 - '@csstools/css-syntax-patches-for-csstree': 1.1.1(css-tree@3.2.1) + '@csstools/css-syntax-patches-for-csstree': 1.1.2(css-tree@3.2.1) '@exodus/bytes': 1.15.0 css-tree: 3.2.1 data-urls: 7.0.0 @@ -6978,7 +6978,7 @@ snapshots: saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.1 - undici: 7.24.5 + undici: 7.24.6 w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.1 whatwg-mimetype: 5.0.0 @@ -7588,11 +7588,11 @@ snapshots: minimatch@3.1.5: dependencies: - brace-expansion: 1.1.12 + brace-expansion: 1.1.13 minimatch@9.0.9: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 2.0.3 minimist@1.2.8: optional: true @@ -8000,26 +8000,26 @@ snapshots: sprintf-js: 1.1.3 optional: true - rolldown@1.0.0-rc.11: + rolldown@1.0.0-rc.12: dependencies: '@oxc-project/types': 0.122.0 - '@rolldown/pluginutils': 1.0.0-rc.11 + '@rolldown/pluginutils': 1.0.0-rc.12 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.11 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.11 - '@rolldown/binding-darwin-x64': 1.0.0-rc.11 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.11 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.11 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.11 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.11 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.11 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.11 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.11 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.11 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.11 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.11 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.11 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.11 + '@rolldown/binding-android-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-x64': 1.0.0-rc.12 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.12 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.12 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 run-applescript@7.1.0: {} @@ -8408,7 +8408,7 @@ snapshots: undici-types@7.16.0: optional: true - undici@7.24.5: {} + undici@7.24.6: {} unicorn-magic@0.1.0: {} @@ -8496,39 +8496,39 @@ snapshots: version-range@4.15.0: {} - vite@8.0.2(@types/node@22.19.15)(esbuild@0.27.4): + vite@8.0.3(@types/node@22.19.15)(esbuild@0.27.4): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.11 + rolldown: 1.0.0-rc.12 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.19.15 esbuild: 0.27.4 fsevents: 2.3.3 - vite@8.0.2(@types/node@24.10.12)(esbuild@0.27.4): + vite@8.0.3(@types/node@24.10.12)(esbuild@0.27.4): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.11 + rolldown: 1.0.0-rc.12 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.12 esbuild: 0.27.4 fsevents: 2.3.3 - vitest@4.1.1(@types/node@22.19.15)(jsdom@29.0.1)(vite@8.0.2(@types/node@22.19.15)(esbuild@0.27.4)): + vitest@4.1.2(@types/node@22.19.15)(jsdom@29.0.1)(vite@8.0.3(@types/node@22.19.15)(esbuild@0.27.4)): dependencies: - '@vitest/expect': 4.1.1 - '@vitest/mocker': 4.1.1(vite@8.0.2(@types/node@22.19.15)(esbuild@0.27.4)) - '@vitest/pretty-format': 4.1.1 - '@vitest/runner': 4.1.1 - '@vitest/snapshot': 4.1.1 - '@vitest/spy': 4.1.1 - '@vitest/utils': 4.1.1 + '@vitest/expect': 4.1.2 + '@vitest/mocker': 4.1.2(vite@8.0.3(@types/node@22.19.15)(esbuild@0.27.4)) + '@vitest/pretty-format': 4.1.2 + '@vitest/runner': 4.1.2 + '@vitest/snapshot': 4.1.2 + '@vitest/spy': 4.1.2 + '@vitest/utils': 4.1.2 es-module-lexer: 2.0.0 expect-type: 1.3.0 magic-string: 0.30.21 @@ -8540,7 +8540,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.2(@types/node@22.19.15)(esbuild@0.27.4) + vite: 8.0.3(@types/node@22.19.15)(esbuild@0.27.4) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.19.15 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 7bd2cc77..2a2f7ea9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -16,7 +16,7 @@ catalog: react: ^19.2.4 react-dom: ^19.2.4 typescript: ^5.9.3 - vite: ^8.0.2 + vite: ^8.0.3 catalogMode: strict diff --git a/test/mocks/testHelpers.ts b/test/mocks/testHelpers.ts index 929e1bc5..d92b96f7 100644 --- a/test/mocks/testHelpers.ts +++ b/test/mocks/testHelpers.ts @@ -627,6 +627,7 @@ export function createMockUser(overrides: Partial = {}): User { avatar_url: "", login_type: "password", theme_preference: "", + has_ai_seat: false, ...overrides, }; }