Skip to content

Rebuild docs site on Astro Starlight#2

Merged
BrainRTP merged 23 commits intomainfrom
task/docs-2.0-actualize
Apr 30, 2026
Merged

Rebuild docs site on Astro Starlight#2
BrainRTP merged 23 commits intomainfrom
task/docs-2.0-actualize

Conversation

@BrainRTP
Copy link
Copy Markdown
Collaborator

The docs site moves off Sphinx + sphinx-rtd-theme and onto Astro Starlight. Same URLs, same content for the most part, different engine underneath.

Why now

The old setup was painful to keep current. Adding a page meant writing reStructuredText, knowing which Sphinx directives apply, and running a Python toolchain. The theme had no dark mode, no localization story, and search felt slow. Several pages had drifted out of sync with the plugin and nobody was rushing to fix RST.

What's actually different

The engine is Astro Starlight on Markdown / MDX. Adding a page is dropping a .md file under src/content/docs/. Components like Steps, Tabs, FileTree, and LinkCard are available where they help; plain Markdown still works for everything else.

Light and dark themes ship by default, with a manual toggle and prefers-color-scheme respected.

Localization is wired up. English lives at the root, Russian at /docs/ru/. One page is translated so the language switcher in the header has something to switch to. Pages without a Russian version fall back to English with a "translate this" notice.

Pagefind handles search at build time. The site is built and deployed by GitHub Actions on every push to main; the previously committed pre-built docs/ folder is gone.

The "Getting Started" tutorial, the developer integration guide, and the FAQ are rewritten to use the new components and to fix references that had gone stale. Other pages were brought over and cleaned up wherever conversion artifacts crept in (escaped angle brackets, leftover RST div blocks, empty-anchor links).

Reviewer notes

  • Top-level URLs are unchanged. The old /docs/dev/... paths now live at /docs/developers/... because Starlight reserves dev for its own routing.
  • Cross-references in the brought-over pages still point at anchor names from the old RST world. They render as plain text and don't break anything. They will get cleaned up during the next editorial pass.

Follow-ups (not in this PR)

  • Editorial pass on the reference pages (actions, rules, item-format, activators, placeholders).
  • Russian translation, once the English side settles.
  • Interactive HOCON playground (separate spec).

BrainRTP and others added 23 commits April 27, 2026 15:39
Replaces the Sphinx + sphinx-rtd-theme stack with Astro 6 + Starlight
0.38, served as static HTML on GitHub Pages via Actions.

What changed:
- Astro Starlight project at the repo root (package.json, astro.config.mjs,
  tsconfig.json, src/content/docs, src/styles/brand.css, src/grammars).
- 25 RST pages converted to Markdown via pandoc + a small Python pass that
  rewrites GFM alerts to Starlight asides, re-fences indented code blocks
  as ```hocon (or ```java where appropriate), inlines pandoc figure HTML
  as MD images, and points image URLs at /img/.
