[{"author":"lrivallain","date":"2026-08-18T07:00:46+00:00","message":"Trim the README and remove the cookiecutter and history leftovers\n\nThe README documented how the application got here rather than what it is:\nthe rationale for dropping the access token, the \"not a regression\" note on\nthe 20 commit cap, and the issue numbers behind each feature. It also inlined\nthe twenty watched repositories, which config.py and the home page already\nown. It is now 90 lines describing the current state, with the history left\nto HISTORY.md.\n\nThe same pass removed what no longer carries its weight:\n\n* utils.py held a single function resolving a repository against the list in\n  config.py, so it moved next to that list.\n* GITHUB_WEB_BASE and GITHUB_API_BASE were undocumented env overrides nobody\n  set, tests included; they are plain constants again.\n* python-dotenv only serves `flask run`, so it is a dev dependency now. The\n  production install was verified to still import the app without it.\n* pyproject.toml ignored SLF001 for tests, a rule the select list never\n  enabled.\n* AUTHORS.md (\"Contributors: None yet\"), an unreferenced favicon.png and a\n  committed .impeccable tool cache pointing at another worktree are gone, and\n  .gitignore dropped the Django, Scrapy, SageMath and Jupyter blocks while\n  gaining the .ruff_cache it was missing.\n* CONTRIBUTING.md repeated a line verbatim, installed the wrong requirements\n  file and pinned a single Python version the CI matrix disagreed with.\n\nHISTORY.md dated releases 1.0.0 to 1.3.0 in 2021, but the repository has no\ncommit that year: they all shipped in November 2022, which is also why 0.1.0\nappeared to postdate them.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\nCopilot-Session: 8d82c73e-0c71-4c9c-8543-aeaff2ecc8bf","sha":"261030460c46332e373cc69cd9d9a28a345b49f7","url":"https://github.com/lrivallain/azure_docs_watcher/commit/261030460c46332e373cc69cd9d9a28a345b49f7"},{"author":"lrivallain","date":"2026-08-17T14:00:01+00:00","message":"Drop the GitHub credential requirement and modernize the app\n\nThe shared GITHUB_ACCESS_TOKEN had become a recurring chore: organizations can\ncap personal access token lifetimes to a few days, so the deployment depended on\na manual renewal.\n\nCommits are now read from the public Atom feeds published by the GitHub web\nfront-end, which need no credential and consume no REST API rate limit. The\ndefault branch is discovered from the branch-less feed title, which is required\nbecause repositories disagree on it (sql-docs uses `live`). The only remaining\nREST call is the directory listing, performed anonymously and cached.\n\nThe oAuth login was removed with it: it only existed to raise limits that no\nlonger apply, and it was the sole source of the SAML enforcement problem (#10).\nThe `since` control is now available to everyone.\n\nKnown limitation: GitHub serves commit feeds as a single, non paginated page of\n20 entries, so a section can never show more than 20 commits. The previous\nimplementation was capped at 20 too, so this is not a regression.\n\nAlso fixed along the way:\n* RSS entries were published oldest first, and the channel link pointed at the\n  feed instead of the HTML page.\n* The RSS author was an email field holding a display name; it is now dc:creator.\n* Commit messages were HTML escaped before being XML escaped, producing double\n  escaped entities in the feeds.\n* A NameError was raised instead of the intended error page on GitHub failures.\n* The Flask secret key was regenerated on every start, breaking sessions across\n  restarts and workers.\n* The page language was declared as French while the interface is English.\n\nModernization:\n* Bootstrap 5.3 native colour modes replace the abandoned bootstrap-dark-5 fork;\n  jQuery and js-cookie are gone and CDN assets are pinned with SRI.\n* Pages advertise their RSS feed through autodiscovery links.\n* PyGithub, flask_dance, authlib and Flask-Login dropped; dependencies pinned.\n* Added an offline test suite, ruff linting and formatting, and a CI workflow\n  that lints and tests before deploying. The previous workflow relied on the\n  retired v2 artifact actions and could no longer run.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\nCopilot-Session: 372234e2-8676-4a29-8c30-4e689a0a406a","sha":"e8828a047fd3c55321aad56b6afff1e5ab2734a7","url":"https://github.com/lrivallain/azure_docs_watcher/commit/e8828a047fd3c55321aad56b6afff1e5ab2734a7"}]
