Sync with upstream Ghost v6.30.0#65
Open
madewithlove-machine-user wants to merge 579 commits intomainfrom
Open
Sync with upstream Ghost v6.30.0#65madewithlove-machine-user wants to merge 579 commits intomainfrom
madewithlove-machine-user wants to merge 579 commits intomainfrom
Conversation
…#27053) ref https://linear.app/ghost/issue/BER-3484 Scaffolds the Portal gift page behind the `giftSubscriptions` labs flag. When the flag is disabled, both hash links and `data-portal` attributes are blocked and the URL is cleaned up
ref BER-3495 Browser password managers were detecting the filter input as a login field and showing autofill suggestions. Added autoComplete="off" and vendor-specific ignore attributes (1Password, LastPass, browser heuristics) to prevent this.
closes https://linear.app/ghost/issue/NY-1187 This change should have no user impact.
no refs. - The thousands indicator was missing in the actions menu on the Ember member list screen when a filter was applied.
Context: the previous jq payload used shell string interpolation to embed the changelog, which collapsed multi-line release notes into a single line. Switching to --rawfile lets jq read the file directly, preserving all newline characters in the JSON payload.
no ref - Removed `usePerTestIsolation()` from 4 single-test files where it was a no-op (per-file isolation is identical when there's only 1 test): `private-site`, `staff-invites`, `newsletter-send`, `virtual-window` - Merged `posts.test.ts` (1 test) and `post-settings.test.ts` (1 test) into `publishing.test.ts` — same feature surface and setup, eliminates 2 Ghost instance spinups in CI - Consolidated 3 post preview modal tests into 1 flow test that exercises all dismiss methods (close button, ESC from header, ESC from iframe) in sequence No coverage removed. Net result: 2 fewer test files, 2 fewer tests, 2 fewer Ghost instances per CI run.
…ost#27064) no ref ## Summary **forEach collapse:** - `force-upgrade.test.ts`: Two `NAV_ITEMS.forEach()` loops were generating 14 per-test-isolated tests, each spinning up its own Ghost instance to assert the billing iframe is visible. Collapsed into 2 flow tests that iterate nav items within a single instance each. Eliminates ~11 Ghost instance spinups per CI run. - `navigation.test.ts`: `NAV_ITEMS.forEach()` generating 7 tests collapsed into 1 flow test that iterates all items in sequence. **ISO removal:** - `filter-actions.test.ts`: Removed `usePerTestIsolation()` — both tests create their own fixture data and operate on independent label operations with no shared state conflicts. **No coverage removed.** Every assertion is preserved, just grouped into fewer tests with fewer Ghost instances. **Net impact:** ~19 fewer `test()` calls, ~13 fewer Ghost instance spinups per CI run. ## Test plan - [ ] CI e2e tests pass on all 8 shards
ref https://linear.app/ghost/issue/BER-3484 Implemented the gift page content behind the `giftSubscriptions` labs flag: site header, purchaser email input, monthly/yearly toggle, paid tier cards with pricing and benefits, and a `Purchase gift` button
The tier filter dropdown only matched on tier name, making it hard to find tiers when the display name differs from the slug. Including the slug as a detail field lets users search by either value.
no ref - build the public app bundles for E2E once in a dedicated job - build the final E2E Docker image once from the production Ghost image plus those bundles - have each E2E shard load the prebuilt image and skip rebuilding app assets and the overlay image ## Why Each shard currently runs `yarn workspace @tryghost/e2e build:apps` and `build:docker` during `prepare-ci-e2e-job.sh`, which duplicates the same work eight times.
closes https://linear.app/ghost/issue/NY-1138/add-automated-email-design-settings-api-endpoint ## Summary - Added a singleton automated email design Admin API subresource at `GET` and `PUT /automated_emails/design` for reading and editing the shared automated email design settings - The endpoint resolves the shared default design setting by its slug (`default-automated-email`) rather than requiring clients to know the ID - Reuses `email_design_setting` permissions (admin/owner only) and prevents slug modification - Keeps `email_design_settings` as an internal persistence detail instead of exposing a generic table-shaped API - Moved `DEFAULT_EMAIL_DESIGN_SETTING_SLUG` constant to the shared `constants.js` module to avoid duplication ## Advantages over a more generic `email-design-settings` BREAD resource - For welcome emails customization, we only really need read and edit of the default row. Creating a full BREAD resource is more code to maintain and support, some of which isn't necessary for our current implementation. - Better decoupling between our DB schema and the frontend. The frontend doesn't need to know or care about the `email_design_settings` table, it only cares about "editing design settings for welcome emails". Ultimately this means more flexibility in changing the schema in the future without breaking the API - Simpler implementation on both the backend and frontend ## Test plan - [x] E2E tests covering read, edit, slug rejection, field validation, and role-based permissions (editor, author, contributor denied) --------- Co-authored-by: Troy Ciesco <tmciesco@gmail.com>
ref https://linear.app/ghost/issue/BER-3313 Cutover from Ghost-Release — releases now run from this repo
ref https://linear.app/ghost/issue/BER-3313 Ghost 5.x has reached end of life. Removed the IS_FIVE flag, 5.x from IS_DEVELOPMENT, and 5.x-specific package publishing logic (version check and ghost-5x npm tag). Push triggers remain generic ('v[0-9]+.*', '[0-9]+.x') so CI tests still run if someone pushes to 5.x — packages just won't be published.
ref https://linear.app/ghost/issue/BER-3484 After completing a Stripe gift checkout, Portal detects if the purchase was successful and displays a modal with the shareable redemption link
The docker-container BuildKit driver runs in an isolated container that cannot see locally loaded images, causing fork PR builds to fail. This switches to the docker driver when using artifact transfer and skips the registry cache-from when push is disabled, since the registry is inaccessible in that context.
ref https://linear.app/ghost/issue/BER-3445 Extracted a composable MultiSelectCombobox component from Shade's existing filter internals, enabling custom item rendering, headers, and footers via slots. Migrated the label filter from a standalone LabelPicker to compose over MultiSelectCombobox, bringing inline label create/edit/delete into the standard filter combobox. Added E2E coverage for both label and offer multiselect filter workflows.
ref https://linear.app/ghost/issue/DES-1325/split-root-exports - This change introduces clear, layered @tryghost/shade entrypoints (tokens, primitives, components, patterns, app, utils) so consumers import from explicit boundaries instead of a monolithic root barrel. We’re doing this to reduce API drift and accidental coupling, enable staged migration with soft deprecations, and give engineers/agents stronger guardrails for consistent reuse and long-term maintainability.
…7015) no issue Uses `yarn setup` instead of separate commands, and builds sqlite3 native bindings and `parse-email-address` so e2e tests can run without prompting agents to perform additional steps.
ref https://linear.app/ghost/issue/NY-1199/ - removed `target="_blank"`
no issue - `@tryghost/request` uses v13.0.0 but Ghost's direct usage of `got` was on an earlier v11.x - updated dependency to match versions and modified all call sites to account for breaking changes in options shape
no issue - bump `ghost/core`'s explicit `handlebars` dependency from `4.7.8` to `4.7.9` - update the `split` helper and its unit test to use Ghost's frontend Handlebars runtime consistently when multiple `handlebars` copies are present ## Why Ghost core frontend helpers rely on `SafeString` constructor identity. If one helper creates `SafeString` values from a different `handlebars` module instance than another helper checks with `instanceof`, those values stop matching even though they look identical. Using the shared frontend Handlebars runtime keeps helper behavior consistent across dependency layouts.
ref TryGhost@353552f ref TryGhost#27084 We recently added some tests which generate new snapshots, but forgot to commit them. This fixes that. TryGhost#27084 prevents this from happening again. All I did was run `cd ghost/core && yarn test:e2e`. I don't really know what this snapshot is about.
closes https://linear.app/ghost/issue/NY-1201 We aren't using this endpoint today, and its existence makes a future change more difficult. Let's remove it.
ref TryGhost@60a8165 This is a fix to the above commit. The `schedulerUrl` was used incorrect - it was feeding the scheduler's URL to the scheduler, rather than the `apiUrl`; in effect, it should be sending the destination. This skips the scheduled publishing e2e tests which will be resolved in a follow-up commit.
TryGhost#27070) closes https://linear.app/ghost/issue/NY-1165/wiring-wire-up-the-customization-modal-to-the-api-for-persistence ## Summary - Wired the welcome email customization modal to the `automated_emails/design/` API so settings persist - Added proper save UX with dirty tracking, loading states, error toasts, and a retry flow - Replaced `window.confirm` with an `AlertDialog` for unsaved changes - Normalized semantic color values (`light`, `transparent`, `accent`) to hex for the color picker --------- Co-authored-by: Troy Ciesco <tmciesco@gmail.com>
no ref
We effectively had code like this:
```js
router.del = router.delete;
// ...
router.del('/route', handler);
```
This causes type errors and will make our future TypeScript migration
slightly harder. Let's just use `router.delete`.
no refs ## Summary - Added `compose.dev.sqlite.yaml` Docker Compose override that disables the MySQL container and configures Ghost to use SQLite - Added `yarn dev:sqlite` script to `package.json` for running the dev environment with SQLite instead of MySQL - Mounts the SQLite database directory to the host for easy access - Mostly this is useful when testing migrations on sqlite
ref TryGhost@f4eb79e ref TryGhost/renovate-config@3a32889 Ghost's Renovate automerge has effectively been broken since Nov 1 2025. The last clear Renovate self-merge after the long run of regular automerge activity was PR TryGhost#25309 on Nov 1 2025. Since then, Renovate has continued opening and revisiting PRs, but it has not been merging them itself. Our investigation found that automerge was working frequently through late September and early October 2025. The clearest config inflection point was Oct 15 2025, when Ghost added platformAutomerge=false, pinned the automerge schedule to Etc/UTC, and restricted automerge to weekends and Monday morning. This would explain a slowdown, but not the complete stop. Ghost was already carrying a local rebaseWhen=never override before that change, which is not a recommended Renovate setting because it prevents Renovate from rebasing. But it does not explain the change by itself. The likely problem is the combination: Renovate is now responsible for merging PRs itself, but is still told not to rebase them when they fall behind main. Recent Mend logs show that failure mode repeatedly. Existing PRs are revisited, Renovate logs rebaseWhen=never so skipping branch update check, and branches finish as no-work without progressing to merge. That suggests the longstanding rebaseWhen=never override became actively harmful once Ghost switched to manual Renovate automerge on a narrow schedule. Removing the local override is the smallest targeted change to test that hypothesis. It preserves Ghost's current schedule and platformAutomerge=false behaviour while restoring the shared preset's intended rebaseWhen=automerging support for automergeable PRs.
) This PR contains the following updates: | Package | Update | Change | |---|---|---| | stripe/stripe-cli | digest | `a7a01c0` → `aa500a8` | --- ### Configuration 📅 **Schedule**: (in timezone Etc/UTC) - Branch creation - Only on Sunday and Saturday (`* * * * 0,6`) - Between 12:00 AM and 12:59 PM, only on Monday (`* 0-12 * * 1`) - Between 09:00 PM and 11:59 PM, Monday through Friday (`* 21-23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Tuesday through Saturday (`* 0-4 * * 2-6`) - Automerge - Only on Sunday and Saturday (`* * * * 0,6`) - Between 12:00 AM and 12:59 PM, only on Monday (`* 0-12 * * 1`) - Between 10:00 PM and 11:59 PM, Monday through Friday (`* 22-23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Tuesday through Saturday (`* 0-4 * * 2-6`) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/TryGhost/Ghost). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMTAuMiIsInVwZGF0ZWRJblZlciI6IjQzLjExMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [lodash-es](https://lodash.com/custom-builds) ([source](https://redirect.github.com/lodash/lodash)) | [`4.17.23` → `4.18.1`](https://renovatebot.com/diffs/npm/lodash-es/4.17.23/4.18.1) |  |  | ### GitHub Vulnerability Alerts #### [CVE-2026-2950](https://redirect.github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh) ### Impact Lodash versions 4.17.23 and earlier are vulnerable to prototype pollution in the `_.unset` and `_.omit` functions. The fix for [CVE-2025-13465](https://redirect.github.com/lodash/lodash/security/advisories/GHSA-xxjr-mmjv-4gpg) only guards against string key members, so an attacker can bypass the check by passing array-wrapped path segments. This allows deletion of properties from built-in prototypes such as `Object.prototype`, `Number.prototype`, and `String.prototype`. The issue permits deletion of prototype properties but does not allow overwriting their original behavior. ### Patches This issue is patched in 4.18.0. ### Workarounds None. Upgrade to the patched version. #### [CVE-2026-4800](https://redirect.github.com/lodash/lodash/security/advisories/GHSA-r5fr-rjxr-66jc) ### Impact The fix for [CVE-2021-23337](https://redirect.github.com/advisories/GHSA-35jh-r3h4-6jhm) added validation for the `variable` option in `_.template` but did not apply the same validation to `options.imports` key names. Both paths flow into the same `Function()` constructor sink. When an application passes untrusted input as `options.imports` key names, an attacker can inject default-parameter expressions that execute arbitrary code at template compilation time. Additionally, `_.template` uses `assignInWith` to merge imports, which enumerates inherited properties via `for..in`. If `Object.prototype` has been polluted by any other vector, the polluted keys are copied into the imports object and passed to `Function()`. ### Patches Users should upgrade to version 4.18.0. The fix applies two changes: 1. Validate `importsKeys` against the existing `reForbiddenIdentifierChars` regex (same check already used for the `variable` option) 2. Replace `assignInWith` with `assignWith` when merging imports, so only own properties are enumerated ### Workarounds Do not pass untrusted input as key names in `options.imports`. Only use developer-controlled, static key names. --- ### Release Notes <details> <summary>lodash/lodash (lodash-es)</summary> ### [`v4.18.1`](https://redirect.github.com/lodash/lodash/releases/tag/4.18.1) [Compare Source](https://redirect.github.com/lodash/lodash/compare/4.18.0...4.18.1) #### Bugs Fixes a `ReferenceError` issue in `lodash` `lodash-es` `lodash-amd` and `lodash.template` when using the `template` and `fromPairs` functions from the modular builds. See [#&TryGhost#8203;6167 (comment)](https://redirect.github.com/lodash/lodash/issues/6167#issuecomment-4165269769) These defects were related to how lodash distributions are built from the main branch using <https://github.com/lodash-archive/lodash-cli>. When internal dependencies change inside lodash functions, equivalent updates need to be made to a mapping in the lodash-cli. (hey, it was ahead of its time once upon a time!). We know this, but we missed it in the last release. It's the kind of thing that passes in CI, but fails bc the build is not the same thing you tested. There is no diff on main for this, but you can see the diffs for each of the npm packages on their respective branches: `lodash`: <lodash/lodash@4.18.0-npm...4.18.1-npm> `lodash-es`: <lodash/lodash@4.18.0-es...4.18.1-es> `lodash-amd`: <lodash/lodash@4.18.0-amd...4.18.1-amd> `lodash.template`<lodash/lodash@4.18.0-npm-packages...4.18.1-npm-packages> ### [`v4.18.0`](https://redirect.github.com/lodash/lodash/releases/tag/4.18.0) [Compare Source](https://redirect.github.com/lodash/lodash/compare/4.17.23...4.18.0) #### v4.18.0 **Full Changelog**: <lodash/lodash@4.17.23...4.18.0> ##### Security **`_.unset` / `_.omit`**: Fixed prototype pollution via `constructor`/`prototype` path traversal ([GHSA-f23m-r3pf-42rh](https://redirect.github.com/lodash/lodash/security/advisories/GHSA-f23m-r3pf-42rh), [fe8d32e](https://redirect.github.com/lodash/lodash/commit/fe8d32eda854377349a4f922ab7655c8e5df9a0b)). Previously, array-wrapped path segments and primitive roots could bypass the existing guards, allowing deletion of properties from built-in prototypes. Now `constructor` and `prototype` are blocked unconditionally as non-terminal path keys, matching `baseSet`. Calls that previously returned `true` and deleted the property now return `false` and leave the target untouched. **`_.template`**: Fixed code injection via `imports` keys ([GHSA-r5fr-rjxr-66jc](https://redirect.github.com/lodash/lodash/security/advisories/GHSA-r5fr-rjxr-66jc), CVE-2026-4800, [879aaa9](https://redirect.github.com/lodash/lodash/commit/879aaa93132d78c2f8d20c60279da9f8b21576d6)). Fixes an incomplete patch for CVE-2021-23337. The `variable` option was validated against `reForbiddenIdentifierChars` but `importsKeys` was left unguarded, allowing code injection via the same `Function()` constructor sink. `imports` keys containing forbidden identifier characters now throw `"Invalid imports option passed into _.template"`. ##### Docs - Add security notice for `_.template` in threat model and API docs ([#&TryGhost#8203;6099](https://redirect.github.com/lodash/lodash/pull/6099)) - Document `lower > upper` behavior in `_.random` ([#&TryGhost#8203;6115](https://redirect.github.com/lodash/lodash/pull/6115)) - Fix quotes in `_.compact` jsdoc ([#&TryGhost#8203;6090](https://redirect.github.com/lodash/lodash/pull/6090)) ##### `lodash.*` modular packages [Diff](https://redirect.github.com/lodash/lodash/pull/6157) We have also regenerated and published a select number of the `lodash.*` modular packages. These modular packages had fallen out of sync significantly from the minor/patch updates to lodash. Specifically, we have brought the following packages up to parity w/ the latest lodash release because they have had CVEs on them in the past: - [lodash.orderby](https://www.npmjs.com/package/lodash.orderby) - [lodash.tonumber](https://www.npmjs.com/package/lodash.tonumber) - [lodash.trim](https://www.npmjs.com/package/lodash.trim) - [lodash.trimend](https://www.npmjs.com/package/lodash.trimend) - [lodash.sortedindexby](https://www.npmjs.com/package/lodash.sortedindexby) - [lodash.zipobjectdeep](https://www.npmjs.com/package/lodash.zipobjectdeep) - [lodash.unset](https://www.npmjs.com/package/lodash.unset) - [lodash.omit](https://www.npmjs.com/package/lodash.omit) - [lodash.template](https://www.npmjs.com/package/lodash.template) </details> --- ### Configuration 📅 **Schedule**: (in timezone Etc/UTC) - Branch creation - "" - Automerge - Only on Sunday and Saturday (`* * * * 0,6`) - Between 12:00 AM and 12:59 PM, only on Monday (`* 0-12 * * 1`) - Between 10:00 PM and 11:59 PM, Monday through Friday (`* 22-23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Tuesday through Saturday (`* 0-4 * * 2-6`) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/TryGhost/Ghost). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMTAuMiIsInVwZGF0ZWRJblZlciI6IjQzLjExMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [iconv-lite](https://redirect.github.com/pillarjs/iconv-lite) | [`0.6.3` → `0.7.2`](https://renovatebot.com/diffs/npm/iconv-lite/0.6.3/0.7.2) |  |  | --- ### Release Notes <details> <summary>pillarjs/iconv-lite (iconv-lite)</summary> ### [`v0.7.2`](https://redirect.github.com/pillarjs/iconv-lite/blob/HEAD/Changelog.md#072) [Compare Source](https://redirect.github.com/pillarjs/iconv-lite/compare/v0.7.1...v0.7.2) ##### 🐞 Bug fixes - Correction of CommonJS exports in TypeScript definitions - by [@&TryGhost#8203;plbstl](https://redirect.github.com/plbstl) in [#&TryGhost#8203;366](https://redirect.github.com/pillarjs/iconv-lite/pull/366) Fixed the TypeScript definitions to correctly represent the CommonJS exports of the library. This resolves issues where consumers using TypeScript would encounter errors due to incorrect type definitions that did not align with the actual module exports. ### [`v0.7.1`](https://redirect.github.com/pillarjs/iconv-lite/blob/HEAD/Changelog.md#071) [Compare Source](https://redirect.github.com/pillarjs/iconv-lite/compare/v0.7.0...v0.7.1) ##### 🚀 Improvements - types: improve type definitions and add missing APIs - by [@&TryGhost#8203;plbstl](https://redirect.github.com/plbstl) and [@&TryGhost#8203;bjohansebas](https://redirect.github.com/bjohansebas) in [#&TryGhost#8203;330](https://redirect.github.com/pillarjs/iconv-lite/pull/330) ### [`v0.7.0`](https://redirect.github.com/pillarjs/iconv-lite/blob/HEAD/Changelog.md#070) [Compare Source](https://redirect.github.com/pillarjs/iconv-lite/compare/v0.6.3...v0.7.0) ##### 🐞 Bug fixes - Handle split surrogate pairs when encoding utf8 - by [@&TryGhost#8203;yosion-p](https://redirect.github.com/yosion-p) and [@&TryGhost#8203;ashtuchkin](https://redirect.github.com/ashtuchkin) in [#&TryGhost#8203;282](https://redirect.github.com/ashtuchkin/iconv-lite/pull/282): Handle a case where streaming utf8 encoder (converting js strings -> buffers) encounters surrogate pairs split between chunks (last character of one chunk is high surrogate and first character of the next chunk is a low surrogate). - Avoid false positives in encodingExists by using objects without a prototype - by [@&TryGhost#8203;bjohansebas](https://redirect.github.com/bjohansebas) in [#&TryGhost#8203;328](https://redirect.github.com/ashtuchkin/iconv-lite/pull/328) The encodingExists method could return incorrect results if the lookup matched properties inherited from the prototype of the object that stores the encodings, such as constructor and others. This change replaces that object with one that has no prototype, ensuring that only explicitly defined valid encodings in the library are considered. In addition, the fix is applied to the internal cache system to avoid the same kind of false positives ##### 🚀 Improvements - Make explicit that decode() method supports Uint8Array input - by [@&TryGhost#8203;jardicc](https://redirect.github.com/jardicc) in [#&TryGhost#8203;271](https://redirect.github.com/ashtuchkin/iconv-lite/pull/271) - Remove compatibility check for StringDecoder.end method - by [@&TryGhost#8203;bjohansebas](https://redirect.github.com/bjohansebas) in [#&TryGhost#8203;331](https://redirect.github.com/ashtuchkin/iconv-lite/pull/331) </details> --- ### Configuration 📅 **Schedule**: (in timezone Etc/UTC) - Branch creation - Only on Sunday and Saturday (`* * * * 0,6`) - Between 12:00 AM and 12:59 PM, only on Monday (`* 0-12 * * 1`) - Between 09:00 PM and 11:59 PM, Monday through Friday (`* 21-23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Tuesday through Saturday (`* 0-4 * * 2-6`) - Automerge - Only on Sunday and Saturday (`* * * * 0,6`) - Between 12:00 AM and 12:59 PM, only on Monday (`* 0-12 * * 1`) - Between 10:00 PM and 11:59 PM, Monday through Friday (`* 22-23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Tuesday through Saturday (`* 0-4 * * 2-6`) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/TryGhost/Ghost). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMTAuMiIsInVwZGF0ZWRJblZlciI6IjQzLjExMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [lucide-react](https://lucide.dev) ([source](https://redirect.github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react)) | [`0.553.0` → `0.577.0`](https://renovatebot.com/diffs/npm/lucide-react/0.553.0/0.577.0) |  |  | --- ### Release Notes <details> <summary>lucide-icons/lucide (lucide-react)</summary> ### [`v0.577.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.577.0): Version 0.577.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.576.0...0.577.0) #### What's Changed - chore(deps): bump rollup from 4.53.3 to 4.59.0 by [@&TryGhost#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in [#&TryGhost#8203;4106](https://redirect.github.com/lucide-icons/lucide/pull/4106) - fix(repo): correctly ignore docs/releaseMetadata via .gitignore by [@&TryGhost#8203;bhavberi](https://redirect.github.com/bhavberi) in [#&TryGhost#8203;4100](https://redirect.github.com/lucide-icons/lucide/pull/4100) - feat(icons): added `ellipse` icon by [@&TryGhost#8203;KISHORE-KUMAR-S](https://redirect.github.com/KISHORE-KUMAR-S) in [#&TryGhost#8203;3749](https://redirect.github.com/lucide-icons/lucide/pull/3749) #### New Contributors - [@&TryGhost#8203;bhavberi](https://redirect.github.com/bhavberi) made their first contribution in [#&TryGhost#8203;4100](https://redirect.github.com/lucide-icons/lucide/pull/4100) - [@&TryGhost#8203;KISHORE-KUMAR-S](https://redirect.github.com/KISHORE-KUMAR-S) made their first contribution in [#&TryGhost#8203;3749](https://redirect.github.com/lucide-icons/lucide/pull/3749) **Full Changelog**: <lucide-icons/lucide@0.576.0...0.577.0> ### [`v0.576.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.576.0): Version 0.576.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.575.0...0.576.0) #### What's Changed - Added zodiac signs by [@&TryGhost#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in [#&TryGhost#8203;712](https://redirect.github.com/lucide-icons/lucide/pull/712) - fix(icons): fixes guideline violations in `package-*` icons. by [@&TryGhost#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in [#&TryGhost#8203;4074](https://redirect.github.com/lucide-icons/lucide/pull/4074) - fix(icons): changed `receipt` icon by [@&TryGhost#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in [#&TryGhost#8203;4075](https://redirect.github.com/lucide-icons/lucide/pull/4075) - fix(icons): updated `cuboid` icon tags and categories by [@&TryGhost#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in [#&TryGhost#8203;4095](https://redirect.github.com/lucide-icons/lucide/pull/4095) - fix(icons): changed `cuboid` icon by [@&TryGhost#8203;jamiemlaw](https://redirect.github.com/jamiemlaw) in [#&TryGhost#8203;4098](https://redirect.github.com/lucide-icons/lucide/pull/4098) - fix(lucide-font, lucide-static): Fixing stable code points by [@&TryGhost#8203;ericfennis](https://redirect.github.com/ericfennis) in [#&TryGhost#8203;3894](https://redirect.github.com/lucide-icons/lucide/pull/3894) - feat(icons): added `fishing-rod` icon by [@&TryGhost#8203;7ender](https://redirect.github.com/7ender) in [#&TryGhost#8203;3839](https://redirect.github.com/lucide-icons/lucide/pull/3839) **Full Changelog**: <lucide-icons/lucide@0.575.0...0.576.0> ### [`v0.575.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.575.0): Version 0.575.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.574.0...0.575.0) #### What's Changed - feat(icons): added `message-square-check` icon by [@&TryGhost#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in [#&TryGhost#8203;4076](https://redirect.github.com/lucide-icons/lucide/pull/4076) - fix(lucide): Fix ESM Module output path in build by [@&TryGhost#8203;ericfennis](https://redirect.github.com/ericfennis) in [#&TryGhost#8203;4084](https://redirect.github.com/lucide-icons/lucide/pull/4084) - feat(icons): added `metronome` icon by [@&TryGhost#8203;edwloef](https://redirect.github.com/edwloef) in [#&TryGhost#8203;4063](https://redirect.github.com/lucide-icons/lucide/pull/4063) - fix(icons): remove execution permission of SVG files by [@&TryGhost#8203;duckafire](https://redirect.github.com/duckafire) in [#&TryGhost#8203;4053](https://redirect.github.com/lucide-icons/lucide/pull/4053) - fix(icons): changed `file-pen-line` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3970](https://redirect.github.com/lucide-icons/lucide/pull/3970) - feat(icons): added `square-arrow-right-exit` and `square-arrow-right-enter` icons by [@&TryGhost#8203;EthanHazel](https://redirect.github.com/EthanHazel) in [#&TryGhost#8203;3958](https://redirect.github.com/lucide-icons/lucide/pull/3958) - fix(icons): renamed `flip-*` to `square-centerline-dashed-*` by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3945](https://redirect.github.com/lucide-icons/lucide/pull/3945) #### New Contributors - [@&TryGhost#8203;edwloef](https://redirect.github.com/edwloef) made their first contribution in [#&TryGhost#8203;4063](https://redirect.github.com/lucide-icons/lucide/pull/4063) - [@&TryGhost#8203;duckafire](https://redirect.github.com/duckafire) made their first contribution in [#&TryGhost#8203;4053](https://redirect.github.com/lucide-icons/lucide/pull/4053) **Full Changelog**: <lucide-icons/lucide@0.573.0...0.575.0> ### [`v0.574.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.574.0): Version 0.574.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.573.0...0.574.0) #### What's Changed - fix(icons): changed `rocking-chair` icon by [@&TryGhost#8203;jamiemlaw](https://redirect.github.com/jamiemlaw) in [#&TryGhost#8203;3445](https://redirect.github.com/lucide-icons/lucide/pull/3445) - fix(icons): flipped `coins` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3158](https://redirect.github.com/lucide-icons/lucide/pull/3158) - feat(icons): added `x-line-top` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;2838](https://redirect.github.com/lucide-icons/lucide/pull/2838) - feat(icons): added `mouse-left` icon by [@&TryGhost#8203;marvfash](https://redirect.github.com/marvfash) in [#&TryGhost#8203;2788](https://redirect.github.com/lucide-icons/lucide/pull/2788) - feat(icons): added `mouse-right` icon by [@&TryGhost#8203;marvfash](https://redirect.github.com/marvfash) in [#&TryGhost#8203;2787](https://redirect.github.com/lucide-icons/lucide/pull/2787) #### New Contributors - [@&TryGhost#8203;marvfash](https://redirect.github.com/marvfash) made their first contribution in [#&TryGhost#8203;2788](https://redirect.github.com/lucide-icons/lucide/pull/2788) **Full Changelog**: <lucide-icons/lucide@0.572.0...0.574.0> ### [`v0.573.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.573.0): Version 0.573.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.572.0...0.573.0) #### What's Changed - fix(icons): changed `rocking-chair` icon by [@&TryGhost#8203;jamiemlaw](https://redirect.github.com/jamiemlaw) in [#&TryGhost#8203;3445](https://redirect.github.com/lucide-icons/lucide/pull/3445) - fix(icons): flipped `coins` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3158](https://redirect.github.com/lucide-icons/lucide/pull/3158) - feat(icons): added `x-line-top` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;2838](https://redirect.github.com/lucide-icons/lucide/pull/2838) - feat(icons): added `mouse-left` icon by [@&TryGhost#8203;marvfash](https://redirect.github.com/marvfash) in [#&TryGhost#8203;2788](https://redirect.github.com/lucide-icons/lucide/pull/2788) - feat(icons): added `mouse-right` icon by [@&TryGhost#8203;marvfash](https://redirect.github.com/marvfash) in [#&TryGhost#8203;2787](https://redirect.github.com/lucide-icons/lucide/pull/2787) #### New Contributors - [@&TryGhost#8203;marvfash](https://redirect.github.com/marvfash) made their first contribution in [#&TryGhost#8203;2788](https://redirect.github.com/lucide-icons/lucide/pull/2788) **Full Changelog**: <lucide-icons/lucide@0.572.0...0.573.0> ### [`v0.572.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.572.0): Version 0.572.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.571.0...0.572.0) #### What's Changed - feat(icons): added `message-circle-check` icon by [@&TryGhost#8203;Shrinks99](https://redirect.github.com/Shrinks99) in [#&TryGhost#8203;3770](https://redirect.github.com/lucide-icons/lucide/pull/3770) #### New Contributors - [@&TryGhost#8203;Shrinks99](https://redirect.github.com/Shrinks99) made their first contribution in [#&TryGhost#8203;3770](https://redirect.github.com/lucide-icons/lucide/pull/3770) **Full Changelog**: <lucide-icons/lucide@0.571.0...0.572.0> ### [`v0.571.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.571.0): Version 0.571.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.570.0...0.571.0) #### What's Changed - fix(icons): rearange `circle`-icons path and circle order by [@&TryGhost#8203;adamlindqvist](https://redirect.github.com/adamlindqvist) in [#&TryGhost#8203;3746](https://redirect.github.com/lucide-icons/lucide/pull/3746) - feat(icons): added `shelving-unit` icon by [@&TryGhost#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in [#&TryGhost#8203;3041](https://redirect.github.com/lucide-icons/lucide/pull/3041) #### New Contributors - [@&TryGhost#8203;adamlindqvist](https://redirect.github.com/adamlindqvist) made their first contribution in [#&TryGhost#8203;3746](https://redirect.github.com/lucide-icons/lucide/pull/3746) **Full Changelog**: <lucide-icons/lucide@0.570.0...0.571.0> ### [`v0.570.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.570.0): Version 0.570.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.569.0...0.570.0) #### What's Changed - feat(icons): added `towel-rack` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3350](https://redirect.github.com/lucide-icons/lucide/pull/3350) **Full Changelog**: <lucide-icons/lucide@0.569.0...0.570.0> ### [`v0.569.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.569.0): Version 0.569.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.568.0...0.569.0) #### What's Changed - fix(icons): changed `clipboard-pen` icon by [@&TryGhost#8203;Spleefies](https://redirect.github.com/Spleefies) in [#&TryGhost#8203;4006](https://redirect.github.com/lucide-icons/lucide/pull/4006) - feat(icons): add `mirror-round` and `mirror-rectangular` by [@&TryGhost#8203;Muhammad-Aqib-Bashir](https://redirect.github.com/Muhammad-Aqib-Bashir) in [#&TryGhost#8203;3832](https://redirect.github.com/lucide-icons/lucide/pull/3832) **Full Changelog**: <lucide-icons/lucide@0.568.0...0.569.0> ### [`v0.568.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.568.0): Version 0.568.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.567.0...0.568.0) #### What's Changed - fix(icons): adjusted `clapperboard` so slash is no longer protruding by [@&TryGhost#8203;torfmuer](https://redirect.github.com/torfmuer) in [#&TryGhost#8203;3764](https://redirect.github.com/lucide-icons/lucide/pull/3764) - feat(icons): Add `git-merge-conflict` icon by [@&TryGhost#8203;timmy471](https://redirect.github.com/timmy471) in [#&TryGhost#8203;3008](https://redirect.github.com/lucide-icons/lucide/pull/3008) #### New Contributors - [@&TryGhost#8203;torfmuer](https://redirect.github.com/torfmuer) made their first contribution in [#&TryGhost#8203;3764](https://redirect.github.com/lucide-icons/lucide/pull/3764) - [@&TryGhost#8203;timmy471](https://redirect.github.com/timmy471) made their first contribution in [#&TryGhost#8203;3008](https://redirect.github.com/lucide-icons/lucide/pull/3008) **Full Changelog**: <lucide-icons/lucide@0.567.0...0.568.0> ### [`v0.567.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.567.0): Version 0.567.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.566.0...0.567.0) #### What's Changed - chore(tags): added tags to `info` by [@&TryGhost#8203;jamiemlaw](https://redirect.github.com/jamiemlaw) in [#&TryGhost#8203;4047](https://redirect.github.com/lucide-icons/lucide/pull/4047) - fix(icons): changed `gift` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3977](https://redirect.github.com/lucide-icons/lucide/pull/3977) - feat(icons): added `line-dot-right-horizontal` icon by [@&TryGhost#8203;nathan-de-pachtere](https://redirect.github.com/nathan-de-pachtere) in [#&TryGhost#8203;3742](https://redirect.github.com/lucide-icons/lucide/pull/3742) **Full Changelog**: <lucide-icons/lucide@0.566.0...0.567.0> ### [`v0.566.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.566.0): Version 0.566.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.565.0...0.566.0) #### What's Changed - fix(icons): changed `forklift` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;4069](https://redirect.github.com/lucide-icons/lucide/pull/4069) - fix(icons): changed `rocket` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;4067](https://redirect.github.com/lucide-icons/lucide/pull/4067) - feat(icons): added `globe-off` icon by [@&TryGhost#8203;TimNekk](https://redirect.github.com/TimNekk) in [#&TryGhost#8203;4051](https://redirect.github.com/lucide-icons/lucide/pull/4051) #### New Contributors - [@&TryGhost#8203;TimNekk](https://redirect.github.com/TimNekk) made their first contribution in [#&TryGhost#8203;4051](https://redirect.github.com/lucide-icons/lucide/pull/4051) **Full Changelog**: <lucide-icons/lucide@0.565.0...0.566.0> ### [`v0.565.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.565.0): Version 0.565.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.564.0...0.565.0) #### What's Changed - feat(icons): add `lens-concave` and `lens-convex` by [@&TryGhost#8203;Muhammad-Aqib-Bashir](https://redirect.github.com/Muhammad-Aqib-Bashir) in [#&TryGhost#8203;3831](https://redirect.github.com/lucide-icons/lucide/pull/3831) **Full Changelog**: <lucide-icons/lucide@0.564.0...0.565.0> ### [`v0.564.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.564.0): Version 0.564.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.563.0...0.564.0) #### What's Changed - chore(docs): Improve SEO icon detail pages by [@&TryGhost#8203;ericfennis](https://redirect.github.com/ericfennis) in [#&TryGhost#8203;4040](https://redirect.github.com/lucide-icons/lucide/pull/4040) - feat(icons): added `database-search` icon by [@&TryGhost#8203;Spleefies](https://redirect.github.com/Spleefies) in [#&TryGhost#8203;4003](https://redirect.github.com/lucide-icons/lucide/pull/4003) - fix(icons): changed `user-lock` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3971](https://redirect.github.com/lucide-icons/lucide/pull/3971) - fix(icons): changed `bug-off` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3972](https://redirect.github.com/lucide-icons/lucide/pull/3972) - fix(icons): changed `bell-dot` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3973](https://redirect.github.com/lucide-icons/lucide/pull/3973) - fix(icons): changed `bandage` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3967](https://redirect.github.com/lucide-icons/lucide/pull/3967) - fix(icons): changed `hard-drive` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3622](https://redirect.github.com/lucide-icons/lucide/pull/3622) - fix(icons): changed `git-branch` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3938](https://redirect.github.com/lucide-icons/lucide/pull/3938) - fix(icons): changed `file-cog` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3965](https://redirect.github.com/lucide-icons/lucide/pull/3965) - fix(icons): changed `cloud-alert` and `cloud-check` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3976](https://redirect.github.com/lucide-icons/lucide/pull/3976) - feat(icons): adds `user-key` and `user-round-key`, updates other `-key` icons to match by [@&TryGhost#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in [#&TryGhost#8203;4044](https://redirect.github.com/lucide-icons/lucide/pull/4044) #### New Contributors - [@&TryGhost#8203;Spleefies](https://redirect.github.com/Spleefies) made their first contribution in [#&TryGhost#8203;4003](https://redirect.github.com/lucide-icons/lucide/pull/4003) **Full Changelog**: <lucide-icons/lucide@0.563.1...0.564.0> ### [`v0.563.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.563.0): Version 0.563.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.562.0...0.563.0) #### What's Changed - chore(dev): Enable ligatures in font build configuration by [@&TryGhost#8203;dcxo](https://redirect.github.com/dcxo) in [#&TryGhost#8203;3876](https://redirect.github.com/lucide-icons/lucide/pull/3876) - chore(repo): add Android to brand stopwords by [@&TryGhost#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in [#&TryGhost#8203;3895](https://redirect.github.com/lucide-icons/lucide/pull/3895) - fix(site): add missing titles and a title template by [@&TryGhost#8203;taimar](https://redirect.github.com/taimar) in [#&TryGhost#8203;3920](https://redirect.github.com/lucide-icons/lucide/pull/3920) - fix(site): unify and improve the styling of input fields by [@&TryGhost#8203;taimar](https://redirect.github.com/taimar) in [#&TryGhost#8203;3919](https://redirect.github.com/lucide-icons/lucide/pull/3919) - fix(icons): changed `star-off` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3952](https://redirect.github.com/lucide-icons/lucide/pull/3952) - fix(icons): changed `tickets-plane` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3928](https://redirect.github.com/lucide-icons/lucide/pull/3928) - fix(icons): changed `monitor-off` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3962](https://redirect.github.com/lucide-icons/lucide/pull/3962) - fix(icons): changed `lasso` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3961](https://redirect.github.com/lucide-icons/lucide/pull/3961) - fix(icons): changed `cloud-off` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3942](https://redirect.github.com/lucide-icons/lucide/pull/3942) - docs(site): added lucide-web-components third-party package by [@&TryGhost#8203;midesweb](https://redirect.github.com/midesweb) in [#&TryGhost#8203;3948](https://redirect.github.com/lucide-icons/lucide/pull/3948) - chore(deps-dev): bump preact from 10.27.2 to 10.27.3 by [@&TryGhost#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in [#&TryGhost#8203;3955](https://redirect.github.com/lucide-icons/lucide/pull/3955) - feat(icon): add globe-x icon with metadata by [@&TryGhost#8203;Muhammad-Aqib-Bashir](https://redirect.github.com/Muhammad-Aqib-Bashir) in [#&TryGhost#8203;3827](https://redirect.github.com/lucide-icons/lucide/pull/3827) - fix(icons): changed `waypoints` icon by [@&TryGhost#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in [#&TryGhost#8203;3990](https://redirect.github.com/lucide-icons/lucide/pull/3990) - fix(icons): changed `bookmark` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;2906](https://redirect.github.com/lucide-icons/lucide/pull/2906) - fix(icons): changed `message-square-dashed` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3959](https://redirect.github.com/lucide-icons/lucide/pull/3959) - fix(icons): changed `cloudy` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3966](https://redirect.github.com/lucide-icons/lucide/pull/3966) - fix(github-actions): resolved spelling mistake in gh issue close command by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;4000](https://redirect.github.com/lucide-icons/lucide/pull/4000) - Update LICENSE by [@&TryGhost#8203;alxgraphy](https://redirect.github.com/alxgraphy) in [#&TryGhost#8203;4009](https://redirect.github.com/lucide-icons/lucide/pull/4009) - feat(packages): Added aria-hidden fallback for decorative icons to all packages by [@&TryGhost#8203;ericfennis](https://redirect.github.com/ericfennis) in [#&TryGhost#8203;3604](https://redirect.github.com/lucide-icons/lucide/pull/3604) - chore(deps): bump lodash from 4.17.21 to 4.17.23 by [@&TryGhost#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in [#&TryGhost#8203;4020](https://redirect.github.com/lucide-icons/lucide/pull/4020) - chore(deps): bump lodash-es from 4.17.21 to 4.17.23 by [@&TryGhost#8203;dependabot](https://redirect.github.com/dependabot)\[bot] in [#&TryGhost#8203;4019](https://redirect.github.com/lucide-icons/lucide/pull/4019) - Suggest anchoring to a specific lucide version when using a cdn by [@&TryGhost#8203;drago1520](https://redirect.github.com/drago1520) in [#&TryGhost#8203;3727](https://redirect.github.com/lucide-icons/lucide/pull/3727) - feat(docs): upgraded backers block by [@&TryGhost#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in [#&TryGhost#8203;4014](https://redirect.github.com/lucide-icons/lucide/pull/4014) - fix(site): hide native search input clear "X" icon by [@&TryGhost#8203;epifaniofrancisco](https://redirect.github.com/epifaniofrancisco) in [#&TryGhost#8203;3933](https://redirect.github.com/lucide-icons/lucide/pull/3933) - feat(icons): added `printer-x` icon by [@&TryGhost#8203;lt25106](https://redirect.github.com/lt25106) in [#&TryGhost#8203;3941](https://redirect.github.com/lucide-icons/lucide/pull/3941) #### New Contributors - [@&TryGhost#8203;dcxo](https://redirect.github.com/dcxo) made their first contribution in [#&TryGhost#8203;3876](https://redirect.github.com/lucide-icons/lucide/pull/3876) - [@&TryGhost#8203;midesweb](https://redirect.github.com/midesweb) made their first contribution in [#&TryGhost#8203;3948](https://redirect.github.com/lucide-icons/lucide/pull/3948) - [@&TryGhost#8203;alxgraphy](https://redirect.github.com/alxgraphy) made their first contribution in [#&TryGhost#8203;4009](https://redirect.github.com/lucide-icons/lucide/pull/4009) - [@&TryGhost#8203;drago1520](https://redirect.github.com/drago1520) made their first contribution in [#&TryGhost#8203;3727](https://redirect.github.com/lucide-icons/lucide/pull/3727) - [@&TryGhost#8203;lt25106](https://redirect.github.com/lt25106) made their first contribution in [#&TryGhost#8203;3941](https://redirect.github.com/lucide-icons/lucide/pull/3941) **Full Changelog**: <lucide-icons/lucide@0.562.0...0.563.0> ### [`v0.562.0`](https://redirect.github.com/lucide-icons/lucide/compare/0.561.0...0.562.0) [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.561.0...0.562.0) ### [`v0.561.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.561.0): Version 0.561.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.560.0...0.561.0) #### What's Changed - fix(site): Small adjustments color picker and add clear button search bar by [@&TryGhost#8203;ericfennis](https://redirect.github.com/ericfennis) in [#&TryGhost#8203;3851](https://redirect.github.com/lucide-icons/lucide/pull/3851) - feat(icons): added `stone` icon by [@&TryGhost#8203;Alportan](https://redirect.github.com/Alportan) in [#&TryGhost#8203;3850](https://redirect.github.com/lucide-icons/lucide/pull/3850) **Full Changelog**: <lucide-icons/lucide@0.560.0...0.561.0> ### [`v0.560.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.560.0): Version 0.560.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.559.0...0.560.0) #### What's Changed - feat(icons): added `cannabis-off` icon by [@&TryGhost#8203;NickVeles](https://redirect.github.com/NickVeles) in [#&TryGhost#8203;3748](https://redirect.github.com/lucide-icons/lucide/pull/3748) #### New Contributors - [@&TryGhost#8203;NickVeles](https://redirect.github.com/NickVeles) made their first contribution in [#&TryGhost#8203;3748](https://redirect.github.com/lucide-icons/lucide/pull/3748) **Full Changelog**: <lucide-icons/lucide@0.559.0...0.560.0> ### [`v0.559.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.559.0): Version 0.559.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.558.0...0.559.0) #### What's Changed - feat(icons): added `fishing-hook` icon by [@&TryGhost#8203;7ender](https://redirect.github.com/7ender) in [#&TryGhost#8203;3837](https://redirect.github.com/lucide-icons/lucide/pull/3837) #### New Contributors - [@&TryGhost#8203;7ender](https://redirect.github.com/7ender) made their first contribution in [#&TryGhost#8203;3837](https://redirect.github.com/lucide-icons/lucide/pull/3837) **Full Changelog**: <lucide-icons/lucide@0.558.0...0.559.0> ### [`v0.558.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.558.0): Version 0.558.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.557.0...0.558.0) #### What's Changed - feat(icons): added `hd` icon by [@&TryGhost#8203;jamiemlaw](https://redirect.github.com/jamiemlaw) in [#&TryGhost#8203;2958](https://redirect.github.com/lucide-icons/lucide/pull/2958) **Full Changelog**: <lucide-icons/lucide@0.557.0...0.558.0> ### [`v0.557.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.557.0): Version 0.557.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.556.0...0.557.0) #### What's Changed - fix(github/workflows/ci): fixes linting issues by [@&TryGhost#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in [#&TryGhost#8203;3858](https://redirect.github.com/lucide-icons/lucide/pull/3858) - fix(icons): changed `memory-stick` icon by [@&TryGhost#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in [#&TryGhost#8203;3017](https://redirect.github.com/lucide-icons/lucide/pull/3017) - fix(icons): changed `microchip` icon by [@&TryGhost#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in [#&TryGhost#8203;3018](https://redirect.github.com/lucide-icons/lucide/pull/3018) - chore(repo): Update Node version and overal cleanup by [@&TryGhost#8203;ericfennis](https://redirect.github.com/ericfennis) in [#&TryGhost#8203;3861](https://redirect.github.com/lucide-icons/lucide/pull/3861) - fix(icons): changed `paint-bucket` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3865](https://redirect.github.com/lucide-icons/lucide/pull/3865) - fix(icons): changed `brush-cleaning` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3863](https://redirect.github.com/lucide-icons/lucide/pull/3863) - fix(icons): Swap `thumbs-up` `thumbs-down` paths to fix fill issue by [@&TryGhost#8203;theianjones](https://redirect.github.com/theianjones) in [#&TryGhost#8203;3873](https://redirect.github.com/lucide-icons/lucide/pull/3873) - fix(icons): changed `tickets` icon by [@&TryGhost#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in [#&TryGhost#8203;3859](https://redirect.github.com/lucide-icons/lucide/pull/3859) - feat(icons): added `layers-plus` icon by [@&TryGhost#8203;juanisidoro](https://redirect.github.com/juanisidoro) in [#&TryGhost#8203;3367](https://redirect.github.com/lucide-icons/lucide/pull/3367) - docs(dev): Fix code sample for vanilla JS by [@&TryGhost#8203;wavebeem](https://redirect.github.com/wavebeem) in [#&TryGhost#8203;3836](https://redirect.github.com/lucide-icons/lucide/pull/3836) - feat(icons): add `search-error` icon by [@&TryGhost#8203;Veatec22](https://redirect.github.com/Veatec22) in [#&TryGhost#8203;3292](https://redirect.github.com/lucide-icons/lucide/pull/3292) - feat(icons): Add `cloud-sync` and `cloud-backup` by [@&TryGhost#8203;ericfennis](https://redirect.github.com/ericfennis) in [#&TryGhost#8203;3466](https://redirect.github.com/lucide-icons/lucide/pull/3466) - feat(icons): added `circle-pile` icon by [@&TryGhost#8203;nathan-de-pachtere](https://redirect.github.com/nathan-de-pachtere) in [#&TryGhost#8203;3681](https://redirect.github.com/lucide-icons/lucide/pull/3681) - feat(icons): added `balloon` icon by [@&TryGhost#8203;peteruithoven](https://redirect.github.com/peteruithoven) in [#&TryGhost#8203;2519](https://redirect.github.com/lucide-icons/lucide/pull/2519) #### New Contributors - [@&TryGhost#8203;theianjones](https://redirect.github.com/theianjones) made their first contribution in [#&TryGhost#8203;3873](https://redirect.github.com/lucide-icons/lucide/pull/3873) - [@&TryGhost#8203;juanisidoro](https://redirect.github.com/juanisidoro) made their first contribution in [#&TryGhost#8203;3367](https://redirect.github.com/lucide-icons/lucide/pull/3367) - [@&TryGhost#8203;wavebeem](https://redirect.github.com/wavebeem) made their first contribution in [#&TryGhost#8203;3836](https://redirect.github.com/lucide-icons/lucide/pull/3836) - [@&TryGhost#8203;Veatec22](https://redirect.github.com/Veatec22) made their first contribution in [#&TryGhost#8203;3292](https://redirect.github.com/lucide-icons/lucide/pull/3292) **Full Changelog**: <lucide-icons/lucide@0.556.0...0.557.0> ### [`v0.556.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.556.0): Version 0.556.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.555.0...0.556.0) #### What's Changed - feat(icon): add `book-search` icon ([#&TryGhost#8203;3573](https://redirect.github.com/lucide-icons/lucide/issues/3573)) by [@&TryGhost#8203;Muhammad-Aqib-Bashir](https://redirect.github.com/Muhammad-Aqib-Bashir) in [#&TryGhost#8203;3580](https://redirect.github.com/lucide-icons/lucide/pull/3580) - chore(dependencies): Update dependencies by [@&TryGhost#8203;ericfennis](https://redirect.github.com/ericfennis) in [#&TryGhost#8203;3809](https://redirect.github.com/lucide-icons/lucide/pull/3809) - ci(workflows): Enable trusted publishing in release by [@&TryGhost#8203;ericfennis](https://redirect.github.com/ericfennis) in [#&TryGhost#8203;3808](https://redirect.github.com/lucide-icons/lucide/pull/3808) - feat(icons): added `scooter` icon by [@&TryGhost#8203;Ahmed-Dghaies](https://redirect.github.com/Ahmed-Dghaies) in [#&TryGhost#8203;3818](https://redirect.github.com/lucide-icons/lucide/pull/3818) - fix(icons): changed `plug` icon by [@&TryGhost#8203;jamiemlaw](https://redirect.github.com/jamiemlaw) in [#&TryGhost#8203;3841](https://redirect.github.com/lucide-icons/lucide/pull/3841) - fix(icons): changed `thermometer-sun` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3773](https://redirect.github.com/lucide-icons/lucide/pull/3773) - fix(icons): Shrink square-scissors icons to match optical volume by [@&TryGhost#8203;eden881](https://redirect.github.com/eden881) in [#&TryGhost#8203;3603](https://redirect.github.com/lucide-icons/lucide/pull/3603) - feat(preview-comment): add symmetry preview by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3823](https://redirect.github.com/lucide-icons/lucide/pull/3823) - feat(icons): added `estimated-weight` icon by [@&TryGhost#8203;nathan-de-pachtere](https://redirect.github.com/nathan-de-pachtere) in [#&TryGhost#8203;3822](https://redirect.github.com/lucide-icons/lucide/pull/3822) - fix(icons): changed `flashlight` icons by [@&TryGhost#8203;jamiemlaw](https://redirect.github.com/jamiemlaw) in [#&TryGhost#8203;3843](https://redirect.github.com/lucide-icons/lucide/pull/3843) - fix(icons): changed `bubbles` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3774](https://redirect.github.com/lucide-icons/lucide/pull/3774) - feat(site): add brand stop words to icon search by [@&TryGhost#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in [#&TryGhost#8203;3824](https://redirect.github.com/lucide-icons/lucide/pull/3824) - feat(icons): added `van` icon by [@&TryGhost#8203;Ahmed-Dghaies](https://redirect.github.com/Ahmed-Dghaies) in [#&TryGhost#8203;3821](https://redirect.github.com/lucide-icons/lucide/pull/3821) #### New Contributors - [@&TryGhost#8203;Muhammad-Aqib-Bashir](https://redirect.github.com/Muhammad-Aqib-Bashir) made their first contribution in [#&TryGhost#8203;3580](https://redirect.github.com/lucide-icons/lucide/pull/3580) - [@&TryGhost#8203;Ahmed-Dghaies](https://redirect.github.com/Ahmed-Dghaies) made their first contribution in [#&TryGhost#8203;3818](https://redirect.github.com/lucide-icons/lucide/pull/3818) - [@&TryGhost#8203;eden881](https://redirect.github.com/eden881) made their first contribution in [#&TryGhost#8203;3603](https://redirect.github.com/lucide-icons/lucide/pull/3603) - [@&TryGhost#8203;nathan-de-pachtere](https://redirect.github.com/nathan-de-pachtere) made their first contribution in [#&TryGhost#8203;3822](https://redirect.github.com/lucide-icons/lucide/pull/3822) **Full Changelog**: <lucide-icons/lucide@0.555.0...0.556.0> ### [`v0.555.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.555.0): Version 0.555.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.554.0...0.555.0) #### What's Changed - fix(icons): changed `calendars` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3795](https://redirect.github.com/lucide-icons/lucide/pull/3795) - fix(docs): correct package name and description for Flutter and Lustre package ([#&TryGhost#8203;3701](https://redirect.github.com/lucide-icons/lucide/issues/3701)) by [@&TryGhost#8203;epifaniofrancisco](https://redirect.github.com/epifaniofrancisco) in [#&TryGhost#8203;3703](https://redirect.github.com/lucide-icons/lucide/pull/3703) - feat(angular): Angular V21 Support by [@&TryGhost#8203;JeevanMahesha](https://redirect.github.com/JeevanMahesha) in [#&TryGhost#8203;3807](https://redirect.github.com/lucide-icons/lucide/pull/3807) - chore(metadata): Adjust navigation category by [@&TryGhost#8203;ericfennis](https://redirect.github.com/ericfennis) in [#&TryGhost#8203;3461](https://redirect.github.com/lucide-icons/lucide/pull/3461) - feat(icons): Add `waves-arrow-up` and `waves-arrow-down` by [@&TryGhost#8203;ericfennis](https://redirect.github.com/ericfennis) in [#&TryGhost#8203;3463](https://redirect.github.com/lucide-icons/lucide/pull/3463) - fix(icons): changed `scale` icon by [@&TryGhost#8203;jamiemlaw](https://redirect.github.com/jamiemlaw) in [#&TryGhost#8203;3800](https://redirect.github.com/lucide-icons/lucide/pull/3800) - feat(icons): added `form` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3558](https://redirect.github.com/lucide-icons/lucide/pull/3558) **Full Changelog**: <lucide-icons/lucide@0.554.0...0.555.0> ### [`v0.554.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.554.0): Version 0.554.0 [Compare Source](https://redirect.github.com/lucide-icons/lucide/compare/0.553.0...0.554.0) #### What's Changed - fix(icons): Rename fingerprint icon to fingerprint-pattern by [@&TryGhost#8203;ericfennis](https://redirect.github.com/ericfennis) in [#&TryGhost#8203;3767](https://redirect.github.com/lucide-icons/lucide/pull/3767) - feat(docs): added lucide-rails third-party package by [@&TryGhost#8203;theiereman](https://redirect.github.com/theiereman) in [#&TryGhost#8203;3769](https://redirect.github.com/lucide-icons/lucide/pull/3769) - fix(icons): changed `ampersand` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3771](https://redirect.github.com/lucide-icons/lucide/pull/3771) - fix(icons): changed `folder-git-2` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3790](https://redirect.github.com/lucide-icons/lucide/pull/3790) - fix(icons): update `anchor` icon by [@&TryGhost#8203;jamiemlaw](https://redirect.github.com/jamiemlaw) in [#&TryGhost#8203;2523](https://redirect.github.com/lucide-icons/lucide/pull/2523) - feat(icons): added `calendars` icon by [@&TryGhost#8203;jguddas](https://redirect.github.com/jguddas) in [#&TryGhost#8203;3788](https://redirect.github.com/lucide-icons/lucide/pull/3788) #### Breaking change For `lucide-react` and `lucide-solid`, imports for `Fingerprint` icon are changed to `FingerprintPattern`. ##### Lucide React ```diff - import { Fingerprint } from "lucide-react"; + import { FingerprintPattern } from "lucide-react"; ``` ##### Lucide Solid ```diff - import { Fingerprint } from "lucide/solid"; + import { FingerprintPattern } from "lucide/solid"; // Or - import Fingerprint from "lucide/solid/icons/fingerprint"; + import FingerprintPattern from "lucide/solid/icons/fingerprint-pattern"; ``` #### New Contributors - [@&TryGhost#8203;theiereman](https://redirect.github.com/theiereman) made their first contribution in [#&TryGhost#8203;3769](https://redirect.github.com/lucide-icons/lucide/pull/3769) **Full Changelog**: <lucide-icons/lucide@0.553.0...0.554.0> </details> --- ### Configuration 📅 **Schedule**: (in timezone Etc/UTC) - Branch creation - Only on Sunday and Saturday (`* * * * 0,6`) - Between 12:00 AM and 12:59 PM, only on Monday (`* 0-12 * * 1`) - Between 09:00 PM and 11:59 PM, Monday through Friday (`* 21-23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Tuesday through Saturday (`* 0-4 * * 2-6`) - Automerge - Only on Sunday and Saturday (`* * * * 0,6`) - Between 12:00 AM and 12:59 PM, only on Monday (`* 0-12 * * 1`) - Between 10:00 PM and 11:59 PM, Monday through Friday (`* 22-23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Tuesday through Saturday (`* 0-4 * * 2-6`) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/TryGhost/Ghost). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMTAuMiIsInVwZGF0ZWRJblZlciI6IjQzLjExMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Type | Update | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---|---|---| | [@types/color](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/color) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/color)) | dependencies | pin | [`^4.2.1` → `4.2.1`](https://renovatebot.com/diffs/npm/@types%2fcolor/4.2.1/4.2.1) |  |  | | [@types/express](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/express) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/express)) | devDependencies | pin | [`^4.17.25` → `4.17.25`](https://renovatebot.com/diffs/npm/@types%2fexpress/4.17.25/4.17.25) |  |  | | [@types/jsdom](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/jsdom) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jsdom)) | devDependencies | pin | [`^28.0.1` → `28.0.1`](https://renovatebot.com/diffs/npm/@types%2fjsdom/28.0.1/28.0.1) |  |  | | [@types/lodash](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/lodash) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash)) | devDependencies | pin | [`^4.17.24` → `4.17.24`](https://renovatebot.com/diffs/npm/@types%2flodash/4.17.24/4.17.24) |  |  | | [@types/mocha](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/mocha) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/mocha)) | devDependencies | pin | [`^10.0.10` → `10.0.10`](https://renovatebot.com/diffs/npm/@types%2fmocha/10.0.10/10.0.10) |  |  | | [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | pin | [`^25.6.0` → `25.6.0`](https://renovatebot.com/diffs/npm/@types%2fnode/25.6.0/25.6.0) |  |  | | [@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | minor | [`22.18.10` → `22.19.17`](https://renovatebot.com/diffs/npm/@types%2fnode/22.18.10/22.19.17) |  |  | | [@types/node-fetch](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node-fetch) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node-fetch)) | devDependencies | pin | [`^2.6.13` → `2.6.13`](https://renovatebot.com/diffs/npm/@types%2fnode-fetch/2.6.13/2.6.13) |  |  | | [@types/on-headers](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/on-headers) ([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/on-headers)) | devDependencies | pin | [`^1.0.4` → `1.0.4`](https://renovatebot.com/diffs/npm/@types%2fon-headers/1.0.4/1.0.4) |  |  |⚠️ Renovate's pin functionality [does not currently](https://redirect.github.com/renovatebot/renovate/issues/40288) wire in the release age for a package, so the Minimum Release Age checks can apply. You will need to manually validate the Minimum Release Age for these package(s). Add the preset `:preserveSemverRanges` to your config if you don't want to pin your dependencies. --- ### Configuration 📅 **Schedule**: (in timezone Etc/UTC) - Branch creation - Only on Sunday and Saturday (`* * * * 0,6`) - Between 12:00 AM and 12:59 PM, only on Monday (`* 0-12 * * 1`) - Between 09:00 PM and 11:59 PM, Monday through Friday (`* 21-23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Tuesday through Saturday (`* 0-4 * * 2-6`) - Automerge - Only on Sunday and Saturday (`* * * * 0,6`) - Between 12:00 AM and 12:59 PM, only on Monday (`* 0-12 * * 1`) - Between 10:00 PM and 11:59 PM, Monday through Friday (`* 22-23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Tuesday through Saturday (`* 0-4 * * 2-6`) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/TryGhost/Ghost). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMTAuMiIsInVwZGF0ZWRJblZlciI6IjQzLjExMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [rewire](https://redirect.github.com/jhnns/rewire) | [`8.0.0` → `9.0.1`](https://renovatebot.com/diffs/npm/rewire/8.0.0/9.0.1) |  |  | --- ### Release Notes <details> <summary>jhnns/rewire (rewire)</summary> ### [`v9.0.1`](https://redirect.github.com/jhnns/rewire/blob/HEAD/CHANGELOG.md#901) [Compare Source](https://redirect.github.com/jhnns/rewire/compare/v9.0.0...v9.0.1) - Fix: Use pirates for proper load extensions install/uninstall handling [#&TryGhost#8203;219](https://redirect.github.com/jhnns/rewire/pull/219) ### [`v9.0.0`](https://redirect.github.com/jhnns/rewire/blob/HEAD/CHANGELOG.md#900) [Compare Source](https://redirect.github.com/jhnns/rewire/compare/v8.0.0...v9.0.0) - **Breaking**: Update ESLint runtime dependency to v9 [#&TryGhost#8203;218](https://redirect.github.com/jhnns/rewire/pull/218). This is most likely not a breaking change for rewire users but we can't know for certain. </details> --- ### Configuration 📅 **Schedule**: (in timezone Etc/UTC) - Branch creation - Only on Sunday and Saturday (`* * * * 0,6`) - Between 12:00 AM and 12:59 PM, only on Monday (`* 0-12 * * 1`) - Between 09:00 PM and 11:59 PM, Monday through Friday (`* 21-23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Tuesday through Saturday (`* 0-4 * * 2-6`) - Automerge - Only on Sunday and Saturday (`* * * * 0,6`) - Between 12:00 AM and 12:59 PM, only on Monday (`* 0-12 * * 1`) - Between 10:00 PM and 11:59 PM, Monday through Friday (`* 22-23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Tuesday through Saturday (`* 0-4 * * 2-6`) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/TryGhost/Ghost). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMTAuMiIsInVwZGF0ZWRJblZlciI6IjQzLjExMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
closes https://linear.app/ghost/issue/NY-1189 ref TryGhost#27183 ref TryGhost#27184 This creates a table and model for Welcome Email Automation Runs. Currently unused. This change was originally written by Claude Sonnet 4.6 on Low effort mode against the following prompt, but then was later edited a bit. ``` I'm starting to build a "welcome email automations" feature. See the attached design document below for background. I've already built the `welcome_email_automations` and `welcome_email_automated_emails` tables/models. But now I need to build the `welcome_email_automation_runs` table/model. It should have the following fields: * `welcomeEmailAutomationId: string` (foreign key reference to `welcome_email_automations`) * `memberId: string` (foreign key reference to members) * `nextWelcomeEmailAutomatedEmailId: null | string` (foreign key reference to `welcome_email_automated_emails`. `null` if finished) * `readyAt: null | Date` * `stepStartedAt: null | Date` * `stepAttempts: uint` * `exitReason: null | 'member not found' | 'email send failed' | 'member unsubscribed' | 'member changed status' | 'finished'` This table and model should be dormant. That is, there should be no way to interact with it right now. We'll add all that in the future. There should be no special database indexes (other than what's automatically created on the `id` primary key and the foreign keys). Use red/green TDD to accomplish this task. <design_document> {design document copy-pasted here} </design_document> ```
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [@codemirror/state](https://redirect.github.com/codemirror/state) | devDependencies | pin | [`^6.6.0` → `6.6.0`](https://renovatebot.com/diffs/npm/@codemirror%2fstate/6.6.0/6.6.0) |⚠️ Renovate's pin functionality [does not currently](https://redirect.github.com/renovatebot/renovate/issues/40288) wire in the release age for a package, so the Minimum Release Age checks can apply. You will need to manually validate the Minimum Release Age for these package(s). Add the preset `:preserveSemverRanges` to your config if you don't want to pin your dependencies. --- ### Configuration 📅 **Schedule**: (in timezone Etc/UTC) - Branch creation - Only on Sunday and Saturday (`* * * * 0,6`) - Between 12:00 AM and 12:59 PM, only on Monday (`* 0-12 * * 1`) - Between 09:00 PM and 11:59 PM, Monday through Friday (`* 21-23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Tuesday through Saturday (`* 0-4 * * 2-6`) - Automerge - Only on Sunday and Saturday (`* * * * 0,6`) - Between 12:00 AM and 12:59 PM, only on Monday (`* 0-12 * * 1`) - Between 10:00 PM and 11:59 PM, Monday through Friday (`* 22-23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Tuesday through Saturday (`* 0-4 * * 2-6`) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/TryGhost/Ghost). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMTAuMiIsInVwZGF0ZWRJblZlciI6IjQzLjExMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [@tryghost/mongo-utils](https://redirect.github.com/TryGhost/NQL/tree/main#readme) ([source](https://redirect.github.com/TryGhost/NQL)) | dependencies | pin | [`^0.6.3` → `0.6.3`](https://renovatebot.com/diffs/npm/@tryghost%2fmongo-utils/0.6.3/0.6.3) |⚠️ Renovate's pin functionality [does not currently](https://redirect.github.com/renovatebot/renovate/issues/40288) wire in the release age for a package, so the Minimum Release Age checks can apply. You will need to manually validate the Minimum Release Age for these package(s). Add the preset `:preserveSemverRanges` to your config if you don't want to pin your dependencies. --- ### Configuration 📅 **Schedule**: (in timezone Etc/UTC) - Branch creation - Only on Sunday and Saturday (`* * * * 0,6`) - Between 12:00 AM and 12:59 PM, only on Monday (`* 0-12 * * 1`) - Between 09:00 PM and 11:59 PM, Monday through Friday (`* 21-23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Tuesday through Saturday (`* 0-4 * * 2-6`) - Automerge - Only on Sunday and Saturday (`* * * * 0,6`) - Between 12:00 AM and 12:59 PM, only on Monday (`* 0-12 * * 1`) - Between 10:00 PM and 11:59 PM, Monday through Friday (`* 22-23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Tuesday through Saturday (`* 0-4 * * 2-6`) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/TryGhost/Ghost). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMTAuMiIsInVwZGF0ZWRJblZlciI6IjQzLjExMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
ref f186b6a This fixes two bugs when booting a fresh development container: - Fixes `Cannot find module '/home/ghost/.github/scripts/enforce-package-manager.js'` by copying all of `.github/scripts`, not just the `install-deps.sh` script - `ghost/i18n` required `@tryghost/debug` but did not declare it, which meant a fresh container couldn't start
…yGhost#27338) ref https://linear.app/ghost/issue/DES-1341/design-and-branding-ui-issues-on-ios - the edit/delete buttons relied on hover to become visible, leaving them inaccessible on touch devices where hover doesn't exist - added a `[@media(hover:none)]:visible!` variant so the buttons are always shown when the device has no hover capability
ref https://linear.app/ghost/issue/ONC-1601/ - Updated Koenig packages - Includes fix for long snippet names causing horizontal scroll and difficult to use delete buttons in card menus - Updated `ember-svg-jar` to 2.7.1 - The Koenig package update pulled in cheerio 1.0+ which dropped the `.default` export that ember-svg-jar 2.4.9 relied on, breaking the admin build. v2.7.1 uses the correct cheerio API.
ref https://linear.app/ghost/issue/BER-3481 Added gift member status filter in admin to allow filtering members who have a gift subscription
TryGhost#27369) ref https://linear.app/ghost/issue/BER-3523 We decided to remove the email toggle for when a member redeems a gift and instead use the existing `new paid members` toggle
…st#27307) ref https://linear.app/ghost/issue/BER-3523 Added email notifications toggle for gift subscription events
…dal (TryGhost#27331) refs 71d7802 ## Summary This fixes a bug in the welcome email customization flow where pressing `Escape` on the unsaved changes confirmation could close both the confirmation dialog and the parent customize modal. The issue was caused by nesting two independent dialog flows around the same interaction. Once the unsaved changes confirmation was open, `Escape` could still be handled in a way that allowed the parent modal's close path to run again, which made the behavior flaky and caused the customize modal to close when it should have stayed open. The fix moves the unsaved changes confirmation into its own `NiceModal` flow and gives it a single close/resolve path. That keeps the confirmation dialog responsible for deciding whether the user is staying or leaving, and prevents duplicate close handling from the parent modal. As part of that cleanup, the confirmation modal's `description` prop was also tightened to `React.ReactElement` so it matches the `asChild` usage in `AlertDialogDescription` and can't be passed an unsafe node type. ## Behavior - pressing `Escape` with unsaved changes now opens the confirmation dialog - pressing `Escape` again closes only the confirmation dialog and keeps the customize modal open - dismissing nested controls like the color picker or font select with `Escape` still works without bypassing the unsaved changes confirmation ## Testing - `yarn workspace @tryghost/e2e test e2e/tests/admin/settings/member-welcome-emails.test.ts`
The functionality is already live on main behind the labs flag; this change just promotes the flag to GA so welcome emails customization will be enabled by default.
…TryGhost#27367) closes https://linear.app/ghost/issue/BER-3476 ## Summary This PR wires up gift redemption for both logged-in members and anonymous visitors: - logged-in free members can now redeem a gift immediately from Portal - anonymous visitors start from the same gift link, enter their details, receive a magic link, and have the gift redeemed as part of the sign-in/sign-up flow. On success, Ghost marks the gift as redeemed, records the redeemer and redemption timestamps, sets consumes_at, updates the member onto the gifted tier with status: "gift", and returns the user to Portal with a gift-specific success notification. The gift redemption flow remains gated behind the giftSubscriptions labs flag. ## Redemption flows ### 1. Logged-in member flow This is the fast path for an authenticated free member. 1. The member opens a gift redemption link in Portal: `#/portal/gift/redeem/:token`. 2. Portal loads the gift details and shows the gift summary. 3. Because the visitor already has a member session, Portal shows a direct `Redeem gift membership` CTA instead of the sign-up form. 4. Clicking the CTA calls `POST /members/api/gifts/:token/redeem/` (new endpoint, documented in the API section below) 5. Ghost redeems the gift for the current member, updates the member record to the gifted tier, and marks the gift as redeemed. 6. Portal refreshes member session data, routes the user to account home, and shows a success notification. In short: signed-in members redeem immediately in one step, without email confirmation. ### 2. Anonymous visitor flow This is the multi-step path for someone who is not yet signed in. 1. The visitor opens the same gift redemption link in Portal. 2. Portal loads the gift details and shows the gift summary plus a form for name and email. 3. After submission, Portal sends a magic-link request that now includes: - the entered email - the entered name - the `giftToken` - a redirect back to Portal account with gift-redemption state in the URL 4. The visitor receives and clicks the magic link. 5. During magic-link exchange, Ghost loads the existing member or creates a new one. 6. If gift subscriptions are enabled and a `giftToken` is present, Ghost redeems the gift for that member during the same flow. 7. Ghost redirects the visitor back into Portal with `success=true` or `success=false`, while preserving the gift metadata needed for the final notification state. 8. Portal lands on the account page and shows either a gift success or gift failure notification. In short: anonymous visitors authenticate first, and redemption happens as part of completing that sign-in/sign-up step. ## API ### New endpoint `POST /members/api/gifts/:token/redeem/` ### Authentication Requires an authenticated member session cookie. If the request is made without a valid member session, the endpoint returns `401 Unauthorized`. ### Request ```http POST /members/api/gifts/gift-token-123/redeem/ Content-Type: application/json Cookie: members-ssr=... ``` Request body: ```json {} ``` ### Success response `200 OK` ```json { "gifts": [ { "token": "gift-token-123", "cadence": "year", "duration": 1, "currency": "usd", "amount": 5000, "expires_at": "2030-01-01T00:00:00.000Z", "status": "redeemed", "consumes_at": "2031-01-01T00:00:00.000Z", "tier": { "id": "tier_1", "name": "Premium", "description": "Full access membership", "benefits": [ "Bonus newsletter", "Archive access" ] } } ] } ``` ### Error response samples Member already has an active paid/comped subscription: ```json { "errors": [ { "type": "BadRequestError", "message": "You already have an active subscription." } ] } ``` Gift is no longer redeemable: ```json { "errors": [ { "type": "BadRequestError", "message": "This gift has already been redeemed." } ] } ``` Other expected errors from the same endpoint include: - `This gift has already been consumed.` - `This gift has expired.` - `This gift has been refunded.` - `This gift does not exist.` - `Gift subscriptions are not enabled on this site.`
…Ghost#27320) fixes TryGhost#27317 closes https://linear.app/ghost/issue/NY-1221 ## Summary - The CSS refactor in e1fffbb moved shared card styles into a separate partial (`card-styles.hbs`) that gets included before newsletter-specific styles in `styles.hbs`. This changed the source order so that `.post-content a { color: {{linkColor}} }` (line ~555) now appears **after** `.kg-callout-card-accent a { color: #fff }` (from `card-styles.hbs` included at line 26). Since both selectors have the same specificity `(0,1,0,1)`, the later rule wins and overrides the white link color with `{{linkColor}}`, making links invisible on accent-colored callout backgrounds. - Added `!important` to `.kg-callout-card-accent a { color: #fff; }` to preserve white link text regardless of source order, consistent with CTA card link styles in the same file. ## Test plan - [ ] Create a post with a callout card using the **accent** background option - [ ] Add a link inside the callout text - [ ] Preview as email — link text should be white, not the accent/link color - [ ] Verified locally: integration tests pass, email preview confirmed fix <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Low risk, single CSS specificity change in email rendering templates to prevent accent callout link colors being overridden by later link styles. > > **Overview** > Fixes newsletter email rendering where links inside accent-colored callout cards could inherit the global post link color and become hard to read. > > Updates `.kg-callout-card-accent a` in `card-styles.hbs` to set `color: #fff !important;`, ensuring callout links remain white regardless of stylesheet source order. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 20023f2. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
refs https://github.com/TryGhost/Ghost/actions/runs/24363396931/job/71148722202 ## Summary Skip Nx SHA and affected-project setup during tag-triggered CI runs. ## Problem The `v6.29.0` release failed in `job_setup` on the tag-triggered `CI` workflow. After `TryGhost#27297`, `job_setup` started using `nrwl/nx-set-shas` to derive `NX_BASE`, and then passed that value into `paths-filter` and Nx affected-project detection. On a tag push, `github.ref_name` is the tag itself, so `nx-set-shas` tried to resolve workflow history for `v6.29.0` as though it were a branch. That failed, so it fell back to the empty-tree hash (`4b825dc...`). `dorny/paths-filter` then errored because that object is a tree, not a commit. ## Why this fix Tag-triggered release runs do not need Nx base resolution, changed-file detection, or affected-project calculation: - the downstream jobs that use those outputs are already skipped on tags - the release path only needs `job_setup` to succeed so artifact build/publish jobs can proceed Instead of trying to infer a “correct” comparison base for tags, this change skips the tag-incompatible diff logic entirely on tag runs while preserving the existing behavior for PRs and branch pushes. **Changes** - Skip `Set SHAs for Nx Commands` on tag runs - Skip `Determine added packages` on tag runs - Skip `Determine changed packages` on tag runs - Skip `Determine Affected Projects` on tag runs **Result** Branch and PR CI continue to use Nx/affected diffing as before, while tag-triggered releases no longer fail in setup due to an invalid `NX_BASE`.
This reverts commit 60ba212. The `v6.29.0` release failed after creating the tag. This reverts the version in package.json back to `v6.29.0` so that we can release `v6.29.1`
…t#27378) ref https://github.com/TryGhost/Ghost/actions/runs/24369399597/job/71170929638 The CI workflow is failing at the "Prepare docker build context" step on runs on tags because `ghost/core/package/` doesn't exist: ```mv: cannot stat 'ghost/core/package/': No such file or directory``` At this stage in the workflow, `ghost/core/package/` doesn't exist, because it was deleted by the `pack:tarball` script a few steps prior in the same workflow by the `&& rm -rf package` addition to the `pack:tarball` script. Prior to the pnpm migration, the `package` directory wasn't cleaned up at all. This commit returns to that state, so that `ghost/core/package/` should still exist once it gets to the "Prepare docker build context" step.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Syncing fork to upstream release
v6.30.0.