- Static assets moved from _static/ to public/img/ and src/assets/.
- Custom HOCON TextMate grammar registered with Shiki via expressiveCode
  so ```hocon code blocks render with full token colours.
- Light/dark themes (github-light/github-dark) switched in the header from
  the Starlight default toggle - no extra plugins needed.
- Splash homepage with hero, action buttons, and a CardGrid of section
  entry points.
- Locale config primed for adding Russian later: defaultLocale=en, root
  locale wired, ru entry commented out in astro.config.mjs.
- GitHub Actions workflow (.github/workflows/deploy.yml): Node 22, npm ci,
  astro build, upload-pages-artifact, deploy-pages on push to main.

What was removed:
- conf.py, Makefile, make.bat, index.rst, advanced/, dev/, general/,
  start/, _static/, _includes/, the pre-built docs/ output.

Build status: `npm run build` produces 27 HTML pages, a Pagefind search
index, and sitemap-index.xml. Cross-references that were :ref: / :doc:
roles in RST land as best-effort relative anchors and will need a follow-up
pass to resolve.
Astro 6 does not auto-prepend `base` to raw URLs inside Markdown, so paths
like `/img/foo.png` 404 in dev/build under `base: '/docs/'`. Rewrites all
image references in src/content/docs/ to `/docs/img/...` and documents
the convention in README.
`src/assets/favicon.ico` is a multi-resolution Windows icon, which
Astro's image pipeline (sharp) can't process - the rendered <img> ended
up without a src, leaving only the alt text. Extracted a 64x64 PNG via
sips and pointed Starlight's logo config at it.

Favicon stays as `.ico` because browsers handle that natively.
Adds `ru` next to the root English locale in Starlight config. Pages
without a Russian translation fall back to English with a "translate
this page" notice from Starlight; only `start/tips.md` is provided in
Russian as a working example. The language picker appears in the
header automatically when more than one locale is configured.

`defaultLocale` switched from "en" to "root" because Starlight requires
it to match a locale key, and English now lives at the root locale.
Demo
- src/content/docs/demo/components.mdx walks through Tabs, Steps,
  FileTree, Badge, LinkCard, Aside variants, and Expressive Code line
  markers/diff/filename/word-level highlighting. Each section shows
  the plain Markdown rendering first, then the same content via the
  Starlight component, so the visual delta is obvious.

Infra
- .github/workflows/lychee.yml runs weekly + on demand, builds the
  site, walks every link in dist/ via Lychee, opens an issue when
  failures show up.
- .github/workflows/lint.yml runs cspell and markdownlint-cli2 on PRs
  and pushes to main. .cspell.json and .cspell-words.txt seed a
  project dictionary; .markdownlint-cli2.jsonc relaxes line-length and
  inline-HTML rules that fight Starlight components.

Changelog
- New `changelog` content collection at src/content/changelog/.
  src/content/docs/changelog/index.mdx renders entries newest-first.
- src/pages/feed.xml.ts produces RSS 2.0 at /docs/feed.xml.
- Sidebar gets a Changelog link at the bottom.
- One seed entry covers the migration itself.
- start/how-to: rewritten as MDX with <FileTree> for the menus folder
  layout, <Steps> for the four-stage tutorial flow, <CardGrid>
  +<LinkCard> for the "where to next" footer, <Aside> + line/word
  highlighting on progressive HOCON snippets. Cross-references that
  pandoc left as bare anchor text now point at real /docs/ paths.
- developers/general: rewritten as MDX with <Tabs> for Maven /
  Gradle (Groovy) / Gradle (Kotlin DSL) / no-build-system, <Steps>
  for the integration walk-through, <Tabs> again for the two ways to
  obtain the plugin instance. API version bumped 1.14 -> 1.16.
- start/faq: rewritten as MDX, broken anchor links replaced with
  proper /docs/ paths, <CardGrid> at the bottom links to Hocon/How
  to/Tips/Examples.
- advanced/generation: <Steps> wrapper around the four-stage intro;
  4-space indented placeholder block fenced as ```text so MDX stops
  reading it as JSX.
- advanced/input: <Steps> around the seven-stage extractor algorithm,
  same fencing fix.
- Stray RST <div class="hint|attention|seealso"> remnants converted
  to Starlight asides (:::tip / :::caution / :::note[See also]) in
  advanced/templates, advanced/input, advanced/drag-and-drop,
  general/item-format, general/examples, general/actions.
Default --sl-content-width is 45rem; the right TOC column is computed
as `(viewport - content - left-sidebar) / 2 + left-sidebar`, so widening
content shrinks the TOC automatically. Bumped to 56rem (896px) which
fits typical HOCON snippets and tables without horizontal scroll.

Tightens the TOC explicitly in the 1152-1280px range where the new
content width starts to crowd.
Fixed across all .md / .mdx pages in src/content/docs/:

