summaryrefslogtreecommitdiff
path: root/docs
AgeCommit message (Collapse)Author
2026-05-12Merge pull request #1997 from vyos/claude/scan-typos-errors-VJZ5EViacheslav Hletenko
docs: fix typos across configuration, contributing, and vpp docs
2026-05-12fix(ext): parse cmdincludemd content as RST so legacy `_include/*.txt` ↡Yuriy Andamasov
directives render The `_include/*.txt` library is written in reStructuredText (`.. cfgcmd::`, `.. code-block::`, `.. note::`, `.. cmdinclude::`). After the RSTβ†’MyST migration, the `{cmdincludemd}` fence on .md pages routed include content through `MockState.nested_parse`, which in MyST 2.0 simply replays the content through the MyST renderer (see myst_parser/mocking.py:153). RST directives in the .txt file then rendered as literal paragraph text: <p>.. cmdinclude:: /_include/interface-description.txt</p> <p>.. cfgcmd:: set interfaces ethernet ...</p> <p>.. code-block:: none</p> User-visible symptom (reported on rolling docs): the Ethernet, dummy, tunnel, bonding, bridge, macsec, vxlan, l2tpv3, pseudo-ethernet, virtual-ethernet, and wireless pages all showed unprocessed `.. cfgcmd::` and `.. cmdinclude::` directives instead of styled command boxes. Fix: mirror MyST's own `{eval-rst}` plumbing (`MockRSTParser().parse(text, doc)` per `mdit_to_docutils/base.py:1655`). Build a fresh document that inherits the outer document's settings + reporter, run `MockRSTParser` over the substituted include content, and graft the resulting children back into the calling document with explicit-target registration. Keeps the Sphinx env available to `cfgcmd`/`opcmd`/`cmdinclude` directives. Verified locally on rolling (Sphinx 7.x, myst-parser 2.0): zero literal `cfgcmd::` / `cmdinclude::` / `code-block::` / `opcmd::` / `note::` / `include::` strings remain in any built HTML page under `configuration/`, `automation/`, `installation/`, `operation/`, `vpp/`; all 11 affected interface pages now render proper `cfgcmd-heading` / `cfgcmd-body` blocks (e.g. ethernet.html: 160, wireless.html: 172, dummy.html: 4). πŸ€– Generated by [robots](https://vyos.io)
2026-05-12docs: address ready-flip review (webproxy hostname, ospf grammar, ipsec polish)Yuriy Andamasov
- webproxy.md: replace `ftp.univ-tlse1.fr` with `ftp.example.com` so the hostname matches the documentation-reserved IP `192.0.2.249` (Copilot). - ospf.md: insert missing preposition in `show ip ospf interface` and `show ipv6 ospfv3 interface` op-cmd descriptions (CodeRabbit). - ipsec.md: rewrite intro sentence ("can significantly speed up …") and hyphenate `feature-rich` (CodeRabbit). πŸ€– Generated by [robots](https://vyos.io)
2026-05-11docs: address Copilot grammar review on ospf and vpp ipsecClaude
- ipsec.md: "to speed-up" -> "to speed up"; drop article in "creates a corresponding SAs and policies"; "there routes" -> "these routes". - ospf.md: "Cost calculation wireguard interfaces" -> "Cost calculation for WireGuard interfaces". https://claude.ai/code/session_01RDpSBDLSWLKMGnyPCaKECB
2026-05-11docs: hard-wrap pre-existing long prose lines to satisfy doc-linterClaude
scripts/doc-linter.py enforces an 80-character limit outside fenced code blocks and treats any finding as a failure. Wrap long paragraphs in files that this PR touched so CI passes: - docs/configuration/protocols/ospf.md: wrap the WireGuard cost note. - docs/configuration/protocols/traffic-engineering.md: wrap the IS-IS/ OSPF note. - docs/contributing/debugging.md: wrap the Phabricator paragraph, and guard the long [bootchart.conf]/[vyatta-cfg] link references at EOF with `% stop_vyoslinter`/`% start_vyoslinter`. - docs/vpp/configuration/ipsec.md: wrap the integration, requirements, algorithm, ACL, VTI example, troubleshooting paragraphs. Pure reformatting; no semantic changes. https://claude.ai/code/session_01RDpSBDLSWLKMGnyPCaKECB
2026-05-11docs: address review feedback and pre-existing doc-lint errorsClaude
- terraformAWS.md: balance the orphan `.. stop_vyoslinter` directive inside the eval-rst block and wrap the long MyST link references at EOF with `% stop_vyoslinter`/`% start_vyoslinter`. - webproxy.md: replace real-world IP 193.49.48.249 with doc-range 192.0.2.249 in the blacklist update example output. - console-server.md: "some times" -> "sometimes". - bgp.md: "command disable" -> "command disables"; add comma before "use the delete form"; "Route dampening which described in" -> "Route dampening, described in". https://claude.ai/code/session_01RDpSBDLSWLKMGnyPCaKECB
2026-05-11docs: fix typos across configuration, contributing, and vpp docsClaude
Corrections include: adresses->addresses, oder->other, Them->The, criterias->criteria, seeting->setting, carefull->careful, beeing->being, reenable->re-enable, wich->which, derection->direction, Whith->With, assosiate->associate, fpr->for, bootup->boot, trough->through. https://claude.ai/code/session_01RDpSBDLSWLKMGnyPCaKECB
2026-05-11Fix recursive _build directory nesting errorQuill Cronwall
2026-05-10docs: drop stray terraformvyos.rst and remove .rst from source_suffixYuriy Andamasov
The .md equivalent already exists alongside it; with both present and `source_suffix = ['.rst', '.md']`, Sphinx silently preferred the .rst. Deletion removes the shadowing and the only active .rst left in tree (legacy is archived under docs/_rst_legacy/). Restricting source_suffix to ['.md'] prevents future stray .rst files from being picked up, and is what external indexers (e.g. context7) look at when classifying the source format of the docs. πŸ€– Generated by [robots](https://vyos.io)
2026-05-10chore: livehtml β€” drop stale md-* ignore, add _rst_legacy ignoreYuriy Andamasov
The md- prefix on MyST-migrated pages was retired; the ignore was dead config. Replace with _rst_legacy/ so sphinx-autobuild watches don't trigger on archive edits. Addresses Copilot's low-confidence suggestion on PR #1940. πŸ€– Generated by [robots](https://vyos.io)
2026-05-10chore: remove RST swap mechanism, archive rst-*.rst under docs/_rst_legacy/Yuriy Andamasov
The swap mechanism (RST-as-fallback for migrated MD pages) is dormant β€” docs/_rst_overrides.txt has been empty since the MyST flip trio (#1899/#1900/#1901) landed in May 2026. The mechanism's surface area (scripts/swap_sources.py, its 245-line test, RTD pre/post hooks, Makefile glue, conf.py dynamic loader) is dead weight, and the rst-*.rst shadows scattered across the source tree cause Context7's parser to misclassify the project as RST. Changes: - Move 253 rst-*.rst shadow files into docs/_rst_legacy/ preserving subdirectory structure. They remain in the repo for reference; Sphinx excludes the folder via exclude_patterns; Context7 excludes it via excludeFolders. - Strip swap_sources.py invocation from docs/Makefile (swap/restore targets, : swap deps, trap chains). - Strip jobs: pre_build/post_build block from .readthedocs.yml. - Strip rst-*.rst exclude entry and the _md_exclude.txt loader from docs/conf.py; replace with a single _rst_legacy exclude. - Delete scripts/swap_sources.py, tests/test_swap_sources.py, docs/_rst_overrides.txt. - Update context7.json: add docs/_rst_legacy to excludeFolders; fix stale "Branch current tracks…" rule to "Branch rolling tracks…" (default branch was renamed 2026-05-10). - Update AGENTS.md: drop the "RST override mechanism" section and the test-runner snippet for the deleted test; describe _rst_legacy as archive only. Verified: sphinx-build -b html with --keep-going produces identical warning set (68 unique), identical sitemap entry count (257), identical llms.txt entry count (22), zero rst-* URLs in any artifact. πŸ€– Generated by [robots](https://vyos.io)
2026-05-10ci/docs: drop current branch references after rename to rollingYuriy Andamasov
Cleanup PR following the currentβ†’rolling default-branch rename. Drops the now-stale current branch from workflow triggers, flips remaining defaults, and updates documentation/templates. Workflows: - pr-mirror-repo-sync.yml: branches narrowed to [rolling]; workflow_dispatch default and choice list now rolling-only; sync_branch fallback flipped from 'current' to 'rolling'. - check-open-prs-conflict.yml: dropped current from push.branches. - update-version-tags.yml: dropped current from push.branches and from the case statement (now bare 'rolling) TAG=rolling'). - submodules.yml: renamed update_current job, branch update-dependencies-current, and the related commit/title strings to rolling. - update-translations.yml: PR branch update-translations-current renamed to update-translations-rolling. - ai-validation.yml: prompt example updated. Docs/templates: - docs/conf.py: READTHEDOCS_GIT_IDENTIFIER fallback flipped to 'rolling'; comment block updated to describe the rolling branch (the user-facing "(current)" suffix is release-channel terminology and remains). - README.md: branching-scheme section now describes rolling as the default branch, with a note about the rename date. - .github/PULL_REQUEST_TEMPLATE.md: CONTRIBUTING link points at blob/rolling. External @current refs to vyos/.github and vyos/vyos-cla-signatures are left untouched β€” they reference those repos' default branches and are unaffected by this repo's rename. πŸ€– Generated by [robots](https://vyos.io)
2026-05-10Merge pull request #1878 from anderbak/t8608-tcp-ping-docsYuriy Andamasov
troubleshooting: T8608: document TCP ping
2026-05-10Merge pull request #1927 from natali-rs1985/T8600Yuriy Andamasov
T8600: Add option to change logging verbosity in Kea
2026-05-08T8600: Add option to change logging verbosity in KeaNataliia Solomko
2026-05-08docs: Remove deprecated cloud-init pageMilaNad
2026-05-08troubleshooting: T8608: document TCP pinganderbak
2026-05-07fix(docs): add missing space after colon in personalization_storageYuriy Andamasov
πŸ€– Generated by [robots](https://vyos.io)
2026-05-07feat(docs): move Cookiebot CBID to COOKIEBOT_ID env varYuriy Andamasov
Read COOKIEBOT_ID from the environment via conf.py html_context, replacing the hardcoded data-cbid value in layout.html. Guards tightened to {% if gtm_id and cookiebot_id %} so neither GTM nor Cookiebot loads unless both IDs are present. πŸ€– Generated by [robots](https://vyos.io)
2026-05-07fix(docs): guard GTM/Cookiebot blocks with {% if gtm_id %}Yuriy Andamasov
Prevents broken googletagmanager.com requests with empty container IDs when GTM_ID is not set (local builds, preview environments). πŸ€– Generated by [robots](https://vyos.io)
2026-05-07feat(docs): read GTM_ID from environment instead of hardcodingYuriy Andamasov
Move the Google Tag Manager container ID out of the template and into conf.py via os.environ.get('GTM_ID', ''), exposed to Jinja via html_context. Set GTM_ID in the RTD project environment variables. πŸ€– Generated by [robots](https://vyos.io)
2026-05-07fix(docs): remove stray </script> and add title to GTM noscript iframeYuriy Andamasov
πŸ€– Generated by [robots](https://vyos.io)
2026-05-07fix(docs): deduplicate GTM ID via Jinja var and use window.dataLayer in gtag()copilot-swe-agent[bot]
Agent-Logs-Url: https://github.com/vyos/vyos-documentation/sessions/f6d95cc7-cdbe-4d76-8077-f7fae5e9ddf2 Co-authored-by: andamasov <12631358+andamasov@users.noreply.github.com>
2026-05-07feat(docs): add Cookiebot CMP and GTM with Consent Mode v2Yuriy Andamasov
Inject Cookiebot CMP, Google Consent Mode v2 defaults, and Google Tag Manager into the Sphinx layout. Cookiebot loads first so its auto-blocker can scan and block other tags before they execute; Consent Mode v2 starts denied for all categories except security_storage and updates only after Cookiebot fires the consent update. πŸ€– Generated by [robots](https://vyos.io)
2026-05-07fix(css): use .highlight > .copyDiv.copyFailedNotifier for strict specificityYuriy Andamasov
Specificity (0,2,1) > (0,1,1) β€” no longer relies on rule order. πŸ€– Generated by [robots](https://vyos.io)
2026-05-07fix(css): increase copyFailedNotifier specificity to override copyDiv base styleYuriy Andamasov
.copyFailedNotifier (0,1,0) was losing to .highlight > .copyDiv (0,1,1), so the red failure background never rendered. Adding .copyDiv to the selector brings specificity to (0,2,0) which overrides the base rule. πŸ€– Generated by [robots](https://vyos.io)
2026-05-07Merge pull request #1890 from ↡Yuriy Andamasov
vyos/fix/codecopier-snippet-leak-and-clipboard-error fix(codecopier): exclude Copy label from clipboard and stop showing false success
2026-05-07chore(makefile): remove dead AUTOOPTS variableYuriy Andamasov
AUTOOPTS = --watch . was defined but never referenced β€” livehtml uses explicit --ignore flags instead. Drop the dead assignment. Circinus is unaffected; its livehtml still uses $(AUTOOPTS) directly. πŸ€– Generated by [robots](https://vyos.io)
2026-05-07docs(robots): fix stale sitemap URL on currentYuriy Andamasov
Was `https://docs.vyos.io/sitemap.xml` β€” doesn't exist on RTD's per-version layout. The actual sitemap is at `/en/rolling/sitemap.xml` (matching `html_baseurl` and `sphinx-sitemap`'s output). `circinus`/`1.5` already has the correct `/en/1.5/sitemap.xml`; `sagitta`/`1.4` is being fixed in [#1904](https://github.com/vyos/vyos-documentation/pull/1904). \xf0\x9f\xa4\x96 Generated by [robots](https://vyos.io)
2026-05-07docs(conf.py): fix stale .html reference in fail-fast commentYuriy Andamasov
Last residual `.html` reference in the `_write_llms_txt` hook comments β€” the html_baseurl-empty failure-path comment said "rendering /quick-start.html etc." but the template now emits `.md` URLs. Update the example to `/quick-start.md` to match the actual output. Comment-only change. Same fix applied symmetrically across [#1874](https://github.com/vyos/vyos-documentation/pull/1874), [#1876](https://github.com/vyos/vyos-documentation/pull/1876), and [#1903](https://github.com/vyos/vyos-documentation/pull/1903). Addresses Copilot review feedback on PR #1903. \xf0\x9f\xa4\x96 Generated by [robots](https://vyos.io)
2026-05-07docs(llms.txt): update dirhtml-skip rationale after .md pivotYuriy Andamasov
The previous comment on `_write_llms_txt` (and on the LLM-Facing Files section in CLAUDE.md) justified the `dirhtml` skip by claiming the template's `.html` URLs wouldn't resolve under `dirhtml` output. That became stale after [#1874@5fe7f9ad](https://github.com/vyos/vyos-documentation/pull/1874/commits/5fe7f9ad) (and parity commits on [#1876](https://github.com/vyos/vyos-documentation/pull/1876)/[#1903](https://github.com/vyos/vyos-documentation/pull/1903)) pivoted the curated template to `.md` URLs β€” `_copy_md_sources` puts `.md` files at their source-relative paths regardless of builder, so the rendered llms.txt would actually resolve fine under `dirhtml` now. The real reason we skip `dirhtml` is simpler: production publishes only via the `html`/`readthedocs` builders, and we don't render llms.txt for builds we don't ship. Local `make dirhtml` is a developer convenience, not a publish target. Reword the conf.py comment and the CLAUDE.md section to say that plainly. No code-behavior change. Addresses Copilot review feedback on PR #1874 (3 threads on docs/conf.py, docs/_templates/llms.txt.j2, and CLAUDE.md flagging the inconsistency). \xf0\x9f\xa4\x96 Generated by [robots](https://vyos.io)
2026-05-07docs(llms.txt): point links at .md sources, not .htmlYuriy Andamasov
Per the [llms.txt spec](https://llmstxt.org/), `/llms.txt` links should point at markdown files (the spec example: `[API docs](https://example.com/api.md)`). We were using `.html` URLs, which still work but force LLM consumers through HTML parsing for content that's already available as raw MyST at the same path (the `.md` is copied to HTML root by `_copy_md_sources`). Pivot the curated llms.txt template to `.md` URLs across all 22 entries. Spec-compliant, no extra requests, LLMs get raw markdown without the navigation chrome. Verified locally: `/en/<ver>/<page>.md` returns 200 with raw MyST content (frontmatter + body) for all linked paths on this branch. Same pivot applied symmetrically across [#1874](https://github.com/vyos/vyos-documentation/pull/1874) (current), [#1876](https://github.com/vyos/vyos-documentation/pull/1876) (sagitta), and [#1903](https://github.com/vyos/vyos-documentation/pull/1903) (circinus). πŸ€– Generated by [robots](https://vyos.io)
2026-05-07docs(conf.py): set Jinja autoescape=False explicitly for llms.txt templateYuriy Andamasov
The llms.txt template renders plain text (markdown), not HTML, so the HTML autoescape rules that bandit/ruff S701 flags don't apply. Explicit `autoescape=False` silences the lint while documenting the intent β€” there's no HTML context to escape into here. Behavior unchanged (Jinja's default `autoescape=False` was already in effect); this just makes it visible. Same change applied symmetrically across [#1874](https://github.com/vyos/vyos-documentation/pull/1874) (current), [#1876](https://github.com/vyos/vyos-documentation/pull/1876) (sagitta), and [#1903](https://github.com/vyos/vyos-documentation/pull/1903) (circinus). Addresses CodeRabbit review feedback (S701) on PR #1876. \xf0\x9f\xa4\x96 Generated by [robots](https://vyos.io)
2026-05-07docs(conf.py): use FileSystemLoader/get_template for better tracebacksYuriy Andamasov
Switch from `Environment.from_string(tpl_path.read_text(...))` to `Environment(loader=FileSystemLoader(...)).get_template('llms.txt.j2')`. When `StrictUndefined` raises on a typo in `llms.txt.j2` (e.g. `{{ relase }}`), the traceback now references the real template filename and line number instead of an anonymous in-memory template. That makes debugging template typos materially easier without changing any other behavior β€” same fail-fast guard, same trailing-newline handling, same rendered output. Same change applied symmetrically across [#1874](https://github.com/vyos/vyos-documentation/pull/1874) (current), [#1876](https://github.com/vyos/vyos-documentation/pull/1876) (sagitta), and [#1903](https://github.com/vyos/vyos-documentation/pull/1903) (circinus) so the hook stays identical across branches. Addresses CodeRabbit/Copilot review feedback on PR #1903. \xf0\x9f\xa4\x96 Generated by [robots](https://vyos.io)
2026-05-07docs(conf.py): name the rolling docs as "rolling (current)", not stale circinusYuriy Andamasov
The `current` branch's `release` literal was `'1.5.x (circinus)'` β€” stale since circinus split off as its own LTS branch. The rendered llms.txt verification on the RTD preview surfaced the bug as the canonical version label of the rolling docs: > This documentation covers 1.5.x (circinus). …on a build whose URLs are `/en/rolling/`. The new build-time render introduced by this PR makes the inconsistency a user-visible artifact exposed to LLM consumers, so fix the source-of-truth literal here. Now `release = 'rolling (current)'` and `version = 'rolling'`. Sphinx also exposes `release` in the page footer ("v: rolling (current)") and search metadata, so fixing this string is a single source-of-truth change for the rolling docs. Sagitta and circinus `release` strings are correct already (`'1.4.x (sagitta)'` and `'1.5.x (circinus)'` respectively); no cross-branch sweep needed for `release`. Addresses CodeRabbit review feedback on PR #1874 (the originally pushed-back release-mismatch finding β€” verification proved the push-back wrong). \xf0\x9f\xa4\x96 Generated by [robots](https://vyos.io)
2026-05-06fix(codecopier): guard UI updates against out-of-order async completionsYuriy Andamasov
Rapid re-clicks queue multiple `navigator.clipboard.writeText` promises; without a request token, an older promise resolving later can overwrite the newer click's UI (or have its 2-second timeout fire on the new click's state). Add a per-button `copyRequestId` that each click increments and captures locally; the success/failure UI flip and the revert-timeout body all bail out early if the captured token no longer matches the current one. Addresses CodeRabbit review feedback on PR #1890. \xf0\x9f\xa4\x96 Generated by [robots](https://vyos.io)
2026-05-06docs(conf.py): fail loudly when html_baseurl is missingYuriy Andamasov
Replace the silent `(app.config.html_baseurl or '').rstrip('/') + '/'` fallback with an explicit `RuntimeError`. Every supported branch sets `html_baseurl`, so a missing value would only ever happen as a regression β€” better to fail the build than to ship an llms.txt full of broken root-relative URLs (`/quick-start.html`, `/cli.html`, etc.). Addresses CodeRabbit review feedback on PR #1874. \xf0\x9f\xa4\x96 Generated by [robots](https://vyos.io)
2026-05-06Merge remote-tracking branch 'origin/current' into feat/docs-llms-txt-currentYuriy Andamasov
# Conflicts: # docs/conf.py
2026-05-06Merge remote-tracking branch 'origin/current' into ↡Yuriy Andamasov
fix/codecopier-snippet-leak-and-clipboard-error # Conflicts: # docs/_static/js/codecopier.js
2026-05-06docs(conf.py): drop dirhtml from llms.txt builder list, use StrictUndefinedYuriy Andamasov
Two follow-up Copilot findings on the curated llms.txt render: 1. Drop `dirhtml` from the builder allow-list. The template hard-codes `.html` URLs (`quick-start.html`), which don't exist under `dirhtml` output (`quick-start/index.html`). Production publishes via the `html`/`readthedocs` builders, so `make dirhtml` would only emit a misleading file. Cleaner to skip than to branch URL generation on builder type for a path we don't actually ship. 2. Use a Jinja `Environment` with `StrictUndefined` instead of a bare `Template`. A typo in `llms.txt.j2` (e.g. `{{ relase }}`) now raises at build time instead of silently rendering as an empty string and shipping a half-blank `llms.txt`. Also set `keep_trailing_newline` so the rendered file's terminating newline is preserved. Addresses Copilot review feedback on PR #1874. \xf0\x9f\xa4\x96 Generated by [robots](https://vyos.io)
2026-05-06docs(conf.py): clarify llms_txt_file comment points to _templates sourceYuriy Andamasov
The pre-existing comment said "keep curated render via setup hook" but didn't say where the source template lives. After moving llms.txt off `html_extra_path` and onto a build-time render, point readers explicitly at `_templates/llms.txt.j2` and `_write_llms_txt()` so future updates land in the right place. Addresses Copilot review feedback on PR #1874. πŸ€– Generated by [robots](https://vyos.io)
2026-05-06fix(codecopier): prevent state class crossover on rapid re-clicksYuriy Andamasov
Reset both notifier classes and cancel any pending revert timeout at the start of each click so a fast failure-then-success (or vice versa) can't leave `copiedNotifier` and `copyFailedNotifier` applied simultaneously, and so the 2-second auto-revert window restarts cleanly per click. Addresses Copilot review feedback on PR #1890. πŸ€– Generated by [robots](https://vyos.io)
2026-05-06feat: flip swap mechanism β€” Phase 2 (swap_sources.py rewrite)Yuriy Andamasov
Phase 2 of the MD-as-primary flip. Inverts swap_sources.py so it activates RST overrides (rst-<stem>.rst β†’ <stem>.rst, with the matching <stem>.md excluded via _md_exclude.txt) for stems listed in docs/_rst_overrides.txt. Changes: - scripts/swap_sources.py: rewritten with inverted rename direction and renamed runtime artifacts (_rst_override_state.json, _md_exclude.txt). CLI flags --swap/--restore/--dry-run/--status kept for compatibility with the Makefile and Read the Docs config. - docs/conf.py: clean up the runtime-artifact references that Phase 1 left pointing at the old _swap_state.json and _swap_exclude.txt names. - scripts/import_myst.py and tests/test_import_myst.py deleted; obsolete after the flip (MD is canonical, no separate import workflow needed). - tests/test_swap_sources.py: rewritten for the new semantics. All 10 tests pass under pytest. Smoke-tested end-to-end on a real worktree page (quick-start): adding the stem to _rst_overrides.txt, --dry-run, --swap, --status, --restore, all behave correctly. State JSON has version 2 (bumped from 1 to surface the incompatibility on rollback if old state lingers). Phase 3 will verify Makefile, .readthedocs.yml, docs/_ext/vyos.py don't reference any of the old names, then mark the PR ready-for-review. Generated by robots https://vyos.io
2026-05-06feat: flip swap mechanism β€” MD as primary, RST as override (Phase 1)Yuriy Andamasov
This is the first of three phases inverting the per-page swap mechanism so MD becomes the canonical primary and RST becomes the rare override. Phase 1 β€” file renames + conf.py exclude_patterns flip only: - Rename docs/**/md-<stem>.md to docs/**/<stem>.md (drop md- prefix) for all 254 stems previously listed in docs/_swap.txt - Rename docs/**/<stem>.rst to docs/**/rst-<stem>.rst (add rst- prefix) for the same 254 stems - Repurpose docs/_swap.txt as docs/_rst_overrides.txt; initially empty comment-only since no pages need the RST fallback right now - conf.py exclude_patterns flipped: rst-*.rst is now excluded by default instead of md-*.md - conf.py runtime-artifact references updated to _rst_override_state.json and _md_exclude.txt (Phase 2 will rewrite swap_sources.py to produce these names; for now no swap script runs because overrides list is empty) Phase 2 (next commit on this branch) will rewrite scripts/swap_sources.py with inverted rename direction, delete scripts/import_myst.py + tests, and update tests/test_swap_sources.py for the new semantics. Phase 3 will be the cleanup pass and ready-for-review flip. Generated by robots https://vyos.io
2026-05-06docs(conf.py): also write llms.txt for dirhtml and readthedocs builderscopilot-swe-agent[bot]
Agent-Logs-Url: https://github.com/vyos/vyos-documentation/sessions/782645e7-c7a9-4da7-8c0f-46a0c82f9314 Co-authored-by: andamasov <12631358+andamasov@users.noreply.github.com>
2026-05-06docs: fix regression (everythingg) and inconsistent enable/disable in conntrackcopilot-swe-agent[bot]
Agent-Logs-Url: https://github.com/vyos/vyos-documentation/sessions/9994d03c-fd5a-43d8-a923-dfc9ea3a0a5e Co-authored-by: andamasov <12631358+andamasov@users.noreply.github.com>
2026-05-06docs: fix typos and a few grammar issues (ported from #1852 RST β†’ MyST)Yuriy Andamasov
Ports the typo/grammar sweep originally captured in PR #1852 from .rst files to their .md equivalents, plus the eventhandler grammar fix that Copilot flagged in #1852's review (which the RST PR explicitly skipped as scope-stretch). Sources: - 73 typo/grammar substitutions from PR #1852 (rebased from #1801) - "Using environments is more preferable" β†’ "Using environment variables is preferable" (Copilot review comment on #1852) #1852 itself is being discarded since it targets RST and we are phasing out the RST tree in favor of MyST. The 4 RST-linter line-wrap comments and 1 RST section-underline comment from Copilot's #1852 review are RST-specific and do not apply to .md. πŸ€– Generated by [robots](https://vyos.io)
2026-05-06docs: address review feedback from PR #1857Yuriy Andamasov
Fix conversion artifacts, typos, grammar errors, and technical inaccuracies flagged by automated code review (Copilot + CodeRabbit). Infrastructure: add root-level md-*.md exclusion to conf.py, fix sphinx-autobuild ignore globs in Makefile. Content: fix curly quotes, invalid Go panic() calls, shell quoting in cURL examples, incorrect firewall command paths, typos across 22 documentation files, remove duplicate sections. πŸ€– Generated by [robots](https://vyos.io)
2026-05-06feat(conf): copy .md sources into HTML output for plain-text servingYuriy Andamasov
Adds a build-finished hook that mirrors every .md file from the Sphinx source tree into the HTML output directory verbatim, making unrendered MyST sources accessible alongside HTML renders at the same URL path. πŸ€– Generated by [robots](https://vyos.io)
2026-05-06fix(ext): handle RST fallback in CmdInclude when _renderer absentYuriy Andamasov
`cmdincludemd` is in `myst_fence_as_directive`, so MyST routes fence blocks through `render_fence β†’ render_restructuredtext β†’ MockRSTParser`. In that path `self.state` is a plain docutils Body with no `_renderer`, crashing the build. Fall back to `nested_parse` when `_renderer` is unavailable so the directive works in both MyST and RST/MockRSTParser contexts. πŸ€– Generated by [robots](https://vyos.io)