Repository navigation
Releases: Rytass/BPMCore
Releases · Rytass/BPMCore
Release list
v0.18.0
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
- Chia Yu Pai @fantasywind
- Kai-Chieh Yang
v0.17.9
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
- Chia Yu Pai @fantasywind
- Kai-Chieh Yang
v0.17.8
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
- Chia Yu Pai @fantasywind
v0.17.7
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
- Chia Yu Pai @fantasywind
- Kai-Chieh Yang
v0.17.6
0.17.6 (2026-10-20)
🩹 Fixes
- form: read the first field error without Array.prototype.at (abc14a8)
❤️ Thank You
- Chia Yu Pai @fantasywind
v0.17.5
0.17.5 (2026-10-20)
⚠️ Upgrade notes
- Migration
ActivityLogSeq0000000029000locksactivity_logsfor its whole run. It addsactivity_logs.seqand backfills every existing row in one transaction, holding an ACCESS EXCLUSIVE lock from theADD COLUMNthrough the backfill,SET NOT NULLand the unique index build. Nothing can read or writeactivity_logsmeanwhile, and every submit, decision and history read touches it, so on a large table plan the run as downtime in a maintenance window.lock_timeoutbounds 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_logsafterwards.
🚀 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
- Chia Yu Pai @fantasywind
- Kai-Chieh Yang
v0.17.4
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
- Chia Yu Pai @fantasywind
- Kai-Chieh Yang
v0.17.3
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
- Chia Yu Pai @fantasywind
- Kai-Chieh Yang
v0.17.2
0.17.2 (2026-10-18)
🚀 Features
- client: add notification sync wrappers (c89d759)
- notification: page and sync notifications without rescanning (f03f981)
❤️ Thank You
- Chia Yu Pai @fantasywind
v0.17.1
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
- Chia Yu Pai @fantasywind