1. Empty-link placeholders. Pandoc converted RST :ref:\`name<x>\` into
   "[name]()\<x\>" which renders as an empty link followed by escaped
   angle brackets. These are now wrapped as inline code "\`name_<x>\`"
   matching the placeholder convention used elsewhere.

2. Span wrappers. RST :title-ref: roles came out as
   "<span class=\"title-ref\">X</span>". Stripped the wrappers; tokens
   become inline code, "here \<URL\>" forms become proper Markdown
   links.

3. Escaped placeholders inside table cells. "\<world\>", "\_", "\>="
   etc. unescaped; placeholder forms like "%foo_<bar>%" wrapped in
   backticks so they render as code regardless of parser strictness.

4. Definition-list residue. Bare "\<key\>" terms turned into inline
   code "\`<key>\`".

5. Stray escapes elsewhere ("if -\> then -\> else") unescaped.

One inventory-type sentence in general/menu-structure.md needed a
manual rewrite; the inner had a literal "\<" that the regex pass
couldn't unwrap cleanly.
Previous cleanup pass wrapped placeholder forms like %foo_<bar>% in
backticks for safety. Inside Markdown tables that renders as code with
a background, which clashes with surrounding plain-text rows. Reverts
the wrapping inside table cells (lines containing 2+ pipes), keeping
the original escaped style: "%foo\_\<bar\>%".

Backticks remain wherever placeholders appear in regular prose - that
context still benefits from the code rendering.
The earlier cleanup pass unescaped \<x\> -> <x> inside tables, expecting
to wrap the result in backticks. Tables that ended up plain (no backtick
wrap) lost their content on render because Markdown treated <foo> as an
HTML tag. Re-escapes any <token> shape inside cells (letters, digits,
spaces, dots, colons, hyphens) to \<token\>, plus the underscores that
would trip italic when they touch the escaped bracket.
The English docs were stuck at the 1.16-era surface — Types,
Handlers, AbstractMenusProvider, no addon system, hardcoded API
version, version-1.12 caveats everywhere. This commit rewrites the
developer-facing pages on the new SPI and sweeps the operator pages
for legacy version cruft.

Major rewrites:
  developers/general.mdx    AbstractMenusApi.get(), JitPack as primary
                            artifact source (anonymous), GH Packages
                            as authenticated alternative
  developers/handlers.md    ProviderRegistry / ProviderSection<T>;
                            multi-provider, priority, config default,
                            owner-based cleanup
  developers/own-types.md   api.actions().register(...) shape; fixed
                            broken ```hocon code fences wrapping Java
  developers/serializers.md api.serializers().register; correct fences

New pages:
  developers/addons.mdx     Path 1 vs Path 2, MenuExtension lifecycle,
                            addon.conf reference, /am addons cheatsheet
  developers/migration.mdx  every old API call mapped to its 2.0
                            replacement
  general/commands.md       /am, /am addons, /var, /varp reference
  start/installation.mdx    requirements, install, config.conf reference

Updated:
  index.mdx                 /am addons in commands; addon + provider
                            concepts; "Extensible" card
  start/faq.mdx             addon install Q, providers Q, click-cooldown
                            vs click-debounce Q
  start/tips.md             /am addons rescan, MiniMessage, /var CLI
  general/activators.md     useWorldGuard (was: worldGuard); drop 1.12
                            numeric-id note
  general/item-format.md    clickCooldown is in milliseconds, not ticks;
                            drop 1.12-1.13 caveats
  general/rules.md          drop ancient version refs; replace stale JS
                            engine warning with the bundled-Nashorn note
  general/text-colors.md    drop 1.14 reference; expand MiniMessage
                            section with click/hover examples and the
                            useMiniMessage rationale
  general/examples.md       drop 1.13 caveat
  developers/variables.md   AbstractMenusApi.get().variables();
                            fix bogus expiry math example
  developers/utils.md       providers().placeholders().resolve();
                            BukkitTasks.runForEntity for Folia

Sidebar:
  Add start/installation, general/commands, developers/addons,
  developers/migration. Reorder developers section so addons + own-types
  + handlers come before serializers (workflow-first).

Changelog:
  Add 2.0.0-alpha.2 entry.

Build: `npm run build` passes, 0 errors / 0 warnings, 65 pages.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Quick wins from the UX review. Single commit, no breaking changes to
existing URLs.

Audience badges
  Three pill-shaped tags styled in brand.css (operator / author /
  developer). Inserted at the top of every English page so a reader
  can tell at a glance whether a page is meant for them. Plain HTML
  inline span - no .md to .mdx renames.

Cheatsheet (new page, /docs/general/cheatsheet/)
  Single ctrl-F'able list of every activator, rule, action, item
  property, catalog, and command. Each row links to the full
  reference for that entry.

Sidebar reorg
  "General Features" -> "Authoring menus"
  "Advanced Features" -> "Techniques"
  New "Reference" group: cheatsheet + examples
  Same files, more discoverable grouping.

Onboarding tracks on splash
  Three LinkCards above the marketing copy: server operator, menu
  author, addon developer. Lands the reader on the right starting
  page instead of the generic "Get started" tutorial.

RST anchor sweep (73 broken refs)
  Pre-Starlight code-spanned anchors (`prop-slot`, `api-extractor`,
  `hocon-obj`, `logical-and`, etc.) now resolve to actual Starlight
  URLs. Both the inline-code form and bare bracket-link form were
  swept.

