Skip to content

Sync: Develop to Main - #140

Merged
iamtatsuki05 merged 14 commits into
mainfrom
develop
Sep 21, 2026
Merged

iamtatsuki05 merged 14 commits into
mainfrom
develop

Conversation

Remove section-progress announcements, merge one-sentence punch-line
paragraphs into their surrounding prose, replace spoken-register verbs
with concrete wording, split over-long sentences, and make three
headings specific. Japanese originals are the source of truth; the en,
zh, and fr translations follow the same structure.

Facts, numbers, URLs, commands, paths, identifiers, and the quoted
blocks inside <details> are unchanged.
…rose

docs(blog): tighten article structure and rhythm across all locales
Renaming a heading changes its slug, so external `#...` links to the old
anchor stop working. A post can now list the old anchors in frontmatter
as `legacyAnchors: { '<old slug>': '<current slug>' }`, and a rehype
plugin prepends an empty `<span>` carrying the old id to the matching
heading. The span sits inside the heading and outside the autolink
anchor, so the table of contents, link text and copied Markdown are
unchanged, and `scroll-margin-top` now applies to it as well so the old
link lands where the current one does.

Both ends are validated at build time rather than failing quietly: a
mapping that points at a heading which no longer exists, an old anchor
that github-slugger could never have produced (uppercase, whitespace,
`#`), or an id already used elsewhere on the page all stop the build.

Anchors are locale specific, so each translation keeps its own map and
the generator copies it from the translation source, never from the
Japanese original. Covers the 14 anchors changed by the prose revision
in #134, derived from the pre-rename commit rather than by hand.
The second `<details>` block in the 2025-09-09 post quotes the
requirements document GPT actually produced. All three translations
carried a 9-heading summary of it instead of the 27-heading original,
dropping sections 2.1-2.3, 6.1-6.4, 9-14 and the sample `links.yaml`,
which misrepresents a verbatim quote.

The en, zh and fr blocks now match the Japanese line for line. The
request block above it also picked up three details en had lost.
…d-full-details-translation

feat(blog): keep renamed heading anchors reachable and restore the full quoted requirements
Dependabot opened #131, #132 and #133 against main, but it can only edit
package.json: bun.lockb is a binary lockfile it cannot regenerate, so
`bun install --frozen-lockfile` failed and every check on those PRs
failed within seconds.

This applies the same three bumps on develop and regenerates the
lockfile, which is also where renovate.json already points dependency
updates.

astro 7.0.7 -> 7.2.8, vitest 4.1.10 -> 4.1.11, postcss 8.5.16 -> 8.5.23.
`parseMarkdownFile` computed the `headings` slugs from mdast, separately
from the ids rehype-slug puts on the rendered headings, and the two
disagreed. It joined only the direct `text` and `inlineCode` children
with a space, so a heading containing inline code produced a doubled
separator (`agent--に-ai-用の前提を集める` against the rendered
`agent-に-ai-用の前提を集める`), a heading whose text sits inside a link
or strong lost that text, and slugging only h2/h3 could put the dedupe
counter out of step with rehype-slug.

Collect the headings from the tree right after rehype-slug instead, so
there is one source of truth. Nothing renders `headings` today, but
anything that starts to would have linked to anchors that do not exist.
Skip headings with an empty id so the list matches what BlogToc builds
from the DOM, reset the array at the start of the transformer so hoisting
the processor cannot accumulate duplicates, and use the HeadingEntry type
in the signatures that already described it inline.

Also record two behaviours the switch to the rendered tree introduces:
headings that come from raw HTML in the body are now included, and
`title` is the text before KaTeX renders it, so a heading containing
math reports its source rather than the rendered markup. Tests cover the
raw HTML and empty id cases.
…tro-vitest-postcss

chore(deps): update astro, vitest and postcss with the lockfile
…stency

fix(blog): read heading ids from the rendered html
Everything `bun outdated` reported except the three major bumps, grouped
the way renovate.json already groups minor and patch updates.

astro 7.3.3, @astrojs/react 6.0.6, react and react-dom 19.3.0, zod 4.6.5,
katex 0.18.7, fuse.js 7.5.0, yaml 2.9.1, biome 2.5.14, playwright 1.63.0,
storybook 10.6.0, tailwind 4.3.3, vite 8.3.0, postcss 8.5.28, sharp
0.35.4, and the testing-library and @types packages.

The playwright and vite pins in `overrides` move with their
devDependencies, otherwise the override would hold the old version. The
biome.json `$schema` is migrated to match the new biome.

Left for a separate change: vitest 5, jsdom 30 and @testing-library/jest-dom 7.
vitest 4.1.11 -> 5.0.1, jsdom 29.1.1 -> 30.1.0 and
@testing-library/jest-dom 6.9.1 -> 7.0.1. All three are test
infrastructure, so they are separate from the minor and patch batch and a
failure is easy to attribute.

No change was needed in vitest.config.mts or tests/setup.tsx; the 205
tests pass as they are. vitest 5 suggests `isolate: false` for speed,
which trades away per-file isolation, so it is left alone.
…endencies

chore(deps): update minor and patch dependencies
…majors

chore(deps): update vitest, jsdom and jest-dom to their next major
@iamtatsuki05 iamtatsuki05 self-assigned this Sep 21, 2026
@iamtatsuki05 iamtatsuki05 changed the title [WIP] Sync: Develop to Main Sync: Develop to Main Sep 21, 2026
@iamtatsuki05
iamtatsuki05 marked this pull request as ready for review September 21, 2026 06:07
@iamtatsuki05
iamtatsuki05 merged commit d286f11 into main Sep 21, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant