| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| SHA256SUMS.pem | 2026-05-23 | 3.6 kB | |
| SHA256SUMS.sig | 2026-05-23 | 96 Bytes | |
| SHA256SUMS | 2026-05-23 | 109 Bytes | |
| openconstructionerp-4.5.0-py3-none-any.whl | 2026-05-23 | 19.9 MB | |
| README.md | 2026-05-23 | 5.5 kB | |
| v4.5.0 -- PropDev complete + BIM Walk fix + Geo Hub deeplinks + SMTP forms source code.tar.gz | 2026-05-23 | 249.5 MB | |
| v4.5.0 -- PropDev complete + BIM Walk fix + Geo Hub deeplinks + SMTP forms source code.zip | 2026-05-23 | 252.3 MB | |
| Totals: 7 Items | 521.7 MB | 0 | |
OpenConstructionERP v4.5.0 — Property Development complete, BIM Walk fix, Geo Hub deeplinks, SMTP forms
A 75-commit feature wave on top of v4.4.1. Major themes:
Property Development (PropDev) — deep rebuild
- Lead → Reservation → SPA → Handover → Warranty end-to-end clickflow now works without a glitch. SPA conversion auto-creates the primary ContractParty; Payment Schedule FSM allows
pending → paidtransitions. - Plot create form uses the project context — no more "pick project" dropdown.
- House Type catalogue — searchable picker over all 180+ ISO countries plus a Custom region (free text) escape hatch for cross-border scopes (DACH, EU-wide, GCC, …). Full 6-section pro modal with live preview. New fields: country_code, region_label, bedrooms, bathrooms, parking_spots, floors, currency.
- Sub-entity tabs for Phases, Blocks, Brokers, Price Matrix, Escrow with full CRUD, bulk plot assignment, dry-run for matrix apply.
- Dev-wide Warranty Claims with handover_id, source_snag_id, severity, photos, sla_deadline.
- SnagsBlock per handover with photo upload, promote-to-warranty, cross-link to Punchlist.
- Compact icon-button tab navigation — fits in any viewport width.
- Document Templates — full upload UI, 3-col grid, preview, variables modal, per-development default.
- Validation Rules moved out of PropDev settings (it was a system-wide concern misplaced under PropDev).
- Fixed P0 page-breaking "Illegal constructor" error caused by missing
Lockimport in PropertyDevPage (JS was resolving towindow.LockWeb Locks API).
Contacts ↔ PropDev module bridge (new)
- Leads and Buyers can now point at a Contact via
contact_idFK. Idempotent tagging stampsmodule_tagsso a contact created from PropDev is recognisable everywhere. (Migration v3117.)
Geo Hub (Cesium 3D Tiles)
- Three-mode picker (Global / Project / Development) with live HUD: cursor lat/lon, altitude, scale bar, north arrow.
- Anchored Projects rail driven by
GET /api/v1/geo-hub/projects. - Deeplinks via
?model=,?plot=,?dev_id=,?phase=,?block=. - Pin layers wired for HSE incidents, Punchlist items, Daily Diary entries.
- "View on map" CTAs added throughout BIM, PropDev, Daily Diary.
BIM
- Walk mode keyboard handling fixed — WASD/Arrows/Space/PageUp/PageDown/Ctrl/Shift now intercepted via capture-phase listeners and
preventDefaulton every walk key. No more scrolling the page or moving sidebars while you walk through a model. - Bottom Models panel is collapsible.
- Toolbar relocated next to the ViewCube.
- Section Box and Measure tools polished.
- Converter install progress bar — live file-count + MB done indicator on
/bimand/dwg-takeoffwhile DDC RVT/DWG converters install.
Marketing site forms → our own SMTP
/inquiry,/subscribe,/partners-applynow routed through the deployment's own Python service (marketing-site/demo-register-api.py) via Caddyhandleblocks →:8891.- Per-IP rate limit + honeypot + reused-identity gate.
- All forms fall back to
mailto:info@datadrivenconstruction.ioif SMTP isn't configured.
App shell polish
- Newsletter Subscribe button in the header next to Support Us (same h-8 px-3 sizing).
- WhatsNewCard — compact single-row carousel with 6 chip popovers; dismiss collapses to a small pill that re-expands on click.
- 8-step Product Tour spotlight overlay with ResizeObserver-guarded cutout.
- Sidebar Menu Editor at the bottom (before Add-module buttons), flex-1 width matching, with hidden-modules localStorage.
- Property modules grouped into a dedicated sidebar section.
Reliability / correctness
- Fresh-install alembic shortcut (env.py + v3112 bootstrap) —
create_all+ stamp at heads when the DB is blank. Belt-and-suspenders fix on top of v4.4.1's [#154] hotfix. - Network errors filtered from auto-bug-report picker (#155) —
getLastErrornow prefers level=error over warning AND drops handledFailed to fetchblips. - Daily Diary "View on map" missing
useNavigatehook fix. - Meetings: import-summary IDOR closure, document_ids cross-tenant check, non-ISO due-date coercion,
meeting.action_items_createdevent with stableevent_key.
Backend
- Alembic migrations: v3112 bootstrap, v3113 plot_extra+warranty_enrich, v3114 merge, v3115 dev_extra (country_code, lat/lon, dev_type, sales_target, people fields), v3116 custom_templates, v3117 contact_bridge, v3118 house_type_extra, v3119 parking_spots.
- New
PropertyDevCustomTemplatemodel (v3116). - New
Contact.module_tagsJSON +custom_properties(v3117).
Frontend
- New shared
<CountryCombobox>over 180+ ISO countries with type-ahead (English + local-script names) and freeform custom-region mode. - New
frontend/src/shared/lib/countries.tsdataset. - New
<WhatsNewCard>,<ProductTour>,<SubscribeButton>,<ConverterInstallProgressBar>,<HouseTypeEditModal>.
Migration & operator notes
- VPS DB path stays
sqlite:////root/OpenConstructionERP/data/openestimate.db(4 slashes). - Alembic still single-head:
v3119_propdev_house_type_parking_spots. rm -rf backend/app/_frontend_dist dist/before building the wheel (PWA precache hashes go stale otherwise).- Marketing forms degrade gracefully to
mailto:when SMTP isn't wired — operators can stand up the form endpoints at their leisure.
— Artem & contributors