mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-27 09:42:16 +00:00
99ad1ea83d6366efc1318d1de6ef39ea8ff660ff
129
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
5abb51c263 |
chore: deps update (#11981)
# Which Problems Are Solved After merging #11968 and rechecking the dependabot alerts there are still some issues leftover. # How the Problems Are Solved This pr makes overrides for vulnerable transitive depdencies to force update to safe versions. It also upgrades the next.js version in the docs and I also ran `pnpm update` once more. # Additional Changes Removed the mochaawesome dependency is this is not really needed and seems unmaintained. # Additional Context - Precursor: #11968 |
||
|
|
f803ea8298 |
feat(login): add Portuguese (pt) translations for Login V2 (#11897)
## What does this PR do? Adds complete **Portuguese (pt)** locale translations for the Login V2 interface, making it the 14th supported language. ### Problem The Login V2 component currently supports 13 languages but does not include Portuguese — one of the most spoken languages in the world (~260M native speakers). This was reported in #11782. ### What we found - The Login V2 translations are stored as JSON files under `apps/login/locales/` - Available languages are registered in the `LANGS` array in `apps/login/src/lib/i18n.ts` - Portuguese (`pt.json`) was missing from both the locales directory and the `LANGS` array ### What we did 1. Created `apps/login/locales/pt.json` with complete Portuguese translations for all login screens (loginname, password, register, MFA, passkeys, OTP, sessions, errors, etc.) 2. Added `{ name: "Português", code: "pt" }` to the `LANGS` array in `apps/login/src/lib/i18n.ts` ### Translation methodology - Based on the existing `en.json` and `es.json` as reference - Follows Brazilian Portuguese (pt-BR) conventions, which is understood by all Portuguese-speaking countries - All keys translated — no fallbacks to English needed ### Files changed | File | Change | |------|--------| | `apps/login/locales/pt.json` | **New** — Complete Portuguese translations | | `apps/login/src/lib/i18n.ts` | **Modified** — Added `pt` entry to `LANGS` array | ### Testing We built and deployed this change from source (tag v4.12.1) to a production Zitadel instance: - ✅ Portuguese appears in the language dropdown - ✅ All login screens display correct Portuguese translations - ✅ Language selection persists across pages - ✅ OIDC flow works correctly with Portuguese selected - ✅ No build warnings or errors related to the translation Closes #11782 Co-authored-by: rofilho <[email protected]> |
||
|
|
0945195f68 |
chore: deps update (#11968)
# Which Problems Are Solved This pr updates major and minor dependencies and is the first step on getting our dependabot alerts cut down. # How the Problems Are Solved Depedency updates across the board eg: - Upgrade Angular to v21 - Upgrade next.js to v16.2 - Upgrade tailwind to v4 in the login - Upgrade vitest to v4 in the login This is an uncompleted list refer to the changed files for a full overview of all the updates. # Additional Changes Migrated all control flow in the console to the modern control flow syntax. Fixed the dependsOn setting for the @zitadel/login:test-unit nx target. # Additional Context - Closes https://github.com/zitadel/zitadel/issues/11274 --------- Co-authored-by: Max Peintner <[email protected]> |
||
|
|
891c7473ca |
fix(login): invite flow instead of email verification for users with no primary method, improve sending behaviour (#11837)
Closes #10929 # Which Problems Are Solved When a human user without a primary authentication method enters their email on the login screen, the login historically auto-sent an email code (send=true) and redirected them to the `/verify` flow. If the user was newly created via the API and already received an initial verify-email, navigating to the login page would trigger a new invite code, silently invalidating the code they received in their first email. Additionally instead of resending the same type of email (invitation) a regular email verification mail was sent # How the Problems Are Solved - Resend an invitation email instead of a email verification if a user has no method set (still in invitation state) - Conditional Code Sending: Updated `loginname.ts` to check `humanUser?.email?.isVerified`. We only auto-send a new code (`send=true`) if the user's email is already verified. Unverified users will be redirected with `send=false`, allowing them to safely enter the code they already have. - UI State Fix: Fixed an issue in `verify/page.tsx` where the send URL parameter was being checked directly as a string ("false" is truthy). By using the properly evaluated doSend boolean, the "Code Sent" alert now correctly hides itself when a new code is not explicitly sent. - Translation Updates: Refined the codeSent messaging across all locales to specify "A new code has been sent..." to provide better context to the user when they do explicitly request a resend. |
||
|
|
140f07e60b | feat(login): simplify login client auth and support PKCS#1 keys (#11888) | ||
|
|
ec0bd5790f |
fix(login): respect branding themeMode for theme toggle, fix CSP (#11903)
Closes #11721 # Which Problems Are Solved The login app now correctly handles the themeMode from branding settings: - Hide toggle when themeMode is LIGHT or DARK — the theme is forced, users cannot switch - Show 3-option toggle (light / system / dark) when themeMode is AUTO or UNSPECIFIED # How the Problems Are Solved - Introduced a `BrandingContext` to pass `themeMode` from `ThemeWrapper` down to `ThemeSwitch` # Additional Changes - removed the CSP from next.config.ts to prevent a precedency issue where the CSP was actually not applied |
||
|
|
604d5cb0a9 |
fix(login): prevent duplicate email-code verification issue (#11893)
<!-- Please inform yourself about the contribution guidelines on submitting a PR here: https://github.com/zitadel/zitadel/blob/main/CONTRIBUTING.md#submit-a-pull-request-pr. Take note of how PR/commit titles should be written and replace the template texts in the sections below. Don't remove any of the sections. It is important that the commit history clearly shows what is changed and why. Important: By submitting a contribution you agree to the terms from our Licensing Policy as described here: https://github.com/zitadel/zitadel/blob/main/LICENSING.md#community-contributions. --> # Which Problems Are Solved - With Login V2 and EMAIL_VERIFICATION=true, opening the verify page with send=true can trigger email code generation twice. - The second code invalidates the first one, so users may receive two emails where the first code is always invalid. - This causes failed verification attempts and blocks onboarding for affected users. # How the Problems Are Solved - Removed side-effectful email-code sending from direct server component execution path. - Ensured code sending is executed only once in a safe server-side flow, so React Server Component re-fetches do not generate additional codes. - Kept verify flow behavior intact while preventing duplicate code invalidation. # Additional Changes - Added/updated logic around the verify flow to make repeated render/re-fetch paths idempotent for email-code sending. - Improved reliability of the Login V2 email verification step under App Router navigation behavior. # Additional Context Fixes #11857 - Tested manually with Login V2 and EMAIL_VERIFICATION=true by completing a new user registration flow to /verify?send=true. - Verified that only one verification email is sent and the first received code is valid (no duplicate invalidating code generated). Related bug report with reproduction details: [https://github.com/zitadel/zitadel/issues/11857](vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html) --------- Co-authored-by: Max Peintner <[email protected]> |
||
|
|
9bab764796 |
fix(login): add OIDC/SAML requestId to resend invite / resend email code (#11927)
# Which Problems Are Solved This fixes an issue where resending a code for invite flow did not have the same context it was initially created for # How the Problems Are Solved by passing down thre requestId, the context is preserved though a resend |
||
|
|
ff4aae7b3f |
fix(login): improve error classification (#11926)
Closes #11923 # Which Problems Are Solved Client-side gRPC errors (e.g. NotFound, InvalidArgument, PermissionDenied) were being surfaced as HTTP 500 Internal Server Errors, causing false SRE alerts and poor UI feedback. # How the Problems Are Solved - New transport interceptor (`error-classification.ts`): Automatically enriches every ConnectError with httpStatus and isUserError metadata via a `ClassifiedConnectError` wrapper - Route handler protection (`route.ts`, `flow-initiation.ts`): Catches classified errors from `getAuthRequest` / `getSAMLRequest` and returns correct HTTP status codes instead of 500 - Type safety: Replaced all magic number error.code === 9 checks with typed Code.FailedPrecondition + instanceof ConnectError across `oidc.ts`, `saml.ts`, `password.ts`, `zitadel.ts` - Classification-aware logging (`session.ts`): Client/user errors log at warn level, server errors at error level - Observability (`otel.ts`): Spans now include error.is_user_error and http.status_code attributes for alert filtering # Additional Changes Gitignore `next-env.d.ts`: This file is auto-generated by Next.js on every next dev and next build invocation. The two modes write slightly different import paths (.next/dev/types/ vs .next/types/), which causes git diff --exit-code to fail in CI whenever a developer runs next dev locally before committing. Since Next.js regenerates it automatically, there's no need to track it --------- Co-authored-by: Ramon <[email protected]> Co-authored-by: Copilot <[email protected]> |
||
|
|
a864434b4b |
feat(login): update to nextjs 16, improve caching, change default colors (#11629)
# Which Problems Are Solved Updated the project to use the latest versions of Next.js and React, and implemented a SWR caching strategy for key settings API calls to improve performance. Adjusted configuration to ensure compatibility with Next.js 16. # How the Problems Are Solved - Updated next to 16.1.6, react & react-dom to 19.2.4, and next-intl to 4.8.3. - Implemented `API_CACHE_ENABLED` and `API_CACHE_CONFIG` (replacing deprecated unstable_cacheLife) for: - getBrandingSettings - getSecuritySettings - getPasswordComplexitySettings - getLoginSettings ... - Updated default theme colors from blue to a more neutral black and white # Additional changes - Updated login docker image to node 24 --------- Co-authored-by: Ramon <[email protected]> |
||
|
|
fca2589fc3 |
fix(login): http 2 memory leak's (#11830)
# Which Problems Are Solved All http 2 based connect-es clients caused memory leaks in our testing using the login v2 application as the host. # How the Problems Are Solved Switch to connect-rpc based http 1.1 transport for the login v2 # Additional Changes Improved the otel interceptor implementation and tests. # Additional Context - connect-rpc is only enabled for v2 API's so we have to make sure to not use any v1 apis in the login but this should be the case anyways. - Discussion #10562 --------- Co-authored-by: Max Peintner <[email protected]> |
||
|
|
c1be72765c |
chore(login): remove integration tests (#11608)
# Which Problems Are Solved Removes the Cypress integration tests and associated configuration from the apps/login project to streamline the build process. # How the Problems Are Solved - Removed cypress directory, integration directory, and cypress.config.ts from apps/login. - Updated project.json to remove test-integration targets and dependencies. - Updated package.json to remove the cypress dev dependency and clean script reference. - Updated tsconfig.json to remove the now-redundant integration exclusion. - Ensured acceptance tests are preserved and correctly excluded from build inputs. --------- Co-authored-by: Florian Forster <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: conblem <[email protected]> |
||
|
|
c3a6bdb0bb |
Merge commit from fork
* fix: add `Scopes` to `Request` interface so that scopes can be validated on all requests * feat: assert org from scope exists when authorizing requests * fix: check all scopes * comments * check org on callback creation * fix tests * clarifications * fix scope marshaling * fix: enfore organization for authrequest in initiation * fix: filter sessions on the accounts page by organization scope * add integration tests --------- Co-authored-by: Livio Spring <[email protected]> Co-authored-by: Max Peintner <[email protected]> |
||
|
|
7c0e1750f3 |
feat(login): Support private key file with env (#10575)
# Which Problems Are Solved Instead of encoding the private key as base64 and setting it in the env as SYSTEM_USER_PRIVATE_KEY it is sometimes easier to write it to disk and use a file path. This is for example also possible when setting up system users in zitadel core. # How the Problems Are Solved Added SYSTEM_USER_PRIVATE_KEY_FILE which is preferred over SYSTEM_USER_PRIVATE_KEY and expects a file path to a private key in PEM format (like SYSTEM_USER_PRIVATE_KEY but not base64 encoded). To prevent loading the private key too often it is cached. --------- Co-authored-by: Ramon <[email protected]> |
||
|
|
7cdee1703f | chore: standardised the eslint config structure accross the project (#11814) | ||
|
|
db8f475a02 |
feat(login): add readiness probe endpoint (#11828)
# Which Problems Are Solved The login v2 container has no way to verify upstream Zitadel API connectivity before accepting traffic. The existing `/healthy` endpoint always returns 200 regardless of whether the backend is reachable. This means Kubernetes routes user traffic to pods that cannot actually serve login requests, causing silent failures where the root layout swallows gRPC errors and renders pages with default settings. # How the Problems Are Solved A new `/ui/v2/login/ready` endpoint creates a gRPC client using the same auth and transport path as real requests, calls `SettingsService.getGeneralSettings()`, and returns `200 OK` on success or `503 Service unavailable` on failure. This verifies both network connectivity and authentication credentials to the upstream Zitadel API. Kubernetes supports readiness probes natively, so this endpoint can be configured as a readiness probe to gate traffic until the login container can connect to Zitadel. Docker Compose does not have a readiness probe concept, so the compose healthcheck and `healthcheck.mjs` default remain unchanged and continue using `/healthy`. The Docker HEALTHCHECK in the Dockerfile has been updated to use `/ready` so that the image-level health status reflects actual upstream connectivity. This will also allow us to simplify the Helm chart by dropping the `wait4x` init containers that currently poll the Zitadel API before starting the login pod, since the readiness probe makes them redundant. # Additional Changes The `/ready` endpoint has been added to the OTEL HTTP instrumentation ignore list to avoid noisy probe traces. Unit tests, a wiring spec integration test, and an OTEL span filtering test have been added for the new endpoint. The `# TODO: Check healthy, not ready` comment has been removed from the Dockerfile. The `/healthy` endpoint is kept as-is for liveness probes. # Additional Context The Helm chart changes to use `/ready` for readiness and startup probes and to remove the `wait-for-zitadel` init container will be done in a follow-up PR in the `zitadel-charts` repository. |
||
|
|
057fb8dff2 |
fix(login): prettier setup (#11798)
# Which Problems Are Solved Invalid formatting in the login codebase due to invalid prettier configuration # How the Problems Are Solved Fxed .prettierignore wildcards for login source files # Additional Changes Removed .prettierrc file because there is already a prettier.config.mjs file # Additional Context |
||
|
|
defa7b5d0e |
fix(login): update LDAP flow (#11788)
Closes #11096 # Which Problems Are Solved This pull request resolves a 404 error that occurred at the end of the LDAP login flow. Previously, when a user submitted their LDAP credentials in the apps/login application, the form initiated the session creation process but incorrectly redirected the user to /idp/ldap/success, a route that does not exist. In addition, the redirect failed to preserve necessary IDP context parameters (such as requestId, organization, and linking fingerprint info) that are required to fully complete the authentication intent. # How the Problems Are Solved - Fixed redirect path: Updated `createNewSessionForLDAP` to redirect to `/idp/ldap/process` instead of success, aligning it with the standard IDP intent processing pipeline which dynamically resolves `[provider]/process`. - Preserved context parameters: Extracted `requestId`, `organization`, `postErrorRedirectUrl`, `linkToSessionId`, and `linkFingerprint` from the URL parameters on the LDAP page and passed them through LDAPUsernamePasswordForm down to the server action so the ongoing auth request is successfully tied to the user's intent. |
||
|
|
5b12690757 | fix(login): seperate OpenTelemetry initialization for different runtimes (#11785) | ||
|
|
b33c811a01 |
fix(login): remove loginSettings.allowRegister check for IDPs (#11731)
Closes #11138 # Which Problems Are Solved Previously, the application strictly checked the allowRegister setting—which typically applies to local account creation—before considering if a user without an account should be redirected to an IDP, or whether they could access the register page. This blocked users from registering via identity providers when local registration was disabled but IDPs were configured. # How the Problems Are Solved - Removed the allowRegister dependency when deciding to redirect an unknown user to an IDP. The logic now only checks !allowLocalAuthentication, correctly opening up the IDP registration flow even when local auth/registration is not allowed. - Modified the block condition so the register page is only restricted if allowRegister is false and there are no configured identityProviders available. |
||
|
|
fb27c6d212 |
fix: ui_locales being ignored in v2 login ui (#11617)
# Which Problems Are Solved * v2 login ui was ignoring oicd `ui_locales` making it impossible to sync the login ui locale with the apps ui # How the Problems Are Solved - Read `uiLocales` from `authRequest` - check all listed if valid in ui - take the first valid one - set language cookie (if a valid locale is pressent in uiLocales) # Additional Changes - tests # Additional Context --------- Co-authored-by: Florian Forster <[email protected]> Co-authored-by: Max Peintner <[email protected]> |
||
|
|
80aaf52aae |
test: fix login unit tests (#11761)
# Which Problems Are Solved The login unit tests broke due to a recent merge. # How the Problems Are Solved This PR fixes the broken tests. # Additional Changes None # Additional Context - requires backport to v4.x |
||
|
|
692797eafc | Merge commit from fork | ||
|
|
3f3413a230 | feat(login): added support for otel push-based logs, metrics, and traces (#11429) | ||
|
|
685be24dfe |
fix(login): disable auto-capitalization, auto-correct and spell checking for usernames (#11129)
# Which Problems Are Solved This PR introduces several HTML attributes to the username/ID input field to **prevent unwanted automatic capitalization and correction** on mobile devices (iOS and Android). Specifically, this addresses the common issue where a mobile keyboard defaults to an uppercase letter for the first character, even when the input (like a username or email) should be lowercase. # How the Problems Are Solved The following attributes have been added to the `<input>` field: | Attribute | Value | Purpose | | :--- | :--- | :--- | | `autoCapitalize` | `none` | **Crucial fix:** Prevents the virtual keyboard from capitalizing the first letter. | | `autoCorrect` | `off` | Prevents the operating system from auto-correcting input (e.g., changing "teh" to "the"). | | `spellCheck` | `false` | Disables the red squiggly lines for spell-checking. | # Additional Changes None. Previously: ~Introduces a default `Content-Type` request header in the `.env` file to increase compatibility for developing `zitadel-login` and call a non-local Zitadel API. The `Host` header is also added as a commented-out reference so developers will be reminded to set this one too. This is needed for supporting calls to a Zitadel deployed behind an AWS ALB, for example.~ https://github.com/zitadel/zitadel-charts/pull/460 # Additional Context This attribute was already present: | Attribute | Value | Purpose | | :--- | :--- | :--- | | `autoComplete` | `username` | Provides a semantic hint to password managers to correctly suggest and fill stored usernames. | ## Rationale and References (MDN Web Docs) | Attribute | Why we use it | Reference Link | | :--- | :--- | :--- | | **`autoCapitalize="none"`** | Overrides default OS sentence capitalization behavior. | [MDN: autocapitalize](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/autocapitalize) | | **`autoCorrect="off"`** | Essential for case-sensitive or specific identifiers where correction must be disabled (primarily iOS). | [MDN: autocorrect](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/autocorrect) | | **`spellCheck="false"`** | Usernames are not dictionary words, so spell-checking is distracting/irrelevant. | [MDN: spellcheck](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/spellcheck) | | **`autoComplete="username"`** | Modern standard for indicating a login field, supporting password managers. | [MDN: autocomplete](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/autocomplete) | ## Browser Safety Concern This change is **safe**. These attributes act as "hints" to the browser and OS. If a particular older browser does not support one of the attributes, it will simply ignore it and revert to its default behavior, introducing **no errors** or breaking changes. The combination used is considered best practice for secure and predictable input fields. - Discussion #11124 --------- Co-authored-by: Copilot <[email protected]> Co-authored-by: Ramon <[email protected]> |
||
|
|
3b74b86dc4 |
fix(login): check for primary auth methods on user discovery (#11689)
# Which Problems Are Solved - Currently, if a user has only secondary authentication methods (like TOTP) configured but no primary authentication method (Password, Passkey, or IDP), the login flow fails to handle them correctly, resulting in an unhelpful "user not found" error when they attempt to log in. - These users are not correctly prompted to set up a primary authentication factor, leaving them in a state where they cannot successfully authenticate. # How the Problems Are Solved - Updated `sendLoginname` to evaluate if a user has an active primary authentication method (`AuthenticationMethodType.PASSWORD`, `PASSKEY`, or `IDP`. If they lack a primary method, the flow now correctly redirects them into the verification/invite process rather than falling through the method checks and returning a generic error. - Updated `sendVerification` to replace the empty `authMethodTypes` array check with a specific check for primary authentication methods. Now, after completing email/invite verification, users who do not have a primary authentication method are explicitly redirected to `/authenticator/set` to set one up. |
||
|
|
c8abf6de74 |
feat(login): add optional TLS termination support (#11663)
# Which Problems Are Solved The login container can only serve HTTP. In deployments where a reverse proxy is not used, operators need the login container to terminate TLS itself. Closes #11473 # How the Problems Are Solved The container now supports optional HTTPS via three environment variables that match the pattern already used by the backend server: `ZITADEL_TLS_ENABLED`, `ZITADEL_TLS_CERTPATH`, and `ZITADEL_TLS_KEYPATH`. When `ZITADEL_TLS_ENABLED` is not set or set to `false`, behavior is identical to before. When set to `true`, the server reads the provided certificate and key files and serves HTTPS using the lower-level `getRequestHandlers` API from Next.js. The Docker healthcheck was updated to probe the correct scheme automatically based on the same environment variable. # Additional Changes Added a dockerized integration test that verifies both HTTP and HTTPS modes using testcontainers. # Additional Context The TLS path uses `getRequestHandlers` from `next/dist/server/lib/start-server` instead of `startServer` because the latter rejects self-signed certificates in production mode. This is the same internal API that `startServer` itself calls. --------- Co-authored-by: Copilot <[email protected]> |
||
|
|
bac224c56d |
chore: improve docker compose template, tests and docs (#11593)
Replaces the single-file `docker-compose.yaml` quickstart with a production-aware, Traefik-based compose pack in `deploy/compose/`. The pack covers the full arc from a 2-minute localhost quickstart to a hardened homelab or semi-production deployment. ### What's in the pack **Stack**: Traefik (proxy) → ZITADEL API (Go `:8080`) + ZITADEL Login (Next.js `:3000`) → PostgreSQL All HTTP/gRPC routing is handled by Traefik via Docker labels — no manual proxy config needed. The Login V2 UI is enabled by default. Login URLs are derived automatically from `ZITADEL_DOMAIN`, `ZITADEL_EXTERNALPORT`, and `ZITADEL_PUBLIC_SCHEME` — no separate URL variables needed. **Compose files** | File | Purpose | |------|---------| | `docker-compose.yml` | Base stack — works standalone. Uses explicit `name: zitadel` network for reliable Traefik service discovery. | | `docker-compose.mode-letsencrypt.yml` | TLS overlay: ACME HTTP challenge | | `docker-compose.mode-external-tls.yml` | TLS overlay: upstream LB/CDN terminates TLS. Uses `forwardedHeaders.trustedIPs` (configurable via `TRAEFIK_TRUSTED_IPS`) instead of `insecure=true`. | | `docker-compose.mode-local-tls.yml` | TLS overlay: self-signed certs for LAN | | `docker-compose.prodlike.yml` | Splits init / setup / start for controlled upgrades | | `docker-compose.test.yml` | CI overlay: swaps images to locally-built `:local` tags | **Optional profiles**: `cache` (Redis), `observability` (OpenTelemetry Collector) ### Build infra - New `@zitadel/api:pack` and `@zitadel/login:pack` Nx targets build local Docker images (`zitadel/zitadel:local`, `zitadel/zitadel-login:local`) for use in CI and local testing - `apps/api/Dockerfile` now accepts a `BINARY` build arg so local and release builds share the same image ### Testing - New `@zitadel/compose` Nx project with targets: `test-config` (validates all overlay combinations using `--quiet`), `test-run` (starts full stack with local images), `test-e2e` (Playwright wiring + protocol matrix tests through Traefik), `test-full` (end-to-end: build → start → test → teardown), `stop` - **`@zitadel/compose` is explicitly excluded from `nx affected` in CI for now** — the full stack smoke test requires a Docker daemon and significant resources. The intent is to add a dedicated `compose_smoke_test` CI job in a follow-up. The targets can be run locally with `pnpm nx run @zitadel/compose:test-full`. ### Documentation - **`compose.mdx`**: Complete rewrite with a staged structure (Stage 1 Quickstart → Stage 2 Homelab → Stage 3 Beyond Compose). Documents TLS modes, profiles, secrets hardening, ExternalDomain/Port/Secure invariant, upgrades, and the path to Kubernetes - **New `requirements.mdx`**: Lists supported PostgreSQL versions (14–18), Redis (standalone), Docker Compose v2.x, and reverse proxy h2c requirements - **`reverse_proxy.mdx`**: Added intro covering h2c requirements, TLS modes table, and Login UI routing split - **`troubleshooting.mdx`**: New sections for container restarts on upgrade, FIRSTINSTANCE env vars not taking effect, and diagnosing unhealthy containers - **`caddy/index.mdx`**: Known issue and workaround for the `TE: trailers` header hang - Removed the old `apps/docs/content/self-hosting/deploy/docker-compose.yaml` embedded in the docs ### Breaking change The old `apps/docs/content/self-hosting/deploy/docker-compose.yaml` file is deleted. The getting-started docs page (`/self-hosting/deploy/compose`) now points to the new pack via a `curl | tar` download command. --- ### Checklist - [x] `deploy/compose/` smoke test passes end-to-end locally (`pnpm nx run @zitadel/compose:test-full`) - [x] Docs build passes (`pnpm nx run @zitadel/docs:build`) - [ ] Follow-up issue created to add `compose_smoke_test` CI job --------- Co-authored-by: Mridang Agarwalla <[email protected]> |
||
|
|
54095b64b1 | feat(login): add LOGIN_SERVICE_KEY_FILE authentication support (#11572) | ||
|
|
ab0f045499 |
feat(login): dynamically configure languages based on settings (#11372)
Closes #11199 # Which Problems Are Solved This PR refactors the login app to load allowed languages and the default language directly from the Zitadel API equivalents (`getGeneralSettings`), rather than relying on a hardcoded list. This ensures that the available languages in the UI and the locale selection logic match the instance's configuration. # How the Problems Are Solved - Fetches allowed languages server-side and passes them to the LanguageSwitcher - The NEXT_LOCALE cookie and Accept-Language headers are now strictly validated against the API-provided allowed languages. - Fallback: If a cookie requests an unsupported language, the system now falls back to the API's defaultLanguage (instead of valid but unconfigured defaults). # Additional Changes Helper: Added `getLanguage(code)` to map API language codes to display names (utilizing Intl.DisplayNames if the code isn't in our static mapping). --------- Co-authored-by: Livio Spring <[email protected]> |
||
|
|
d27833e1bc |
feat(login): redirect configuration options in multi-domain setups (#11527)
# Which Problems Are Solved This PR introduces robust redirect configuration options and enhances security for Server Actions in multi-domain setups. # How the Problems Are Solved - Redirect Fallback Logic: Implemented a unified `resolveRedirectUri` utility that prioritizes redirect targets as follows: - Environment override (`DEFAULT_REDIRECT_URI`) - Organization settings (`defaultRedirectUri`). - Relative fallback (`/signedin?...`). - Host Reflection: `DEFAULT_REDIRECT_URI` supports absolute URLs or relative paths via host reflection. - Server Action Security: Configured `serverActions.allowedOrigins` to be dynamically manageable via the `SERVER_ACTION_ALLOWED_ORIGINS` environment variable (comma-separated list). It defaults to an empty list for maximum security. - UI Integration: Updated the /signedin page to use the unified redirect logic, ensuring consistent behavior for the "Continue" button. - Documentation: Added type definitions and detailed descriptions for new environment variables in `next-env-vars.d.ts` --------- Co-authored-by: Copilot <[email protected]> |
||
|
|
df8824e16c |
fix(login): CSP img-src resolved at build time instead of runtime (#11603)
<!-- Please inform yourself about the contribution guidelines on submitting a PR here: https://github.com/zitadel/zitadel/blob/main/CONTRIBUTING.md#submit-a-pull-request-pr. Take note of how PR/commit titles should be written and replace the template texts in the sections below. Don't remove any of the sections. It is important that the commit history clearly shows what is changed and why. Important: By submitting a contribution you agree to the terms from our Licensing Policy as described here: https://github.com/zitadel/zitadel/blob/main/LICENSING.md#community-contributions. --> # Which Problems Are Solved - On self-hosted ZITADEL, the CSP `img-src` directive was baked in at build time from `ZITADEL_API_URL`, blocking branding logos when the runtime domain differs from the build environment - CSP construction was duplicated across three files with no single source of truth # How the Problems Are Solved - Introduced a centralized `buildCSP()` function in `src/lib/csp.ts` that constructs the full CSP string from runtime inputs (`serviceUrl` for img-src, `iframeOrigins` for frame-ancestors) - Middleware and flow-initiation now call `buildCSP()` instead of concatenating strings against a static `DEFAULT_CSP` - `constants/csp.js` is simplified to a static fallback used only by `next.config.mjs` # Additional Changes - Removed no-op `securitySettings.embeddedIframe.allowedOrigins;` statements in flow-initiation - Removed duplicate `X-Frame-Options: SAMEORIGIN` header from `next.config.mjs` (conflicted with `X-Frame-Options: deny`) - Added `X-Frame-Options: deny` explicitly on proxy route responses in middleware (previously relied on next.config.mjs static header surviving the rewrite) # Additional Context - Closes #11088 - Closes #11602 |
||
|
|
e25220bfab |
feat(login): add autoFocus to input components (#11566)
<!-- Please inform yourself about the contribution guidelines on submitting a PR here: https://github.com/zitadel/zitadel/blob/main/CONTRIBUTING.md#submit-a-pull-request-pr. Take note of how PR/commit titles should be written and replace the template texts in the sections below. Don't remove any of the sections. It is important that the commit history clearly shows what is changed and why. Important: By submitting a contribution you agree to the terms from our Licensing Policy as described here: https://github.com/zitadel/zitadel/blob/main/LICENSING.md#community-contributions. --> # Which Problems Are Solved The first input field on login screens is not automatically focused, requiring users to manually click before typing. This creates unnecessary friction during the login flow, particularly for keyboard-oriented users and accessibility scenarios. # How the Problems Are Solved - Added the `autoFocus` prop to the first `TextInput` in all 12 login form components. - For forms with conditionally rendered first inputs (`set-password-form` and `register-form-idp-incomplete`), `autoFocus` is set dynamically so the correct field receives focus depending on which input is visible. # Additional Changes None # Additional Context - Closes #11565 Co-authored-by: Max Peintner <[email protected]> |
||
|
|
9dd2773e80 | chore(build): enhance proto caching and install binary plugins for improved performance, remove reliance on BSR (#11634) | ||
|
|
b23346f6ca |
chore: consistent naming for organization domain (#11356)
# Which Problems Are Solved As part of the consistent naming effort, this PR focuses on "Organization domain". # How the Problems Are Solved - All terms referring referring to Organization Domains where changed to be Organization Domain # Additional Changes None # Additional Context - closes [#11283](https://github.com/zitadel/zitadel/issues/11283) --------- Co-authored-by: Copilot <[email protected]> |
||
|
|
699ed17918 |
chore: rename configuration to settings (#11568)
# Which Problems Are Solved naming inconsistencies: Configuration <-> Settings # How the Problems Are Solved # Additional Changes # Additional Context - Closes #11282 |
||
|
|
64065bbe3c |
feat: add current password field to password reset (#11534)
<!-- Please inform yourself about the contribution guidelines on submitting a PR here: https://github.com/zitadel/zitadel/blob/main/CONTRIBUTING.md#submit-a-pull-request-pr. Take note of how PR/commit titles should be written and replace the template texts in the sections below. Don't remove any of the sections. It is important that the commit history clearly shows what is changed and why. Important: By submitting a contribution you agree to the terms from our Licensing Policy as described here: https://github.com/zitadel/zitadel/blob/main/LICENSING.md#community-contributions. --> # Which Problems Are Solved The password change flow in Login V2 does not ask the user to confirm their current password before setting a new one. # How the Problems Are Solved - Added a "Current Password" field to the change password form - The current password is verified via a session password check before the new password is set - If the current password is incorrect, the user sees a clear error message - Removed the previous 5-minute session freshness check, which is no longer needed since the current password is verified inline # Additional Changes Added translations for the new field labels and error messages across all supported languages # Additional Context - Closes #11533 --------- Co-authored-by: Max Peintner <[email protected]> |
||
|
|
11d48edd84 |
fix(login): update login logic to correctly handle email and phone re… (#11618)
## Problem Enabling `Disable Phone Login` (or `Disable Email Login`) in the login policy caused some users to receive "User not found in the system" even when logging in with a valid, non-phone identifier. Users whose preferred login name looked like an email address (e.g. `[email protected]` in an org-scoped context) were rejected incorrectly. Toggling the setting back off immediately restored login for those users. Fixes #11518 ## Root Cause In `loginname.ts` and `password.ts`, the post-lookup guard that enforces the disable-phone/email restriction used `||` instead of `&&`: ```ts // BEFORE (buggy): rejects if preferredLoginName doesn't match OR email doesn't match // → any user whose preferredLoginName ≠ raw email is rejected if (user.preferredLoginName !== concatLoginname || humanUser?.email?.email !== command.loginName) { return preventUserEnumeration(...); } // AFTER (correct): rejects only if preferredLoginName doesn't match AND email doesn't match // → user passes through if they matched by either their preferred login name or their email if (user.preferredLoginName !== concatLoginname && humanUser?.email?.email !== command.loginName) { return preventUserEnumeration(...); } ``` The intent is to allow the user through if they matched by their preferred login name **or** by the still-permitted identifier. By De Morgan's law, the rejection condition must be `¬A ∧ ¬B`, not `¬A ∨ ¬B`. ## Changes - **`loginname.ts`**: fixed 2 `||` → `&&` in the `disableLoginWithEmail` and `disableLoginWithPhone` guards - **`password.ts`**: fixed 4 `||` → `&&` across the same guards in both `resetPassword` and `sendPassword` - **`loginname.test.ts`**: added two regression tests: - `disableLoginWithPhone=true`, user logs in with their email-format preferred login name → must succeed (was broken) - `disableLoginWithPhone=true`, user logs in with their actual phone number → must be blocked (feature still works) ## Testing All 654 unit tests pass. Co-authored-by: Max Peintner <[email protected]> |
||
|
|
93c6099482 |
chore(deps-dev): bump the dev group across 1 directory with 13 updates (#11548)
Bumps the dev group with 13 updates in the /apps/docs directory: | Package | From | To | | --- | --- | --- | | [@bufbuild/buf](https://github.com/bufbuild/buf) | `1.61.0` | `1.65.0` | | [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.39.2` | `10.0.1` | | [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss) | `4.1.17` | `4.1.18` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `22.19.7` | `25.2.3` | | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.54.0` | `8.55.0` | | [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `8.54.0` | `8.55.0` | | [eslint](https://github.com/eslint/eslint) | `8.57.1` | `10.0.0` | | [glob](https://github.com/isaacs/node-glob) | `11.0.3` | `13.0.2` | | [globals](https://github.com/sindresorhus/globals) | `17.2.0` | `17.3.0` | | [next-validate-link](https://github.com/fuma-nama/next-validate-link) | `1.6.3` | `1.6.4` | | [semver](https://github.com/npm/node-semver) | `7.7.3` | `7.7.4` | | [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `3.4.14` | `4.1.18` | | [yaml-loader](https://github.com/eemeli/yaml-loader) | `0.8.1` | `0.9.0` | Updates `@bufbuild/buf` from 1.61.0 to 1.65.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/bufbuild/buf/releases"><code>@bufbuild/buf</code>'s releases</a>.</em></p> <blockquote> <h2>v1.65.0</h2> <ul> <li>Add <code>buf registry policy {commit,create,delete,info,label,settings}</code> commands to manage BSR policies.</li> <li>Add LSP deprecate code action to add the deprecated option on types and symbols.</li> <li>Fix import LSP document link to not include <code>import</code> keyword.</li> <li>Update <code>PROTOVALIDATE</code> lint rule to support checking unenforceable <code>required</code> rules on <code>repeated.items</code>, <code>map.keys</code> and <code>map.values</code>.</li> <li>Add <code>buf source edit deprecate</code> command to deprecate types by setting the <code>deprecate = true</code> option.</li> </ul> <h2>v1.64.0</h2> <ul> <li>Fix LSP completion for options.</li> <li>Add LSP document highlighting support.</li> <li>Add LSP completion for fully-qualified type references.</li> <li>Improve LSP semantic tokens implementation (for syntax highlighting).</li> <li>Add LSP organize imports code action to add missing imports, remove unused imports, and sort imports alphabetically.</li> <li>Add LSP document link support.</li> <li>Add LSP folding range support.</li> <li>Update <code>PROTOVALIDATE</code> lint rule to support checking <code>cel_expression</code> fields for valid CEL.</li> </ul> <h2>v1.63.0</h2> <ul> <li>Update <code>PROTOVALIDATE</code> lint rule to support field mask rules.</li> <li>Add LSP completion for field numbers.</li> </ul> <h2>v1.62.1</h2> <ul> <li>Fix default behavior for <code>swift_prefix</code> to remain unset when no override is provided in managed mode.</li> </ul> <h2>v1.62.0</h2> <ul> <li>Add <code>swift_prefix</code> to managed mode.</li> <li>Add <code>textDocument/rename</code> and <code>textDocument/prepareRename</code> support for <code>buf lsp serve</code>.</li> <li>Fix panic in LSP for empty option paths.</li> <li>Fix support for multi-arch image manifests for <code>buf beta registry plugin push</code>.</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/bufbuild/buf/blob/main/CHANGELOG.md"><code>@bufbuild/buf</code>'s changelog</a>.</em></p> <blockquote> <h2>[v1.65.0] - 2026-02-03</h2> <ul> <li>Add <code>buf registry policy {commit,create,delete,info,label,settings}</code> commands to manage BSR policies.</li> <li>Add LSP deprecate code action to add the deprecated option on types and symbols.</li> <li>Fix import LSP document link to not include <code>import</code> keyword.</li> <li>Update <code>PROTOVALIDATE</code> lint rule to support checking unenforceable <code>required</code> rules on <code>repeated.items</code>, <code>map.keys</code> and <code>map.values</code>.</li> <li>Add <code>buf source edit deprecate</code> command to deprecate types by setting the <code>deprecate = true</code> option.</li> </ul> <h2>[v1.64.0] - 2026-01-19</h2> <ul> <li>Fix LSP completion for options.</li> <li>Add LSP document highlighting support.</li> <li>Add LSP completion for fully-qualified type references.</li> <li>Improve LSP semantic tokens implementation (for syntax highlighting).</li> <li>Add LSP organize imports code action to add missing imports, remove unused imports, and sort imports alphabetically.</li> <li>Add LSP document link support.</li> <li>Add LSP folding range support.</li> <li>Update <code>PROTOVALIDATE</code> lint rule to support checking <code>cel_expression</code> fields for valid CEL.</li> </ul> <h2>[v1.63.0] - 2026-01-06</h2> <ul> <li>Update <code>PROTOVALIDATE</code> lint rule to support field mask rules.</li> <li>Add LSP completion for field numbers.</li> </ul> <h2>[v1.62.1] - 2025-12-29</h2> <ul> <li>Fix default behavior for <code>swift_prefix</code> to remain unset when no override is provided in managed mode.</li> </ul> <h2>[v1.62.0] - 2025-12-29</h2> <ul> <li>Add <code>swift_prefix</code> to managed mode.</li> <li>Add <code>textDocument/rename</code> and <code>textDocument/prepareRename</code> support for <code>buf lsp serve</code>.</li> <li>Fix panic in LSP for empty option paths.</li> <li>Fix support for multi-arch image manifests for <code>buf beta registry plugin push</code>.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/bufbuild/buf/commit/5155f6174d9a74aa2668b0ba0ac26a84ed15ba7e"><code>5155f61</code></a> Release v1.65.0 (<a href="https://redirect.github.com/bufbuild/buf/issues/4316">#4316</a>)</li> <li><a href="https://github.com/bufbuild/buf/commit/772be42e9f75a76af4a9b265590fddc6f61cac96"><code>772be42</code></a> Update alpine image (<a href="https://redirect.github.com/bufbuild/buf/issues/4315">#4315</a>)</li> <li><a href="https://github.com/bufbuild/buf/commit/84520721570c729ace25fa5d69061ac7fcf478e3"><code>8452072</code></a> Add buf source edit deprecate command (<a href="https://redirect.github.com/bufbuild/buf/issues/4306">#4306</a>)</li> <li><a href="https://github.com/bufbuild/buf/commit/1596cdd76486c928ed4f985e30d7b766a4c6815c"><code>1596cdd</code></a> Add tags to LSP diagnostics (<a href="https://redirect.github.com/bufbuild/buf/issues/4311">#4311</a>)</li> <li><a href="https://github.com/bufbuild/buf/commit/7b0cdfd737db299bffbe1f79e61fa8cadb6382ba"><code>7b0cdfd</code></a> Make upgrade (<a href="https://redirect.github.com/bufbuild/buf/issues/4314">#4314</a>)</li> <li><a href="https://github.com/bufbuild/buf/commit/16e09a1373cc1b7cb4a641fe41c5509d0c40732c"><code>16e09a1</code></a> Fix edge case in LSP symbol doc hover (<a href="https://redirect.github.com/bufbuild/buf/issues/4310">#4310</a>)</li> <li><a href="https://github.com/bufbuild/buf/commit/08df2b35ef620d7ec4b09afb6e6c01ed56224b18"><code>08df2b3</code></a> Update <code>PROTOVALIDATE</code> lint rule to check unenforceable required rules (<a href="https://redirect.github.com/bufbuild/buf/issues/4309">#4309</a>)</li> <li><a href="https://github.com/bufbuild/buf/commit/4899175426b22dc3344452ca9e5e407d2a94e262"><code>4899175</code></a> Fix import LSP document link to not include <code>import</code> keyword (<a href="https://redirect.github.com/bufbuild/buf/issues/4308">#4308</a>)</li> <li><a href="https://github.com/bufbuild/buf/commit/15d712bc3de6ee522fa95a371b4db9d8f2ac6f2a"><code>15d712b</code></a> Add LSP code action for deprecating symbols (<a href="https://redirect.github.com/bufbuild/buf/issues/4299">#4299</a>)</li> <li><a href="https://github.com/bufbuild/buf/commit/2bdc2170adbc5fb9e24e4d36b85e8a2474aa6775"><code>2bdc217</code></a> Separate deprecated types in protostat (<a href="https://redirect.github.com/bufbuild/buf/issues/4307">#4307</a>)</li> <li>Additional commits viewable in <a href="https://github.com/bufbuild/buf/compare/v1.61.0...v1.65.0">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by [GitHub Actions](<a href="https://www.npmjs.com/~GitHub">https://www.npmjs.com/~GitHub</a> Actions), a new releaser for <code>@bufbuild/buf</code> since your current version.</p> </details> <br /> Updates `@eslint/js` from 9.39.2 to 10.0.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/eslint/eslint/releases"><code>@eslint/js</code>'s releases</a>.</em></p> <blockquote> <h2>v10.0.0</h2> <h2>Breaking Changes</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/f9e54f43a5e497cdfa179338b431093245cb787b"><code>f9e54f4</code></a> feat!: estimate rule-tester failure location (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20420">#20420</a>) (ST-DDT)</li> <li><a href="https://github.com/eslint/eslint/commit/a176319d8ade1a7d9b2d7fb8f038f55a2662325f"><code>a176319</code></a> feat!: replace <code>chalk</code> with <code>styleText</code> and add <code>color</code> to <code>ResultsMeta</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20227">#20227</a>) (루밀LuMir)</li> <li><a href="https://github.com/eslint/eslint/commit/c7046e6c1e03c4ca0eee4888a1f2eba4c6454f84"><code>c7046e6</code></a> feat!: enable JSX reference tracking (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20152">#20152</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/fa31a608901684fbcd9906d1907e66561d16e5aa"><code>fa31a60</code></a> feat!: add <code>name</code> to configs (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20015">#20015</a>) (Kirk Waiblinger)</li> <li><a href="https://github.com/eslint/eslint/commit/3383e7ec9028166cafc8ea7986c2f7498d0049f0"><code>3383e7e</code></a> fix!: remove deprecated <code>SourceCode</code> methods (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20137">#20137</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/501abd0e916a35554c58b7c0365537f1fa3880ce"><code>501abd0</code></a> feat!: update dependency minimatch to v10 (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20246">#20246</a>) (renovate[bot])</li> <li><a href="https://github.com/eslint/eslint/commit/ca4d3b40085de47561f89656a2207d09946ed45e"><code>ca4d3b4</code></a> fix!: stricter rule tester assertions for valid test cases (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20125">#20125</a>) (唯然)</li> <li><a href="https://github.com/eslint/eslint/commit/96512a66c86402fb0538cdcb6cd30b9073f6bf3b"><code>96512a6</code></a> fix!: Remove deprecated rule context methods (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20086">#20086</a>) (Nicholas C. Zakas)</li> <li><a href="https://github.com/eslint/eslint/commit/c69fdacdb2e886b9d965568a397aa8220db3fe90"><code>c69fdac</code></a> feat!: remove eslintrc support (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20037">#20037</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/208b5cc34a8374ff81412b5bec2e0800eebfbd04"><code>208b5cc</code></a> feat!: Use <code>ScopeManager#addGlobals()</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20132">#20132</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/a2ee188ea7a38a0c6155f3d39e2b00e1d0f36e14"><code>a2ee188</code></a> fix!: add <code>uniqueItems: true</code> in <code>no-invalid-regexp</code> option (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20155">#20155</a>) (Tanuj Kanti)</li> <li><a href="https://github.com/eslint/eslint/commit/a89059dbf2832d417dd493ee81483227ec44e4ab"><code>a89059d</code></a> feat!: Program range span entire source text (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20133">#20133</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/39a6424373d915fa9de0d7b0caba9a4dc3da9b53"><code>39a6424</code></a> fix!: assert 'text' is a string across all RuleFixer methods (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20082">#20082</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/f28fbf846244e043c92b355b224d121b06140b44"><code>f28fbf8</code></a> fix!: Deprecate <code>"always"</code> and <code>"as-needed"</code> options of the <code>radix</code> rule (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20223">#20223</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/aa3fb2b233e929b37220be940575f42c280e0b98"><code>aa3fb2b</code></a> fix!: tighten <code>func-names</code> schema (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20119">#20119</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/f6c0ed0311dcfee853367d5068c765d066e6b756"><code>f6c0ed0</code></a> feat!: report <code>eslint-env</code> comments as errors (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20128">#20128</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/4bf739fb533e59f7f0a66b65f7bc80be0f37d8db"><code>4bf739f</code></a> fix!: remove deprecated <code>LintMessage#nodeType</code> and <code>TestCaseError#type</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20096">#20096</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/523c076866400670fb2192a3f55dbf7ad3469247"><code>523c076</code></a> feat!: drop support for jiti < 2.2.0 (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20016">#20016</a>) (michael faith)</li> <li><a href="https://github.com/eslint/eslint/commit/454a292c95f34dad232411ddac06408e6383bb64"><code>454a292</code></a> feat!: update <code>eslint:recommended</code> configuration (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20210">#20210</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/4f880ee02992e1bf0e96ebaba679985e2d1295f1"><code>4f880ee</code></a> feat!: remove <code>v10_*</code> and inactive <code>unstable_*</code> flags (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20225">#20225</a>) (sethamus)</li> <li><a href="https://github.com/eslint/eslint/commit/f18115c363a4ac7671a4c7f30ee13d57ebba330f"><code>f18115c</code></a> feat!: <code>no-shadow-restricted-names</code> report <code>globalThis</code> by default (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20027">#20027</a>) (sethamus)</li> <li><a href="https://github.com/eslint/eslint/commit/c6358c31fbd3937b92d89be2618ffdf5a774604e"><code>c6358c3</code></a> feat!: Require Node.js <code>^20.19.0 || ^22.13.0 || >=24</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20160">#20160</a>) (Milos Djermanovic)</li> </ul> <h2>Features</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/bff9091927811497dbf066b0e3b85ecb37d43822"><code>bff9091</code></a> feat: handle <code>Array.fromAsync</code> in <code>array-callback-return</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20457">#20457</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/290c594bb50c439fb71bc75521ee5360daa8c222"><code>290c594</code></a> feat: add <code>self</code> to <code>no-implied-eval</code> rule (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20468">#20468</a>) (sethamus)</li> <li><a href="https://github.com/eslint/eslint/commit/43677de07ebd6e14bfac40a46ad749ba783c45f2"><code>43677de</code></a> feat: fix handling of function and class expression names in <code>no-shadow</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20432">#20432</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/f0cafe5f37e7765e9d8c2751b5f5d33107687009"><code>f0cafe5</code></a> feat: rule tester add assertion option <code>requireData</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20409">#20409</a>) (fnx)</li> <li><a href="https://github.com/eslint/eslint/commit/f7ab6937e63bc618d326710858f5861a68f80616"><code>f7ab693</code></a> feat: output RuleTester test case failure index (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/19976">#19976</a>) (ST-DDT)</li> <li><a href="https://github.com/eslint/eslint/commit/7cbcbf9c3c2008deee7d143ae35e668e8ffbccb3"><code>7cbcbf9</code></a> feat: add <code>countThis</code> option to <code>max-params</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20236">#20236</a>) (Gerkin)</li> <li><a href="https://github.com/eslint/eslint/commit/f148a5eaa1e89dd80ade62f0a690186b00b9f6e1"><code>f148a5e</code></a> feat: add error assertion options (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20247">#20247</a>) (ST-DDT)</li> <li><a href="https://github.com/eslint/eslint/commit/09e66549ecada6dcb8c567a60faf044fce049188"><code>09e6654</code></a> feat: update error loc of <code>require-yield</code> and <code>no-useless-constructor</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20267">#20267</a>) (Tanuj Kanti)</li> </ul> <h2>Bug Fixes</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/436b82f3c0a8cfa2fdc17d173e95ea11d5d3ee03"><code>436b82f</code></a> fix: update eslint (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20473">#20473</a>) (renovate[bot])</li> <li><a href="https://github.com/eslint/eslint/commit/1d29d22fe302443cec2a11da0816397f94af97ec"><code>1d29d22</code></a> fix: detect default <code>this</code> binding in <code>Array.fromAsync</code> callbacks (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20456">#20456</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/727451eff55b35d853e0e443d0de58f4550762bf"><code>727451e</code></a> fix: fix regression of global mode report range in <code>strict</code> rule (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20462">#20462</a>) (ntnyq)</li> <li><a href="https://github.com/eslint/eslint/commit/e80485fcd27196fa0b6f6b5c7ac8cf49ad4b079d"><code>e80485f</code></a> fix: remove fake <code>FlatESLint</code> and <code>LegacyESLint</code> exports (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20460">#20460</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/9eeff3bc13813a786b8a4c3815def97c0fb646ef"><code>9eeff3b</code></a> fix: update esquery (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20423">#20423</a>) (cryptnix)</li> <li><a href="https://github.com/eslint/eslint/commit/b34b93852d014ebbcf3538d892b55e0216cdf681"><code>b34b938</code></a> fix: use <code>Error.prepareStackTrace</code> to estimate failing test location (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20436">#20436</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/51aab5393b058f7cbed69041a9069b2bd106aabd"><code>51aab53</code></a> fix: update eslint (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20443">#20443</a>) (renovate[bot])</li> <li><a href="https://github.com/eslint/eslint/commit/23490b266276792896a0b7b43c49a1ce87bf8568"><code>23490b2</code></a> fix: handle space before colon in <code>RuleTester</code> location estimation (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20433">#20433</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/f244dbf2191267a4cafd08645243624baf3e8c83"><code>f244dbf</code></a> fix: use <code>MessagePlaceholderData</code> type from <code>@eslint/core</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20348">#20348</a>) (루밀LuMir)</li> <li><a href="https://github.com/eslint/eslint/commit/d186f8c0747f14890e86a5a39708b052b391ddaf"><code>d186f8c</code></a> fix: update eslint (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20427">#20427</a>) (renovate[bot])</li> <li><a href="https://github.com/eslint/eslint/commit/2332262deb4ef3188b210595896bb0ff552a7e66"><code>2332262</code></a> fix: error location should not modify error message in RuleTester (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20421">#20421</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/ab99b21a6715dee1035d8f4e6d6841853eb5563f"><code>ab99b21</code></a> fix: ensure <code>filename</code> is passed as third argument to <code>verifyAndFix()</code> (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20405">#20405</a>) (루밀LuMir)</li> <li><a href="https://github.com/eslint/eslint/commit/8a60f3bc80ad96c65feeb29886342623c630199c"><code>8a60f3b</code></a> fix: remove <code>ecmaVersion</code> and <code>sourceType</code> from <code>ParserOptions</code> type (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20415">#20415</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/eafd727a060131f7fc79b2eb5698d8d27683c3a2"><code>eafd727</code></a> fix: remove <code>TDZ</code> scope type (<a href="https://github.com/eslint/eslint/tree/HEAD/packages/js/issues/20231">#20231</a>) (jaymarvelz)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/eslint/eslint/commits/HEAD/packages/js">compare view</a></li> </ul> </details> <br /> Updates `@tailwindcss/postcss` from 4.1.17 to 4.1.18 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/tailwindlabs/tailwindcss/releases"><code>@tailwindcss/postcss</code>'s releases</a>.</em></p> <blockquote> <h2>v4.1.18</h2> <h3>Fixed</h3> <ul> <li>Ensure validation of <code>source(…)</code> happens relative to the file it is in (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19274">#19274</a>)</li> <li>Include filename and line numbers in CSS parse errors (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19282">#19282</a>)</li> <li>Skip comments in Ruby files when checking for class names (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19243">#19243</a>)</li> <li>Skip over arbitrary property utilities with a top-level <code>!</code> in the value (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19243">#19243</a>)</li> <li>Support environment API in <code>@tailwindcss/vite</code> (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18970">#18970</a>)</li> <li>Preserve case of theme keys from JS configs and plugins (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19337">#19337</a>)</li> <li>Write source maps correctly on the CLI when using <code>--watch</code> (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19373">#19373</a>)</li> <li>Handle special defaults (like <code>ringColor.DEFAULT</code>) in JS configs (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19348">#19348</a>)</li> <li>Improve backwards compatibility for <code>content</code> theme key from JS configs (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19381">#19381</a>)</li> <li>Upgrade: Handle <code>future</code> and <code>experimental</code> config keys (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19344">#19344</a>)</li> <li>Try to canonicalize any arbitrary utility to a bare value (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19379">#19379</a>)</li> <li>Validate candidates similarly to Oxide (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19397">#19397</a>)</li> <li>Canonicalization: combine <code>text-*</code> and <code>leading-*</code> classes (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19396">#19396</a>)</li> <li>Correctly handle duplicate CLI arguments (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19416">#19416</a>)</li> <li>Don’t emit color-mix fallback rules inside <code>@keyframes</code> (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19419">#19419</a>)</li> <li>CLI: Don't hang when output is <code>/dev/stdout</code> (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19421">#19421</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md"><code>@tailwindcss/postcss</code>'s changelog</a>.</em></p> <blockquote> <h2>[4.1.18] - 2025-12-11</h2> <h3>Fixed</h3> <ul> <li>Ensure validation of <code>source(…)</code> happens relative to the file it is in (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19274">#19274</a>)</li> <li>Include filename and line numbers in CSS parse errors (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19282">#19282</a>)</li> <li>Skip comments in Ruby files when checking for class names (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19243">#19243</a>)</li> <li>Skip over arbitrary property utilities with a top-level <code>!</code> in the value (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19243">#19243</a>)</li> <li>Support environment API in <code>@tailwindcss/vite</code> (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/18970">#18970</a>)</li> <li>Preserve case of theme keys from JS configs and plugins (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19337">#19337</a>)</li> <li>Write source maps correctly on the CLI when using <code>--watch</code> (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19373">#19373</a>)</li> <li>Handle special defaults (like <code>ringColor.DEFAULT</code>) in JS configs (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19348">#19348</a>)</li> <li>Improve backwards compatibility for <code>content</code> theme key from JS configs (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19381">#19381</a>)</li> <li>Upgrade: Handle <code>future</code> and <code>experimental</code> config keys (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19344">#19344</a>)</li> <li>Try to canonicalize any arbitrary utility to a bare value (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19379">#19379</a>)</li> <li>Validate candidates similarly to Oxide (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19397">#19397</a>)</li> <li>Canonicalization: combine <code>text-*</code> and <code>leading-*</code> classes (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19396">#19396</a>)</li> <li>Correctly handle duplicate CLI arguments (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19416">#19416</a>)</li> <li>Don’t emit color-mix fallback rules inside <code>@keyframes</code> (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19419">#19419</a>)</li> <li>CLI: Don't hang when output is <code>/dev/stdout</code> (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19421">#19421</a>)</li> </ul> <h2>[3.4.19] - 2025-12-10</h2> <h3>Fixed</h3> <ul> <li>Don’t break <code>sibling-*()</code> functions when used inside <code>calc(…)</code> (<a href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19335">#19335</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/tailwindlabs/tailwindcss/commit/9b32f7cb2fd341e1f9ddbe40a4d61d2f272ae33f"><code>9b32f7c</code></a> Release v4.1.18 (<a href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19431">#19431</a>)</li> <li><a href="https://github.com/tailwindlabs/tailwindcss/commit/9c8cf8ac19dd5e742794d33e249b4f9c69b3fa5c"><code>9c8cf8a</code></a> Fix formatting of path in README.md (<a href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss/issues/19407">#19407</a>)</li> <li>See full diff in <a href="https://github.com/tailwindlabs/tailwindcss/commits/v4.1.18/packages/@tailwindcss-postcss">compare view</a></li> </ul> </details> <br /> Updates `@types/node` from 22.19.7 to 25.2.3 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare view</a></li> </ul> </details> <br /> Updates `@typescript-eslint/eslint-plugin` from 8.54.0 to 8.55.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/releases"><code>@typescript-eslint/eslint-plugin</code>'s releases</a>.</em></p> <blockquote> <h2>v8.55.0</h2> <h2>8.55.0 (2026-02-09)</h2> <h3>🚀 Features</h3> <ul> <li><strong>utils:</strong> deprecate defaultOptions in favor of meta.defaultOptions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11992">#11992</a>)</li> </ul> <h3>🩹 Fixes</h3> <ul> <li><strong>eslint-plugin:</strong> [no-unused-vars] remove trailing newline when removing entire import (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11990">#11990</a>)</li> <li><strong>eslint-plugin:</strong> [no-useless-default-assignment] require strictNullChecks (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11966">#11966</a>, <a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12000">#12000</a>)</li> <li><strong>eslint-plugin:</strong> [no-useless-default-assignment] report unnecessary defaults in ternary expressions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11984">#11984</a>)</li> <li><strong>eslint-plugin:</strong> [no-useless-default-assignment] reduce param index to ts this handling (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11949">#11949</a>)</li> <li><strong>typescript-estree:</strong> forbid invalid modifier in object expression (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11931">#11931</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Christian Rose <a href="https://github.com/chrros95"><code>@chrros95</code></a></li> <li>fisker Cheung <a href="https://github.com/fisker"><code>@fisker</code></a></li> <li>Josh Goldberg</li> <li>Maria Solano <a href="https://github.com/MariaSolOs"><code>@MariaSolOs</code></a></li> <li>Minyeong Kim <a href="https://github.com/minyeong981"><code>@minyeong981</code></a></li> <li>SungHyun627 <a href="https://github.com/SungHyun627"><code>@SungHyun627</code></a></li> <li>Yukihiro Hasegawa <a href="https://github.com/y-hsgw"><code>@y-hsgw</code></a></li> </ul> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.55.0">GitHub Releases</a> for more information.</p> <p>You can read about our <a href="https://typescript-eslint.io/users/versioning">versioning strategy</a> and <a href="https://typescript-eslint.io/users/releases">releases</a> on our website.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md"><code>@typescript-eslint/eslint-plugin</code>'s changelog</a>.</em></p> <blockquote> <h2>8.55.0 (2026-02-09)</h2> <h3>🚀 Features</h3> <ul> <li><strong>utils:</strong> deprecate defaultOptions in favor of meta.defaultOptions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11992">#11992</a>)</li> </ul> <h3>🩹 Fixes</h3> <ul> <li><strong>eslint-plugin:</strong> [no-useless-default-assignment] reduce param index to ts this handling (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11949">#11949</a>)</li> <li><strong>eslint-plugin:</strong> [no-useless-default-assignment] report unnecessary defaults in ternary expressions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11984">#11984</a>)</li> <li><strong>eslint-plugin:</strong> [no-useless-default-assignment] require strictNullChecks (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11966">#11966</a>, <a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12000">#12000</a>)</li> <li><strong>eslint-plugin:</strong> [no-unused-vars] remove trailing newline when removing entire import (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11990">#11990</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Christian Rose <a href="https://github.com/chrros95"><code>@chrros95</code></a></li> <li>Josh Goldberg</li> <li>Maria Solano <a href="https://github.com/MariaSolOs"><code>@MariaSolOs</code></a></li> <li>Minyeong Kim <a href="https://github.com/minyeong981"><code>@minyeong981</code></a></li> <li>SungHyun627 <a href="https://github.com/SungHyun627"><code>@SungHyun627</code></a></li> <li>Yukihiro Hasegawa <a href="https://github.com/y-hsgw"><code>@y-hsgw</code></a></li> </ul> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.55.0">GitHub Releases</a> for more information.</p> <p>You can read about our <a href="https://typescript-eslint.io/users/versioning">versioning strategy</a> and <a href="https://typescript-eslint.io/users/releases">releases</a> on our website.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/fedfe8665afbabd5c7d3ee09d14f450d5ba0b10a"><code>fedfe86</code></a> chore(release): publish 8.55.0</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/8a95834bb5fd818cc049390e4cb57196717a011f"><code>8a95834</code></a> fix(eslint-plugin): [no-useless-default-assignment] reduce param index to ts ...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/4ba1e72cd76f357044dca209978d87137c31e6c0"><code>4ba1e72</code></a> fix(eslint-plugin): [no-useless-default-assignment] report unnecessary defaul...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/a1f86179074a143fdb06445a28b1144427d33ec9"><code>a1f8617</code></a> feat(utils): deprecate defaultOptions in favor of meta.defaultOptions (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/11992">#11992</a>)</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/3f0ce54da520cdc58f1dd2e2c45073c92617e2c2"><code>3f0ce54</code></a> fix(eslint-plugin): [no-useless-default-assignment] require strictNullChecks ...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/3df0002e8663f170749cc4a9a054af377cf0c554"><code>3df0002</code></a> fix(eslint-plugin): [no-unused-vars] remove trailing newline when removing en...</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/b931f8c706beafc289462824814dca158694cb48"><code>b931f8c</code></a> chore: use workspace refs for workspace deps (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/12018">#12018</a>)</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/1f17a7918cd507b11fd04ce75fe44a9c62bf9542"><code>1f17a79</code></a> chore: migrate to pnpm (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin/issues/11248">#11248</a>)</li> <li>See full diff in <a href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.55.0/packages/eslint-plugin">compare view</a></li> </ul> </details> <br /> Updates `@typescript-eslint/parser` from 8.54.0 to 8.55.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/releases"><code>@typescript-eslint/parser</code>'s releases</a>.</em></p> <blockquote> <h2>v8.55.0</h2> <h2>8.55.0 (2026-02-09)</h2> <h3>🚀 Features</h3> <ul> <li><strong>utils:</strong> deprecate defaultOptions in favor of meta.defaultOptions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11992">#11992</a>)</li> </ul> <h3>🩹 Fixes</h3> <ul> <li><strong>eslint-plugin:</strong> [no-unused-vars] remove trailing newline when removing entire import (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11990">#11990</a>)</li> <li><strong>eslint-plugin:</strong> [no-useless-default-assignment] require strictNullChecks (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11966">#11966</a>, <a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/12000">#12000</a>)</li> <li><strong>eslint-plugin:</strong> [no-useless-default-assignment] report unnecessary defaults in ternary expressions (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11984">#11984</a>)</li> <li><strong>eslint-plugin:</strong> [no-useless-default-assignment] reduce param index to ts this handling (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11949">#11949</a>)</li> <li><strong>typescript-estree:</strong> forbid invalid modifier in object expression (<a href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11931">#11931</a>)</li> </ul> <h3>❤️ Thank You</h3> <ul> <li>Christian Rose <a href="https://github.com/chrros95"><code>@chrros95</code></a></li> <li>fisker Cheung <a href="https://github.com/fisker"><code>@fisker</code></a></li> <li>Josh Goldberg</li> <li>Maria Solano <a href="https://github.com/MariaSolOs"><code>@MariaSolOs</code></a></li> <li>Minyeong Kim <a href="https://github.com/minyeong981"><code>@minyeong981</code></a></li> <li>SungHyun627 <a href="https://github.com/SungHyun627"><code>@SungHyun627</code></a></li> <li>Yukihiro Hasegawa <a href="https://github.com/y-hsgw"><code>@y-hsgw</code></a></li> </ul> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.55.0">GitHub Releases</a> for more information.</p> <p>You can read about our <a href="https://typescript-eslint.io/users/versioning">versioning strategy</a> and <a href="https://typescript-eslint.io/users/releases">releases</a> on our website.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md"><code>@typescript-eslint/parser</code>'s changelog</a>.</em></p> <blockquote> <h2>8.55.0 (2026-02-09)</h2> <p>This was a version bump only for parser to align it with other projects, there were no code changes.</p> <p>See <a href="https://github.com/typescript-eslint/typescript-eslint/releases/tag/v8.55.0">GitHub Releases</a> for more information.</p> <p>You can read about our <a href="https://typescript-eslint.io/users/versioning">versioning strategy</a> and <a href="https://typescript-eslint.io/users/releases">releases</a> on our website.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/fedfe8665afbabd5c7d3ee09d14f450d5ba0b10a"><code>fedfe86</code></a> chore(release): publish 8.55.0</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/b931f8c706beafc289462824814dca158694cb48"><code>b931f8c</code></a> chore: use workspace refs for workspace deps (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser/issues/12018">#12018</a>)</li> <li><a href="https://github.com/typescript-eslint/typescript-eslint/commit/1f17a7918cd507b11fd04ce75fe44a9c62bf9542"><code>1f17a79</code></a> chore: migrate to pnpm (<a href="https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser/issues/11248">#11248</a>)</li> <li>See full diff in <a href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.55.0/packages/parser">compare view</a></li> </ul> </details> <br /> Updates `eslint` from 8.57.1 to 10.0.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/eslint/eslint/releases">eslint's releases</a>.</em></p> <blockquote> <h2>v10.0.0</h2> <h2>Breaking Changes</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/f9e54f43a5e497cdfa179338b431093245cb787b"><code>f9e54f4</code></a> feat!: estimate rule-tester failure location (<a href="https://redirect.github.com/eslint/eslint/issues/20420">#20420</a>) (ST-DDT)</li> <li><a href="https://github.com/eslint/eslint/commit/a176319d8ade1a7d9b2d7fb8f038f55a2662325f"><code>a176319</code></a> feat!: replace <code>chalk</code> with <code>styleText</code> and add <code>color</code> to <code>ResultsMeta</code> (<a href="https://redirect.github.com/eslint/eslint/issues/20227">#20227</a>) (루밀LuMir)</li> <li><a href="https://github.com/eslint/eslint/commit/c7046e6c1e03c4ca0eee4888a1f2eba4c6454f84"><code>c7046e6</code></a> feat!: enable JSX reference tracking (<a href="https://redirect.github.com/eslint/eslint/issues/20152">#20152</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/fa31a608901684fbcd9906d1907e66561d16e5aa"><code>fa31a60</code></a> feat!: add <code>name</code> to configs (<a href="https://redirect.github.com/eslint/eslint/issues/20015">#20015</a>) (Kirk Waiblinger)</li> <li><a href="https://github.com/eslint/eslint/commit/3383e7ec9028166cafc8ea7986c2f7498d0049f0"><code>3383e7e</code></a> fix!: remove deprecated <code>SourceCode</code> methods (<a href="https://redirect.github.com/eslint/eslint/issues/20137">#20137</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/501abd0e916a35554c58b7c0365537f1fa3880ce"><code>501abd0</code></a> feat!: update dependency minimatch to v10 (<a href="https://redirect.github.com/eslint/eslint/issues/20246">#20246</a>) (renovate[bot])</li> <li><a href="https://github.com/eslint/eslint/commit/ca4d3b40085de47561f89656a2207d09946ed45e"><code>ca4d3b4</code></a> fix!: stricter rule tester assertions for valid test cases (<a href="https://redirect.github.com/eslint/eslint/issues/20125">#20125</a>) (唯然)</li> <li><a href="https://github.com/eslint/eslint/commit/96512a66c86402fb0538cdcb6cd30b9073f6bf3b"><code>96512a6</code></a> fix!: Remove deprecated rule context methods (<a href="https://redirect.github.com/eslint/eslint/issues/20086">#20086</a>) (Nicholas C. Zakas)</li> <li><a href="https://github.com/eslint/eslint/commit/c69fdacdb2e886b9d965568a397aa8220db3fe90"><code>c69fdac</code></a> feat!: remove eslintrc support (<a href="https://redirect.github.com/eslint/eslint/issues/20037">#20037</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/208b5cc34a8374ff81412b5bec2e0800eebfbd04"><code>208b5cc</code></a> feat!: Use <code>ScopeManager#addGlobals()</code> (<a href="https://redirect.github.com/eslint/eslint/issues/20132">#20132</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/a2ee188ea7a38a0c6155f3d39e2b00e1d0f36e14"><code>a2ee188</code></a> fix!: add <code>uniqueItems: true</code> in <code>no-invalid-regexp</code> option (<a href="https://redirect.github.com/eslint/eslint/issues/20155">#20155</a>) (Tanuj Kanti)</li> <li><a href="https://github.com/eslint/eslint/commit/a89059dbf2832d417dd493ee81483227ec44e4ab"><code>a89059d</code></a> feat!: Program range span entire source text (<a href="https://redirect.github.com/eslint/eslint/issues/20133">#20133</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/39a6424373d915fa9de0d7b0caba9a4dc3da9b53"><code>39a6424</code></a> fix!: assert 'text' is a string across all RuleFixer methods (<a href="https://redirect.github.com/eslint/eslint/issues/20082">#20082</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/f28fbf846244e043c92b355b224d121b06140b44"><code>f28fbf8</code></a> fix!: Deprecate <code>"always"</code> and <code>"as-needed"</code> options of the <code>radix</code> rule (<a href="https://redirect.github.com/eslint/eslint/issues/20223">#20223</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/aa3fb2b233e929b37220be940575f42c280e0b98"><code>aa3fb2b</code></a> fix!: tighten <code>func-names</code> schema (<a href="https://redirect.github.com/eslint/eslint/issues/20119">#20119</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/f6c0ed0311dcfee853367d5068c765d066e6b756"><code>f6c0ed0</code></a> feat!: report <code>eslint-env</code> comments as errors (<a href="https://redirect.github.com/eslint/eslint/issues/20128">#20128</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/4bf739fb533e59f7f0a66b65f7bc80be0f37d8db"><code>4bf739f</code></a> fix!: remove deprecated <code>LintMessage#nodeType</code> and <code>TestCaseError#type</code> (<a href="https://redirect.github.com/eslint/eslint/issues/20096">#20096</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/523c076866400670fb2192a3f55dbf7ad3469247"><code>523c076</code></a> feat!: drop support for jiti < 2.2.0 (<a href="https://redirect.github.com/eslint/eslint/issues/20016">#20016</a>) (michael faith)</li> <li><a href="https://github.com/eslint/eslint/commit/454a292c95f34dad232411ddac06408e6383bb64"><code>454a292</code></a> feat!: update <code>eslint:recommended</code> configuration (<a href="https://redirect.github.com/eslint/eslint/issues/20210">#20210</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/4f880ee02992e1bf0e96ebaba679985e2d1295f1"><code>4f880ee</code></a> feat!: remove <code>v10_*</code> and inactive <code>unstable_*</code> flags (<a href="https://redirect.github.com/eslint/eslint/issues/20225">#20225</a>) (sethamus)</li> <li><a href="https://github.com/eslint/eslint/commit/f18115c363a4ac7671a4c7f30ee13d57ebba330f"><code>f18115c</code></a> feat!: <code>no-shadow-restricted-names</code> report <code>globalThis</code> by default (<a href="https://redirect.github.com/eslint/eslint/issues/20027">#20027</a>) (sethamus)</li> <li><a href="https://github.com/eslint/eslint/commit/c6358c31fbd3937b92d89be2618ffdf5a774604e"><code>c6358c3</code></a> feat!: Require Node.js <code>^20.19.0 || ^22.13.0 || >=24</code> (<a href="https://redirect.github.com/eslint/eslint/issues/20160">#20160</a>) (Milos Djermanovic)</li> </ul> <h2>Features</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/bff9091927811497dbf066b0e3b85ecb37d43822"><code>bff9091</code></a> feat: handle <code>Array.fromAsync</code> in <code>array-callback-return</code> (<a href="https://redirect.github.com/eslint/eslint/issues/20457">#20457</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/290c594bb50c439fb71bc75521ee5360daa8c222"><code>290c594</code></a> feat: add <code>self</code> to <code>no-implied-eval</code> rule (<a href="https://redirect.github.com/eslint/eslint/issues/20468">#20468</a>) (sethamus)</li> <li><a href="https://github.com/eslint/eslint/commit/43677de07ebd6e14bfac40a46ad749ba783c45f2"><code>43677de</code></a> feat: fix handling of function and class expression names in <code>no-shadow</code> (<a href="https://redirect.github.com/eslint/eslint/issues/20432">#20432</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/f0cafe5f37e7765e9d8c2751b5f5d33107687009"><code>f0cafe5</code></a> feat: rule tester add assertion option <code>requireData</code> (<a href="https://redirect.github.com/eslint/eslint/issues/20409">#20409</a>) (fnx)</li> <li><a href="https://github.com/eslint/eslint/commit/f7ab6937e63bc618d326710858f5861a68f80616"><code>f7ab693</code></a> feat: output RuleTester test case failure index (<a href="https://redirect.github.com/eslint/eslint/issues/19976">#19976</a>) (ST-DDT)</li> <li><a href="https://github.com/eslint/eslint/commit/7cbcbf9c3c2008deee7d143ae35e668e8ffbccb3"><code>7cbcbf9</code></a> feat: add <code>countThis</code> option to <code>max-params</code> (<a href="https://redirect.github.com/eslint/eslint/issues/20236">#20236</a>) (Gerkin)</li> <li><a href="https://github.com/eslint/eslint/commit/f148a5eaa1e89dd80ade62f0a690186b00b9f6e1"><code>f148a5e</code></a> feat: add error assertion options (<a href="https://redirect.github.com/eslint/eslint/issues/20247">#20247</a>) (ST-DDT)</li> <li><a href="https://github.com/eslint/eslint/commit/09e66549ecada6dcb8c567a60faf044fce049188"><code>09e6654</code></a> feat: update error loc of <code>require-yield</code> and <code>no-useless-constructor</code> (<a href="https://redirect.github.com/eslint/eslint/issues/20267">#20267</a>) (Tanuj Kanti)</li> </ul> <h2>Bug Fixes</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/436b82f3c0a8cfa2fdc17d173e95ea11d5d3ee03"><code>436b82f</code></a> fix: update eslint (<a href="https://redirect.github.com/eslint/eslint/issues/20473">#20473</a>) (renovate[bot])</li> <li><a href="https://github.com/eslint/eslint/commit/1d29d22fe302443cec2a11da0816397f94af97ec"><code>1d29d22</code></a> fix: detect default <code>this</code> binding in <code>Array.fromAsync</code> callbacks (<a href="https://redirect.github.com/eslint/eslint/issues/20456">#20456</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/727451eff55b35d853e0e443d0de58f4550762bf"><code>727451e</code></a> fix: fix regression of global mode report range in <code>strict</code> rule (<a href="https://redirect.github.com/eslint/eslint/issues/20462">#20462</a>) (ntnyq)</li> <li><a href="https://github.com/eslint/eslint/commit/e80485fcd27196fa0b6f6b5c7ac8cf49ad4b079d"><code>e80485f</code></a> fix: remove fake <code>FlatESLint</code> and <code>LegacyESLint</code> exports (<a href="https://redirect.github.com/eslint/eslint/issues/20460">#20460</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/9eeff3bc13813a786b8a4c3815def97c0fb646ef"><code>9eeff3b</code></a> fix: update esquery (<a href="https://redirect.github.com/eslint/eslint/issues/20423">#20423</a>) (cryptnix)</li> <li><a href="https://github.com/eslint/eslint/commit/b34b93852d014ebbcf3538d892b55e0216cdf681"><code>b34b938</code></a> fix: use <code>Error.prepareStackTrace</code> to estimate failing test location (<a href="https://redirect.github.com/eslint/eslint/issues/20436">#20436</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/51aab5393b058f7cbed69041a9069b2bd106aabd"><code>51aab53</code></a> fix: update eslint (<a href="https://redirect.github.com/eslint/eslint/issues/20443">#20443</a>) (renovate[bot])</li> <li><a href="https://github.com/eslint/eslint/commit/23490b266276792896a0b7b43c49a1ce87bf8568"><code>23490b2</code></a> fix: handle space before colon in <code>RuleTester</code> location estimation (<a href="https://redirect.github.com/eslint/eslint/issues/20433">#20433</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/f244dbf2191267a4cafd08645243624baf3e8c83"><code>f244dbf</code></a> fix: use <code>MessagePlaceholderData</code> type from <code>@eslint/core</code> (<a href="https://redirect.github.com/eslint/eslint/issues/20348">#20348</a>) (루밀LuMir)</li> <li><a href="https://github.com/eslint/eslint/commit/d186f8c0747f14890e86a5a39708b052b391ddaf"><code>d186f8c</code></a> fix: update eslint (<a href="https://redirect.github.com/eslint/eslint/issues/20427">#20427</a>) (renovate[bot])</li> <li><a href="https://github.com/eslint/eslint/commit/2332262deb4ef3188b210595896bb0ff552a7e66"><code>2332262</code></a> fix: error location should not modify error message in RuleTester (<a href="https://redirect.github.com/eslint/eslint/issues/20421">#20421</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/ab99b21a6715dee1035d8f4e6d6841853eb5563f"><code>ab99b21</code></a> fix: ensure <code>filename</code> is passed as third argument to <code>verifyAndFix()</code> (<a href="https://redirect.github.com/eslint/eslint/issues/20405">#20405</a>) (루밀LuMir)</li> <li><a href="https://github.com/eslint/eslint/commit/8a60f3bc80ad96c65feeb29886342623c630199c"><code>8a60f3b</code></a> fix: remove <code>ecmaVersion</code> and <code>sourceType</code> from <code>ParserOptions</code> type (<a href="https://redirect.github.com/eslint/eslint/issues/20415">#20415</a>) (Pixel998)</li> <li><a href="https://github.com/eslint/eslint/commit/eafd727a060131f7fc79b2eb5698d8d27683c3a2"><code>eafd727</code></a> fix: remove <code>TDZ</code> scope type (<a href="https://redirect.github.com/eslint/eslint/issues/20231">#20231</a>) (jaymarvelz)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/eslint/eslint/commit/4e6c4ac042e321da8fc29ce53ed03c86dcaa44a7"><code>4e6c4ac</code></a> 10.0.0</li> <li><a href="https://github.com/eslint/eslint/commit/ddd8a223000ac6a2182cc8eae35254806a3b0289"><code>ddd8a22</code></a> Build: changelog update for 10.0.0</li> <li><a href="https://github.com/eslint/eslint/commit/bff9091927811497dbf066b0e3b85ecb37d43822"><code>bff9091</code></a> feat: handle <code>Array.fromAsync</code> in <code>array-callback-return</code> (<a href="https://redirect.github.com/eslint/eslint/issues/20457">#20457</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/1ece282c2286b5dc187ece2a793dbd8798f20bd7"><code>1ece282</code></a> chore: ignore <code>/docs/v9.x</code> in link checker (<a href="https://redirect.github.com/eslint/eslint/issues/20452">#20452</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/034e1397446205e83eb341354605380195c88633"><code>034e139</code></a> ci: add type integration test for <code>@html-eslint/eslint-plugin</code> (<a href="https://redirect.github.com/eslint/eslint/issues/20345">#20345</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/f3fbc2f60cbe2c718364feb8c3fc0452c0df3c56"><code>f3fbc2f</code></a> chore: set <code>@eslint/js</code> version to 10.0.0 to skip releasing it (<a href="https://redirect.github.com/eslint/eslint/issues/20466">#20466</a>)</li> <li><a href="https://github.com/eslint/eslint/commit/e978ddaab7e6a3c38b4a2afa721148a6ef38f29a"><code>e978dda</code></a> docs: Update README</li> <li><a href="https://github.com/eslint/eslint/commit/4cecf8393ae9af18c4cfd50621115eb23b3d0cb6"><code>4cecf83</code></a> docs: Update README</li> <li><a href="https://github.com/eslint/eslint/commit/c79f0ab2e2d242a93b08ff2f6a0712e2ef60b7b8"><code>c79f0ab</code></a> docs: Update README</li> <li><a href="https://github.com/eslint/eslint/commit/afc06817bbd0625c7b0a46bdc81c38dab0c99441"><code>afc0681</code></a> chore: remove scopeManager.addGlobals patch for typescript-eslint parser (<a href="https://redirect.github.com/eslint/eslint/issues/20">#20</a>...</li> <li>Additional commits viewable in <a href="https://github.com/eslint/eslint/compare/v8.57.1...v10.0.0">compare view</a></li> </ul> </details> <br /> Updates `glob` from 11.0.3 to 13.0.2 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/isaacs/node-glob/blob/main/changelog.md">glob's changelog</a>.</em></p> <blockquote> <h1>changeglob</h1> <h2>13</h2> <ul> <li>Move the CLI program out to a separate package, <code>glob-bin</code>. Install that if you'd like to continue using glob from the command line.</li> </ul> <h2>12</h2> <ul> <li>Remove the unsafe <code>--shell</code> option. The <code>--shell</code> option is now ONLY supported on known shells where the behavior can be implemented safely.</li> </ul> <h2>11.1</h2> <p><a href="https://github.com/isaacs/node-glob/security/advisories/GHSA-5j98-mcp5-4vw2">GHSA-5j98-mcp5-4vw2</a></p> <ul> <li>Add the <code>--shell</code> option for the command line, with a warning that this is unsafe. (It will be removed in v12.)</li> <li>Add the <code>--cmd-arg</code>/<code>-g</code> as a way to <em>safely</em> add positional arguments to the command provided to the CLI tool.</li> <li>Detect commands with space or quote characters on known shells, and pass positional arguments to them safely, avoiding <code>shell:true</code> execution.</li> </ul> <h2>11.0</h2> <ul> <li>Drop support for node before v20</li> </ul> <h2>10.4</h2> <ul> <li>Add <code>includeChildMatches: false</code> option</li> <li>Export the <code>Ignore</code> class</li> </ul> <h2>10.3</h2> <ul> <li>Add <code>--default -p</code> flag to provide a default pattern</li> <li>exclude symbolic links to directories when <code>follow</code> and <code>nodir</code> are both set</li> </ul> <h2>10.2</h2> <ul> <li>Add glob cli</li> </ul> <h2>10.1</h2> <ul> <li>Return <code>'.'</code> instead of the empty string <code>''</code> when the current working directory is returned as a match.</li> <li>Add <code>posix: true</code> option to return <code>/</code> delimited paths, even on</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/isaacs/node-glob/commit/2135b0c3580caf6330e28dedb2d57cea75f15154"><code>2135b0c</code></a> 13.0.2</li> <li><a href="https://github.com/isaacs/node-glob/commit/52544940ddddead912084a436ac08604592c5a81"><code>5254494</code></a> ship minified by default, update deps</li> <li><a href="https://github.com/isaacs/node-glob/commit/0a603fe1857105aedf4a1f80a75375fc3e4c0385"><code>0a603fe</code></a> remove unused tshy config</li> <li><a href="https://github.com/isaacs/node-glob/commit/c759f03302b7b2ab76747cfe2cadf4a51b113082"><code>c759f03</code></a> 13.0.1</li> <li><a href="https://github.com/isaacs/node-glob/commit/8354a188e58d66e015f7ad50845260abba8bdd9e"><code>8354a18</code></a> update deps</li> <li><a href="https://github.com/isaacs/node-glob/commit/ff6e0f541ac0fca999fc7803a2774cf1d94f4f47"><code>ff6e0f5</code></a> ci: update action versions</li> <li><a href="https://github.com/isaacs/node-glob/commit/14692860a3d266cae5d0fcc119953a13351f6a10"><code>1469286</code></a> update workflows and formatting/docs</li> <li><a href="https://github.com/isaacs/node-glob/commit/3bfb9604fabcd372fd13bbacef90339d10d1aa92"><code>3bfb960</code></a> 13.0.0</li> <li><a href="https://github.com/isaacs/node-glob/commit/db31a63edaffa88b6361199267f155112f49f4fe"><code>db31a63</code></a> Split the CLI out from the main project</li> <li><a href="https://github.com/isaacs/node-glob/commit/54934586bc33b3f90fde6c13c1ca5b719801ee78"><code>5493458</code></a> ci: remove node 20</li> <li>Additional commits viewable in <a href="https://github.com/isaacs/node-glob/compare/v11.0.3...v13.0.2">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~isaacs">isaacs</a>, a new releaser for glob since your current version.</p> </details> <br /> Updates `globals` from 17.2.0 to 17.3.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/sindresorhus/globals/releases">globals's releases</a>.</em></p> <blockquote> <h2>v17.3.0</h2> <ul> <li>Update globals (2026-02-01) (<a href="https://redirect.github.com/sindresorhus/globals/issues/336">#336</a>) 295fba9</li> </ul> <hr /> <p><a href="https://github.com/sindresorhus/globals/compare/v17.2.0...v17.3.0">https://github.com/sindresorhus/globals/compare/v17.2.0...v17.3.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/sindresorhus/globals/commit/5edc6020698a76964b0fa17cb604f4484451143b"><code>5edc602</code></a> 17.3.0</li> <li><a href="https://github.com/sindresorhus/globals/commit/295fba929adf8b44f945688233778a57ff754368"><code>295fba9</code></a> Update globals (2026-02-01) (<a href="https://redirect.github.com/sindresorhus/globals/issues/336">#336</a>)</li> <li>See full diff in <a href="https://github.com/sindresorhus/globals/compare/v17.2.0...v17.3.0">compare view</a></li> </ul> </details> <br /> Updates `next-validate-link` from 1.6.3 to 1.6.4 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/fuma-nama/next-validate-link/releases">next-validate-link's releases</a>.</em></p> <blockquote> <h2>[email protected]</h2> <h3>Patch Changes</h3> <ul> <li>e8b1df1: Improve error message format to support editor jumping</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/fuma-nama/next-validate-link/blob/dev/CHANGELOG.md">next-validate-link's changelog</a>.</em></p> <blockquote> <h2>1.6.4</h2> <h3>Patch Changes</h3> <ul> <li>e8b1df1: Improve error message format to support editor jumping</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/fuma-nama/next-validate-link/commit/875c724f5a3ef1498d9071e94851f98e9226492a"><code>875c724</code></a> Merge pull request <a href="https://redirect.github.com/fuma-nama/next-validate-link/issues/96">#96</a> from fuma-nama/changeset-release/dev</li> <li><a href="https://github.com/fuma-nama/next-validate-link/commit/abb9795c43fc13cf8506413cfb35ea29168dacd7"><code>abb9795</code></a> run lint</li> <li><a href="https://github.com/fuma-nama/next-validate-link/commit/e7cd386893492172d98c67a8b5dbac99fa4d814f"><code>e7cd386</code></a> update example</li> <li><a href="https://github.com/fuma-nama/next-validate-link/commit/e8b1df10f58fb8bf1e4651fe931880859d201be1"><code>e8b1df1</code></a> feat: Improve error message format to support editor jumping</li> <li>See full diff in <a href="https://github.com/fuma-nama/next-validate-link/compare/[email protected]@1.6.4">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by [GitHub Actions](<a href="https://www.npmjs.com/~GitHub">https://www.npmjs.com/~GitHub</a> Actions), a new releaser for next-validate-link since your current version.</p> </details> <br /> Updates `semver` from 7.7.3 to 7.7.4 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/npm/node-semver/releases">semver's releases</a>.</em></p> <blockquote> <h2>v7.7.4</h2> <h2><a href="https://github.com/npm/node-semver/compare/v7.7.3...v7.7.4">7.7.4</a> (2026-01-16)</h2> <h3>Bug Fixes</h3> <ul> <li><a href="https://github.com/npm/node-semver/commit/a29faa5f3309a01c8e5aeb965fb5c02c4c4e80e2"><code>a29faa5</code></a> <a href="https://redirect.github.com/npm/node-semver/pull/835">#835</a> cli: pass options to semver.valid() for loose version validation (<a href="https://redirect.github.com/npm/node-semver/issues/835">#835</a>) (<a href="https://github.com/mldangelo"><code>@mldangelo</code></a>)</li> </ul> <h3>Documentation</h3> <ul> <li><a href="https://github.com/npm/node-semver/commit/1d28d5e82de16163daf721a7c76fff93e0d333ab"><code>1d28d5e</code></a> <a href="https://redirect.github.com/npm/node-semver/pull/836">#836</a> fix typos and update -n CLI option documentation (<a href="https://redirect.github.com/npm/node-semver/issues/836">#836</a>) (<a href="https://github.com/mldangelo"><code>@mldangelo</code></a>)</li> </ul> <h3>Dependencies</h3> <ul> <li><a href="https://github.com/npm/node-semver/commit/120968b76760cb0db85a72bde2adedd0e9628793"><code>120968b</code></a> <a href="https://redirect.github.com/npm/node-semver/pull/840">#840</a> <code>@npmcli/[email protected].0</code> (<a href="https://redirect.github.com/npm/node-semver/issues/840">#840</a>)</li> </ul> <h3>Chores</h3> <ul> <li><a href="https://github.com/npm/node-semver/commit/44d7130c60cedd3703048aa671bb1d659b79ab07"><code>44d7130</code></a> <a href="https://redirect.github.com/npm/node-semver/pull/824">#824</a> bump <code>@npmcli/eslint-config</code> from 5.1.0 to 6.0.0 (<a href="https://redirect.github.com/npm/node-semver/issues/824">#824</a>) (<a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot])</li> <li><a href="https://github.com/npm/node-semver/commit/70735767b68a1775eb67ac816b183b4a422101f4"><code>7073576</code></a> <a href="https://redirect.github.com/npm/node-semver/pull/820">#820</a> reorder parameters in invalid-versions.js test (<a href="https://redirect.github.com/npm/node-semver/issues/820">#820</a>) (<a href="https://github.com/reggi"><code>@reggi</code></a>)</li> <li><a href="https://github.com/npm/node-semver/commit/5816d4cfd6d85169527a2bc22fbd5bf4c64f34e3"><code>5816d4c</code></a> <a href="https://redirect.github.com/npm/node-semver/pull/829">#829</a> bump <code>@npmcli/template-oss</code> from 4.28.0 to 4.28.1 (<a href="https://redirect.github.com/npm/node-semver/issues/829">#829</a>) (<a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot], <a href="https://github.com/npm-cli-bot"><code>@... _Description has been truncated_ --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Copilot <[email protected]> Co-authored-by: fforootd <[email protected]> Co-authored-by: Florian Forster <[email protected]> |
||
|
|
db9ebbbb41 | chore(agents): add agents files (#11497) | ||
|
|
61756af7f7 | feat(login): use OpenSSL CA store for TLS certificate validation (#11562) | ||
|
|
59f1105b04 |
chore: rename login data to login details (#11127)
# Which Problems Are Solved For username/email + password, "login data" seems like uncommon and confusing terminology to me. I also think "loginname" is that, maybe it should be written like "login name" or "username", but I'm having oversight with that now because it seems to be the way Zitadel calls it. Here's what Gemini has to say: > Login Credentials: This is the most widely accepted and formal term in the tech and security industry. A "credential" is an item of information that confirms an identity. The pair (username/email and password) is the set of identifiers used to authenticate the user and grant access (i.e., log in). > > Login Details: This is also very common in general use and often used interchangeably with "login credentials," especially in user-facing contexts (e.g., "Please enter your login details"). It is slightly less formal than "credentials." > > Login Data: While technically correct (as the information is data), this term is less specific and is more commonly used when referring to a larger collection of information, like a file containing many users' credentials, or the data transmitted during the login process. # How the Problems Are Solved Renames all occurrences of login data or login credentials to login details. # Additional Changes None. # Additional Context I believe this is an improvement but feel free to object. Co-authored-by: Max Peintner <[email protected]> Co-authored-by: Ramon <[email protected]> |
||
|
|
2a2d5392a3 |
fix: correctly send links to login v2 in email notifications (#10711)
# Which Problems Are Solved There were still some emails (passkey registration and domain claimed) sent with links pointing to login v1 even when the login v2 was enabled for the instance. Also while looking into the issue, it was discovered that some links pointing to login V2 were not correctly generated. # How the Problems Are Solved - Added default paths for passkey registration and domain claimed notifications - Fixed the existing paths to properly handle concatenation (resp. use `url.ResolveReference`) - Change their go types (from string) to `*url.URL` - Added a mapstructure hook for string to url - Removed unnecessary `InstanceSetupFeatures` and corresponding conversions - Refactored the methods on the `login.DefaultPaths` struct and added an interface to the `Commands` to only need to pass a single config (and not every method) - Added an `OriginURL` method to the `DomainCtx` to prevent going from url to string and back - Added the use of the templates in case of enabled login v2 for passkey registration and domain claimed) # Additional Changes None # Additional Context closes #10643 --------- Co-authored-by: Max Peintner <[email protected]> Co-authored-by: Livio Spring <[email protected]> Co-authored-by: Livio Spring <[email protected]> Co-authored-by: Max Peintner <[email protected]> Co-authored-by: Gayathri Vijayan <[email protected]> |
||
|
|
382aec2d61 |
chore: Service Account Naming Consistency (#11557)
# Which Problems Are Solved Inconsistent naming of service account, found in the following variations: - Machine User - machine user - Service User - Machine Account - Technical Account - User: Type Machine # How the Problems Are Solved Attentive search and replace. Localizations have been translated using Copilot # Additional Changes Some unused methods have been removed from the Go code. # Additional Context - Closes #11285 |
||
|
|
9f3d7e7bc3 |
fix(login): button dark disabled contrast increase to 1.69 (#11517)
# Which Problems Are Solved The contrast of the text color to the background color for disabled buttons in dark mode is only 1.18 which is not enough # How the Problems Are Solved The default background for the disabled button is increased such that the contrast improves to 1.69 Co-authored-by: Livio Spring <[email protected]> |
||
|
|
a24e3f03b9 |
chore: update npm deps (#11427)
# Which Problems Are Solved Outdated NPM dependencies # How the Problems Are Solved Updated the depdendencies # Additional Changes # Additional Context |
||
|
|
67a02a6aeb |
feat(login): add support for disabling automatic email verification (#11515)
# Which Problems Are Solved Enterprise email link scanners (used by organizations for security) pre-fetch URLs in emails to check for malicious content. In Login V2, email verification codes are automatically redeemed when the verification page loads. This causes link scanners to inadvertently consume one-time verification codes before users can click them, resulting in "code already used" errors. # How the Problems Are Solved - Changed the default behaviour so that verification codes are **not** auto-submitted on page load — users must click a Submit button to redeem the code - Added a new environment variable `NEXT_PUBLIC_AUTO_SUBMIT_CODE` that can be set to `true` to re-enable auto-submission for instances where link scanners are not a concern - The env var is named generically so it can be extended to other auto-submit flows (e.g. Email OTP) in the future # Additional Changes None # Additional Context Closes #11406 |
||
|
|
9492c12c09 |
fix(login): refactor SAML Post Flow to bypass cookie limits, fix SAML SP post (#11170)
Closes #10816 Closes #10759 # Which Problems Are Solved This PR refactors the SAML Post binding flow to address issues with payloads exceeding browser cookie size limits (typically ~4KB). Previously, the SAML form data was serialized into a cookie, and the user was redirected to an intermediate /saml-post page to render the form. This approach failed for large SAML assertions. # How the Problems Are Solved The new implementation bypasses cookies entirely for the payload transfer. Server actions now return the form data directly to the client, which immediately renders and submits the form. - Direct Data Transfer: Updated `startIdentityProviderFlow` to return an object { url, fields } instead of a redirect URL when the next step is formData. - Server Actions: Updated redirectToIdp, sendLoginname, and completeAuthFlow to propagate this samlData object to the client. - Client-Side Auto-Submission: Added a new AutoSubmitForm component that renders a hidden form with the provided fields and automatically submits it to the IdP on mount. --------- Co-authored-by: conblem <[email protected]> |
||
|
|
4712d99856 |
fix(login): respect password complexity settings in UI (#11528)
<!-- Please inform yourself about the contribution guidelines on submitting a PR here: https://github.com/zitadel/zitadel/blob/main/CONTRIBUTING.md#submit-a-pull-request-pr. Take note of how PR/commit titles should be written and replace the template texts in the sections below. Don't remove any of the sections. It is important that the commit history clearly shows what is changed and why. Important: By submitting a contribution you agree to the terms from our Licensing Policy as described here: https://github.com/zitadel/zitadel/blob/main/LICENSING.md#community-contributions. --> # Which Problems Are Solved - Login V2 UI displays all password complexity requirements (symbol, number, uppercase, lowercase) regardless of the actual instance/organization configuration - Users see requirements they don't need to meet, causing confusion # How the Problems Are Solved - Updated the PasswordComplexity component to conditionally render each requirement based on the corresponding `requires*` flag from the password complexity settings - Only enabled requirements are now displayed to users # Additional Changes None. # Additional Context - Closes #11511 |
||
|
|
38dbd4cf3e |
fix(login, console): replace allowUsernamePassword with allowLocalAuthentication in login, change translation in console (#11413)
# Which Problems Are Solved This PR deprecates and replaces the use of `allowUsernamePassword` with `allowLocalAuthentication`. It additionally disables the username on organizations that disallow local authentication. In such a case, only IDPs are shown. # How the Problems Are Solved - replace `allowUsernamePassword` by `allowLocalAuthentication` - disable username form if !allowLocalAuthentication - translate property in console UI |