| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-05-07 | 2.3 kB | |
| v2.9.21 -- Perf wins + BOQ custom columns on resources + BIM error visibility (#113) source code.tar.gz | 2026-05-07 | 458.7 MB | |
| v2.9.21 -- Perf wins + BOQ custom columns on resources + BIM error visibility (#113) source code.zip | 2026-05-07 | 460.4 MB | |
| Totals: 3 Items | 919.2 MB | 0 | |
Highlights
Backend perf
ORJSONResponseis now the default response class — ~5–10× faster JSON serialisation on dict/list payloads across every endpoint. orjson was already a base dep.Cache-Control: max-age=31536000, immutableon hashed/assets/*,no-cacheon the SPAindex.htmlfallback — repeat-visit page loads now hit the network only for a small revalidation ofindex.htmlinstead of re-downloading ~2 MB of JS/CSS.
Frontend perf
buildGeocodeQueryextracted to its own module so consumers likeDashboardProjectsMapno longer side-effect-import the ~220 KB maplibre CSS into the boot bundle.
Project detail UX
- Weather forecast laid out in 3 rows on tablet/desktop (was 2) —
sm:grid-cols-6. - Map height now tracks the weather block via
grid items-stretch+h-fullinstead of a fixed 32rem; falls back to fixed height when weather is hidden.
BOQ custom columns
- Text/number custom columns now inherit the parent position's value on resource sub-rows. Previously empty cells. Resource cells render the inherited value read-only with italic + muted styling so the user can tell it's not editable in place — to change a custom value, edit the position row.
- Derived
resource_sumandpercentage_of_unit_ratecolumns now render per-resource values. A resource row whose_resourceTypematches the column'sresource_rolerenders its ownqty × ratecontribution (resource_sum) or its share of the parent's total resource sum (percentage_of_unit_rate). editablepredicate now blocks resource + add-resource rows so silentvalueSetterfailures stop happening.
BIM viewer — closes #113
- Geometry-load failures now surface in the UI as an amber banner with the error message and a Retry button. Previously the catch handler logged to console only and the user saw an empty canvas with no signal. Covers stale-token 401, redeploy 404, malformed GLB/DAE, OOM during BVH build.
Install
pip install --upgrade openconstructionerp
Verify
VPS deployment: https://openconstructionerp.com (live, /api/health returns 2.9.21)
PyPI: https://pypi.org/project/openconstructionerp/2.9.21/