Releases: Ecohackerfarm/power2plant
Releases · Ecohackerfarm/power2plant
v0.17.0
What's new
Infrastructure security
- DB service no longer binds to host network interfaces (
0.0.0.0:5432) — reachable only via internal compose network. Prevents cross-stack access on shared VPS. - Prod deploy webhook now triggers on GitHub release published, not on every push to main.
Enrichment improvements
- Translation script (
enrich:translate-names) now accepts comma-separated locales:--locale de,es,fr - Wikidata lookup uses 3-stage fallback per crop:
botanicalName→canonicalName→ eachBotanicalSynonym— significantly improves hit rate for genus-level and synonym-mapped crops
Dev / ops
fill-runner/scriptsservice moved toscriptsprofile in dev compose — no longer auto-starts and crash-loops ondocker compose up- Release automation:
scripts/release.sh+ Claude skill for one-command releases
v0.16.0
What's new
Botanical synonym table & canonical names
- New
BotanicalSynonymtable replaces the emptysynonyms[]array onCrop - New
Crop.canonicalNamefield stores the author-stripped botanical name (e.g.Allium L.→Allium) for accurate Wikidata/Wikipedia SPARQL lookups - Fixes genus-level crops (e.g. Onion / Allium L.) not getting German translations due to author suffix mismatch
Enrichment versioning
CropEnrichmentAttemptnow tracksversion— bumpingSCRIPT_VERSIONin translate-names.ts automatically retargets stale attempts without--force
Search improvements
- Crop and relationship search now queries
canonicalNameandBotanicalSynonymtable
Post-deploy steps
pnpm enrich:populate-canonical-names
pnpm enrich:populate-botanical-synonyms
pnpm enrich:translate-names --locale de --source wikipediav0.15.2
v0.15.1
v0.15.0
What's Changed
Features
- Genus-wide inference — dual-write species + derived genus relationship (#223)
- Research tracking — track AI research attempts with no result (#221)
- Enrichment — Wikipedia sitelink fallback + botanical name guard in translate-names (#220)
- i18n — es, fr, pt, zh-Hans, ar, hi, ru, ja locale support (#206)
Fixes
- Remove duplicate prisma block in sonar-research.ts causing TS build failure (#225)
Chores
- Compress enrichment-attempts seed (114M → 37M gz) to stay under GitHub 100MB limit (#224)
v0.14.0
What's Changed
- feat(card): empty-state on bed-plant card with fund/request link by @brain-nrds in #191
- feat(research-requests): page + API — Phase 2 of #117 (#192) by @JustTB in #197
- feat(donation-trigger): scaffold Phase 3 — funded flag + admin view (#193) by @JustTB in #198
- fix(e2e): update smoke test — lookup renamed to "Find companion plant" by @JustTB in #199
- feat(infra): staging environment on prod machine by @JustTB in #200
- feat(schema): add SourceCheck model for per-source verification tracking by @JustTB in #201
- feat(schema): add reason and sourceDirection fields to RelationshipSource by @JustTB in #202
- feat(research): extract reason and direction from paper abstracts by @JustTB in #203
- feat(research): store reason and sourceDirection on RelationshipSource in import.ts by @JustTB in #204
- Release v0.14.0 by @JustTB in #196
New Contributors
- @brain-nrds made their first contribution in #191
Full Changelog: v0.13.0...v0.14.0
v0.13.0
What's Changed
- fix(docker): copy public/ to runner — fixes missing images in prod (v0.12.1) by @JustTB in #160
- feat: add extractGenusWord helper to crop-rank.ts by @JustTB in #161
- feat(api): plant route returns genus context and inherited companions by @JustTB in #162
- feat(api): companion detail falls back to genus relationship for species by @JustTB in #163
- feat(ui): plant search accepts initialQuery prop + plan page reads ?q= URL param by @JustTB in #164
- feat(ui): plant detail page genus callout, inherited labels, species section by @JustTB in #165
- feat(ui): relationship detail page genus-level banner and species scope note by @JustTB in #166
- fix: zone detection uses dynamic date range and accurate average label by @JustTB in #167
- fix: two-crop search in relationships page finds results by @JustTB in #168
- feat: plant search SQL-based ranking and more info link per result by @JustTB in #169
- feat(#130): Wikipedia enrichment on plant detail page by @JustTB in #170
- feat(#136): Feedback and AppConfig tables — Prisma migration by @JustTB in #171
- feat(#137): POST /api/feedback — honeypot, rate limit, IP hashing by @JustTB in #172
- feat(#138): admin feedback API — list, resolve, dismiss by @JustTB in #173
- feat(#126): use case A — separated companions/antagonists + contribute links by @JustTB in #174
- feat(#128): use case C — per-bed relationship valuation in My Garden by @JustTB in #175
- feat(#139,#140,#141): FeedbackButton — flag icon, DATA mode, OTHER mode by @JustTB in #176
- feat(#142,#143): data-feedback-target attributes on crop detail and relationships pages by @JustTB in #177
- feat(nav): show Admin link in header for admin users (#148) by @JustTB in #179
- feat(synonyms): add synonyms field to Crop, include in search (#135) by @JustTB in #181
- feat(admin): admin feedback viewer + settings page (#144, #145) by @JustTB in #178
- fix(data): correct corrupted botanical author abbreviations (#151) by @JustTB in #182
- feat(digest): feedback digest endpoint + cron service (#146, #147) by @JustTB in #180
- fix: research import confidence + ambiguous crop + source position badges by @JustTB in #183
- Release v0.13.0 by @JustTB in #190
Full Changelog: v0.12.0...v0.13.0
v0.12.0
What's Changed
Added
- Landing hub with global site header and navigation (#124, #125)
- i18n infrastructure with German (de) as first locale (#118)
- i18n phase 2:
CropTranslationtable, enrichment script, locale-aware crop search - i18n phase 3:
useTranslationswired into remaining components pnpm translate --fetch/--importtwo-step plant name translation scriptdev.shwithup/down/build/rebuildcommands
Fixed
- GBIF enrichment: retry logic added, delay reduced to 200ms
- E2E smoke tests updated for new landing hub and i18n routing
Full Changelog: v0.11.0...v0.12.0
v0.11.0
What's changed
Fixes
- "Accept this plan" no longer errors (empty beds filtered before POST)
- Observations list shows common names ("Bean") instead of botanical names, with italic scientific suffix
New
- Per-bed "Add to garden…" button with inline name input on recommendation results
Data
- Companion DB expanded: 556+ relationships, 92+ crops
- Permaculture staples added (Comfrey, Yarrow, Tansy, Calendula, Rosemary, Squash, Alfalfa, Watermelon, and more)
- Paper-backed academic sources added via Semantic Scholar extraction
v0.10.0
Features
- #68 Genus vs species visual differentiation in plant search dropdowns
- #74 User trust scoring — down-weight over-confident contributors
- #39 Expanded E2E smoke tests — recommendation flow + relationships 401
- #38 Share garden plan via public link (30-day expiry, clipboard copy)
Security & Bug Fixes
- #91 Share token entropy raised from 48 to 128 bits
- #92 Garden share invalidated when plantings are saved
- #93 Notes server-side limit raised 500→2000 to match client UI
- #94 Sources array server-side limit of 20 enforced
- #95
/api/recommendrejects NaN/Infinity and caps bedCount/bedCapacity at 100 - #97 Toast error shown when planting status update fails
- #98
/share/*rate-limited at 60 req/min per IP via host nginx
Performance
- #96 Trust score computation: N+1 DB queries → single batched query
Migrations
20260514000000_add_trust_score_to_user20260514000001_add_garden_share