+
+ All guide pages sorted by last meaningful revision
+
+
+
+ Each row shows the latest merge that changed more than three lines in that page file. Pages without such a revision appear at the end.
+
+
+ {{#if pages}}
+
+
+
+ Guide pages sorted by last revision date
+
+
+
+ Last revision
+ Section
+ Page
+ Changes
+ Author
+
+
+
+ {{#each pages}}
+
+
+ {{#if changedTimestamp}}
+
+ {{ formatDateTime changedTimestamp }}
+
+ {{else}}
+ No substantial revision
+ {{/if}}
+
+
+ {{#if sectionTitle}}
+
+ Section: {{sectionTitle}}
+
+ {{/if}}
+
+
+ {{title}}
+
+
+ {{#if linesChanged}}
+
+ +{{linesAdded}} −{{linesDeleted}}
+
+ {{else}}
+ —
+ {{/if}}
+
+
+ {{#if changedBy}}
+ {{> "content/author/author" name=changedBy gravatarUrl=gravatarUrl className="all-pages__author"}}
+ {{else}}
+ —
+ {{/if}}
+
+
+ {{/each}}
+
+
+
+ {{else}}
+ No pages were found.
+ {{/if}}
+
diff --git a/src/components/content/author/_author.scss b/src/components/content/author/_author.scss
new file mode 100644
index 00000000..a8cf7efd
--- /dev/null
+++ b/src/components/content/author/_author.scss
@@ -0,0 +1,20 @@
+.author {
+ display: inline-flex;
+ align-items: center;
+ flex-wrap: wrap;
+ gap: 8px;
+ font-size: 16px;
+}
+
+.author__avatar {
+ display: block;
+ width: 32px;
+ height: 32px;
+ border-radius: 999px;
+ border: 1px solid rgba(0, 0, 0, 0.08);
+ flex: 0 0 auto;
+}
+
+.author__name {
+ min-width: 0;
+}
diff --git a/src/components/content/author/author.hbs b/src/components/content/author/author.hbs
new file mode 100644
index 00000000..68e88682
--- /dev/null
+++ b/src/components/content/author/author.hbs
@@ -0,0 +1,13 @@
+
+
+ Merges sorted by date with affected pages
+
+
+ {{#if showConfigurator}}
+
+ Select the pages that should appear in the home page recent changes list. Copy the generated configuration below into config/recent-pages.js, then restart npm run dev or run npm run build so the home page picks up the changes. Author, date, and commit details come from the selected merge.
+
+ {{/if}}
+
+ {{#if merges}}
+
+ {{#each merges}}
+
+
+
+
+ {{ formatDateTime changedTimestamp }}
+
+ {{#if changedBy}}
+ {{> "content/author/author" name=changedBy gravatarUrl=gravatarUrl className="page-updates__author"}}
+ {{else}}
+
Updated by unknown author
+ {{/if}}
+ {{#if commitUrl}}
+
+ {{commitShortId}}
+
+ {{else}}
+
Commit unavailable
+ {{/if}}
+
+ {{#if commitMessage}}
+ {{commitMessage}}
+ {{/if}}
+
+
+
+ {{/each}}
+
+ {{else}}
+ No pages with merge history were found.
+ {{/if}}
+
+ {{#if showConfigurator}}
+
+
+ Configuration
+
+
+
+
+ {{/if}}
+
diff --git a/src/components/content/recent-pages/_recent-pages.scss b/src/components/content/recent-pages/_recent-pages.scss
new file mode 100644
index 00000000..00055c4e
--- /dev/null
+++ b/src/components/content/recent-pages/_recent-pages.scss
@@ -0,0 +1,95 @@
+.recent-pages {
+ @include rem(margin-top, $gutter);
+}
+
+.recent-pages__list {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ display: grid;
+ gap: 1em;
+}
+
+.recent-pages__item {
+ margin: 0;
+}
+
+.recent-pages__link {
+ padding: 1em;
+
+ display: block;
+ background: var(--theme-main-color-inverse, $c-white);
+ border: 1px solid var(--theme-color-medium, $c-gray);
+ border-radius: 10px;
+ box-shadow: 0 4px 14px 0 rgba(0, 0, 0, 0.08);
+ color: inherit;
+ text-decoration: none;
+ transition:
+ border-color 0.15s ease,
+ box-shadow 0.15s ease,
+ transform 0.15s ease;
+
+ &:hover,
+ &:focus {
+ border-color: var(--theme-color-dark);
+ box-shadow: 0 8px 24px 0 rgba(0, 0, 0, 0.12);
+ transform: translateY(-1px);
+ text-decoration: none;
+ }
+}
+
+.recent-pages__meta {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: 0.35em 0.5em;
+ margin-bottom: 0.25em;
+}
+
+.recent-pages__date {
+ display: inline-block;
+ margin: 0;
+ font-size: 14px;
+ font-weight: 500;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+.recent-pages__pill {
+ display: inline-block;
+ margin: 0;
+ padding: 0.1em 0.5em;
+ border-radius: 999px;
+ font-size: 12px;
+ font-weight: 500;
+ line-height: 1.3;
+ letter-spacing: 0.01em;
+ background-color: var(--theme-color-light);
+ color: var(--theme-color-dark);
+}
+
+.recent-pages__title {
+ margin: 0;
+ font-size: 24px;
+ line-height: 1.25;
+}
+
+.recent-pages__title-link {
+ color: var(--theme-color-dark);
+ text-decoration: none;
+}
+
+.recent-pages__lead {
+ margin-top: 0.75em;
+ margin-bottom: 1.5em;
+ font-size: 16px;
+ line-height: 1.5;
+}
+
+.recent-pages__author {
+ display: flex;
+}
+
+.recent-pages__overview {
+ margin: 1em 0 0;
+}
diff --git a/src/components/content/recent-pages/recent-pages.hbs b/src/components/content/recent-pages/recent-pages.hbs
new file mode 100644
index 00000000..c7c1a871
--- /dev/null
+++ b/src/components/content/recent-pages/recent-pages.hbs
@@ -0,0 +1,35 @@
+