Skip to content

Releases: Rytass/BPMCore

v0.18.0

Choose a tag to compare

@fantasywind fantasywind released this 28 Oct 16:49
a45f4ff

0.18.0 (2026-10-28)

🚀 Features

  • ⚠️ bpm-core: refuse ANY returns outside the applicant and earlier user tasks (e6d5af0)
  • bpm-core: refuse text formats that cannot be checked (88635de)
  • ⚠️ bpm-core: enforce text length and format on submit and fill (c8ec5b3)
  • bpm-core-client: check text length and format before sending (b57e857)
  • bpm-core-client: check text field formats in a Web Worker (a3c3d65)
  • bpm-core-react: offer only reachable nodes in the return dialog (690042a)
  • bpm-core-react: set where a return goes on the user task panel (b3b9fe0)
  • bpm-core-react: set a text format in the form builder (ce74cd1)
  • bpm-core-react: name text length and format errors on the case pages (074d4b9)
  • shared: list the nodes a return to a chosen node may go to (306ac32)
  • shared: add the setUserTaskReturnAllowedTargets command (ded2690)
  • shared: check text length and format with one shared rule (a38127d)
  • shared: detect text formats that repeat a repeating group (5a18fc7)

🩹 Fixes

  • bpm-core: skip delegation rules whose agent has been deactivated (3434b25)
  • bpm-core: refuse non-text values and leave approver-filled text to its fill step (bad4656)
  • bpm-core: refuse nested text formats and formats on non-text fields (471222c)
  • bpm-core: refuse a format on a table column that is not text (8308db8)
  • bpm-core: check the type of a hidden text field with rules (1282eea)
  • bpm-core: run text field patterns under a time limit (327d0a6)
  • bpm-core: share one pattern time budget per validation pass (8f81919)
  • bpm-core: charge only matching time to the pattern budget (eddfb07)
  • bpm-core: refuse a table over its row limit before checking its rows (d22afa7)
  • bpm-core: keep the task with the principal when the directory lookup fails (aacccbe)
  • bpm-core: check the type of a text field whose visibleWhen is false (b256040)
  • bpm-core: stop waiting for a delegation directory lookup after 5 seconds (c1473c6)
  • bpm-core: refuse to dispatch when the delegation directory lookup fails (8ef8a88)
  • bpm-core: keep the directory's error out of the delegation refusal (14ccd0e)
  • bpm-core: hold service-task text writes to the field's rules (fcde1df)
  • bpm-core: ask the directory only about delegation rules in scope (022304e)
  • bpm-core-react: warn about every format the linter refuses (d637d58)
  • bpm-core-react: show the designer's message for a fill format error (a69399d)
  • bpm-core-react: flag an over-long pattern or error message in the builder (68baf21)
  • bpm-core-react: word a timed-out format check on the approver page (3a223a3)
  • bpm-core-react: check formats off the main thread on the case pages (58a1a9d)
  • bpm-core-react: release the busy state when form validation throws (a300d2b)
  • bpm-core-react: drop patternErrorMessage when the designer clears it (74a007b)
  • shared: keep a later stage that loops back out of the return targets (86c2fd0)
  • shared: report a non-text value on a text field that has rules (41eac23)
  • shared: refuse repeated alternations whose branches can start alike (5e6e12e)
  • shared: refuse every repeated group in a text field pattern (d0daa77)
  • shared: refuse a text pattern whose parentheses close the anchoring early (330ef06)

🔥 Performance

  • bpm-core: ask the host directory once per node when resolving delegation (cb62b00)
  • bpm-core: create the pattern test's vm context on its first run (cbc8633)
  • shared: compile each text field pattern once and reuse it (7410ba6)
  • shared: walk return targets over adjacency maps (a56de04)

⚠️ Breaking Changes

  • bpm-core: enforce text length and format on submit and fill (c8ec5b3)
    a text value outside minLength / maxLength, or one that does
    not match pattern, is refused with 400.
  • bpm-core: refuse ANY returns outside the applicant and earlier user tasks (e6d5af0)
    decideTask RETURN with allowedTargets ANY refuses a target
    that is not the start event or a user task upstream of the returning node.

