This website requires JavaScript.
cde817845e
chore(k8s): drop CPU and memory requests
Nick Szaunig and Claude Opus 5.5
2026-10-10 04:08:07 +02:00
910ba804a6
chore(k8s): pin postgres to 18.6-alpine
Nick Szaunig and Claude Opus 5.5
2026-10-10 01:55:03 +02:00
cfd3a187af
feat(automation): separate lot number counters per raw material kind
Nick Szaunig and Claude Opus 5.5
2026-10-07 19:33:10 +02:00
5408711b2d
feat(automation): number formats for raw material and production batches, raw material minimum
Nick Szaunig and Claude Opus 5.5
2026-10-07 16:01:33 +02:00
fc887d8431
fix(ui): encode every id in API paths (client-side path traversal)
Nick Szaunig and Claude Opus 5.5
2026-10-06 06:40:25 +02:00
a7609ff3f8
fix(ui): encode ids in raw material, stock and production batch API paths
Nick Szaunig and Claude Opus 5.5
2026-10-06 06:34:07 +02:00
44971c23e6
docs(spec): raw materials and production addendum
Nick Szaunig and Claude Opus 5.5
2026-10-06 06:31:38 +02:00
569a43d247
feat(ui): raw material lots and production inputs
Nick Szaunig and Claude Opus 5.5
2026-10-06 06:31:07 +02:00
f9899d5621
fix(stock): require raw-material permission to consume, guard quantity edits
Nick Szaunig and Claude Opus 5.5
2026-10-06 06:31:06 +02:00
e52a6057a2
Bestandsabgleich umgesetzt
Nick Szaunig
2026-10-06 00:02:35 +02:00
e73c8b2cb4
feat(raw-materials): wax and propolis lots consumed by production batches
Nick Szaunig and Claude Opus 5.5
2026-10-05 23:54:43 +02:00
41c2af7284
feat(ui): article stock overview and production batch editing
Nick Szaunig and Claude Opus 5.5
2026-10-05 21:28:15 +02:00
f57db97578
feat(ui): stock card with withdraw and inventory count, production batches
Nick Szaunig and Claude Opus 5.5
2026-10-02 06:44:21 +02:00
04f93e954a
feat(stock): batch movement ledger, production batches and shop write-back API
Nick Szaunig and Claude Opus 5.5
2026-10-02 06:38:12 +02:00
85f05dc541
docs(spec): stock sync between ApiCore and the Wabenhain shop
Nick Szaunig and Claude Opus 5.5
2026-10-02 05:51:58 +02:00
e231fb95dc
style(test): prettier formatting in export e2e spec
Nick Szaunig and Claude Opus 5.5
2026-10-01 18:44:29 +02:00
39f00a105c
docs: AuDHD adaptation of all pages - rules, building blocks, open points
Nick Szaunig and Claude Opus 5.5
2026-10-01 18:44:20 +02:00
2656fb8328
fix(ui): number keyboard on phones for every weight, amount and percentage field
Nick Szaunig and Claude Opus 5.5
2026-10-01 18:38:55 +02:00
c3dc596170
feat(ui): honey batch page with one main action, traceability errors, confirmed removal
Nick Szaunig and Claude Opus 5.5
2026-10-01 18:37:37 +02:00
86f9291ee3
feat(ui): harvest, extraction, bottling and equipment pages with heading and way back
Nick Szaunig and Claude Opus 5.5
2026-10-01 18:36:39 +02:00
d4b1addb7d
fix(security): keep form drafts per user and delete them on logout
Nick Szaunig and Claude Opus 5.5
2026-10-01 18:33:38 +02:00
031e47eaad
feat(ui): detail pages for colonies, apiaries and queens with one clear main action
Nick Szaunig and Claude Opus 5.5
2026-10-01 18:32:33 +02:00
2bc0db6f33
fix(statistics): feeding totals per unit instead of adding litres to kilograms
Nick Szaunig and Claude Opus 5.5
2026-10-01 12:27:24 +02:00
ed0a000534
feat(ui): remaining capture forms with sections, tap choices and drafts
Nick Szaunig and Claude Opus 5.5
2026-10-01 12:25:24 +02:00
49f3db5b56
feat(ui): storage, map, search, wintering and statistics without dead ends
Nick Szaunig and Claude Opus 5.5
2026-10-01 12:22:32 +02:00
0e46f666aa
fix(ui): backup schedule shows a load error with retry, not "not configured"
Nick Szaunig and Claude Opus 5.5
2026-10-01 12:17:56 +02:00
d57162e709
feat(ui): undo for deleted label elements, warn before leaving unsaved changes
Nick Szaunig and Claude Opus 5.5
2026-10-01 12:17:36 +02:00
b4c8d80c33
fix(ui): number keyboard for intervals in recurring task dialogs
Nick Szaunig and Claude Opus 5.5
2026-10-01 12:16:19 +02:00
549a75988e
feat(ui): webhooks as cards with events in words, calendar sync without env jargon
Nick Szaunig and Claude Opus 5.5
2026-10-01 12:15:54 +02:00
a21b1665e7
feat(ui): colony edit dialogs with sections and tap ratings, confirmed merge
Nick Szaunig and Claude Opus 5.5
2026-10-01 12:14:07 +02:00
9944aabbc3
feat(ui): list pages with retry on errors, a next step when empty, one main action
Nick Szaunig and Claude Opus 5.5
2026-10-01 12:14:07 +02:00
62e78498bf
feat(ui): capture forms for treatments, feedings, colonies, apiaries, products, equipment
Nick Szaunig and Claude Opus 5.5
2026-10-01 12:14:07 +02:00
832997f885
feat(ui): users and audit log as readable cards with names and retry
Nick Szaunig and Claude Opus 5.5
2026-10-01 12:13:40 +02:00
bd2070436c
feat(ui): calendar as a day list on phones, today named, every entry reachable
Nick Szaunig and Claude Opus 5.5
2026-10-01 07:38:09 +02:00
dff6c364c8
feat(ui): automation settings start with everyday tabs and confirm risky actions
Nick Szaunig and Claude Opus 5.5
2026-10-01 07:36:28 +02:00
78325af1fe
feat(ui): touch-size controls, scrollable dialogs, motion levels everywhere, load states
Nick Szaunig and Claude Opus 5.5
2026-10-01 07:33:50 +02:00
32dfd8d8a7
feat(ui): calmer inspection form with sections, tap ratings and drafts
Nick Szaunig and Claude Opus 5.5
2026-10-01 07:32:20 +02:00
8b6f48b996
docs: API security model, audit results and operating notes
Nick Szaunig and Claude Opus 5.5
2026-10-01 07:27:22 +02:00
45efb08369
fix(auth): one-time SSO and MFA tokens, permission changes effective on every replica
Nick Szaunig and Claude Opus 5.5
2026-10-01 07:24:28 +02:00
fc6af8737b
style(public): drop a needless escape in the lot number pattern
Nick Szaunig and Claude Opus 5.5
2026-10-01 07:20:55 +02:00
0899576262
fix(api): tighter public lot endpoint, SSO callback from config, mapped 4xx errors
Nick Szaunig and Claude Opus 5.5
2026-10-01 07:20:33 +02:00
eafe925d60
fix(search): only search record kinds the caller may read
Nick Szaunig and Claude Opus 5.5
2026-10-01 07:18:33 +02:00
0ba8996e3a
feat(auth): 12-character minimum, 72-byte maximum and breach check for new passwords
Nick Szaunig and Claude Opus 5.5
2026-10-01 02:47:09 +02:00
61e32474e4
fix(export): neutralize spreadsheet formulas in CSV exports
Nick Szaunig and Claude Opus 5.5
2026-10-01 02:43:44 +02:00
f1dc0de3e2
feat(api-keys): restrict keys to source IP addresses
Nick Szaunig and Claude Opus 5.5
2026-10-01 02:41:46 +02:00
9ae1d96a32
fix(api): throttle before auth, configurable proxy trust, no-store and a strict CSP
Nick Szaunig and Claude Opus 5.5
2026-10-01 02:37:31 +02:00
2de93bc087
fix(auth): atomic refresh rotation and a 7-day absolute session limit
Nick Szaunig and Claude Opus 5.5
2026-10-01 02:30:32 +02:00
5c666fe49a
fix(auth): lock accounts after failed attempts, one-time TOTP codes, stronger MFA changes
Nick Szaunig and Claude Opus 5.5
2026-10-01 02:27:47 +02:00
79d20ee64e
fix(webhooks): close DNS rebinding, time out deliveries, sign with timestamp
Nick Szaunig and Claude Opus 5.5
2026-10-01 02:17:40 +02:00
ebeb499a18
fix(backup): keep GUI backup paths under BACKUP_ROOT and limit the schedule
Nick Szaunig and Claude Opus 5.5
2026-10-01 02:14:18 +02:00
bd592adf66
fix(backup): seal backups and require step-up auth to restore
Nick Szaunig and Claude Opus 5.5
2026-10-01 02:12:43 +02:00
a25265b88a
fix(sso): bind Microsoft sign-in to the IdP identity, not the email claim
Nick Szaunig and Claude Opus 5.5
2026-10-01 01:20:49 +02:00
c4a11b4704
fix(users): never manage or hand out more than the caller holds
Nick Szaunig and Claude Opus 5.5
2026-10-01 01:16:37 +02:00
e0bd7b2095
fix(auth): accept only access tokens as bearer credentials (MFA bypass)
Nick Szaunig and Claude Opus 5.5
2026-10-01 01:14:02 +02:00
fac66882fa
feat: Ein-/Auswinterung und Winterverluste je Volk
Nick Szaunig and Claude Opus 5.5
2026-09-28 17:32:03 +02:00
0d23963f07
feat(export): Bestandsbuch für Tierarzneimittel nach Art. 108 VO (EU) 2019/6
Nick Szaunig and Claude Opus 5.5
2026-09-28 11:10:07 +02:00
f263ec79f2
feat(export): Stockkarte - a colony's complete record as PDF
Nick Szaunig and Claude Opus 5.5
2026-09-28 06:27:55 +02:00
5cf4e87ca3
feat(automation): suggest follow-up checks after treatments and feedings
Nick Szaunig and Claude Opus 5.5
2026-09-28 06:23:13 +02:00
888edf7e1d
feat(labels): cut marks in the sheet margin for trimming with a paper cutter
Nick Szaunig and Claude Opus 5.5
2026-09-28 06:11:03 +02:00
445fb3b94b
feat: revocable read-only API keys for machine access
Nick Szaunig and Claude Opus 5.5
2026-09-28 01:24:17 +02:00
ede86c062a
feat: dedicated, versioned shop-sync feed for Wabenhain
Nick Szaunig and Claude Opus 5.5
2026-09-27 20:31:46 +02:00
3c7ff1e0b7
docs: document field ownership between ApiCore and Wabenhain
Nick Szaunig and Claude Opus 5.5
2026-09-27 20:15:02 +02:00
2d4da96ad8
docs: record review findings, verification state and new architecture decisions
Nick Szaunig and Claude Opus 5.5
2026-09-27 13:01:47 +02:00
f9374a135a
feat: "Heute" start page with one next step, clear task states and motion levels
Nick Szaunig and Claude Opus 5.5
2026-09-27 13:00:44 +02:00
5c2ea7bf1e
fix: resend offline-queued entries with an idempotency key
Nick Szaunig and Claude Opus 5.5
2026-09-27 05:31:04 +02:00
5d11756a87
fix: keep quantities, colony/queen states and tasks consistent under retries
Nick Szaunig and Claude Opus 5.5
2026-09-27 05:27:45 +02:00
786d929df9
feat: expose the remaining fields the edit forms were withholding
Nick Szaunig and Claude Opus 5
2026-09-22 23:11:12 +02:00
5a5bd4a138
fix: print the jar size on labels in grams, not millilitres
Nick Szaunig and Claude Opus 5
2026-09-22 02:37:00 +02:00
46a2322814
fix: restore the e2e suite, which could not compile at all
Nick Szaunig and Claude Opus 5
2026-09-22 02:22:09 +02:00
b8809eeaa2
fix: restore the authorization decorators three new routes displaced
Nick Szaunig and Claude Opus 5
2026-09-22 02:12:56 +02:00
9a147ee123
feat: make webhooks and documents editable instead of delete-and-recreate
Nick Szaunig and Claude Opus 5
2026-09-22 02:07:48 +02:00
42ceb33844
feat: allow correcting honey measurements and queen evaluations
Nick Szaunig and Claude Opus 5
2026-09-19 08:15:54 +02:00
b0e05daa42
feat: open the last locked fields for editing, keeping their history intact
Nick Szaunig and Claude Opus 5
2026-09-19 08:13:00 +02:00
bee2199647
feat: make the parent relation of every record correctable after entry
Nick Szaunig and Claude Opus 5
2026-09-19 08:01:05 +02:00
2b15795a60
feat: make every field of a bottling batch correctable and deletable
Nick Szaunig and Claude Opus 5
2026-09-19 07:50:36 +02:00
961ca04a40
fix: translate duplicate-code errors into clean 409 responses
Nick Szaunig and Claude Sonnet 5
2026-09-09 11:47:28 +02:00
dfb4de81f8
fix: surface remaining silent mutation failures
Nick Szaunig and Claude Sonnet 5
2026-09-09 11:41:36 +02:00
997dadfaaa
fix: surface specific business-rule error messages to beekeepers
Nick Szaunig and Claude Sonnet 5
2026-09-09 11:38:35 +02:00
de5df72491
fix: handle document download and clipboard copy failures
Nick Szaunig and Claude Sonnet 5
2026-09-09 11:31:15 +02:00
4ec1468eb4
fix: add error feedback to PDF/CSV export mutations
Nick Szaunig and Claude Sonnet 5
2026-09-09 11:29:01 +02:00
b4caa2ad5a
fix: show an error toast when editing any entity fails
Nick Szaunig and Claude Sonnet 5
2026-09-09 11:22:11 +02:00
96207d0096
feat: mirror the new backend numeric bounds as HTML min/max on inputs
Nick Szaunig and Claude Sonnet 5
2026-09-09 11:12:24 +02:00
b208f52fd1
fix: reject negative weights/quantities and out-of-range percentages
Nick Szaunig and Claude Sonnet 5
2026-09-09 11:05:13 +02:00
93d0f2b208
fix: reject a negative quantity on IN/OUT stock movements
Nick Szaunig and Claude Sonnet 5
2026-09-09 11:01:45 +02:00
8bf9aa467d
feat: add error boundaries so a crash never blanks the whole app
Nick Szaunig and Claude Sonnet 5
2026-09-09 10:55:47 +02:00
2e6846285d
fix: include Wirkstoff, Charge, and Wartezeit in the annual treatment report
Nick Szaunig and Claude Sonnet 5
2026-09-09 10:50:46 +02:00
fb4713e320
fix: cache backend API data so beekeepers can view it with no signal
Nick Szaunig and Claude Sonnet 5
2026-09-08 22:45:11 +02:00
3678a01319
fix: prevent new backend guards from ever surfacing as raw errors
Nick Szaunig and Claude Sonnet 5
2026-09-08 22:39:47 +02:00
3e179391b0
fix: block assigning a colony to a queen who is no longer available
Nick Szaunig and Claude Sonnet 5
2026-09-08 22:35:32 +02:00
5c5c7b756f
fix: block creating or moving a colony into an inactive/missing apiary
Nick Szaunig and Claude Sonnet 5
2026-09-08 22:32:53 +02:00
961a237335
fix: block deactivating an apiary while it still has active colonies
Nick Szaunig and Claude Sonnet 5
2026-09-08 22:30:19 +02:00
20981ec1ce
fix: release a colony's queen when it is dissolved or merged away
Nick Szaunig and Claude Sonnet 5
2026-09-08 20:58:53 +02:00
cc46fa4d9e
fix: mark a colony QUEENLESS when its queen is lost, dies, or is replaced
Nick Szaunig and Claude Sonnet 5
2026-09-07 13:30:18 +02:00
32f11e5b39
fix: clamp {SEQ:N} width in number-format to prevent resource exhaustion
Nick Szaunig and Claude Sonnet 5
2026-09-07 12:41:49 +02:00
1c16db114e
feat: show a live example number for active number-format rules
Nick Szaunig and Claude Sonnet 5
2026-09-07 12:36:06 +02:00
1dddc387ba
fix: expose every backend-supported field in all edit forms
Nick Szaunig and Claude Sonnet 5
2026-09-07 12:20:18 +02:00
792806b967
fix: compute mites/day for natural mite fall varroa measurements
Nick Szaunig and Claude Sonnet 5
2026-09-07 12:01:02 +02:00
985ea09556
fix: allow entering a queen's hatch year and marking color/number
Nick Szaunig and Claude Sonnet 5
2026-09-06 21:44:29 +02:00
edf13d3ae4
feat: warn on the dashboard when a queen is 3+ years old
Nick Szaunig and Claude Sonnet 5
2026-09-06 18:43:37 +02:00
8c4ae64e76
docs: record the Wartezeit design assumption in ARCHITECTURE.md
Nick Szaunig and Claude Sonnet 5
2026-09-06 02:51:15 +02:00