TRACEBUILD3.247
What's new

Every version of TRACEBUILD, newest first.

Currently 3.247 - released 2026-09-27. Written for the estimator, not the compiler.

3.247 #

Flattened copies and share links no longer carry hidden data from your working file

  • A privacy fix for anyone who keeps a price book in TRACEBUILD. When you save your working file, TRACEBUILD tucks your editable takeoff inside it, along with the price book you had open: items, assemblies, crew rates and markups. That is on purpose, so the file reopens exactly as you left it. The problem was on the way out. A flattened copy (Export flattened, a share link, a copy saved to Dropbox, Google Drive or OneDrive, and the stamped, signed, encrypted and reduced copies made the same way) was supposed to leave that tucked-away data behind. It never showed on a sheet and no PDF viewer displayed it, but it was still inside the file, where anyone who took the file apart with the right tools could read it. Batch flatten had the same gap for a working file with no markups on it.
  • Starting with this version, every flattened copy is cleaned out before it leaves: the takeoff data, the price book, pages you deleted earlier and any other leftover pieces of the working file are gone, and what remains is exactly what is on the sheets. The drawings, your markups, form fields and bookmarks look the same as before, and the files are often a little smaller.
  • If you shared flattened files from a priced project before this version, treat them as if your price book traveled with them. Your saved working file, the one you reopen to keep editing, still carries its takeoff and price book as it always has, so send the flattened copy, not the working file.

3.246 #

After you detect rooms, saving, undo and the takeoff panel keep working

  • A fix for a stall that could follow Detect Spaces. On a busy floor plan, once the rooms were found, the app could quietly stop keeping up with the rest of your session: an edit you made afterwards (renaming a room, drawing an area, adding a count) was not added to Undo, did not refresh the Takeoff panel, and was not picked up by auto-save, so a crash could lose work you thought was protected. The edits themselves were kept, but the panels could show stale names and totals until the file was reopened. Now detection always finishes cleanly, and every edit after it undoes, shows in the takeoff and auto-saves the way it should, however many times you re-run detection.

3.245 #

Every website release is now checked automatically the moment it goes live

  • Internal reliability work. Each time a new version of the TRACEBUILD website or the browser app is published, it is now checked from the outside the moment it goes live, the way a visitor would see it: the site shows the version that was just released, the sign-in page and its bot check are in place, the app stays behind your account login, our internal test copy stays locked, and the standard browser security protections are on. If anything is off, the release stops right there and says exactly what is wrong, instead of waiting for someone to notice. It is plumbing, not a feature: no user-facing change, and nothing about your drawings or takeoffs behaves differently.

3.244 #

Groundwork for finding rooms on light-gray (screened) plans (off by default)

  • Mechanical, electrical and plumbing sheets often print the architectural floor plan in light gray underneath the trade's own linework. Detect Spaces reads that gray as blank paper, so those sheets come back with no rooms at all. This release adds the groundwork to recover them: TRACEBUILD can now recognize a light-gray floor plan from the drawing itself, re-read just that plan with a lighter ink setting, and keep the result only when it finds a convincing set of rooms. On a sheet it can confirm is a trade sheet it adds those rooms on its own; on any other sheet it asks first ("Recover screened architectural rooms?"). Every recovered room arrives as a proposal for you to review, never as an accepted quantity. It ships turned OFF, so nothing changes for anyone yet.
  • Also groundwork, also off: skipping the cells of schedules and tables drawn inside the plan area, so a door or equipment schedule is not taken off as a grid of small rooms. It stays off because it still mistakes parts of some floor plans, such as enlarged stair drawings and bands of grid lines, for tables.
  • Nothing here changes your drawings, your takeoffs, or the rooms Detect Spaces finds today.

3.243 #

The test suite now passes on a fresh copy of the code, on any machine

  • Internal reliability groundwork. TRACEBUILD's full test suite now passes from a clean, fresh copy of the code on any computer, not only the one it was written on. The project now pins how its text files are stored so line endings come out identical everywhere, and the suite no longer leans on a developer-only file that a fresh copy would not include. It is plumbing, not a feature: it keeps every future fix verifiable the moment it lands, on any machine. No user-facing change; nothing about your drawings or takeoffs behaves differently.

3.242 #

Symbol detection now has a quality benchmark that runs every release

  • Internal quality groundwork. TRACEBUILD now measures how well it finds and counts drawing symbols against a reproducible, deterministic benchmark, and checks that number on every build. It is the same discipline already used for wall detection: the corpus, the scoring, and the exact command all live in the repository, so the number is auditable rather than asserted. This lays the groundwork for smarter symbol detection down the road, so a future detector lands into ready-made accuracy gates instead of shipping unmeasured. No user-facing change; nothing about your drawings or takeoffs behaves differently.

3.241 #

See your shared links, when they expire, and revoke one to free space

  • My shared links. Every link you create is now remembered right in the Share dialog. Open the Share dialog and choose "My shared links" to see each one with its file name, size, the day you shared it, and the day it expires.
  • Know when the space comes back. Creating a link now tells you the exact date it expires, so you can see when its share space will free up on its own.
  • Revoke to free space now. Done with a link? Revoke it and its space is freed instantly, instead of waiting up to 30 days for it to expire. Revoking asks first, because it cannot be undone; a link that already expired can just be removed from your list.

3.240 #

Readable warnings, honest notes on damaged drawings, and big sets that stay light

  • Warnings you can read. The CAD warning dialogs (older DWG, "no units - calibrate", missing references or proxy objects, Drawing layers) and the scale pickers were nearly invisible in the dark theme. They are readable again in both themes.
  • Damaged drawings say so. When parts of a DWG saved by AutoCAD 2010 or newer are damaged and cannot be read, the status bar now says how many objects were left out and marks the import incomplete, instead of opening as if nothing were missing. In the desktop app you can try the converter instead.
  • Big sets stay light. Working through a whole set (Find floor plans, the Find index, Find by image, Scale the whole set, or just paging through) no longer builds up memory sheet after sheet. A 316-sheet set now stays around 100-200 MB instead of 2.6 GB, so large bid sets no longer risk crashing the tab.
  • Long splines are drawn in full. A very long spline used to stop partway along; it now follows the whole curve.
  • Dialogs keep your drawing safe. Keys no longer act on the drawing behind the Detect "which views?" dialog or the CAD-fonts dialog, Escape closes them, and a shape you are drawing can no longer be finished or edited from behind an open dialog.

