Skip to content

chore(deps): weekly dependencies update 2026-10-15 - #368

Merged
CataldoMazzilli merged 1 commit into
mainfrom
chore/deps-update-2026-10-15
Oct 16, 2026
Merged

CataldoMazzilli merged 1 commit into
mainfrom
chore/deps-update-2026-10-15

Conversation

@CataldoMazzilli

Copy link
Copy Markdown
Member

Weekly dependencies update β€” 2026-10-15

Automated bundle of all runtime dependencies bumped to the latest minor/patch within the same major (the dependencies block only).

Updates

Package Old New Minor jump Peer Security
@zextras/carbonio-design-system 12.0.4 12.2.1 +2
graphql 16.14.1 16.14.2 0
i18next 26.4.2 26.4.5 0
i18next-http-backend 4.0.2 4.0.3 0
react-i18next 17.0.14 17.0.17 0

Notes

  • Base branch: main
  • Ranges resolved with ncu --target minor at planning time and applied verbatim to the dependencies block, then pnpm install --no-frozen-lockfile.
  • Only package.json and pnpm-lock.yaml were modified.

πŸ€– Generated by the update-deps skill.

Changelogs

@zextras/carbonio-design-system 12.0.4 β†’ 12.2.1

v12.0.5

12.0.5 (2026-09-03)