❤️ Thank You

v0.17.9

Choose a tag to compare

@fantasywind fantasywind released this 27 Oct 16:36
b3d036d

0.17.9 (2026-10-27)

🚀 Features

  • bpm-core: record the applicant's comment on a resubmission (9961470)
  • bpm-core: list deactivated members who still hold open tasks (0ecf8f5)
  • bpm-core-client: send the resubmission comment (ce3883a)
  • bpm-core-client: add listInactiveMembersWithOpenTasks (5f8b615)
  • bpm-core-react: let the applicant comment when resubmitting (374c462)
  • bpm-core-react: list the member's returned cases on the inbox (617f507)
  • bpm-core-react: list deactivated members with open tasks on the member screen (78a2006)

🩹 Fixes

  • bpm-core: count only asked-about inactive members, sorted by stroke count (384dbbe)
  • bpm-core: cap the resubmission comment at 2000 characters (7616e4e)
  • bpm-core: read deactivated-member holders in one bounded query (ac107c1)
  • bpm-core: answer empty only when no identity service is registered (5ba1dd2)
  • bpm-core: keep member directory methods bound to their directory (b5d3c51)
  • bpm-core-client: send only UpdateMembershipInput fields from updateMembership (1c01f6f)
  • bpm-core-react: lock the member picker when editing a membership (4bf22a6)
  • bpm-core-react: allow saving an edited membership whose member is unresolved (75df04a)
  • bpm-core-react: keep the latest inactive-members reload (e552a07)
  • bpm-core-react: keep the inbox tasks when the returned cases fail to load (49fa4e3)
  • bpm-core-react: keep each resubmission comment draft with its own case (4623cb1)
  • bpm-core-react: cap the resubmission comment box and match its width (05a1ff7)

❤️ Thank You

v0.17.8

Choose a tag to compare

@fantasywind fantasywind released this 22 Oct 07:04
a262eea

0.17.8 (2026-10-22)

🚀 Features

  • api: read webhook allowlist and encryption key from Vault (d2a12c6)

🩹 Fixes

  • bpm-core-react: open the field overview on every field when nothing is set (f90188d)
  • bpm-core-react: re-enable the instance header actions after a decision (70e1a92)

❤️ Thank You

v0.17.7

Choose a tag to compare

@fantasywind fantasywind released this 22 Oct 03:55
15e91bf

0.17.7 (2026-10-22)

🚀 Features

  • bpm-core: keep approver-filled fields out of end-user submissions (51fe897)
  • bpm-core: let the filling node write approver-filled fields on approval (502500c)
  • bpm-core: validate approver-filled fields whenever the filling node approves (3d5ae3d)
  • bpm-core: flag task notifications that need the form opened (77fd492)
  • bpm-core: refuse to publish field permissions the engine cannot honour (7361a9e)
  • bpm-core: refuse form rules that clash with approver-filled fields (a55253e)
  • bpm-core: refuse conditions that read approver-filled fields too early (5ad995f)
  • bpm-core: adopt fieldAccess node model per ADR 20 (b25cf71)
  • bpm-core: flag tasks whose node lets the approver fill in fields (57f1d61)
  • bpm-core-client: send approver-filled data and keep it off launch and resubmit forms (a33d7f9)
  • bpm-core-react: resolve per-field access for the instance viewer (7cd040c)
  • bpm-core-react: let the fill node's approver fill in fields on the case page (9cd9eb2)
  • bpm-core-react: send fill tasks to the case page from inbox and notifications (235c3c0)
  • bpm-core-react: add the field access overview to the template designer (1de7665)
  • shared: add field permission helpers for approver-filled fields (6386b1c)
  • shared: add the field access matrix and its commands (b0a9aa3)

