Repository navigation
Release v0.29.0
What's Changed
🚀 New Features
- add TLS connection support and dialect-aware pool sizing
- enforce a stricter deploy-time contract
- add closing transitions for paused instances
- normalize node config at deploy and rework condition evaluation
- validate CC kinds at flow deploy time
🐛 Bug Fixes
- fully revert deadline on auto-pass cascade contention
- canonicalize MinIO PutObject return metadata
- fail closed on empty-tenant list and write scoping
- serialize membership mutations and identity-guard expiry removal
- retain signature nonce for the full timestamp window
- register zero-order middleware in the before group
- match SPA entries on path-segment boundaries
- stop logger printf format corruption
- count unique disk partitions
- bound multipart file descriptors and canonicalize metadata keys
- prevent LRU phantom resurrection and expiry double-decrement
- restore signature replay protection and harden challenge stores
- compare hashes in constant time and parse salt safely
- randomize CBC IV per encryption with decrypter interop
- pin consecutive-approver auto-pass logs to their task
- finish timed-out handle tasks with handle semantics
- degrade unresolvable timeout admin transfers to timeout-only
- run the urge tenant guard before task state checks
- restore the latest form snapshot on rollback keep
- drive read-confirm CC waiting from unread records, not the read-confirm flag
- make CC recipient and name resolution best-effort
- make role/department CC resolution best-effort
- cap form-data growth, not standing size, on task actions
- preserve add-assignee links across task transfer
- enforce the form-data size cap on approve/reject/transfer/rollback
- reactivate before/after add-assignee tasks on parallel nodes
- resolve role/department CC recipients via AssigneeService
- implement RollbackDataClear to wipe form data on rollback
- share the deadlock guard between node completion and remove-assignee simulation
♻️ Refactoring
- route role-membership checks through a shared helper
- drop unused WithDB constructor and lift client timeout
- extract shared container setup helpers
- streamline read-model queries, timeout scanner, and resource wiring
- consolidate engine dispatch, pass-rule, and command handling
- streamline table inspector
- thread dialect into query guard and propagate schema errors
- tighten outbox claim, reaper fan-out, and transport timeouts
- alias primary name to config and expose primary kind
- extract shared helpers and guard find-option setup
- extract shared closest-match helper and consolidate auth errors
- delegate row import to the shared tabular helper
- delegate row import to the shared tabular helper
- extract shared row-import pipeline
- simplify cache and transformer construction
- dedup query construction and harden dialect-aware sqlguard
- add Effective*() accessors and canonical primary-source name
- extract shared calendar anchor helpers
- remove unused constants
- guard task action dispatch exhaustiveness
- promote the default urge cooldown to a contract constant
✅ Testing
- simplify engine test setup
- cover transfer, reactivation, size-cap, and rollback gaps
📝 Documentation
- document Provider.Connect non-nil success postcondition
- refresh SupplyURLKeyMapper example for the proxy default
- point facade comments at the internal contract
- document ValidationRule fields
- document init-time i18n message freeze on error sentinels
- document the Effective*() config defaulting convention
- document the hardened approval contract and lifecycle paths
- document the approval deploy-time normalization contract
🔧 Maintenance
- bump version to v0.29.0
- drop the dead apv_flow_form_field table
- warn when go-installed lefthook is not on PATH
- add lefthook, commitlint and go-task hook/lint tooling
Other Changes
- perf(approval): batch timeout and pre-warning scans
Full Changelog: v0.28.0...v0.29.0