Home/ News/ v6.10.0 - Field payroll, project controls, compliance gates
Release 2026-06-05 ~6 min read

v6.10.0 - From the crew's hours to the ledger,
in one place.

This release closes the TOP-30 competitive backlog and the connective tissue around it. Field time and attendance now runs a real payroll lifecycle with idempotent posting to the general ledger. A cross-module project-controls dashboard reads the health of a job at a glance. Compliance is enforced at the gates where it matters, not buried in a report after the fact. And a wave of opt-in AI agents drafts, tags and answers, always leaving the decision to a person.

v6.10.0

The shape of this wave is breadth. Where the recent 6.8 and 6.9 releases were focused fixes, v6.10.0 brings in the last of the TOP-30 features that the larger commercial systems have and we did not, and it wires the modules to each other so a number entered on site flows all the way to the books. Everything here was verified against the live backend, the Alembic head is a single revision, the frontend type-checks clean and the backend is ruff clean.

What landed

Field time and attendance with a payroll lifecycle

Hours captured on site roll into a payroll batch that moves through draft, submitted, approved and posted. Posting writes to the general ledger once and only once, so a retried post lands on the same journal entry instead of booking the cost twice. Labour cost rolls up against budget by trade.

Cross-module project-controls dashboard

One screen pulls cost, schedule, quality, safety, risk and changes into a row of traffic-light KPIs, each with a drill-down to the records behind it. Read the colour, click the amber tile, land on the overruns or the slipping activities that turned it amber.

Compliance enforced at the gates

Compliance rule packs run at the contract signing gate, so a contract cannot be signed while a required pack is failing. Documents are checked against ISO 19650 CDE suitability when their state changes, and inspection and test plans carry hold points that stop the work until released.

Vendor scorecards gating purchase orders

Vendor scorecards feed a prequalification gate on purchase orders. A hard-blocked vendor cannot receive an order, and a vendor with a lapsed or rejected prequalification raises a clear warning on the order. The scorecard is the record, the gate is the rule, and the buyer sees both before committing spend.

AIA G702 and G703 payment applications

Owner billing in the AIA format. The application and continuation sheet are built from the schedule of values, retention is handled and the lifecycle is tracked. Gated to US, Canada and Australia projects where the format is the norm, and out of the way everywhere else.

A wave of opt-in AI, human-confirmed

A progress-report narrative agent drafts the written summary for a person to edit. The no-code agent builder gained event and schedule triggers with a run monitor. Photo intelligence reads EXIF dates, suggests tags and flags defects. A document assistant answers questions over a project and points back at the source.

Subcontractor and client portal

A subcontractor submits a payment application through a magic-link portal scoped to their own agreement, and a client reads their project's progress reports through their own link. Both are protected by row-level security per agreement, so a portal user only ever sees the rows that belong to them.

A desktop launch that survives database recovery

After an unclean shutdown the embedded database can need a long crash recovery. The launcher now waits it out and drives a six-step boot checklist on the splash screen, so a launch that fails turns the failed step red with the error inline and a copy button rather than showing nothing at all.

From the crew's hours to the ledger

The thread that ties this release together is field payroll. A crew lead records hours on site, even with no connection, and the field app holds them in a durable sync ledger where every entry has its own id. When the phone reconnects and replays its queue, the ledger dedupes the replay, so a shift that was already sent cannot be counted twice. Those hours roll into a payroll batch, the batch is reviewed and approved, and posting books the labour cost to the general ledger exactly once. Labour cost then shows up against budget by trade, so the gap between what was planned and what the crew actually cost is visible without exporting anything. That is the chain that the larger systems sell as a separate product, running end to end inside one open platform.

Compliance where the decision is made

The compliance work in this release is deliberately placed at the gates rather than in a report you read afterwards. A contract will not sign while a required rule pack is failing. A document will not move to a CDE suitability under ISO 19650 that it has not earned. An inspection and test plan holds the work at a hold point until the point is released. A hard-blocked vendor cannot receive a purchase order, and a vendor whose scorecard has not cleared prequalification raises a clear warning on the order. None of these are advisory. They sit on the action that commits something, so the rule is enforced at the moment it matters instead of flagged once the commitment is already made.

AI that drafts, never decides

Every AI feature in this release is opt-in and leaves the final call to a person. The progress-report agent drafts the narrative for a reporting period and waits for review, it does not send. The no-code agent builder now lets an agent run on an event or on a schedule, with a run monitor that shows each execution and its result, so an operator can see exactly what ran and what it produced. Photo intelligence reads the capture date off a jobsite photo, suggests tags and flags a likely defect with a severity, all as suggestions. The document assistant answers questions over a project's files and always points back at the source so the answer can be checked. We also closed an access leak where the assistant's search tools could read across projects, and they are now scoped to the project in context.

Quality fixes riding along

Scheduled reports now actually email their recipients on the cadence they were set to, after a stretch where the schedule existed but never dispatched. Backup restore no longer runs a destructive replace when merge was chosen, so choosing merge adds the restored rows alongside what is already there instead of clearing it first. The user-invite flow honours the role chosen in the invite rather than dropping the new user onto a default role. Small, but each one was a real surprise to someone who hit it.

Security upgrades

We bumped vitest to 4.1.8, which clears the critical Dependabot alert along with the vulnerable nested copies of vite and esbuild it carried, updated react-router-dom to 6.30.4, and patched the Rust tar crate to 0.4.46. The npm audit is clean after this. Two remaining transitive Rust advisories are pinned by the current Tauri toolchain with no resolver-reachable patched version and no runtime exposure on the Windows desktop build, and are left for a future Tauri upgrade.

Upgrade

pip install --upgrade openconstructionerp

The Alembic head is a single revision and the normal install path creates the schema from the models and stamps it at the latest version. The desktop installers for Windows, macOS and Linux carry the hardened launch that survives a long database recovery and shows its boot progress. If you run an external PostgreSQL through DATABASE_URL, nothing about that connection changes. Questions or trouble upgrading, write to info@datadrivenconstruction.io.

Try v6.10.0 today.

Live demo in your browser, or self-host in five minutes. AGPL-3.0, no signup required.