3.239 #

Reliability, safety and polish fixes across the app

  • Saving. Ctrl+S in the web app now saves once (it could download two files), and File ▸ Save in the desktop app keeps your markups editable. Exporting a flattened PDF no longer marks your work as saved or removes its crash-recovery copy. A save that fails (for example because the file is open in another program) never damages the existing file and says why.
  • Protected PDFs. A PDF locked with a permissions (owner) password can still be viewed, measured and marked up; page edits, printing, sharing, signing and saving or exporting it now stop with a clear message instead of producing a file that will not open. Opening a PDF that needs a password no longer leaves an empty tab behind.
  • Large or damaged drawings. When a DWG or DXF is too large to draw in full, the status bar now says how much is shown and marks the import incomplete, instead of leaving the rest out silently. A small malformed DWG can no longer crash the app, and a drawing with an invalid coordinate opens with that object left out instead of failing.
  • Takeoff numbers. Custom-column totals count only measured items; bid-schedule quantities under 1 no longer round to 0; cost-library CSV imports understand percentages and point out suspicious waste values; cutouts inside notched areas are measured correctly; corrupt scales or coordinates in an imported file are rejected instead of turning totals into errors.
  • Exports. DXF and DWG exports of rotated or cropped PDF pages place your takeoff correctly; PDF-to-DXF no longer includes invisible clipping outlines (much smaller files for some sheets); DXF text keeps its text style; spreadsheet sheet names with special characters no longer break the workbook; every CSV and Excel save reports a failure.
  • Desktop app. Opening TraceBuild a second time brings the existing window forward instead of running two copies that overwrite each other's autosave. Signature checks now say when a document was changed after signing and never claim a signer's identity was verified; Certify signatures are marked "coming soon".
  • Detection. Library symbol matching works on large sheets, and Trace Walls / Detect Spaces say when a sheet hit their work limit. Long searches can be stopped.
  • Keyboard and dialogs. Shortcuts no longer act on the drawing behind an open dialog, Escape closes every dialog, and dialogs now carry proper names and roles for screen readers.
  • Accounts and sharing (web). Admin rights now require a verified email address, sign-in limits are stricter, and the app sends stronger security headers. Share links for file names with accents or non-Latin characters are fixed in the server code and take effect with the next server update.

3.238 #

