Repository navigation
Releases: mforce/cluckwork
Release list
v1.1.3
1.1.3 (2026-10-27)
Bug fixes
Documentation
- add a pdd-kit Product Model (#1332) (b0a9585)
- auth: record the two-factor authentication design (#1334) (ea67740)
- design: two-factor authentication screen lab and picks (#1339) (f15f728)
- product-model: add a README and point AGENTS.md at the model (#1341) (de7d8cc)
Dependencies
- Bump the nuget-minor-patch group with 1 update (#1378) (7a5752c)
- Bump the nuget-minor-patch group with 4 updates (#1367) (ebe2c3f)
- docker: Bump node from
0b36e8cto40cd011in /src/Cluckwork.Api in the docker-base-images group (#1363) (0d2525d) - docker: bump the docker-base-images group in /src/Cluckwork.Api with 2 updates (#1369) (41f438c)
- web: bump the production-minor-patch group across 1 directory with 2 updates (#1371) (eec4d13)
- web: Bump the production-minor-patch group in /web with 2 updates (#1365) (af1771b)
- web: bump the production-minor-patch group in /web with 2 updates (#1377) (484be3e)
Chores
- release 1.1.3 as a patch (782c0e6)
Container image
Deploy by digest — a tag can be moved, a digest cannot:
ghcr.io/mforce/cluckwork@sha256:fcf6f839d6f798c9d2b72e1e89d77db27a530c622360597545ac1ccf5a3659f0
Machine-readable: the image.json asset on this release.
Verify the bytes came from this repo's CI before deploying:
# requires a prior `docker login ghcr.io` — an oci:// subject
# needs registry credentials. Full recipe: README, "Deploying".
gh attestation verify oci://ghcr.io/mforce/cluckwork@sha256:fcf6f839d6f798c9d2b72e1e89d77db27a530c622360597545ac1ccf5a3659f0 \
--repo mforce/cluckwork \
--signer-workflow mforce/cluckwork/.github/workflows/ci.yml \
--source-ref refs/heads/main \
--bundle-from-oci
v1.1.2
1.1.2 (2026-10-19)
Features
- mcp: submit daily entries and record feed, water, purchases and expenses (#1325) (f0df35f)
- oauth: let a person grant only some of the permissions a connected app asks for (#1327) (ce7807e)
Bug fixes
- deps: pin MessagePack 2.5.303 for GHSA-qhrr-8q5h-9q3h (#1321) (60f7e70)
Performance
- web: drop install icons from the precache and minify theme-init.js (#1323) (455ed0d)
- web: precache a currency-only Inter face instead of latin-ext (#1324) (39228ed)
Documentation
Chores
- release 1.1.2 as a patch (e1d108d)
Container image
Deploy by digest — a tag can be moved, a digest cannot:
ghcr.io/mforce/cluckwork@sha256:51f3f5fa35df570f9c6557794105954abf083d96e7abd8f612f743c14cf59a50
Machine-readable: the image.json asset on this release.
Verify the bytes came from this repo's CI before deploying:
# requires a prior `docker login ghcr.io` — an oci:// subject
# needs registry credentials. Full recipe: README, "Deploying".
gh attestation verify oci://ghcr.io/mforce/cluckwork@sha256:51f3f5fa35df570f9c6557794105954abf083d96e7abd8f612f743c14cf59a50 \
--repo mforce/cluckwork \
--signer-workflow mforce/cluckwork/.github/workflows/ci.yml \
--source-ref refs/heads/main \
--bundle-from-oci
v1.1.1
1.1.1 (2026-10-15)
Features
- reports: break production down by flock (#1307) (f05314d)
- reports: compare each figure with the previous period (#1310) (edd767b)
- reports: show eggs sold next to eggs produced (#1301) (51836bb)
- reports: show feed cost per dozen (#1306) (acfc7fa)
- reports: show sellable egg % and egg loss % (#1303) (9994646)
- reports: split Reports into Production and Money tabs (#1309) (512eca7)
Bug fixes
Documentation
Chores
- force release 1.1.1 (fff5ea6)
Container image
Deploy by digest — a tag can be moved, a digest cannot:
ghcr.io/mforce/cluckwork@sha256:51fbc37b937ca45152dfc9863fb571ac364d2967837953e9fbe4e994ef969480
Machine-readable: the image.json asset on this release.
Verify the bytes came from this repo's CI before deploying:
# requires a prior `docker login ghcr.io` — an oci:// subject
# needs registry credentials. Full recipe: README, "Deploying".
gh attestation verify oci://ghcr.io/mforce/cluckwork@sha256:51fbc37b937ca45152dfc9863fb571ac364d2967837953e9fbe4e994ef969480 \
--repo mforce/cluckwork \
--signer-workflow mforce/cluckwork/.github/workflows/ci.yml \
--source-ref refs/heads/main \
--bundle-from-oci
v1.1.0
1.1.0 (2026-10-14)
Features
- add the connected-app consent screen with step-up, and run the OAuth server in Production (#1144) (e40924b)
- agent-guard: refuse git writes in the shared checkout (#1217) (04dabbb)
- api: let OAuth clients register themselves, and sweep expired OAuth rows (#1137) (bd454b3)
- api: persist the Data Protection key ring in Postgres (#1125) (e033d26)
- api: run every fail-closed check on OAuth-authenticated requests (#1136) (4521319)
- api: stand up OpenIddict as an OAuth 2.1 authorization server (#1135) (4961d00)
- help: explain connecting AI apps to the farm's MCP address (#1218) (fa52b23)
- let an Owner turn connected apps off for the farm (#1147) (077f27e)
- let users and Owners see and disconnect connected apps (#1145) (a6729e4)
- mcp: add McpCallContext, the identity bridge for MCP tools (#1181) (3134800)
- mcp: map /mcp for connected apps, with role and scope gates on tools (#1195) (6502603)
- mcp: read tools for customers, orders, payments and balances (#1216) (ce3d5cb)
- mcp: read tools for flocks, stock, egg lots and daily entries (#1209) (0f341f0)
- mcp: record a draft daily entry through an MCP write tool (#1210) (1db5fe8)
- oauth: accept client ID metadata documents beside registration (#1152) (bd4e5ec)
- oauth: log rate-limit rejections on the OAuth endpoints as security events (#1174) (9f7efd4)
- record and show which connected app acted in the audit log (#1138) (9934ef7)
Bug fixes
- agent-guard: refuse gh api writes to main and the routes around push's checks (#1224) (833f007)
- api: ignore forwarded headers when no proxy is trusted, and close MCP audit gaps (#1260) (8c3ba0e)
- api: log client-aborted requests below Error (#1288) (56f04e6)
- api: name the bad MCP argument and log tool refusals below Error (#1238) (f18267f)
- api: revoke a connected app when the credential epoch supersedes it (#1248) (f32a7ec)
- apphost: pass the real API address as the OAuth issuer, and add the OAuth runbook (#1163) (a06f7ff)
- catalog: refuse stale product and packed-unit edits, and order daily-entry grade lines (#1256) (8bbcd27)
- deps: resolve .NET 10 packages to 10.0.13 for the October advisories (#1290) (5a2236d)
- mcp: harden /mcp from the audit (address budget, Origin, tool contracts) (#1225) (de61191)
- mcp: match flock names ignoring case, plain optional schema types, quiet idempotent replays (#1237) (e8726a7)
- sales: refresh the order's list row after a line changes (#1191) (91b8324)
- sales: scale a line's default and list price to its unit (#1166) (5c2b0c0)
- test: remove unused usings that break main's build (#1206) (9272270)
- web: await or handle the floating promises the linter suppressed (#1219) (113f6dc)
- web: bump brace-expansion override to ^5.0.12 (#1151) (e4ec534)
- web: correct the hook dependency lists the linter suppressed (#1220) (9ff55d9)
- web: fill the expanded Lay rate chart and allow ranges up to a year (#1162) (3e879b0)
- web: make consent page farm name and role badge readable in dark mode (#1231) (86c9b8b)
- web: observe the ExpandedLayRate region once the modal has portaled (#1213) (6025557)
Performance
Refactoring
- api: split AuthEndpoints into Login, Session and Password partials (#1241) (15a2676)
- api: split the endpoint groups out of Program.cs (#1257) (497e29e)
- domain: split ImageSanitizer into per-format partials (#1239) (4416cda)
- domain: split SalesOrder into per-type files in the same namespace (#1233) (adca545)
- identity: split IdentityProvider into feature partials (#1261) (67b3b7a)
- infra: split SimulationDataSeeder into per-phase partials (#1266) (87a3f4c)
- web: delete dead rules and split styles.css into area files (#1267) ([31...
v1.0.2
1.0.2 (2026-10-10)
Bug fixes
Container image
Deploy by digest — a tag can be moved, a digest cannot:
ghcr.io/mforce/cluckwork@sha256:f3d32b9376780efefa2b26b50dd280ab2c472cd25c1514d84800d58d7e0f769a
Machine-readable: the image.json asset on this release.
Verify the bytes came from this repo's CI before deploying:
# requires a prior `docker login ghcr.io` — an oci:// subject
# needs registry credentials. Full recipe: README, "Deploying".
gh attestation verify oci://ghcr.io/mforce/cluckwork@sha256:f3d32b9376780efefa2b26b50dd280ab2c472cd25c1514d84800d58d7e0f769a \
--repo mforce/cluckwork \
--signer-workflow mforce/cluckwork/.github/workflows/ci.yml \
--source-ref refs/heads/release/v1.0.x \
--bundle-from-oci
v1.0.1
1.0.1 (2026-10-10)
Bug fixes
- sales: scale a line's default and list price to its unit (#1179) (729a86e)
- web: fill the expanded Lay rate chart and allow ranges up to a year (#1173) (4bdcec0)
Container image
Deploy by digest — a tag can be moved, a digest cannot:
ghcr.io/mforce/cluckwork@sha256:76598584698373d6ff777e9ec8012f99bbfc6ad1c6935335c78567c7867bf1a3
Machine-readable: the image.json asset on this release.
Verify the bytes came from this repo's CI before deploying:
# requires a prior `docker login ghcr.io` — an oci:// subject
# needs registry credentials. Full recipe: README, "Deploying".
gh attestation verify oci://ghcr.io/mforce/cluckwork@sha256:76598584698373d6ff777e9ec8012f99bbfc6ad1c6935335c78567c7867bf1a3 \
--repo mforce/cluckwork \
--signer-workflow mforce/cluckwork/.github/workflows/ci.yml \
--source-ref refs/heads/release/v1.0.x \
--bundle-from-oci
v1.0.0
1.0.0 (2026-10-08)
CI
Container image
Deploy by digest — a tag can be moved, a digest cannot:
ghcr.io/mforce/cluckwork@sha256:2ced08656ace92bc11a55161c0be8636502f9ac77324ec2f01d1d42ff20ada37
Machine-readable: the image.json asset on this release.
Verify the bytes came from this repo's CI before deploying:
# requires a prior `docker login ghcr.io` — an oci:// subject
# needs registry credentials. Full recipe: README, "Deploying".
gh attestation verify oci://ghcr.io/mforce/cluckwork@sha256:2ced08656ace92bc11a55161c0be8636502f9ac77324ec2f01d1d42ff20ada37 \
--repo mforce/cluckwork \
--signer-workflow mforce/cluckwork/.github/workflows/ci.yml \
--source-ref refs/heads/main \
--bundle-from-oci
v0.1.5
0.1.5 (2026-10-07)
Features
- arch: add CW1004 at Info with shared contract and adapter-root definitions (#1117) (baa5c4d)
- arch: make CW1004 a build error (#1123) (8cb14e6)
- ci: publish amd64 and arm64 images (#996) (ce4a4ab)
Bug fixes
- auth: refuse a stored credential epoch below 1 (#1036) (02e8a63)
- e2e: select a farm-local expense range across month boundaries (#1011) (944acb0)
- inventory: see a flock archived while feed usage waits on the item lock (#1026) (582f8c8)
- seed: let the demo seed retry after a late failure (#1076) (5897e34)
- seed: never let the demo seed cleanup delete the Owner's data (#1083) (d525a0e)
- test: repair demo seed false pass and measure collection floor (#1000) (af3eb47)
Performance
- seed: release tracked entities between days in DemoDataSeeder (#1044) (5d0a565)
- seed: release tracked entities between days in SimulationDataSeeder (#1049) (9194b21)
- test: reuse one Postgres server for integration databases (#1002) (1953cde)
- test: serialize the five full-seed integration classes (#1003) (ad258d8)
Refactoring
- access: centralize live reads and isolate lifecycle (#857 E1) (#1055) (d908f2f)
- access: declare fixture contracts and preserve actors (#857 E2) (#1060) (cd1de3a)
- access: name flock assignments through IFlockLookup, removing the last compatibility exception (#1070) (4e9bd1c)
- access: put the operator verbs behind IAccessOperations and the purge behind IRefreshTokenPurge (#1047) (7014566)
- accounts: move the cross-farm account reads behind IFarmDirectory (#1043) (b998b07)
- api: register each module from its own file (#1065) (36a87a7)
- arch: close the Platform composition slice (#1066) (e63ad81)
- arch: finish package-by-module — contracts by folder, no marks or claim lists (#1099) (23bb192)
- arch: give adapters Farm's farm-code rule and image-size errors through its contract (#1121) (cce672b)
- arch: move Access into Modules/Access (#1095) (ccb5558)
- arch: move Commerce into Modules/Commerce (#1094) (deae524)
- arch: move Egg Operations into Modules/EggOperations (#1093) (51e9cbb)
- arch: move Farm into Modules/Farm (#1096) (57cdbc6)
- arch: move Finance into Modules/Finance (#1090) (5422898)
- arch: move Flock Management into Modules/FlockManagement (#1091) (acc8f73)
- arch: move General Inventory into Modules/GeneralInventory (#1092) (541eca9)
- arch: move Insights into Modules/Insights (#1089) (d4175b5)
- arch: move repositories and EF configurations into their modules (#1097) (fb3a9cd)
- arch: move the 7 login records into Access's public contract (#1104) (91263f4)
- arch: name flocks through Flock Management's contract and publish Access's credential rules (#1119) (0a11748)
- arch: publish DiscountCeiling in Commerce's contract (#1118) (2cf8deb)
- arch: publish Farm's shared value types in its contract (#1120) (9eb2ba8)
- arch: put module rules beside the code they describe (#1086) (02c299a)
- arch: remove slop from the package-by-module and CW1004 work (#1128) (30b0e11)
- arch: stage a new farm's defaults through Egg Operations' and Commerce's provisioning ports (#1122) (c74cd01)
- auth: move the credential-epoch check behind ICredentialEpochVerifier (#1032) (3b89567)
- auth: route the auth endpoints through IAccessModule (#1041) (a78729d)
- eggs: put egg operations behind an IEggOperationsModule contract (#1028) (d6dbd47)
- farm: put farm settings behind an IFarmModule contract (#1015) (4c429f0)
- finance: put Finance behind an IFinanceModule contract (#1010) (b9f7f76)
- flocks: put flock lifecycle behind an IFlockModule contract (#1021) ([08cf44c](08cf44c6669d8740ba5c53cf35...
v0.1.4
0.1.4 (2026-09-28)
Features
- web: compact Sales and Feed & inventory lists on phones (#988) (5d55cec)
- web: compact two-line History rows on phones (#983) (2bcbbd5)
- web: compact Water, Feed and Expenses on phones (#986) (25cc7fa)
- web: live-preview the farm palette before saving (#979) (a5f159c)
Bug fixes
- web: close setup inspectors, prioritize Dashboard, and align shell colors (#975) (fcb43ee)
- web: keep focused fields readable in dark mode (#990) (f4c2b47)
- web: keep setup-list rows one line tall on phones (#984) (eebbdd8)
- web: keep the PWA theme-color in step with the app theme (#976) (e19d6f8)
Container image
Deploy by digest — a tag can be moved, a digest cannot:
ghcr.io/mforce/cluckwork@sha256:6b7e05cf672069870f8d6d7d7836ed365eca5cb18144474b953d9f6fd99eee5a
Machine-readable: the image.json asset on this release.
Verify the bytes came from this repo's CI before deploying:
# requires a prior `docker login ghcr.io` — an oci:// subject
# needs registry credentials. Full recipe: README, "Deploying".
gh attestation verify oci://ghcr.io/mforce/cluckwork@sha256:6b7e05cf672069870f8d6d7d7836ed365eca5cb18144474b953d9f6fd99eee5a \
--repo mforce/cluckwork \
--signer-workflow mforce/cluckwork/.github/workflows/ci.yml \
--source-ref refs/heads/main \
--bundle-from-oci
v0.1.3
0.1.3 (2026-09-26)
Features
- dashboard: redesign the Operations Desk and show order grade names (#912) (49fc2a3)
- eggs: warn per grade when available stock falls below its floor (#950) (8125845)
- redesign daily entry as count workbench (#913) (aa685ad)
- web: add a flock scope selector to the Dashboard, fixing the strip's scale fallback (#918) (f4fa057)
- web: add a Lay rate range switcher and page the Dashboard panels (#940) (e0c1f68)
- web: convert and redesign Settings, Help, Login, Audit, Export, Account and Set Password (#833) (#901) (4ee8b03)
- web: convert Dialog and useConfirm to MUI Dialog (#892) (647ed64)
- web: convert the CRUD lists to MUI (#897) (009db86)
- web: expand the Lay rate chart into an overview map and a scrolling daily window (#958) (852c845)
- web: give display figures an optical size with Inter's opsz axis (#948) (a8de94e)
- web: migrate small controls to MUI (#934) (e684a3e)
- web: redesign Sales with a MUI order desk and settlement rail (#927) (99e7e83)
- web: redesign seven ledgers as a Field Console with MUI (#899) (167ac68)
- web: redesign the pending-update prompt as a branded overlay (#938) (aaf171d)
- web: redesign the setup lists as a table with a bottom inspector (#939) (0c0faad)
- web: replace NamedEntityPicker's combobox with MUI Autocomplete (#898) (0f7b966)
Bug fixes
- filter Audit log by record type (#965) (da203b7)
- seed: date the demo farm's draft by the farm clock, not the UTC date (#893) (ef0f2a9)
- seed: give House 2 realistic demo history (#917) (1472221)
- seed: rate the fixture farms at 86–94% hen-day and flag a rate over 100% (#959) (a426efe)
- web: fit Users actions and compact selected-record inspectors (#947) (3e80bc6)
- web: keep the Lay rate readout inside its reserved row (#964) (1598f9b)
- web: make FieldConsole row links theme-aware in dark mode (#931) (0f0afcd)
- web: restore the grouped, alphabetised Help glossary (#657) (#924) (dcd0e1b), closes #833
- web: stop the customer picker reserving 240px of height inside dialogs, and keep the phone dialog footer side by side (#896) (91e3d65)
- web: stop the Lay rate flock picker dialog from shrink-wrapping (#937) (190dcd6)
Documentation
- correct four false claims about CI coverage and gh pr edit (#956) (7d73bfe)
- deslop AGENTS.md without weakening its rules (#921) (#925) (e44d435)
- document local JWT dev-keypair setup in CONTRIBUTING (#949) (d4f3585)
- recapture the README screenshots after the SPA revamp (#961) (cb37bf0)
- web: tighten the Help page and product glossary (#957) (bd267ba)
Container image
Deploy by digest — a tag can be moved, a digest cannot:
ghcr.io/mforce/cluckwork@sha256:a79466d041db109e186d03e2149d6c719c0b48c520b2bf4003db7df985e7928d
Machine-readable: the image.json asset on this release.
Verify the bytes came from this repo's CI before deploying:
# requires a prior `docker login ghcr.io` — an oci:// subject
# needs registry credentials. Full recipe: README, "Deploying".
gh attestation verify oci://ghcr.io/mforce/cluckwork@sha256:a79466d041db109e186d03e2149d6c719c0b48c520b2bf4003db7df985e7928d \
--repo mforce/cluckwork \
--signer-workflow mforce/cluckwork/.github/workflows/ci.yml \
--source-ref refs/heads/main \
--bundle-from-oci