Download Latest Version OpenConstructionERP_12.2.0_x64_en-US.msi (375.0 MB)
Email in envelope

Get an email when there's a new version of OpenConstructionERP

Home / v4.2.2
Name Modified Size InfoDownloads / Week
Parent folder
SHA256SUMS.pem 2026-05-21 3.6 kB
SHA256SUMS.sig 2026-05-21 96 Bytes
SHA256SUMS 2026-05-21 109 Bytes
openconstructionerp-4.2.2-py3-none-any.whl 2026-05-21 13.7 MB
README.md 2026-05-21 2.2 kB
v4.2.2 -- i18n + a11y + event flow + N+1 polish source code.tar.gz 2026-05-21 248.6 MB
v4.2.2 -- i18n + a11y + event flow + N+1 polish source code.zip 2026-05-21 251.2 MB
Totals: 7 Items   513.4 MB 0

Round 2 of the post-v4.2.0 audit-driven polish releases. No DB migration; drop-in upgrade from v4.2.1.

Fixed

  • i18n: 327 missing admin.* keys backfilled across 23 locales — Permissions Matrix + Audit Log now render correctly everywhere (ar, bg, cs, da, es, fi, fr, hi, hr, id, it, ja, ko, mn, nl, no, pl, pt, ro, sv, th, tr, vi, zh). DE + RU already native; EN unchanged. 24 × 54 = 1,296 inserts.
  • a11y: focus management. New useFocusTrap hook captures document.activeElement, traps Tab/Shift+Tab cycling within the container, restores focus on cleanup (Escape / backdrop click / explicit close). Wired into ConfirmDialog + WideModal.
  • Sidebar landmark. Now wrapped in <nav role="navigation" aria-label="Main navigation"> — screen readers can identify and skip-to it.
  • StatusDot color-only-meaning gap. Component now always renders a screen-reader-only span with variant name fallback when no visible label is supplied. Wrapper got role="status".
  • BOQ N+1 query loops. _subtree_height now does a single list_all_for_boq + in-memory parent→children index. apply_quantity_links uses a new bulk PositionRepository.list_by_ids.

Added

  • 3 previously-orphan event subscribers wired:
  • qms.ncr.mirrored_from_hse → notifications dispatcher
  • procurement.supplier_rating_update → procurement events log stub (until supplier-rating model lands)
  • contracts.risk_register_update → risk events subscriber (creates risk row with metadata.source_incident_id idempotency, PostgreSQL-gated)
  • Detached-task error visibility. New _log_failures() helper in app.core.events attaches a done-callback that logs failures at WARNING with traceback. Wired into procurement._on_tender_awarded and schedule._on_field_report_submitted.

Removed

  • Unused FloatingChatButton export
  • Unused react-is frontend dep (still pulled transitively by recharts / ag-grid / testing-library)
  • v4.0 scratch artefacts: _capture_v4_news.mjs, _capture_v4_v2.mjs, _verify_cards_layout.mjs, tmp/check_full.py, tmp/check_vi.py

Test summary

299 BOQ + 198 events / risk / procurement / qms / hse / notifications + 18 a11y + 14 admin-i18n — all green.

Source: README.md, updated 2026-05-21