Foundations get a polish pass right after they land. v5.1.0 is that pass for the Wave 1 Deep-Coordination work — the notification dispatcher, the canonical file version table, the universal audit trail. No new features; the surface that shipped with v5.0 is now hardened, typed and exercised end-to-end on a real install.
What got tightened
TypeScript strict — full surface
Five strict-mode fixes across the new dispatcher hooks, version pickers and
activity-log table. noImplicitAny,
strictNullChecks and noUncheckedIndexedAccess on
everywhere these surfaces are touched. tsc --noEmit clean.
Dispatcher hardening
The unified notifications dispatcher now retries transient SMTP failures with exponential backoff, de-dups events within a 30-second window, and logs every send/fail attempt into the universal audit trail. Port 465 SSL and 587 STARTTLS both certified against a real Postfix relay.
751 v1 rows backfilled
Every existing BIM model, BOQ import, doc-template attachment and BCF 3.0
container on the live demo VPS now has a v1 entry in
oe_file_version. New uploads from v5.1 land as v2+ with full
parent linkage. Nothing pre-v5 is left without a history row.
Why a separate release
Wave 1 of Deep-Coordination touches infrastructure under all 116 modules. The v5.0 release got that infrastructure into people’s hands; v5.1 shows the same surface again, this time strict-typed on the frontend, retry-safe on the backend, and seeded with real history rows on the live demo. From v5.1 forward, every new module ships into a Wave 1 environment that is fully tested rather than just functionally complete.
Upgrade
pip install --upgrade openconstructionerp && \
alembic upgrade head && \
systemctl restart openconstructionerp
Alembic head v3144 is unchanged from v5.0 — the v1-row backfill is
a one-shot management command that runs idempotently on first start. Existing
installs catch up automatically.
Try v5.1.0 today.
Live demo in your browser, or self-host in five minutes. AGPL-3.0, no signup required.