Alpha API warning
  Aside / :::caution[Alpha API] block on every developer page. The
  2.0 surface is still subject to change before stable.

Inline examples (general/examples.md -> .mdx)
  Eight reference menu .conf files copied locally under
  src/examples/, imported with ?raw, rendered through Starlight's
  <Code> in collapsible <details>. Operators no longer have to bounce
  out to GitHub to read a sample. Multi-file casino and admin still
  link out.

item-format progressive disclosure
  The 25-row master table got split into five focused tables grouped
  by purpose (slot/cooldown, material installers, display, mechanics,
  conditional). Mobile-friendly, easier to skim. Cheatsheet
  cross-link added at the top.

Build: `npm run build` passes, 0 errors / 0 warnings, 67 pages.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The previous sweep replaced inline-code RST anchors with generic
"See an [example](URL)" everywhere, including labels that weren't
references at all (extractor type names, activator/rule names used
prosaically inline). Reader complaint: every row of the activators
table linked back to the same activators page. Right.

Targeted fixes:

  activators.md - dropped the now-pointless "Example" column from
  the master table and made each rule name link to its in-page
  anchor (#activator-command, etc.). Restored the eight Extractor
  type lines to their actual labels (`extractor-cmd`,
  `extractor-region`, `extractor-item`, ...). Replaced
  "similar to [example]()" with a real cross-link to the section
  above.

  rules.md - rebuilt the master table with the Example column
  dropped and rule names linked to their anchors. Special rules
  link out to /docs/advanced/logical/.

  actions.md - dropped the Example column from the master table
  with a per-row Python pass. Fixed the two broken Data type cells
  (removeButton / removePlaced got "[example]" leaked into the
  type column from the sweep). Resolved the "similar to [example]
  item property" lines to specific item properties (potionData,
  bookData).

  generation.mdx - restored Extractor type labels.

  drag-and-drop.md - replaced the meaningless "See the [reference]
  placeholders" sentence with a clean cross-link to the
  `extractor-item` documentation.

  Second sweep pass picked up the bare-anchor markdown links my
  first map missed: value-extractors, hocon-list-str, prop-all,
  input-ctx-main, input-ctx-placeholder, input-prof-ex,
  logical-rules-list, input-how-to.

Build: `npm run build` passes, 0 errors / 0 warnings, 67 pages.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Each action that has a dedicated section below the table is now a
clickable name in the table - readers click "teleport" and jump to
its section. Actions without a section (small one-liners like
setHealth, setFoodLevel, pagePrev) stay plain since linking back to
the same #all-actions anchor would be noise.

Shared sections are linked too: broadcast and miniMessage point to
#message; itemClear to #remove-item; resetSkin to #set-skin; the
six set/inc/dec/mul/div variants of /var and /varp share
#global-vars and #personal-vars respectively.

placeItem also got the drag-and-drop cross-link in the description
column for consistency with removeButton/removePlaced.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
abstractmenus.github.io/api/... isn't hosting the 2.0 javadocs (404).
Until that's back up, point readers at the source files in the
minecraft-plugin repo (and the hocon repo for ConfigNode /
NodeSerializer).

Two URL shapes:
  abstractmenus.github.io/api/ru/abstractmenus/api/X.html
    -> github.com/AbstractMenus/minecraft-plugin/blob/master/api/src/main/java/ru/abstractmenus/api/X.java
  abstractmenus.github.io/api/ru/abstractmenus/hocon/api/X.html
    -> github.com/AbstractMenus/hocon/blob/master/src/main/java/ru/abstractmenus/hocon/api/X.java

package-summary.html targets become repo /tree/ links to the directory.
20 links total across 6 developer pages. Verified all 17 minecraft-plugin
paths exist locally.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…conf out

The 2.0 provider model lets multiple economy / level / permission /
skin backends coexist on one server. Previously the actions table
just said "Vault required" for giveMoney / takeMoney - that's the
default but no longer the only option.

Provider selection
  Added a "Provider selection" section to actions.md with worked
  examples for the three call shapes:
    - default backend          (no provider field)
    - per-action override      (provider: "vault" | "playerpoints")
    - server-wide default      (config.conf providers.economy = ...)
  Plus a resolution order box and a cross-link to the developer
  page on writing your own provider.

  Updated the actions table: every provider-backed entry
  (giveMoney/takeMoney, givePermission/removePermission, addGroup/
  removeGroup, giveLevel/takeLevel, giveXp/takeXp, setSkin/resetSkin)
  now Type-column "Number or Object" since the {amount, provider}
  shape is supported, and Description-column links to
  #provider-selection.

  rules.md money row updated similarly.

