diff --git a/gatsby-node.js b/gatsby-node.js index 65c8222a25..369bcc6896 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -413,6 +413,24 @@ exports.createPages = ({ graphql, actions }) => { component: path.resolve("./src/templates/releaseNotesListing/index.js"), }) + // Create release notes pages for pagination. + const releaseNotesPostsPerPage = 8 + const releaseNotesNumPages = Math.ceil(result.data.allReleaseNotes.edges.length / releaseNotesPostsPerPage) + + Array.from({ length: releaseNotesNumPages }).forEach((_, i) => { + const path2 = `/release-notes/${i+1}/`; + createPage({ + path: path2, + component: path.resolve("./src/templates/releaseNotesListing/index.js"), + context: { + limit: releaseNotesPostsPerPage, + skip: i * releaseNotesPostsPerPage, + numPages: releaseNotesNumPages, + i, + }, + }) + }) + // terminusCommands.forEach(command => { // const slugRegExp = /:/g // const slug = command.name.replace(slugRegExp, "-") diff --git a/source/content/addons/object-cache/concepts/overview.md b/source/content/addons/object-cache/concepts/overview.md index bf5b7a897e..8c596eeb88 100644 --- a/source/content/addons/object-cache/concepts/overview.md +++ b/source/content/addons/object-cache/concepts/overview.md @@ -3,7 +3,7 @@ title: Object Cache Overview description: Learn about the benefits and requirements of Pantheon's Object Cache performance addon. permalink: docs/object-cache tags: [cache, plugins, modules, database] -reviewed: "2023-08-17" +reviewed: "2024-08-01" contenttype: [doc] innav: [true] categories: [cache] @@ -12,7 +12,7 @@ audience: [development] product: [--] integration: [--] showtoc: true -contributors: [cityofoaksdesign, carolynshannon, jms-pantheon, whitneymeredith] +contributors: [cityofoaksdesign, carolynshannon, jms-pantheon, whitneymeredith, jazzsequence] --- Pantheon's Object Cache performance addon service is an open-source, networked, in-memory, key-value data store based on Redis that can be used as a drop-in caching backend for your Drupal or WordPress website. @@ -28,7 +28,7 @@ Object Cache provides an alternative caching backend that resides in memory rath ## Object Cache Requirements -All plans, except for the Basic plan, can use Object Cache. Sandbox site plans can enable and use Object Cache for development purposes, but if the site plan is upgraded to Basic the feature will be disabled. Object Cache Pro, the premium WordPress plugin, is not available for Sandbox sites, however you may enable Redis for Sandbox sites and use Pantheon's [wp-redis](https://github.com/pantheon-systems/wp-redis) plugin, or any other reputable Redis plugin for WordPress. +Pantheon supports two versions of Redis Object Cache, 2.8 and 6.2 (see [Which versions of Redis are available?](/object-cache/faq#which-versions-of-redis-are-available) and [Specify a Redis Version](/pantheon-yml#specify-a-redis-version) for more information). All plans, except for the Basic plan, can use Object Cache. Sandbox site plans can enable and use Object Cache for development purposes, but if the site plan is upgraded to Basic the feature will be disabled. Object Cache Pro, the premium WordPress plugin, is not available for Sandbox sites, however you may enable Redis for Sandbox sites and use Pantheon's [wp-redis](https://github.com/pantheon-systems/wp-redis) plugin, or any other reputable Redis plugin for WordPress. | Plans | Object Cache Support | | ------------- | -------------------------------------- | diff --git a/source/content/addons/object-cache/howto/wordpress.md b/source/content/addons/object-cache/howto/wordpress.md index 3f5db37bf0..eb2c526bf1 100644 --- a/source/content/addons/object-cache/howto/wordpress.md +++ b/source/content/addons/object-cache/howto/wordpress.md @@ -3,7 +3,7 @@ title: Enable Object Cache Pro for WordPress description: How to install and configure Object Cache Pro for WordPress. permalink: docs/object-cache/wordpress tags: [cache, plugins, modules, database] -reviewed: "2023-08-17" +reviewed: "2024-08-08" contenttype: [doc] innav: [true] categories: [cache] @@ -11,7 +11,7 @@ cms: [wordpress] audience: [development] product: [--] integration: [--] -contributors: [jazzsequence] +contributors: [jazzsequence, jkudish] showtoc: true --- @@ -75,7 +75,7 @@ terminus redis:enable -1. Once complete, activate the Object Cache Pro plugin from the WordPress Admin or via WP-CLI through Terminus. +1. Once complete, activate the Object Cache Pro plugin from the WordPress Admin or via WP-CLI through Terminus on your development or multidev environment. NOTE: This workflow cannot be run on test or live environments. **WordPress Admin:** @@ -152,25 +152,13 @@ Refer to the [official Object Cache Pro documentation](https://objectcache.pro/d git add auth.json && git commit -m "Add Object Cache Pro auth token." ``` -1. Add the Object Cache Pro repository to your `composer.json` file's `repositories` section. Your final `repositories` section should look something like this: +1. Add the Object Cache Pro repository to your `composer.json` file's `repositories` section. ```json repositories: [ { "type": "composer", "url": "https://objectcache.pro/repo/" - }, - { - "type": "composer", - "url": "https://wpackagist.org", - "only": [ - "wpackagist-plugin/*", - "wpackagist-theme/*" - ] - }, - { - "type": "path", - "url": "upstream-configuration" } ], ``` @@ -315,6 +303,7 @@ Refer to the [official Object Cache Pro documentation](https://objectcache.pro/d 1. Merge code 1. Activate OCP 1. Flush Redis cache +- The `object-cache.php` drop-in file must be created in your development or multidev environment and committed or pushed to live to work. - When installed as a `mu-plugin` on a WordPress Multisite, Object Cache Pro handles each subsite separately. The dashboard widget applies to the current site and none of the other sites on the network. - Flushing the network cache from the network admin will flush all caches across the network. - Subsites do not get their own configuration or graphs. diff --git a/source/content/certification/exam.md b/source/content/certification/exam.md index 67d9b6c50e..65a753f8a8 100644 --- a/source/content/certification/exam.md +++ b/source/content/certification/exam.md @@ -293,21 +293,13 @@ The following directions and instructions were captured by a user on a MacOS dev ## Exam FAQs Here are some frequently asked questions about Pantheon's WebOps Certification Program. - - +### Where Can I Find Materials to Study for the Pantheon WebOps Certification Exam? In addition to [this guide within our documentation](/certification/study-guide) you can download a [PDF version that contains hands-on activities and review questions.](https://certification.pantheon.io/sites/default/files/2023-11/webopscert_final_v1_1.pdf). - - - - -You can find the directions for launching the exam here: [Exam Instructions](/certification/exam-instructions) - - - - - +### What are the directions for launching my exam? +You can find the directions for launching the exam here: [Exam Instructions](/certification/exam#exam-instructions) +### How do I use the ProctorFree virtual proctoring service for my exam? Pantheon’s Certification Program utilizes [ProctorFree](https://www.proctorfree.com/), a software-only identity verification and exam recording solution. The following document describes the requirements for successfully enabling ProctorFree when taking a Pantheon Certification exam. Before you get started, please note the following: @@ -340,13 +332,11 @@ If you are using a Linux machine, you will need to indicate this on the form whe Remote exam sessions must be completed on a laptop or desktop computer that meets the minimum technical requirements. - - - +### Do I need a camera? In order to take the exam with our automated proctoring service, you will need a working web camera to record your test taking session. Please reach out to us if you have any questions about this. - - + +### What are the technical requirements for taking a Pantheon Certification? In order to maintain compatibility with our online proctoring service, we require that exam takers use machines that adhere to the following minimum technical specifications: @@ -362,20 +352,20 @@ In order to maintain compatibility with our online proctoring service, we requir **Web Camera & Microphone:** An external or internal web camera and microphone are required. Camera and microphone drivers must have been updated or released within the last 5 years. 3D Webcams are not supported at this time. - - + +### How do I register for an exam? You can register for the [Pantheon WebOps Certification Exam with the form on this page](https://pantheon.io/certification). The form will ask for your name, email address, organization (if applicable), and some technical information about the computer you will be using to take the exam. This is to help us ensure that your computer is technically compatible with our exam engine and proctoring service. You will then choose a date to take the exam. - - + +### How do I get certificate and a badge? When you have finished taking the exam, you will see a message on the screen indicating whether you have passed or not. Once you have passed the exam, we will go through the process of validating the results. This validation can take up to 48 hours, at which point you will receive an email with a link to your badge and certification. We will also display your name, certification date, and a link to your badge and digital certificate on our [Certification Registry site](https://certification.pantheon.io/). - + ## More Resources diff --git a/source/content/certification/study-guide-cms/00-intro.md b/source/content/certification/study-guide-cms/00-intro.md index 5a862668df..f4eeebfb59 100644 --- a/source/content/certification/study-guide-cms/00-intro.md +++ b/source/content/certification/study-guide-cms/00-intro.md @@ -1,6 +1,6 @@ --- title: WebOps Certification -subtitle: Introduction +subtitle: Study Guide Introduction certificationpage: true type: certificationpage layout: certificationpage diff --git a/source/content/dns-providers/cloudflare.md b/source/content/dns-providers/cloudflare.md index aae8486efc..c09440bb5a 100644 --- a/source/content/dns-providers/cloudflare.md +++ b/source/content/dns-providers/cloudflare.md @@ -110,6 +110,20 @@ You can configure Cloudflare's CDN as an additional layer on Pantheon's Global C ![Example DNS only](../../images/cloudflare-full.png) +#### Restrict Content Based on Geographic Location + +If you're using Cloudflare's IP Geolocation feature, you will need to read the `CF-IPCountry` header and set `Vary: CF-IPCountry` on all responses. + +#### Access to the /.well-known Path Is Needed + +If you're using Cloudflare's services to control or block traffic, an exception must be made for the `/.well-known` path in Cloudflare's config. If the `/.well-known` path is not accessible, Lets Encrypt may not be able to issue a certificate. + +#### Cache Invalidation Best Practices + +Cloudflare allows you to turn on caching. However, no cache invalidation hook is fired when you make content changes if you have Cloudflare caching turned on. This means that Cloudflare will be unaware of your changes and persist with stale cache. + +We recommend that you turn off Cloudflare caching until the `pantheon_advanced_page_cache` module/plugin is extended to send API calls to Cloudflare. + ## CAA Records (Optional) A **CAA Record** specifies which certificate authority (**CA**) can issue HTTPS certificates for a domain. @@ -140,16 +154,6 @@ A **CAA Record** specifies which certificate authority (**CA**) can issue HTTPS 1. Repeat this process for the `www` subdomain. -## Restrict Content Based on Geographic Location - -If you're using Cloudflare's IP Geolocation feature, you will need to read the `CF-IPCountry` header and set `Vary: CF-IPCountry` on all responses. - -## Cache Invalidation Best Practices - -Cloudflare allows you to turn on caching. However, no cache invalidation hook is fired when you make content changes if you have Cloudflare caching turned on. This means that Cloudflare will be unaware of your changes and persist with stale cache. - -We recommend that you turn off Cloudflare caching until the `pantheon_advanced_page_cache` module/plugin is extended to send API calls to Cloudflare. - ## Next Steps - [Launch Essentials: Domains & HTTPS](/guides/launch/domains) diff --git a/source/content/guides/account-mgmt/plans/07-site-plans.md b/source/content/guides/account-mgmt/plans/07-site-plans.md index fed4d1487a..2984a79df4 100644 --- a/source/content/guides/account-mgmt/plans/07-site-plans.md +++ b/source/content/guides/account-mgmt/plans/07-site-plans.md @@ -7,7 +7,7 @@ contributors: [wordsmither] showtoc: true permalink: docs/guides/account-mgmt/plans/site-plans editpath: docs/guides/account-mgmt/plans/07-site-plans.md -reviewed: "2022-09-19" +reviewed: "2024-08-07" contenttype: [guide] innav: [false] categories: [plans] @@ -93,23 +93,30 @@ Pantheon offers savings for sites purchased with annual billing. Refer to [Panth -1. [Go to the Site Dashboard](/guides/account-mgmt/workspace-sites-teams/sites#site-dashboard). +Please note that only Site owners can update plans. There are several places within the Pantheon Dashboard you can upgrade your site plan: -1. For Sandbox sites, click **Upgrade** next to the site's name. Otherwise, click the current plan tag next to the site's name. +1. [Go to the Site Dashboard](/guides/account-mgmt/workspace-sites-teams/sites#site-dashboard), and click **Upgrade** next to the site's name. +2. Within your personal workspace, navigate to Settings>Subscriptions. Click the 'Actions' dropdown and choose, **Change Site Plan** +3. If you are in a workspace, you can navigate to **Settings** > **Billing**. Scroll to see **Supported Sites** table. Within that table, if you are the site owner, you'll be able to click the **Site Plan** column to upgrade or downgrade your site. + + +From the site upgrade and downgrade page, complete the following steps: + +1. Click the **Select** button under the [plan you choose](https://pantheon.io/plans/pricing/). Select the billing frequency: [**Pay Annually**](/guides/account-mgmt/plans/pricing) or **Pay Monthly** at the top of the page. -1. Click **Select** for the plan you wish to purchase. + - If you've chosen a **Performance Plan**, choose the size and click **Choose Performance**. -1. Enter your billing information. Site ownership is designated to the user account entering billing information. + - If you've chosen a **Basic Plan**, click **Continue**. -1. Make sure the **Plan** details are correct. + - If you've chosen **Custom**, please fill out the contact field to be contacted by a customer support agent. -1. Verify the card shown in **Billing** details. +2. Click **+ Add New Card** and enter the credit card information, then click **Add Card** to save the card information. If you already have a card saved, it should be available in this section. -1. Click the **Submit** button. +3. Click **Continue** and review your information carefully, then click **Place Your Order** to confirm your purchase. -The Site Owner will receive an email confirmation of this change, a new invoice will be issued, and a prorated amount for the current billing cycle will be credited or charged to the associated card automatically. + - [Contact Support](/guides/support/contact-support) if you need any help. -Invoices and transaction history related to this change can be found in ** Account** > **Billing**. +As the site owner, you’ll receive an email confirming the change to the site. You’ll receive an updated invoice after the site billing is processed. ## Enable Add-ons diff --git a/source/content/guides/agcdn/01-introduction.md b/source/content/guides/agcdn/01-introduction.md index 9793c74d95..4468cfc601 100644 --- a/source/content/guides/agcdn/01-introduction.md +++ b/source/content/guides/agcdn/01-introduction.md @@ -45,7 +45,7 @@ AGCDN provides many features: | Feature | AGCDN | | ------------- | -------------------------------------- | -| [OSI Layer 3 and 4 DDoS Protection & Mitigation](/guides/agcdn/agcdn-features#osi-layer-3-and-4-ddos-protection-&-mitigation) | | +| [OSI Layer 3 and 4 DDoS Protection & Mitigation](/guides/agcdn/agcdn-features#osi-layer-3-and-4-ddos-protection--mitigation) | | | [SOC 2 Type 2 Compliance](/guides/agcdn/agcdn-features#soc-2-type-2-compliance) | | | [IP Allowlisting and Blocklisting](/guides/agcdn/agcdn-features#ip-allowlisting-and-blocklisting) | | | [Token Authentication with JSON Web Token](/guides/agcdn/agcdn-features#token-authentication-with-json-web-token) | | @@ -66,10 +66,10 @@ AGCDN with WAF/IO includes everything in the table above with the following addi | Feature | AGCDN with WAF and IO | | ------------- | ------------------------- | -| [Layer 7 and Enterprise WAF rules](/guides/agcdn/agcdn-features#layer-7-and-enterprise-waf-rules)| | -| [Efficient Image Optimization at the Edge](/guides/agcdn/agcdn-features#efficient-image-optimization-at-the-edge) | | +| [Layer 7 and Enterprise WAF rules](/guides/agcdn/agcdn-wafio#owasp-layer-7-and-enterprise-waf-rules)| | +| [Efficient Image Optimization at the Edge](/guides/agcdn/agcdn-wafio#efficient-image-optimization-at-the-edge) | | | [Rate Limiting](/guides/agcdn/agcdn-wafio#rate-limiting) | | -| [Advanced Bot Detection and Mitigation](/guides/agcdn/agcdn-features#advanced-bot-detection-and-mitigation-available-as-an-add-on) | | +| [Advanced Bot Detection and Mitigation](/guides/agcdn/agcdn-wafio#advanced-bot-detection-and-mitigation) | | ## Is AGCDN Right For Me? diff --git a/source/content/guides/disaster-recovery/01-introduction.md b/source/content/guides/disaster-recovery/01-introduction.md index 8b83cd96c3..ddc41f00b9 100644 --- a/source/content/guides/disaster-recovery/01-introduction.md +++ b/source/content/guides/disaster-recovery/01-introduction.md @@ -4,7 +4,7 @@ subtitle: Introduction description: Address emergency downtime situations on the Pantheon platform tags: [webops] contributors: [joshlieb, joan-ing] -reviewed: "2021-07-26" +reviewed: "2024-07-30" type: guide permalink: docs/guides/disaster-recovery editpath: disaster-recovery/01-introduction.md @@ -17,6 +17,6 @@ product: [--] integration: [--] --- -This guide is focused on the immediate actions a Pantheon customer should take in the event of a catastrophic site failure. In all cases, the first step should be to file an emergency downtime on-call ticket. Filing a ticket will immediately escalate the incident and ensure the fastest and most effective service. +This guide is focused on the immediate actions a Pantheon customer should take in the event of a catastrophic site failure. In all cases, the first step should be to file an emergency downtime on-call ticket, regular ticket, or open a support chat depending on support tier. Filing an emergency Pantheon On-Call ticket will immediately escalate the incident and ensure the fastest and most effective service. This guide does not cover all potential post-disaster recovery processes. Such processes will depend on the nature of the incident and the impact that it has on your site. You must engage with Pantheon support during the incident, and the support team will help determine what remediation steps are required. diff --git a/source/content/guides/disaster-recovery/02-planning-ahead.md b/source/content/guides/disaster-recovery/02-planning-ahead.md index 0e5060b154..c8eda3453f 100644 --- a/source/content/guides/disaster-recovery/02-planning-ahead.md +++ b/source/content/guides/disaster-recovery/02-planning-ahead.md @@ -4,7 +4,7 @@ subtitle: Planning Ahead description: Avert potential site failures tags: [webops, workflow] contributors: [joshlieb, joan-ing] -reviewed: "2021-07-26" +reviewed: "2024-07-30" permalink: docs/guides/disaster-recovery/planning-ahead editpath: disaster-recovery/02-planning-ahead.md contenttype: [guide] @@ -21,29 +21,29 @@ Disasters are sometimes unavoidable, but steps can be taken to ensure that these ## Monitor and Optimize Performance -Keep ahead of performance issues by regularly reviewing performance with the [New Relic Application Performance Monitor](/guides/new-relic) (APM), included with all non-Basic Site plans. For more information, refer to the [Pantheon New Relic documentation](/guides/new-relic). +Keep ahead of performance issues by regularly reviewing performance with the New Relic Application Performance Monitor, included with all non-Basic Site plans. For more information, refer to the [Pantheon New Relic documentation](/guides/new-relic). New Relic also provides a performance monitoring service that can send notification of downtime or degraded performance by email and other channels. Refer to the documentation on [New Relic Alerts](https://docs.newrelic.com/docs/alerts-applied-intelligence/overview/) for more information. -If you have been assigned a Customer Success Manager, you will receive periodic technical reviews. These sessions include training on how to use New Relic to proactively address performance issues. +A dedicated Customer Success Manager (CSM) is included for all Enterprise (contract) Accounts. Dedicated CSMs will meet with you regularly to provide site performance audits. These sessions include training on how to use New Relic to proactively address performance issues. All sites are different, and there are many different performance issues that can emerge. Review Pantheon's [Optimizing Performance](/performance) documentation for tips and troubleshooting techniques for all layers of the platform. -## Optimize Your Cache Hit Rate +## Optimize Your Cache Hit Ratio The Pantheon Global CDN delivers pages directly to users from the Varnish edge page cache, and this layer serves both as insulation against unexpected traffic spikes as well as against application and infrastructure issues. ### Process -* Determine the extent to which your site is using the edge cache by requesting a cache hit rate report from support. This report shows the cache hit rate for the full site on a daily basis. +* Determine the extent to which your site is using the edge cache by reviewing your cache hit ratio report from the Metrics tab of the Live environment in the Site Dashboard. For more information on metrics in the Site Dashboard, see [Measuring Site Traffic](/guides/account-mgmt/traffic). -* Test the cacheability of individual pages by examining the page headers using CURL or developer tools. Refer to [Testing Global CDN Caching](/guides/global-cdn/test-global-cdn-caching) for more information. +* Test the cacheability of individual pages by examining the page headers using curl or developer tools. Refer to [Testing Global CDN Caching](/guides/global-cdn/test-global-cdn-caching) for more information. * Optimize your caching strategy by checking cookies, application configurations, and session management. Refer to our [Debug Caching Issues](/debug-cache) documentation. * The platform average for site caching is ~80% -* Persistent uptime only works with cacheable content. The higher the caching rate the more protection it will automatically provide you. +* Experience Protection only works with cacheable content. The higher the caching rate the more protection it will automatically provide you. Refer to [Confirm Experience Protection](/guides/global-cdn/experience-protection) for more information. ## Notify Support of Potential Risks diff --git a/source/content/guides/disaster-recovery/03-site-goes-down.md b/source/content/guides/disaster-recovery/03-site-goes-down.md index d7a76c1914..6a4e034f82 100644 --- a/source/content/guides/disaster-recovery/03-site-goes-down.md +++ b/source/content/guides/disaster-recovery/03-site-goes-down.md @@ -4,7 +4,7 @@ subtitle: What to Do If Your Site Goes Down description: Working with Pantheon support during emergencies tags: [webops] contributors: [joshlieb, joan-ing] -reviewed: "2021-07-26" +reviewed: "2024-07-30" type: guide permalink: docs/guides/disaster-recovery/site-goes-down editpath: disaster-recovery/03-site-goes-down.md @@ -17,25 +17,23 @@ product: [--] integration: [--] --- -## Open an Emergency Downtime Ticket +## Open a Support Ticket -In all cases, the first step is to file an emergency downtime on-call ticket. Even if you escalate the incident to your Account Manager or Customer Success Manager, the support engineers will be the ones diagnosing the cause of downtime and working to get your site back up, and a ticket is the fastest way to get them up to speed and engaged. +In cases of downtime or significant functional failure in the Live environment, the first step is to open a support ticket. Even if you escalate the incident to your dedicated Customer Success Manager (included for all Enterprise contract customers), our support engineers will be the ones diagnosing the cause of downtime and working to get your site back up, and a ticket is the fastest way to get them up to speed and engaged. -These tickets can be filed from the Site or Organizational Dashboard. To create a ticket, navigate to the **Support** tab in the Dashboard and click **Trigger Pantheon On-Call** in the Escalate with Pantheon On-Call box. Note that these tickets should only be reserved for downtime or significant functional failures on the Live environment. +Diamond and Platinum Account customers can report and escalate site downtime by clicking **Trigger Pantheon On-Call** from the Support tab. In cases where the dashboard is inaccessible, a ticket can be filed using a telephone ticketing service, accessible at **1(866)415-7624**. Note that this is strictly for filing a ticket, and you will not reach a support engineer by using this method. -In cases where the dashboard is inaccessible, a ticket can be filed using a telephone ticketing service, accessible at **1(866)415-7624**. Note that this is strictly for filing a ticket, and you will not reach a support engineer by using this method. +All other account types should click **Open Ticket** to open a support interaction to report site downtime. -Please include as much information as possible. A support engineer will work with you to diagnose the cause, and any information that you can provide will shorten the investigation time. +![Show platinum support features in the site dashboard](../../../images/dashboard/new-dashboard/platinum-support-site-dashboard.png) -Note that these tickets should be reserved for downtime or significant functional failure in the Live environment, only. +Please include as much information as possible. A support engineer will work with you to diagnose the cause, and any information that you can provide will shorten the investigation time. ## Check for Ongoing Platform Incidents Sites can go down for various reasons, and although the support team aims to diagnose the cause of downtime, customers can perform their own diagnostics. -Pantheon platform status is tracked at https://status.pantheon.io/, and all customers are encouraged to sign up for status page updates. Although a site can be taken down by isolated platform issues that are not systemic enough to warrant a platform status alert, these are rare. Tickets should still be filed even when the downtime is caused by an identified platform incident - we need to know who has been affected, and how it is affecting their sites. - -If you receive a notification ahead of discovering that the incident has affected your site, you can still file a ticket - even if we are already working to fix an identified issue, we need to know who has been affected and how it is affecting their sites. +Pantheon platform status is tracked at [status.pantheon.io](https://status.pantheon.io/), and all customers are encouraged to sign up for status page updates. Although a site can be taken down by isolated platform issues that are not systemic enough to warrant a platform status alert, these are rare. Tickets should still be filed even when the downtime is caused by an identified platform incident - we need to know who has been affected, and how it is affecting their sites. Because incidents are declared when a platform issue meets a minimal downtime or service degradation threshold, it is possible that you will receive a notification for an incident that is not affecting your site. Conversely, there are cases where a site is affected by an issue with the platform, but this issue is isolated to resources specific to the site, and a platform incident is not declared. @@ -43,11 +41,9 @@ Because incidents are declared when a platform issue meets a minimal downtime or Although filing an emergency on-call ticket will escalate your downtime incident within the support team and ensure you receive the fastest response, you may also want to alert your broader Pantheon account team. Depending on the situation, your escalation path may differ. -Note that tickets and chat have tier-specific response time objectives, while email, phone, and Slack channels do not. Refer to [Support Features and Response Times](/guides/support/#support-features-and-response-times) for details. - -#### Support Channels +### Support Channels -* **Ticketing**: If your Elite site is suffering downtime on the Live environment, your first step should be to open an emergency on-call ticket. Chat normally has a quicker response time, but emergency on-call tickets are absolutely escalated and response times to these tickets should be comparable. +* **Ticketing**: If your site is suffering downtime on the Live environment, your first step should be to open a support ticket. Chat normally has a quicker response time, but emergency on-call tickets are absolutely escalated and response times to these tickets should be comparable. * **Slack**: Diamond tier accounts can have access to a dedicated Slack channel in which customers can interact directly with their CSM, AM, and primary support resources. This is primarily intended as a means for quick communication and collaboration, and should not be used in lieu of the ticketing system, as there are no SLOs associated with Slack channels. @@ -59,41 +55,23 @@ Note that tickets and chat have tier-specific response time objectives, while em -* **Diamond and Platinum Account customers** can call Pantheon's premium technical support line directly for any technical issues, escalations, site, billing, or overages queries. The phone number can be found in your Workspace, in the Support tab. +* **Diamond and Platinum Account customers** can call Pantheon's premium technical support line directly for any technical issues, escalations, site, billing, or overages queries. The phone number can be found in your Workspace, in the Support tab. Note that this is strictly for filing a ticket, and you will not reach a support engineer by using this method. -#### Escalation Paths +### Escalation Paths Depending on the account tier, your escalation path may differ. Escalation paths include the following: -* Dedicated Customer Success Engineer: All Diamond tier accounts have a named senior support engineer, and tickets and issues are routed preferentially to them. - -* Customer Success Manager: Serves as a coordinator when support involves multiple teams, or when additional subject matter experts need to be brought into the process. The CSM is also responsible for any post-incident RCA or performance reviews. - -* Account Manager: Also serves as a coordinator of support efforts. - -* Managed Updates: If the issue arises from a Managed Updates deployment, the first point of escalation is the MU Engagement Manager currently involved in deploying the updates, and secondarily the Manager of the Managed Updates team. - -### Phone and Teleconference Support +* Dedicated Support Team: All Diamond tier accounts have a dedicated support team, and tickets and issues are routed preferentially to them. This escalation is an automatic part of the intake process once a ticket is opened. -A phone call or teleconference can be requested for emergency support. This can be done while filing the emergency ticket, or in the open ticket thread. The available resources depend on the current staffing situation, but named resources can be requested and can join when available. +* Customer Success Manager (CSM): Included for all Enterprise (contract) customers, CSMs serve as a coordinator when support involves multiple teams, or when additional subject matter experts need to be brought into the process. The CSM is also responsible for any post-incident Customer Incident Analysis or performance reviews. -### Escalation to Your Dedicated Customer Success Engineer - -All Diamond tier accounts have a named Senior Support Engineer, and tickets and issues are routed preferentially to them. If the designated engineer is not available (i.e. if the incident happens during non-business hours), there are fallback assignment paths to ensure that Diamond tickets are quickly assigned to senior support staff. This escalation should be an automatic part of the intake process. - -### Account Team Escalation - -During an active incident, the support engineers will be the primary parties engaged in bringing the site back to health. The Account Manager and Customer Success Manager are escalation points for the following scenarios: - -* **Pantheon Support is not responsive**: In the event that Pantheon support is either unresponsive or unhelpful, your account team can escalate the issue internally and use additional resources. - -* **Coordination across multiple teams is required**: The support engineers will loop in resources from other teams as needed, but where there are multiple workstreams required to remedy an issue, the Account Manager or Customer Success Manager can assist in coordinating across teams. - -* **Post-incident review**: Where a formal review is required to produce a Root Cause Analysis, your Customer Success Manager can produce a customer-specific version in addition to any RCA published on the Status portal. +* Managed Updates: If the issue arises from a [Managed Updates](/guides/professional-services/managed-updates) deployment, the first point of escalation is the MU Engagement Manager currently involved in deploying the updates, and secondarily the Manager of the Managed Updates team. ### Professional Services Escalation -Incidents may involve managed services like the Advanced Global CDN, Signal Sciences Integration, and Managed Updates. Support for these layers is handled by the core Support team, and escalation to the appropriate Professional Services team is at the discretion of the support engineers. The support engineers have been trained to handle many AGCDN issues and have tooling that gives them access directly to edge configurations, but there are aspects that may need to be handled by Professional Services. +Incidents may involve managed services like the Advanced Global CDN, WAF Integration, and Managed Updates. Support for these layers is handled by the core Support team, and escalation to the appropriate Professional Services team is at the discretion of the support engineers. The support engineers have been trained to handle many AGCDN issues and have tooling that gives them access directly to edge configurations, but there are aspects that may need to be handled by Professional Services. + +Dedicated CSMs (included for all Enterprise contract customers) have the ability to escalate these issues and have access to resources that can assist with expediting the triaging and remediation of issues. If you need to speak with additional teammates at Pantheon that work in our professional services team, CSMs can facilitate those conversations. ### Executive Escalation @@ -105,10 +83,10 @@ Incident management is a collaboration between Pantheon Support and the customer Key tools that you can use for ongoing diagnosis of issues include: -* New Relic gives you real-time insight into application performance, and the slowest transactions are profiled with full stack traces that can isolate specific code, query, or external services bottlenecks.The New Relic Application Performance Monitor (APM) can be used to track current-state performance and dig into transaction traces to isolate bottlenecks and break points. Refer to the [New Relic](/guides/new-relic) documentation for more information. +* New Relic gives you real-time insight into application performance, and the slowest transactions are profiled with full stack traces that can isolate specific code, query, or external services bottlenecks. The New Relic Application Performance Monitor can be used to track current-state performance and dig into transaction traces to isolate bottlenecks and break points. Refer to the [New Relic](/guides/new-relic) documentation for more information. * MySQL, PHP, and Nginx logs provide forensic data for incident review. Refer to [Log Files on Pantheon](/guides/logs-pantheon) -* ACDN logs can be piped directly into customer-managed log management applications. Setup by Professional Services is required. +* AGCDN logs can be piped directly into customer-managed log management applications. Setup by Professional Services is required. The Customer Success Engineering team will work with you through the existing emergency ticket. If additional issues are uncovered you may want to open a new ticket to allow for a cleaner set of interactions, especially if additional Pantheon resources are brought in for review and assistance. diff --git a/source/content/guides/disaster-recovery/04-incident-remediation.md b/source/content/guides/disaster-recovery/04-incident-remediation.md index ade12dd9a6..3687e9220c 100644 --- a/source/content/guides/disaster-recovery/04-incident-remediation.md +++ b/source/content/guides/disaster-recovery/04-incident-remediation.md @@ -4,7 +4,7 @@ subtitle: Incident Remediation description: Bring a site back from downtime and implement post-recovery actions tags: [dashboard, webops, workflow] contributors: [joshlieb, joan-ing] -reviewed: "2021-07-26" +reviewed: "2024-07-30" type: guide permalink: docs/guides/disaster-recovery/incident-remediation editpath: disaster-recovery/04-incident-remediation.md @@ -21,13 +21,13 @@ Bringing a site back from downtime and remediating the cause of downtime to ensu ## External Threats -The Signal Sciences and Advanced GCDN layers are primarily managed by Pantheon’s Professional Services team, with some updates and support tasks performed by the Customer Success Engineering team, which also performs intake on the initial request. This ensures that responses can meet the contracted SLA, and Pantheon aims to escalate/reassign to Professional Services on an as needed basis. +The WAF and Advanced GCDN layers are primarily managed by Pantheon’s Professional Services team, with some updates and support tasks performed by the Customer Success Engineering team, which also performs intake on the initial request. This ensures that responses can meet the contracted SLO, and Pantheon aims to escalate/reassign to Professional Services on an as needed basis. In the event of an attack, exploit, or other issue related to the global edge, file a ticket via the normal support channels, with an on-call emergency ticket filed in cases where downtime or serious service degradation occurs, and notify the Pantheon account team via Slack. ## Edge Failover -Recovery of a site may take minutes, but time to recovery can be uncertain. Additional features have been implemented at the Global CDN level to provide a more immediate solution. These features minimize downtime while the specific issues are remediated. +Recovery of a site may take minutes, but time to recovery can be uncertain. Additional features can be implemented at the CDN layer to provide a more immediate solution. These features minimize downtime while the specific issues are remediated. ### Experience Protection @@ -35,12 +35,11 @@ The Global CDN natively provides a layer of protection via the full-page cache. ### Synthetic Responses -A set of static pages can be hosted directly and when certain failure conditions are detected, traffic can be redirected to a placeholder. The placeholder will provide a minimally acceptable user experience rather than error messages and a completely unreachable site. +A set of static pages can be hosted directly and when certain failure conditions are detected, traffic can be redirected to a placeholder. The placeholder will provide a minimally acceptable user experience rather than error messages and a completely unreachable site. These custom rules require an [Advanced Global CDN](/guides/agcdn) subscription. ## Infrastructure Failover In cases where the Google Cloud Platform infrastructure becomes compromised, Pantheon support can trigger a Multizone failover to redirect traffic at the load-balancing layer to a backup cluster of application servers on an alternate zone. For more information, refer to the [Multizone Failover](/multizone-failover) documentation. - Multizone failover is not designed to protect against issues on the Global CDN, on the load balancing layer, or at the application level. The automated monitoring that triggers a failover condition is focused on infrastructure issues. The zonal redundancy has an identical codebase, a continually replicated database, and uses a common filesystem, application issues would cause the same failure conditions regardless of zone. Failover has an impact on the Object Cache service - the cache will be automatically rebuilt in the new zone on failover, but this is transactionally heavy, and the site should be tested to determine the performance impact of a mass cache rebuild. This test can be scheduled by filing a support ticket. @@ -61,7 +60,6 @@ In cases where the site code, database, or assets have become corrupted or compr #### Managed Updates Deployment Issue As part of the Managed Updates deployment process, a Multidev will be cloned from the Live environment. It will be used primarily for testing, but also as a backup. If the Live deployment fails, results in a regression, or compromises the site, this Multidev will be used as the source to restore Live to a pre-deploy state. - #### Codebase is Unrecoverable The codebase can be restored from a selected backup via Terminus - the Dashboard **Restore Tools** restore all aspects of the site, and cannot be used to selectively restore. For more information, refer to the [Backup Restore](/terminus/commands/backup-restore) documentation information. @@ -69,12 +67,10 @@ The codebase can be restored from a selected backup via Terminus - the Dashboard If a bad commit has been deployed to your Pantheon site, you can roll back the commit using Git. The process depends on the nature of the change and whether it involves core updates or upstream updates, etc. For more information, refer to the [Undo Commits](/undo-commits) documentation. #### Database and Filesystem Issues -The **Database/files** tools on the Site Dashboard can be used to clone either the files or database from a different environment (Test to Live, for example). For more information, refer to the [Database Workflow](/database-workflow) docuemntation. - +The **Database/files** tools on the Site Dashboard can be used to clone either the files or database from a different environment (Test to Live, for example). For more information, refer to the [Database Workflow](/database-workflow) documentation. #### Restoring a Database from a Backup The database can be restored from a selected backup via Terminus. The Dashboard **Restore** tools restore all aspects of the site, and cannot be used to restore selectively. For more information, refer to the [Backup Restore](/terminus/commands/backup-restore) documentation. - #### Restoring a Database from an External Dump -The database can be restored from an external dump using the **Database/files** tools on the Site Dashboard. An archive file can be uploaded, or a MySQL archive accessed on a remote location. For more information, refer to the [Database Workflow](/database-workflow) docuemntation. +The database can be restored from an external dump using the **Database/files** tools on the Site Dashboard. An archive file can be uploaded, or a MySQL archive accessed on a remote location. For more information, refer to the [Database Workflow](/database-workflow) documentation. diff --git a/source/content/guides/launch/03-plans.md b/source/content/guides/launch/03-plans.md index 3eab9718b4..7d3e69973d 100644 --- a/source/content/guides/launch/03-plans.md +++ b/source/content/guides/launch/03-plans.md @@ -12,6 +12,7 @@ cms: [wordpress, drupal] audience: [agency, business] product: [--] integration: [--] +reviewed: "2024-08-07" --- This section provides information on how to upgrade from a free account to a paid plan by adding billing information or inviting a business owner to pay. @@ -20,21 +21,24 @@ Contract customers must contact their account manager when they're ready to upgr ## Use Your Own Card -Add your payment method to upgrade and pay for the site now: +There are several places within the Pantheon Dashboard you can upgrade your site plan: -1. [Go to the Site Dashboard](/guides/account-mgmt/workspace-sites-teams/sites#site-dashboard), and click **Upgrade** next to the site's name. +1. [Go to the Site Dashboard](/guides/account-mgmt/workspace-sites-teams/sites#site-dashboard), and click **Upgrade** next to the site's name. +2. Within your personal workspace, navigate to Settings>Subscriptions. Click the 'Actions' dropdown and choose, **Change Site Plan** +3. If you are in a workspace, you can navigate to Settings>Billing. Scroll to see **Supported Sites** table. Within that table, if you are the site owner, you'll be able to click the **Site Plan** column to upgrade or downgrade your site. -1. Click the **Select** button under the [plan you choose](https://pantheon.io/plans/pricing/). +From the site upgrade and downgrade page, complete the following steps: -1. Continue to the **Choose Billing** step, and then select the billing frequency: [**Pay Annually**](/guides/account-mgmt/plans/pricing) or **Pay Monthly**. - - - If you've chosen a **Performance Plan**, choose the size and click **Continue**. +1. Click the **Select** button under the [plan you choose](https://pantheon.io/plans/pricing/). Select the billing frequency: [**Pay Annually**](/guides/account-mgmt/plans/pricing) or **Pay Monthly** at the top of the page. + - If you've chosen a **Performance Plan**, choose the size and click **Choose Performance**. - If you've chosen a **Basic Plan**, click **Continue**. -1. Click **+ Add New Card** and enter the credit card information, then click **Add Card** to save the card information. + - If you've chosen **Custom**, please fill out the contact field to be contacted by a customer support agent. + +2. Click **+ Add New Card** and enter the credit card information, then click **Add Card** to save the card information. If you already have a card saved, it should be available in this section. -1. Click **Continue** and review your information carefully, then click **Place Your Order** to confirm your purchase. +3. Click **Continue** and review your information carefully, then click **Place Your Order** to confirm your purchase. - [Contact Support](/guides/support/contact-support) if you need any help. diff --git a/source/content/guides/logs-pantheon/01-introduction.md b/source/content/guides/logs-pantheon/01-introduction.md index 9ca991d784..b9b3520968 100644 --- a/source/content/guides/logs-pantheon/01-introduction.md +++ b/source/content/guides/logs-pantheon/01-introduction.md @@ -1,5 +1,5 @@ --- -title: Log Files on Pantheon +title: Environment Log Files on Pantheon subtitle: Introduction description: Use logs on Pantheon to help find, debug, and isolate potential problems. contenttype: [guide] @@ -14,7 +14,11 @@ contributors: [whitneymeredith] permalink: docs/guides/logs-pantheon --- -Log files track and record your site's activity to help you find, debug, and isolate current or potential problems on your site. Each environment (Multidev, Dev, Test, and Live) has individual log files, which can be obtained via SFTP. Application-level logs can be accessed directly through Drupal. You can use [New Relic® Performance Monitoring](/guides/new-relic) in conjunction with logs to help diagnose and fix errors and performance bottlenecks. +Log files track and record your the activity within one environment to help you find, debug, and isolate current or potential problems on your site. Each environment (Multidev, Dev, Test, and Live) has individual log files, which can be obtained via SFTP. + +These logs are separate from: + * application-level logs that can be accessed directly through WordPress and Drupal. You can use [New Relic® Performance Monitoring](/guides/new-relic) in conjunction with logs to help diagnose and fix errors and performance bottlenecks. + * the [workflow logs](/workflow-logs), which are available in the site dashboard, and record details around events like code deployments and the creation of Multidev environments. The server timezone and log timestamps are in UTC (Coordinated Universal Time). diff --git a/source/content/guides/logs-pantheon/02-access-logs.md b/source/content/guides/logs-pantheon/02-access-logs.md index a5bfcde04c..a27378d874 100644 --- a/source/content/guides/logs-pantheon/02-access-logs.md +++ b/source/content/guides/logs-pantheon/02-access-logs.md @@ -1,5 +1,5 @@ --- -title: Log Files on Pantheon +title: Environment Log Files on Pantheon subtitle: Access Logs with SFTP description: Access your logs through SFTP on the Pantheon platform. contenttype: [guide] diff --git a/source/content/guides/logs-pantheon/04-automate-log-downloads.md b/source/content/guides/logs-pantheon/04-automate-log-downloads.md index 6d48cb3198..4f84ccf946 100644 --- a/source/content/guides/logs-pantheon/04-automate-log-downloads.md +++ b/source/content/guides/logs-pantheon/04-automate-log-downloads.md @@ -1,5 +1,5 @@ --- -title: Log Files on Pantheon +title: Environment Log Files on Pantheon subtitle: Automate Log Downloads description: Learn how to automate your log downloads. contenttype: [guide] diff --git a/source/content/guides/logs-pantheon/05-nginx-access-logs.md b/source/content/guides/logs-pantheon/05-nginx-access-logs.md index a98a92c53d..cf65bcc0fa 100644 --- a/source/content/guides/logs-pantheon/05-nginx-access-logs.md +++ b/source/content/guides/logs-pantheon/05-nginx-access-logs.md @@ -1,5 +1,5 @@ --- -title: Log Files on Pantheon +title: Environment Log Files on Pantheon subtitle: Parse Nginx Access Logs with GoAccess description: Learn how to parse the nginx-access.log file with GoAccess. contenttype: [guide] diff --git a/source/content/guides/logs-pantheon/06-faq-logs.md b/source/content/guides/logs-pantheon/06-faq-logs.md index edacf1df86..c409f85082 100644 --- a/source/content/guides/logs-pantheon/06-faq-logs.md +++ b/source/content/guides/logs-pantheon/06-faq-logs.md @@ -1,5 +1,5 @@ --- -title: Log Files on Pantheon +title: Environment Log Files on Pantheon subtitle: Frequently Asked Questions description: Get answers to your log questions. contenttype: [guide] diff --git a/source/content/guides/professional-services/01-introduction.md b/source/content/guides/professional-services/01-introduction.md index 534892daca..dd1cdd86b3 100644 --- a/source/content/guides/professional-services/01-introduction.md +++ b/source/content/guides/professional-services/01-introduction.md @@ -76,7 +76,7 @@ The following services are not fulfilled by the Professional Services team but a ### Customer Success Management -Pantheon Customer Success Managers (**CSMs**) work proactively with you, helping you build agile website operations, achieve business goals, adopt best practices, and stay ahead of the competition. A dedicated CSM is included with all Diamond Accounts and is available as an add-on for Gold and Platinum Accounts. Your dedicated CSM meets with you regularly to provide site performance audits, review team usage of the platform, extend early access to new features, and ensure that you are getting the most value possible from the platform. [Contact us](https://pantheon.io/contact-us) for details. +Pantheon Customer Success Managers (**CSMs**) work proactively with you, helping you build agile website operations, achieve business goals, adopt best practices, and stay ahead of the competition. A dedicated CSM is included for all Enterprise (contract) Accounts. Your dedicated CSM meets with you regularly to provide site performance audits, review team usage of the platform, extend early access to new features, and ensure that you are getting the most value possible from the platform. [Contact us](https://pantheon.io/contact-us) for details. ### Expert Training diff --git a/source/content/guides/professional-services/03-onboarding.md b/source/content/guides/professional-services/03-onboarding.md index 622c26baa2..e97871836d 100644 --- a/source/content/guides/professional-services/03-onboarding.md +++ b/source/content/guides/professional-services/03-onboarding.md @@ -42,7 +42,7 @@ The following services are not fulfilled by the Onboarding Manager but are addit ### Customer Success Management -Pantheon Customer Success Managers (**CSMs**) work proactively with you, helping you build agile website operations, achieve business goals, adopt best practices, and stay ahead of the competition. A dedicated CSM is included with all Diamond Accounts and is available for Gold and Platinum Accounts. Your dedicated CSM meets with you regularly to provide site performance audits, review team usage of the platform, extend early access to new features, and ensure that you are getting the most value possible from the platform. [Contact us](https://pantheon.io/contact-us?docs) for details. +Pantheon Customer Success Managers (**CSMs**) work proactively with you, helping you build agile website operations, achieve business goals, adopt best practices, and stay ahead of the competition. A dedicated CSM is included for all Enterprise (contract) Accounts. Your dedicated CSM meets with you regularly to provide site performance audits, review team usage of the platform, extend early access to new features, and ensure that you are getting the most value possible from the platform. [Contact us](https://pantheon.io/contact-us?docs) for details. ### Expert Training diff --git a/source/content/guides/secure-development/02-secure-integration.md b/source/content/guides/secure-development/02-secure-integration.md index 87cf592f79..aac7232fe9 100644 --- a/source/content/guides/secure-development/02-secure-integration.md +++ b/source/content/guides/secure-development/02-secure-integration.md @@ -122,6 +122,10 @@ Yes, it's configured on a site-by-site basis and works from all environments (De Secure Integration connects to the same external resource from all environments. If you need to connect to a separate resource, or test against a “test” version of the external resource, you will need an additional Integration configured to point to that resource. The additional Integration would be available to all environments. +### Why does Secure Integration use 127.0.0.1 or loopback IP address? + +Secure Integration uses the loopback IP address 127.0.0.1 with the PHP constant (i.e. 127.0.0.1:PANTHEON_SOIP_YOURSERVICENAME) to establish communication between the Pantheon-hosted site and the external resource/service. + ### Is Secure Integration a replacement for authentication? No, Secure Integration is not a replacement for authentication, but rather is a [defense-in-depth](https://en.wikipedia.org/wiki/Defense_in_depth_%28computing%29) measure. diff --git a/source/content/guides/support/01-scope.md b/source/content/guides/support/01-scope.md index 8c9a4a7829..3f1b056342 100644 --- a/source/content/guides/support/01-scope.md +++ b/source/content/guides/support/01-scope.md @@ -25,7 +25,7 @@ Pantheon offers a range of Account options that include the features required fo | Account Tier | Silver | Gold | Platinum | Diamond | |-----------------------------------------------------------|-----------------------------------|-----------------------------------|------------------------|--------------------| -| **Scope** | Platform | Technical | Performance | Dedicated | +| **Scope** | Platform | Technical | Performance | Dedicated Team | | [**Chat**](/guides/support/contact-support/#real-time-chat-support) | 24x5 | 24x7 | 24x7: Priority | 24x7: Top Priority | | [**Tickets**](/guides/support/contact-support/#ticket-support) | ❌ | 24x5: 8 Hours | 24x7: 2 Hours | 24x7: 1 Hour | | [**Emergency On-Call**](/guides/support/contact-support/#premium-technical-support-and-on-call-services) | ❌ | ❌ | 24x7: 1 Hour | 24x7: 15 Minutes | @@ -52,7 +52,7 @@ Pantheon's [Sales](https://pantheon.io/contact-sales?docs) and Billing teams are - Advanced Workflows - Complex Caching Use Cases - Terminus -- **Dedicated**: +- **Dedicated Team**: - A dedicated Diamond team for bespoke site debugging ## Range of Support diff --git a/source/content/guides/wordpress-composer/02-wordpress-composer-managed.md b/source/content/guides/wordpress-composer/02-wordpress-composer-managed.md index 99f8a21aa2..408f82aabf 100644 --- a/source/content/guides/wordpress-composer/02-wordpress-composer-managed.md +++ b/source/content/guides/wordpress-composer/02-wordpress-composer-managed.md @@ -123,10 +123,6 @@ composer update vendor/package Replace `vendor/package` with the package name you want to update. This will update only the named package to the latest version that matches the version constraints in your `composer.json` file. -## Known Issues - -- There is currently a known issue with WordPress Composer Managed not supporting WordPress Multisite with subdirectories. [Alternative implementations](/wordpress-ic) of WordPress with Composer may be used for this use case. - ## Report an Issue Create an [issue in the Github repo](https://github.com/pantheon-systems/wordpress-composer-managed/issues) for the team to review and address if you discover an issue with the WordPress Composer Managed upstream. diff --git a/source/content/modules-known-issues.md b/source/content/modules-known-issues.md index eb25094998..550c89d2cc 100644 --- a/source/content/modules-known-issues.md +++ b/source/content/modules-known-issues.md @@ -160,20 +160,6 @@ ___ ___ -## [Feeds](https://www.drupal.org/project/feeds) - - - -**Issue:** When attempting to manually import using the Feeds plugin in cron, the following error message is displayed: - -`RuntimeException: File /tmp/feeds_http_fetcherOK5Hbi does not exist. in Drupal\feeds\Result\FetcherResult->checkFile() (line 53 of /code/web/modules/contrib/feeds/src/Result/FetcherResult.php)` - -**Solution:** The [Persistent Temporary Path Workaround](/guides/filesystem/tmp#persistent-temporary-path-workaround) will not work for this issue because the `/tmp` directory is hardcoded, and therefore not part of the module's configuration. The solution proposed for the persistent temporary path workaround does not work on load balanced environments and relies on a persistent directory. Note that Pantheon cautions against putting these files outside the `tmp` directory because the file will not be deleted automatically after the transfer is complete, which can create a very large set of files. - -We recommend following the issue on [Drupal](https://www.drupal.org/project/feeds/issues/2912130) and requesting that the module maintainer fix the module. - -___ - ## [Front](https://www.drupal.org/project/front) diff --git a/source/content/monthly-maintenance.md b/source/content/monthly-maintenance.md new file mode 100644 index 0000000000..f431d7fe46 --- /dev/null +++ b/source/content/monthly-maintenance.md @@ -0,0 +1,24 @@ +--- +title: Monthly Platform Maintenance +description: Understand Pantheon's monthly maintenance schedule and policy. +contributors: [rachelwhitton] +contenttype: [doc] +reviewed: 2024-08-08 +--- + +Pantheon uses monthly maintenance windows to perform essential updates and improvements to the platform’s software and infrastructure. This hour-long window will not impact site visitors or site availability. Access to the Pantheon Dashboard and workflows may experience temporary interruptions. + +## Schedule +The following schedule is used to perform monthly platform maintenance: + +* **Frequency**: Monthly +* **Day**: Second Tuesday of each month +* **Time**: 6 PM to 7 PM Pacific Time +* **Duration**: 1 hour + +### Communication and Support +An update on the [Status page](https://status.pantheon.io/) will be posted on the first Thursday of each month to alert you about upcoming maintenance the following Tuesday. At the same time, the Dashboard will feature a banner about the upcoming maintenance. If no maintenance is required for a given month, no status page will be posted. + +When necessary, we will leverage the same window to perform maintenance that may impact live sites. In these cases, we will notify you at least 30 days before the maintenance window. + +If you have any questions during scheduled maintenance windows, please [contact support](/guides/support/contact-support/). diff --git a/source/content/ssh-keys.md b/source/content/ssh-keys.md index fee503a270..a2af2479f2 100644 --- a/source/content/ssh-keys.md +++ b/source/content/ssh-keys.md @@ -44,7 +44,7 @@ Pantheon supports ECDSA and RSA SSH keys. Currently, we do not support `ed25519` 1. Open your terminal and enter the following command to generate a key: ```bash{promptUser: user} - ssh-keygen -t rsa + ssh-keygen -t rsa -m PEM ``` Do not edit the default location of `~/.ssh/id_rsa` unless you have a reason to change it. If the command says the key already exists, you can either overwrite it, or continue to the next step with your existing key. @@ -79,7 +79,7 @@ Pantheon supports ECDSA and RSA SSH keys. Currently, we do not support `ed25519` 1. Open your terminal and enter the following command to generate a key. This command works for Windows 10: ```bash{promptUser: winshell} - ssh-keygen -t rsa + ssh-keygen -t rsa -m PEM ``` Do not edit the default location of `~/.ssh/id_rsa` unless you have a reason to change it. If the command says the key already exists, you can either overwrite it, or continue to the next step with your existing key. diff --git a/source/content/workflow-logs.md b/source/content/workflow-logs.md index 2257e7cbea..ce59b0fde3 100644 --- a/source/content/workflow-logs.md +++ b/source/content/workflow-logs.md @@ -1,6 +1,6 @@ --- -title: "Early Access: Workflow Logs" -description: "Guide to feature access, functionality, and program details" +title: "Workflow Logs" +description: "Learn where to find workflow logs and understand feature functionality." showtoc: true reviewed: "2024-04-26" contenttype: [doc] @@ -12,18 +12,10 @@ product: [custom-upstreams] integration: [--] --- - - -Workflow Logs are available for [Early Access](/guides/support/early-access/) participants. - -While this feature is in Early Access, Pantheon's development team releases new functionality often. Please review Pantheon's [Software Evaluation Licensing Terms](https://legal.pantheon.io/#contract-hkqlbwpxo) for more information about support expectations for and access to Pantheon's pre-release software. - - - Workflows serve as the backbone of the Pantheon platform, orchestrating operations for every user action. Whether it's pushing a commit or creating a new Multidev environment, workflows ensure the intended end state for a site is achieved. The Workflow Logs feature is specifically designed to provide enhanced visibility into the status of user-relevant workflows, offering critical insights for monitoring and troubleshooting purposes. ## Accessing Workflow Logs -From your workspace dashboard, select a site. You'll find the tab for workflow logs conveniently located next to the support tab. +From your workspace dashboard, select a site. You'll find the tab for workflow logs conveniently located next to the Support tab in the top right corner. ![Access workflows tab from site dashboard](../images/dashboard/new-dashboard/workflow-logs/access-workflow-logs.png) @@ -32,7 +24,7 @@ Simply click on the tab to access. ![Access workflows tab from site dashboard](../images/dashboard/new-dashboard/workflow-logs/access-workflow-logs-tab.png) ## Functionality -### Status Indicators +### Status indicators Each workflow's status is represented by a color code. ![Workflow status idicators color codes](../images/dashboard/new-dashboard/workflow-logs/status-indicator.png) @@ -40,18 +32,18 @@ Each workflow's status is represented by a color code. Alongside the status, you'll find essential details such as the corresponding environment, start time, end time, and the team member who initiated the workflow. If a workflow spans multiple environments, the environment field may appear blank. ![Workflow status details example for success](../images/dashboard/new-dashboard/workflow-logs/status-details-success.png) -### Details Section +### Details section Workflows may contain additional details, indicated by a caret on the left side of the workflow row. To view these details, click on the row, and a dropdown will appear. -**Code Sync**: Any workflow containing a code sync will have the commit hash and reference. +**Code sync**: Any workflow containing a code sync will have the commit hash and reference. ![Workflow status details for code sync](../images/dashboard/new-dashboard/workflow-logs/details-code-sync.png) -**Error Details**: If a workflow does not complete successfully, please refer to the details section for additional information to assist you in troubleshooting. +**Error details**: If a workflow does not complete successfully, please refer to the details section for additional information to assist you in troubleshooting. ![Workflow status details for error code](../images/dashboard/new-dashboard/workflow-logs/details-error-code.png) -**Build Logs**: For sites utilizing Integrated Composer, access the build log to review error details for each triggered build workflow. Please note that logs can be long – the inner window will become scrollable to accommodate. +**Build logs**: For sites utilizing Integrated Composer, access the build log to review error details for each triggered build workflow. Please note that logs can be long – the inner window will become scrollable to accommodate. ![Workflow status details for composer build logs](../images/dashboard/new-dashboard/workflow-logs/details-ic.png) @@ -59,43 +51,17 @@ If there is an error in the build, details regarding the error will likely be hi ![Workflow status details for composer build logs error](../images/dashboard/new-dashboard/workflow-logs/details-ic-error.png) -**Quicksilver Posted Messages**: If you have sites using Quicksilver, view the status of Quicksilver tasks in the details section. Any posted messages scripted to appear will also be displayed here. +**Quicksilver posted messages**: If you have sites using Quicksilver, you can view the status of Quicksilver tasks in the details section. Any scripted messages will also be displayed here. Please note that the status currently reflects whether the Quicksilver scripts have successfully started. For the completion status of the scripts themselves, please review the contents of the posted messages. ![Workflow status details for quicksilver](../images/dashboard/new-dashboard/workflow-logs/quicksilver.png) -### Filtering Options +### Filtering options By default, the table displays the most recent workflows at the top, encompassing all environments and completion statuses. Utilize the filter feature to streamline your search by specifying a particular environment or completion status. ![Workflow filtering options](../images/dashboard/new-dashboard/workflow-logs/filter.png) -### Downloading Logs +### Downloading logs Workflows are stored for a limited duration on the Pantheon dashboard. Use the 'Download to CSV' button to export all visible workflows to a CSV file for archival purposes. ![Workflow download options](../images/dashboard/new-dashboard/workflow-logs/download.png) - -## Ongoing Improvements -Throughout the duration of the early access program, our team will continuously implement improvements for a better Workflow Logs experience. These improvements will be deployed as soon as they are finalized. Planned improvements include: - -**Real-time Progress Notifications**: Progress estimations will be added to enhance the experience of monitoring in-progress workflows. Upon completion of a workflow, the status will automatically update in the workflow logs table. Additionally, the tab will feature alerts indicating status changes through a visible badge. - -**Table Sorting**: Instead of the default sorting by start time, the table will become sortable by any column header in both ascending and descending orders. - -**Improved Troubleshooting**: We will also be enhancing troubleshooting capabilities for common errors. The list includes, but not limited to: -* Backup failures -* File import/export errors -* Merge conflicts - -Furthermore, we will actively triage your feedback throughout the program to prioritize and implement further improvements based on your input. - -## Our Ask -If you have any questions while using workflow logs, please don't hesitate to ask. We truly value your feedback, so please send any comments our way. Here are some specific points we'd like you to consider: -* **Listed Workflows**: The list in the table is curated to enhance your development workflow by focusing on the most relevant tasks. Therefore, workflows that are strictly related to the Pantheon platform will not be displayed. If you encounter any workflows that you believe should be included or notice any discrepancies, please don't hesitate to inform us. -* **Functionality Feedback**: We're eager to hear your thoughts on the usability, performance, and responsiveness of the feature documented in this guide. -* **Documentation Input**: This early access guide serves as a precursor to the update on the Pantheon documentation that will cover this feature. If you have any feedback on the presented information or suggestions for additional details, please share them with us. - -## Request early access - -If you're interested in getting early access to Workflow Logs, we invite you to join our early access program. Simply fill out the [request form](https://docs.google.com/forms/d/e/1FAIpQLSfky2c4oEOv6Wyq9drp0oxh8hhP3Zkphb_e1GlV7RK_aHzvug/viewform) to apply. This will allow you to start using the feature and provide us with valuable feedback to help improve it further. - -Alternatively, you can email any feedback or questions directly to serena.xu@pantheon.io. diff --git a/source/images/dashboard/new-dashboard/platinum-support-site-dashboard.png b/source/images/dashboard/new-dashboard/platinum-support-site-dashboard.png new file mode 100644 index 0000000000..4f01a93591 Binary files /dev/null and b/source/images/dashboard/new-dashboard/platinum-support-site-dashboard.png differ diff --git a/source/images/release-notes/2024/new-site-plan-experience.png b/source/images/release-notes/2024/new-site-plan-experience.png new file mode 100644 index 0000000000..cdc608c6b4 Binary files /dev/null and b/source/images/release-notes/2024/new-site-plan-experience.png differ diff --git a/source/images/release-notes/2024/papc-max-age-filtered.png b/source/images/release-notes/2024/papc-max-age-filtered.png new file mode 100644 index 0000000000..45c1a57512 Binary files /dev/null and b/source/images/release-notes/2024/papc-max-age-filtered.png differ diff --git a/source/images/release-notes/2024/workflow-logs-key-features.jpg b/source/images/release-notes/2024/workflow-logs-key-features.jpg new file mode 100644 index 0000000000..c5b97d5885 Binary files /dev/null and b/source/images/release-notes/2024/workflow-logs-key-features.jpg differ diff --git a/source/releasenotes/2024-07-23-wordpress-6-6-1.md b/source/releasenotes/2024-07-23-wordpress-6-6-1.md new file mode 100644 index 0000000000..ae85dbf759 --- /dev/null +++ b/source/releasenotes/2024-07-23-wordpress-6-6-1.md @@ -0,0 +1,15 @@ +--- +title: WordPress 6.6.1 release +published_date: "2024-07-24" +categories: [wordpress, action-required] +--- + +The latest version of WordPress, [6.6.1](https://wordpress.org/news/2024/07/wordpress-6-6-1-maintenance-release/), became available on Pantheon as of July 23, 2024. + +### Action required +Upgrade to WordPress 6.6.1 right from your Pantheon dashboard or Terminus for the latest fixes. See [related documentation for how to apply core updates](/core-updates#apply-upstream-updates-via-the-site-dashboard). + +

