summaryrefslogtreecommitdiff
path: root/docs/_static/css
AgeCommit message (Collapse)Author
5 daysdocs: Cloudflare Workers hosting pipeline (apex, content workers, CI, ↡Yuriy Andamasov
previews) (#2140) * docs-infra: scaffold Cloudflare workers workspace (versions.json v2, matrix, toolchain) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: record full Phase-0 plan decision in workers/PLAN.md πŸ€– Generated by [robots](https://vyos.io) * docs-infra: shared content worker β€” asset serving, cache classes, X-Docs-Build, canary no-store πŸ€– Generated by [robots](https://vyos.io) * docs-infra: run worker script before assets; test fetch entrypoint πŸ€– Generated by [robots](https://vyos.io) * docs-infra: apex manifest loader + dispatch map + runtime binding guard (TDD) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: apex redirects (aliases, PDF, trailing-slash) + special paths (TDD) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: PDF redirect honors pdf:null and preserves query πŸ€– Generated by [robots](https://vyos.io) * docs-infra: apex UA gate β€” allowlist-wins, log-only AI crawlers, empty block list at launch πŸ€– Generated by [robots](https://vyos.io) * docs-infra: apex router (pipeline Β§3.2), themed 404/503, /kb seam, env configs + congruence test πŸ€– Generated by [robots](https://vyos.io) * docs-infra: add missing-User-Agent regression test for apex UA gate πŸ€– Generated by [robots](https://vyos.io) * docs-infra: R2-streaming preview worker β€” MIME map, noindex, no-store (TDD) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: preview 404 no-store + fetch handler tests πŸ€– Generated by [robots](https://vyos.io) * docs-infra: bootstrap script β€” binding-target workers must exist before apex deploys πŸ€– Generated by [robots](https://vyos.io) * docs-infra: apex run_worker_first, lockfile for npm ci, PDF Location from manifest πŸ€– Generated by [robots](https://vyos.io) * docs-infra: derive html_baseurl from DOCS_VERSION_SLUG with RTD fallback (canonical gate prereq) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: version picker + status banner + language scaffold (vanilla JS, TDD pure core) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: picker preserves query+hash across switch; valid breadcrumb markup πŸ€– Generated by [robots](https://vyos.io) * docs-infra: Pagefind search wrapper with runtime base-path + preview prefix handling (TDD) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: pagefind wrapper β€” asset-failure notice + UI stylesheet load πŸ€– Generated by [robots](https://vyos.io) * docs-infra: gate Pagefind searchbox to CF builds (RTD keeps stock search until cutover) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: deploy sanity gates β€” limits, critical pages, count-delta, canonical (TDD) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: hermetic gate tests via fixture versions.json πŸ€– Generated by [robots](https://vyos.io) * docs-infra: docs-build workflow β€” candidate/smoke/promote two-stage deploy + registry + rollback Two-stage CF Workers pipeline: build in pinned container, assemble artifact, sanity gates, deploy candidate, scoped pre-traffic smoke via canary apex, promote (rollback-id capture, hostname purge, registry upload), post-promote probe + auto-rollback. DOCS_CF_LIVE repo variable gates every docs.vyos.io production interaction pre-cutover. scripts/docs_gates/smoke.py adds one authorized check beyond the spec: the version's index.html probe asserts the #vyos-search mount div is present in the response body, guarding CI silently forgetting DOCS_VERSION_SLUG (which would otherwise ship stock RTD search without the Pagefind gate noticing). πŸ€– Generated by [robots](https://vyos.io) * docs-infra: build docs image in-workflow with buildx cache (v4.1 β€” digest pin dropped) Plan v4.1 amendment: the ghcr.io digest-pinned image does not exist (workflow would hard-fail at the first docker step on every push). Replace the BUILD_IMAGE env placeholder with an in-workflow docker build from docker/Dockerfile via docker/setup-buildx-action@v3 + docker/build-push-action@v6 (context: docker/, load: true, tags: docs-build:local, GHA cache from/to). The checked-out commit is the pin; buildx GHA cache keeps repeat builds cheap. Sphinx-build step swaps to docs-build:local; inner script unchanged. πŸ€– Generated by [robots](https://vyos.io) * docs-infra: apex/preview deploy workflow β€” canary auto, production behind environment approval * docs-infra: apex-deploy concurrency guard (per-ref, cancel-in-progress) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: fork-safe PR preview pipeline β€” approval record, R2 prefixes, label consumption, cleanup * docs-infra: nightly preview sweep β€” pipefail + per-prefix failure isolation πŸ€– Generated by [robots](https://vyos.io) * docs-infra: nightly canary QA β€” per-entry sweep + URL-parity corpus vs RTD πŸ€– Generated by [robots](https://vyos.io) * docs-infra: parity sweep scoped to CF-built versions; transport-error resilience πŸ€– Generated by [robots](https://vyos.io) * docs-infra: one-off bootstrap workflow (binding targets β€” runs once on this push) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: remove one-off bootstrap workflow (bootstrap complete) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: one-off canary apex + preview deploy (route targets for Task 3.6 step 2c) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: remove one-off canary deploy workflow (targets live) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: address Phase-0 CodeRabbit findings (canonical gate, error caching, registry pointer, validation) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: strengthen manifest tests (full dispatch iteration, mutation-free validate) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: address GitHub CodeRabbit review (pointer-after-probe, fail-closed sweeps, block-precedence UA gate, preview hardening) πŸ€– Generated by [robots](https://vyos.io) * docs-infra: adversarial review fixes β€” error no-store, probe retry, PR-list membership, preview dotted-segment πŸ€– Generated by [robots](https://vyos.io) * docs-infra: serve oversized legacy PDF from R2 via apex (spec Β§5 fallback) The 1.3 PDF (29.2 MiB) exceeds the 25 MiB static-asset cap and is absent from the legacy content Worker's build, so /_/downloads/en/1.3/pdf/ (and the picker's PDF link) 301'd into a dead-end 404 post-cutover. Add the R2 object fallback spec Β§5 already documented but never implemented: a DOCS_PDFS R2 bucket binding on the apex Worker, a manifest pdf_r2_key field (1.3 only), and a router step ahead of version dispatch that streams the object with its own cache class (canary/error still force no-store). πŸ€– Generated by [robots](https://vyos.io) * docs-infra: PDF R2 fallback honors Range + If-None-Match, preserves ETag πŸ€– Generated by [robots](https://vyos.io)
2026-06-17Fix Cookiebot consent dialog rendering unstyled and breaking the page (#2108)Yuriy Andamasov
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)
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)
2026-05-07fix(css): increase copyFailedNotifier specificity to override copyDiv base styleYuriy Andamasov
.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)
2026-05-06fix(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-04-15perf: convert all images to WebP with PDF fallbackYuriy Andamasov
Add WebP versions of all 187 PNG/JPG images (38MB β†’ 17MB, 55% reduction). Update RST/MD references to use Sphinx wildcard syntax (.*) so HTML builds use WebP while PDF/LaTeX builds fall back to original PNG/JPG. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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-19Styles refactoring (#1278)bogdankol
2022-08-16add :defaultvalue: optionrebortg
(cherry picked from commit b09f2222ed6181ba377a41de37a3997559a234c8) (cherry picked from commit 1205c1e7806d4e84e03aafc94831248cbfa9b1c8)
2022-04-01add sphinx panels and create 6 panels on index.rstrebortg
2022-03-28coverage: fix cssrebortg
2022-03-24improve coverage layoutrebortg
2021-05-10Template: correct mobil version template designrebortg
2021-05-10Template: add version warning bannerrebortg
2020-11-27CSS: refresh desginrebortg
2020-02-18VyOS Extension: fix comandlist margin in pdf and apply custom css in htmlRobert GΓΆhler
2019-12-29Sphinx: prepare tex layoutRobert GΓΆhler
2019-12-22CSS: custom css for new directivesRobert GΓΆhler
2018-10-07Reformat TOC and overall document styleChristian Poessinger