config.conf
  Until now the config reference was buried as a section in
  start/installation.mdx. Server operators searching for "config"
  expect a dedicated page. Split into start/config.mdx with:
    - full default config in one block
    - per-section key tables (persistence, integrations, paths,
      time, providers, click debounce)
    - reload semantics — which keys take effect on /am reload vs
      need a restart
  installation.mdx links to it now instead of inlining.
  Sidebar adds /docs/start/config/ between installation and how-to.
  Cross-links in faq.mdx and item-format.md updated.

Build: npm run build passes, 0 errors / 0 warnings, 69 pages
(was 67; +config plus RU fallback).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Brought the wiki back in sync with the plugin and api source on master.

Developer API factual fixes:
- handlers.md: PermissionsHandler / LevelHandler / PlaceholderHandler
  method tables corrected to actual interface methods (no more invented
  getGroup, hasLevels, etc.)
- variables.md, migration.mdx: savePlayer -> savePersonal; documented
  getGlobal/getPersonal/deleteGlobal/deletePersonal and Var typed
  accessors
- utils.md: dropped non-existent 3-arg PlaceholderHandler.replace;
  documented full BukkitTasks surface and Logger
- serializers.md: replaced non-existent ConfigNode.children() with
  childrenList/childrenMap and the rest of the actual API

Cheatsheet rewrite:
- Actions and Catalogs sections were generated without sweep against
  the type registry. Replaced with the real registered names from
  CoreActionsBundle / CoreCatalogsBundle (no more giveItem,
  permGroups, takeLevels, etc.). Added missing item properties
  (data, attributeModifier, nameLight, loreLight) to the property
  table and noted the legacy nameLight/loreLight semantics.

Coverage gaps (registered but undocumented):
- general/actions.md: lpMetaSet / lpMetaRemove section, command
  ignorePlaceholder option, full customSound parameters
- general/item-format.md: data, attributeModifier, nameLight,
  loreLight in the tables; new "Attribute modifier" section
- advanced/generation.mdx: missing slice catalog, EntityCatalog
  world parameter
- advanced/logical.md: playerScope wrapper section
- general/commands.md: /var <time> / <replace> trailing arguments

