summaryrefslogtreecommitdiff
path: root/docs/_static
AgeCommit message (Collapse)Author
2026-06-17Fix Cookiebot consent dialog rendering unstyled and breaking the page ↵mergify[bot]
(#2108) (#2109) On a fresh (no-consent) load the consent banner could render completely unstyled and expand to full page height. Cookiebot delivers its dialog CSS as a constructed stylesheet on document.adoptedStyleSheets; ReadTheDocs' readthedocs-addons.js reassigns that whole-array property with a destructive replace, and when that lands after Cookiebot's network-gated adoption it drops Cookiebot's sheet, leaving #CybotCookiebotDialog at position:static expanded to ~6700px. It is a race, so it is intermittent and clears once consent is given (the dialog then never renders). - layout.html: a small adoptedStyleSheets shim, installed before any page script, that preserves Cookiebot's sheet so another library cannot drop it. - custom.css: a leak-safe safety net that keeps the dialog contained even if its adopted sheet is ever absent. It uses only properties Cookiebot itself sets, so it has verifiably no effect on the normal, styled banner. 🤖 Generated by [robots](https://vyos.io) (cherry picked from commit dce7bb521e3947af59fe18895b609ec353e0450e) Co-authored-by: Yuriy Andamasov <yuriy@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) (cherry picked from commit ae4a58675633f59dde7b95c34bddc1a60a744483)
2026-05-07fix(css): increase copyFailedNotifier specificity to override copyDiv base styleYuriy Andamasov
🤖 Generated by [robots](https://vyos.io)
2026-05-07fix(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-07fix(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-07fix(codecopier): exclude Copy label from clipboard and stop showing false ↵Yuriy Andamasov
success Two real bugs in the docs site copy-to-clipboard handler, both flagged by copilot review on PR #1886 (deferred there because that PR is scoped to typos). Bug 1: Copy label leaked into copied snippets on narrow screens The handler read `currentTarget.offsetParent.innerText`. The same handler appends a visible `.copyDiv` (with a 'Copy' <p>) into that container. Below the 992px breakpoint the label is visible (see code-snippets.css .copyDiv > p) so users got 'Copy' appended to every copied snippet. Fix: extract text from the <pre> element inside the container instead, which excludes the injected button. Also switched the lookup root from `offsetParent` to `parentElement` so the source-of-truth is the DOM relationship (the .copyDiv is inserted as a beforeend child of the inner .highlight div via insertAdjacentHTML), not CSS positioning. Bug 2: Failed clipboard writes still showed 'Copied!' The try/catch only logged on failure but the surrounding code still flipped the button into the copiedNotifier success state. Users got false success when writeText rejected (insecure context, permission denied, etc.). Fix: move the success UI flip inside the try, add an explicit failure UI flip ('Failed' text + new `.copyFailedNotifier` class with red background) in the catch. setTimeout still reverts both classes after 2s. Verified in browser with a sphinx-rendered fixture (jQuery 3.7 + Pygments output): both snippets copy their own text without the Copy label, success flow shows Copied!, simulated writeText rejection shows Failed, both states revert after 2s. 🤖 Generated by [robots](https://vyos.io)
2026-05-06feat: import MyST swap mechanism, llms.txt feature, and content from currentYuriy Andamasov
Replaces the broken #1885/#1869/#1875 trio with a single PR for circinus. This PR: - Imports 254 md-*.md files from currents working MyST conversion (the broken converter that produced #1885s md-*.md files is not used here; currents files are correct as verified on /en/rolling/). - Adds the per-page RST-to-MyST swap mechanism: scripts/swap_sources.py, scripts/import_myst.py, tests, _swap.txt, _ext/vyos.py and Makefile swap-wrapped targets, .readthedocs.yml pre/post hooks. - Replaces 175 .jpg/.png with 187 .webp images for swapped pages. - Adds the llms.txt + sitemap feature (sphinx_llms_txt, sphinx_sitemap) with circinus-tailored html_baseurl https://docs.vyos.io/en/1.5/ and curated docs/_html_extra/llms.txt for 1.5.x. - Updates docs/_html_extra/robots.txt with AI crawler Allow rules and the /en/1.5/sitemap.xml reference. - Drops configuration/service/suricata from the swap set (no matching RST sibling on circinus; suricata is a current-only feature). Supersedes: - #1885 (broken md-*.md converter output) - #1869 (LLM doc adaptation backport, bundled here) - #1875 (llms.txt circinus, bundled here) Generated by robots https://vyos.io
2026-05-06Revert "docs: fix typos and grammar (ported from #1852 RST → MyST)"Yuriy Andamasov
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-06feat(swap-circinus): add incremental RST-to-MyST swap mechanismYuriy Andamasov
Backport of the swap mechanism from feat/incremental-myst-swap onto the circinus release branch. Built directly on top of origin/circinus, so the underlying RST tree is circinus'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 (all from origin/myst/circinus): - 253 md-prefixed pages alongside each {name}.rst counterpart - 1 plain MyST-only page kept at canonical name (docs/copyright.md, no .rst counterpart) - 182 .webp images added (circinus release previously had only PNG/JPG; this PR brings webp into circinus alongside the originals) - docs/_swap.txt populated with all 253 stems → MyST is served by default; revert a page by removing its stem from _swap.txt 🤖 Generated by [robots](https://vyos.io)
2026-05-06Revert "Add incremental RST-to-MyST swap mechanism (circinus) (#1867)" (#1893)Daniil Baturin
This reverts commit 5eb383a10ec92c65eed525bc174785a6852e997f.
2026-05-06Add incremental RST-to-MyST swap mechanism (circinus) (#1867)Yuriy Andamasov
* feat(swap-circinus): add incremental RST-to-MyST swap mechanism Backport of the swap mechanism from feat/incremental-myst-swap onto the circinus release branch. Built directly on top of origin/circinus, so the underlying RST tree is circinus'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 (all from origin/myst/circinus): - 253 md-prefixed pages alongside each {name}.rst counterpart - 1 plain MyST-only page kept at canonical name (docs/copyright.md, no .rst counterpart) - 182 .webp images added (circinus release previously had only PNG/JPG; this PR brings webp into circinus alongside the originals) - docs/_swap.txt populated with all 253 stems → MyST is served by default; revert a page by removing its stem from _swap.txt 🤖 Generated by [robots](https://vyos.io) * fix(ext): handle RST fallback in CmdInclude when _renderer absent `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 RTD 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) * 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) 🤖 Generated by [robots](https://vyos.io) * docs: port .readthedocs.yml jobs and swap-script tests from PR #1857 Parity backport from PR #1857 (current) — was missing on circinus. - .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. - tests/test_import_myst.py, tests/test_swap_sources.py: tests for the swap scripts. The scripts are 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(review): add conftest, filter md- from copy, fix _prefer_webp builder list, trailing newline Agent-Logs-Url: https://github.com/vyos/vyos-documentation/sessions/64b17346-8739-4346-b619-84438cddef21 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>
2026-02-17T8081: Update password recovery flow documentation (#1756)Quill
2025-09-29intallation: made modifications to install & update page (#1688)srividya0208
2025-09-04VPP: Add comprehensive VPP documentationzdc
This commit introduces extensive documentation for VyOS VPP (Vector Packet Processing) Dataplane interfaces and features, including examples. Features documented: * VPP integration description, base requirements and limitations * VPP dataplane core settings * Features enabled in the dataplane: ACL, IPsec, NAT, sFlow * VPP interface types: bonding, bridge, GRE, IPIP, kernel, loopback, VXLAN, XConnect Note: This is an initial documentation version that will require ongoing improvements based on user feedback and questions, real-world deployment testing and validation, additional use cases and configuration scenarios discovered in production. Therefore, all pages are marked as "need improvement".
2025-08-04Added IPSec blueprints with Cisco and PA (#1664)aapostoliuk
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.
2025-07-03Updated site-to-site IPsec VPN documentation (#1653)aapostoliuk
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.
2025-02-04DMVPN Dual Hub Dual Cloud blueprintaapostoliuk
DMVPN Dual Hub Dual Cloud blueprint
2025-01-16dmvpn: T2326: DMVPN Documentation for FRR NHRP implementationaapostoliuk
DMVPN Documentation for FRR NHRP implementation.
2024-10-08Add initial secure boot documentationChristian Breunig
2024-08-05Update lastproofread of modified files during previous PR for bridge ↵Nicolas Fort
firewall documenttion; update image which had an error; minor change on documenation
2024-08-02Extend firewall bridge documentationNicolas Fort
2024-07-21Add initial hardware platform Gowin GW-FN-1UR1-10GChristian Breunig
2024-06-14Configuration Blueprints: add new example for firewall+vrf. Also, add note ↵Nicolas Fort
about usage of inbound and outbound interface when interface is attached to a non-default vrf.
2024-06-12Firewall: Add prerouting informationNicolas Fort
2024-03-29Article about terraform and google.mkorobeinikov
How to deploy the Google Cloud instance using Terraform and Ansible for the latest version.
2024-03-03Merge pull request #1295 from mkorobeinikov/masterDaniil Baturin
Update the article
2024-03-01Update the article Terraformmkorobeinikov
Update to the article about terraform. I made changes to the structure and divided the article into three parts AWS AZ vSPhere. Made changes to the table of contents of the article. Added links to resources in git. Added troubleshooting as well as a detailed description of the files.
2024-02-29Update code-snippets.cssRobert Göhler
2024-02-28fixed inner lists styles (#1296)bogdankol
* merged css and js files and layout from dev branch * merged here Robert's PR * new conf.py file * added a comment * added a comment2 * asd1 * asd2 * asd3 * asd4 * asd5 * asd6 * asd7 * sad
2024-02-22Rewritten the L2TP documentationaapostoliuk
Rewritten the L2TP documentation Added the example 'PPPoE over L2TP' to blueprints
2024-02-19Styles refactoring (#1278)bogdankol
2024-01-25Merge pull request #1241 from mkorobeinikov/masterRobert Göhler
the article about Terraform
2024-01-25the article about Terraformmkorobeinikov
the article about Terraform+AWS+Azure+Ansible+VMware
2024-01-19Updated DPD and close-action values in IPSECaapostoliuk
Changed from 'hold' to 'trap' and from 'restart' to 'start' in close-action. Changed from 'hold' to 'trap' in DPD action.
2024-01-10added new NPTv6/DHCPv6 exampleTrae Santiago
2023-12-06Firewall: update firewall bridge docs, and general diagram. Add minor fix to ↵Nicolas Fort
ipv4 firewall doc, and update ipv6
2023-11-24Merge pull request #1128 from mkorobeinikov/masterRobert Göhler
Ansible example article
2023-11-10Ansible example articlemkorobeinikov
An example of how to set up Ansible and VyOS.
2023-11-08Firewall Update: improve documentation and split file for better experience ↵Nicolas Fort
while reading. Add brief notes regarding Flowtables and Bridge firewall, leaving a note that those documents are still under development. New explanation for Netfilter based firewall, which includes new diagrams.
2023-09-18Added new section about the different firewallsNephiaust
Updated labels for the pages Added new pictures. Signed-off-by: Nephiaust <29741794+Nephiaust@users.noreply.github.com>
2023-09-12Config blueprints: Add new example for policy-based ipsec site to site ↵Nicolas Fort
tunnel, plus firewall, using new firewall sintax
2023-04-11Merge pull request #986 from josenj/masterRobert Göhler
Swapped LAN/DMZ
2023-04-11Merge branch 'master' into sr-mpls-correctionRobert Göhler
2023-04-11Swapped LAN/DMZJose Negron
2023-03-28Segment-rounting : Add documentation about segment-routing mpls on VyOSfett0
2023-03-27NMP and VyOS example articlemkorobeinikov
An example of how to set up NMP and VyOS using the 'snmp'
2023-02-24QoS example articlemkorobeinikov
An example of how to set up QOS.
2023-01-30Merge pull request #936 from mkorobeinikov/masterRobert Göhler
OpenVPN with LDAP example
2023-01-29OpenVPN with LDAP examplemkorobeinikov
An example of how to set up authorization in the OpenVPN client using LDAP and Active Directory.