Skip to content

Releases: mforce/cluckwork

v1.1.3

Choose a tag to compare

@cluckwork-lockfix cluckwork-lockfix released this 28 Oct 02:42
ac3ef38

1.1.3 (2026-10-27)

Bug fixes

  • sales: refuse a sales order dated after the farm's today (#1344) (e85b33f)

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 0b36e8c to 40cd011 in /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

Choose a tag to compare

@cluckwork-lockfix cluckwork-lockfix released this 19 Oct 05:08
eeb90cf

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

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

  • specs: say who corrects locked daily entries and when archiving blocks it (#1312) (1683ce6)

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

Choose a tag to compare

@cluckwork-lockfix cluckwork-lockfix released this 16 Oct 03:18
331a0b2

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

  • oauth: advertise only public-client auth and accept ChatGPT's metadata document (#1295) (ab1b4ac)

Documentation

  • help: add steps to connect Claude and Claude Code to the farm's MCP address (#1292) (7185d0c)

Chores

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

Choose a tag to compare

@cluckwork-lockfix cluckwork-lockfix released this 14 Oct 01:37
5d4a340

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

  • web: precache only the active language in the service worker (#1232) (a874eb1)

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...
Read more

v1.0.2

Choose a tag to compare

@cluckwork-lockfix cluckwork-lockfix released this 11 Oct 00:48
e02be6f

1.0.2 (2026-10-10)

Bug fixes

  • sales: refresh the order's list row after a line changes (#1196) (3e1dea6)

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

Choose a tag to compare

@cluckwork-lockfix cluckwork-lockfix released this 10 Oct 06:38
343612b

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

Choose a tag to compare

@cluckwork-lockfix cluckwork-lockfix released this 08 Oct 03:24
2093468

1.0.0 (2026-10-08)

CI

  • hotfix release lines and minor-per-release versioning (#1130) (ea52751)

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

Choose a tag to compare

@cluckwork-lockfix cluckwork-lockfix released this 07 Oct 02:16
8d343b7

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...
Read more

v0.1.4

Choose a tag to compare

@cluckwork-lockfix cluckwork-lockfix released this 28 Sep 20:03
af31e27

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

Choose a tag to compare

@cluckwork-lockfix cluckwork-lockfix released this 26 Sep 09:34
52cdb7f

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