194 Commits

Author SHA1 Message Date
Andrei L 90623baa6f fix(admin): clean up lazy component registration warnings (#25015)
* fix(admin): don't warn when Component is missing in addMenuLink/addSettingsLink

* fix: add some missing StrapiApp types

* fix(admin): clean up lazy component registrations

---------

Co-authored-by: Bassel Kanso <basselkanso82@gmail.com>
2026-04-30 16:27:48 +03:00
Filip Ónodi 4ccaab3c74 enhancement(translations): update czech translations (#25824)
Co-authored-by: Bassel Kanso <basselkanso82@gmail.com>
2026-04-24 11:11:48 +03:00
Jan Willem Keizer 0c912f071b feat(i18n): complete Dutch (nl) translations for admin panel (#25932)
Add missing Dutch translations across all core packages and plugins,
bringing coverage from ~50% to ~100%.

Changes:
- core/admin: 301 new translations added (564 → 863 keys)
- core/content-manager: 169 new translations added (190 → 359 keys)
- core/content-type-builder: 62 new translations added (226 → 288 keys)
- core/upload: new nl.json with 220 translations
- core/email: 43 translations added (was empty)
- core/content-releases: new nl.json with 104 translations
- core/review-workflows: new nl.json with 15 translations
- plugins/users-permissions: 39 new translations added (42 → 81 keys)
- plugins/i18n: new nl.json with 84 translations
- plugins/cloud: new nl.json with 19 translations

Also standardizes existing translations to use informal "je/jouw"
consistently (was mixed "u/uw" and "je/jouw"), matching Strapi's
informal, developer-friendly tone of voice.
2026-04-20 10:29:25 +01:00
Michał Kleszczyński 62023de80d chore: update Polish language translations (#23762) 2026-04-08 15:29:18 +02:00
Adrien L 9ef7aa5f21 fix: es translations (#25655)
Co-authored-by: Iñigo Zulueta <eggamer131@gmail.com>
2026-03-05 16:03:00 +01:00
Schero D. c4cea991dd feat(email-nodemailer): upgrade to Nodemailer v8 with advanced email features and Admin UI capabilities (#25392)
* feat(email-nodemailer): improve provider with new features and tests

- Remove lodash dependency, use native destructuring
- Add verify() method for SMTP configuration testing
- Add isIdle() method for connection pool status
- Add close() method for graceful shutdown
- Add unit tests (11 tests)
- Expand documentation with OAuth2, DKIM, pooling, calendar events
- Fix package description from "Strapi 3" to "Strapi"

* feat(email): add connection verification support in admin UI

- Add verify endpoint to test SMTP connection without sending email
- Add EmailProvider interface with optional verify, isIdle, close methods
- Add "Test connection" button in Email Settings when provider supports it
- Show connection status badge (Connected/Error) after verification
- Add translations for new UI elements

* feat(email): add RFC-compliant email address parsing utilities

- Add parseEmailAddress() supporting RFC 5322, 2047, 6531
- Add formatEmailAddress() with automatic encoding
- Parse sender name and email separately in Settings UI
- Support Base64/Quoted-Printable encoded names (RFC 2047)
- Support comments in parentheses (RFC 5322)
- Support quoted strings with special characters
- Add comprehensive test suite (40+ tests)
- Export utilities from @strapi/provider-email-nodemailer/utils

* feat(email-nodemailer): add custom headers support and upgrade to nodemailer v7

- Add explicit `headers` field to SendOptions interface, allowing
  custom SMTP headers to be passed in send() calls. This enables
  use cases with specialized SMTP servers that require custom headers
  (e.g. X-Priority, X-Mailer, business-specific headers).
- Upgrade nodemailer from 6.10.1 to 7.0.13 (includes security fix
  for stack overflow DoS in address parser, DNS cache leak fix,
  REQUIRETLS support, and increased data URI size limit).
- Upgrade @types/nodemailer from 6.4.7 to 7.0.9.

Closes #23190
Closes #24949

* feat(email-nodemailer): add advanced email features

Add typed support for advanced Nodemailer features that no other
headless CMS currently offers:

- priority: Set email priority (high/normal/low) via X-Priority header
- dsn: Delivery Status Notifications for bounce/success tracking
- icalEvent: Calendar event invitations (meeting requests)
- list: RFC 2369 List-* headers (enables one-click unsubscribe
  in Gmail/Outlook for newsletters)
- envelope: Custom SMTP envelope for bounce handling
- amp: AMP4Email content for interactive emails

All features are opt-in and fully backward-compatible. Transport-level
features (DKIM, connection pooling, rate limiting, OAuth2, proxy)
are already supported through providerOptions pass-through.

* docs(email-nodemailer): comprehensive README with all features documented

- Add feature overview table at the top
- Document all new send() options: list (unsubscribe), dsn, envelope, amp
- Add examples for newsletters, bounce handling, AMP4Email, DSN
- Document transport-level features: rate limiting, proxy, requireTLS
- Update send options table with all supported fields

* feat(email-nodemailer): add per-message OAuth2 authentication support

Enable sending emails on behalf of different users through a single
OAuth2-configured transporter. Each send() call can include user-
specific auth credentials (user, refreshToken, accessToken), allowing
multi-user email sending without creating separate transporters.

Useful for applications where admins or team members need to send
emails from their own accounts via a shared OAuth2 client.

* feat(email): add provider capabilities to Email Settings UI

- Extend EmailProvider interface with optional getCapabilities()
- Add ProviderCapabilities type to shared types
- Implement getCapabilities() in Nodemailer provider (transport, auth, features)
- Extend getSettings controller to return capabilities and isIdle
- Add Capabilities section in Admin UI showing SMTP server, encryption,
  authentication, pool status, and feature badges (DKIM, pool, rate limiting,
  OAuth2, requireTLS)
- Add translations for en and de
- Disable import/no-unresolved for email admin (match sibling packages)

* fix(email): show Connected/Error badge next to Test connection button

* chore: update yarn.lock after rebase on develop

* security(email-nodemailer): upgrade to nodemailer 8.0.1 and harden provider

- Upgrade nodemailer from 7.0.13 to 8.0.1 (improved socket cleanup,
  DNS fallback hardening, TLS error handling, standardized error codes)
- Upgrade @types/nodemailer from 7.0.9 to 7.0.10
- Remove dangerous ...rest spread that allowed arbitrary property
  injection into sendMail options (only explicitly allowlisted fields
  are now forwarded)
- Remove auth.user from getCapabilities() and ProviderCapabilities
  type to prevent credential/username leakage via admin API
- Simplify admin UI auth display to show only auth type, not username
- Replace (message as any) casts with (message as Record<string, unknown>)
- Add comprehensive security tests: no-rest-spread injection test,
  credential leak prevention test, per-field forwarding tests

* fix(email): restore auth.user in capabilities for admin visibility

Keep the SMTP username visible in getCapabilities() and the admin
Settings UI so administrators can verify which account is configured.

* feat(email-nodemailer): expose all nodemailer message options

Forward every nodemailer SendMailOptions field through the provider:
- sender, inReplyTo, references (threading & on-behalf-of)
- alternatives, watchHtml (content variants)
- messageId, date, xMailer (metadata control)
- textEncoding, encoding, normalizeHeaderKey (encoding)
- dkim per-message, attachDataUrls (signing & embedding)
- disableUrlAccess, disableFileAccess (security flags)
- raw (pre-built MIME passthrough)
- proxy detection in getCapabilities()

All fields are explicitly allowlisted - no rest-spread.

* docs(email-nodemailer): update README with all message options

Add documentation for newly supported fields: sender, inReplyTo,
references, alternatives, watchHtml, messageId, date, xMailer,
textEncoding, encoding, dkim per-message, disableUrlAccess,
disableFileAccess, raw MIME, attachDataUrls. Expand field table
with categories and add code examples for threading, on-behalf-of,
per-message DKIM, alternative content, and raw MIME passthrough.

* feat(email-nodemailer): add RFC 5321 email normalization and expand RFC coverage

- Add normalizeEmail() that lowercases email addresses per RFC 5321
  section 2.4 (domain is case-insensitive, local part treated as
  case-insensitive in practice by all major providers)
- parseEmailAddress() now returns normalized lowercase emails
- formatEmailAddress() now normalizes email before formatting
- Export normalizeEmail from utils
- Expand RFC standards table: add RFC 5321, 2369, 3461, 6376, 6532
- Add normalization examples to README
- Add 10 new tests for email normalization

* fix(email-nodemailer): fix 7 bugs in provider and email utilities

- Fix extractComments: unmatched ')' no longer causes negative depth
- Fix parseMultipleEmailAddresses: replace broken prevChar escape tracking with boolean flag
- Fix encodeRfc2047Base64: split long names into <=75 char chunks per RFC 2047
- Fix isValidEmail: reject consecutive/leading/trailing dots in local part
- Fix isValidEmail: enforce RFC 5321 length limits (local<=64, domain<=255, total<=320)
- Fix send(): replace || with ?? for text/html fallback (empty string is a valid value)
- Fix send(): replace || with ?? for from/replyTo fallback (empty string is a valid value)

* style(email-nodemailer): fix prettier formatting in tests and README

---------

Co-authored-by: Bassel Kanso <basselkanso82@gmail.com>
2026-02-25 15:16:56 +02:00
Lukas Eipert 3d9d4b0209 feat: update german translations for various components (#24143) 2026-01-21 11:58:39 +01:00
Maksim Zhukau 83cb416993 feat(i18n): add Russian translations for all admin components (#24077) 2025-12-13 11:53:27 +01:00
HichamELBSI 18948ab6b4 chore: update DS version to stable 2025-11-19 10:20:19 +01:00
HichamELBSI 7a90cbc400 fix: input types 2025-10-21 11:17:37 +02:00
Ivan Malaniak 9a7418f343 enhancement: add missing Ukrainian translations for various plugins and components (#22150)
Co-authored-by: Bassel Kanso <basselkanso82@gmail.com>
2025-02-26 19:46:18 +02:00
Alexandre Bodin 92055a7fb1 chore: use rollup
chore: fetch template only if name matches name convention

chore: linting

chore: fix tests

chore: fix npm scripts

test: try to fix test
2025-01-23 16:28:23 +01:00
Madhuri Sandbhor 9192781fb6 chore: bump DS rc-7 (#20860)
* chore: design system and icons bumped, grid item style adjusted

* fix: type error fixed

* fix: upload and users-permission tests fixed

* fix: tests fixed

* fix: add to dynamic zone button style updated

* fix: styling issues fixed for DZ component button and color picker

* fix: snapshot updated

* fix: fieldset border width removed, popover menu icon color updated

* fix: wysiwyg expand collapse button styles

* fix: ds deps bumped

* fix: editorlayout wrapper style fixed, panels actions style fixed

* fix: more button icon centered, man nav icons size fixed

* fix: help button style fixed

* fix: email settings button fixed
2024-07-31 14:22:27 +02:00
Josh 11011e9804 chore: integrate beta.5 of the design-system (#20431)
* chore: refactor admin

* chore: refactor content-manager

* chore: refactor plugins

* chore: refactor content-releases

* chore: refactor CTB

* chore: refactor i18n

* chore: refactor user-permissions

* chore: refactor upload plugin

* chore: update deps

* chore: fix ci

* chore: design fixes

* chore: update import

Co-Authored-By: Simone <startae14@gmail.com>

* fix: guided home tour check color

* chore: update snapshots

* chore: update to beta.6

* chore: update import

Co-authored-by: Simone <startae14@gmail.com>

* chore: more fixes

* chore: fix import syntax

Co-authored-by: Simone <startae14@gmail.com>

* chore: fixes

* fix(upload): snapshot

---------

Co-authored-by: Simone <startae14@gmail.com>
Co-authored-by: Jamie Howard <jamie.howard@strapi.io>
2024-06-10 14:50:34 +01:00
Josh b7c62568a8 chore!: update styled-components to 6 & update DS to 2.0.0-beta.3 (#20260)
* chore: update styled-components to 6

* chore: update admin

* chore: update CM

* chore: update ctb

* chore: update other plugin packages

* chore: update content-releases

* chore: update user-permissions

* chore: update upload

* chore: update fields to be dot notation

* chore: update tests

* chore: update yarn.lock

* chore: update snapshots

* chore: update deps

* chore: update snapshots

* fix: left menu

* test: add label prop to NavLink test

* chore: PR tweaks
2024-05-07 14:01:26 +01:00
Madhuri Sandbhor 63d70071de chore: moved cms components from DS to admin (#20242)
* chore: move all CMS components from DS to admin

* fix: eslint config

---------

Co-authored-by: Josh <37798644+joshuaellis@users.noreply.github.com>
2024-05-06 09:29:44 +01:00
Josh 5d000fb33c chore: upgrade to DS 2.0.0-beta.2 (#20151) 2024-04-25 16:17:23 +01:00
Christian 8af582bab7 chore(admin): remove react-helmet (#19923)
* chore: remove react-helmet

* chore: lint fixes

---------

Co-authored-by: Josh <37798644+joshuaellis@users.noreply.github.com>
2024-03-27 10:02:40 +00:00
Simone c46976a9da chore(helper-plugin)!: remove prefixPluginTranslations (#19845) 2024-03-19 16:33:46 +00:00
Simone e9eabddd69 chore(helper-plugin)!: move getFetchClient and useFetchClient (#19840)
* chore(helper-plugin)!: move useFetchClient and getFetchClient to the admin

* chore(helper-plugin)!: fix prettier errors

* chore(helper-plugin)!: remove useless functions
2024-03-19 15:37:20 +00:00
Josh b17a180f13 chore!(helper-plugin): remove useLockScroll / useClipboard / useFocusWhenNavigate / useQuery / useFocusInputField (#19835)
* chore!: remove useLockScroll & useClipboard

* chore!: remove useFocusWhenNavigate

* chore!: remove useQuery

* chore!: remove useFocusInputField

* chore!: move useQueryParams

* chore: fix tests

* chore: update copy

Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>

* chore: pretty

---------

Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>
2024-03-19 09:56:07 +00:00
Josh 95674865d9 chore(helper-plugin)!: move Notifications & AppInfo to admin (#19831)
* chore(helper-plugin)!: move Notifications to admin

* chore(helper-plugin)!: move AppInfo to admin
2024-03-18 21:07:24 +00:00
Simone 96e943ca89 chore(helper-plugin)!: remove getYupInnerErrors (#19825) 2024-03-18 20:44:44 +00:00
Josh 23d1b3801a chore(helper-plugin)!: remove auto-reload blockers (#19828) 2024-03-18 19:09:41 +00:00
Simone 1cb89ea8d0 chore!: remove translatedErrors from the helper-plugin (#19814)
* chore: move translatedErrors into the admin

* chore: fix prettier errors
2024-03-18 13:36:43 +00:00
Josh cbe7d7a488 chore(helper-plugin)!: remove page decorators (#19662)
* chore(helper-plugin): remove page decorators

* chore: fixes
2024-03-05 14:53:55 +00:00
Josh 7134d545db chore(helper-plugin)!: remove some components (#19640)
* chore!: move ContentBox

* chore!: remove status

* chore!: remove the icons

* chore!: remove SettingsPageTitle

* chore!: remove InjectionZone

* chore!: remove NotAllowedInput

* fix(user-permissions): unit test for advanced settings

* chore!: remove ReactSelect

* chore!: remove NoMedia

* chore!: remove NoContent
2024-03-05 08:50:41 +00:00
Josh 93eda17d2a chore(helper-plugin)!: remove form (#19612)
* chore!: remove form

* chore: re-introduce form error focusing

* chore: remove usage of Formik in auth

* chore: fix test suite
2024-02-29 14:18:21 +00:00
Josh cc1043c512 feat: update to react-router-dom@6 (#19184) 2024-01-15 11:13:36 +00:00
Josh eb7b88426d fix(pack-up): ensure we pass the tsconfig file name, not a path to it (#18875)
* fix(pack-up): ensure we pass the tsconfig file name, not a path to it

fix(admin): annotate return type on createBuildContext

fix(admin): ensure shared is a the base folder not importing from server

chore(pack-up): PRINT MOREEEE

fix(ctb): export required type

chore: refactor tsconfigs

* chore: pr amends
2023-11-23 09:16:25 +00:00
Josh a549feb253 chore: pretty codebase (#18835) 2023-11-17 14:48:05 +00:00
Josh 116339ad86 refactor: admin build pipeline (#18539)
* chore(admin): refactor admin develop/build pipeline

chore: remove `webpackChunkName` comments

chore: reuse admin tsconfig where possible

chore: add .strapi to gitignore

chore(admin): pack-up

feat(admin): inject commands into strapi from admin for building

feat(admin): move watch command to admin

chore: keep backward compat API available

Update packages/core/admin/_internal/cli/index.ts

docs(admin): document the build & develop process and pipeline

test(admin): fix StrapiApp tests

chore: fix build

* Update skipped_tests.yml

* test(e2e): fix e2e setup

feat: add dependency installation

fix: mjs webpack resolution

* chore: fix server exports

* fix: typescript project type generation

* fix: development watch mode

* fix: connect to hot middleware – anywhere

* Update packages/core/admin/_internal/node/core/monorepo.ts

Co-authored-by: Marc Roig <marc12info@gmail.com>

* fix(admin): theme toggle type export

* chore: fixes

* chore: pr amends

Co-Authored-By: Ben Irvin <ben@innerdvations.com>

---------

Co-authored-by: Marc Roig <marc12info@gmail.com>
Co-authored-by: Ben Irvin <ben@innerdvations.com>
2023-10-30 11:36:16 +00:00
Josh 846bad5941 refactor(strapi): plugin:build now uses pack-up underneath (#18453)
* refactor(strapi): plugin:build now uses pack-up underneath

* chore(email): use tsconfig in bundles for packup

* chore: fix ts check
2023-10-16 16:22:15 +01:00
Jamie Howard a9552a70bf [Email] Migrate to typescript (#18136)
Co-authored-by: Josh <37798644+joshuaellis@users.noreply.github.com>
2023-10-12 17:10:45 +01:00
Gustav Hansen 6f1d9a15dd Revert "Fix: Use sync over async components in admin panel APIs" 2023-08-29 09:24:29 +02:00
Gustav Hansen 4b69d56dbc Fix: Use React.lazy over async component imports for plugins 2023-08-23 12:37:28 +02:00
Gustav Hansen a3604a0848 Chore: Add react-query as dependency 2023-08-15 09:01:56 +02:00
Gustav Hansen 877d1af4c4 Chore: Refactor email plugin settings page 2023-08-15 09:01:56 +02:00
Josh d301b8a7ad chore: update DS to 1.8.1 2023-07-03 15:14:38 +01:00
Ben Irvin c8e128d11c Merge branch 'main' into chore/upgrade-jest-to-29.5 2023-06-26 16:31:04 +02:00
Ben Irvin 23e86fd063 fix some tests 2023-06-26 16:26:39 +02:00
Gustav Hansen 528b451257 Chore: Move plugin permissions into constants 2023-06-20 14:18:34 +02:00
Gustav Hansen dca5778d8e Chore: Apply eslint import sorting fix 2023-06-12 21:34:07 +02:00
Josh 8357aab46e chore: fix tests (#16937)
Co-authored-by: Marc-Roig <marc12info@gmail.com>
2023-06-07 11:43:09 +01:00
Convly 106cfafca4 Merge branch 'main' into releases/4.11.0 2023-06-07 11:31:42 +02:00
Josh 38fb966605 chore: upgrade ds to 1.8.0 (#16931) 2023-06-06 15:13:17 +01:00
Gustav Hansen d4ff351347 Chore: Update snapshot tests 2023-06-02 15:36:18 +02:00
Gustav Hansen 41885fdd3d Merge branch 'main' into chore/react18 2023-06-01 12:50:17 +02:00
Josh 19106faaea chore: update snapshots and tests 2023-05-30 13:12:07 +02:00
Gustav Hansen 94e4147c4d Chore: Update snapshot tests 2023-05-26 12:50:45 +02:00