| Age | Commit message (Collapse) | Author |
|
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 22 of 23
entries. The single exception is `cli.html` β sagitta's `docs/cli.rst`
hasn't been migrated to MyST (rst-to-myst chokes on the heading
hierarchy), so no `cli.md` is served at the HTML root. A Jinja
comment in the template documents the exception and references the
follow-up cli.rst migration as a separate PR.
Verified locally: every linked `.md` path returns 200 in production.
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)
|
|
Same fix as `current`: 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.
Addresses CodeRabbit review feedback on PR #1876.
\xf0\x9f\xa4\x96 Generated by [robots](https://vyos.io)
|
|
# Conflicts:
# docs/conf.py
|
|
The sagitta build failed on /en/1.4/ post-flip because docs/_ext/vyos.py
was missing two version-compatibility patches that current already has:
- Line 224: nodes.reprunicode(path) β str(path) (docutils 0.21 removed
nodes.reprunicode)
- Line 367-378: myst-parser 2.0 fallback for nested_render_text β the
RST 'Body' state does not expose _renderer, so the call falls back to
docutils nested_parse via a ViewList
These patches landed on current via earlier PRs but were never backported
to sagitta. The flip PR exposed the missing patches because the new
build path renders cmdinclude blocks through MyST's render_restructuredtext
which uses the RST 'Body' state without _renderer.
Bringing current's _ext/vyos.py byte-identical fixes both issues. The
file has no sagitta-specific divergence beyond these two patches.
Generated by robots https://vyos.io
|
|
Mirror of #1899 (current) and #1900 (circinus) for sagitta. Same logic,
same scripts, per-branch file set.
Changes:
- Rename docs/**/md-<stem>.md to docs/**/<stem>.md (drop md- prefix) for
all 210 stems previously listed in docs/_swap.txt
- Rename docs/**/<stem>.rst to docs/**/rst-<stem>.rst (add rst- prefix)
for the same 210 stems
- Repurpose docs/_swap.txt as docs/_rst_overrides.txt; initially empty
- conf.py exclude_patterns flipped: rst-*.rst excluded by default
- conf.py runtime-artifact references updated to _rst_override_state.json
and _md_exclude.txt
- scripts/swap_sources.py imported from current (post-#1899 rewrite, with
inverted rename direction)
- scripts/import_myst.py and tests/test_import_myst.py deleted (obsolete)
- tests/test_swap_sources.py imported from current (post-#1899 rewrite)
Side-effect: fixes the same 404 on /en/1.4/ View page source links that
#1899 fixed for /en/rolling/ and #1900 fixed for /en/1.5/.
Per-branch differences vs #1899:
- sagitta has 210 stems vs current's 254 (sagitta has no vpp pages and
fewer current-only features; cli + installation/cloud/aws are still
RST-only on sagitta pending the title-level fix follow-up)
- otherwise the script/conf.py/test changes are byte-identical with current
Generated by robots https://vyos.io
|
|
Replaces the broken #1886 with a fresh, properly-converted MyST set for
the sagitta (1.4.x) docs, mirroring what landed for circinus via #1897.
This PR:
- Re-imports 210 md-*.md files for sagitta. Source: ran the pipelines
rst-to-myst converter (chrisjsewell/rst-to-myst v0.4.0, with pandoc
fallback) on sagittas RST. Post-processed via the pipelines
postprocess stage (10 ordered fixes for blanks, admonitions, label
hyphens, pandoc artifacts, structural blanks, linter markers).
Compared to the broken #1886 content (which was left over from an
earlier stage-1-only run): zero raw `<div class=>` remnants.
- For 23 stems where sagittas RST is byte-identical with currents RST
(mostly stable policy/protocol pages and the 404 page), reuses currents
already-validated md-*.md content rather than re-converting.
- Drops cli and installation/cloud/aws from sagittas swap set: their
RST has SEVERE/4 "Title level inconsistent" errors that crash
rst-to-myst; they need an independent RST-source fix and are kept as
RST-only for now.
- Adds the per-page swap mechanism: scripts/swap_sources.py,
scripts/import_myst.py, the matching tests under tests/, _swap.txt
with 210 stems, _ext/vyos.py MyST renderer fallback, Makefile
swap-wrapped targets, .readthedocs.yml swap pre/post hooks.
- Adds 187 .webp images and removes 235 superseded .jpg/.png/.jpeg
static assets; flips html_logo to vyos-logo.webp.
- Adds the MyST swap-related blocks to docs/conf.py only:
myst_enable_extensions, myst_fence_as_directive, md-*.md exclude
patterns, _swap_exclude.txt reader, _prefer_webp and _copy_md_sources
setup hooks. github_version fallback set to 'sagitta' to match the
branch (parallel to currents 'current' and circinuss 'circinus').
Deliberately excluded (per user direction):
- llms.txt and sphinx-llms-txt / sphinx-sitemap config: these will
land separately for sagitta via #1870 plus a new sagitta-specific
llms.txt template PR. The conf.py here does not pull those extensions
in, so the build does not depend on the new pip packages.
Verification before pushing:
- 210 md-*.md = 210 _swap.txt stems = 210 RST siblings on sagitta (1:1:1).
- 0 files contain raw `<div class=` (the breakage that took down /en/1.5/).
- conf.py copyright/version/release preserve sagittas values
(2024 / 1.4 / "1.4.x (sagitta)") - not currents.
- html_title from currents conf.py removed - PR #1880 is the right place
for sagittas branch-localized title.
Supersedes / closes on merge:
- #1886 (broken converter output, would break /en/1.4/ if merged).
Generated by robots https://vyos.io
|
|
* docs: link "View page source" to GitHub instead of raw text
Adds html_context with display_github=True so the sphinx_rtd_theme
generates an "Edit on GitHub" link. READTHEDOCS_GIT_IDENTIFIER is used
to point at the exact branch/PR ref being built; falls back to
"sagitta" for local builds.
π€ Generated by [robots](https://vyos.io)
* docs: fix GitHub source link on RTD PR preview builds
On external (PR preview) builds READTHEDOCS_GIT_IDENTIFIER is set to
the PR number, which is not a valid GitHub ref. Use the commit hash
instead for external builds; branch name for regular builds.
π€ Generated by [robots](https://vyos.io)
|
|
This reverts commit 22e34ce5aee24d2fd11f8205522ab7ecdb3c4c5e.
|
|
* feat(swap-sagitta): add incremental RST-to-MyST swap mechanism
Backport of the swap mechanism from feat/incremental-myst-swap onto
the sagitta release branch. Built directly on top of origin/sagitta,
so the underlying RST tree is sagitta's (not current's).
Mechanism:
- scripts/import_myst.py β import md from myst/* with md- prefix
- scripts/swap_sources.py β rename md-{name}.md β {name}.md before
Sphinx builds, restore after; writes _build/_swap_state.json and
_build/_swap_exclude.txt
- docs/Makefile β html/dirhtml/pdf/livehtml all run swap β build β
trap restore; explicit `swap` and `restore` targets too
- docs/conf.py β MyST extensions enabled; swap exclude_patterns
loader; _prefer_webp builder hook so html prefers webp over png
Content:
- 202 md-prefixed pages from origin/myst/sagitta (md-{name}.md
alongside each {name}.rst counterpart)
- 1 plain MyST-only page from myst/sagitta where no .rst exists
(already at canonical name on sagitta: docs/copyright.md)
- 240 .webp images from myst/sagitta (added alongside the existing
PNG/JPG so RST builds keep their assets)
- docs/_swap.txt populated with all 202 stems β MyST is served by
default, revert a page by removing its stem from _swap.txt
π€ Generated by [robots](https://vyos.io)
* feat(conf): copy .md sources into HTML output for plain-text serving
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)
* docs: address review feedback (backport from PR #1857)
Fix conversion artifacts, typos, and technical inaccuracies applicable
to the sagitta branch: curly quotes, typos (deamonless, cammans,
amdifferent, trough), incorrect firewall command paths, missing closing
brace in zone-policy, peer name inconsistencies, hardcoded passwords
replaced with vault references, and md-*.md exclusion in conf.py.
π€ Generated by [robots](https://vyos.io)
* docs: port .readthedocs.yml jobs, _ext/vyos.py fallback and swap-script tests from PR #1857
Parity backport from PR #1857 (current) β three pieces were missing on
sagitta.
- .readthedocs.yml: add build.jobs.pre_build / post_build hooks that run
scripts/swap_sources.py --swap before the Sphinx build and --restore
after. Without this, the swap mechanism ships but never runs on RTD
builds for this branch β the swap is a silent no-op.
- docs/_ext/vyos.py: CmdInclude.run() now falls back to nested_parse()
when self.state._renderer is not present. Required for cfgcmd /
opcmd / cmdincludemd directives to render correctly when included
from MyST pages (the swap mechanism's whole point). Sagitta-only
delta on _ext/vyos.py (the path = str(path) line on 224) is
intentionally untouched.
- tests/test_import_myst.py, tests/test_swap_sources.py: tests for the
swap scripts. The scripts on this branch are byte-identical to
current's, so the same tests apply. Travels with the branch so CI
catches per-branch regressions if the scripts ever drift.
π€ Generated by [robots](https://vyos.io)
* fix(conf): skip md-*.md staging files in _copy_md_sources
Agent-Logs-Url: https://github.com/vyos/vyos-documentation/sessions/919695a7-688d-41b9-89f0-540684625dbc
Co-authored-by: andamasov <12631358+andamasov@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: andamasov <12631358+andamasov@users.noreply.github.com>
|
|
Sagitta (1.4 LTS) had no html_title defined, so the rendered page
<title> and navigation top bar fell back to the Sphinx default. The
sibling LTS branch (circinus) and current both set html_title; sagitta
should match for consistency.
Add html_title using the existing release variable so the title
resolves to "VyOS 1.4.x (sagitta) LTS".
Spotted while reviewing PR #1869/#1870 feedback; unrelated to that
change and pre-existing.
π€ Generated by [robots](https://vyos.io)
|
|
RTD redirects /en/sagitta/* to /en/1.4/*. Pointing html_baseurl at the
canonical slug makes <link rel="canonical"> and the sitemap match the
URL RTD actually serves, so crawlers skip the redirect hop. /en/sagitta/
still works as an alias.
π€ Generated by [robots](https://vyos.io)
|
|
- Pin sphinx-llms-txt 0.7.1 and sphinx-sitemap 2.9.0
- Set html_baseurl to https://docs.vyos.io/en/sagitta/
- llms.txt rendered at build time from a Jinja template; llms-full.txt
auto-generated by sphinx-llms-txt
- Optional section adapted to sagitta layout (no contributing index, no VPP)
- Same change applied to current and circinus in separate PRs
π€ Generated by [robots](https://vyos.io)
|
|
(cherry picked from commit 9f334f3d5547735fa8c83fd6b6e7bbafa589f11a)
|
|
Examples using `set policy local-route rule 101 source '203.0.113.254'` should include the `address` statement.
Tested on: VyOS 1.4.4
This is again the result of VyOS devs merging without updating the documentation: https://github.com/vyos/vyos-1x/pull/2342 :(
|
|
(cherry picked from commit 7f2d94a10d6f439e9f3b4a5fff98c317d680c262)
|
|
|
|
|
|
(cherry picked from commit 1ea5d99f4f1e7f1a6911ddcae1aa5a0d9127f094)
|
|
* syslog: T4251: Add documentation for syslog TLS configuration
Documented protocol, certificate, auth-mode, and permitted-peers
requirements for TLS configuration.
(cherry picked from commit a3d3347ee8e05e11a23d795070803748bcf84458)
* syslog: T4251: Fix documentation of TLS enablement logic for syslog
(cherry picked from commit a271d322e2977686dbd67f5967a9c1660f6789bd)
* syslog: T4251: Rename "permitted-peers" to "permitted-peer"
- Renamed `permitted-peers` to `permitted-peer`.
- Added support for multiple `permitted-peer` entries.
(cherry picked from commit 85a097b4a19b52179b45966cbcc8c7f30030a884)
|
|
(#1712) (#1715)
(cherry picked from commit 8c0c0bfe1c041fb6cd48402db033351f094c0e0c)
# Conflicts:
# docs/configuration/vpn/ipsec/remoteaccess_ipsec.rst
Co-authored-by: Christian Breunig <christian@breunig.cc>
|
|
Co-authored-by: Systeembeheerder <systeembeheerder@users.noreply.github.com>
|
|
VyOS 1.3 uses `pubkey`, VyOS 1.4 uses `public-key`. Update examples to reflect that change.
|
|
Add missed `Virtual-Template1` for LAC L2TP Cisco config example
(cherry picked from commit ebb33be3c3b1cf118fef588840528f2c0daa5dc5)
|
|
* Updated the installation page with latest information
* T7361:remove the document related to Vyatta
|
|
* Updated the installation page with latest information
* op-mode:T3477: Correction of operational command syntax as per available CLI commands
|
|
Updated mDNS documentation from 1.5 branch.
The previous topic was not updated since 1.3 branch.
|
|
Connectivity (#1673)
* Added documentation pages for AWS/Azure HA deployment and modified pages AWS,Azure,GCP
* Update docs/installation/cloud/azure-ha.rst
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Added documentation page VyOS Deployment on AWS and Azure for Secure Cloud-to-Cloud Connectivity
* Modified diagram name
* Update docs/installation/cloud/aws-to-azure.rst
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
|
|
Azure, GCP deployment pages (#1668)
* Added documentation pages for AWS/Azure HA deployment and modified pages AWS,Azure,GCP
* Update docs/installation/cloud/azure-ha.rst
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
|
|
Added blueprint Policy-based Site-to-Site IPsec VPN with Cisco IOS.
Added blueprint Route-based Site-to-Site IPsec VPN with Cisco IOS.
Added blueprint Route-based Site-to-Site IPsec VPN with Palo Alto.
|
|
(cherry picked from commit 1f5ad605bc854f60565666a9e5d1a06488594732)
Co-authored-by: Christian Breunig <christian@breunig.cc>
|
|
* Updated site-to-site IPsec VPN documentation
Added general theoretical IPsec documentation.
Changed site-to-site IPsec VPN documentation.
Added steps for configuration.
Added documentation for troubleshooting site-to-site IPsec VPN.
Backported from https://github.com/vyos/vyos-documentation/pull/1653
---------
Co-authored-by: aapostoliuk <aapostoliuk@vyos.io>
Co-authored-by: Daniil Baturin <daniil@baturin.org>
|
|
|
|
|
|
(cherry picked from commit 102eb9d462d7dcaaba71c1b7e27cf91fda84a21f)
Co-authored-by: factor2431 <factor2431@outlook.com>
|
|
|
|
(cherry picked from commit fd6b53a2b6e2e7757a3600f3ead5fde6855fedd1)
# Conflicts:
# docs/configuration/system/option.rst
|
|
(cherry picked from commit 1930ed17847404d185b1bef0f1e428a37870de67)
|
|
Rewritten VyOS deployment for GCP
|
|
Rewrited VyOS deployment for GCP v2
|
|
Explain the limitations in the current version
|
|
policy: T7158: Added match source-vrf to route-map (backport #1612)
|
|
Added match source-vrf to route-map
(cherry picked from commit 10547374e3645353455e39fe40e3ecceee6f0d2f)
|
|
Allow using route-maps for VRF route leaking in BGP
(cherry picked from commit e585f01bf26967835675fa0aafe5308e79f0ba9a)
|
|
more wrong ports..
|
|
|
|
remove "As VyOS is Linux based the default port used is not using 4789 as the default IANA-assigned destination UDP port number. Instead VyOS uses the Linux default port of 8472."
See
* https://github.com/vyos/vyos-1x/blob/current/src/conf_mode/interfaces_vxlan.py#L226
* https://github.com/vyos/vyos-1x/blob/current/interface-definitions/interfaces_vxlan.xml.in#L105
Looks like VyOS DOES use 4789 and not 8472 by default.
|
|
`set interfaces vxlan <interface> source-address <interface>`
should be
`set interfaces vxlan <interface> source-address <IP address>`
in 1.4.1:
```
# set interfaces vxlan vxlan1 source-address
Possible completions:
<x.x.x.x> IPv4 source address
<h:h:h:h:h:h:h:h> IPv6 source address
127.0.0.1
::1
```
|