TRACEBUILD3.182
What's new

Every version of TRACEBUILD, newest first.

Currently 3.182 - released 2026-09-04. Written for the estimator, not the compiler.

3.182 #

Honest measurement, hardened accounts groundwork

  • The accuracy reference now demands real review. The clinic labeling tool no longer marks rooms verified just because you touched them: each room gets an explicit review tick, editing a reviewed room clears its tick, and an export only counts as reviewed truth when every room is ticked and you confirm it deliberately. Exports say plainly what they are - reviewed rectangle labels, not traced polygons.
  • Accuracy scoring is bound to its sheet. The scorer now checks that a reviewed reference names the exact source document, page, and scale it was drawn on, and that every reference outline is genuinely measurable - a mismatched or malformed reference fails instead of passing silently. The real-sheet accuracy check now runs in the standing verification battery on every build, at the reference sheet's own calibration.
  • Earlier release notes described the clinic consistency check as if it were independent accuracy; the 3.180 entry now says what it measured.
  • Accounts groundwork (not yet serving traffic): unknown account states are now refused rather than treated as active, status changes validate their input, the service reports its exact build version and database health, and deployments fail loudly unless the service proves healthy.

3.181 #

A hardening pass over everything the last releases touched

  • Multi-view sheets get their full wall-face graph. A coordinate-frame slip could silently strip the drawn wall lines from the face set on sheets with more than one plan view; those views now project with the same fidelity as single-view sheets.
  • Doorway actions are one clean step. Flipping a door's room - from the panel or by clicking the door on the plan, which previously skipped the area re-allocation entirely - changing a door's allocation, or switching the doorway policy is now a single undo step, always shows the room-by-room area change before touching a committed number, and cancel changes nothing.
  • Doorways in L- and U-shaped rooms side correctly. The crossing at an inner-wall door now reads the room's geometry at the opening itself, so a concave room can no longer gain or lose a sliver of the wall cavity.
  • Rotated measurements bill true on profile sheets. On sheets calibrated with different horizontal and vertical scales, rotating a length, wall, radius, or diameter markup now measures what you see - previously a rotated line could report the unrotated distance. Station labels agree.
  • Collaboration is harder to break. A malformed markup from a session peer can no longer crash page rotation or force export columns; peer data now passes the same checks as opened files.
  • Excel workbooks now carry the same area-basis declaration as the CSV; re-running the reference-sheet derivation no longer disturbs its record; and the account-migration and standby-server groundwork picked up session-safety fixes ahead of any cutover.

3.180 #

Wall-face areas are now the standard for new detections

  • New rooms commit on the wall-face basis by default. The wall-face projection introduced in 3.179 is now on: where a detected outline genuinely rides the drawing's walls, it commits snapped to the finished faces and says so ("gross (wall face)"); where it cannot - furniture-lined boundaries, scans - it stays a declared outline. Nothing already in your documents changes: existing quantities remain frozen exactly as measured.
  • Consistency-checked on our public clinic sheet before flipping: today's detection matches the sheet's machine-derived reference record on all 25 rooms with under 1% area drift and zero wrongly-committed quantities. That reference is derived from detection itself, so this measures pipeline stability, not independent accuracy - a human-reviewed reference and the accuracy scores against it are the next milestone.
  • The reference sheet's room-by-room record now carries both bases (wall-face and raw outline), so future accuracy scoring judges each detection against the basis it actually declares.

3.179 #

