Commit Graph

21010 Commits

Author SHA1 Message Date
Peter Zimon
d83d83ab37 Created Post analytics spike React app 2024-11-25 09:09:27 +01:00
Ghost CI
7cfb755bbd v5.101.4 2024-11-25 07:22:27 +00:00
Steve Larson
588979e62f
Added Sentry logging in editor for incorrectly untitled slug values (#21682)
ref https://linear.app/ghost/issue/ONC-548/

We seem to occasionally get into a state where draft posts are stuck
with an untitled slug, which has been difficult to reproduce. It would
be helpful to gather some data on how frequently this is happening.
2024-11-23 00:25:18 +00:00
Steve Larson
7083bd0628
🐛 Fixed slug not always updating for draft posts (#21691)
ref https://linear.app/ghost/issue/ONC-548/

There have been reported cases of the editor not updating the slug for
draft posts. The logic should be as follows: for a draft post, if the
title was updated and we do not detect a custom slug, update it.

This got out of sync due to actions where the save was triggered but the
title onBlur effect (which updates the slug) was not triggered. This has
been resolved by evaluating the slug in the before save actions.
2024-11-23 00:24:17 +00:00
echobilisim3421
3277da7140
Updated Turkish translation in search.json (#21554)
no ref
2024-11-22 23:38:16 +00:00
Hannah Wolfe
2016e6a6df
Removed TTL from tinybird analytics_events datasource (#21697)
ref https://linear.app/ghost/issue/ANAL-115/data-retention

- The bad news here is I didn't notice that the tinybird web analytics
starter kit included a TTL on the analytics_events datasource of 60 days
- This means any data older than 60days was automatically dropped from
the table
- I updated this in the UI when I noticed it a few days ago, this makes
sure it can't come back
- The good news is that we don't have to implement anything to make this
work when we do get to the point where we want a TTL!
2024-11-22 15:52:28 +00:00
Chris Raible
d89c7d5f25
Added metric for time to create a database connection (#21696)
ref
https://linear.app/ghost/issue/ENG-1783/add-time-to-create-connection-metric

- Since we've added the "time to acquire" metric to get visibility into
contention in the connection pool, we've seen some anomalies where it
takes a surprisingly long time to acquire a connection (~60ms) when not
under load. Hypothesis is that these anomalies occur when there aren't
any open connections, so Ghost has to establish a new connection with
the DB, and that's the part that's actually taking most of that time.
This new metric should help confirm/deny that hypothesis.
- This will also be an interesting metric to keep an eye on and/or alert
on — if Ghost can't create new connections with its database
performantly, it's not going to perform very well.
2024-11-22 00:26:04 -08:00
Chris Raible
2ff82c7ac0
Configured prometheus client to reuse TCP connections to the pushgateway (#21695)
ref
https://linear.app/ghost/issue/ENG-1796/reuse-tcp-connections-when-sending-metrics-to-the-pushgateway

- When we rolled out the prometheus metrics collection, it overwhelmed
the pushgateway. Our hypothesis is that Ghost was creating too many new
TCP connections to the pushgateway.
- The prometheus client was creating a new connection with the
pushgateway each time it pushed metrics every 15 seconds.
- This commit changes the prometheus client to keep the connection
alive, and re-use it instead of creating a new one.
- It also limits the number of retries if pushing the metrics fails —
after 3 consecutive failures, Ghost will stop retrying and log an error.
2024-11-21 17:43:33 -08:00
Chris Raible
829a0fc7e9
Added email analytics throughput metrics (#21694)
ref
https://linear.app/ghost/issue/ENG-1508/add-custom-metrics-for-email-analytics-jobs

- With the experimental job queue, we're using email analytics as our
initial validation test case. We're hoping to see an improvement in
Ghost's throughput for ingesting email events. However, we don't
currently collect this data point, so it's kind of impossible to tell
right now if the job queue is making things better or not.
- This PR fixes that by adding two new prometheus metrics:
- `email_analytics_events_processed` — a counter incremented each time
an event is processed. Sometimes the event has already been processed in
the past, so this doens't always result in a new event being stored in
the DB.
- `email_analytics_events_stored` — a counter incremented each time an
event is stored in the DB. For example, if an email is opened 3 times by
the same recipient, this counter will only be incremented once.
- The metrics also have a label for the event type, so we can split out
opened events from delivered events. We can use the `rate()` function in
grafana to then get an `events ingested per second` metric, and compare
sites with/without the job queue enabled.
2024-11-21 17:30:43 -08:00
Fernanda Thiesen
db52ebb366
🌐 Updated pt-BR translations (#21636)
no ref

Suggestions for updating the confirmation email pt-BR translation with
more everyday terms and addressing gender-specific issues by using 'no
site' instead of 'em'.
2024-11-21 18:37:17 +00:00
Steve Larson
c046bbda91
🐛 Fixed Istanbul timezone (#21686)
ref https://linear.app/ghost/issue/ENG-1781/
- updated Istanbul TZ to +03

Thanks to @muratcorlu for the PR to TryGhost/SDK.
2024-11-21 17:23:21 +00:00
renovate[bot]
b098fb69be
Update dependency mailgun.js to v10.2.4 (#21685)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [mailgun.js](https://redirect.github.com/mailgun/mailgun.js) |
[`10.2.3` ->
`10.2.4`](https://renovatebot.com/diffs/npm/mailgun.js/10.2.3/10.2.4) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/mailgun.js/10.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/mailgun.js/10.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/mailgun.js/10.2.3/10.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/mailgun.js/10.2.3/10.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>mailgun/mailgun.js (mailgun.js)</summary>

###
[`v10.2.4`](https://redirect.github.com/mailgun/mailgun.js/blob/HEAD/CHANGELOG.md#1024-2024-11-21)

[Compare
Source](https://redirect.github.com/mailgun/mailgun.js/compare/v10.2.3...9ab89f6f6e00a9bac87a987410b810d6c9d3a5d4)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "every weekday" (UTC), Automerge - At
any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **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:eyJjcmVhdGVkSW5WZXIiOiIzOS4xOS4wIiwidXBkYXRlZEluVmVyIjoiMzkuMTkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-21 16:54:50 +00:00
echobilisim3421
368a8eb2f8
🌐 Updated Turkish translations in comments.json (#21670)
no ref

Added missing Turkish translations
2024-11-21 15:23:12 +00:00
Cathy Sarisky
a31afd4b77
Made i18n more tolerant of missing files (#21561)
no ref

This fix adds an extra fallback to 'en' when a locale folder is missing one or more translation files, and a test for the fallback. Previously, Ghost would fail to boot if an expected file translation was missing.
2024-11-21 09:03:56 -06:00
Ronald Langeveld
49c0e60053
Fixed admin replies pagination to always sort old to new (#21679)
ref PLG-227

- added the correct order params for admin replies to ensure they are
sorted oldest to newest.
- hardcoded since we want to ensure it remains that way.
2024-11-21 11:38:47 +00:00
Sodbileg Gansukh
9493fbefcc
Moved the custom fonts feature to public beta (#21664)
ref DES-985
2024-11-21 19:06:40 +08:00
Ronald Langeveld
cf6884d098
Wired up Admin Comment Endpoints to UI (#21661)
ref PLG-227

- Updated logic that allows Admin Users on comments to interact with
some endpoints from a specific admin-only route.
- It pulls 2 admin specific routes:
- 1. an admin specific 'browse' route that includes hidden comments that
would otherwise be hidden from regular users and members.
- 2. A specific replies route, that would also include hidden comments
- This was needed in order to get accurate pagination.

- Additionally, it wires up the routes via `message-handler` that deal
with the potential cors issues.
- Includes style updates

---------

Co-authored-by: Sanne de Vries <sannedv@protonmail.com>
Co-authored-by: Kevin Ansfield <kevin@lookingsideways.co.uk>
2024-11-21 10:52:36 +00:00
Ghost CI
703ed9dfbc Merged v5.101.3 into main 2024-11-21 09:19:10 +00:00
Ghost CI
a238960726 v5.101.3 2024-11-21 09:19:08 +00:00
Fabien O'Carroll
3265e257b7 Fixed webhooks not firing for internal integrations
ref https://linear.app/ghost/issue/AP-598

We want to make sure that webhooks for internal integrations are fired even
when the custom integrations limit has been hit. In order to test this we've
had to update the fixtureManager to allow passing the integration type when
inserting fixture webhooks into the db.
2024-11-21 16:01:33 +07:00
Fabien O'Carroll
263c493e2b Refactored webhook restriction to WebhookTrigger
ref https://linear.app/ghost/issue/AP-598

This is not a change in functionality.

The ActivityPub integration is an `internal` integration, because we want it to
be available regardless of the plan a Ghost(Pro) site is on. However the
webhooks service is not able to differentiate between webhooks for a custom
integration and an internal one.

Rather than disable webhooks entirely when the custom integrations limit
active, we want to allow webhooks for internal integrations to work. The first
step towards that is keeping the listener for the model events and have the
limiting happen in the WebhookTrigger which allows us to be more specific as to
which webhooks should be triggered or not.
2024-11-21 16:01:30 +07:00
Ronald Langeveld
d800587225
Added new endpoint for loading replies as Admin (#21676)
ref PLG-227

- Wired up a new endpoint that would be able to paginate replies as an
admin user.
- The difference compared to the members-api endpoint is that this
includes hidden comments and includes the html string which is normally
hidden from non-admin users
2024-11-21 14:55:59 +08:00
Ronald Langeveld
f0dab9dc9a
Include hidden comments for admins in pagination count (#21675)
ref PLG-227

- Ensure hidden comments are included in the replies count for admin
users to ensure pagination works as expected.
2024-11-21 12:53:37 +08:00
Ronald Langeveld
68d8262fab
Fixed member comments replies pagination (#21674)
ref PLG-227

- Changed replies count to exclude hidden and deleted replies to ensure
the accuracy of pagination data for members.
2024-11-21 03:53:26 +00:00
Fabien O'Carroll
19ab98f836 Fixed webhooks not firing for internal integrations
ref https://linear.app/ghost/issue/AP-598

We want to make sure that webhooks for internal integrations are fired even
when the custom integrations limit has been hit. In order to test this we've
had to update the fixtureManager to allow passing the integration type when
inserting fixture webhooks into the db.
2024-11-21 03:38:43 +00:00
Fabien O'Carroll
0919ae0d05 Refactored webhook restriction to WebhookTrigger
ref https://linear.app/ghost/issue/AP-598

This is not a change in functionality.

The ActivityPub integration is an `internal` integration, because we want it to
be available regardless of the plan a Ghost(Pro) site is on. However the
webhooks service is not able to differentiate between webhooks for a custom
integration and an internal one.

Rather than disable webhooks entirely when the custom integrations limit
active, we want to allow webhooks for internal integrations to work. The first
step towards that is keeping the listener for the model events and have the
limiting happen in the WebhookTrigger which allows us to be more specific as to
which webhooks should be triggered or not.
2024-11-21 03:38:43 +00:00
Steve Larson
c806cf665d
🐛 Fixed minifier for Windows users (#21311)
ref https://github.com/TryGhost/Ghost/pull/15893

This got closed as stale long ago. Resurrecting this as it's a simple
change and will help our Windows-based theme devs in particular.
2024-11-21 00:00:29 +00:00
Steve Larson
600b3c66ed
Bumped Koenig (#21672)
no ref
2024-11-20 21:03:11 +00:00
Sanne de Vries
ea1b786136
Updated timestamp format for comments (#21515)
ref https://linear.app/ghost/issue/PLG-235

- Any comments older than yesterday are now shown with the date instead of relative time
- Comments from the current year are now shown with just the month and day

---------

Co-authored-by: Kevin Ansfield <kevin@ghost.org>
2024-11-20 15:25:49 +00:00
Steve Larson
c3e261627f
Updated analytics button logic for disabled newsletter emails (#21643)
ref https://linear.app/ghost/issue/ONC-594

We had a check to prevent showing the Analytics page link for email-only
posts (newsletters) if newsletters were disabled. I don't see a good
reason to remove this - users then have to re-enable newsletters just to
see the analytics.
2024-11-20 08:43:35 -06:00
Kevin Ansfield
46bdbaa3b8 Shipped comments-ui@0.22.0
no issue

- includes updates behind `commentImprovements` flag
- bumped to 0.22 to avoid changes going live before next Ghost release
2024-11-20 12:33:53 +00:00
Steve Larson
2a0fc6fd1e
Fixed picker for local tz use (#21658)
ref 47b8161805

This ended up inverting the behavior, such that TZs far in advance of
GMT fouled up. This change builds the date by date components in the
local TZ so we should not run into further trouble...
2024-11-19 15:54:50 -06:00
Steve Larson
47b8161805
🐛 Fixed scheduled post datepicker marking prior day as selected (#21657)
ref https://linear.app/ghost/issue/ONC-590

When choosing dates to schedule a post in the future, it could end up
displaying the wrong selected date because it was accounting for local
TZ. This doesn't make sense as we're displaying the site TZ in the
picker itself, and that's the real TZ used for scheduling.

In short, this feels confusing and also is often incorrect/misleading,
even though the scheduler in the background is correct. This should
align those to make it more transparent.
2024-11-19 20:47:12 +00:00
Kevin Ansfield
52e727a28c
Added in-reply-to references to comments-ui (#21656)
ref https://linear.app/ghost/issue/PLG-230

When clicking "Reply" on a reply we now show an "In reply to" reference on the form and when saved show that reference in the rendered view, making it easier to follow discussions within comment replies.

- updated calls to `openCommentForm` action when opening a reply to add the in-reply-to data to the `openForm` instance
- updated Form comment to use the `openForm` instance data when rendering the in-reply-to reference
- updated Comment component to render the in-reply-to reference from the API-provided data
  - includes click handler to scroll to the referenced comment
- added `getCommentInReplyToSnippet` helper function so strip a comment back to plaintext for display in the reply-to reference on the comment form (snippets on other comments are generated server-side)

---------

Co-authored-by: Sanne de Vries <sannedv@protonmail.com>
2024-11-19 17:30:18 +00:00
Sparsh
b1a75833a1
🌐 Added Nepali locale for newsletter.json (#21635)
no ref

- Added all field translations from English to Nepali for
`newsletter.json` file.

"Thank you for creating Ghost and making it open source.": "Ghost
सिर्जना गरेर यसलाई ओपन सोर्स बनाउनु भएकोमा धन्यवाद।"
2024-11-19 08:31:57 -06:00
Princi Vershwal
d17f52df9d
🐛 Fixed words breaking to new line in emails on mobile (#21652)
fixes https://linear.app/ghost/issue/DES-977/word-breaks-to-new-line-on-mobile-for-new-member-sign-up-email

- word-break is not required in the text "You can also copy & paste this URL into your browser:", so removed it
- word-break should be used in case of urls. No change in this
- Observed this patter across multiple email templates. Fixed all.
2024-11-19 10:43:32 +00:00
Aileen Booker
b177c7af43 Allowed transistion to settings when in forceUpgrade is active 2024-11-19 05:28:46 -05:00
Kevin Ansfield
2163fd5db3 Fixed missing in_reply_to_snippet for replies
ref https://linear.app/ghost/issue/PLG-230

- the `inReplyTo` relationship was not being loaded for replies which meant the mapper never hit the code which adds `in_reply_to_snippet`
- moved all `in_reply_to` code behind the `commentImprovements` labs flag
- updated tests to correctly disable/enable the flag
- added test for browsing comments with replies-to-replies so `in_reply_to_snippet` is captured in the snapshot
2024-11-18 21:35:40 +00:00
Princi Vershwal
527fb05a29
Fixed staff member login when 2FA is ON (#21647)
Fixes
https://linear.app/ghost/issue/ENG-1775/staff-users-are-not-able-to-verify-session-if-2fa-flag-is-on
2024-11-18 18:43:23 +00:00
Ghost CI
6eae395b24 Merged v5.101.2 into main 2024-11-18 18:14:43 +00:00
Ghost CI
d41ccdde8d v5.101.2 2024-11-18 18:14:42 +00:00
Steve Larson
34d267decc Reverted custom fonts flag (#21645)
ref https://ghost.slack.com/archives/C025584CA/p1731950126867179

- moved custom fonts functionality back to a labs flag
- reverted gscan version to 4.45 which doesn't include the custom fonts
checks/warnings
2024-11-18 11:53:29 -06:00
Steve Larson
2447f37a14
Reverted custom fonts flag (#21645)
ref https://ghost.slack.com/archives/C025584CA/p1731950126867179

- moved custom fonts functionality back to a labs flag
- reverted gscan version to 4.45 which doesn't include the custom fonts
checks/warnings
2024-11-18 17:45:03 +00:00
Princi Vershwal
f2444b08f3
Added e2e test for sending invite to a staff member and user signing up using the invite link (#21637)
Fixes
https://linear.app/ghost/issue/ENG-1702/add-e2e-browser-test-for-staff-invite-and-accept-flow
2024-11-18 15:30:03 +00:00
Ghost CI
254acb3b86 v5.101.1 2024-11-15 19:32:06 +00:00
Mostafa Elsayed Hussin
5c969dcf21 🌐 Added Arabic locale (#21590)
no ref

Arabic locale done for search, comments, newsletter . once pulled I'll start translating the portal.

This translation is a part of ACLSS efforts to translate more open source projects to Arabic.
2024-11-15 13:17:42 -06:00
Oren Cohen
ea05d1d8c7 🌐 Added Hebrew translations (#17056)
no ref

Added most no-brainer Hebrew translations but left the more complicated ones to people better equipped to translate them. Better something than nothing at all.

Also, Hebrew is an RTL language, so exclamation points and dots at the end of a sentence should appear at the leftmost part, but the translation files are LTR, as all JSON files are. Just putting it out there. This should be considered when using an RTL language translation.

---------

Co-authored-by: Steve Larson <9larsons@gmail.com>
2024-11-15 13:17:42 -06:00
Duy
8746de04b7 🌐 Updated Vietnamese translations (#21581)
no ref

- Changed _"Gói theo dõi"_ to _"Gói thành viên"_ for a better match to
the grammar and correct usage in Vietnamese
- Clarified the definition of **Subscription plan** (_"Gói thành viên"_
instead of _"Gói"_)
- Removed plural **emails** because it is not logical in Vietnamese
- Added _"Sort by"_ in comment.json
- Added _"Sorry, no recommendations are available right now."_ in
portal.json
- Changed placeholder text "and" to "&" for shorter and show full
sentence (mobile) in search.json
2024-11-15 13:17:42 -06:00
Steve Larson
842adcdc80 Added metrics for job queue and email analytics (#21626)
no ref

Added Prometheus metrics for the job queue throughput and email analytics throughput. We'll likely keep these around as good metrics to keep an eye on, though for the moment their primary function is to establish a baseline for users w/o the job queue enabled so we can observe the full impact once switching it on.
2024-11-15 13:17:42 -06:00
Lukas Kocourek
e079ebb3de 🌐 Added Czech translations for newsletter & search (#21516)
no issue
2024-11-15 13:17:42 -06:00