Save As ▸ DWG (Preview)

  • You can now save the current page as a DWG file (R2000 format), in both the desktop app and the web app: choose Save As ▸ DWG (CAD, R2000 format). It is marked Preview while we finish testing it in other CAD programs.
  • It carries the same drawing as the DXF export. From a drawing you opened as a DWG or DXF file, that means lines and polylines, arcs, circles, ellipses, splines, solid hatches and text, as real CAD objects on the drawing's own layers and units. From a PDF page it is the page's line work (the page's text is not exported as editable text, as in the DXF export). Tick "Include my takeoff" to add your measurements, areas, counts and notes on their own TB-* layers.
  • A few things are simpler in DWG than in DXF: colours are stored as the nearest standard CAD colour (a colour that already is one stays exact), patterned hatches are saved as their outlines, and characters outside Western European text are stored as codes. After each save the status bar lists exactly what was carried and what changed.
  • Every DWG file passes TraceBuild's own structural check before it is offered; if a file does not pass, nothing is saved and TraceBuild tells you so. If the file cannot be written (for example, the target is open in another program), no half-written file is left behind. DWG export has not yet been tested in other CAD programs, so if yours cannot open a file, use DXF, which remains the most compatible choice.
  • Suggested file names for DWG and DXF exports now end in "-tracebuild" (for example plan-tracebuild.dwg), so an export never suggests overwriting the drawing you opened.
  • When you export a drawing you opened from a DWG or DXF file, the DXF status line is now correct: splines and hatches are exported as real CAD objects (the old message said they were flattened), and it now counts them. Export messages stay on screen long enough to read.
  • AutoCAD and DWG are trademarks of Autodesk, Inc.; TraceBuild is not affiliated with or endorsed by Autodesk.

3.237 #

Damaged or deliberately malformed drawings no longer freeze TraceBuild

  • DWG and DXF files that used to freeze or crash TraceBuild now open in seconds - every such file we built, in both formats. That includes a hatch outline or arc with an impossible angle (a billion degrees, or "infinity"), a hatch outline made of tens of thousands of looping curves, an absurd block array (billions of copies, or a million copies of one very large spline, outline, hatch or note), an extreme spline, and a huge block of text.
  • Such values are drawn the way AutoCAD shows them (an arc angle is taken as the same direction within one turn), or, when they cannot be drawn at all, left out. Past a work limit, the extra copies of a repeated block are left out (for repeated text, only the extra text copies - lines and shapes still draw). Ordinary drawings open exactly as before.
  • Saving such a drawing, or exporting it as a DXF, now finishes too instead of running out of memory or running for minutes (a 260-byte file that expands to 400,000 overlapping lines took about five minutes to save; it now takes a few seconds). Saved files are exactly as before. Very large drawings can still take a while: a drawing with a hundred thousand separate text labels can take tens of seconds to display.
  • Two DWG details are fixed: text such as "ؽ PIPE" in an AutoCAD 2000 drawing now reads correctly (it could turn into a different character), and a hatch's fill style (normal, outer, or ignore islands) now carries over when a DWG is exported to DXF.

3.236 #

DWG export groundwork: text, true curves and solid fills (nothing new to see yet)

  • Behind the scenes, TraceBuild's own DWG writer (not yet connected to Save As) can now write text, true curves and solid fills. Labels and notes go into the DWG as real AutoCAD text (single-line text and multi-line notes) with the same wording, position, size, rotation, justification and text style as TraceBuild's DXF export.
  • Accented letters and symbols such as Ø, ½, € and ™ are stored as themselves; other characters, such as Greek or Chinese, are stored as standard AutoCAD character codes. A text too long for a DWG string is left out and reported, never cut.
  • Ellipses and splines are stored as real ellipses and splines instead of chains of short lines, and a solid fill as a real filled hatch. A patterned hatch is still stored as its outline only (the pattern is not kept, as agreed), and a solid fill with a spline-shaped edge is kept as its outline for now; each case is reported.

3.235 #

More faithful DWG and DXF drawings, and a clear message for password-protected files

  • Spline-fit polylines (the smooth curves made with PEDIT Spline in older drawings) now draw as the curve you see in AutoCAD. Before, the hidden control frame was drawn and measured too, which could more than triple a curve's measured length.
  • Ellipses on a mirrored or tilted drawing plane now curve the right way (a partial ellipse used to be drawn flipped).
  • A MINSERT block array without attributes in a 2010-or-newer DWG now draws every copy; before, it could silently draw only some of them.
  • Arcs, polylines and ellipses drawn at a height above zero keep that height when a DWG is exported to DXF, as they already did from DXF.
  • A password-protected 2010, 2013 or 2018 DWG now says it is password-protected instead of "damaged", and explains that it has to be opened with its password in a CAD program and exported to DXF or PDF.

3.234 #

More groundwork for DWG export (nothing new to see yet)

  • Behind the scenes, TraceBuild's DWG writer can now put real drawing content into an AutoCAD 2000-format (.dwg) file: lines, polylines, circles and arcs on their own layers, with each layer's colour and its on/off and frozen state. Every file is still checked before it is accepted.
  • It keeps a precise record of anything it could not carry over exactly: text is not written yet, ellipses, splines and hatches become outlines, and colours are stored as the nearest standard CAD colour.
  • It is still not connected to any menu. Saving your takeoffs as DWG comes in a later release, once our test drawings open cleanly in Autodesk's free DWG TrueView viewer.
  • DXF export is unchanged.

3.233 #

DWG drawings bring in their solids, traces and old-style polylines

  • Filled solids (drawn as their outline), traces, and 2D/3D polylines made the older way (not the newer "lightweight" kind) now come through natively from DWG files of every supported version, 2000 through 2018 - inside blocks too, and on mirrored or tilted planes - matching what TraceBuild draws from the same drawing saved as DXF. Before, they were left out and listed as "Not imported".
  • Mirrored polylines with arcs (a mirrored door swing, for example) now bulge the right way in DWG files.
  • Polyface and mesh objects (3D surfaces made of faces) are listed under "Not imported" in both DWG and DXF files. Before, a DXF drew them as stray lines, some running to the drawing's origin.
  • The "Not imported" note for DWG files now names real content (tables, multileaders, wipeouts, third-party objects) instead of internal codes like "CLASS_507", and a plain drawing shows no note.
  • A password-protected 2004-format DWG is recognised as password-protected instead of reported as damaged.

3.232 #

Groundwork for DWG export (nothing new to see yet)

  • Behind the scenes, TraceBuild can now build a basic, empty AutoCAD 2000-format (.dwg) drawing entirely on your device, and it checks every file it builds before accepting it - a file that fails the check is never handed over.
  • It is not connected to any menu yet. Saving your takeoffs as DWG comes in a later release, once our test drawings open cleanly in Autodesk's free DWG TrueView viewer.
  • DXF export is unchanged.

3.231 #

AutoCAD 2000 (R2000) drawings open natively

  • TraceBuild now reads R2000 (.dwg) files on-device in both the desktop and web apps - no converter, no upload. Units (millimetres vs inches), layers, colours, lines, arcs, circles, ellipses, polylines, splines, hatches, text, attributes and block inserts come through exactly as they do from the same drawing saved in a newer DWG format. With R2000, every DWG format from 2000 onward now opens directly.
  • Drawings with dimensions, viewports and other content TraceBuild doesn't import now open directly too (2000, 2004 and 2007 formats), with those items listed in the usual "Not imported" note - the same as newer DWGs - instead of being sent to the converter or, on the web, turned away.
  • A 2000/2004/2007 drawing with content the on-device reader can't draw yet is never opened half-drawn: the desktop app hands it to a DWG converter if one is installed; otherwise, and always on the web, TraceBuild explains how to re-export it as DXF or PDF. The message now says why: an older format, content it can't draw yet, password protection, or a file it couldn't read reliably.
  • If you have a DWG converter installed: 2004 and 2007 drawings containing solid fills or old-style polylines used to be converted, which drew those items. They now open directly like newer DWGs and list them under "Not imported". Drawing them natively is on the list.
  • The older R13 and R14 formats still go to the converter on the desktop, with re-export guidance on the web.

3.230 #

AutoCAD 2007 (R2007) drawings open natively

  • TraceBuild now reads R2007 (.dwg) files on-device in both the desktop and web apps - no converter, no upload - so their lines, arcs, circles, ellipses and polylines open measurable straight away. That adds R2007 to the R2004, R2010, R2013 and R2018 formats already read natively.
  • An R2007 file that is password-protected, damaged, or has content we don't read natively yet is sent to the converter automatically instead of opening incomplete. R2000 and older still use the converter.
  • Layer names in R2004 and R2007 drawings aren't read yet: their geometry opens correctly but is filed under layer "0".

3.229 #

AutoCAD 2004 (R2004) drawings open natively

  • TraceBuild now reads R2004 (.dwg) files on-device in both the desktop and web apps - no converter, no upload - so their lines, arcs, circles, ellipses and polylines open measurable straight away.
  • Older formats still fall back safely to the converter, and any R2004 file with content we don't read natively yet is routed to the converter automatically rather than opening incomplete.

3.228 #

Hatched and filled regions export as real hatches

  • Hatched or filled regions now export as real DXF hatch entities - the closed boundary loops AND the fill (solid, or a named pattern) as one selectable entity - instead of loose boundary lines. A re-imported drawing shows the same filled region, and you can select "the hatch" and read its pattern in CAD.
  • Every exported hatch is validated to open cleanly in AutoCAD and other CAD tools; anything that can't be reproduced faithfully (a rotated/skewed hatch, or a pattern we can't recover) falls back to boundary line-work and says so.
  • This completes the true-curves export set - arcs, ellipses, splines and hatches all export as real curves now. Measurements are unaffected.

3.227 #