Areas you can stand behind - and corrections that stay corrected

  • Your corrections now survive every re-detect. Dragging a detected room's corner, moving it, or adding a vertex marks it as yours - the next Detect Spaces run leaves it alone, exactly like an accepted room. Committed rooms from older documents are never silently swept and recomputed either.
  • Every room area now declares what it stands on. New detections can commit on a wall-face basis - the outline snapped precisely onto the drawing's own wall faces instead of the raster-hugging trace - and every room is labeled honestly: "gross (wall face)", "outline (not projectable)", "legacy outline", or "as drawn". Existing quantities are frozen as-is and never recomputed. Exports gain a Basis column and an AREA BASIS declaration line - only when a document actually carries wall-face rooms, so existing exports are unchanged. (Wall-face commit ships OFF by default while we finish measuring it.)
  • Doorway areas are now an explicit choice. Measure ▸ Doorways: excluded / split / owner decides who counts the floor inside each doorway - a straight line across the opening at the finished wall faces, never a guess. Each door can override the sheet policy from the Detected Spaces panel, changing a committed room's number always asks first, and no square foot is ever counted twice.
  • Small closets recover more reliably: the high-resolution second look now respects rooms you have accepted or corrected, and sizes its search window to the sheet's scale instead of a fixed guess.

3.178 #

Doorways the detector finds for you - and asks about first

  • Auto-proposed doorway seals. Detect Spaces now reads the door swings drawn on the sheet - including the ones CAD software flattens into short line runs, which most plan sets use - and where a swing marks an opening the normal pass could not close (a jogged or cased doorway), it draws a short dashed red seal PROPOSAL there instead of guessing. Nothing changes in your takeoff until you accept: Measure ▸ Confirm proposed seals shuts every proposed opening and re-detects; Discard clears them. On our dense clinic test sheet this proposes nine real 3'-0" doorways, every one at the sheet's standard door width.
  • Doors now say how they were found. Each detected door records whether a drawn door swing corroborates it or it was inferred from a wall gap alone - 11 of the clinic sheet's 28 doors carry swing evidence - groundwork for the review workbench.
  • Proposals are conservative by construction: a swing only proposes a seal when its hinge and leaf both land on wall-verified jambs and the swing radius matches the opening - furniture arcs, counters and leader curves are rejected by that test.

3.177 #

A wall schedule you can trust at a glance

  • Walls that bound no room hold back for review. Trace Walls now checks every candidate against the rooms detected on the sheet: a wall that actually bounds a room keeps its confidence, while line-work that bounds nothing - cabinet runs, dimension rails, stray parallel geometry - commits as a weak candidate that a bulk Accept deliberately skips. On our two-view test sheet that kept every one of the 24 off-boundary candidates out of the one-click schedule while all real walls stayed confident. Nothing is deleted: weak candidates remain on the sheet for your review.
  • "Not a wall" sticks. Select a wall candidate that should never have been traced and discard it - the app remembers that judgment with the document, and no re-trace will propose the same line again. Bulk discards stay a clean sweep and record nothing.
  • Every traced wall now also records which detection pass produced it (drawn line-work or the solid-wall scan), groundwork for the coming review workbench.

3.176 #

Teach detection where a room really ends

  • Seal an opening. When detection keeps leaking a closet or side room through a doorway, drag one short line across the opening (Measure ▸ Seal an opening). The line snaps to the jambs, becomes a permanent barrier saved with the document, and the sheet re-detects immediately with the opening shut - every future re-detect respects it too.
  • Split an open plan. Where two areas share one open space - kitchen and living, or dining flowing into a hall - drag a room separator across the transition. Both sides re-detect as separate areas. A regular separator makes cautious FUNCTIONAL ZONES that never slip into a bulk Accept (you accept each side deliberately); a hard separator is for boundaries you are certain of and produces two full room candidates.
  • Seals show as solid marks and separators as dashed lines right on the sheet, undo like any edit, travel safely inside shared files, and one menu action clears a sheet's lines without touching the confirmed drawing-view layout.

3.175 #

Multi-view sheets detect one drawing at a time

  • No more double rooms from combo sheets. On a sheet that carries a floor plan beside its ceiling or electrical plan, Detect Spaces used to find every room twice - once per drawing. The app now reads the sheet first: it finds the separate drawing views by their printed titles, shows you what it found, and after one confirmation detects the floor plan alone. The ceiling view stays on the sheet, labeled and linked, and never double-counts a room. On our two-view test sheet this took the result from 12 rooms (5 of them duplicates) to the correct 7 - and ran four times faster, because each view is read at its own sharper resolution.
  • Sheets with one drawing are untouched. Single-view sheets detect exactly as before, with no prompt. When the app cannot confidently tell the views apart, it asks instead of guessing - and your answer is remembered with the document, so every re-detect after that is silent.
  • Verified against three real plan sets before shipping: the two-view farmhouse sheet (duplicates eliminated), a dense 32-room clinic sheet (identical results, zero prompts), and a residential permit sheet (identical results, one confirmation).

