Complete the M15 documentation and final review milestone: README.md (French, brief): - Project description, quick start, usage, deployment link, acknowledgments - Acknowledgments: pronotepy, icalendar, caldav, slixmpp, pydantic, openai, feedparser, beautifulsoup4, and inspiration from pronote-digest (Antoine Coulon) - Author: Antoine Van Elstraete README.LLM.md (English, AI agent guide): - Prerequisites, installation on LXC/VPS (Debian/CentOS) - Non-secret configuration preparation (all env vars listed) - Secret variables clearly identified as operator-only - Pre-deployment checks (check_secrets.py, pip check, dry-run) - systemd/timer/logrotate installation steps - Notes for AI agent (do not commit secrets, do not modify existing files) LICENSE: - Standard MIT License, copyright Antoine Van Elstraete (2026) CHANGELOG.md: - Initial changelog following Keep a Changelog format - Covers M1 through M14 with milestone summaries - Gitea Actions noted as planned/optional, not delivered .gitignore: - Added FEAT_* pattern for temporary work files TODO.md: - M15 items 1-4 checked (README, architecture docs, CHANGELOG+LICENSE, final review) - M15 item 5 (Gitea Actions) left unchecked (optional, not done) Co-authored-by: opencode/tech-writer <tech-writer@agents.invalid>
2.8 KiB
2.8 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.1.0] - 2026-09-08
Initial release covering milestones M1 through M14.
Added
- M1 (Scaffolding): Python project structure with
pyproject.toml, and tooling configuration forruff,mypy,bandit, andpre-commit. - M2 (Configuration & secrets): Pydantic Settings for configuration management,
SecretStrfor sensitive fields, and redaction utilities (redact_url,redact_secrets,redact_exception) withRedactingFormatterfor logging. - M3 (Data models): 16 Pydantic models and 6 enums across 10 modules, including frozen contracts and mutable work results.
- M4 (Pronote sources): iCal fetch and parse,
pronotepy.ParentClientintegration, automatic fallback logic forauto,ical, andpronotepymodes, and error redaction for sensitive data. - M5 (Blog RSS):
feedparser-based RSS client with GUID deduplication, HTTP cache support (ETag/If-Modified-Since), andBlogRSSStatepersistence. - M6 (Theoretical agenda): JSON provider with week parity (even/odd), school holidays calendar, and deterministic IDs for events.
- M7 (CalDAV sync): Differential synchronization by UID,
X-PRONOTE-SYNC-MANAGEDmarker for managed events, idempotent operations, preserved cancelled events, and dry-run support. - M8 (Agenda diff):
AgendaComparatorwith deterministic matching, and generation ofAgendaDiff/AgendaChangeobjects for tracking differences. - M9 (AI synthesis):
SynthesisProviderprotocol, OpenAI provider, optionallitellmprovider, andopenai-compatibleprovider with degraded mode (returnsNoneon failure). - M10 (XMPP channel):
XmppChannelusingslixmpp, formatted messages (synthesis, homeworks, changes, messages, blog), and error handling that returnsFalseon failure. - M11 (Pipeline orchestration):
PipelineRunneras composition root, 7 pipeline steps, degraded error handling, dry-run mode, and iCal reuse within a single run. - M12 (CLI entry point):
pronote-synccommand with--dry-runand--log-leveloptions, redacted error display, and safe traceback in DEBUG mode. - M13 (Tests & coverage): 636 tests with 95.67% coverage, test fixtures (
pronote-4e.ics,pronote-6e.ics), sharedconftest.py, and secret non-leak tests. - M14 (Deployment): systemd service and timer (daily at 18:00), logrotate configuration (daily, rotate 7, compress),
check_secrets.pypre-deployment scanner, and exploitation guide. - Other: MIT License. Gitea Actions CI/CD reference for LXC/VPS (Debian/CentOS) is planned and optional, not delivered in this release.