Spline curves export as real, editable splines

  • Curved spline lines now export as real, editable splines instead of being chopped into short straight segments. Freeform curves, contours and sketch lines keep their true smoothness in AutoCAD and other CAD tools - you can grab and reshape them as curves, not as dozens of tiny line pieces.
  • Splines that came from a DWG defined by fit points are rebuilt as smooth control-point splines.
  • Hatches are still exported as line-work for now (coming next). Measurements are unaffected.

3.226 #

Real curves inside blocks and symbols too

  • Arcs and ellipses drawn inside a block or symbol (a door swing, a fixture, a detail bubble, a logo) now export as real curves too - not the fan of tiny straight segments they used to become once the block was placed on the sheet.
  • Scaled, rotated and mirrored copies are handled correctly - and a circle that a block places *stretched* (different width and height) comes out as a true ellipse, exactly as CAD would draw it.
  • Splines and hatches are still exported as line-work for now (coming next). Measurements are unaffected.

3.225 #

DXF export keeps real curves, not chopped-up segments

  • Exporting a DWG or DXF to DXF now keeps arcs, ellipses and curved (bulged) polylines as real curves instead of chopping them into dozens of tiny straight segments - for the drawing's own geometry.
  • Reopen the exported file in AutoCAD or another CAD tool and an arc is a true arc you can fillet, offset or dimension, not a 48-sided approximation.
  • Splines, hatches and any curve nested inside a block are still exported as line-work for now (coming next), and the status line tells you exactly what was kept as a true curve versus flattened.
  • Measurements are unaffected.

3.224 #

Export your takeoff to CAD

  • Saving a drawing as DXF now has an optional checkbox - *"Include my takeoff (measurements, areas, counts, notes)."* Leave it off (the default) and you get the drawing exactly as before.
  • Turn it on and TraceBuild adds your measurements, areas, counts and notes to the DXF on their own clearly named TB-* layers (TB-Measure, TB-Areas, TB-Counts, TB-Text), laid exactly over the drawing - so a measurement along a wall sits on that wall in your CAD tool.
  • Anything that can't become CAD line-work (images, links, form fields, stamps, redactions) is listed in the export message and kept out, never silently dropped.

3.223 #

DXF export keeps the real drawing, not a flattened copy

  • When you open a DWG or DXF and choose File ▸ Save As ▸ DXF (CAD), TraceBuild now writes the drawing back out straight from the CAD data it read on import - so the exported file keeps the drawing's exact position (no shift to the origin), its real layers, and its real, editable text (labels stay TEXT you can select and edit, instead of being exploded into loose lines).
  • PDFs - and a DWG/DXF you've closed and reopened as a flattened PDF - still export the honest way, by tracing the page's vector line-work.
  • The status line always tells you which of the two it used, so you know exactly what's in the file.
  • Available in both the desktop app and the web app.

3.222 #

Export any drawing to a DXF CAD file

  • File ▸ Save As ▸ DXF (CAD) now writes the current page's vector line-work as an AutoCAD DXF - and it works for every drawing you can open: DWG, DXF, and even native PDFs.
  • It keeps every line (including faint white "knockout" strokes), never quietly drops or caps geometry, and recovers your CAD layer names.
  • It tells you in plain language what was flattened (curves and circles become polylines) and what is not yet exported as editable text - so you always know exactly what's in the file.
  • Available in both the desktop app and the web app.

3.221 #

TraceBuild can now write DXF (export engine)

  • This release adds the engine that turns a drawing's line-work, circles and text back into a standard DXF CAD file - the foundation for exporting your drawings to AutoCAD and other CAD tools.
  • It writes clean, valid files with the correct layers, colours and units and your drawing's own scale preserved, and it keeps special characters intact - degree signs, diameter symbols, fractions, accents and even CJK text are never garbled.
  • This increment ships the engine only; the Export DXF action you'll click lands in the next update.

3.220 #

Hardened against damaged drawings, with broader test coverage

  • The on-device drawing reader - both the desktop (Pro) and web (Lite) tiers - is now hardened against damaged, truncated or corrupted DWG/DXF files: a fuzz-tested robustness pass proved the reader always finishes and reports a clear "couldn't read this drawing" instead of misbehaving.
  • One damaged-file case that could make a bad drawing spin instead of stopping now fails cleanly and instantly - a corrupted drawing is rejected in milliseconds rather than hanging.
  • Added new independent test drawings that lock in the recent frozen-layer (shown or hidden but still measured) and per-object hide behaviours, so those keep working exactly as designed.
  • No change to any measurement, or to how a valid drawing is drawn.

3.219 #

Sharper dynamic blocks and hidden objects

  • Drawings that hide part of a dynamic block - or mark any object invisible - now match how CAD shows them. Hidden objects are no longer drawn on the sheet.
  • Just as importantly, a hidden object is no longer measured either, so your takeoff counts only what is actually visible in the drawing - an invisible object contributes nothing.
  • This applies to both DWG and DXF files, on both the desktop and web apps.

3.218 #

Show or hide drawing layers (view-only)

  • Imported DWG and DXF drawings now let you turn individual CAD layers off on screen - from the Drawing-layers panel, or the PDF-layers sidebar - so you can clear the dimension, grid or annotation layers and trace on a clean sheet.
  • Hiding a layer is view-only: a hidden layer is still measured and included in every takeoff, detection and export, and is still written into the saved and shared PDF. Nothing about your quantities changes when you toggle a layer - the panel says so, with a live count of what's hidden.
  • Use Show all to bring every layer back. Your hidden layers are remembered per drawing as you switch tabs, and reset when you close the drawing.
  • Quantities and geometry are unchanged; this release only changes what you see on screen, never what is measured.

3.217 #

Honest messaging when part of a drawing can't be shown

  • When a DWG needs the older-format converter, TraceBuild now tells you the truth about what happened: a converter that isn't installed still points you to export DXF or PDF, but a converter that ran and *failed* now says so plainly - naming the error - instead of wrongly telling you to install one you already have. A converter that hangs is fully stopped, not left running in the background.
  • Opening a drawing whose geometry lives only on a paper-space layout no longer reports a bare "nothing to measure" - it says the model space is empty and the geometry is likely on a layout TraceBuild doesn't import yet.
  • A drawing that relies on external references (xrefs) or proxy graphics from another app now raises a clear, dismissible warning that some geometry isn't shown and the sheet may be incomplete - so nothing is taken off a drawing that's quietly missing parts.
  • Quantities and geometry are unchanged; this release only makes the app more honest about what it did and didn't draw.

