fixes https://github.com/TryGhost/Product/issues/3728
- When importing members from Stripe with an existing offer, that didn't
exist in Ghost, the offer never got linked with the imported
subscription because of a missing return statement.
- Fixes importing offers with duplicate names
- Added E2E tests for creating members from a Stripe Customer ID
fixes https://github.com/TryGhost/Ghost/issues/17715
- `ja` was missing from the list of supported locales
- also fixes some small typos discovered now the language is supported
Co-authored-by: Daniel Lockyer <hi@daniellockyer.com>
closes https://github.com/TryGhost/Arch/issues/76
- The posts test suite was failing when run in isolation. This was due to "collections" labs flag not being turned on, the events were not going through to collections service correctly
fixes https://github.com/TryGhost/Product/issues/3723
This also fixes usage of localhost instead of 127.0.0.1 as a test URL
for playwright. This caused issues for cookies because the member
impersonation navigated to 127.0.0.1 instead of localhost, meaning that
the next page.goto call would go to localhost and lose the cookies.
no issue
- added some more info to the comment
- found the actual issue that needed the admin p0 fix last night.
Updated the comment info block with a link to that issue.
<!-- Leave the line below if you'd like GitHub Copilot to generate a
summary from your commit -->
<!--
copilot:summary
-->
### <samp>🤖 Generated by Copilot at bcec294</samp>
Updated a comment in `members.js` to link to a possible NQL issue. This
helps explain the temporary fix for filtering members by labels with
parentheses.
refs https://ghost.slack.com/archives/CTH5NDJMS/p1692021848890629
- Addresses an NQL / API edge case where standalone filters with
parentheses doesn't get handled correctly within bulk operations such as
member labelling, member unsubscribe and member deletion.
- This is currently only affected by newsletter related filters.
- This adds a regex functions that checks when those filters are used
and removes the parentheses when required.
- Ideally we fix the NQL / API issue in the near future and remove this
regex hack altogether, but taking all things into consideration, this
should mitigate the risk of potential data-loss for Ghost users.
refs https://ghost.slack.com/archives/CTH5NDJMS/p1692021848890629
- Addresses an NQL / API edge case where standalone filters with
parentheses doesn't get handled correctly within bulk operations such as
member labelling, member unsubscribe and member deletion.
- This is currently only affected by newsletter related filters.
- This adds a regex functions that checks when those filters are used
and removes the parentheses when required.
- Ideally we fix the NQL / API issue in the near future and remove this
regex hack altogether, but taking all things into consideration, this
should mitigate the risk of potential data-loss for Ghost users.
closes https://github.com/TryGhost/Product/issues/3719
- adds Sentry reporting for slow saves in the editor to help investigate reports of a similar nature
- uses different messages for lexical vs mobiledoc and successful vs failed saves so we can compare frequency of each in the Sentry UI
- includes `save_time` tag so we can see a breakdown of timings and adjust the threshold if necessary
- includes `post_type` tag which will be useful as we introduce further differences between the features and rendering cycle of posts and pages
- includes `newsletter` and `email_segment` tags to help indicate if slow saves are due to email sending
- includes `save_revision` tag to help indicate if forced revision saves cause slow saves
- includes `convert_to_lexical` tag to help indicate if mobiledoc/lexical conversion is causing slow saves
closes https://github.com/TryGhost/Ghost/issues/17681
- updated `prepareContextResource()` to make sure `show_title_and_feature_image` is always removed from pages
- updated `formatResponse.entries()` to apply the same `@page` local behaviour when it's passed a `data.page` object to account for custom routed pages
- We don't actually utilise the history handling for Explore, as it's not a full screen modal and therefore don't need passing in previous routes before opening the iframe
- Removed usage of `did-insert` livecycle hook and reverted to usage of `contructor` and `willDestroy` instead to add and remove message event listener
no issue
- We were loading the Explore iframe together with all assets in Admin
- This change will avoid that and only start loading and rendering Explore, once it's clicked
refs https://github.com/TryGhost/Ghost/pull/17609
- The tests for content gating started to fail with introduction of the index on `published_at` data in for `posts` table. The reason for the failure was identical `published_at` date set during the fixture insertion, making the returned results change order non-deterministically. The problem is mostly in how the test is set up as it's quite unrealistic to have multiple posts in the system inserted at the same time down to millisecond. Maybe... by some coincidence, but thats not a problem we should care too much about imo.
refs https://github.com/TryGhost/Arch/issues/18
- The prev/next helpers are slow and are causing major performance issues. The helpers are using `posts.published_at` for comparisons extensively, which causes a full table scan - bad for query performance.
- We use published_at in other queries too (like default order for queries fetching all posts), so there might be a slight performance boost across the system with this new index.
refs https://github.com/TryGhost/Arch/issues/5
- Current event-aware cache wrapper has been using a timestamp as a way to create keys in Redis cache and reset them all at once. We are now moving on to the updated Redis adapter that supports "reset()" natively, so there's no need for synthetic resets.
refs https://github.com/TryGhost/Product/issues/3704
- the site icon has sizes defined in CSS and it works great for most
browsers
- but it becomes very large in Outlook and it requires explicit sizes in
the image markup for some reason
fixes https://github.com/TryGhost/Product/issues/3714
The dashboard was showing the total number of subscribers, but not
taking into account members who have disabled emails. This commit fixes
that.
closes https://github.com/TryGhost/Product/issues/3449
- added drop handler to the whole editor pane area (to match previous editor) that uses the external API plugin to pass files through to the editor when dropped
- allows images/files to be dropped outside of the main editor canvas which is especially helpful when creating images in a new post
Previously, the adapter was only built for a redis cluster connection. Meaning
if you tried to use if with a redis that was a single node it would fail as it
tries to find a primary node. In a single node setup there is no primary node,
just the one main node. So, this update tricks the adapter into thinking it has
found a pimary node by returning the whole connection (to the single node) when
the constructor is note a cluster.
closes https://github.com/TryGhost/Product/issues/3661
- until now, Portal was not loaded if members were disabled. With the
introduction of Tips & Donations, signed-off readers can also make
payments, using the Portal link /#/portal/support.
- now, Portal is loaded when Tips & Donations are enabled, even if
Memberships are disabled
- depending on the member signup access, the top bar / trigger button
Portal buttons are hidden as before (signup/subscribe hidden if access is set to none, subscribe hidden if
access is set to invite-only)
- for any other signup / signin Portal links (e.g., added by the theme,
or added via a Post/Page), a new popup informs the reader when
Memberships are disabled: "Memberships unavailable, contact the site
owner for access".
fixes https://github.com/TryGhost/Product/issues/3708
When filtering members by the `Newsletter subscription` parameter, If
the site has a single newsletter, members with disabled emails were
being erroneously returned. This fixes that 👍
no issue
- Added Afrikaans translations for the signup form. This enhances the localisation of Ghost for Afrikaans users.
Co-authored-by: Ronald Langeveld <hi@ronaldlangeveld.com>
refs https://github.com/TryGhost/Product/issues/3687
- Today, in Button, Header, Email CTA cards, Portal links are used as
absolute URLs to the root, e.g. https://mysite.com/#/portal/signin. When
clicking on a Portal link, the reader is redirect to the homepage first,
loosing context of the post.
- With this change, the UX becomes smoother: clicking on a Portal link
keeps the reader in context, and open the Portal link on the same post
e.g., https://mysite.com/POST_URL/#/portal/signin
- Technically, this works by using relative URLs for Portal links.
Relative URLs work out of the box for web, but required changes on the
email side, cf. https://github.com/TryGhost/Ghost/pull/17630
no issue
- Keep an eye on Ghost's changelog (https://ghost.org/changelog/) for
the full feature announcement. 🎉
---
<!-- Leave the line below if you'd like GitHub Copilot to generate a
summary from your commit -->
<!--
copilot:summary
-->
### <samp>🤖 Generated by Copilot at 8367091</samp>
This pull request removes the `headerUpgrade` feature flag and enables
the new header card by default in the editor. It also hides the old
header card from the editor menu unless the `labs.headerV1` setting is
enabled.
refs https://ghost.slack.com/archives/C02G9E68C/p1691403750186279
- we keep seeing strange things from incremental TS builds, and it's
causing random/spurious test failures for developers
- this commit disables that
- also adds cleaning up of TS incremental build artifacts to the
`build:clean` command
- this is the default config which we insert into packages by default
- we've since switched to using a shared config to deduplicate the
config
- this switches a couple of packages over to that config
no issue
- Stripe imposes different minimum charges based on the currency used,
see
https://stripe.com/docs/currencies#minimum-and-maximum-charge-amounts
- Our validation uses double that limit, to take into account
conversions to the main currency in use in the Stripe account
closes https://github.com/TryGhost/Product/issues/3695
- Stripe has minimum charge amounts per currency, see
https://stripe.com/docs/currencies#minimum-and-maximum-charge-amounts
- We double these limits in our validation, to take into account
currency conversions to the main currency used on the Stripe account. If
the publishers enters a suggested amount below the limit, they will see
an error in Admin
- 0 is permitted as default value and corresponds to "no suggested
amount"
no issue
- Removed a leftover signup property from the Koenig lexical config.
---
<!-- Leave the line below if you'd like GitHub Copilot to generate a
summary from your commit -->
<!--
copilot:summary
-->
### <samp>🤖 Generated by Copilot at 0e10cc3</samp>
Removed `signupCard` property from `koenig-lexical-editor` component.
closes https://github.com/TryGhost/Product/issues/3661
- until now, Portal was not loaded if members were disabled. With the
introduction of Tips & Donations, signed-off readers can also make
payments, using the Portal link /#/portal/support.
- now, Portal is loaded when Tips & Donations are enabled, even if
Memberships are disabled
- depending on the member signup access, the "sign in" / "subscribe"
Portal buttons are hidden (both hidden if none, signup hidden if
invite-only)
- for any other signup / signin Portal links (e.g., added by the theme,
or added via a Post/Page), a new popup informs the reader as such when
Memberships are disabled: "Memberships unavailable, contact the site owner for access".
no issue
- This change listens to updated values of the night shift toggle and sends a message to the Explore iframe - if mounted - to ensure the themes are in sync
refs: https://github.com/TryGhost/DevOps/issues/56
The new monobundle package now ignores any package directory if it doesn't contain a package.json. These non-packages are occasionally restored from cache when pulling dependencies.
refs TryGhost/Product#3638
- Added `convert_to_lexical` flag to the posts/pages edit endpoint
- Added 'convertToLexical' feature flag so we can enable/disable this
feature independently from the main lexical beta flag
- Modified admin posts/pages list to point to the lexical editor for
_all_ posts, regardless of mobiledoc vs lexical (if the flag is on)
- Added call to edit endpoint with `convert_to_lexical` in the lexical
editor admin route if the page/post is currently in mobiledoc and the
flag is enabled
fixes https://github.com/TryGhost/Product/issues/3687
After this change, relative URLs in emails will be replaced with
absolute URLs using the post URL. Making relative Portal URLs possible
etc.
Updates the test data generator to fix invalid URL encoding (somehow a
backslash + escaped double quote was added when it wasn't required).
no issue
---
<!-- Leave the line below if you'd like GitHub Copilot to generate a
summary from your commit -->
<!--
copilot:summary
-->
### <samp>🤖 Generated by Copilot at 2f86a35</samp>
Updated packages for rendering post and page content. This fixes some
bugs and improves the handling of HTML elements.
closes https://github.com/TryGhost/Product/issues/3665
- added link suggestion feature to the Header card in Mobiledoc (missing
feature)
- Tips & Donations link is behind a feature flag atm, to be cleaned up
once the feature is ready to be released