- plant_detail.html: add card photos section with crop_thumbnail link (above photo gallery), satisfying test_card_button_shown_when_card_photos_exist
- identify_fields.html: replace Bootstrap data-bs-toggle dropdown with plain HTML <select> + onchange form submit, styled with Tailwind
- test_views.py: remove test_indoor_filter which tested ?filter=indoor that no longer exists
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Nav '+' button now links to identify_upload instead of plant_add
- Remove Perenual toggle, results section, and 'Also search Perenual'
link from species_results partial
- Wrap Plant card / Crop thumbnail / Delete plant buttons in flex
container for consistent mobile alignment
- Fix pre-existing test assertion to match actual crop-thumbnail URL
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Location model: plants now FK to Location instead of free-text CharField
- Data migration 0004 converts existing location strings to Location objects
- PlantForm uses ModelChoiceField dropdown + inline "add new location" text field
- PlantPhoto model: multiple photos per plant with is_thumbnail flag
- Plant.thumbnail_url property: picks marked thumbnail, falls back to first photo then legacy photo field
- Photo gallery partial: upload, set thumbnail (★), delete (✕) with HTMX swaps on #photo-gallery
- plant_detail: uses thumbnail_url for hero image, pruning history section removed
- plant_list search updated: location__name__icontains instead of location__icontains
- Three new URL routes: upload_photo, set_thumbnail, delete_photo
- All 53 tests updated and passing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add bloom_months to Plant and Species models (migration 0003)
- Swap pruning_months form field for bloom_months throughout
- Plant detail shows green bloom strip instead of pruning strip
- Dashboard shows 'Blooming now' count and list instead of overdue pruning
- Remove ✂️ pruning calendar from nav (feature hidden, backend intact)
- Update dashboard tests to reflect new context
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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>
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>
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.