3.216 #

CAD stroke fonts - your own SHX, or open substitutes

  • DWG and DXF sheets that use AutoCAD's classic shape fonts (txt, simplex, romans, isocp and the like) now draw as real stroke text instead of a stand-in typeface, so labels, room names and dimensions look the way they do in CAD.
  • On the desktop you can point TraceBuild at a folder of your own .shx fonts (Help ▸ Choose CAD fonts folder…). It reads them only when a drawing needs one, in place - never uploads, copies or redistributes them. When a font isn't available, an open Hershey stroke font stands in and the status bar tells you which fonts were substituted.
  • Stroke text stays fully searchable and selectable, and drawings that store text in a legacy regional code page (Chinese, Japanese, Korean, Central/Eastern-European) now read with the correct characters.
  • Quantities and geometry are unchanged - this release only improves how text is drawn.

3.215 #

Open-source notices, complete

  • A full licence audit of everything TraceBuild ships found no copyleft or restricted component in either edition. What it did find were a few open-source components whose notices weren't yet shown - the Leptonica image library inside the OCR engine, the LLVM OpenMP runtime beside the desktop AI engine, the Draco/Basis mesh libraries, and the marketing site's fonts. All of them now appear under Help ▸ Open-source licenses (both editions) and in the notices file that ships with the desktop app; the site's fonts carry their licence text alongside them.
  • A LICENSING.md register now documents every third-party component, its licence, and how its notice ships, and the app's own tests keep the two notice surfaces in step.
  • Under the hood, three build-only libraries no longer travel inside the desktop installer, which trims it slightly. Nothing changes in how you use the app.

3.214 #

Drawing text lays out the way the CAD file says

  • Wrapped notes stay in their box. A general note or schedule cell with a set width now wraps word by word inside that width (long words break where they must, Chinese wraps by character), with the drawing's line spacing, and anchors on the right corner or edge of the wrapped block - no more single 400-character lines running across the sheet.
  • Fractions are stacked, not "1/2": horizontal, diagonal and tolerance stacks render the way the drafter wrote them. Condensed or expanded text, slanted (oblique) text, underlines, overlines and strike-throughs, per-run size changes, centred / right / justified paragraphs, and backward or upside-down text all render as authored.
  • Text styles that name a CAD font (romans.shx, arial.ttf, simsun.ttc) are now matched by that font, not by the style's name.
  • Behind the scenes, the web edition's build now refuses to ship if any copyleft component or DWG-engine module were ever added - a guard that tests itself on every build.

3.213 #

Real CAD-substitute fonts - no more `?` stand-ins

  • Text on imported DWG and DXF sheets now draws with real, correctly shaped substitute fonts instead of one fallback face that turned anything non-Latin into ?. Common Windows and CAD fonts (Arial and the SHX Latin shapes) render in the metric-matched Arimo, other scripts in Noto Sans, and common Chinese in a bundled Noto Sans SC subset - so a title block, a room schedule or a Chinese note reads correctly, and centre- and right-justified labels sit where the drawing puts them.
  • When a drawing names a font TraceBuild doesn't ship, the label is still drawn with the closest bundled substitute and one non-blocking line on the status bar names what was substituted. It never blocks and never changes a quantity. A character no bundled font covers still shows as ? - now rare.
  • Fonts load only when a sheet needs them (a Latin-only drawing never fetches the Chinese subset), and every face ships under a permissive open license - no Autodesk, Arial or Microsoft font files are bundled.

3.212 #

Text on DWG sheets, and drawing text read cleanly

  • A native DWG now shows its text - room labels, notes, callouts, dimension text and block attributes (door tags, room numbers) - at their real positions. Until now a DWG opened with no labels at all.
  • Drawing text from both DWG and DXF is now read, not stripped: paragraphs, stacked fractions, font and size changes, degree / diameter / plus-minus codes and Unicode escapes come through as real text, non-Latin labels survive, and long notes are never cut off at 256 characters. That clean text is what room naming and area detection read, so labels like "OFFICE 1A05" now arrive whole.
  • Nothing is silently dropped: a character the built-in font can't draw is shown as ? and counted on the status line ("3 characters not in the built-in font shown as ?"), and if the built-in font can't load at all the sheet says how many labels are missing. Real CAD fonts, which remove the ? stand-in, are the next update.
  • Attribute definitions inside blocks are reported as not drawn, matching CAD.
  • Third-party notices for the MIT components TraceBuild uses now ship with both the desktop app and the web edition.

3.211 #

Splines and hatch outlines come in from DWG and DXF

  • Spline curves - site boundaries, curved walls, contours - now draw from both DWG and DXF, flattened by one shared curve engine so a DWG and the DXF of the same drawing render a curve identically. Curves defined by their control points reproduce the source exactly; a curve the CAD file defines only by "fit points" (the way a DWG stores a hand-drawn spline) is rebuilt through those points with the same AutoCAD-style interpolation, so it passes through every drawn point and may differ only slightly at its ends. A malformed spline is reported, never guessed.
  • Hatch boundaries - the outlines of hatched walls, floor finishes and poché - now draw as measurable closed loops, islands included. Hatch *fills* and patterns are not drawn, and the status line says so ("outlines only").
  • The status line now reports what was drawn ("Drew 12 spline curves, 8 hatch boundaries") and calls out any spline that had to be approximated, so a sparse or approximate import is never a silent surprise.
  • Every drawing you already imported renders byte-for-byte the same apart from the curves now added; the checks against an independent CAD reference run on every build.

3.210 #

Blocks land exactly where the drawing puts them

  • DWG and DXF drawings now place mirrored and rotated blocks, work on tilted planes, and repeated block arrays (a grid of fixtures, columns or seats drawn once and arrayed) exactly where the CAD file puts them - so a mirrored detail or an arrayed grid is measured in the right spot, with no eyeballing and no "check placement" caveat.
  • These placements are checked against an independent CAD reference on every build, not just against our own reader, and a mirrored array's rows are proven to stack on the correct side.
  • Stray survey points are now reported ("N points not drawn") instead of silently dropped.
  • Nothing changes in how any drawing you already imported measured: every existing test drawing renders byte-for-byte the same as before.