3.174 #

The app learns to read a sheet before detecting on it

  • Groundwork: one sheet, many drawings. A lot of construction sheets carry two or more drawings side by side - a floor plan next to its ceiling and electrical plan is the classic layout - and detection used to read the whole sheet as one drawing, so every room came back twice. The app can now recognize the separate drawing views on a sheet, tell a floor plan from a ceiling plan by its own printed title, and aim detection at the floor plan alone while keeping the ceiling view for reference. This ships switched off while it is validated against real plan sets; nothing changes in detection behavior yet.
  • Corrections that stick. The groundwork also includes a place for your own instructions to the detector - confirmed view layouts, sealed doorways, room dividers - that saves with the document, survives every re-detect, travels with shared files safely, and can be undone like any other edit. The tools that write these instructions arrive in the next releases.

3.173 #

Trace Walls you can actually read

  • Wall chips no longer bury the drawing. On a sheet with many traced walls, the per-wall type and length chips appear only for the wall you select; a small boxed trace (12 walls or fewer) stays fully labeled, and hand-drawn walls always keep their labels. Each chip also now sits at the true middle of its wall instead of piling up on the corner it shares with its neighbors.
  • Multi-view sheets classify sensibly. A sheet that carries two drawings - a floor plan beside a ceiling or electrical plan - used to grade nearly every wall as interior, because "exterior" was judged against one box drawn around both views. Each connected wall network is now judged against its own outline, so both views keep their real exterior shells. Small isolated fragments can never masquerade as their own building.
  • The Clear chip now covers everything detection makes. The always-visible chip at the bottom of the sheet counts detected walls, runs, and estimated fittings alongside spaces ("12 spaces · 75 walls on this sheet"), so one click sweeps a mis-fired trace the same way it already swept mis-fired rooms. Accepted and hand-edited items are never touched.

3.172 #

Detected takeoff is review-first, everywhere

  • Detected runs, traced walls, and estimated fittings are candidates until you accept them. Detect Runs and Trace Walls now propose their results the same way Detect Spaces proposes rooms: dashed on the sheet and excluded from every total, export, and estimate until you accept them (Measure ▸ Accept detected runs & walls). Untagged line-work - ink classed only by pen style - is marked weak and stays out of the bulk Accept, so generic linework can never slip into a bid unreviewed. Accepted items survive a re-detect without duplicating.
  • No floor is ever counted twice. Room recovery and the under-duct merge now enforce a strict ownership rule: a recovered or merged room that overlaps a room you already have is rejected outright instead of quietly double-counting the shared floor, and a boxed detection can no longer recover rooms outside the box you drew.
  • The public accuracy benchmark verifies itself before it ships. The downloadable bundle now runs both of its own checks before the site build can publish it (a missing file made the room-detection runner fail for downloaders of the previous version - the published wall numbers were unaffected), and the room runner now enforces the same geometry floors our CI enforces, so the download is never weaker than our own gate.
  • Stronger room-detection scoring. Room matching now uses an optimal assignment at any sheet size, precision counts phantom proposals against the score, and the scorer reports its matching method alongside the numbers.

3.171 #

A stability fix and a leaner, faster load

  • Room naming no longer stalls on scanned or text-labeled sheets. A crash in the auto-naming pass could stop it partway on drawings where rooms are named from the plan's own text; naming now runs to completion, and the safeguard that flags a merged room holding two room names works again.
  • Faster first load. The browser edition ships a leaner bundle by dropping 3D-viewer modules it never loads, so the app downloads and starts quicker with no change to features.
  • Privacy wording is consistent everywhere. Every page now says drawings are processed on your device *by default*, with the two optional cloud features (scanned-sheet OCR and symbol verification) clearly marked as opt-in.

