Commit graph

33 commits

Author SHA1 Message Date
e699ddb62d feat: add LocationForm with cover_photo, location_detail view, update location_edit 2026-06-01 16:44:05 +02:00
2d7ca494bd feat: add Location.cover_photo ImageField + migration + test 2026-06-01 16:40:59 +02:00
f308d006e4 feat: update nav, remove Perenual UI, fix delete button alignment
- 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>
2026-05-30 20:55:32 +02:00
adea702a77 feat: implement step 3 field picker view and template
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 17:48:53 +02:00
b16df6caa4 feat: implement step 2 species confirm view and template
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 17:45:35 +02:00
c10c4ebc2f feat: implement identify views and upload template
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 17:41:10 +02:00
ae919a3fce feat: wire identify URL routes and stub views 2026-05-30 17:37:46 +02:00
a2da8e6457 fix: correct misleading test name in test_plantnet 2026-05-30 17:36:47 +02:00
b884852f05 feat: add Pl@ntNet identification service
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 17:34:48 +02:00
ba0ca6b169 feat: card scanning, OCR improvements, crop thumbnail, VPC enrichment
- Add scan-to-plant flow: upload card photos, OCR, VPC match on confirm form
- OpenCV CLAHE + adaptive threshold preprocessing; dual psm 6/11 OCR pass
- Regex fixes for OCR misreads: height (s→5), frost (=,„,i,l,G), density, bloom months (E→I)
- Scientific name extraction: passport section + cultivar quote strategy
- Last-wins merge so back card data overrides front card garbage
- Crop thumbnail tool with Cropper.js; cropped image shown in list and detail
- VPC image always supersedes user thumbnail on detail page
- VPC sunlight mapping: zon→full_sun, halfschaduw→part_sun, schaduw→full_shade
- Auto-set thumbnail on plant created from scan

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 21:54:59 +02:00
dff1c88748 feat: show plant card button on detail page when card photos exist
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 21:59:04 +02:00
9edad5a715 feat: add delete_card_photo view and URL 2026-05-28 21:54:37 +02:00
cb5dd3dc84 style: move PlantCardPhoto import to module level in test_views 2026-05-28 21:53:38 +02:00
5e91983783 feat: add upload_card_photo view and URL
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 21:52:06 +02:00
10a76238aa feat: add plant_card view and URL 2026-05-28 21:46:25 +02:00
3b8ebd6454 style: move PlantCardPhoto import to module level in test_models 2026-05-28 21:42:49 +02:00
4132406f15 feat: add PlantCardPhoto model
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 21:38:15 +02:00
b88ba03884 feat: location FK, multi-photo gallery, hide pruning history
- 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>
2026-05-28 18:27:45 +02:00
a60c99ed93 feat: replace pruning UI with bloom months
- 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>
2026-05-28 17:03:25 +02:00
eb28f7453b fix: clear overdue when pruned after the scheduled month
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>
2026-05-28 16:43:15 +02:00
40e3419160 fix: surface Perenual API errors instead of silently returning no results
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>
2026-05-28 10:37:30 +02:00
370a02e00e feat: pruning calendar grouped by urgency
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 10:06:55 +02:00
eb4dd82b88 feat: plant edit and delete with confirmation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 10:06:03 +02:00
3bc27a345f feat: add plant form with species pre-fill
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 10:05:18 +02:00
88976bb351 feat: species search with HTMX and Perenual caching on select
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 10:04:02 +02:00
ef84af433e feat: plant detail with photo hero and inline HTMX pruning log
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 10:03:01 +02:00
c7a9699acc feat: plant list with HTMX live search and indoor/outdoor filter
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 10:01:15 +02:00
18e128549d feat: dashboard with plant count and pruning summary
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.
2026-05-28 09:56:24 +02:00
a6c3c683d4 feat: add Perenual API service with error fallback 2026-05-28 09:49:32 +02:00
6b189842dc fix: use months_before loop for correct 12-month rolling window in pruning_status 2026-05-27 20:13:01 +02:00
7983aa57b6 feat: add pruning_status logic with 12-month rolling window 2026-05-27 20:06:07 +02:00
4495a07407 fix: use related_name='pruning_logs' and PositiveIntegerField for max_height_cm 2026-05-27 19:59:35 +02:00
2c61b03519 feat: add Species, Plant, PruningLog models
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 19:51:11 +02:00