summaryrefslogtreecommitdiff
path: root/docs
AgeCommit message (Collapse)Author
13 daysbgp: T6573: add input/output queue limit CLI commands (#2123)1.5mergify[bot]
(cherry picked from commit 9ad380fb7a1b122a605c7562124085e3200e30f0) Co-authored-by: Christian Breunig <christian@breunig.cc>
13 daysDOCS: Backport 2117 (Revise Console server page) to Circinus (#2121)LiudmylaNad
* DOCS: Backport 2117 (Revise Console server page) to Circinus * Update console-server.md
14 days docs: Update TFTP server page to VyOS 1.5 standards (#2119) (#2122)T9032-circinusmergify[bot]
* docs: Update TFTP server page to VyOS 1.5 standards * Update tftp-server.md (cherry picked from commit 8be9ced92fdc2b12b16aae9e438884acfd387faf) Co-authored-by: LiudmylaNad <l.nadolina@vyos.io>
2026-06-23configexamples/inter-vrf-routing-vrf-lite: fix formatting (#2112)Nico Felbinger
* configexamples/inter-vrf-routing-vrf-lite: fix formatting * configexamples/inter-vrf-routing-vrf-lite: reformat text to limit line length
2026-06-23docs: Update Config sync page to VyOS 1.5 standards (#2113) (#2114)mergify[bot]
* docs: Update Config sync page to VyOS 1.5 standards * Minor corrections * Update config-sync.md * Apply suggestion from @github-actions[bot] * Apply suggestion from @github-actions[bot] --------- (cherry picked from commit 228149f1a1d824b968b565f82c3ee73eb7ba489c) Co-authored-by: LiudmylaNad <l.nadolina@vyos.io> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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-06-16syslog_update_T8983Cleiton Faria
2026-06-16traffic-engineering: backport from rolling (#2104)LiudmylaNad
2026-06-09Revert "docs: Update Traffic Engineering page to VyOS 1.5 standards (#2066) ↡Daniil Baturin
(…" (#2095) This reverts commit 6b88b233b56e7231fbdf0ed4644f741cf634b9ba.
2026-06-09docs: Update RPKI page to VyOS 1.5 standards (#2061) (#2093)mergify[bot]
* docs: Update RPKI page to VyOS 1.5 standards * Update rpki.md * Update rpki.md (cherry picked from commit 5d631ab0628d6b3266b14a7d25ad9e7b66035636) Co-authored-by: LiudmylaNad <l.nadolina@vyos.io>
2026-06-09docs: Update Traffic Engineering page to VyOS 1.5 standards (#2066) (#2092)mergify[bot]
* docs: Update Traffic Engineering page to VyOS 1.5 standards * Update traffic-engineering.md * Update traffic-engineering.md (cherry picked from commit 361ea4841449956af979eb24a0b4e2f869d6ebf2) # Conflicts: # docs/configuration/protocols/traffic-engineering.md Co-authored-by: LiudmylaNad <l.nadolina@vyos.io>
2026-06-08docs: Update Segment Routing page to VyOS 1.5 standards (#2067) (#2091)mergify[bot]
* docs: Update Segment Routing page to VyOS 1.5 standards * docs: Minor corrections * docs: Minor formatting corrections * Update segment-routing.md (cherry picked from commit f01638d2e6ac85b0096a0895635c325569a7771a) Co-authored-by: LiudmylaNad <l.nadolina@vyos.io>
2026-06-08docs: Update RIP page to VyOS 1.5 standards (#2068) (#2090)mergify[bot]
* docs: Update RIP page to VyOS 1.5 standards * Update rip.md (cherry picked from commit b8a4d737a86015606a1faf0ab49b631db02448b2) Co-authored-by: LiudmylaNad <l.nadolina@vyos.io>
2026-06-08docs: Update MPLS page to VyOS 1.5 standards (#2082) (#2089)mergify[bot]
* docs: Update MPLS page to VyOS 1.5 standards * Update mpls.md (cherry picked from commit b02ee21632e7097bc1408388bdfd99f84f8e7771) Co-authored-by: LiudmylaNad <l.nadolina@vyos.io>
2026-06-08T8600: Add option to change logging verbosity in Kea (#2076)mergify[bot]
(cherry picked from commit 875b0825b24c03b9a5ba904f8f2d2de946564b74) Co-authored-by: Nataliia Solomko <natalirs1985@gmail.com>
2026-06-05Merge pull request #2073 from vyos/mergify/bp/circinus/pr-2053Viacheslav Hletenko
high-availability: T7059: Add persistence-timeout option in virtual-server (backport #2053)
2026-06-05Merge pull request #2075 from vyos/mergify/bp/circinus/pr-1891Viacheslav Hletenko
bgp: T8607: Add CLI support for BGP update-delay and establish-wait (backport #1891)
2026-06-05conntrack: T8308: Enhancements to the `show conntrack table` op-mode commandOleksandr Kuchmystyi
- Display per-flow packet and byte counters (original and reply direction). - Add VRF filter option `show conntrack table <ipv4|ipv6> vrf <vrf-name>`. (cherry picked from commit 447b0bd6e804896506d3eb65f01856f82c8b9af7)
2026-06-02bgp: T8607: Add CLI support for BGP update-delay and establish-wait (#1891)Nataliia S.
* bgp: T8607: Add CLI support for BGP update-delay and establish-wait * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * T8607: Apply Copilot's suggestions --------- Co-authored-by: Christian Breunig <christian@breunig.cc> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> (cherry picked from commit 65a5a35942c099f337ef4224251bbbaf8e076dbb)
2026-06-02high-availability: T7059: Add persistence-timeout option in virtual-serverNataliia Solomko
(cherry picked from commit dc04c30291806195311e585450b490d0c672c356)
2026-05-14docs(cli, aws): hard-wrap pre-existing long prose lines to <=80 charsYuriy Andamasov
doc-lint regression on [vyos-documentation#2024](https://github.com/vyos/vyos-documentation/pull/2024): the CI workflow's `scripts/doc-linter.py` scans every line of every changed file (not just changed lines), so the typo fix on `cli.md:464` and the capitalization fix on `aws.md:118` surfaced 57 pre-existing >80-char violations that have lived on rolling since the MyST migration. `cli.md` β€” 53 prose paragraphs hard-wrapped at word boundaries to 80 chars, preserving content fidelity. List items use hanging-indent continuations under their `- ` marker. No content reworded; only soft-wrap β†’ hard-wrap. `aws.md` β€” wrapped the inline AWS GWLB blog link (L164) and the References section (L185-187) with `% stop_vyoslinter` / `% start_vyoslinter` markers. These are URL-bearing lines that cannot be shortened (URL itself >80 chars). Verified locally: `python3 scripts/doc-linter.py "['docs/cli.md','docs/installation/cloud/aws.md','docs/automation/terraform/terraformvyos.md']"` β†’ exit 0, no violations. πŸ€– Generated by [robots](https://vyos.io)
2026-05-14docs(terraform): wrap long install URL in vyoslinter suppressionYuriy Andamasov
The full HashiCorp install-CLI URL is 79 chars, so any reference definition `[X]: <URL>` form exceeds the 80-char docs-lint limit regardless of label length. Existing `% stop_vyoslinter` / `% start_vyoslinter` markers in this file were back-to-back with no content between them (flagged by Copilot on [vyos-documentation#2021](https://github.com/vyos/vyos-documentation/pull/2021)) β€” put them to work by wrapping the long `[install Terraform]:` reference. The shorter `[Terraform introduction]:` reference (73 chars) sits outside the suppression range. Both Copilot and CodeRabbit flagged the docs-lint regression on [vyos-documentation#2024](https://github.com/vyos/vyos-documentation/pull/2024) β€” verified locally with `python3 scripts/doc-linter.py docs/automation/terraform/terraformvyos.md`: no warnings. πŸ€– Generated by [robots](https://vyos.io)
2026-05-14docs(terraform): replace non-descriptive [link]/[install] reference labelsYuriy Andamasov
Surfaced by CodeRabbit on the circinus RSTβ†’MD conversion PR [vyos-documentation#2021](https://github.com/vyos/vyos-documentation/pull/2021) (`terraformvyos.md:14`). Both labels violate MD059 (descriptive link text) β€” generic words like "link" don't convey the destination to screen-reader users or search indexers. Pre-existing on rolling; out of scope for the conversion port, fixed here at the source. Mergify will backport to circinus and sagitta. Sibling `automation/terraform/index.md` already uses the descriptive form ([Terraform], [Ansible]). πŸ€– Generated by [robots](https://vyos.io)
2026-05-14docs: fix CLI typo, orphan colon fences, CloudWatch capitalizationYuriy Andamasov
Three pre-existing rolling docs bugs, surfaced by Copilot review on the sagitta RSTβ†’MD conversion PR #2022 against the byte-for-byte ports of `cli.md` and `aws.md`: - `cli.md` line 464: `set interface ethernet …` is wrong; the CLI command is `set interfaces ethernet …` (plural). Users copying the example verbatim would hit "Configuration path is not valid". - `cli.md` lines 527-528: orphan `:::` / `::::` fence closers after the `{cfgcmd} save` block. The `(save)=` directive opens at line 503 and closes at line 506; the two `` ``` none `` blocks at 508-526 are self-contained; nothing opens these colon fences. MyST/Sphinx tolerates them silently today but they're literal noise. Drop both. - `aws.md` line 118: "Cloudwatch" β†’ "CloudWatch", matching the surrounding correctly-cased uses on lines 115/121/122 and AWS's product naming. Mergify will backport to circinus and sagitta via the standard `@Mergifyio backport circinus sagitta` post-merge. πŸ€– Generated by [robots](https://vyos.io)
2026-05-14Merge pull request #2021 from vyos/yuriy/finish-conversion-circinusYuriy Andamasov
docs(circinus): finish RST→MD conversion — drop changelog, port terraformvyos
2026-05-13fix(includes): wrap admonition in `{only} not latex` to preserve PDF suppressionYuriy Andamasov
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) (cherry picked from commit 86de2de975cf4958c84d73cdd669be525e4680ea)
2026-05-13fix(includes): rewrite need_improvement.txt as MyST so plain `{include}` ↡Yuriy Andamasov
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) (cherry picked from commit 82a06e1dc812ceba239aaabf4acd651a038bfee7)
2026-05-14docs: finish RST→MD conversion on circinusYuriy Andamasov
Remove docs/changelog/*.rst (per-version release notes no longer maintained in-tree on rolling β€” the changelog dir was already dropped there). The standalone docs/_ext/releasenotes.py generator script's filename refs are output paths for manual regeneration, not Sphinx build inputs, so they remain unchanged in parallel with rolling. Port docs/automation/terraform/terraformvyos.md from rolling and remove the lingering terraformvyos.rst. This was the only remaining live RST file outside the archive on circinus. πŸ€– Generated by [robots](https://vyos.io)
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) (cherry picked from commit 9c815d689a2a4a5d433ba15154cb606bd986fc8d)
2026-05-12T8843: Fix conflict markers committed by Mergify backport of #1994Yuriy Andamasov
The auto-backport PR #1999 committed literal git conflict markers into docs/conf.py because _copy_md_sources sits before _write_llms_txt on circinus but after it on rolling β€” cherry-pick failed to locate the patch context and dropped the entire new function as a duplicate with markers. Removes the conflict-marker block and applies the actual 3-line guard to the existing _copy_md_sources function. Build was failing with "SyntaxError: invalid syntax (conf.py, line 309)". πŸ€– Generated by [robots](https://vyos.io)
2026-05-12Fix recursive _build directory nesting errorQuill Cronwall
(cherry picked from commit ec6f33f3c256e839b443bb2baac14bff32132811) # Conflicts: # docs/conf.py
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. The mechanism's surface area is dead weight and the rst-*.rst shadows scattered across the source tree cause Context7's parser to misclassify the project as RST. Sibling PR on rolling: yuriy/remove-rst-swap-mechanism 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. - Strip swap_sources.py invocation from docs/Makefile. - 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 AGENTS.md: drop the "RST override mechanism" section and the test-runner snippet for the deleted test. Verified: sphinx-build -b html with --keep-going produces identical warning set (68 unique), identical sitemap entry count (267), identical llms.txt entry count (22), zero rst-* URLs in any artifact. πŸ€– Generated by [robots](https://vyos.io)
2026-05-10troubleshooting: T8608: document TCP pinganderbak
(cherry picked from commit 7ae07ade76ec4bb1137553a055419e3955f30618)
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): use window.dataLayer in gtag() for strict-mode safetyYuriy Andamasov
πŸ€– Generated by [robots](https://vyos.io)
2026-05-07feat(cookiebot): drop GTM noscript fallback for prior-consent complianceYuriy Andamasov
The `<noscript>` GTM iframe loads via a direct HTTP request to googletagmanager.com/ns.html and bypasses both Cookiebot's auto-blocker and Google Consent Mode v2 entirely β€” Consent Mode is JS-only (`gtag('consent', 'default')` and the update API), so a noscript request can't carry consent state. Under strict prior-consent (GDPR), JS-disabled visitors get no analytics rather than unconsented analytics. Addresses CodeRabbit review feedback on PR #1872. \xf0\x9f\xa4\x96 Generated by [robots](https://vyos.io)
2026-05-07docs(cookiebot): document the Cookiebot \xe2\x86\x92 Consent Mode v2 update pathYuriy Andamasov
Make the external dependency explicit in the template comment: Cookiebot's `uc.js` with `data-blockingmode="auto"` automatically pushes `gtag('consent','update', …)` into the dataLayer when the visitor accepts/declines categories. No in-repo update logic is needed; category mapping happens in the Cookiebot admin UI. Addresses Copilot review feedback on PR #1872. \xf0\x9f\xa4\x96 Generated by [robots](https://vyos.io)
2026-05-07fix(template): remove stray </script> tag and add title to GTM noscript iframecopilot-swe-agent[bot]
Agent-Logs-Url: https://github.com/vyos/vyos-documentation/sessions/ebb95457-26ce-4636-b018-fe7b8e31778c 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) (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-07Merge pull request #1879 from vyos/fix/docs-html-title-circinusYuriy Andamasov
docs(conf): set branch-localized html_title on circinus
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)