<feed xmlns='http://www.w3.org/2005/Atom'>
<title>vyos-documentation.git/docs/_static/css, branch circinus</title>
<subtitle>VyOS readthedocs (mirror of https://github.com/vyos/vyos-documentation.git)
</subtitle>
<id>https://git.amelek.net/vyos/vyos-documentation.git/atom?h=circinus</id>
<link rel='self' href='https://git.amelek.net/vyos/vyos-documentation.git/atom?h=circinus'/>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/'/>
<updated>2026-09-25T15:11:19+00:00</updated>
<entry>
<title>ci: port the Cloudflare Workers docs pipeline to circinus (slug 1.5) (#2208)</title>
<updated>2026-09-25T15:11:19+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-09-25T15:11:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=a783e56b774795c1f4bd8a6088dfcce96a307c5f'/>
<id>urn:sha1:a783e56b774795c1f4bd8a6088dfcce96a307c5f</id>
<content type='text'>
* ci: port Cloudflare Workers docs pipeline files to circinus (verbatim)

Copies the branch-agnostic half of the docs.vyos.io Cloudflare Workers
pipeline from `rolling` at 8cb568bf, byte-identical:

  - .github/workflows/docs-build.yml
  - workers/ (entire tree)
  - scripts/docs_gates/
  - docker/im-convert.sh
  - docs/_static/js/version-picker.js, js/pagefind-wrapper.js,
    css/version-picker.css (new files, no circinus counterpart)
  - docs/_templates/breadcrumbs.html, searchbox.html (new files)

docs-build.yml already triggers on push to [rolling, circinus, sagitta]
and resolves `circinus` -&gt; worker vyos-docs-v15-en / slug 1.5 from
workers/matrix.json; the files simply did not exist on this branch, so
slug 1.5 still serves the bootstrap placeholder.

workers/versions.json + workers/matrix.json are deliberately identical
across all three branches and must be kept in sync.

Advances: IS-572

* ci: wire circinus docs build into the Cloudflare Workers pipeline

Hand-merges the CF-specific hunks onto circinus's own docker/Dockerfile
and docs/conf.py rather than clobbering them with rolling's versions —
circinus keeps its own content-driven history in both files.

docker/Dockerfile:
  - imagemagick + librsvg2-bin (sphinx.ext.imgconverter backend) and
    poppler-utils (pdfinfo, used by docs-build.yml's PDF page-count
    completeness check), installed --no-install-recommends
  - install docker/im-convert.sh as /usr/local/bin/im-convert

docs/conf.py:
  - enable sphinx.ext.imgconverter + image_converter = 'im-convert' so
    the LaTeX/PDF builder stops silently dropping .webp/.svg images
  - register js/version-picker.js + css/version-picker.css
    unconditionally (degrades silently on ReadTheDocs)
  - _vyos_cf_build gate off the raw DOCS_VERSION_SLUG env var; only CF
    builds load js/pagefind-wrapper.js, and html_context['vyos_cf_build']
    lets _templates/searchbox.html fall back to the stock Sphinx
    searchbox via the "!" bang-include on RTD

The RTD path stays the default in both files: circinus continues
building on ReadTheDocs until RTD sunset, and every CF feature activates
only when DOCS_VERSION_SLUG is present. .readthedocs.yml is untouched.

circinus keeps its own version/release/html_title/source_suffix and its
hardcoded html_baseurl (its CF slug is also `1.5`, so rolling's
DOCS_VERSION_SLUG/READTHEDOCS_VERSION resolution block is a no-op here
and was deliberately not ported).

Advances: IS-572

* ci: IS-572: re-sync ported Cloudflare Workers pipeline files with rolling

The category-1 files in this port are byte-identical copies from `rolling`.
`rolling` has since moved: [vyos-documentation#2209](https://github.com/vyos/vyos-documentation/pull/2209)
merged as `3a1c6c30`, thirteen rounds of hardening on exactly these files.

Re-take all 14 category-1 paths from `origin/rolling` via
`git checkout origin/rolling -- &lt;paths&gt;`, so byte-identity holds by
construction rather than by hand-editing:

  .github/workflows/docs-build.yml
  scripts/docs_gates/{gates,parity,smoke,test_gates,test_parity,test_smoke}.py
  workers/.gitignore
  workers/apex/src/{index,special,uagate}.ts
  workers/apex/test/{router,uagate}.test.ts
  workers/apex/ua-policy.json

Thirteen of the fourteen carry
[vyos-documentation#2209](https://github.com/vyos/vyos-documentation/pull/2209)
exactly — the pre-change tree was byte-identical to `3a1c6c30^` for those
paths. `workers/.gitignore` additionally picks up the one-line `test-results/`
entry from
[vyos-documentation#2212](https://github.com/vyos/vyos-documentation/pull/2212);
inert on circinus, since only the deliberately-unported `apex-deploy.yml`
writes that directory.

Deliberate exclusions are unchanged: `docs-canary-qa.yml` (cron runs on the
default branch only, so it is not ported even though
[vyos-documentation#2209](https://github.com/vyos/vyos-documentation/pull/2209)
touched it on `rolling`), `apex-deploy.yml`, and the `docs-preview-*`
workflows. `docs/conf.py` stays hand-merged and circinus-specific, with its
ReadTheDocs fallback intact.

🤖 Generated by [robots](https://vyos.io)</content>
</entry>
<entry>
<title>Fix Cookiebot consent dialog rendering unstyled and breaking the page (#2108) (#2109)</title>
<updated>2026-06-17T19:26:11+00:00</updated>
<author>
<name>mergify[bot]</name>
<email>37929162+mergify[bot]@users.noreply.github.com</email>
</author>
<published>2026-06-17T19:26:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=82ee5037e394cb11ce58c734141ee606dfba410e'/>
<id>urn:sha1:82ee5037e394cb11ce58c734141ee606dfba410e</id>
<content type='text'>
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 &lt;yuriy@vyos.io&gt;</content>
</entry>
<entry>
<title>fix(css): use .highlight &gt; .copyDiv.copyFailedNotifier for strict specificity</title>
<updated>2026-05-07T14:08:51+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-05-07T13:12:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=869dd9a194bce5b578708b5bd5fa4899e501e4df'/>
<id>urn:sha1:869dd9a194bce5b578708b5bd5fa4899e501e4df</id>
<content type='text'>
Specificity (0,2,1) &gt; (0,1,1) — no longer relies on rule order.

🤖 Generated by [robots](https://vyos.io)

(cherry picked from commit ae4a58675633f59dde7b95c34bddc1a60a744483)
</content>
</entry>
<entry>
<title>fix(css): increase copyFailedNotifier specificity to override copyDiv base style</title>
<updated>2026-05-07T12:55:49+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-05-07T12:55:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=2098afd5836ef76eac8af695c17eda3f2c6e27c5'/>
<id>urn:sha1:2098afd5836ef76eac8af695c17eda3f2c6e27c5</id>
<content type='text'>
🤖 Generated by [robots](https://vyos.io)
</content>
</entry>
<entry>
<title>fix(codecopier): exclude Copy label from clipboard and stop showing false success</title>
<updated>2026-05-07T12:51:10+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-05-05T22:59:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=efb53fe14af6b279bc2c35bf7b87555db50c106a'/>
<id>urn:sha1:efb53fe14af6b279bc2c35bf7b87555db50c106a</id>
<content type='text'>
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' &lt;p&gt;) into that container.
Below the 992px breakpoint the label is visible (see code-snippets.css
.copyDiv &gt; p) so users got 'Copy' appended to every copied snippet.

Fix: extract text from the &lt;pre&gt; 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)
</content>
</entry>
<entry>
<title>feat: import MyST swap mechanism, llms.txt feature, and content from current</title>
<updated>2026-05-06T14:47:58+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-05-06T14:47:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=b61087c396860bb507be1adea50244a8c8e3242c'/>
<id>urn:sha1:b61087c396860bb507be1adea50244a8c8e3242c</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>Update code-snippets.css</title>
<updated>2024-02-29T11:15:02+00:00</updated>
<author>
<name>Robert Göhler</name>
<email>github@ghlr.de</email>
</author>
<published>2024-02-29T11:15:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=d4ddfafdcf1bf640a01604abe8b4764d9e059388'/>
<id>urn:sha1:d4ddfafdcf1bf640a01604abe8b4764d9e059388</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fixed inner lists styles (#1296)</title>
<updated>2024-02-28T21:26:02+00:00</updated>
<author>
<name>bogdankol</name>
<email>68349689+bogdankol@users.noreply.github.com</email>
</author>
<published>2024-02-28T21:26:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=8feb2a57fb97189ba95a18b31020e0b7d44d7db4'/>
<id>urn:sha1:8feb2a57fb97189ba95a18b31020e0b7d44d7db4</id>
<content type='text'>
* 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</content>
</entry>
<entry>
<title>Styles refactoring (#1278)</title>
<updated>2024-02-19T13:53:51+00:00</updated>
<author>
<name>bogdankol</name>
<email>68349689+bogdankol@users.noreply.github.com</email>
</author>
<published>2024-02-19T13:53:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=54cb31c8e76515b3245bf90ffb3735ae31918b9e'/>
<id>urn:sha1:54cb31c8e76515b3245bf90ffb3735ae31918b9e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>add :defaultvalue: option</title>
<updated>2022-08-16T13:38:16+00:00</updated>
<author>
<name>rebortg</name>
<email>github@ghlr.de</email>
</author>
<published>2022-08-12T08:54:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=e9236755bb544c43c9949926ad4a3b85223612f5'/>
<id>urn:sha1:e9236755bb544c43c9949926ad4a3b85223612f5</id>
<content type='text'>
(cherry picked from commit b09f2222ed6181ba377a41de37a3997559a234c8)
(cherry picked from commit 1205c1e7806d4e84e03aafc94831248cbfa9b1c8)
</content>
</entry>
</feed>
