Previously only a log in the exact scheduled month cleared overdue.
Now any log on or after the start of the scheduled month counts,
so pruning late (e.g. in May for a March schedule) correctly shows upcoming.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add month_strip template tag rendering JFMAMJJASOND circles,
active months dark green, inactive light grey
- Replace raw number list in pruning_strip with visual month strip
- Restyle pruning month checkboxes as clickable circles in plant form
- Fix dashboard 'Need pruning' counter (broken filter chain always showed 0)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Covers local dev, Docker deployment, env vars, data model, and
a summary of plant data sources investigated (Perenual, OpenFarm,
Trefle, Wikipedia, Google) including the commercial data opportunity.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Shows Bootstrap spinner via htmx-indicator during the Perenual API
call, and disables the button to prevent double-submits.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Django 5.2 rejects POSTs when the Origin header doesn't match
CSRF_TRUSTED_ORIGINS. Required for non-localhost deployments.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Timeout and rate-limit failures now show a warning message to the user.
Timeout increased to 10s.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
species_search.html has no form/csrf_token tag, so the cookie was
never set before the species select form was submitted.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds the dashboard view, template, URL routing, and tests. Also upgrades
Django from 5.1.15 to 5.2.1 to fix a Python 3.14 incompatibility in
template context copy that prevented view tests from running.