- logger.py: root-level handlers; normal mode shows only user-facing INFO
(sync, export, push, MBOX) plus WARNING/ERROR; --debug shows all DEBUG
with full context (module.func:line). Third-party loggers silenced to WARNING.
- main.py: add --debug CLI flag, call configure_logging() at startup,
auto-trigger sync on first run or when last sync is overdue by the interval
- database.py: add metadata table with record_sync_time() / get_last_sync_time()
so startup knows whether a sync is due; sync time recorded on success
- forwarder.py: INFO at push start and push complete with counts
- packager.py: INFO before MBOX conversion begins
- exporter.py: INFO when Proton Mail export starts
https://claude.ai/code/session_01KjaNo9RXevw6x1DjJD8mj6
- Lower console handler from INFO to DEBUG so all log calls are visible
- Enrich format to include function name and line number for full context:
TIMESTAMP [LEVEL ] module.func:line — message
https://claude.ai/code/session_01KjaNo9RXevw6x1DjJD8mj6
pyrage 1.3.0 removed the Recipient/Identity class pattern in favour of
pyrage.passphrase.encrypt(plaintext, passphrase) and
pyrage.passphrase.decrypt(ciphertext, passphrase) top-level functions.
Update _encrypt/_decrypt in config.py accordingly.
https://claude.ai/code/session_01KjaNo9RXevw6x1DjJD8mj6
Add _ensure_data_dirs() helper in main.py and call it from both _run_setup()
and _start_service() so all required data directories are guaranteed to exist
before any module attempts to use them.
https://claude.ai/code/session_01KjaNo9RXevw6x1DjJD8mj6