Highlights

+ +* [7 bug fixes in Core](https://core.trac.wordpress.org/query?status=closed&id=!61692&milestone=6.6.1&group=status&col=id&col=summary&col=owner&col=type&col=priority&col=component&col=version&col=keywords&order=priority) +* [9 bug fixes in the Block Editor](https://core.trac.wordpress.org/ticket/61692#comment:4) diff --git a/source/releasenotes/2024-07-25-workflow-logs.md b/source/releasenotes/2024-07-25-workflow-logs.md new file mode 100644 index 0000000000..2a525b4b9c --- /dev/null +++ b/source/releasenotes/2024-07-25-workflow-logs.md @@ -0,0 +1,19 @@ +--- +title: "Introducing Workflow Logs: General availability " +published_date: "2024-07-25" +categories: [new-feature, user-interface] +--- + +We’re excited to announce the launch of Workflow Logs, a powerful new feature enhancing visibility and streamlining troubleshooting operations on the Pantheon platform. Accessible directly from your site dashboard, next to the Support tab located in the top right corner, Workflow Logs provide critical insights for effectively managing your workflows. + +![Workflow logs - key features](../images/release-notes/2024/workflow-logs-key-features.jpg) + +## Key features: +* **Status overview**: View key information on the status of workflows, including progress statuses, along with additional details such as start time, end time, initiating team member, and environment. +* **In-depth details**: Access code sync, error details, build logs, and Quicksilver posted messages from the expandable sections. +* **Filtering**: The workflows displayed comprise a curated list of user-relevant workflows. Further narrow your focus by utilizing filters to quickly find specific workflows by environment or completion status. +* **Archiving**: Export all visible workflows to a CSV file for archival purposes with the 'Download to CSV' button. + +[View all features](/workflow-logs) + +Our team will continuously enhance Workflow Logs through a planned list of improvements and ongoing feedback collection. diff --git a/source/releasenotes/2024-07-29-pantheon-mu-plugin-1-5-0.md b/source/releasenotes/2024-07-29-pantheon-mu-plugin-1-5-0.md new file mode 100644 index 0000000000..6264b1c722 --- /dev/null +++ b/source/releasenotes/2024-07-29-pantheon-mu-plugin-1-5-0.md @@ -0,0 +1,19 @@ +--- +title: Pantheon MU Plugin v1.5.0 release +published_date: "2024-07-29" +categories: [wordpress, plugins] +--- + +The Pantheon MU Plugin [v1.5.0](https://github.com/pantheon-systems/pantheon-mu-plugin/releases) update is now available. This latest update is included with next version of WordPress and can be installed on [WordPress (composer managed)](https://docs.pantheon.io/guides/wordpress-composer) installs using composer update or by checking for updates in the dashboard. + +### What's new? + +This update introduces a new "comptibility layer" feature designed to enhance the compatibility of your site’s plugins. Here are the key highlights: + +* **Automatic compatibility fixes:** The compatibility layer automatically detects many plugins listed in our [WordPress Plugins and Themes with Known Issues](https://docs.pantheon.io/plugins-known-issues) guide. If a plugin is detected, relevant fixes are applied automatically. + +* **Compatibility reports:** If a plugin is detected but no fix is available, the compatibility layer generates a report for you. + +* **Site health integration:** Compatibility reports are added to a new section of the Site Health page, accessible under the Tools menu in your WordPress administration dashboard. + +Upgrade now to take advantage of these enhancements and ensure your plugins work seamlessly with your WordPress site. diff --git a/source/releasenotes/2024-07-29-wordpress-composer-managed-1-31-1-update.md b/source/releasenotes/2024-07-29-wordpress-composer-managed-1-31-1-update.md new file mode 100644 index 0000000000..679d33bfd8 --- /dev/null +++ b/source/releasenotes/2024-07-29-wordpress-composer-managed-1-31-1-update.md @@ -0,0 +1,27 @@ +--- +title: WordPress (composer managed) upstream 1.31.1 update now available +published_date: "2024-07-29" +categories: [wordpress, action-required] +--- + +The update is now available for the [WordPress (composer managed)](/guides/wordpress-composer/wordpress-composer-managed) upstream. Previously, the 1.31.0 update was released and then quickly rolled back. This release fixes issues with subdirectory multisite that were discovered following that earlier release, as well as implements the filter added to the [Pantheon MU Plugin in version 1.4.5](/2024/07/pantheon-mu-plugin-1-4-5). + +### Highlights +* Removes code that for handling wp-admin URLs. This code was not working as intended and testing revealed it to be unnecessary. +* Adds a filter to disable the subdirectory multisite custom wp-content directory warning. + +For more details, refer to the [WordPress (Composer Managed) changelog](https://github.com/pantheon-systems/wordpress-composer-managed/blob/default/CHANGELOG.md). + +#### Applying updates + +If you run into merge conflicts with this update, you can manually resolve by running the following command: + +```bash +git pull -Xtheirs https://github.com/pantheon-upstreams/wordpress-composer-managed.git main +git push origin master +``` + +For assistance with managing merge conflicts, refer to our documentation on [auto-resolving via the dashboard](https://docs.pantheon.io/core-updates#apply-upstream-updates-manually-from-the-command-line-to-resolve-merge-conflicts) or [manually resolving via the command line](https://docs.pantheon.io/guides/git/resolve-merge-conflicts). + +#### Additional notes +This release should show up on your dashboard as an available update. It is advised to apply updates manually using the documentation above if there are conflicts, whether you previously applied the 1.31.0 update or not. \ No newline at end of file diff --git a/source/releasenotes/2024-08-06-wordpress-composer-managed-1-32-0.md b/source/releasenotes/2024-08-06-wordpress-composer-managed-1-32-0.md new file mode 100644 index 0000000000..48d393c9e9 --- /dev/null +++ b/source/releasenotes/2024-08-06-wordpress-composer-managed-1-32-0.md @@ -0,0 +1,24 @@ +--- +title: WordPress (composer managed) upstream 1.32.0 update now available +published_date: "2024-08-06" +categories: [wordpress, action-required] +--- + +The 1.32.0 update is now available for the [WordPress (composer managed)](/guides/wordpress-composer/wordpress-composer-managed) upstream. This release is a maintenance update to resolve some inconsistencies with the upstream distribution of WordPress (composer managed). Most notably, this update includes a removal of decoupled packages that were erroneously being added to the non-decoupled upstream as well as other minor updates. + +For more details, refer to the [WordPress (Composer Managed) changelog](https://github.com/pantheon-systems/wordpress-composer-managed/blob/default/CHANGELOG.md). + +#### Action required + +To benefit from these updates and ensure your site is using the most current version, you need to apply the update to your WordPress (composer managed) site or upstream. + +#### Applying updates + +This update aims to resolve known issues that could lead to merge conflicts. However, conflicts may still occur, especially as we are continuing to make changes in the Early Access (EA) phase. If you run into merge conflicts with this update, you can manually resolve them by running the following command: + +```bash +git pull -Xtheirs https://github.com/pantheon-upstreams/wordpress-composer-managed.git main +git push origin master +``` + +For assistance with managing merge conflicts, refer to our documentation on [auto-resolving via the dashboard](https://docs.pantheon.io/core-updates#apply-upstream-updates-manually-from-the-command-line-to-resolve-merge-conflicts) or [manually resolving via the command line](https://docs.pantheon.io/guides/git/resolve-merge-conflicts). diff --git a/source/releasenotes/2024-08-07-site-plan-checkout-experience.md b/source/releasenotes/2024-08-07-site-plan-checkout-experience.md new file mode 100644 index 0000000000..712a838c30 --- /dev/null +++ b/source/releasenotes/2024-08-07-site-plan-checkout-experience.md @@ -0,0 +1,17 @@ +--- +title: Enhanced site plan experience - Easier upgrades, downgrades and cancellations +published_date: "2024-08-07" +categories: [user-interface] +--- + +Pantheon has revamped the user flow for managing site plans, enhancing the overall checkout experience with streamlined processes and improved usability. + +### Highlights +- **Streamlined user flow:** The new design simplifies the checkout process and improves plan comparisons, resulting in a smoother and more intuitive experience. +- **Adhere to accessibility standards:** We've improved inclusivity and usability by meeting accessibility guidelines and enhancing navigation for all users. +- **Align with the Pantheon Design System:** This ensures consistent visual design, layout, and user interface elements across our platform. + +![New site plan experience](../images/release-notes/2024/new-site-plan-experience.png) + + +For instructions on selecting your site plan, please visit our [documentation](/guides/launch/plans/). diff --git a/source/releasenotes/2024-08-08-pantheon-advanced-page-cache-2-1-0.md b/source/releasenotes/2024-08-08-pantheon-advanced-page-cache-2-1-0.md new file mode 100644 index 0000000000..10226e0661 --- /dev/null +++ b/source/releasenotes/2024-08-08-pantheon-advanced-page-cache-2-1-0.md @@ -0,0 +1,15 @@ +--- +title: WordPress Pantheon Advanced Page Cache 2.1.0 update now available +published_date: "2024-08-08" +categories: [wordpress, plugins] +--- + +The WordPress Pantheon Advanced Page Cache [v2.1.0](https://github.com/pantheon-systems/pantheon-advanced-page-cache/releases) update is now available. This latest update resolves a bug that caused some sites to set the cache max age to 23 hours regardless of the value set in the WordPress admin as well as a minor update to identify if a filter is being used to override the cache. + +### What's new? + +* **Enhanced debugging information:** If the [`pantheon_cache_default_max_age` filter](https://github.com/pantheon-systems/pantheon-advanced-page-cache?tab=readme-ov-file#setting-the-cache-max-age-with-a-filter) is being used anywhere in your code, the message that displays in the dashboard that the filter is in use will now attempt to display the callable function that is hooked to the filter, providing an easier way to get insights into what is happening. + +![Pantheon Advanced Page Cache Max Age filtered message](../images/release-notes/2024/papc-max-age-filtered.png) + +Upgrade the plugin now to take advantage of these improvements and make the most of Pantheon's edge caching layer. diff --git a/src/components/releaseNotePopoverCategorySelector.js b/src/components/releaseNotePopoverCategorySelector.js index 04debaa266..c63a7e77df 100644 --- a/src/components/releaseNotePopoverCategorySelector.js +++ b/src/components/releaseNotePopoverCategorySelector.js @@ -2,7 +2,7 @@ import React, { useState } from "react" import { activeReleaseNoteCategories } from "../data/releaseNoteCategories" import { Button, FlexContainer, Popover } from "@pantheon-systems/pds-toolkit-react" -const ReleaseNotePopoverCategorySelector = ({filters, setFilters, setCurrentPage}) => { +const ReleaseNotePopoverCategorySelector = ({filters, setFilters, setCurrentPage, updateQueryStrings}) => { const [isPopoverOpen, setIsPopoverOpen] = useState(false) // Get the active categories data. @@ -25,6 +25,7 @@ const ReleaseNotePopoverCategorySelector = ({filters, setFilters, setCurrentPage // Move pager to the first page setCurrentPage(1) + updateQueryStrings() } const handleClearCategoriesFilters = () => { diff --git a/src/components/releaseNotesPager.js b/src/components/releaseNotesPager.js index 1edb7512b1..1678839116 100644 --- a/src/components/releaseNotesPager.js +++ b/src/components/releaseNotesPager.js @@ -1,7 +1,8 @@ import React from 'react' import { Icon } from "@pantheon-systems/pds-toolkit-react" +import { navigate } from 'gatsby' -const ReleaseNotesPager = ({currentPage, setCurrentPage, totalPagesRef}) => { +const ReleaseNotesPager = ({currentPage, setCurrentPage, totalPagesRef, queryStrings }) => { const scrollToTop = () => { window.scrollTo({ top: 0, @@ -11,6 +12,7 @@ const ReleaseNotesPager = ({currentPage, setCurrentPage, totalPagesRef}) => { const handlePageChange = (newPage) => { setCurrentPage(newPage) + navigate(`/release-notes/${newPage}/?${queryStrings}`) scrollToTop() } diff --git a/src/templates/releaseNotesListing/index.js b/src/templates/releaseNotesListing/index.js index ff6289dc5b..2e1353a550 100644 --- a/src/templates/releaseNotesListing/index.js +++ b/src/templates/releaseNotesListing/index.js @@ -1,7 +1,8 @@ import React, { useEffect, useState, useRef } from "react" -import { graphql } from "gatsby" +import { graphql, navigate } from "gatsby" import debounce from "lodash.debounce" import Mark from "mark.js" +import { useLocation } from "@reach/router" import Layout from "../../layout/layout/index.js" import SEO from "../../layout/seo.js" @@ -35,6 +36,7 @@ const ReleaseNotesListingTemplate = ({ data }) => { categories: [] }) const [currentPage, setCurrentPage] = useState(1) + const [queryStrings, setQueryStrings] = useState('') const notesPerPage = 8 let totalPagesRef = useRef(0) @@ -137,14 +139,18 @@ const ReleaseNotesListingTemplate = ({ data }) => { filters.categories.forEach(category => { params.append('category', category.slug) }) - params.append('page', currentPage) - // Get current URL and add query string - const currentUrl = window.location.href.split('?')[0] - const newUrl = filters.categories.length > 0 || currentPage ? currentUrl + '?' + params.toString() : currentUrl + if(filters.query){ + params.append('query', filters.query) + } - // Update URL - window.history.replaceState({}, '', newUrl) + const newQueryStrings = params.toString() + setQueryStrings(newQueryStrings) + if(newQueryStrings){ + navigate(`/release-notes/${currentPage}/?${newQueryStrings}`) + } else { + navigate(`/release-notes/${currentPage}/`) + } } useEffect(() => { @@ -154,9 +160,10 @@ const ReleaseNotesListingTemplate = ({ data }) => { if(!initialLoadRef.current){ updateQueryStrings() } - },[filters, currentPage]) + const location = useLocation() + useEffect(() => { // Function to update filters based on URL parameters const updateFilters = () => { @@ -190,14 +197,6 @@ const ReleaseNotesListingTemplate = ({ data }) => { )) } - // Check if pageUrl is greater than totalPagesRef.current - // If it's greater, go to first page, otherwise go to pageUrl - if (pageUrl > totalPagesRef.current) { - setCurrentPage(1) - } else { - setCurrentPage(pageUrl) - updateQueryStrings() - } } updateFilters() @@ -206,6 +205,16 @@ const ReleaseNotesListingTemplate = ({ data }) => { initialLoadRef.current = false },[]) + // Get current page from URL + useEffect(() => { + const pathSegments = location.pathname.split("/").filter(Boolean) + const page = pathSegments[pathSegments.length - 1] + const pageNumber = parseInt(page, 10) + + if (!isNaN(pageNumber)) { + setCurrentPage(pageNumber) + } + }, [location.pathname]) // Debounce search input. const debouncedHandleInputChange = debounce(handleInputChange, 300) @@ -277,7 +286,13 @@ const ReleaseNotesListingTemplate = ({ data }) => { /> - + { filters && filters.categories.map(item => { @@ -301,7 +316,13 @@ const ReleaseNotesListingTemplate = ({ data }) => { > {renderedReleaseNotes} - + diff --git a/tests/playwright-tests/visuals.spec.ts b/tests/playwright-tests/visuals.spec.ts index 9a52e1a75f..e0fa4a3d1b 100644 --- a/tests/playwright-tests/visuals.spec.ts +++ b/tests/playwright-tests/visuals.spec.ts @@ -15,7 +15,7 @@ test('Get Started - Landing Page', async ({ page }) => { test('Release Notes - Category Listing', async ({ page }) => { - await page.goto('/release-notes/?category=policy'); + await page.goto('/release-notes/1/?category=policy'); await page.getByText('Accept Cookies').click(); await page.waitForLoadState('networkidle'); await expect(page).toHaveScreenshot('release-notes--category.png', { fullPage: true });