fix(content): render kramdown's --- em dashes as em dashes - #1070
Conversation
Body text across the migrated pages still used kramdown's `---` shorthand
("Extractor --- a component designed to…"). Kramdown turned that into an em
dash; Starlight's SmartyPants converts `--` but leaves `---` alone, so 310
places on 57 pages render three literal hyphens in production today.
Replaced with a real em dash. Four shapes were in use — `a --- b`, the same
with a stray extra space, a line-final `---` whose sentence continues on the
next line, and a line-initial `--- ` continuing the previous line — all of them
now ` — `.
Deliberately untouched:
- ` -- ` (430 places). SmartyPants already renders it as an em dash, so those
pages are correct as written; rewriting them would be churn.
- `---` inside fenced code (a SQL comment in the DuckDB migration guide), table
delimiter rows, frontmatter delimiters, and horizontal rules.
Also fixed one anchor of the same family: `/management/project/limits/` linked
to `#project-power---time-credits`, while the heading `Project Power -- Time
Credits` slugs to `#project-power--time-credits` (SmartyPants ate the `--`).
Verified against `astro build`: the only literal `---` left in the rendered
HTML is the one inside the SQL code block. audit-phase2 unchanged (45 broken
internal links / 0 missing images / 3 multi-h1 / 0 unclosed fences). Anchor
resolution measured on both builds — 8496 anchors checked, broken 75 → 74, the
one difference being the link fixed here; no heading text and therefore no id
changed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Both surfaced by the fact-check pass over the sweep: - `/transformations/`: `**Script** ---[Python]` had no space after the dashes, so none of the four shapes matched it. It renders as a literal `---` in the build (checked, not assumed) — now ` — `. - `/extend/component/ui-options/configuration-schema/examples/`: the page links to its own `#example-1---object-blocks-loading-options`, but the heading uses an **en** dash and slugs to `#example-1--object-blocks-loading-options`. Same one-character fix as the limits anchor. Anchor check after the rebuild: 8496 anchors, broken 74 → 73. No literal `---` left in any rendered page outside the SQL code block. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Follow-up commit after the fact-check pass — two stragglers of the same family:
Anchor check after the rebuild: 8496 anchors, 74 → 73 broken. |
Anchor targets were never validated by CI — audit-phase2 checks link *paths*
but not the `#fragment` — so every heading rename since the Jekyll days left a
link pointing at nothing. A checker over the built site found 73; this fixes all
of them. Grouped by cause:
- **Heading renamed, article dropped** (~30): `#inviting-a-user` →
`#inviting-user`, `#running-a-component` → `#running-component`,
`#preparing-the-data-folder` → `#preparing-data-folder`, and so on.
- **Section moved to another page** (11): the manifest-files hub became one page
per manifest kind (`#dataouttables-manifests` → `out-tables-manifests/`);
`/storage/file-uploads/#limits` → `/storage/files/#limits`;
`/transformations/{python,r}/#development-tutorial` → the `-plain` pages —
those three paths are redirect stubs, so the anchor never survived the hop.
- **Section is gone** (10): `#new-transformations` (5 links) and
`/management/jobs/#jobs` now link the page itself; `#main-header` was a Jekyll
top-of-page artifact.
- **Starlight has no `{#id}` heading syntax** (1 page): telemetry-dashboards
wrote `### Organization Usage {#ac-organization-usage}` to disambiguate two
same-named sections. Starlight rendered the braces *literally* on the page and
slugged them into the id. Renamed to "Organization Usage (Activity Center)",
which keeps the sections distinct and gives the link a real target.
- **Nothing to point at** (3): the Phases/Dependencies cells in the
transformations comparison table and "output buffering" in the implementation
notes are now plain text — the sections they referenced don't exist anywhere.
Flagged in the PR for someone who knows the original intent.
- **A link that was never a link**: `/overview/` shipped
`our Flows [/tutorial/automate/#main-header], obtaining` as literal text.
Verified with `astro build`: **73 → 0** broken anchors out of 8476 checked
across 500 pages. audit-phase2 unchanged on every category (45 broken internal
links / 0 missing images / 3 multi-h1 / 0 unclosed fences / 0 malformed tables);
its old-docs-smell count goes 99 → 101 for the two `developers.keboola.com/#development-project`
links, the one target with no help equivalent yet — deliberate, and they match
the sibling link already in `/tutorial/`.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The sweep resolved every anchor, but the fact-check found better homes for a few. All verified against the build: - `/workspace/table-export/`: "returns a standard asynchronous storage job" → `/storage/jobs/`, the page that defines the concept, instead of `/management/jobs/#storage-jobs`, which is a UI walkthrough. - `/management/project/limits/` (2 links): how table size is measured → `/storage/#storage-data`, where "backend" is defined. The section I had used, Storage Backend Types and Features, is about tenancy models (MT/KBDB/BYODB). - `/overview/`: the Flows mention now goes to `/flows/`, matching the same page's other two Flows links, rather than to the Part 4 tutorial. - MySQL binlog note: the original `#mysql-purges-binlog-files-used-by-debezium` was copied verbatim from Debezium's own docs and refers to the *failure mode* (connector stops too long → server purges the binlog → new snapshot needed). Our `### Functionality` only says snapshots exist because MySQL purges binlogs, and nothing in-repo covers the failure mode, so the link goes upstream to Debezium. - Five `[advanced mode](…/sqldb/)` links pick up `#advanced-mode`, the anchor sqldb's own prose already uses. Anchors still 0 broken (8480 checked); audit-phase2 unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
fix(links): repoint the 73 stale anchors left by the Jekyll/dev era
jordanrburger
left a comment
There was a problem hiding this comment.
Approving. Same verification as #1069 — /catalog/multi-project/ renders separate project --- Oracle literally today and ora-history — The source database correctly, so the -- vs --- split holds up.
I attributed the diff by file to check scope: 301 removed lines carrying --- across 58 files, which matches your description. Leaving the 430 -- instances alone because they already render fine, and not touching any heading text so no slug moves — both are the right call. Nice restraint.
Blocked on #1069, since your base is docs/em-dash-headings. Merge that first and this rebases clean.
Worth noting this PR is more load-bearing than the title suggests: it's also what carries #1072's 73 anchor fixes to main.
Resolves two conflicts created by merging #1069 (whose branch update brought main forward while this branch was cut from the pre-update commit): - components/extractors/other/index.md: kept main's Dark Sky deprecation note and applied this branch's em-dash fix to all eight list entries. - management/notifications/notifications.md: kept main's rewritten flow notification section, which supersedes the old bullets and already uses real em dashes. Verified: 0 literal `---` remain in prose across src/content/docs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ic Extractor pages The pages this PR migrates predate #1070's corpus-wide sweep, so they would reintroduce the literal `---` the sweep just removed. Same transformation, same scope rule: prose dashes only, nothing inside code fences.
Stacked on #1069 (base branch is
docs/em-dash-headings, notmain) — same bug class, one page vs. the whole corpus. Merge #1069 first and this rebases to a clean 57-file diff.#1069 fixed 12 headings. The same kramdown shorthand is all over body text: "Extractor
---a component designed to bring data into Keboola Storage". Kramdown rendered that as an em dash; Starlight's SmartyPants converts--but leaves---alone, so 310 places on 57 pages show three literal hyphens on production right now.Changes:
---→—in prose, in four shapes kramdown left behind:a --- b, the same with a stray extra space, a line-final---whose sentence continues on the next line (- **Fields/Endpoint Nesting** ---), and a line-initial---continuing the previous line (GoodData writer)./management/project/limits/linked to#project-power---time-credits, but the headingProject Power -- Time Creditsslugs to#project-power--time-credits— SmartyPants eats the--. Link fixed; heading left alone because it already renders correctly.Deliberately untouched:
--— 430 places. SmartyPants already renders it as an em dash (/management/project/limits/shipsProject Power — Time Creditstoday), so those pages are correct as written. Rewriting them would be pure churn.---inside fenced code (a-- Snowflake only --- not supported in DuckDBSQL comment in the DuckDB migration guide), table delimiter rows, frontmatter delimiters, horizontal rules, inline code.Verified against
astro build(production build, clean worktree offupstream/main):---left in 500 rendered pages is the one inside that SQL code block.registry — and are,Fields/Endpoint Nesting —, and the GoodData continuation line joins asconnector\n— unless it is used….audit-phase2: 45 broken internal links / 0 missing images / 3 multiple-h1 / 0 unclosed fences / 0 malformed tables — identical tomain.Worth a separate ticket: those 74 pre-existing broken anchors are mostly dev-era targets that #1046 carried over — e.g.
/extend/component/running/#preparing-the-data-folder(the id is#preparing-data-folder),…/manifest-files/#dataouttables-manifests,/extend/component/tutorial/#creating-a-deployment-account. Happy to do them as a follow-up sweep.