docs: migracja z Sphinx do MkDocs Material#225
Merged
Conversation
Konwersja całej dokumentacji RST na Markdown i przejście z Sphinxa na MkDocs Material. Build na Read the Docs pozostaje obsługiwany (.readthedocs.yaml przełączony na sekcję mkdocs:), nawigacja zachowana w pełni przez nav: w mkdocs.yml. - 23 plików .rst → 22 .md (pandoc 3.9 + custom post-processor dla GFM→Material admonitions i :ref:/:doc: cross-references) - usunięte: docs/conf.py, docs/Makefile, docs/make.bat - nowy: mkdocs.yml (Material theme, polish UI, autorefs, glightbox) - nowy: docs/requirements.txt (mkdocs-material >= 9.5) - docs/SECURITY.md skopiowane z root żeby SECURITY_PRACTICES.md miało target - .readthedocs.yaml: sphinx: → mkdocs: - .gitignore: docs/_build/ → site/ mkdocs build --strict zielony, 0 warnings. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pandoc skonwertował RST .. math:: bloki na GFM ``` ```math ``` co MkDocs Material nie renderuje natywnie (w przeciwieństwie do Sphinx + imgmath). - 12 bloków ``` ```math ``` w sloty.md → $$ ... $$ (display math) - mkdocs.yml: włączone pymdownx.arithmatex(generic=true) - docs/assets/mathjax-config.js: konfiguracja MathJax 3 z re-typeset hookiem na navigation.instant (Material instant-navigation swap-uje strony bez reload-a, MathJax sam by nie wpadł na re-typeset) - MathJax 3.x ładowany z jsdelivr CDN, bez polyfill.io (compromised w 2024) Zweryfikowane: 12/12 bloków arithmatex w renderowanym HTML pod /sloty/#próg-nr-1 do #próg-nr-3. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
GitHub Actions workflow uruchamiany na PR i push do dev/master gdy zmienia sie cokolwiek w docs/, mkdocs.yml, .readthedocs.yaml lub samym workflow. Robi: - mkdocs build --strict (wykrywa broken anchors, missing files, refs) - upload site/ jako artifact (retention 7 dni — szybki preview bez czekania na Read the Docs) To uzupelnienie Read the Docs build-checkow: - RTD nie uzywa --strict (broken anchors sa tylko warningiem) - GH Actions ~30s vs RTD ~1-2min - artifact pozwala obejrzec docs lokalnie bez deployu Workflow SHA-pinned (actions/checkout@de0fac2e, actions/setup-python@ a26af69b, actions/upload-artifact@330a01c4) zgodnie z wzorcem z tests.yml i polityka security-supply-chain. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Towncrier od dawna natywnie wspiera Markdown (patrz https://towncrier.readthedocs.io/en/stable/markdown.html). Po migracji docs na MkDocs Material, towncrier wciąż pisał do HISTORY.rst i wymagał ręcznej konwersji — gap, ktorego nie wyłapaliśmy w pierwszym commicie migracji. Zmiany: - HISTORY.rst → HISTORY.md (jednorazowa konwersja pandocem 3.9 + ręczne wstawienie markera "<!-- towncrier release notes start -->") - pyproject.toml [tool.towncrier]: - filename = "HISTORY.md" - start_string = "<!-- towncrier release notes start -->\n" - underlines = ["", "", ""] (Markdown nie ma underlines) - title_format = "## bpp {version} ({project_date})" - issue_format = "[#{issue}](https://github.com/iplweb/bpp/issues/{issue})" - 9 newsfragments rename .rst → .md (content bez zmian — `` ``literal`` `` jest legalnym CommonMark code-spanem i renderuje tak samo) - docs/history.md: 3862 linii baked content → 1-linijka `{% include-markdown "../HISTORY.md" %}`. HISTORY.md jest single source of truth; towncrier pisze do root, MkDocs pull-uje dynamicznie. - mkdocs.yml: dodany plugin `include-markdown` - docs/requirements.txt: + mkdocs-include-markdown-plugin>=7.1 - pyproject.toml: usuniety Sphinx>=7,<9 z dev-deps (juz nieuzywany po migracji docs na MkDocs) Weryfikacja: - mkdocs build --strict zielony - towncrier build --draft --version 9999.dev renderuje 9 fragmentow w prawidlowym Markdown formacie z naszym title_format Po tym commicie release flow jest spojny: 1. towncrier build (uses HISTORY.md as canonical) 2. mkdocs build (HISTORY.md → docs/history.md via include) 3. RTD/GH Actions buduja docs z up-to-date release notes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
owenlamont/uv-secure zostal zarchiwizowany 2026-04-18 (read-only repo, 0 issues, ostatnie release v0.17.2 z tego samego dnia). Archived security scanner to anti-pattern: brak update'ow bazy CVE = false sense of security. Obecny symptom na PR-ach: `Error: brotli raised exception:` (exit 3) - prawdopodobnie upstream rot, PyPI advisory feed zmienil sposob encoding-u, a uv-secure nie ma juz maintainera ktory to naprawi. Zamiennik: pip-audit (PyPA-official, autorzy pip-a). Aktywnie maintained, czyta z tego samego PyPI Advisory DB co uv-secure plus opcjonalnie OSV.dev. Polityka gate-a: failure na vuln z fix-em dostepnym (fix_versions non-empty). pip-audit nie ma natywnego severity-flagi (w przeciwienstwie do uv-secure), ale fix-availability jest dobrym proxy: skoro upstream wypuscil fix, warto bumpnac. Vuln bez fixa idzie do job summary jako warning. Whitelist (CVE-2026-42304 / GHSA-grgv-6hw6-v9g4): - DoS w twisted.names DNS module - BPP nie uruchamia twisted DNS-servera (twisted to transitive dep daphne+ autobahn dla WebSocket/Channels, modul twisted.names niewykorzystany) - Fix tylko w 26.4.0rc2 (RC, nie idziemy z RC do prod) - Re-evaluate przy stable twisted 26.x Multi-scanner backup (OSV/Grype/Trivy) bez zmian - report-only, defense-in-depth dla wykrycia rzeczy ktorych pip-audit moze nie miec (rozne CVE bazy). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mpasternak
added a commit
that referenced
this pull request
May 14, 2026
Follow-up po PR #225 (migracja docs Sphinx → MkDocs Material). W tamtym commicie chore(towncrier): pyproject.toml stracił `Sphinx>=7,<9` z dev-deps, ale uv.lock nie zostal zregenerowany - przez co `uv sync` nadal instalowal ~13 transitive paczek Sphinxa (~3MB w .venv). Usuniete: - sphinx - alabaster - babel - imagesize - roman-numerals + roman-numerals-py - snowballstemmer - sphinxcontrib-applehelp - sphinxcontrib-devhelp - sphinxcontrib-htmlhelp - sphinxcontrib-jsmath - sphinxcontrib-qthelp - sphinxcontrib-serializinghtml Trywialna mechaniczna zmiana, `uv lock` regenerowal lockfile. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.readthedocs.yamlprzełączone zsphinx:namkdocs:):ref:,:doc:) zmapowane na markdown linkisloty.md(zastępujesphinx.ext.imgmath)Co się zmieniło
.rst→ 22.md(pandoc 3.9 + custom post-processor)docs/conf.py,docs/Makefile,docs/make.batmkdocs.yml(Material theme, polski UI),docs/requirements.txt,docs/assets/mathjax-config.js.readthedocs.yaml:sphinx:→mkdocs:.gitignore:docs/_build/→site/Konfiguracja MkDocs
search(en stemmer),autorefs(cross-page refs),glightbox(screenshot lightbox)navigation.instant#pole-skupia-pracowników)Co już działa
mkdocs build --strictzielony, 0 warnings, build 0.44ssloty.mdrenderuje się jako<span class="arithmatex">\\[...\\]</span>+ MathJax!!! note,!!! warning) i cross-references działająhistory.md(3862 linii towncrier output) skonwertowaneTest plan
/sloty/#próg-nr-1do#próg-nr-3edycja_uczelnia→edycja_jednostka#pole-skupia-pracownikówdocs/images/docs/SECURITY.md(kopia z root)Decyzje (warto wiedzieć przed review)
HISTORY.rstw czasie konwersji. Towncrier nadal pisze doHISTORY.rst; po każdym release trzeba regenerowaćhistory.md(można dodać do release workflow).SECURITY.mdskopiowane dodocs/— alternatywą był pluginmkdocs-include-markdown. Wybrałem prostszą drogę (jeden plik więcej, brak dodatkowej zależności).🤖 Generated with Claude Code