3.209 #

DWG blocks draw, and a Drawing layers view

  • Open a DWG and TraceBuild now draws the drawing's blocks - the repeated symbols, fixtures, doors and details that live in block definitions - so a block-heavy plan comes in complete instead of half-empty. On a typical block-built floor plan that is the difference between a few dozen lines and the whole sheet.
  • New Drawing layers view for any DXF or DWG import (the status-bar Layers button, or Document ▸ Drawing layers…): every layer in the drawing with its colour, how many lines, circles and pieces of text are drawn on it, and an OFF or FROZEN flag where the CAD file sets one - a quick way to check an import is complete before you take off. View-only for now; note that off and frozen layers are still drawn and measured (the flags are shown, not applied). Turning layers on and off is coming.
  • Honesty notes on the status line: a block that the drawing mirrors or tilts is drawn un-mirrored for now, and the sheet says so ("check placement") rather than staying quiet; block arrays (MINSERT) and external references (xrefs) still aren't drawn and are called out the same way.
  • Works the same in the web and desktop editions; nothing is uploaded.

3.208 #

DWG files open directly - no converter, nothing uploaded

  • Drop an AutoCAD .dwg saved in the 2010, 2013 or 2018 format straight onto TraceBuild and it opens as a measurable, pre-scaled sheet, right on your computer. Nothing is uploaded, and it works the same in the desktop app and the web edition.
  • Lines, circles, arcs, ellipses and polylines come in ready for snap, Detect Runs and real-unit measurement, with the drawing's own units applied - no calibration needed. If a drawing names no units, TraceBuild stops and asks you to calibrate first, so a quantity is never silently 12× or 25.4× off.
  • Text, blocks and hatch fills aren't drawn yet. They're listed as "not imported" so nothing is a silent surprise, and a drawing that is mostly blocks is flagged INCOMPLETE up front rather than presented as opened - don't take off from one of those until block support lands.
  • Older DWGs (2007 and earlier, and 2004) still open on the desktop when an ODA File Converter is installed; otherwise export DXF (best) or PDF (fastest) from your CAD tool and open that. The guidance dialog now says exactly which format the file is.

3.207 #

Hardening from an end-to-end audit

  • An adversarial audit of the whole app (the live account gate, the AI paths, the measuring and takeoff engine, and the self-host server) confirmed the live service clean and turned up four defects in the self-host / standby account server. All four are fixed here.
  • Two admin actions (marking an email as verified, and a sign-out that arrives as a HEAD request) could slip past the maintenance freeze used during an account-store cutover. Both now pause with everything else while the freeze is on, so no account change can be lost in the middle of a migration.
  • On a self-hosted server using the file-based account store, the admin sign-up export included password hashes in its JSON form. It now returns exactly the same safe columns as the database-backed store, on every backend.
  • A signed-in user who is not an administrator now gets a plain "not an administrator" answer at the admin page instead of a browser password prompt they could never satisfy.

3.206 #

Tour keys stay on the tour

  • While the welcome tour is open, pressing Enter, Escape, or an arrow key now only drives the tour itself. Before, that same press could also reach whatever control was sitting behind the tour: on a brand-new account the very first Enter would step the tour forward and, in the same beat, fire the "confirm your email" bar's send. Each of those keys now belongs to the tour alone until you close it, and every other key still goes straight through to the app.

3.205 #

A one-click "confirm your email" bar

  • If your email address has not been confirmed yet, a slim bar now sits across the top of the drawing area and says so. The whole bar is the button: click it anywhere and TRACEBUILD sends a fresh confirmation link to your address on the spot, so nobody has to go hunting for the original message. Open that link from your inbox and the bar clears itself the moment you come back to the app, with no reload and no lost work.
  • It is quiet by design: one line, no countdown, and it appears only for a signed-in account whose address really is unconfirmed. If the check cannot be made for any reason, nothing is shown at all.

3.204 #

Groundwork for a bot check on sign-up (off by default)

  • Adds the ability to put a quick "prove you're human" check on the sign-up form, so automated junk accounts can't pile into the user list. It is shipped turned OFF, so the sign-up page is unchanged for now. When enabled, real people see at most a one-tap checkbox; the check is confirmed on the server before an account is ever created, and it is built to wave people through rather than lock them out if the checking service itself has trouble. Logging in is never affected.
  • Small nicety that ships with it: if sign-up is refused for any reason (a taken username, a rate limit, the new check), the form now keeps what you typed in the name, email, and username fields instead of blanking them. Passwords are never kept.

3.203 #

Groundwork to require confirmed email (off by default)

  • Adds the ability to require a confirmed email address before an account can use cloud features, so throwaway signups can't burn cloud-AI credits. It is shipped turned OFF, so nothing changes for anyone yet. When enabled, new accounts get a short grace period to try the app while a "confirm your email" prompt shows, cloud AI asks for confirmation right away, and everyone who signed up earlier stays exempt. Confirming is the same one-click link as before. Nothing here affects your drawings, takeoffs, or existing sign-in.

3.202 #

Sturdier account storage on the self-host server

  • Internal reliability fix for the self-host account server's file-based storage: a brief, transient file lock from the operating system (common on Windows, e.g. from antivirus) could previously make one save fail and then cause every following save in that session to fail too. Saves now retry through a transient lock and recover cleanly on their own, so a single hiccup can no longer snowball. No user-facing change; nothing about accounts or data behaves differently.

3.201 #

See who's using the app right now, in the admin portal

  • The operator dashboard now shows a live "online now" indicator: a green dot next to anyone currently using the app, plus an "Online now" count, both refreshing on their own every 30 seconds without reloading the page. It works by a lightweight signal the app sends only while its tab is open and in front, so the light goes dark on its own a few minutes after someone steps away. This is operator-only and adds no tracking beyond "is this account active in the app right now."

3.200 #

Confirming your email is now one click lighter

  • The email-confirmation link now verifies you automatically the moment it opens in a browser, instead of making you click a second "Confirm" button on the landing page. The button is still there for anyone whose browser blocks scripts, and the security that stops automated email scanners from using up your one-time link is fully preserved. Nothing about the confirmation email itself changed.

