From 9b778d8f6911ef4af111e3f26212b36ea6c0674c Mon Sep 17 00:00:00 2001 From: Mathieu Legault Date: Tue, 7 Jul 2026 17:50:05 -0400 Subject: [PATCH] docs: add same-day changelog entries to stress-test entry anchors Adds 22 changelog entries authored as separate same-day files (not frontmatter slugs) to exercise fern-platform#12914's filename-derived entry anchors. Covers a 10-file collision on one date, a bare date file mixed with suffixed siblings, a same-date entry that opts into its own frontmatter slug, coexisting multi-heading-in-one-file and multiple-files-per-day patterns, and tricky suffix formats (numeric, hyphenated, and word suffixes). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../docs/pages/changelog/2026-07-02-a.mdx | 9 ++++++++ .../docs/pages/changelog/2026-07-02-b.mdx | 18 ++++++++++++++++ .../docs/pages/changelog/2026-07-02-c.mdx | 7 +++++++ .../docs/pages/changelog/2026-07-02-d.mdx | 21 +++++++++++++++++++ .../docs/pages/changelog/2026-07-02-e.mdx | 7 +++++++ .../docs/pages/changelog/2026-07-02-f.mdx | 13 ++++++++++++ .../docs/pages/changelog/2026-07-02-g.mdx | 7 +++++++ .../docs/pages/changelog/2026-07-02-h.mdx | 11 ++++++++++ .../docs/pages/changelog/2026-07-02-i.mdx | 7 +++++++ .../docs/pages/changelog/2026-07-02-j.mdx | 9 ++++++++ .../docs/pages/changelog/2026-07-03-a.mdx | 7 +++++++ .../docs/pages/changelog/2026-07-03-b.mdx | 7 +++++++ .../docs/pages/changelog/2026-07-03.mdx | 7 +++++++ .../docs/pages/changelog/2026-07-04-a.mdx | 7 +++++++ .../docs/pages/changelog/2026-07-04-b.mdx | 7 +++++++ .../docs/pages/changelog/2026-07-04-c.mdx | 11 ++++++++++ .../docs/pages/changelog/2026-07-05-a.mdx | 19 +++++++++++++++++ .../docs/pages/changelog/2026-07-05-b.mdx | 7 +++++++ .../docs/pages/changelog/2026-07-06-1.mdx | 7 +++++++ .../docs/pages/changelog/2026-07-06-2.mdx | 7 +++++++ .../pages/changelog/2026-07-06-feature-x.mdx | 7 +++++++ .../pages/changelog/2026-07-06-hotfix.mdx | 7 +++++++ 22 files changed, 209 insertions(+) create mode 100644 fern/products/docs/pages/changelog/2026-07-02-a.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-02-b.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-02-c.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-02-d.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-02-e.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-02-f.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-02-g.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-02-h.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-02-i.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-02-j.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-03-a.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-03-b.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-03.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-04-a.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-04-b.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-04-c.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-05-a.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-05-b.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-06-1.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-06-2.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-06-feature-x.mdx create mode 100644 fern/products/docs/pages/changelog/2026-07-06-hotfix.mdx diff --git a/fern/products/docs/pages/changelog/2026-07-02-a.mdx b/fern/products/docs/pages/changelog/2026-07-02-a.mdx new file mode 100644 index 000000000..021385855 --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-02-a.mdx @@ -0,0 +1,9 @@ +## Bulk content import — entry A + +writing-content, cli + +You can now import multiple markdown pages in a single CLI command, preserving folder structure and frontmatter. + +> **Anchor stress test:** this entry is authored in its own file `2026-07-02-a.mdx` and shares the date `2026-07-02` with nine sibling files. Its timeline card should deep-link to `#2026-07-02-a`, not the top of the shared date page. + + diff --git a/fern/products/docs/pages/changelog/2026-07-02-b.mdx b/fern/products/docs/pages/changelog/2026-07-02-b.mdx new file mode 100644 index 000000000..a2f89ef21 --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-02-b.mdx @@ -0,0 +1,18 @@ +## Nested tabs in components — entry B + +components, writing-content + +Tabs can now be nested inside other tabs and accordions without losing keyboard focus or breaking anchor scrolling. + +> **Anchor stress test:** authored in `2026-07-02-b.mdx`; expected deep-link anchor is `#2026-07-02-b`. + +```mdx + + + + Content + Content + + + +``` diff --git a/fern/products/docs/pages/changelog/2026-07-02-c.mdx b/fern/products/docs/pages/changelog/2026-07-02-c.mdx new file mode 100644 index 000000000..27b5f50a6 --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-02-c.mdx @@ -0,0 +1,7 @@ +## Search keyboard shortcuts — entry C + +search, navigation + +Press / to focus the search bar from anywhere, and use arrow keys plus Enter to jump straight to a result. + +> **Anchor stress test:** authored in `2026-07-02-c.mdx`; expected deep-link anchor is `#2026-07-02-c`. diff --git a/fern/products/docs/pages/changelog/2026-07-02-d.mdx b/fern/products/docs/pages/changelog/2026-07-02-d.mdx new file mode 100644 index 000000000..bac36e1d0 --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-02-d.mdx @@ -0,0 +1,21 @@ +## Per-language code sample tabs — entry D + +api-reference, sdks + +API Reference code samples now remember the reader's last-selected language across pages, so switching to Python once keeps every endpoint on Python. + +> **Anchor stress test:** authored in `2026-07-02-d.mdx`; expected deep-link anchor is `#2026-07-02-d`. This is a deliberately longer entry so its timeline card has a different height than its siblings — anchor scrolling must land on this card regardless of the offset introduced by the entries above it. + +```python +import petstore +client = petstore.Client(token="...") +client.plants.list() +``` + +```typescript +import { Client } from "petstore"; +const client = new Client({ token: "..." }); +await client.plants.list(); +``` + + diff --git a/fern/products/docs/pages/changelog/2026-07-02-e.mdx b/fern/products/docs/pages/changelog/2026-07-02-e.mdx new file mode 100644 index 000000000..02e75bca7 --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-02-e.mdx @@ -0,0 +1,7 @@ +## Redirect validation — entry E + +docs.yml, cli + +`fern check` now flags redirects whose destination does not resolve to a real page, catching broken `redirects` config before it ships. + +> **Anchor stress test:** authored in `2026-07-02-e.mdx`; expected deep-link anchor is `#2026-07-02-e`. diff --git a/fern/products/docs/pages/changelog/2026-07-02-f.mdx b/fern/products/docs/pages/changelog/2026-07-02-f.mdx new file mode 100644 index 000000000..d41107591 --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-02-f.mdx @@ -0,0 +1,13 @@ +## Dark-mode logo override — entry F + +customization, docs.yml + +You can now set a separate logo for dark mode with `logo.dark`, alongside the existing `logo.light`. + +> **Anchor stress test:** authored in `2026-07-02-f.mdx`; expected deep-link anchor is `#2026-07-02-f`. + +```yaml docs.yml +logo: + light: ./logo-light.svg + dark: ./logo-dark.svg +``` diff --git a/fern/products/docs/pages/changelog/2026-07-02-g.mdx b/fern/products/docs/pages/changelog/2026-07-02-g.mdx new file mode 100644 index 000000000..90aca1ebd --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-02-g.mdx @@ -0,0 +1,7 @@ +## Feedback reactions — entry G + +analytics + +Readers can now leave a thumbs-up or thumbs-down on any page, and the aggregated reactions surface in your analytics dashboard. + +> **Anchor stress test:** authored in `2026-07-02-g.mdx`; expected deep-link anchor is `#2026-07-02-g`. diff --git a/fern/products/docs/pages/changelog/2026-07-02-h.mdx b/fern/products/docs/pages/changelog/2026-07-02-h.mdx new file mode 100644 index 000000000..debdceca5 --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-02-h.mdx @@ -0,0 +1,11 @@ +## Snippet includes — entry H + +writing-content, reuse + +Reuse a shared markdown snippet across pages with the `` component, so common warnings and setup steps live in one place. + +> **Anchor stress test:** authored in `2026-07-02-h.mdx`; expected deep-link anchor is `#2026-07-02-h`. + +```mdx + +``` diff --git a/fern/products/docs/pages/changelog/2026-07-02-i.mdx b/fern/products/docs/pages/changelog/2026-07-02-i.mdx new file mode 100644 index 000000000..966bd396a --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-02-i.mdx @@ -0,0 +1,7 @@ +## Sticky table headers — entry I + +components + +Long tables now keep their header row pinned while you scroll, so column meanings stay visible in dense reference tables. + +> **Anchor stress test:** authored in `2026-07-02-i.mdx`; expected deep-link anchor is `#2026-07-02-i`. diff --git a/fern/products/docs/pages/changelog/2026-07-02-j.mdx b/fern/products/docs/pages/changelog/2026-07-02-j.mdx new file mode 100644 index 000000000..1d2f0bfac --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-02-j.mdx @@ -0,0 +1,9 @@ +## Last entry of the day — entry J + +navigation + +This is the tenth and final same-day entry for `2026-07-02`, placed last so we can verify that deep-linking to the *bottom* card of a large same-day group still scrolls correctly. + +> **Anchor stress test:** authored in `2026-07-02-j.mdx`; expected deep-link anchor is `#2026-07-02-j`. Because this is the last card in a ten-entry group, its target offset is the furthest from the top of the shared date page — the strongest test that the anchor overrides the "scroll to top of page" fallback. + + diff --git a/fern/products/docs/pages/changelog/2026-07-03-a.mdx b/fern/products/docs/pages/changelog/2026-07-03-a.mdx new file mode 100644 index 000000000..715b8b308 --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-03-a.mdx @@ -0,0 +1,7 @@ +## Suffixed sibling of a bare date — entry A + +navigation + +Authored in `2026-07-03-a.mdx`, this entry shares its date with the bare `2026-07-03.mdx` file above. + +> **Anchor stress test:** expected deep-link anchor is `#2026-07-03-a`. Verifies that suffixed and bare files on the same date each get distinct anchors without colliding. diff --git a/fern/products/docs/pages/changelog/2026-07-03-b.mdx b/fern/products/docs/pages/changelog/2026-07-03-b.mdx new file mode 100644 index 000000000..2a44fa0be --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-03-b.mdx @@ -0,0 +1,7 @@ +## Suffixed sibling of a bare date — entry B + +navigation + +Authored in `2026-07-03-b.mdx`, the second suffixed sibling of the bare `2026-07-03.mdx` file. + +> **Anchor stress test:** expected deep-link anchor is `#2026-07-03-b`. diff --git a/fern/products/docs/pages/changelog/2026-07-03.mdx b/fern/products/docs/pages/changelog/2026-07-03.mdx new file mode 100644 index 000000000..367cf355d --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-03.mdx @@ -0,0 +1,7 @@ +## Bare date file (no suffix) + +navigation + +This entry uses the classic bare filename `2026-07-03.mdx`, with no `-suffix`. It shares the date `2026-07-03` with two suffixed siblings (`-a` and `-b`). + +> **Anchor stress test:** this is the edge case where a bare date file coexists with suffixed files on the same date. The bare file's card should still deep-link correctly to its own entry (anchor `#2026-07-03`) and not get swallowed by, or collide with, the suffixed siblings below it. diff --git a/fern/products/docs/pages/changelog/2026-07-04-a.mdx b/fern/products/docs/pages/changelog/2026-07-04-a.mdx new file mode 100644 index 000000000..755bb0eb6 --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-04-a.mdx @@ -0,0 +1,7 @@ +## Slug-less same-day entry — entry A + +writing-content + +Authored in `2026-07-04-a.mdx` with no frontmatter `slug`, so it falls back to the date-derived slug and must be disambiguated by a filename anchor. + +> **Anchor stress test:** expected deep-link anchor is `#2026-07-04-a`. Shares the date with a slug-less sibling (`-b`) and a slug'd sibling (`-c`). diff --git a/fern/products/docs/pages/changelog/2026-07-04-b.mdx b/fern/products/docs/pages/changelog/2026-07-04-b.mdx new file mode 100644 index 000000000..970dc094c --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-04-b.mdx @@ -0,0 +1,7 @@ +## Slug-less same-day entry — entry B + +writing-content + +Authored in `2026-07-04-b.mdx`, also with no frontmatter `slug`. + +> **Anchor stress test:** expected deep-link anchor is `#2026-07-04-b`. This card and `-a` share the same date-derived slug and are separated only by their filename anchors. diff --git a/fern/products/docs/pages/changelog/2026-07-04-c.mdx b/fern/products/docs/pages/changelog/2026-07-04-c.mdx new file mode 100644 index 000000000..e29a7b1c7 --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-04-c.mdx @@ -0,0 +1,11 @@ +--- +slug: custom-slug-2026-07-04 +--- + +## Same-day entry with an explicit frontmatter slug — entry C + +writing-content, docs.yml + +Authored in `2026-07-04-c.mdx` with an explicit `slug: custom-slug-2026-07-04` in frontmatter. + +> **Anchor stress test:** because this entry declares its own `slug`, it should be **left untouched** — it gets its own dedicated URL (`.../changelog/custom-slug-2026-07-04`) and should NOT be forced into the shared date page or given a filename-derived anchor. Verifies the slug-collision fix does not disturb entries that opt into a distinct slug, even when they share a date with slug-less siblings (`-a`, `-b`). diff --git a/fern/products/docs/pages/changelog/2026-07-05-a.mdx b/fern/products/docs/pages/changelog/2026-07-05-a.mdx new file mode 100644 index 000000000..9aec31073 --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-05-a.mdx @@ -0,0 +1,19 @@ +## Multiple headings in one file — first release + +navigation + +This is the *old* same-day pattern: several releases authored as multiple `##` headings inside a single file (`2026-07-05-a.mdx`). This path already wired up heading anchors before the fix. + +> **Anchor stress test:** the entry card should deep-link to `#2026-07-05-a`, and the individual headings below should keep their own in-page heading anchors. + +## Multiple headings in one file — second release + +navigation, search + +A second `##` heading within the same file. Verifies that a file carrying multiple headings still resolves to a single entry anchor for the card while preserving per-heading anchors within the entry. + +## Multiple headings in one file — third release + +components + +A third heading, added to make this a tall entry so scroll positioning has to account for its height when linking to the separate-file sibling (`-b`) below it. diff --git a/fern/products/docs/pages/changelog/2026-07-05-b.mdx b/fern/products/docs/pages/changelog/2026-07-05-b.mdx new file mode 100644 index 000000000..94e1ee0bb --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-05-b.mdx @@ -0,0 +1,7 @@ +## Separate file for the same day — entry B + +navigation + +This is the *new* same-day pattern: a distinct file (`2026-07-05-b.mdx`) sharing the date with the multi-heading file `2026-07-05-a.mdx`. + +> **Anchor stress test:** expected deep-link anchor is `#2026-07-05-b`. Verifies the two same-day mechanisms — multiple headings in one file (`-a`) and multiple files for one day (`-b`) — coexist and produce non-colliding anchors. diff --git a/fern/products/docs/pages/changelog/2026-07-06-1.mdx b/fern/products/docs/pages/changelog/2026-07-06-1.mdx new file mode 100644 index 000000000..3ddddb08d --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-06-1.mdx @@ -0,0 +1,7 @@ +## Numeric suffix — entry 1 + +cli + +Authored in `2026-07-06-1.mdx`. Uses a numeric suffix instead of a letter. + +> **Anchor stress test:** expected deep-link anchor is `#2026-07-06-1`. Verifies the anchor derivation handles a purely numeric suffix (which visually resembles a date part) without truncating the date or mangling the anchor. diff --git a/fern/products/docs/pages/changelog/2026-07-06-2.mdx b/fern/products/docs/pages/changelog/2026-07-06-2.mdx new file mode 100644 index 000000000..98ce82ff8 --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-06-2.mdx @@ -0,0 +1,7 @@ +## Numeric suffix — entry 2 + +cli + +Authored in `2026-07-06-2.mdx`, a second numeric-suffixed sibling. + +> **Anchor stress test:** expected deep-link anchor is `#2026-07-06-2`. diff --git a/fern/products/docs/pages/changelog/2026-07-06-feature-x.mdx b/fern/products/docs/pages/changelog/2026-07-06-feature-x.mdx new file mode 100644 index 000000000..35ebc8999 --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-06-feature-x.mdx @@ -0,0 +1,7 @@ +## Multi-word hyphenated suffix + +writing-content + +Authored in `2026-07-06-feature-x.mdx`. The suffix itself contains a hyphen (`feature-x`). + +> **Anchor stress test:** expected deep-link anchor is `#2026-07-06-feature-x`. The hardest case for the derivation regex: the date has hyphens *and* the suffix has hyphens, so the split must keep the full `feature-x` suffix intact rather than stopping at the first hyphen after the date. diff --git a/fern/products/docs/pages/changelog/2026-07-06-hotfix.mdx b/fern/products/docs/pages/changelog/2026-07-06-hotfix.mdx new file mode 100644 index 000000000..b902afd31 --- /dev/null +++ b/fern/products/docs/pages/changelog/2026-07-06-hotfix.mdx @@ -0,0 +1,7 @@ +## Word suffix + +cli + +Authored in `2026-07-06-hotfix.mdx`, using a descriptive word as the suffix. + +> **Anchor stress test:** expected deep-link anchor is `#2026-07-06-hotfix`. Confirms alphabetic word suffixes work alongside numeric (`-1`, `-2`) and hyphenated (`-feature-x`) siblings on the same date.