# Changelog Notable changes to ParentCalendar. The version is the git tag (`vX.Y.Z`); publishing a release on Gitea builds the Docker image for it. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and versions follow [Semantic Versioning](https://semver.org/). ## [Unreleased] ## [0.0.6] - 2026-11-09 ### Changed - "Pack lunch" events are 8:00โ€“8:30 AM instead of all day, with alerts 12 hours before and when they start (instead of the calendar's usual alert). Database migration 003 moves existing ones, and the next "New and changed" download updates them on your device. - Deleting an event takes one tap on Delete, with no second confirm button. - A multi-day event is listed under each of its days in the Calendar list, not only its first. - The same all-day event read on consecutive days (No School on Wed, Thu and Fri) becomes one event from the first day to the last. ## [0.0.5] - 2026-11-06 ### Added - A published scan's page lists its events, and you can edit or delete them there like on the Calendar tab. Events with no child picked are on no calendar, so they're marked "Not on any calendar" there, with a note to pick a child. ### Changed - A new source starts with every child ticked, like a new calendar. Before, it started with none, and its events showed on no calendar. ## [0.0.4] - 2026-11-06 ### Added - A published scan's photo can still be viewed from its scan page, under "Scanned photo", until it's deleted after `IMAGE_RETENTION_DAYS`. - A log line for every scan with how long it took, the model and what it found. `SHOW_SCAN_STATS=1` adds a "Scan Stats" button next to a scan's status that shows the model, tokens used, pages, events and scan time. - Today stands out on the Lunch screen and in the Calendar list: a filled day number like the month view, a "Today" label and a tinted card. ## [0.0.3] - 2026-11-06 ### Added - The server prints its version, commit and commit date, then its settings, when it starts (the API key only as set or unset). - Ollama settings `EXTRACT_TOP_P`, `EXTRACT_TOP_K`, `EXTRACT_THINK_LEVEL` (low, medium or high, with `EXTRACT_THINK=1`), `EXTRACT_NUM_CTX` (default 16384) and `EXTRACT_KEEP_ALIVE` (default 10m). - A "Pack lunch" event's notes are the day's first menu line, for example "Orange Chicken". ## [0.0.2] - 2026-11-06 ### Added - Food emoji in each lunch day's header, picked from the day's menu (๐Ÿ”๐ŸŒฝ๐Ÿ for chicken, corn and pears). - Read 1 / Read 2 in review: when a double read disagrees on a menu day, both readings are kept so you can switch between them before saving. Needs database migration 002, which runs on start. - Menus can be fixed after publishing, from the scan page. Changes show on the Lunch tab right away. - `npm test` in `frontend/` checks the food emoji rules. ### Changed - Marking a menu day "No lunch this day" keeps its food, so unticking it brings the text back. - A failed scan that can't reach Ollama now says so, and how to point `OLLAMA_URL` at it from Docker. The example settings and Compose file explain `host.docker.internal`. ### Fixed - Week-row crops no longer include the top of the next week's text, which the model misread, for example as an extra "End of Q1" event. - Words in a stray alphabet are dropped from what the model reads. A Sept/Oct menu came back with "ะฒั‹ะดะฐ" after the last food of every day. ## [0.0.1] - 2026-11-05 First test release: the Phase 1 MVP. ### Added - Scanning: upload a photo, screenshot or PDF of a month calendar, flyer or lunch menu. A local vision model reads it through Ollama (Claude optional), row by row, with an optional double read that flags more mistakes. - Review: events grouped into Needs a look, Updated, New and Unchanged, each one highlighted on the photo. Edit, add or exclude events, bulk delete, uncheck, make all-day or change kind, and undo. - Matching against events already on the calendar, so a rescan shows what changed. - Calendar screen with list and month views, and an .ics download of new and changed events or everything. - Lunch screen to pick pack-lunch days per child from the scanned menu. Each pick becomes an event. - Settings for children, calendars, sources, time zone and theme. - Mobile-first PWA with light and dark themes, a bottom tab bar on phones and a side rail on wide screens. - Runs with plain Python or as a Docker image, with SQLite and a `backup` command. - Release workflow that pushes the image to the Gitea container registry: stable releases tag `X.Y.Z`, `X.Y`, `X` and `latest`; pre-releases tag `X.Y.Z` and `dev`. [Unreleased]: https://git.dou.bet/iamdoubz/parentcalendar/compare/v0.0.6...main [0.0.6]: https://git.dou.bet/iamdoubz/parentcalendar/compare/v0.0.5...v0.0.6 [0.0.5]: https://git.dou.bet/iamdoubz/parentcalendar/compare/v0.0.4...v0.0.5 [0.0.4]: https://git.dou.bet/iamdoubz/parentcalendar/compare/v0.0.3...v0.0.4 [0.0.3]: https://git.dou.bet/iamdoubz/parentcalendar/compare/v0.0.2...v0.0.3 [0.0.2]: https://git.dou.bet/iamdoubz/parentcalendar/compare/v0.0.1...v0.0.2 [0.0.1]: https://git.dou.bet/iamdoubz/parentcalendar/src/tag/v0.0.1