| Age | Commit message (Collapse) | Author |
|
The original RST `_include/need_improvement.txt` wrapped the admonition
in `.. raw:: latex \iffalse / \fi`, intentionally hiding the
"Call for Contributions" notice from the LaTeX/PDF builder (see
b222a313, 2020). `.readthedocs.yml` enables `formats: - pdf` and
`conf.py` configures `latex_elements`/`latex_documents`, so PDF output
is a real downstream artifact.
The previous commit (82a06e1d) dropped that suppression. Restore it
using Sphinx's `only` directive with `not latex`, which is the MyST
equivalent of the original RST builder-conditional pattern.
Spotted by Copilot inline review on #2016.
π€ Generated by [robots](https://vyos.io)
|
|
renders correctly
After the RSTβMyST migration, ~45 MD pages use the plain `{include}` MyST
directive to pull in `_include/need_improvement.txt`. The included file
still contained RST (`.. raw:: html`, `.. raw:: latex`, `:ref:`), and
MyST's built-in `{include}` parses the content with the *outer* file's
parser β i.e. as MyST. RST directives then render as literal paragraphs.
Visible symptom on docs.vyos.io/en/rolling (and across 1.5/1.4):
the VPP index, VPP subpages, haproxy, isis, bfd, policy, pki, salt,
flowtables, webproxy, and others all show:
.. raw:: latex
\iffalse
.. raw:: html
Call for Contributions
Help improve this section ...
For contribution guidelines, see :ref: documentation .
Fix: rewrite `_include/need_improvement.txt` as a native MyST admonition
(`:::{admonition} Call for Contributions / :class: error / ... / :::`)
and drop the now-unnecessary `{eval-rst}` wrapper at the single callsite
(`configuration/highavailability/index.md`) that wrapped the include for
RST processing.
The fix is companion to 9c815d68 (cmdincludemd RST plumbing) but targets
the plain-`{include}` path which doesn't route through our custom
extension.
π€ Generated by [robots](https://vyos.io)
|
|
docs: fix typos across configuration, contributing, and vpp docs
|
|
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)
|
|
- 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)
|
|
- 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
|
|
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
|
|
- 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
|
|
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
|
|
|
|
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)
|
|
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)
|
|
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)
|
|
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)
|
|
troubleshooting: T8608: document TCP ping
|
|
T8600: Add option to change logging verbosity in Kea
|
|
|
|
|
|
|
|
π€ Generated by [robots](https://vyos.io)
|
|
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)
|
|
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)
|
|
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)
|
|
π€ Generated by [robots](https://vyos.io)
|
|
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>
|
|
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)
|
|
Specificity (0,2,1) > (0,1,1) β no longer relies on rule order.
π€ Generated by [robots](https://vyos.io)
|
|
.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)
|
|
vyos/fix/codecopier-snippet-leak-and-clipboard-error
fix(codecopier): exclude Copy label from clipboard and stop showing false success
|
|
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)
|
|
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)
|
|
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)
|
|
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)
|
|
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)
|
|
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)
|
|
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)
|
|
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)
|
|
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)
|
|
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)
|
|
# Conflicts:
# docs/conf.py
|
|
fix/codecopier-snippet-leak-and-clipboard-error
# Conflicts:
# docs/_static/js/codecopier.js
|
|
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)
|
|
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)
|
|
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)
|
|
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
|
|
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
|
|
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>
|
|
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>
|
|
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)
|
|
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)
|