🩹 Fixes

  • bpm-core: keep the read-early lint from crashing on malformed drafts (2fb2c26)
  • bpm-core: let the first snapshot node win in task node summaries (9637f4c)
  • bpm-core: order task node summary rows by snapshot position (091d808)
  • bpm-core-client: update launch mocks for the template version definition (452d600)
  • bpm-core-react: send only the fill fields the approver changed (1250eac)
  • bpm-core-react: keep the fill payload in step with what the page shows (80f1de1)
  • bpm-core-react: clear, name and guard the approver's fill (dc2af08)
  • shared: read a SET_FORM_FIELD path the way the engine writes it (3ba2962)
  • template: stop rethrowing designer save and publish errors (af93e67)

❤️ Thank You

v0.17.6

Choose a tag to compare

@fantasywind fantasywind released this 20 Oct 15:59
3a0d78c

0.17.6 (2026-10-20)

🩹 Fixes

  • form: read the first field error without Array.prototype.at (abc14a8)

❤️ Thank You

v0.17.5

Choose a tag to compare

@fantasywind fantasywind released this 20 Oct 07:06
f3d8742

0.17.5 (2026-10-20)

⚠️ Upgrade notes

  • Migration ActivityLogSeq0000000029000 locks activity_logs for its whole run. It adds activity_logs.seq and backfills every existing row in one transaction, holding an ACCESS EXCLUSIVE lock from the ADD COLUMN through the backfill, SET NOT NULL and the unique index build. Nothing can read or write activity_logs meanwhile, and every submit, decision and history read touches it, so on a large table plan the run as downtime in a maintenance window. lock_timeout bounds only the wait to take the lock, not how long it is held.
  • Run it inside a transaction (the default) and before serving 0.17.5.
  • The backfill rewrites every row: leave free disk for roughly another copy of the table plus its WAL, and run VACUUM (ANALYZE) activity_logs afterwards.

🚀 Features

  • workflow-engine: record the write order of activity logs (d3a946a)

🩹 Fixes

  • organization: let template designers read the organization (4f76202)
  • organization: open only the designer's three organization reads (28b5146)
  • workflow-engine: read activity logs in write order (4b9865f)

❤️ Thank You

v0.17.4

Choose a tag to compare

@fantasywind fantasywind released this 19 Oct 19:03
de6ad2e

0.17.4 (2026-10-19)

🚀 Features

  • form: translate DataSource error copy per language (787e7a3)

🩹 Fixes

  • client: scope the language menu to messages and require its provider (94f072b)
  • react: sample multiple-selection fields as arrays in the dry run (295c23a)
  • react: name condition operators after the field in the template designer (54d530a)
  • shared: compile multiple-selection conditions with list semantics (c9c7782)
  • workflow-engine: route list-valued conditions by their structured fields (ab2f848)

❤️ Thank You

v0.17.3

Choose a tag to compare

@fantasywind fantasywind released this 19 Oct 12:59
949d82f

0.17.3 (2026-10-19)

🚀 Features

  • client: translate structural publish-lint lines into designer copy (490339c)
  • client: let users switch the message language (c18cb91)
  • react: show structural publish failures in Chinese with node names (ba90fbd)
  • react: enlarge approval comments in the instance history (b3bb37c)
  • react: add a BPM message language provider (355b15c)
  • template: translate publish lint lines per language (60fa7bc)

🩹 Fixes

  • client: cover blank node labels and never throw while translating lint (0a8b3af)
  • react: sample money fields as numbers in the designer dry run (35dbd9a)
  • template: address review of the lint translation (26d7a54)

❤️ Thank You

v0.17.2

Choose a tag to compare

@fantasywind fantasywind released this 18 Oct 01:29
c5d018c

0.17.2 (2026-10-18)

🚀 Features

  • client: add notification sync wrappers (c89d759)
  • notification: page and sync notifications without rescanning (f03f981)

❤️ Thank You

v0.17.1

Choose a tag to compare

@fantasywind fantasywind released this 16 Oct 13:26
f583008

0.17.1 (2026-10-16)

🩹 Fixes

  • react: fully specify relative imports in emitted declarations (022b3e2)
  • react: keep org unit and position picker menus on screen (bb5cbaa)
  • react: give the require condition CommonJS declarations (ab0121b)
  • template: return the id of a deleted category (784f69e)
  • template: say a category in use cannot be deleted (ab4236b)

❤️ Thank You