Skip to content

v0.5.0

Latest

Choose a tag to compare

@github-actions github-actions released this 29 May 06:28
· 13 commits to main since this release
d1670b1

Highlights

Reliability — reentrancy + durability. Message-correlation grains gained an explicit state machine + mutex (#655), eliminating a class of reentrancy races. BPMN timers now persist via Orleans reminders (Redis-backed by default, with a new Postgres provider option), surviving silo restarts (#650, #669). Child-workflow start failures propagate up to the parent activity instead of silently hanging (#654). SQLite now opens in WAL mode for concurrent dev access (#656), and the schema-init catch is narrowed to the specific "already exists" case (#660).

Observability. Fleans now defines its own OpenTelemetry Meter and ActivitySource for workflow-level metrics (fleans.workflow.started, fleans.workflow.terminated, fleans.activity.duration) and traces (#462). Domain events carry OccurredAt timestamps for downstream correlation (#651). Three new troubleshooting pages cover Common Issues, Performance Tuning, and Logs & Debugging (#483#485).

Architecture. CQRS read-side is now enforced via an IFleanQueryContext interface (#661). Custom-task catalog grains defend against silent self-wipes on partial activation (#659). A PlacementRoleAssertion fails fast at silo startup when Fleans:Role config and grain placement attributes disagree (#457).

Operability. Helm chart now exposes streaming queue-count knobs (#610). MCP server liveness/readiness probes switched from tcpSocket to httpGet /alive and /health (#487). Admin UI Editor uses a targeted max-version query instead of an unbounded GetAllProcessDefinitions (#611).

Testing. Playwright .NET E2E suite landed with 25+ manual plans automated (#640, #641, #644, #645). Every grain command is now covered by an event-journal-append regression test (#652).

Docs. CLAUDE.md was split into rules + docs/conventions/ + docs/runbooks/ (#649). Custom Tasks documentation split into a dedicated plugin-hosting concept page (#624). User Tasks guide refreshed with the new fail / cancel / group-claim semantics (#625). Website docs migrated from the zeebe: to fleans: namespace (#623), and the pin-guard CI now blocks contributor-doc URLs in user-facing pages (#634, #626).


What's Changed

Other

  • fix: render BPMN diagram after LoadInstance completes (firstRender race in ProcessInstance.razor) by @nightBaker in #637
  • fix(web): instance-page properties panel shows the full element schema (task-definition type, mappings, multi-instance, …) by @nightBaker in #638
  • ci(#634): Phase 0 — website-pin-guard CI check + allow-list ratchet by @nightBaker in #635
  • docs(#623): zeebe: → fleans: in website docs by @nightBaker in #639
  • feat(e2e): Playwright .NET E2E suite + 14 manual plans automated (Phases 1+2) by @nightBaker in #640
  • feat(e2e): port plans 15-26 (boundary/start/event-subprocess/compensation/transaction) by @nightBaker in #641
  • feat(e2e): activate plans #37/#39 happy paths (custom-task framework + RestCaller) by @nightBaker in #644
  • feat(e2e): start EditorPage POM, automate plan #50 default-flow round-trip by @nightBaker in #645
  • fix(e2e): reactivate plans #17 + #30 from TODO backlog (DeliveredCount + userTask completion) by @nightBaker in #646
  • docs: split CLAUDE.md into rules + docs/conventions/ + docs/runbooks/ by @nightBaker in #649
  • feat(#650): persistent reminder service (Redis) for BPMN timer durability by @nightBaker in #663
  • feat(#651): PR A1 — add OccurredAt field to lifecycle + compensation events by @nightBaker in #667
  • test(#652): verify every grain command appends events to journal by @nightBaker in #665
  • feat(#654): catch child-workflow start failures + fail parent activity by @nightBaker in #664
  • fix(#656): enable SQLite WAL journal_mode on schema init by @nightBaker in #666
  • feat(#658): pre-call IsTimerFireStale guard on HandleTimerFired by @nightBaker in #668
  • docs(#625): refresh user-tasks guide and api.md (routes + fail/cancel/group-claim + ErrorResponse camelCase) by @nightBaker in #647
  • feat(#457): PlacementRoleAssertion fails fast on Fleans:Role / placement-attribute mismatch by @nightBaker in #648
  • feat(#462): Fleans-defined Meter + ActivitySource for workflow telemetry by @nightBaker in #662
  • feat(#659): defend CustomTaskCatalogGrain against silent self-wipe by @nightBaker in #671
  • fix(#660): narrow SqliteSchemaInitializer catch (fail-fast on non-race errors) by @nightBaker in #670
  • feat(#661): enforce CQRS read-side via IFleanQueryContext interface by @nightBaker in #673
  • fix(#482): refresh multi-instance-activities drift-guard pins to f4205f4 by @nightBaker in #674
  • feat(#669): add Postgres provider option for Orleans reminders by @nightBaker in #672
  • feat(#655): correlation grain reentrancy state machine + mutex by @nightBaker in #678
  • docs(#483): add Common Issues troubleshooting page by @nightBaker in #688
  • docs(#484): add Performance Tuning troubleshooting page by @nightBaker in #689
  • fix(#552): remove orphaned IWorkflowEventsHandler interface by @nightBaker in #692
  • docs(claude): re-add Regression tests section for worker pipeline by @nightBaker in #693
  • fix(#487): replace MCP tcpSocket probes with httpGet /alive and /health by @nightBaker in #691
  • docs(#485): add Logs and Debugging troubleshooting page by @nightBaker in #690
  • fix(#610): expose streaming queue-count knobs in Helm chart by @nightBaker in #695
  • fix(#611): replace unbounded GetAllProcessDefinitions in Editor with targeted max-version query by @nightBaker in #694
  • docs(#624): split concepts/custom-tasks.md, extract plugin hosting into new concept page by @nightBaker in #696
  • fix(#626): close website pin-guard ratchet — URL-rewrite 60 source pointers, delete 40 contributor-only entries by @nightBaker in #697

Full Changelog: v0.4.1...v0.5.0