You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHubโs verified signature.
2.56.0 โ ๐งพ Invoices grow up, backups you can trust.๐พ Backup fixed: the backup auto-discovers every table, but
its photo detection only knew two filename columns โ so seed packet
photos were silently left out of every backup. Photo detection now
covers any *_path column, the same "no list to forget" philosophy as the
tables. If you downloaded a backup before this fix, your packet photos
weren't in it โ grab a fresh one. ๐๏ธ Season year: a year picker now
lives in the header and the whole app follows it โ costs drop to $0 for a
fresh year, plants and garden logs show that season's entries, and last
year's data is one click away instead of deleted. Seeds stay
year-independent, as they should. The endless Garden Logs histories are
also paged (25 at a time, newest first) instead of scrolling forever.
Then, four accounting-workflow upgrades
on the Costs page and around it. Search, filter, sort: the invoice list
now searches vendor, order number, and items together, filters by source
(manual / CSV / Gmail), and sorts by date, vendor, or total
(GET /api/invoices/ gains q, source, sort, order). Editing:
invoices finally have an edit button โ the form fills in, PATCHes on save,
and cancels cleanly, just like expenses always could. ๐ท Receipt scanning:
not every purchase comes through email, so the invoice form has a Scan
receipt button: photograph a paper receipt and the vision model reads the
vendor, date, order number, total, and items into a review card โ one tap
fills the form, nothing is saved until you confirm
(POST /api/invoices/scan, new app/receipt_scan.py; uses the same AI
settings as the garden agent, so there's nothing new to configure). ๐ฑ Plants link to seed packets: the plant form has a "Grown from seed
packet" dropdown, so a plant traces back to its packet and through it to
the invoice that bought it (Plant.seed_packet_id; the plant profile shows
the link). ๐ช Vendors, not sources: the redundant Seed Sources tab is
now a read-only vendor directory built from the stash โ every place your
seeds came from, with packet counts and a jump into the stash. The old
add/edit/delete source form is gone; the underlying data is untouched.