Anchor / link fixes:
- item-format.md: aligned heading slugs with table links
  (#equipped-item, #flag, #potion-effect, #firework, #book, #banner,
  #nbt-tags); bindings link now points to menu-structure where the
  section actually lives
- start/faq.mdx, start/how-to.mdx: replaced #prop-slot, #struct-bindings,
  #struct-auto-refresh with the real slugs (#slot, the bindings
  section in menu-structure, #auto-refresh)
- general/actions.md: same #bindings -> menu-structure redirect
- general/menu-structure.md: SHIFT_RIGHT description corrected from
  "Left" to "Right"

GitBook-style placeholder links cleaned up:
- Replaced [text](identifier) artifacts in actions, variables,
  placeholders, menu-structure, hocon, drag-and-drop, input,
  templates, generation with real targets or anchors
- Removed the [example](...) placeholder text artifacts that survived
  migration

Other:
- start/installation.mdx: removed the non-existent animatedHead item
  property reference (animations come through %hanim_:..:..%
  placeholder, not a property)
- advanced/drag-and-drop.md: example referenced slot 15 but the
  HOCON above used slot 6
- general/actions.md: removed "Vault by default" / "LuckPerms by
  default" wording that contradicted the auto-resolve behaviour
  documented in the same file

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Both locales now sit symmetrically under src/content/docs/:

  src/content/docs/
    en/      English content
    ru/      Russian content (mirrors en/, fills in gradually)

Previously English lived at the root of content/docs/ via Starlight's
"root locale" pattern, with Russian as a sibling ru/ subdirectory.
That worked but read as visually asymmetric and made it less obvious
where new locales would slot in.

Changes:
- defaultLocale: "root" -> "en"
- locales config: dropped root, added explicit `en` entry
- Moved every English source file into src/content/docs/en/
- Updated all internal /docs/(start|general|advanced|developers|demo|
  changelog)/ links to /docs/en/... in the English content
- feed.xml.ts now points at /docs/en/changelog/
- Added a / -> /docs/en/ redirect so bare /docs/ still works
- Sidebar Changelog link updated with per-locale translations
- Fixed relative imports in en/general/examples.mdx (one level deeper
  now, "../../../examples" -> "../../../../examples")
- README updated: layout, URL scheme, page-creation flow

URLs change for everything except images and the RSS feed:
  /docs/start/how-to/    -> /docs/en/start/how-to/
  /docs/img/foo.png      -> stays
  /docs/feed.xml         -> stays
Starlight hardcodes width: 6.25em on the theme picker <select>, which is
fine for English ("Auto/Dark/Light") but truncates Russian "Светлая" to
"Свет..." in the header. Override to width: auto with min-width: 6.25em
so the dropdown sizes to its widest option without shrinking below the
English layout.

Starlight has a TODO in their ThemeSelect.astro about this exact issue;
the upstream fix isn't there yet, so we patch it locally.
The markdownlint job on PR #2 surfaced a mix of real bugs in the
carry-over RST content and overly strict rules that would force
churn-only reformatting on dozens of reference tables.

Real fixes:
- rules.md: escape literal "||" inside the if-rule operator table cell;
  the unescaped pair was being parsed as two extra column delimiters,
  breaking the whole row.
- 5 fenced code blocks tagged with `text` (terminal output / file tree
  examples that pandoc emitted without a language hint).
- 4 admonition-then-heading transitions got the missing blank line.
- "Math actions (personal)" disambiguates the duplicate of the
  global-vars heading.
- input.mdx had two consecutive "## Activator context" headings; the
  second is renamed to "Context placeholders" to match its content.

Rule relaxations in .markdownlint-cli2.jsonc:
- MD060 (compact tables): RST conversion uses no-space-around-pipes.
  Reformatting every table is churn-only.
- MD059 (descriptive link text): legacy "[here]" links live in many
  carry-over pages and will be addressed during the editorial pass.
- MD036 (emphasis as heading): used for image captions in some pages.
- MD030 (list marker space): RST emits "1.  " with two spaces.
- MD046 (code block style): both fenced and indented are valid Markdown.
- MD024 (duplicate heading): switched to siblings_only so headings
  like "Set" can appear under both "Global vars" and "Personal vars".
The operator table in rules.md mixed three styles: bare cells with
backslash-escaped angle brackets, bare cells with no escaping, and a
few cells already in backticks. Normalised to backticks across the
board so each operator and each example renders as monospace code.

The "||" row remains the lone exception. Markdown's table parser splits
rows on literal "|" before code spans are recognised, so any "||" inside
backticks corrupts the cell count and breaks rendering. The escape
"\\|\\|" outside backticks is the only construction the parser accepts.
That row reads slightly differently (no monospace) but the table no
longer breaks.
Mix of three things on the failing run:

1. Real typos in carry-over content - fixed:
   - Abstact / AbstactMenus / AbstrctMenus / AbstratMenus -> AbstractMenus
   - Unfortunatelly -> Unfortunately
   - futher -> further
   - independ -> independent / independently
   - palceholders, placehodlers -> placeholders
   - variabes -> variables
   - resctiction -> restriction
   - sometning -> something
   - invenotry -> inventory
   - owerwrite -> overwrite
   - wothout -> without
   - priproty -> priority
   - uderstandable -> understandable
   - begid -> begins
   - atleast -> at least
   - spefic -> specific
   - paraed -> parsed

   While there, rewrote a few of the surrounding sentences for clarity.

2. Russian content (src/content/docs/ru/**) ignored. cspell would need
   the Russian dictionary to evaluate it; not worth pulling in for the
   handful of translated pages we'll have. Russian content gets reviewed
   by humans during translation.

3. Project terms and common technical English added to the dictionary
   (.cspell-words.txt): Nanit, Nashorn, Deutsch, hanim, mrules, vart,
   varpt, itemstack, actionbar, classloader, Cheatsheet, Cooldown,
   Frontmatter, interactable, pickable, respawn, respawning, laggy,
   topo (as in topological sort), and the British-English spellings
   the project uses (behaviour, colour, recognised, customisation,
   organisation).
@BrainRTP BrainRTP merged commit 900d3b2 into main Apr 30, 2026
2 checks passed
@BrainRTP BrainRTP deleted the task/docs-2.0-actualize branch April 30, 2026 06:33
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