Releases: nolte/kamerplanter
Releases · nolte/kamerplanter
Release list
v0.0.18
Changes
- feat(ipm): expand pest image-recognition sources and detection taxonomy (REQ-044) (#267) @nolte
- fix(ipm): repair pest treatment edges and correct pest biology (#263) @nolte
- feat(ipm): pest & treatment detail pages with user-contributed images (REQ-010) (#258) @nolte
- feat(ipm): add check-pest-data skill and sharpen pest common names (#260) @nolte
- docs(readme): add container overview table (#259) @nolte
- feat(pests): add image-based pest detection (REQ-044) (#256) @nolte
- feat(ui): add per-user module visibility (REQ-042) (#254) @nolte
- fix(helm): add backend fsGroup + raise image-processing memory limits (#255) @nolte
- feat(recognition): single POSTGRES_PASSWORD secret key for the DINOv2 DB (#253) @nolte
🧰 Maintenance
- chore(deps): update docker databases (#265) @renovate[bot]
- chore(deps): update frontend minor/patch (#266) @renovate[bot]
- chore(deps): update frontend mui (#268) @renovate[bot]
- chore(deps): update docker selenium (#269) @renovate[bot]
- chore(deps): update docker selenium (major) (#270) @renovate[bot]
- chore(deps): update frontend minor/patch (#261) @renovate[bot]
- chore(deps): update frontend eslint (#262) @renovate[bot]
- chore(deps): update python minor/patch to v2.2.2 (#257) @renovate[bot]
- chore(deps): update python minor/patch to v7.14.2 (#251) @renovate[bot]
Project context
Audiences served
- Home grower / houseplant owner → §For growers & garden admins
- Community-garden administrator → §For growers & garden admins
- Self-hoster (operator) → §Runtime requirements, §Migration notes for operators
- Maintainer → the Changes section above (spec-grounded REQ work)
For growers & garden admins
- Image-based pest detection: photograph a pest and get an AI assessment — directly on a plant ("Auf Schädlinge prüfen") and now via a standalone "Schädling erkennen" entry that needs no plant first (#256, #267)
- Pest & treatment detail pages with your own contributed photos (upload/camera), bilingual DE/EN (#258)
- Pest overview: filter by type / difficulty / recognition (shareable via URL), a "recognition available" badge, and a collapsible reference-image gallery (#267)
- Per-user module visibility — show or hide feature modules to match how you use the app (#254)
Runtime requirements
- Raised image-processing memory limits for the recognition/inference path (#255)
- Dependency bumps: frontend (#261, #262), Python minor/patch (#257, #251)
Migration notes for operators
- DINOv2 vector DB now uses a single
POSTGRES_PASSWORDsecret key — update your secret accordingly (#253) - A backend
fsGroupwas added for the attachments PVC so the backend (uid 1000) can write to the attachments volume (#255) - New optional reference-image acquisition settings:
pest_reference_sources(gbif / inaturalist / idigbio) andpest_reference_allow_noncommercial— defaulttrue(accepts CC-BY-NC reference images); set it tofalsebefore any commercial use, as CC-BY-NC images are then not redistributable (#267) - New tenant-scoped endpoint
POST /pests/detectfor plant-agnostic pest detection; the existing plant-bound detection flow is unchanged (#267)
Packages
Container Images
ghcr.io/nolte/kamerplanter-backend:0.0.18ghcr.io/nolte/kamerplanter-frontend:0.0.18ghcr.io/nolte/kamerplanter-vectordb:0.0.18ghcr.io/nolte/kamerplanter-knowledge:0.0.18ghcr.io/nolte/kamerplanter-embedding-service:0.0.18ghcr.io/nolte/kamerplanter-inference-service:0.0.18
Helm Chart
oci://ghcr.io/nolte/charts/kamerplanter:0.0.18
helm pull oci://ghcr.io/nolte/charts/kamerplanter --version 0.0.18Docker Compose
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.18/docker-compose-0.0.18.yml
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.18/.env.example-0.0.18
cp .env.example-0.0.18 .env # edit passwords!
docker compose -f docker-compose-0.0.18.yml up -dv0.0.17
Changes
🧰 Maintenance
Project context
Detected project type: Python application (operator-confirmed; polyglot monorepo, no single manifest signal). Section bundle per release-skill-layer.
Audiences served
- Self-hoster (operator) → §Runtime requirements, §Migration notes for operators
- Maintainer (
nolte) → REQ-029-A recognition stack (#252) - Home grower / Community-garden administrator → no end-user-facing change this release; the DINOv2 recognition stack is operator-enablement only and ships disabled by default.
Runtime requirements
- New container image published from this release onward:
ghcr.io/nolte/kamerplanter-inference-service(DINOv2 ONNX self-hosted plant-recognition service), built by a new CI job —.github/workflows/docker-publish.yml(#252). Earlier tags do not carry this image. - No
requires-pythonchange and no base-image change to existing services. - When the recognition stack is enabled, it adds a dedicated
kamerplanter-vectordb(PostgreSQL 18 + pgvector) StatefulSet with a 5Gi PVC alongside the inference service (#252).
Migration notes for operators
- No action required for existing deployments. The DINOv2 recognition stack is now deployable in the single-release production chart but ships disabled by default (
controllers.vectordb.enabled/controllers.inference-service.enabledarefalse) —helm/kamerplanter/values.yaml(#252). - To enable (in the ArgoCD
valuesObject): turn oncontrollers.{vectordb,inference-service}.enabled, the matchingservice.*,persistence.inference-service-tmp.enabled, andnetworkpolicies.*, plus backend envINFERENCE_SERVICE_ENABLED: "true"andINFERENCE_SERVICE_URL: "http://kamerplanter-inference-service:8000"(#252). - New secret keys when enabling:
kamerplanter-secretsmust carryPOSTGRES_PASSWORD(consumed by the vectordb) andVECTORDB_PASSWORD(consumed by the inference service), same value (#252). - Activation order: deploy the stack and populate the reference index (
acquire_all_reference_images_taskvia the admin recognition endpoint) before settingINFERENCE_SERVICE_ENABLED=true, otherwise recognition returns no results — seedocs/{de,en}/deployment/inference-service.md(#252). - Default
helm templateoutput is unchanged except two additive egress rules (backend + celery-worker → inference-service:8000).
Packages
Container Images
ghcr.io/nolte/kamerplanter-backend:0.0.17ghcr.io/nolte/kamerplanter-frontend:0.0.17ghcr.io/nolte/kamerplanter-vectordb:0.0.17ghcr.io/nolte/kamerplanter-knowledge:0.0.17ghcr.io/nolte/kamerplanter-embedding-service:0.0.17ghcr.io/nolte/kamerplanter-inference-service:0.0.17
Helm Chart
oci://ghcr.io/nolte/charts/kamerplanter:0.0.17
helm pull oci://ghcr.io/nolte/charts/kamerplanter --version 0.0.17Docker Compose
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.17/docker-compose-0.0.17.yml
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.17/.env.example-0.0.17
cp .env.example-0.0.17 .env # edit passwords!
docker compose -f docker-compose-0.0.17.yml up -dv0.0.16
Changes
- feat(planning): project/ roadmap-suite scaffolding (goals, roadmap, sprint 0001) (#250) @nolte
- feat(spec): pest-detection implementation-readiness package (REQ-044) (#249) @nolte
- feat(plant-gallery): per-plant photo gallery with upload, cover and DINOv2 hook (REQ-034) (#246) @nolte
- feat(spec): clarify REQ-044/043 open points (pest-detection impl prep) (#248) @nolte
- feat(spec): add REQ-043 health assessment and REQ-044 pest detection specs (#247) @nolte
- feat(spec): add REQ-042 modular feature visibility (FR-001) (#245) @nolte
- feat(storage): admin storage-backend settings, Helm and docs (NFR-013) (#244) @nolte
- feat(storage): DSGVO erasure integration and storage migration (NFR-013) (#240) @nolte
- fix(notifications): use UTC date for the due-task notification window (#239) @nolte
- docs(specs): add awesome-agriculture integration requirements (REQ-037–041) (#238) @nolte
- feat(storage): object-storage adapter foundation for binary attachments (NFR-013) (#237) @nolte
- feat(spec): add REQ-034 plant photo gallery spec on NFR-013 storage (#236) @nolte
- feat(reference-images): deselect bad reference images from recognition (#235) @nolte
- feat(ha): make Home Assistant publishing selectable per entity (#232) @nolte
- docs: expand quick-start profiles and fix GitHub Pages language links (#227) @nolte
- feat(tasks): clean up task queue on plant removal and clarify bulk selection (#226) @nolte
- docs(notifications): add Web Push (VAPID) setup guide (#224) @nolte
🚀 Features
🧰 Maintenance
- chore(deps): update frontend minor/patch to v7.80.0 (#241) @renovate[bot]
- chore(deps): update python fastapi-stack to v0.138.0 (#242) @renovate[bot]
- chore(deps): update python minor/patch (#233) @renovate[bot]
- chore(deps): update python minor/patch to v0.15.18 (#231) @renovate[bot]
- chore(deps): update github-actions major to v7 (#230) @renovate[bot]
- chore(deps): update helm charts to v0.10.0 (#229) @renovate[bot]
- chore(deps): update frontend mui to v9.6.0 (#228) @renovate[bot]
- chore(deps): update python fastapi-stack to v0.137.2 (#225) @renovate[bot]
- chore(deps): update helm charts to v1.62.0 (#223) @renovate[bot]
Project context
Detected project type: Python application (operator-confirmed; no single pyproject.toml/package.json signal matched cleanly in this polyglot monorepo). Section bundle per release-skill-layer.
Audiences served
- Self-hoster (operator) → §Runtime requirements, §Migration notes for operators
- Home grower / houseplant owner → release-drafter §🚀 Features and §Changes (#246, #234, #226)
- Community-garden administrator → release-drafter §Changes (#232, #245)
- Maintainer (
nolte) → spec-grounded changes in §Changes (REQ-034, REQ-042, REQ-043/044, REQ-037–041, project/ roadmap suite)
Runtime requirements
- New backend runtime dependencies for object storage (NFR-013):
boto3>=1.35,pillow>=11.0;moto[s3]>=5.0added as a test dependency —src/backend/pyproject.toml(#237). - No
requires-pythonchange (remains>=3.14) and no container base image (FROM) change this release. - Dependency maintenance: FastAPI stack v0.138.0 (#242), frontend MUI v9.6.0 (#228), Helm charts v0.10.0 (#229) and v1.62.0 (#223), GitHub Actions major v7 (#230), plus Python/frontend minor-patch bumps (#225, #231, #233, #241).
Migration notes for operators
- NFR-013 object-storage backend introduced. Defaults target the existing
local-fsbackend, so running deployments need no action; switching to S3 is opt-in. - New
STORAGE_*environment variables on the backend and celery-worker controllers:STORAGE_BACKEND(local-fs|s3, defaultlocal-fs),STORAGE_LOCAL_FS_ROOT(/data/attachments),STORAGE_MAX_FILE_SIZE_MB(25),STORAGE_PRESIGN_TTL_SECONDS(900),STORAGE_VIRUS_SCAN_ENABLED(false) —helm/kamerplanter/values.yaml(#244). - New Helm
storage:block is the operator-facing source of truth. S3 credentials are resolved via the External Secrets Operator (s3.credentialsRef→ Secretstorage-s3-credentials) and are never inlined invalues.yamlor Git (#244). - New
backend-uploadsPVC mounted atstorage.localFs.rootfor the defaultlocal-fsbackend (#244). - Storage backend is now configurable at runtime through a platform-admin-only settings API/UI, gated by
require_platform_admin(light-mode-aware) (#244,f473cc19). - DSGVO erasure integration and a storage migration path for binary attachments (#240).
Open questions
- The Home Assistant integrator (documented secondary audience) is affected by the now-selectable per-entity HA publishing (#232), but the Python-application bundle has no dedicated API contract section to surface HA-facing contract changes. Consider adding an HA-API track to the audience artefact / bundle.
Packages
Container Images
ghcr.io/nolte/kamerplanter-backend:0.0.16ghcr.io/nolte/kamerplanter-frontend:0.0.16ghcr.io/nolte/kamerplanter-vectordb:0.0.16ghcr.io/nolte/kamerplanter-knowledge:0.0.16ghcr.io/nolte/kamerplanter-embedding-service:0.0.16
Helm Chart
oci://ghcr.io/nolte/charts/kamerplanter:0.0.16
helm pull oci://ghcr.io/nolte/charts/kamerplanter --version 0.0.16Docker Compose
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.16/docker-compose-0.0.16.yml
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.16/.env.example-0.0.16
cp .env.example-0.0.16 .env # edit passwords!
docker compose -f docker-compose-0.0.16.yml up -dv0.0.15
Changes
- feat(notifications): add Web Push (PWA) channel + close channel-id contract gap (#221) @nolte
- docs(inference-service): fix technical inaccuracies and editorial pass (DE + EN) (#220) @nolte
- docs: make all Mermaid diagrams spec-compliant (#218) @nolte
- fix(docs): tolerate nested-mapping frontmatter in gen_catalog (#216) @nolte
- docs(readme): add plant identification and trim project structure (#211) @nolte
🧰 Maintenance
- chore: remove local check-api-errors skill (migrated to nolte-engineering) (#219) @nolte
- chore(deps): update python major to v26 (#222) @renovate[bot]
- chore(deps): update python minor/patch (#217) @renovate[bot]
- chore(deps): update python minor/patch to v5.4.3 (#210) @renovate[bot]
- chore(deps): update dependency nolte/gh-plumbing to v1.1.23 (#214) @renovate[bot]
- chore(deps): update github-actions to v1.1.23 (#215) @renovate[bot]
- docs: fix top-nav overflow and deploy the Claude catalog (skills 404) (#213) @nolte
- ci(automerge): merge with portfolio App token so drafter re-triggers (#212) @nolte
- ci(skaffold-verify): free runner disk before skaffold build (#209) @nolte
- chore(deps): update docker databases to v2.28.0 (#206) @renovate[bot]
Project context
Audiences served
- End users (direct consumers) → addressed by §Highlights
- Operators / self-hosters → addressed by §Operator & deployment notes
- Contributors / maintainers → addressed by §Developer & docs changes
Highlights
- Browser Push (PWA) notifications — opt-in, per-device web-push for care reminders, enabled under Settings → Notifications → Browser Push. Verifiable with the channel's "Test senden" button (#221).
Operator & deployment notes
- Browser Push needs VAPID keys — set
VAPID_PUBLIC_KEY/VAPID_PRIVATE_KEY/VAPID_CONTACT_EMAILto enable the channel. Optional and non-fatal: when unset the channel shows "Not configured" and the app is unaffected. Generate a keypair withnpx web-push generate-vapid-keys(#221). - New runtime dependency
pywebpush(added by #221) — rebuild backend images. - Python dependency bumps — a grouped major bump (#222) plus minor/patch (#217, #210); re-verify your image build after upgrading.
- Docker databases image bumped to
v2.28.0(#206). - The Email notification channel is now always registered (previously never registered at startup) (#221).
- Security: the new Web Push subscribe endpoint is SSRF-hardened (https-only, private/loopback/metadata-IP rejection, subscription cap); a Kubernetes NetworkPolicy egress allowlist is recommended as defence-in-depth (#221).
Developer & docs changes
- New consumer-driven contract test guarding the notification channel-id vocabulary against frontend↔backend drift (
src/frontend/src/contracts/notification-channels.json) (#221). - Docs: all Mermaid diagrams made spec-compliant (#218); top-nav overflow + Claude skill/agent catalog 404 fixed (#213); inference-service deployment page corrected (DE+EN) (#220); README plant-identification + structure (#211); catalog-gen frontmatter tolerance (#216).
- CI: release-drafter auto-retrigger via portfolio App token (#212); skaffold-verify runner-disk fix (#209);
nolte/gh-plumbing→v1.1.23+ github-actions bumps (#214, #215). - The local
check-api-errorsskill was removed — it now ships in the sharednolte-engineeringplugin asapi-error-check(#219).
Packages
Container Images
ghcr.io/nolte/kamerplanter-backend:0.0.15ghcr.io/nolte/kamerplanter-frontend:0.0.15ghcr.io/nolte/kamerplanter-vectordb:0.0.15ghcr.io/nolte/kamerplanter-knowledge:0.0.15ghcr.io/nolte/kamerplanter-embedding-service:0.0.15
Helm Chart
oci://ghcr.io/nolte/charts/kamerplanter:0.0.15
helm pull oci://ghcr.io/nolte/charts/kamerplanter --version 0.0.15Docker Compose
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.15/docker-compose-0.0.15.yml
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.15/.env.example-0.0.15
cp .env.example-0.0.15 .env # edit passwords!
docker compose -f docker-compose-0.0.15.yml up -dv0.0.14
Changes
🧰 Maintenance
- ci(release): add workflow_dispatch trigger to release-drafter (#208) @nolte
- chore(deps): update python minor/patch to v4.14.0 (#202) @renovate[bot]
- chore(deps): update frontend minor/patch to v7.18.0 (#207) @renovate[bot]
- feat(recognition): self-hosted DINOv2 plant identification (REQ-029-A) (#203) @nolte
- chore(ci): give caller workflows a speaking display name (#205) @nolte
Project context
Audiences served
- Home grower / houseplant owner → addressed by §New capabilities
- Self-hoster → addressed by §Runtime requirements, §Migration notes for operators
- Maintainer → addressed by §Release tooling
New capabilities
- Self-hosted DINOv2 plant identification (REQ-029-A) — optional photo-based
plant recognition running entirely on your own infrastructure, with no
third-party image API. Opt-in; off by default. (#203, d95cb50)
Runtime requirements
- New optional
inference-service(DINOv2 ViT-S/14 ONNX, CPU-only,
Apache-2.0 backbone) built fromsrc/inference-service/Dockerfile, with Helm
valueshelm/kamerplanter/values-dev-recognition.yaml+values-dev-ki.yaml.
Reuses the existing PostgreSQL/pgvector store for the embedding index. (#203, d95cb50) celery-workermemory limit raised 512Mi → 1Gi invalues-dev.yaml: an
acquisition run loads many candidate images per species into memory and was
OOMKilled at 512Mi. Apply the same floor if you enable recognition. (#203, d95cb50)- Python dependencies bumped to v4.14.0 (#202, 9b1aa77); frontend dependencies
bumped to v7.18.0 (#207, e07a1d1).
Migration notes for operators
- Recognition is off by default — set
INFERENCE_SERVICE_ENABLED=trueand
INFERENCE_SERVICE_URLonly when deploying the optionalrecognition/ki
module. Existing deployments are unaffected if left unset. (#203) - To populate the index, run an acquisition pass (
POST /admin/recognition/acquire
or theacquire_all_reference_images_taskCelery task); progress is visible
under Settings → recognition status. (#203) - Recognizable-species count is gated by
reference_image_min_usable(default 5)
and a strict CC0/CC-BY license filter — many species may fall below the
threshold. Lower it or widen the filter if too few become recognizable. (#203)
Release tooling
release-draftergained aworkflow_dispatchtrigger so a draft can be
regenerated by hand after automerge bot merges (which are GITHUB_TOKEN-authored
and therefore do not trigger it). (#208, b682263)- Caller workflows now carry speaking display names. (#205, f54cea1)
Open questions
- No change in this release specifically addresses the Community-garden
administrator audience.
Packages
Container Images
ghcr.io/nolte/kamerplanter-backend:0.0.14ghcr.io/nolte/kamerplanter-frontend:0.0.14ghcr.io/nolte/kamerplanter-vectordb:0.0.14ghcr.io/nolte/kamerplanter-knowledge:0.0.14ghcr.io/nolte/kamerplanter-embedding-service:0.0.14
Helm Chart
oci://ghcr.io/nolte/charts/kamerplanter:0.0.14
helm pull oci://ghcr.io/nolte/charts/kamerplanter --version 0.0.14Docker Compose
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.14/docker-compose-0.0.14.yml
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.14/.env.example-0.0.14
cp .env.example-0.0.14 .env # edit passwords!
docker compose -f docker-compose-0.0.14.yml up -dv0.0.13
Changes
- fix(frontend): inline @mui in vitest to resolve react-transition-group ESM (#172) @nolte
- fix(frontend): drop redundant theme transitions override (#170) @nolte
- feat(spec): add environmental physiology fields to plant profile (#168) @nolte
- docs(nfr): mark all NFR specs as approved (Genehmigt) (#167) @nolte
- docs(nfr): proofread German NFR specs and align version footers (#166) @nolte
- docs: fix German orthography, unify informal address, align i18n parity (#156) @nolte
- chore(deps): update helm charts to v5 (#137) @renovate[bot]
- feat(portfolio): add AUDIENCES.md and portfolio manifest (#146) @nolte
- feat(security): nuclei templates + local tooling (Phase 2A) (#122) @nolte
- feat(security): tests/security/ skeleton + ZAP-test-identity seed tooling (#119) @nolte
- feat(nfr): close PR-#115 review gaps — NFR-014 v1.1 + NFR-015 v1.1 (#117) @nolte
- chore(audit): re-run audit after Phase 1 Track B + REQ-025 backend merges (#120) @nolte
- feat(privacy): implement REQ-025 backend slice (DSGVO Art. 15-21) (#116) @nolte
- test(e2e): add REQ-032 print/export E2E (#114) @nolte
- test(a11y): extend page coverage and align manifest path for UI-NFR-002 (#113) @nolte
- test(e2e): add REQ-030 notifications E2E (#112) @nolte
- test(e2e): add REQ-028 mischkultur companion-planting E2E (#111) @nolte
- test(harvest): add unit tests for ReadinessEngine and QualityScoringEngine (#110) @nolte
- test(e2e): add REQ-005 hybrid sensor E2E (#109) @nolte
- docs(audit): implementation plan + Phase 0 drift-truthing (#108) @nolte
- feat(nfr): add NFR-014 (Nuclei) and NFR-015 (OWASP ZAP) for DAST security testing (#115) @nolte
- docs(spec): resolve all 22 contradictions from 2026-04-26 requirements analysis (#103) @nolte
- feat(frontend): UI rollout 2 — full audit deferral cleanup (bundles F+H+I+J+K+M) (#98) @nolte
- feat(frontend): UI rollout — bundles A-E from the audit (foundation, dialog a11y, detail-page widening, dialog quick-wins, unicode sweep) (#97) @nolte
- docs(analysis): full frontend UI audit against UI-NFR-008 v1.3 (#94) @nolte
- feat(frontend): redesign Activity detail page with master-detail layout (#93) @nolte
- docs(spec): add REQ-033 MCP server specification (#91) @nolte
- fix(frontend): repair workflow dialog crashes and form input bugs (#90) @nolte
- feat(ha): mDNS/Zeroconf auto-discovery for Home Assistant (Phase 1) (#85) @nolte
- fix(frontend): demote new react-hooks v7.1 react-compiler rules to warn (#88) @nolte
- fix(helm): add JWT_SECRET_KEY for dev and fontconfig cache volume (#67) @nolte
- chore: adopt shared skill-agent catalog, remove local duplicates (#82) @nolte
- chore: merge main into develop (#71) @nolte
- chore: remove HA integration from monorepo (#70) @nolte
- fix(helm): inject secrets via envFrom instead of hardcoded env vars (#68) @nolte
🚀 Features
🧰 Maintenance
- chore(deps): update github-actions to v1.1.22 (#184) @renovate[bot]
- chore(tests): raise unit-test coverage for tasks, repositories and store slices (#182) @nolte
- chore(agents): tie requirements-contradiction-analyzer to shared readiness base (#181) @nolte
- chore(agents): tie it-security-requirements-reviewer to shared base (#179) @nolte
- chore(agents): tie tech-stack-architect to shared fitness-reviewer base (#178) @nolte
- chore(agents): tie selenium-test agents to shared e2e base (#177) @nolte
- chore(agents): tie project frontend-usability-optimizer to shared base (#176) @nolte
- chore(agents): tie project fullstack-developer to shared base (#175) @nolte
- chore(deps): update python major to v49 (#173) @renovate[bot]
- chore(deps): update frontend minor/patch to v7.79.0 (#174) @renovate[bot]
- chore(deps): update frontend eslint to v10.5.0 (#171) @renovate[bot]
- chore(deps): update frontend mui to v9.1.1 (#161) @renovate[bot]
- chore(deps): update frontend eslint to v8.61.0 (#162) @renovate[bot]
- chore(deps): update python minor/patch (#159) @renovate[bot]
- chore(deps): update dependency nolte/gh-plumbing to v1.1.21 (#163) @renovate[bot]
- chore(agents): remove duplicates migrated to nolte-shared plugin (#169) @nolte
- chore(deps): update frontend minor/patch (#160) @renovate[bot]
- chore(deps): update python fastapi-stack to v1.3.1 (#165) @renovate[bot]
- chore(deps): update github-actions to v1.1.21 (#164) @renovate[bot]
- chore: add Backstage catalog-info.yaml (#158) @nolte
- chore(deps): update frontend eslint to v10 (#157) @renovate[bot]
- chore(deps): update docker selenium to v148 (#155) @renovate[bot]
- chore(deps): update helm charts to v1.60.0 (#154) @renovate[bot]
- chore(settings): drop redundant merge-strategy override (#132) @nolte
- chore(deps): update nginx docker tag to v1.31 (#153) @renovate[bot]
- chore(deps): update docker selenium to v4.44 (#152) @renovate[bot]
- chore(deps): update docker databases to v2.27.2 (#151) @renovate[bot]
- chore(deps): update busybox docker tag to v1.38.0 (#150) @renovate[bot]
- chore(deps): update dependency nolte/gh-plumbing to v1.1.20 (#147) @renovate[bot]
- chore(deps): update python major (major) (#139) @renovate[bot]
- chore(deps): update frontend mui to v9.0.1 (#143) @renovate[bot]
- chore(deps): update frontend react (#141) @renovate[bot]
- chore(deps): update security pinned versions to v10.4.4 (#140) @renovate[bot]
- chore(deps): update frontend eslint to v8.60.1 (#138) @renovate[bot]
- chore(deps): update frontend minor/patch (#136) @renovate[bot]
- chore(deps): update python minor/patch (#135) @renovate[bot]
- chore(deps): update python fastapi-stack (#142) @renovate[bot]
- ci(security): surface backend logs when Nuclei PR stack fails to start (#148) @nolte
- chore(deps): update github-actions to v1.1.20 (#149) @renovate[bot]
- chore(deps): update helm charts to v1.59.0 (#144) @renovate[bot]
- chore(workflows): bump gh-plumbing reusables to v1.1.19 (#145) @nolte
- chore(deps): update frontend minor/patch (#131) @renovate[bot]
- chore(deps): update dependency wcwidth to v0.7.0 (#133) @renovate[bot]
- chore(deps): update actions/checkout action to v6 (#134) @renovate[bot]
- feat: bulk-close 22 audit plans (Phase 2 + 2B) (#127) @nolte
- chore(deps): update dependency nolte/gh-plumbing to v1.1.15 (#129) @renovate[bot]
- chore(deps): update nolte/gh-plumbing action to v1.1.15 (#130) @renovate[bot]
- chore(deps): update dependency jsdom to v29.1.1 (#128) @renovate[bot]
- chore(deps): update frontend minor/patch (#126) @renovate[bot]
- chore(deps): update dependency msw to v2.14.0 (#121) @renovate[bot]
- chore(deps): update dependency projectdiscovery/nuclei-templates to v10.4.2 (#124) @renovate[bot]
- chore(deps): update github-actions major (major) (#125) @renovate[bot]
- feat(security): nuclei CI workflows, tenant-aware OpenAPI scan, header hardening (#123) @nolte
- chore(deps): update timescale/timescaledb docker tag to v2.26.4 (#118) @renovate[bot]
- chore(deps): update frontend mui to v9.0.4 (#107) @renovate[bot]
- chore(audit): full agent-review cycle — 31 plans, 323 items closed (#106) @nolte
- chore(deps): update frontend minor/patch (#101) @renovate[bot]
- chore(deps): update dependency typescript-eslint to v8.59.1 (#104) @renovate[bot]
- chore(deps): update python minor/patch (#100) @renovate[bot]
- chore(deps): update dependency @mui/x-date-pickers to v9.0.3 (#102) @renovate[bot]
- chore(ci): harden merge settings to squash-only (#105) @nolte
- chore(deps): update dependency react-hook-form to v7.74.0 (#99) @renovate[bot]
- feat(tooling): add MCP server integration for Claude Code (#89) @nolte
- chore(deps): update frontend minor/patch (#87) @renovate[bot]
- chore(deps): update dependency packaging to v26.2 (#86) @renovate[bot]
- chore(deps): update dependency react-router-dom to v7.14.1 (#72) @renovate[bot]
- chore(deps): update python minor/patch (#74) @renovate[bot]
- chore(deps): update nginx docker tag to v1.30 (#75) @renovate[bot]
- chore(deps): update helm release ollama to v1.55.0 (#79) @renovate[bot]
- chore(deps): update dependency cryptography to v47 (#84) @[renovate[bot]](htt...
v0.0.12
Changes
Packages
Container Images
ghcr.io/nolte/kamerplanter-backend:0.0.12ghcr.io/nolte/kamerplanter-frontend:0.0.12ghcr.io/nolte/kamerplanter-vectordb:0.0.12ghcr.io/nolte/kamerplanter-knowledge:0.0.12ghcr.io/nolte/kamerplanter-embedding-service:0.0.12
Helm Chart
oci://ghcr.io/nolte/charts/kamerplanter:0.0.12
helm pull oci://ghcr.io/nolte/charts/kamerplanter --version 0.0.12Docker Compose
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.12/docker-compose-0.0.12.yml
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.12/.env.example-0.0.12
cp .env.example-0.0.12 .env # edit passwords!
docker compose -f docker-compose-0.0.12.yml up -dv0.0.11
Changes
Packages
Container Images
ghcr.io/nolte/kamerplanter-backend:0.0.11ghcr.io/nolte/kamerplanter-frontend:0.0.11ghcr.io/nolte/kamerplanter-vectordb:0.0.11ghcr.io/nolte/kamerplanter-knowledge:0.0.11ghcr.io/nolte/kamerplanter-embedding-service:0.0.11
Helm Chart
oci://ghcr.io/nolte/charts/kamerplanter:0.0.11
helm pull oci://ghcr.io/nolte/charts/kamerplanter --version 0.0.11Docker Compose
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.11/docker-compose-0.0.11.yml
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.11/.env.example-0.0.11
cp .env.example-0.0.11 .env # edit passwords!
docker compose -f docker-compose-0.0.11.yml up -dv0.0.10
Fixes
- Fix frontend nginx crash with
readOnlyRootFilesystem— init container for runtime-config, emptyDir overlays (#63)
Dependencies
- Update dependency python-multipart to v0.0.26 (#57)
- Update python FastAPI stack (#62)
- Update python minor/patch (#61)
- Update frontend minor/patch (#47)
🧰 Maintenance
- Update selenium/node-chrome docker tag to v147 (#60)
- Update selenium/hub docker tag to v4.43 (#59)
- Update valkey docker tag to v0.9.4 (#58)
Full Changelog: v0.0.9...v0.0.10
Packages
Container Images
ghcr.io/nolte/kamerplanter-backend:0.0.10ghcr.io/nolte/kamerplanter-frontend:0.0.10ghcr.io/nolte/kamerplanter-vectordb:0.0.10ghcr.io/nolte/kamerplanter-knowledge:0.0.10ghcr.io/nolte/kamerplanter-embedding-service:0.0.10
Helm Chart
oci://ghcr.io/nolte/charts/kamerplanter:0.0.10
helm pull oci://ghcr.io/nolte/charts/kamerplanter --version 0.0.10Docker Compose
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.10/docker-compose-0.0.10.yml
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.10/.env.example-0.0.10
cp .env.example-0.0.10 .env # edit passwords!
docker compose -f docker-compose-0.0.10.yml up -dPackages
Container Images
ghcr.io/nolte/kamerplanter-backend:0.0.10ghcr.io/nolte/kamerplanter-frontend:0.0.10ghcr.io/nolte/kamerplanter-vectordb:0.0.10ghcr.io/nolte/kamerplanter-knowledge:0.0.10ghcr.io/nolte/kamerplanter-embedding-service:0.0.10
Helm Chart
oci://ghcr.io/nolte/charts/kamerplanter:0.0.10
helm pull oci://ghcr.io/nolte/charts/kamerplanter --version 0.0.10Docker Compose
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.10/docker-compose-0.0.10.yml
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.10/.env.example-0.0.10
cp .env.example-0.0.10 .env # edit passwords!
docker compose -f docker-compose-0.0.10.yml up -dv0.0.9
Fixes
- Fix HACS banner image with absolute URL (#55)
- Fix HACS icon: add
brand/directory at repo root (#56)
Full Changelog: v0.0.8...v0.0.9
Packages
Container Images
ghcr.io/nolte/kamerplanter-backend:0.0.9ghcr.io/nolte/kamerplanter-frontend:0.0.9ghcr.io/nolte/kamerplanter-vectordb:0.0.9ghcr.io/nolte/kamerplanter-knowledge:0.0.9ghcr.io/nolte/kamerplanter-embedding-service:0.0.9
Helm Chart
oci://ghcr.io/nolte/charts/kamerplanter:0.0.9
helm pull oci://ghcr.io/nolte/charts/kamerplanter --version 0.0.9Docker Compose
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.9/docker-compose-0.0.9.yml
curl -LO https://github.com/nolte/kamerplanter/releases/download/v0.0.9/.env.example-0.0.9
cp .env.example-0.0.9 .env # edit passwords!
docker compose -f docker-compose-0.0.9.yml up -d