Bug Fixes

  • ci: use sonar-scanner-npm bin to match sonarqube-scanner 5.x (#682) (856469a)

v12.1.0

12.1.0 (2026-09-03)

Features


v12.1.1

12.1.1 (2026-09-03)

Bug Fixes

Other changes

  • register jenkins-lib-common shared library (#679) (9351aed)

v12.1.2

12.1.2 (2026-09-15)

Other changes


v12.1.3

12.1.3 (2026-09-16)

Other changes

  • deps: update dependencies and move darkreader to devDependencies (3bef4ec), closes #684

v12.1.4

12.1.4 (2026-09-16)

Other changes


v12.1.5

12.1.5 (2026-09-16)

Other changes


v12.1.6

12.1.6 (2026-09-17)

Other changes

  • deps-dev: migrate to @zextras/carbonio-ui-configs 3.x (#691) (98c67c9)

v12.1.7

12.1.7 (2026-09-17)

Other changes

  • deps-dev: update transitive devDependencies to resolve Dependabot alerts (#693) (02aa61d)

v12.1.8

12.1.8 (2026-09-17)

Other changes


v12.1.9

12.1.9 (2026-09-21)

Other changes


v12.1.10

12.1.10 (2026-09-21)

Other changes

  • deps: update devdependencies (weekly) (#698) (83e9052)

v12.1.11

12.1.11 (2026-09-22)

Other changes


v12.1.12

12.1.12 (2026-09-25)

Other changes


v12.1.13

12.1.13 (2026-09-29)

Other changes


v12.1.14

12.1.14 (2026-10-13)

Other changes


v12.1.15

12.1.15 (2026-10-14)

Other changes


v12.1.16

12.1.16 (2026-10-15)

Other changes


v12.2.0

12.2.0 (2026-10-15)

Features

  • icons: add editing icons for Calendars, Mails, Tasks and Contacts (b854e2d)

v12.2.1

12.2.1 (2026-10-15)

Other changes

  • gate checks and release on main instead of devel/release (#707) (4b23c56)

graphql 16.14.1 β†’ 16.14.2

v16.14.2

v16.14.2 (2026-06-09)

Docs πŸ“

7 PRs were merged

Polish πŸ’…

  • #4787 docs: update documentation for v17 release candidate (@yaacovCR)

Committers: 2


i18next 26.4.2 β†’ 26.4.5

v26.4.3

  • perf: ResourceStore.hasLanguageSomeTranslations() no longer enumerates every key of a large bundle on each call. It ran Object.keys() on the whole bundle just to learn whether it had at least one key, and init() / changeLanguage() reach it three times per instance (once while picking the language, twice via setResolvedLanguage()). With large flat bundles and one i18next instance per SSR request reusing the same resources, that showed up as measurable CPU work before any t() call. Bundle objects already found non-empty are now remembered in a WeakSet shared across instances, so later checks are O(1): 2,000 inits with a 6,800-key bundle went from ~750 ms to ~20 ms, the same as a one-key bundle. Only the non-empty result is cached. No API removes single keys from a bundle, so a non-empty bundle stays non-empty, and empty bundles are re-checked every time, so keys added later (backend loads, addResource, addResourceBundle, direct or silent changes) count right away. The only edge case: a bundle emptied by hand with delete on every key while it is still in the store keeps counting as having translations; use removeResourceBundle() for that. Thanks @dmchoi77 for the detailed report (#2449).

v26.4.4

  • fix(security): the nesting regexp no longer backtracks exponentially (ReDoS) on an unclosed $t(. Its repeated group had overlapping alternatives ([^()"']+ inside (?:...)*?, and inside parentheses [^()] also matched quotes), so a string containing $t( without a closing ) made the engine try every way to split the text: about 2x the runtime per extra character, and a ~25 character value hung t() for minutes. With the default config this was reachable through any interpolated value (t('greet', { name: '$t(aaaaaaaaaaaaaaaaaaaaaaaa' })): escaping does not touch $, t or (, and the skipOnVariables check runs the regexp on the interpolated result, so nest: false did not help either. Every alternative now starts with a different character (plain char, ", ' or (), so there is only one way to match and the cost is linear. Quoted strings and one level of parentheses in nesting options keep working (#2336). The only difference: a lone " or ' inside unquoted parentheses within $t(...) is no longer matched. Affects 25.3.3 to 26.4.3. Thanks to Anisetti Chaitanya Eshwar Prasad for the responsible disclosure.
  • fix(security): nest() now resolves $t(...) in a single pass and no longer nests text that came out of a resolved value. Every nested lookup reset the shared nesting regexp, so the loop started over from the beginning of the string after each match. That had two effects. First, a $t(...) inside a variable that the nested lookup deliberately kept literal (default skipOnVariables: true) was resolved anyway by the outer loop: with outer: 'A $t(inner) B' and inner: 'Hi {{name}}', t('outer', { name: '$t(secret)' }) rendered the secret translation. It now stays A Hi $t(secret) B, the same as without the outer nesting; with skipOnVariables: false it is still resolved. Second, the cost was quadratic when an unclosed $t( preceded many nestings, which matters when an app passes untrusted input as the key itself (t(userInput)): 20,000 nestings took ~1.4 s, now ~25 ms. The resolved value is now sliced into the result instead of going through String.replace, so $&, $`, $' and $$ stay literal as before (26.4.2).

v26.4.5

  • fix: hasLoadedNamespace(ns, { lng }) no longer stays false forever when the passed in lng is loaded under another code, or not at all. It checked the load state of the raw lng, but loadLanguages() stores a language under its resolved code (de-ch β†’ de-CH, de-CH β†’ de with load: 'languageOnly') and skips a lng outside supportedLngs entirely (only the fallback gets loaded), so that state never got set. react-i18next's useTranslation(ns, { lng }) then never became ready: with useSuspense it kept throwing an already resolved promise and React retried forever (100% CPU, SSR never finished), without it the load effect re-rendered in a loop. It now checks the code the language is actually loaded under, and for a lng outside supportedLngs only waits for the fallback, which is also what t() resolves to. Calls without lng and the precheck (react-i18next's bindI18n: 'languageChanging') are unchanged (react-i18next#1934).

i18next-http-backend 4.0.2 β†’ 4.0.3

4.0.3

Security release. See advisory GHSA-9jhj-wvmw-cfx5.

  • security: refuse a request URL that starts with // (or \) when the loadPath / addPath template does not. With a template that puts {{ns}} directly after a leading / (e.g. /{{ns}}/{{lng}}.json), an ns value of /evil.example passed the per-value checks, because a single / is allowed for nested namespaces, but it joined the template's own / into //evil.example/en.json, a protocol-relative URL that browsers send to another origin. The 4.0.2 // check looked at the value only, so it missed this. The interpolated URL is now checked as a whole. The default /locales/{{lng}}/{{ns}}.json, templates with an origin, and protocol-relative CDN templates such as //cdn.example/{{lng}}/{{ns}}.json are not affected and keep working.

Source: CHANGELOG.md


react-i18next 17.0.14 β†’ 17.0.17

17.0.15

  • fix(Trans): empty paired component tags now preserve a component's single valid React-element child, whether supplied through a named component map (<wrap></wrap>), a component array (<0></0>), or indexed JSX children (<1></1>). This matches the existing behavior for two or more children and self-closing tags. React represents one JSX child as an element and multiple children as an array; the previous array-only check silently rendered the one-child case empty. Compatibility note: when that sole element contains an interpolation object, the restored raw children can expose an existing React rendering limitation as an error instead of silently rendering empty; the same shape already errors with two children. Fixes #1932.

17.0.16

  • fix(Trans): a selector i18nKey that points into a secondary namespace of useTranslation now resolves the same way t() does. With const { t } = useTranslation(['ns1', 'ns2']), t($ => $.ns2.message) works since 17.0.7, but <Trans t={t} i18nKey={$ => $.ns2.message} /> rendered the raw key (or its children). Trans always passed an ns option to t, filled from t.ns (the primary namespace only), and an explicit ns makes i18next's fixed t skip the hook's full namespace list (scopeNs). When Trans or TransWithoutContext gets a t that carries its own namespace and no ns prop, it now leaves ns out and lets that t apply its own. String keys, keyPrefix, nsMode: 'fallback', an explicit ns prop and Trans without a t prop behave as before. Compatibility note: if the primary namespace has a nested object named like a secondary namespace (ns1 β†’ ns2.message), Trans now resolves $ => $.ns2.message to ns2:message, as t() already does. Fixes #1933.

17.0.17

  • perf: useTranslation no longer unsubscribes and resubscribes its i18n listeners on every render. The subscribe callback handed to useSyncExternalStore depended on the merged options object, which is rebuilt whenever props is a new object: with no options (the {} default), with options passed inline (useTranslation('ns', { keyPrefix })), and through withTranslation and <Translation>. A new subscribe makes React resubscribe, so each render of each caller ran i18n.off and i18n.on in an extra effect. It now depends only on the instance and the bindI18n/bindI18nStore event names. No updates were ever missed, because React re-checks the snapshot after resubscribing; this only removes the churn, which adds up with many mounted components that re-render often. Reported via next-i18next#2349.

Source: CHANGELOG.md


@sonarqube-zextras

Copy link
Copy Markdown

@CataldoMazzilli
CataldoMazzilli marked this pull request as ready for review October 16, 2026 08:08
@CataldoMazzilli
CataldoMazzilli merged commit c6230ac into main Oct 16, 2026
3 checks passed
@CataldoMazzilli
CataldoMazzilli deleted the chore/deps-update-2026-10-15 branch October 16, 2026 08:08
@ZxBot

ZxBot commented Oct 16, 2026

Copy link
Copy Markdown
Contributor

πŸŽ‰ This PR is included in version 0.0.39 πŸŽ‰

The release is available on GitHub release

Your semantic-release bot πŸ“¦πŸš€

@ZxBot ZxBot added the released label Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

3 participants