v1.2.2 — Filter pre-existing entries from catchups, clean date formatting
Bug Fixes
Catchups included commits from before the user joined the repo
When generating a catchup for a developer, the system was including checkpoint entries that existed before the developer ever made their first commit. For example, if Developer A joined the repo at 22:21 and the React frontend was committed at 20:38, their catchup would say they "missed" the frontend — but it was already there when they started.
Root cause: get_checkpoints_since() returned entire checkpoint files without filtering individual entries by date. Each checkpoint file is a living document with multiple ## Commit entries, and all of them were sent to the LLM regardless of when they were created.
Fix: get_checkpoints_since() now parses each entry's ## Commit \hash` — YYYY-MM-DD` header and only returns entries dated on or after the user's last active date. Pre-existing entries are excluded before the LLM ever sees them.
Ugly raw datetime in catchup titles
Catchup headings showed the raw datetime with timezone offset: Since 2026-03-13 20:38:27+05:30. Now formatted as Since March 13, 2026.
Changes
- storage.py — Added
_filter_entries_after()to parse checkpoint files by## Commitdate headers and filter entries.get_checkpoints_since()now applies this filter before returning content. - main.py —
process_catchup()formats the date withstrftime("%B %d, %Y")before passing to theCatchupGenerator.