3.170 #

Trust and first-run fixes from an independent quality review

  • The built-in sample plan finds its rooms. On the bundled demo drawing, room detection now keeps its four rooms (as reviewable proposals) instead of discarding them as site features. A sparse-but-labeled room is proposed for your review, never silently dropped.
  • Clearer privacy disclosure. The privacy policy now spells out the two optional cloud features in the browser edition (they stay off until you turn them on), exactly what each one sends, to which provider, and how it's retained. The desktop edition keeps everything on your machine.
  • Tighter cloud-usage safeguards. Cloud OCR now keeps each document's work fully isolated, never reuses another sheet's result, and checks a request's full cost against your monthly allowance before it runs.

3.169 #

Room detection that holds up on the hard drawings

  • Doors seal on angled and near-vertical walls. Rooms on either side of a doorway now stay separate even when the wall is drawn at a slight angle, far across a large sheet, or as two offset pieces - cases where the boundary could previously leak and merge two rooms into one.
  • Sharp on high-resolution screens. Door sealing now sizes itself to the drawing, not the display, so detection is just as accurate on a 4K laptop as on a standard monitor.
  • Reads scanned-plus-CAD hybrid sheets. On a sheet that mixes a vector title block with a scanned plan body, duct and pipe tags found in the scanned area are now included in the takeoff instead of being skipped.
  • Accepted rooms stay accepted. Once you accept a detected room, re-running detection on that sheet keeps it - it no longer disappears from the by-space list or your exports.

3.168 #

A takeoff you can trust - sharper reads, safer numbers

  • Bad outlines refuse to bill instead of billing wrong. If a measured area's outline crosses itself - a stray click that makes a bowtie - the takeoff no longer quietly reports a too-small number. It flags the shape ("self-intersecting - fix outline") and leaves it out of the totals until you fix it, so a mis-click can never slip a wrong quantity into a bid.
  • Re-running detection never double-counts. Running Detect Runs or Auto-Takeoff a second time on the same sheet - after fixing the scale, say - now refreshes cleanly instead of quietly adding a second set of the same quantities to your estimate.
  • More mechanical scope reads automatically. Round duct mains in metric sizes (Ø1000 and up) now recognize, and a wider range of duct and pipe tags classify correctly - while ceiling-tile grids, door and window callouts, and stray marks are kept out of your duct quantities.
  • Every detected room stays a review candidate until you accept it. Rooms found under ductwork are proposed for your review like every other detection - nothing prices until you say so.

3.167 #

Read the sheets a scanner flattened - and catch every duct tag

  • Read scanned drawings with cloud OCR (browser). A scanned or photographed sheet with no selectable text used to be a dead end for search and takeoff. TRACEBUILD Lite can now read it through TRACEBUILD's cloud OCR service, so the sheet's words become searchable and its sizes and tags feed the takeoff. Like cloud verification, it asks your permission first, sends only the page images (nothing else from your project), and meters a monthly page allowance. The desktop app keeps every OCR read on your own machine, and always will.
  • Metric duct sizes and crowded tags now read right. The takeoff recognizes duct sizes written with the true multiplication sign (750×350), four-digit metric sizes (1000×350), and service tags drawn tight against their leader lines - so more of the mechanical scope on a sheet turns into priced quantities without a hand correction. This one helps every read, on both Lite and Pro.

3.166 #

The second opinion comes to the browser

  • Verify uncertain - now in the browser too. The AI second opinion on shaky symbol matches no longer needs the desktop app. In the browser it runs through TRACEBUILD's cloud service: it asks your permission first, tells you exactly what it sends (small cropped images of the matches - nothing else from your project), and your monthly allowance is metered. On the desktop app it still runs entirely on your machine, and always will.
  • You stay in charge of your data. Cloud verification never activates on its own: it asks once, your yes is recorded to your account, and you can withdraw it any time. Decline and nothing is ever sent.