3.199 #

Email send failures are no longer invisible

  • Reliability fix for the account emails (confirmation, password reset, username reminder): when the email provider rejects or errors on a send, the system now records exactly what happened - which message, to whom, and the provider's error - so a delivery problem shows up in the logs instead of failing silently. The one-time confirmation and reset links are treated as secrets and are never written to any log. No change to the emails themselves or to how they are sent.

3.198 #

Admin dashboard now measures real usage, not just explicit logins

  • Fixes a reporting blind spot: the account dashboard's activity count was based only on the login form, so anyone who signed up (and was signed in automatically) or came back on a remembered session showed as "never logged in" even though they were using the app. The dashboard now tracks when an account actually loads or boots the app and reports "Seen (30d)" from that, with "Last explicit login" kept as its own separate column. Accounts with no recorded login now read "no explicit login recorded - usage unknown" instead of looking abandoned, and nothing is ever backfilled with invented activity. Because the browser app does most of its work on your device, this measures loading/booting the app, not continuous in-tab time; a true always-on activity signal is a planned follow-up.

3.197 #

Self-host account server: cutover-ready (admin tools + a safe, rehearsable migration)

  • Final groundwork for moving the account backend to self-hosting without data loss or downtime (still not serving live traffic): the self-host server now has the full admin toolset the production gate has - suspend, reactivate, promote, demote, delete, and password-reset for any account, reachable from the admin page, with an admin's own destructive actions on their own account refused so nobody can lock themselves out. Sign-out now matches production exactly. A new, rehearsable cutover procedure briefly pauses account changes at the edge, copies every account across in a single all-or-nothing transaction, verifies the two sides match account-for-account, and can be rolled back cleanly at any point before the switch; a maintenance switch on the new server keeps the copy consistent during the changeover. Everything is operator-driven and uses the operator's own keys; nothing changes for current users.

3.196 #

Self-host account server: cloud AI parity (standby now route-complete)

  • Completes the self-host account backend's match with the production gate (still not serving live traffic): the cloud-AI endpoints - consent, cloud symbol verification, and two-call cloud OCR - now run on the self-host server too, behind the same protections as production: explicit per-account consent, monthly usage limits with a global safety cap, admin exemptions, and the anti-abuse guards that bind each OCR job to the account that started it and refuse any request pointed at an unrecognized service address. Cloud AI keys are supplied by the operator; without them the endpoints report "not configured" and nothing else is affected. Cloud-AI consent now carries across a future backend migration so users never re-consent.

3.195 #

Self-host account server: password recovery + email verification

  • Groundwork toward a true hot-standby account backend (not yet serving live traffic): the self-host account server now matches the production gate's password-recovery and email-verification flows - forgot-password and username-reminder email, single-use password reset that signs out all old sessions, email-verification links sent on signup, and resend-verification - plus the account-status endpoint the app shell uses. Password-reset tokens are stored hashed and spent in one write; email delivery is a pluggable transport that fails safe. Nothing changes for current users; the live gate is unchanged.

3.194 #

Curved measurements, live

  • Draw measurements with curved boundaries. While tracing an Area, Perimeter, Length, Volume or Wall measurement, press and drag to pull the boundary into a smooth curve - the same gesture as the Pen. Curved measurements price exactly from the true curve mathematics, cutouts subtract precisely, and everything works with undo, save, reopen and PDF export like any other measurement.
  • Fixed: the Cutout tool could not find a curved measurement. Drawing a cutout inside a curved area reported "not drawn inside any Area" even though the shape was right there. Cutouts now attach to curved and straight measurements alike, using the same containment test the priced number uses.

3.193 #

Measurements meet curves

  • Cutouts now work inside curved measurement outlines. A measured area or volume with a curved boundary deducts its rectangular cutouts exactly - the billed number comes from the true curve mathematics, never from an approximation of it - and the drawing punches precisely the holes the number subtracts, on screen and in exported PDFs. A cutout sitting ambiguously on the curved edge is refused with a plain message instead of being guessed either way.
  • Committed measurements can no longer be silently flattened. Converting a curve to a straight chord on a committed measurement - which would shrink the billed quantity without anyone noticing - is now refused with an explanation; the same conversion on an unaccepted proposal stays available, because there the drawing visibly changes before anything is billed.
  • Refused curved measurements now appear in the QA panel with the actual reason, instead of being silently invisible.
  • Internal groundwork: the measurement scale resolver that will later power multiple scaled viewports per sheet, wired in its simplest form with zero behavior change; and a curved-drawing gesture for measurement tools, built and tested behind a disabled flag pending its live review.

3.192 #

The Pen is here

  • Draw freeform curves with a real pen tool. In the Lines flyout: click for a corner, press and drag to pull out a smooth curve, click your first point to close the shape, or double-click (or Enter) to finish open. Mixed paths work naturally - one curved segment never bends the straight ones.
  • Edit curves like a professional tool. Select a curve to get its anchor and tangent handles: symmetric handles stay mirrored, smooth ones stay aligned, and holding Alt breaks a single tangent when you need a corner. Every drag is one undo step.
  • Curves render exactly on screen and in exported PDFs (the control points are written through verbatim - no approximation), and curve lengths are computed to certified precision or honestly refused, never estimated.
  • Documents with curves remain safe in older TraceBuild versions: they show as locked placeholders and pass through saves untouched.

3.191 #

Curve foundations, part two

  • Internal groundwork for freeform curves: exact cubic curve mathematics (lengths computed to certified precision or honestly refused - never silently approximated), a complete pen-drawing and handle-editing lifecycle, faithful screen and PDF rendering, and safe file round-trips - built and tested behind a disabled flag. The pen tool turns on in a future release after the same real-drawing review the arc tools passed.
  • Documents containing curves are safe everywhere: this version reads and prices them exactly; older versions show them as locked placeholders and preserve them untouched through save.
  • Arc editing groundwork: segments of an arc can be converted to editable curves on drawing markups (measurements refuse the conversion - a committed quantity never changes shape silently).

3.190 #