3.165 #

The legend knows its place - and the AI gets a second look

  • Mark the legend, count the plan. New "Legend region" on the symbol bar: drag a box around the sheet's symbol legend once, and every symbol search treats what's inside as reference drawings - a legend entry can start a search but never counts itself. The marked legend is saved with your project and shows as an amber outline.
  • A second opinion on shaky matches (desktop). New "Verify uncertain": the lowest-confidence matches each get a close look from the on-device vision model - ones it doubts are pre-marked rejected for you to review, one click restores any of them. Everything runs privately on your machine, and your own clicks always outrank the AI's.

3.164 #

Symbol counting you can review - and sweep across the set

  • Reject a match with one click. After boxing a symbol, every found match is now clickable - click a box to reject it (it turns red), click again to restore it. Add counts only what you kept. No more all-or-nothing threshold guessing.
  • One symbol, every sheet. New "Sweep all sheets" on the symbol bar: box a symbol once and find it across the whole set. Review each sheet's matches the same way, then one Add counts them all - one count per sheet, one undo.
  • Your reviews make it smarter. Every accept and reject you make is remembered in the project file itself - building your own private record that future detection improvements will learn from. It stays in your file, on your machine. Nothing is sent anywhere.

3.163 #

Detection reads more of your drawings

  • Hybrid sheets finally read. A scanned plan wrapped in a CAD border used to fool the app - the title block's text made it skip reading the drawing itself. Detect Spaces and Detect Runs now notice when the plan body has no real text and read it automatically. Sheet callout links and batch redact see those pages too.
  • Split tags on scanned sheets now classify. A pipe callout that reads as two words ("2"" then "CW") used to match nothing; the words are joined back into one tag first, so scanned plumbing and conduit callouts land in the right trade.
  • Curved runs are measurable. Curved homeruns and arced runs were invisible to Detect Runs - curves now flatten into measured line-work that follows the arc.
  • Short branches survive. A fixture drop or tee that connects to a real run is kept instead of being discarded as clutter by the minimum-length filter.
  • One OCR read per sheet. Reading a sheet once now serves Find, detection and the scope scan alike - no more re-reading the same page for every feature - and any sheet a detection has read becomes searchable with Ctrl+F.
  • Batch redact refuses half-checked files. If any page's plan body could not be searched, the file now fails loudly with the reason instead of quietly redacting only what was readable - you will never get a file that looks sanitized but isn't.

3.162.2 #

Small fixes

  • The + tab opens a start page. Clicking + next to your open documents now opens a fresh start page - drag the next set of prints straight in, exactly like your first one, or click Open to browse. The document you open fills that tab; no more jumping straight to the file picker.
  • Dark mode dropdowns are readable. Selection menus (like the Theme picker) used to open a white list with white text in dark mode. Every dropdown now follows your theme.

3.162.1 #

Door schedule fixes

  • Door counts now wait for your Accept. A freshly detected door is a review candidate, just like its room - it no longer appears in the exported door schedule (CSV, MTO, JSON, Takeoff PDF) until you accept the room it belongs to. Your exports and your saved file now tell the same story.
  • Stacked sheets keep their own doors. On multi-story sets, a door directly above another door (stairs, elevators, typical units) could be wiped or flipped by an action on a different floor. Every door now carries its sheet in its identity, so re-detecting one floor never touches another - including in files saved by earlier versions.
  • Flip Owner sticks through more. Your choice of which room a door counts under now survives page rotates, page deletes and reorders, and re-detects on scanned sheets - not just a save and reload.

3.162 #

Detect Spaces now counts your doors

  • Every opening becomes a door you can count. After Detect Spaces finds the rooms, it now turns each doorway into a schedulable door - counted once, under the room it serves. The Detected Spaces panel gains a Doors section with a live count, and each door draws a small swing marker on the plan, tinted to match its room.
  • One-click Flip Owner. A door between two rooms belongs to one of them in the schedule. Click the door on the plan, or the flip button in the panel, to change which room it counts under. Your choice sticks: it survives a save and a re-detect.
  • The door schedule ships in your exports. The detected doors ride the estimate CSV, the MTO workbook (on their own Doors sheet), the takeoff JSON, and the Takeoff Summary PDF - a per-room door count you can hand a client. It works in the free tier with no pricing attached, and flattened or printed PDFs show the door markers too.
  • Counted once, even on double-line walls. A wall drawn as two parallel lines used to count each door twice; the two faces now merge into one door on the wall centerline, so the count matches the drawing.

3.161 #

A room's name can no longer hide its doubt

  • Sticky review flags. When detection doubts a room's SHAPE - its boundary barely follows walls, it claims an outsized share of the sheet, it leaks toward the exterior, or two different room labels sit inside it - that doubt now sticks to the room. Finding a printed name still labels it, but the room stays a dashed proposal until you accept it. Previously a confident-looking label could silently promote a doubtful shape into a hard quantity - the most expensive kind of wrong. Accepting a room in review is now the one action that clears the flag.
  • Same-named areas always stay separate. The last merge path that could glue two same-named areas (they touched across a paper-thin gap) is removed entirely, so results no longer depend on render resolution. Three PHARM WAIT areas are three areas; rollups by name still sum the same.

Door swings and open-plan areas (from the hero-image review)

  • Door-swing floor now heals almost everywhere. The wedge repair used to give up on a whole room whenever its walls-only flood also swept an open neighbor; the enclosure filter now does that policing per pocket instead. On the demo clinic sheet, healed rooms went from 1 to 20 of 23.
  • Waiting areas split correctly. The colonnade band that committed as one 218 SF blob is now CENTRAL WAITING, two LAB WAIT areas, PHARM WAIT, and FORMS WRITING - each named from the drawing.
  • Two-line labels read as one. "TRICARE" over "OFFICE" now names the room TRICARE OFFICE (five of them on the clinic sheet); "CENTRAL" over "WAIT." seeds the central waiting area. A modifier line joins its room-word line even when the modifier itself is not a room word.
  • Benchmark check commands are now read-only: verifying results no longer rewrites the results files (regeneration is an explicit separate step).

3.160 #

Detection stops reading spaces that aren't rooms

  • No more exterior "rooms." A hatched planting strip or walkway used to survive every filter and commit as a 750+ SF room - worse, a printed dimension figure ("250") inside it could become its *name*, which locked it in as confident. Three layers now stop this: a bare number can never name a room on a scanned/flattened sheet (a room name must contain a real room word); a new structural veto measures how much of a region's boundary actually follows wall vectors (site features are bounded by thin score lines, rooms by walls) - low coverage plus sparse ink drops the region, structural doubt alone demotes it to a dashed proposal you can keep or discard in one click.
  • Merged-room blobs get flagged, split, and shrunk. One detected "room" swallowing several real rooms (storage cells + corridor as one 400 SF "STOR 1") is the under-seeding symptom - the detector now: knows more label vocabulary (CORR, LATRINE, TLT, WAIT + prefix matching, so SUPERVISOR and RECEIVING count); reads stacked two-line labels ("PATIENT" over "ADMIN") as one name and one room; demotes any room claiming over 2.5x the sheet's median room to a reviewable proposal; and flags a room still holding two separated room-name labels the split missed. On the demo clinic sheet the storage blob split into its real rooms and every residual doubt is a dashed proposal.
  • Stairs stay stairs. Erasing stair treads (so the stairwell fills as one space) used to open the stair mouth into the corridor - the STAIR room then claimed the corridor too. The eraser now reseals each flight end where the drawing actually had ink, so the stairwell fills alone. The clinic stair shrank 33% back to its true walls.
  • Your corrections stay yours, twice over. Re-running detection already preserved edited rooms; now a fresh find that overlaps one of your edited rooms is skipped entirely (no double-counted floor), and the naming passes never rename or recolor an edited room.

3.159 #

Space labels that stay out of your way

  • No more black boxes. Space and area labels are now light chips - white with the room's own color as a border and dark text - instead of near-solid dark boxes that hid the drawing under them. A label that genuinely cannot fit its room renders as a small colored dot instead of spilling over the neighbours. Exports match the screen.
  • A visible Clear button. Once a sheet has detected or click-filled spaces, a chip appears bottom-center: *"N spaces on this sheet - Clear"*. One click sweeps them (undoable; your edited detections are kept). No more hunting the Measure menu.

Room Fill can't flood the sheet anymore

  • A click in a not-quite-enclosed room used to paint the entire page and commit a page-sized square-footage figure. The fill now recognizes a leak - it reaches the sheet border, spans the whole sheet inside the printed border frame, or covers an implausible fraction of the page - and tells you the room isn't enclosed instead of committing a phantom area.

Door swings finally count as floor

  • Detected rooms now include the floor under each door swing. The door glyph (leaf + arc) walls that wedge off from the room flood; a per-room reclaim pass reopens it - and only it: a reclaimed pocket must be fully enclosed by walls, the room, or a doorway, so the fix can never grow a room into a corridor.
  • Room Fill gets the same treatment: the door leaf no longer masquerades as a wall (real walls form a connected network; a leaf's swing tip floats free), so the swing wedge fills with the room.

Re-run detection now preserves your edits

  • The invariant. A detected markup you have edited - moved, renamed, re-costed, changed the trade or tag on - is never removed or overwritten by re-running the detector. The old behaviour swept every detected:true markup in the region regardless. If you correct 8 rooms and re-run Detect Spaces to catch a missed one, your 8 corrections survive.
  • Sweep predicates on Detect Spaces, Detect Runs (every trade variant), and Trace Walls all now skip a userEdited:true markup. The detector naming its own finds does not count as your edit, so Clear still sweeps pristine detections.
  • **Measure ▸ Clear detected** also preserves edited items and reports the count kept, so a sledgehammer on this sheet cannot wipe your corrections.
  • Rejection tombstones are wired in the store (per-page, persist through save/reload/tab-swap/page-reorder). The UI that creates them - a sidebar Review section with bulk accept/reject/reassign and a [Review] button on the symbol bar - ships next release.

3.158 #

What's new page + Help ▸ What's New in the app

  • New What's new page on the marketing site (/whats-new), linked from the header pill and the footer's Company column. Every shipped version, newest first, written for the estimator.
  • Help ▸ What's new in the app opens a reading modal with the latest four versions. A small ! dot appears on the version chip in the header when there's something you haven't read yet - click the chip (or Help ▸ What's new) to open, and the dot clears.
  • Single source of truth: repo-root CHANGELOG.md (Keep a Changelog format). scripts/build-changelog.mjs regenerates the marketing page + the app data on every web build, so a version bump plus a changelog entry updates both surfaces together.

3.157 #

Civil / sitework - rebar, polish, and a hardening pass

  • Rebar (concrete reinforcing) is now a first-class trade. ASTM #3 through #18 bar weights, per-ton pricing, and a slab-mat area (#4 @ 12" EW etc.) that explodes straight into fabricated-steel tonnage. New Measure ▸ Civil ▸ Rebar weight readout: pick a bar size and the selected runs report LF + tons on the spot.
  • Earthwork results panel replaced the terse status line - Average-end-area and grid/borrow-pit each open a cut / fill / net table with a surplus-or-import hint and a one-click Export CSV of the summary.
  • Flexible profile calibration - the H/V picker now has a Custom - 1 in = … ft entry per axis, so profile verticals like 1"=5' (not in the preset list) work without a workaround.

Correctness - 20 defects fixed from an adversarial review of my own recent work

  • Bid-schedule pay quantity no longer includes earthwork swell/shrink (loose CY stays in the loaded unit price, plan quantity is bank neat-line).
  • A per-ton item paired with a measured geometry that has no density (volume) or weight-per-foot (length) contributes zero and shows a wrong unit - not billed chip, instead of silently billing the raw ft³ or LF as tons.
  • Rotating a profile sheet ±90° now swaps the horizontal and vertical scales along with the geometry - every length on the rotated profile reads the right axis.
  • Report-area-in ▸ Apply to all pages patches only the display unit; other pages' calibrations are left alone (a mixed-scale set no longer gets rescaled).
  • Cross-section station field accepts station notation ("10+50") - not just plain feet.
  • Trench shoring / trench box now bids for a 5-ft trench, matching OSHA (previously strictly greater than 5).
  • Grid earthwork paste rejects ragged or non-numeric input instead of silently mis-placing nodes.
  • Station labels like "10+100.00" (the carry overflowing) can no longer be produced.
  • Sheet-extents label on a profile page reads per-axis (was the geomean, ~3× off in the reported width and height).

3.156 #

  • Civil delivery tools wired: Measure ▸ Civil menu with Bid schedule (CSV), Average-end-area earthwork, Grid cut/fill, Stationing, plus a Profile scale (H/V) calibrator and a Detect sitework one-click bundle.
  • New Cross-section property (Cut/Fill + station) on Area markups so the AEA report can roll them up.
  • The full civil roadmap (Tiers 1, 2, 3) is now user-facing.

3.155 #

  • Grid / borrow-pit earthwork core (gridVolume - the classic (a/4)(Σh₁+2Σh₂+4Σh₄) with cut and fill kept separate).
  • Stationing module: parse & format 10+50 notation, station values along an alignment by real arc length, station-equation-aware physical length.

3.154 #

  • Trench assembly - a buried pipe run explodes into trench excavation, bedding, and backfill CY based on width × depth.
  • Bid-schedule export (DOT pay-item schedule with plan quantities, agency pay-item codes, and per-line provenance back to the source markups).
  • Structure base + additional depth per vertical foot for manholes / inlets.
  • Average-end-area earthwork core (cut/fill CY between stations, kept separate - no netting at the section).

3.153 #

  • Civil area units: report area in acres, hectares, SY, or the default square units of your calibration - the priced quantity stays canonical.
  • Div 31 / 32 / 33 site-work cost seed: excavation, structural fill, riprap (per ton), asphalt lifts, concrete curb & gutter, a paving assembly, and the civil symbol pack (drop inlet, utility pole, sign, valve box).
  • Tons-via-density on volume takeoffs (riprap and similar).
  • Bank / loose / compacted volume state with swell or shrink percent, on the property bar for any volume markup.

3.152 #

  • Metric georeference reports the sheet unit correctly (previously an mm-calibrated sheet reporting metres was scaled 1000× by the georef).
  • Share and account rate-limiter hardening (fail-closed timing, per-IP + per-account buckets on the auth endpoints).

3.151 #

  • Georeferenced coordinate placement now reconciles the page scale to the georeference it derived, so a real-length measurement equals the real length you typed.

3.150 #

  • Room Fill / Detect Spaces reclaims the floor area under door swings and wall-mounted fixtures (toilets, sinks, water closets) - the gross-area rooms report matches the built floor SF instead of subtracting the swing arc.

3.149 #

  • Self-service account management: Profile page (change your name and email), Change password, and Delete account with confirmation (soft-delete for 30 days, then purged).

3.148 #

  • Detect a fixture button in the symbol picker - pick a symbol from the plan, auto-detect every match on the current sheet.
  • Set wall height now works per wall-type or all-walls in one gesture, from the wall property bar.

3.147 #

  • On-device vision AI: the bundled Qwen3-VL-4B lets the estimator ask the drawing natural-language questions ("what's on this sheet?") without shipping any pixels off the device.
  • Symbol bounding boxes are tighter (fewer over-wide false positives on dense trade sheets).
  • Rotated vertex editing on measurement polygons (was previously flipped on rotated pages).
  • 23-item punch list from an external design review - reworked and shipped.