Arcs are here

  • Draw true circular arcs. The Lines flyout gains two arc tools: a three-point arc (start, a point on the curve, end - sweeping wide when the curve calls for it) and a center arc (center, start, end, with the sweep following your cursor). Arcs select with the same easy grab as any line, edit with endpoint and on-curve handles, move, rotate, undo, save, reopen, and print as real curves - never as chains of straight segments.
  • Arc lengths and curved measurements are computed exactly from the geometry, not approximated from screen drawings. Impossible constructions (three points on a straight line, a zero-radius circle) are refused with a plain message instead of guessing.
  • Documents containing arcs are safe in older TraceBuild versions: previous releases show them as locked placeholders and preserve them untouched through save.

3.189 #

Drawing that behaves

  • Drafting is now interruption-proof. Backspace while tracing removes your last click instead of deleting the selected room; holding Space to pan no longer throws away the shape you were drawing; and a lost pointer (screen edge, driver hiccup) can no longer leave the canvas unresponsive with a half-drawn shape stuck on screen.
  • Thin lines are easy to grab at any zoom. Selection now uses a finger-sized screen tolerance instead of the painted stroke width - a hairline is as clickable at 25% zoom as at 400%. Clicking repeatedly on stacked markups cycles through them predictably, and double-click steps into a group to edit one member (Escape steps back out).
  • Locked means locked. A locked markup now refuses every change - moves, nudges, styling, grouping, count marks - not just some of them.
  • Labels stay readable on dense sheets. Detection chips now hide only when they would actually collide on screen at your current zoom (selected and hovered labels always win), replacing the old blanket cutoff. And you can now drag a label to a better spot - the caption moves, the measurement and its value stay exactly where they were, in the app and in exported PDFs.
  • Clearing detection candidates is now a single undo step.

3.188 #

Arc foundations (not yet visible)

  • Internal groundwork for true circular arcs: exact arc mathematics (measured in closed form, never approximated), a complete drawing and editing lifecycle, faithful screen and PDF rendering, and safe file round-trips - all built and tested behind a disabled flag. Nothing changes in the app yet; every existing document behaves exactly as before. The arc tools turn on in a future release once the full lifecycle passes review on real drawings.

3.187 #

Future-proof file safety

  • Documents from newer TraceBuild versions are now safe in this one. If a future version saves shapes this build cannot understand, opening that file no longer risks silently damaging them: unknown shapes load as locked, visible placeholders, stay out of all totals, and are written back exactly as they arrived when you save. Everything you can read stays fully editable. All existing documents open and save exactly as before.
  • Groundwork for measurement viewports: per-view scales can now carry their own report units and independent X/Y calibration (metric details on an imperial sheet, anisotropic profiles), validated the same way page scales are.

3.186 #

Markup quality groundwork

  • Saving a tool now captures exactly what you styled. Saving a selected markup to the Tool Chest snapshots every property from that markup itself - arrowheads, text color, alignment, bold/italic, symbol size - instead of relying on the side panel happening to be in sync. Presets reproduce the object you saved, every time.
  • A permanent baseline now guards every markup type. A reference document containing one of every markup type is round-tripped through save and reopen on every build - byte-identical, with committed and proposed quantities checked against the totals gate. Any future change that loses a field or leaks a candidate into totals fails the build.
  • Internal: the drawing-tool inventory and interaction contract are now recorded, and the arc/curve architecture designs are drafted for review - no curve tools ship until those designs are approved.

3.185 #

Cutout math you can bill from

  • Overlapping cutouts now deduct exactly once. When two or more cutouts overlapped inside one area, the shared region could be counted back into the total - a room with three overlapping cutouts billed more area than it has. Rectangular and other convex cutouts now deduct their exact combined footprint, and the drawing shows the same shape the math uses. If your documents contain overlapping cutouts, their areas may change - they are now correct. Overlap shapes the app cannot compute exactly are refused with a plain message instead of being priced wrong.
  • Very detailed outlines are actually checked now. A boundary with more than 2,000 points used to skip the crossing-edges check entirely and could price a broken outline as if it were valid. Dense outlines are now validated the same way as simple ones; in the rare case a shape is too complex to finish checking, it is marked "quantity unverified" instead of being silently trusted.
  • Groundwork (not user-visible): reviewed detection references can now be bound to the exact source PDF they were drawn on, and server deployments verify byte-for-byte that the running service is the build that was shipped.

3.184 #

The audit round: detection you can question, imports that cannot misfire

  • A broken room outline now says so. A room whose boundary crosses itself used to display "no scale" on a perfectly calibrated sheet, and the quality panel suggested fixing the calibration. The app now tells the outline apart from the calibration: broken outlines are named plainly, flagged as geometry problems to repair, and cannot be accepted into totals until fixed.
  • Only plausible doors make the door schedule. Accepting a room no longer silently certifies every attached opening as a door: openings with a zero or physically impossible width - or a width that cannot be verified because the sheet has no scale - move to a clearly labeled "needs review" list in every export instead of being counted.
  • The accuracy gate now checks shape, not just size. A detected room with the right area in the wrong place, or two rooms overlapping the same floor area, used to pass the accuracy check. The scorer now enforces outline fidelity and refuses double-counted area, and a reviewed reference must fully identify its source sheet - a missing field fails instead of silently weakening the check.
  • The account import can no longer misread a damaged export. An account row that arrives damaged is now proof the account exists - it can never be mistaken for a deleted account and removed, under any option. Unidentifiable damaged rows stop the cleanup step entirely until the export is fixed.
  • Server dependencies patched to close published security advisories; zero known advisories remain.

3.183 #

Account migration you can trust

  • The account import is all-or-nothing. Moving accounts between databases now happens in a single transaction: if anything fails partway - a bad row, a dropped connection, an interrupted run - nothing changes at all, instead of leaving some accounts refreshed and others stale.
  • Deleted accounts stay deleted. The import now notices accounts that were removed at the source and reports them; an explicit option removes them from the destination in the same all-or-nothing run. A safety guard refuses any run that would delete more than a fifth of existing accounts - a truncated export can never silently wipe real users.
  • Administrators can suspend and restore accounts through a proper authenticated endpoint: suspension signs the account out everywhere immediately, admins cannot suspend themselves, and every action is logged. (Accounts groundwork - not yet serving traffic.)

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.