TRACEBUILD3.323
What's new

Every version of TRACEBUILD, newest first.

Currently 3.323 - released 2026-10-28. Written for the estimator, not the compiler.

3.323 #

Finish or explicitly stop image search before counting

  • Add as count stays disabled while Find by image is searching. Wait for the selected search to finish, or choose Stop to review and count partial results from completed sheets. Counting no longer silently cancels an unfinished search.
  • Completed results still support rejection, duplicate prevention and one Undo for the count. Error and Stop paths restore the controls safely.
  • This is a count-handoff safeguard, not improved matching accuracy or permanent memory of rejected matches. The marketing site is preserved separately.

3.322 #

Correct a count without starting another tally

  • Select a Count tally, then choose Correct selected count from Takeoff, Measure or Detect. Remove false marks or add misses in a private draft and review the before/after quantity and detected/manual split before Apply.
  • Apply updates that tally in one Undo step. Surviving mark provenance, item, section, rate links, layer and authorship stay intact; added marks are manual. Corrected proposals remain proposals and do not enter totals until accepted.
  • Cancel or Escape keeps the original. Undo during correction affects only the draft; Redo is refused until correction ends. Removing all marks requires an explicit Delete tally confirmation, with one Undo to restore it.
  • No scale is required. Supported point tallies have up to 20,000 marks; unsupported geometry refuses safely. This is manual count repair, not an automatic-detection accuracy upgrade or permanent memory of rejected matches.

3.321 #

Correct a room boundary while keeping doorway allocation

  • Select a supported straight, unrotated detected wall-face room, then choose Correct wall-face room from Takeoff, Detect or Measure. Trace its own finished wall faces across openings and review the old/new quantities and existing doorway allocation before Apply. Keep original is the default.
  • The correction updates only the selected room in one Undo step. Existing cutouts remain; neighboring rooms, door ownership and proposal acceptance do not change. A corrected proposal stays excluded from totals until accepted.
  • Editable Save retains the corrected proposal's directly linked doorway and neighboring-room context without accepting it. User tracing is labeled as manual; stale automatic wall-projection metadata is removed.
  • Changed or ambiguous doorway topology, conflicting rooms and unsupported outlines refuse safely. This is a manual correction workflow, not improved automatic detection or an automatic cabinet/appliance deduction.

3.320 #

Correct an area without taking it off twice

  • Select a straight Area or Room Fill, then choose Redraw selected area from Takeoff, Detect or Measure. Review the old and new quantities before applying the replacement to the original markup. Keep original is the default.
  • Existing cutouts and proposal status are preserved. One Undo restores the old boundary. Corrections do not accept proposals or automatically deduct cabinets, refrigerators or appliances; use explicit cutouts for intended deductions.
  • Wall-face/doorway-managed rooms, curved or rotated outlines and conflicting room boundaries are refused safely. This first correction slice does not improve automatic detection or replace the existing doorway controls.

3.319 #

Know what is saved and how to recover it

  • Open Save and device recovery from Save options or the status bar. It explains editable PDFs, flattened exports, device recovery and separate cloud sharing.
  • Lite distinguishes unsaved PDF edits from a pending, current, unavailable or failed device copy. Device recovery is best effort, not a saved PDF or cloud backup.
  • An editable browser download request no longer clears unsaved-work protection. Only a confirmed file write does. Check Downloads and reopen a downloaded PDF to verify it; Review device recovery can reopen available work from this device.

3.318 #

Find what is missing from your takeoff totals

  • A compact Takeoff check shows counted markups, work excluded from totals and counted warnings in every Takeoff grouping. Expand it to see missing scales, depth/height, proposals and geometry problems separately.
  • Locate the first affected markup on its sheet and open its existing correction controls. Proposals still need explicit review; Locate never accepts work or changes measurements. Corrected quantities follow ordinary Undo and Redo.
  • Counts include all sheets and hidden/locked layers. This is a workflow check, not a certificate of drawing accuracy or complete scope.

3.317 #

Lite project metadata and safer account identity

  • Open Projects in Lite to create named project records, review access and send in-app invitations to existing verified accounts. Recipients must accept; invitations are not delivered by email. Viewer/editor roles and accepted ownership transfers are explicit.
  • Before deleting your account, transfer each owned project to a confirmed member and wait for acceptance, or explicitly delete it. Archived projects still count; shared projects are not automatically deleted with an account.
  • A security update requires existing Lite sessions to sign in again using the same account. Saved device work stays on the device. Sessions now bind the account identity so a recreated email address cannot revive an old cookie.
  • This is a metadata workspace, not cloud PDF storage or live collaborative drawing editing. No drawings, measurements or private price books are uploaded by Projects. Pro continues to keep its project work on-device.

3.316 #

Keep the sheet you selected at low zoom

  • Entering a page number or using Previous/Next keeps that sheet active while it is fully visible, even when several sheets fit on screen. This also keeps the first and last sheets from unexpectedly jumping to a neighbor.
  • Zooming a panned sheet down to fit centers the selected sheet vertically. Normal scrolling still changes the active sheet once it is clipped or offscreen.
  • Measurements, calibration, markups and export quantities are unchanged. This corrects navigation; it does not claim faster PDF rasterization.

3.315 #

Find quantities-only CSV export faster

  • Open Export > Report CSV - quantities only, or use the Export CSV button at the top of the Takeoff panel in Lite and Pro. Both open the existing report review so you can check quantities, filters and layouts before Save As.
  • The Takeoff button stays available across all grouping tabs and supports keyboard activation. It is disabled until a drawing is open.
  • The standard Takeoff CSV, Ctrl+E, workbook, PDF and priced-export choices remain unchanged. These shortcuts do not silently save a file or add prices.

3.314 #

Review quantities with saved report layouts

  • In Lite and Pro, open Measure > Output > Takeoff reports and saved layouts. Group live counted quantities by item, sheet, section, trade, layer or Space; filter the view and choose additional metadata columns.
  • Save named layouts locally to this browser/account or desktop profile. Settings are saved, not quantities: refresh reads the current drawing again. Conflicting saves refuse instead of overwriting another editor's change.
  • Review a row's contributing measurements and jump to their sheet. Export a quantities-only CSV with its filters and exceptions stated. Units and area bases stay separate; count tallies split correctly across Spaces.
  • Reports do not change drawing quantities, prices or acceptance. Hidden/locked layers remain included as in takeoff totals. Existing Takeoff Summary PDF and priced-export gates stay unchanged. This is not a custom priced/PDF designer, cloud/company report library or saved estimate layout.

3.313 #

Select catalog products and map your cost codes

  • Save your own unpriced products with SKU, trade and explicit coverage units in the Assembly formula calculator's Local product catalog, in Lite and Pro. Keep code scheme, exact cost code and description together; international text and leading zeros are preserved. Included examples are illustrative, not supplier specifications or official classification tables.
  • Search and explicitly select a compatible product for each result. Purchase rounding stays off until you choose Use selected catalog coverage; formulas still use net quantities. Previews identify the product and mapped code.
  • Changed products/codes require reselection. Conflicting editor saves refuse rather than overwrite another change. Safe editing requires Web Locks support.
  • Saved catalog entries stay local to this browser/account or desktop profile. Closing discards worksheet selections and unsaved drafts, not saved entries. No prices, takeoff totals, shared files or exports are changed automatically; cloud/company libraries, saved assemblies and pricing remain separate.

3.312 #

Keep measured net and purchase quantities separate

  • Import one selected accepted measurement into the Assembly formula calculator with explicit unit conversion and its sheet/source shown. Drawing changes require re-import; manual edits remove the measured-source label.
  • Opt into additive waste and whole purchase increments for each result. Review net, waste-added, adjusted and purchase quantities plus rounding surplus separately. Mixed compatible units work; formulas still use net quantities.
  • Waste and purchase rounding default off. Selected blanks, invalid sizes and incompatible units refuse the preview. Rounding is upward from the actual numeric result, including tiny floating-point excess, not a hidden tolerance.
  • This remains a temporary, unpriced worksheet discarded on close. Product and cost-code fields are notes, not catalog mappings or price-book links. Nothing changes drawing quantities, prices, saved assemblies or exports automatically.

3.311 #

Review conditional quantities and inherited assumptions

  • The Assembly formula calculator now supports unit-aware conditions such as including a quantity only when thickness reaches 150 mm. Both branches are checked for compatible units; only the chosen expression branch runs.
  • Enter declaration defaults and a named parent input set, then explicitly choose which inputs inherit and which use local overrides. The preview shows every effective value, unit and source. Zero overrides; an entered blank or invalid value is an error, not a silent fallback.
  • Parent/default fields expand on demand and remain keyboard accessible. Editing clears old results; closing discards the worksheet. This is still temporary and unpriced: no automatic project/section inheritance, saved assemblies, drawing-quantity links, pricing, waste or purchase rounding.

3.310 #

Check quantity formulas with explicit units

  • Open Tools > Assembly formula calculator in Lite or Pro. Add typed inputs and result formulas, enter explicit metric or imperial units and calculate volume, mass, time and other supported quantities. An editable slab example helps you get started; its density and productivity are illustrative assumptions.
  • Incompatible units, blank values, circular references and invalid arithmetic show errors instead of partial quantities. Editing clears old results, and added or removed fields remain reachable by keyboard.
  • This is a temporary, unpriced worksheet. It does not change drawing measurements, takeoff totals, price books or exports. Closing discards the worksheet. Saved assemblies, measurement links, waste and purchase rounding are not included.

3.309 #

Start takeoff from a trade kit or your own local template

  • Find named tools in nine searchable trade starter kits. Preview a kit, add it as a separate Tool Chest set, then choose an item to draw. Enter or Space can activate a saved tool without triggering canvas shortcuts.
  • Save customized takeoff sets as local template revisions. Export a revision or review an imported template before adding it; imports never overwrite your existing history. Cancel leaves your library and drawing unchanged.
  • Template JSON exports use browser downloads on the web and the native Save As dialog on desktop. PDF and other export choices are unchanged.
  • Templates carry supported tool names and appearance, not prices, quantities, source geometry, calibration or approvals. Set the target sheet scale; Wall/Volume still ask for dimensions. These are local tool recipes, not shared company libraries or whole-project/assembly templates.

3.308 #

Repeat takeoff with straight and curved traces

  • Reuse a chosen condition while drawing new mixed straight/curve Length, Perimeter, Area, Volume or Wall measurements. Click for corners and press-drag a vertex for curve handles. Perimeter remains a closed-run measurement, not an open Length. The reuse help explains finishing, undoing vertices and canceling.
  • Target-sheet calibration remains independent. Explicit source height/depth units are retained, typed dimension conflicts are not overwritten, and each completed reuse is one Undo step. Source geometry and pricing are not copied.
  • Invalid or unsupported path geometry refuses reuse. Straight cutouts on supported curved area/volume outlines retain the existing deduction rules; curved cutout rings are still unsupported and are not priced as straight chords.

3.307 #

Prepare plans and repeat takeoff

  • Review drawing numbers and titles in an editable preparation table before applying selected changes. Ordinary PDFs and Sets retain their sheet metadata; duplicate resulting numbers are refused and one Undo restores an Apply. Native text is read first, with bounded local OCR for unread regions. Always inspect suggestions; this does not guarantee every title-block layout or scan.
  • Review scale suggestions and exceptions before applying them. Known-length calibration remains explicit. Search and group sheets by discipline, building, floor and revision without rearranging the source pages.
  • Reuse an explicitly chosen takeoff condition for independently drawn geometry. Named parent/child sections organize quantities; explicit section defaults affect new reuse, not existing measurements. Target-sheet calibration remains separate, source geometry is not copied and pricing reuse is off by default.
  • Enter a count, length, area or volume from a cited schedule/document with explicit units and a reason. Entered quantities stay separate from traced measurements and do not depend on page scale. Changes have normal Undo/Redo and job History. Source and reason travel as public job information.
  • Editable copies show entered quantities as warning notes in older readers, whose totals do not include them. Updated readers restore validated quantities; disagreements between a legacy note and stored quantity require review. Live-session entry editing remains unavailable.
  • Inspect a selected length, perimeter or wall run's individual and cumulative segment lengths, including supported curves, and export an unrounded CSV report. Reporting does not add geometry or double the measured quantity.

3.306 #

Faster completed sheet images in Lite

  • Eligible sheets can draw their complete image faster using an on-device PDFium worker. This accelerates the real image, not just a preview. Detection, OCR, snapping, printing and export continue to use PDF.js.
  • Annotated/form pages, rotated or unusual page geometry, changed drawing-layer visibility and devices with insufficient or unknown memory keep the PDF.js path. Native worker failures also fall back to PDF.js; obsolete native work is discarded.
  • Lite Settings now includes PDF.js compatibility mode. Reopen the PDF to apply a renderer change. The fast display can look different, especially fine lines, text and image smoothing; takeoff geometry and quantities do not use that image.

3.305 #

Earlier content on dense sheets and responsive new zooms

  • A first visit to a complex sheet can show a partial preview while its full image is still drawing. The "Rendering…" indicator stays until the final image is ready. Partial previews never feed detection, OCR or exports.
  • Zoom immediately resizes the last complete image, even when other PDF work is ahead of it. The sharper replacement still finishes in the background; very dense CAD sheets can still take several seconds to complete.
  • The current visible sheet also goes first when the browser reports several sheets entering view together, rather than following browser callback order.

3.304 #

Faster repeat zooms and sheet revisits

  • Recently viewed sheets reuse their warmed-up image at the same zoom and display resolution instead of drawing the PDF again. The view-only image cache has a 48 MiB pixel budget and is cleared when the document or drawing-layer view changes.
  • The current sheet goes ahead of buffer neighbours in the render queue. Obsolete display work stops at the next PDF rendering pause when a newer view owns it.
  • Detection, OCR, measurements and exported PDFs do not use these cached images. A first visit to a complex sheet or a new zoom can still take time to draw.

3.303 #

Large plan sets and Cloud sharing

  • Page thumbnails load near the visible part of the Pages panel, rather than drawing the whole set in the background while you work on a sheet. Foreground sheet work can interrupt a background thumbnail.
  • Zoom keeps the last complete sheet image visible until its replacement is ready. Very detailed sheets still take time to decode and draw.
  • Cloud links support prepared PDFs up to 512 MiB, subject to existing storage quotas. Uploads stream to disk instead of accumulating the whole PDF in server memory. Partial uploads are removed when they fail.
  • Sharing checks the server's size limit before preparing the PDF, checks the prepared size before upload, shows upload progress, and offers Cancel. Size, quota and connection problems now have useful messages instead of a bare fetch error. Closing Share or changing documents cancels the current request.
  • Cloud sharing waits for the complete file and its options before creating a link, including a password supplied after the PDF in the upload request.

3.302 #

Reuse a condition you already set up

  • Set up a takeoff condition once, then reuse it on another markup instead of answering the same questions again. The item it writes to, and the answers that come with it, come along.
  • Renaming the item while you reuse it, then changing your mind, leaves the original name untouched - the cancel really cancels.
  • A curved segment can't reuse a condition yet, and now says so instead of reusing it silently and giving you a figure the curve was never part of.

Faster drawing on dense sheets

  • Drawing and reusing on crowded sheets now keeps the pane responsive, even on large takeoffs.

3.301 #

A double-click finishes exactly what you clicked

  • Two clicks of an Area, then a double-click on the first point, used to save an Area of 0 sq ft. It now saves nothing: an Area needs three corners. The same goes for a Perimeter, Volume, Space, Polygon or Cutout, and the Pen keeps the open line you drew instead of a closed shape of nothing.
  • A double-click on an Angle's vertex used to save an angle of 0.0 degrees. The Angle now keeps waiting, and your next click measures it.
  • A double-click whose second click lands a pixel or two from the first no longer adds a tiny extra segment to a length or an extra corner to an area. Pressing and dragging from the last point still bends that point as before.

Cutouts say why they were not applied

  • A cutout that cannot be deducted now says "The cutout wasn't applied. Check its boundary; no area was deducted." and then why: its boundary crosses itself, it has zero area, or it is too small to deduct from that area.
  • A cutout whose boundary crosses itself is no longer attached. It used to be attached, and the whole Area then dropped out of your totals until the cutout was removed.

Trace Walls

  • The length beside the wall count covers the walls counted. Inside a box it used to give the length of every wall on the sheet.

3.300 #

Editing after placement: move, double-click, select all, clipboard, lock, order, close

  • A drag, a nudge, Align, Distribute, Duplicate and Paste move every part of a markup, including a detected room's caption anchor, which the drag used to leave behind.
  • Select All (Ctrl+A, Edit > Select All) selects the markups on the current sheet's visible layers, in the desktop app and in the browser.
  • Closing the desktop app with unsaved markups asks first, naming the documents, after the recovery copy is written. Ctrl+R no longer reloads the app.
  • Align and Distribute measure a rotated markup by the box you see, and a command that would change nothing leaves no undo step.
  • Cut, Copy, Paste and Paste in Place for markups (Ctrl+X / C / V / Shift+V, the Edit menu and the right-click menu). Paste lands centered on the pointer, or in place, with a fresh identity and one undo step. A locked markup is copied, never cut.
  • Lock and Unlock a markup from the right-click menu or its Markups row.
  • Bring to front, Bring forward, Send backward and Send to back from the right-click menu.
  • The Edit menu's clipboard commands stand down while a text field has focus, like Select All and Delete.
  • A pasted or duplicated punch pin takes the next number; it used to repeat its source's number.

3.299 #

Text fields keep their keys, bookmarks and page operations keep the document whole

  • Select All, Delete, Undo and Redo from the Edit menu stand down while a text field has focus, so Ctrl+A in an empty search box no longer selects every markup. The Markups pane keeps the field's focus and caret across its re-renders.
  • Every imported bookmark gets its own id; each Bookmarks panel edit is one undo step; a bookmark that no longer exists says so.
  • Deleting, moving, duplicating or inserting pages keeps the document whole: page labels follow their sheets, bookmarks, links and form fields never point at a removed sheet, and Extract writes the selected sheets with their labels, their bookmarks and their markups flattened in.
  • Add to Tool Chest is offered only for a markup a tool draws, and a chest item that names no tool says so instead of arming nothing.
  • The Custom Columns dialog restores the calibrate inputs exactly as the page wrote them.
  • A sheet's own page label shows in the Pages list, the status bar, the sheet-delete question and a new bookmark's default name.
  • The Space tool draws a rectangle from a press-and-drag of the first corner, with the same name prompt as a traced space.
  • Extracting sheets from a tagged PDF (spec books often are) no longer carries the other sheets inside the file where any PDF tool could read them. The extracted copy is untagged.
  • Ctrl+Z pressed while a trace is in progress still takes back the last point when the page-number box has focus.

3.298 #

Batch tools include your markups, redact per page, Bates, signatures, sessions

  • Combine, Batch Header/Footer/Bates and Batch OCR flatten a working file's markups in first, so the combined or stamped copy shows them. The line says how many were included.
  • The start screen tip says what Save does: it keeps your markups editable; Export flattened PDF sends a copy anyone can open.
  • Batch redact decides page by page: a sparse text sheet redacts; a scanned or picture page refuses by name, so a term the OCR could not read is never reported as redacted.
  • A Bates range starting at 100 numbers its first stamped page 100.
  • A header or footer box that holds {bates} is the Bates number; the positional stamp is not printed twice.
  • Sign into the chosen signature field of a form. A file without a field is signed in the corner as before.
  • In a live session another attendee's markup is locked for you: it keeps counting but only its author can change it, and a refused change says whose it is.
  • A guest the session renames because the name is taken ("Guest (2)") can edit and delete their own markups.
  • Batch redact finds a term on drawings whose text is stored one letter at a time, and boxes every occurrence; it used to miss most of them on those sheets.
  • When two signature fields share a name, the one you pick is the one signed, and the success line names its page. A new signature field never repeats a name the form already has.
  • Page stamps work when the date or the file name uses non-Latin characters; the date prints with Latin digits.
  • The batch note counts only the markups it flattened in and names the ones on pages the file does not have.

3.297 #

Compare revisions, Room fill, symbol detection, Detect Runs

  • Compare revisions pairs a set with readable sheet numbers against one without them by page order when the page counts match, and says so in the report. Changed and removed sheets name the committed takeoff on them, for example "3 takeoff items: 96 ft2 area, 10 ft length, 3 ea".
  • Room fill stops at doorways the way Detect Spaces does, so a click in a room no longer floods through an open door into the corridor, and an alcove smaller than a room stays with its room.
  • Symbol detect and Find by image build the search image from the symbol's ink on the page grid and weigh each candidate by its parts, so a look-alike box with a different inside scores lower and a real copy is found at the sheet's edge.
  • Detect Runs with no line class ticked measures nothing and says so.
  • Doors seal at 1.1 m in real units in Detect Spaces and Room fill on a scaled sheet.
  • Room fill used on a page before it was calibrated now stops at doorways once the page has a scale; it kept the uncalibrated settings until the document was reopened.
  • Compare revisions shows its "duplicate sheet labels" warning in the report; it used to vanish before you could read it.
  • Find by image matches a symbol drawn next to a wall line as well as one standing alone.

3.296 #

Fill, sequence numbers, square and circle, double-click

  • One fill rule: Rectangle, Ellipse, Polygon, Cloud and Callout take the shared Fill; every other tool draws without a fill, and the property bar shows Fill exactly for those five. A stray fill in an older file is ignored on screen and on paper, and never rewritten.
  • Double-click a sequence badge to renumber it; the badges after it count on. New badges number per document.
  • Hold Shift while drawing a Rectangle or an Ellipse for a square or a circle.
  • A real double-click on a markup under Select works again: it inserts a vertex on a selected edge and steps into a group. A plain click repaints a moment later so the browser can deliver the double-click.
  • A double-click on a text box or callout that sits on a room edits the note; the room underneath no longer moves with the click.

3.295 #

Text boxes and callouts behave like text boxes and callouts

  • Text wraps at the box edge, on screen and on paper, and the box grows to fit the text when you finish typing or re-edit.
  • A callout's leader runs from its tip to the middle of the nearest side of the box, ending in a dot, the same on screen and in the flattened PDF. Resizing the box no longer drags the tip; a round knob on the tip moves it.
  • A callout can be placed with two clicks: the first sets the tip, the second places the box. Press and drag still works.
  • Fill "none" on a text box or callout prints as no fill. It used to print a red box.
  • Left, center and right alignment of a callout are drawn on screen and on paper.
  • Double-click a text box or callout under Select to edit it again.
  • Leaving a text box without typing returns to Select, and the click that left it reaches the canvas.

Fixes found by checking the merged work

  • A label holding a stray control character (the apostrophe byte some drawings carry in their text layer, for example in a room name read off the sheet) no longer stops Save, Print, Share, Stamp or the PDF reports from writing: it prints as the apostrophe it stands for.
  • A stroke, text or stamp color written in any CSS notation (a three-digit hex, a named color, rgb()) prints in that color. The PDF used to read six-digit hex only.
  • The flattened PDF keeps the minus sign of a cutout suffix: "(-1 cutout)". It printed "(1 cutout)".
  • An arrow in a label prints as its own ASCII: a left arrow as "<-", a two-way arrow as "<->". Every arrow used to print as "->".
  • An Area or Volume that cannot be measured shows its reason on the canvas and on paper, also when it has a cutout.
  • A highlight prints at the opacity it shows on screen.
  • The price-book switch question and a crew-rate change round a half cent the way the panes do.
  • Switching documents (or deleting pages) drops an unfinished callout, trace, arc or pen line, so it can never land in the other document.
  • A Callout click and a Calibrate click are clicks at any zoom: a tiny hand movement at low zoom no longer turns them into a drag.
  • A double space where a text box wraps no longer adds an empty line to the box.
  • The README's quick start says what Save does: it keeps your markups editable; Export flattened PDF sends a copy anyone can open.

3.294 #

Counts by room, Calibrate by two clicks, formulas as typed

  • A count whose marks fall in several rooms is filed under each room, mark by mark: "Room A (2), Room C (2)". It used to land whole under one room in the middle.
  • Calibrate takes two clicks on the ends of a known dimension as well as a drag. Esc, Undo or a tool change after the first click drops it.
  • The README and the tool help say what the tools do: Enter or a double-click finishes a trace, Esc cancels it.
  • A custom-column formula typed with the minus, multiplication and division signs from a keyboard or a document (U+2212, x, the division sign) is read as typed, and 1e3 is a number. The help lists the operators the formula box accepts.

3.293 #

Editing a markup mid-gesture, one count mark at a time, cutouts by hand

  • Undo while a drag is held cancels the drag, exactly as Esc does, and says so. Redo while a drag is held does nothing and says so. The undo history is never touched by either.
  • One mark of a count can be removed: Alt+click its ring, or right-click it and choose "Remove this mark". Removing the last mark removes the count.
  • Count, sequence and issue markups move but never box-resize, so a drag on one can no longer distort it.
  • A cutout (a hole in an Area or Volume) has its own vertex handles, and a right-click inside it offers "Remove cutout". The label and the Markups row read net and gross, for example "90.00 ft2 net, 96.00 gross (-1 cutout)", on screen and in the flattened PDF.

3.292 #

Every export says what the app says

  • One rounding rule everywhere: the canvas label, the panes, money and every export round a tie the same way, so $1.005 is $1.01 on every surface.
  • The Takeoff Summary PDF prints the pane's "Not in totals" sentence, so a reader of the PDF knows what the totals leave out.
  • A priced markup that cannot bill yet (no depth, no height, no scale) is a pending line, not a counted one. Every surface says why, for example "needs a depth", and the money is unchanged.
  • The Takeoff CSV gains a last column, Markup ID, so a row can be traced back to its markup.
  • A line break typed into a label prints as one space in every PDF writer.
  • The CSV and workbook Created cell shows the same local wall time the Markups pane shows.
  • "Lines" means the same count on every surface: estimate lines. The JSON hand-off adds totals.lines; totals.lineItems now equals the number of line items it lists.
  • The MTO export schema document lists exactly the keys the JSON writes.
  • Every CSV TRACEBUILD saves starts with a UTF-8 byte-order mark, so Excel opens ft2 and ft3 as written instead of "ftA2".

3.291 #

Scales, angles and locked markups tell the truth

  • A scale typed into Calibrate, Apply to all pages or the Profile scale box is checked by the same rule that checks a saved job when it reopens. Until now a number the dialog accepted could be refused on reopen, so a job calibrated all session came back uncalibrated with nothing said. The dialog now refuses an out-of-range length on the spot, says why, and stays open.
  • An angle measured on a profile sheet (different horizontal and vertical scales) is now the real angle of the drawn slope, on the canvas, in the Markups pane and in the CSV. It used to be the angle on paper: a 7.6 degree slope on a 10x profile read 53.1 degrees.
  • Duplicate, Align, Distribute and the arrow keys now move a detected room's dashed outline with the room. The copy's outline used to stay on the original.
  • A Delete that keeps locked markups says so: "2 locked markups left as they are."
  • The markup contract and inventory describe the arc tools as the live tools they are.

3.290 #

Fixes from a full tool audit

  • Double-click now finishes a measurement. Before, a double-click left a Length, Area, Perimeter or Volume trace open, so the next clicks quietly joined it: two lengths could come out as one longer one. Enter worked and still does.
  • Compare revisions now finds moved, added and removed walls and lines. Before, changes to thin linework were missed and the sheet was reported unchanged. Comparing takes about twice as long per sheet, and a moved wall shows two clouds: where it was and where it went.
  • The Internal estimate PDF prints exact cents, and crew rates exactly as you entered them. Before, every figure was rounded to whole dollars, so rows did not add up to the totals.
  • Excel workbooks keep full precision, money columns always show cents, and each column adds up to its own total. Large amounts no longer show as "########".
  • On metric sheets, the cursor position and the line lengths in Detect Runs and Trace Walls read correctly. They showed figures 1000 times too large.
  • Select All no longer selects markups on hidden layers.
  • Duplicate makes a copy that is yours: your name, the current time, no review status and no comments carried over from the original.
  • When you close a curved measurement on its first point, the preview now matches the result.
  • A cutout that encloses no area is refused with a clear message instead of a "(-1 cutout)" label that subtracted nothing.

3.289 #

Markups from newer versions stay exactly as they were

  • A job saved by a newer version of TRACEBUILD can hold markups this version cannot read yet. They are kept safe and saved back unchanged. Until now, though, AI Estimate and the cost pickers could still put a price on them or clear one, quietly changing work you could not even see. AI Estimate and AI Auto-Takeoff no longer price them, a cost picked by hand or by a script leaves them unchanged, and the status line says when a selection included some: for example "3 markups from a newer version were left unchanged." They are saved back exactly as they were opened.

3.288 #

Every markup keeps its own identity across sessions

  • A job saved, closed and reopened could quietly end up with two markups sharing one internal label. Selecting, deleting or locking one of them then reached the wrong markup, or both at once. Every markup now keeps a label of its own, however many times a job is saved, reopened, restored after a crash or shared in a live session.
  • Jobs saved by earlier versions are repaired as they open: where two markups shared a label, the first keeps it and the other gets a new one, so everything that pointed at a markup still points at the same one and every room is still priced exactly once. The repair is saved the next time you save.

3.287 #

A room drawn on two sheets is priced once

  • Floor plans repeat: an architectural plan and a finish or plumbing plan often draw the very same rooms, and before this version taking off both copies billed the room twice without a word. TRACEBUILD now recognizes sheets that draw the same floor plate and prices each room ONCE - on the first sheet that carries it - whatever order you detect, accept or price in.
  • "Keep all" says when it holds duplicate copies back: "5 already taken off on sheet 2." Accepting a copy row by row is still your call - the audit then shows one Cross-sheet error naming both sheets, the rooms, and which copies are priced.
  • If the priced copy of a pair is later rejected, discarded or deleted, the audit warns that accepted rooms are left unpriced, and one click of Estimate's AI Estimate prices them again - its line also says when a duplicate's machine price was taken off.
  • Clearing a cost by hand now sticks: the automatic pricing passes leave a room you cleared alone instead of quietly pricing it again.
  • Sheets whose set labels name two different levels are never treated as one floor plate: stacked floors stay separate takeoffs, and renaming the sheets to name their levels separates them, with the audit pointing at the one-click re-price.
  • The recognition is remembered with the job - it survives saving, reopening, crash recovery and sharing - and it can be switched off, which returns the app exactly to its old behavior.

3.286 #

Scale the whole set is one undo step

  • "Scale the whole set" used to write each sheet's scale as its own undo step: scaling three sheets took three Ctrl+Z to take back, and the first press silently unscaled only the last sheet. The whole command is now ONE step - one Ctrl+Z takes every sheet back - and it ends the way the set-wide auto-scale does: a line naming the sheets it scaled and a toast whose Undo takes them all back for good.
  • A sheet you scale by hand while the walk is reading notes keeps your scale. If the drawing changes mid-walk (a tab switch, an open), nothing is written at all.

3.285 #

Your confirmed views and doorway seals now stick

  • Answering "Use these views" or confirming proposed doorway seals is remembered for good: save and reopen the job, switch tabs, or restore after a crash, and your confirmations are still there. Before, every one of those ordinary acts quietly threw them away - the views dialog asked again and sealed doorways came unsealed, so re-detection undid your corrections without a word.
  • Confirming makes the item your own work. Undo still takes a confirmation back in the session, and everything you never confirmed stays a proposal exactly as before.
  • One catch, one time: jobs saved before this version could not record the confirmation properly, so the first open under this version asks once more. From then on it sticks.

3.284 #

Detection now searches the views where your work is drawn

  • After "Use these views", Detect Runs searches more than the floor plan: electrical views and trade plan views (PLUMBING PLAN, DUCTWORK PLAN, HVAC PLAN and the like) now give up their service-tagged runs - the 3/4" C conduit or 2" CW pipe drawn beside the floor plan lands in your takeoff instead of silently going missing. Only tagged runs are taken from those views, so the floor plan's walls and grid are never re-proposed as phantom runs.
  • A sheet with no floor-plan view no longer stops at a dead end: detection simply runs on the whole sheet, the same result as picking "Detect whole sheet" yourself. Trace Walls on such a sheet traces every view.
  • A routed run now ends on one honest line: what it found across the views it searched - "Found 10 run candidates across 2 views" - and, when a view was left out (a ceiling plan, a demolition plan), the line names it and says how to include it. No more reading the last view's count as the whole sheet's.

3.283 #

Adding the same symbols twice no longer counts them twice

  • Symbol Detect and Visual Search now skip symbols that are already in your takeoff. A second Add of the same item on the same sheet - from either tool, or from a sweep across sheets - commits only the new ones and says plainly what it skipped: "8 already counted - nothing added", or "Added 4 ... - 8 already counted".
  • Already counted means a committed count of the same item on that sheet, matched within half your template's smaller side - the same idea Resume Count already uses so a re-detect never duplicates an accepted point.
  • An Add that finds nothing new changes nothing: no empty undo step, and the bar stays open so you can adjust and try again.

3.282 #

Flip Owner keeps the door schedule honest

  • Flipping which room owns a door now follows the same rule as everything else that counts: a door flipped onto a room you have not Accepted leaves the door schedule with it, shown dashed as a candidate, instead of staying counted under a room nobody approved.
  • The flip says what it did, right on the status line: "Door moved to COUNSELING 1A15 as proposed. Door schedule 4 counted -> 3. Undo restores it." A flip between two accepted rooms says the door moved and that the count is unchanged.
  • One Undo takes the whole flip back - the owner and the counted state together.
  • Saving and reopening now agrees with what you saw: before this fix, reopening quietly moved such a door back and the schedule changed behind your back.
  • A flip never silently promotes: a candidate door stays a candidate whichever room it is flipped onto, until you Accept its room.

3.281 #

Your exports now say which rows count

  • Every takeoff CSV and Excel export gains a "Counted" column, added as the last column so your existing spreadsheets keep working. Each markup row says plainly whether the totals include it: "counted", "proposed - not counted", "unreadable - not counted" or "no value - not counted".
  • The old "Status" column is renamed "Review mark", because that is what it is: a note from your review, never a counting decision. What counts is decided one place only - a detection you Accept counts, and hand-drawn work always counts.
  • In the Markups panel, a detection proposal's row now reads "proposed - not counted" right beside its figure, and clicking a review-mark pill on a proposal tells you where real accepting lives: "Accept it in Detected Spaces to count it."

3.280 #

Slip sheet keeps you in charge of your takeoff

  • Slip sheet now asks before it replaces anything, and the question names exactly what the replaced sheets hold: the counted areas with their square footage, lengths, counts and doors, hand-drawn and accepted work alike, plus any detection proposals nobody accepted yet.
  • One Undo is offered right after the replace, in a toast, until your next page change: it brings back the replaced sheets, their markups and every counted quantity.
  • Replacing a sheet now also clears what belonged to the old drawing: confirmed views and seals, the legend region, learned wall hints and rejected detections. Before, they lingered on the new drawing. The door schedule updates at once, so a door of a replaced room never shows as "(unassigned)".
  • The replaced sheet's scale is kept so your measurements stay in real units, and the scale readout says "from the replaced sheet - verify" until you confirm or recalibrate it.
  • The History panel records the slip with the figures it removed, and records the undo.

3.279 #

Groundwork for reading schedules off your drawings: keeping every stroke of the lettering

  • Finding a schedule's columns no longer takes strokes away from lettering drawn as lines. A line counts as part of the table's ruling only when a rule really lies along it, so characters keep their shape and read better: on the test pages, headers read correctly went from 29 to 40 of 46.
  • A visible dot, dash or minus sign counts as ink even when the stroke itself is tiny: a decimal point is never taken for an empty cell, and a lone small mark is flagged for a look rather than trusted as a value.
  • A schedule whose lettering is turned on its side within the page is listed with the plain reason that reading it is not available, instead of being read wrong without a word.
  • A schedule whose remarks or notes were not read is never described as fully read.
  • A lighting fixture's wattage now counts among the values that must be read right, because TRACEBUILD uses watts in load calculations and pricing.
  • Nothing you see or export changes yet. This is the groundwork for the schedule reader in TRACEBUILD Lite and Pro.

3.278 #

Groundwork for reading schedules off your drawings: lettering drawn as lines

  • Many CAD drawings have no text you can select: the lettering is drawn as lines. TRACEBUILD can now read a ruled door, lighting fixture or plumbing fixture schedule lettered that way, by reading each cell on your computer, nothing sent anywhere.
  • Every value read this way is a candidate for you to check. A value it may have misread is flagged for a look: a low-confidence reading, two readings that disagree, a size missing its feet mark, a letter where a number belongs, lettering touching a rule, or a symbol beside text.
  • A cell with marks it cannot read is said to be unreadable, never shown as blank, and a drawn fixture symbol is kept as drawn.
  • Reading stops promptly when you stop it, and a sheet that runs out of time says it was only partly read.
  • Nothing you see or export changes yet. This is the groundwork for the schedule reader in TRACEBUILD Lite and Pro.

3.277 #

Groundwork for reading schedules off your drawings: reading the cells

  • TRACEBUILD can now read a ruled door, lighting fixture or plumbing fixture schedule on a sheet with a text layer into its title, header and rows, and tell what each column holds: the mark, the width and height, the door type, the fire rating, the lamp, the voltage, the hot and cold water and the rest.
  • A cell drawn with lines instead of text, such as a fixture symbol, is kept as drawn and never shown as blank.
  • A cell it may have misread is flagged for a look: text running across a rule, a raised or stacked fraction, text turned in its cell, letter-spaced text, a missing mark, or rows that may not be ruled.
  • A schedule it does not read yet is listed with the reason: lettering drawn as lines, a table turned within the sheet, a table with no rules under its title, or a kind such as a panelboard. A schedule continued from another part is read as its own part and says so.
  • TRACEBUILD Pro reads on your computer only. A reader that would need the internet is refused.
  • Nothing you see or export changes yet. This is the groundwork for the schedule reader in TRACEBUILD Lite and Pro.

3.276 #

Groundwork for reading schedules off your drawings

  • TRACEBUILD can now find the ruled tables on a sheet from the lines drawn on it: every row and column of a schedule, in the order you see them on screen, whichever way the sheet is rotated.
  • Only lines that are really drawn count. Clipping outlines, white masking and filled shapes are never taken for table lines, and long lines drawn a hair off square still are.
  • A schedule drawn cell by cell, one whose top edge is the sheet border, or one joined to the panels around it is still found as one table. Title and revision blocks are kept apart from your schedules.
  • Text is grouped into words the way you read them, including CAD text placed one letter at a time and text turned on its side, and bold header text is told apart from the rest.
  • Each sheet is read within set limits. If a very large sheet reaches one, TRACEBUILD says it stopped part way and never presents part of a sheet as the whole.
  • Nothing you see or export changes yet. This is the groundwork for the schedule reader in TRACEBUILD Lite and Pro.

3.275 #

TRACEBUILD Pro: your estimate is built in one pass, and each line knows which markups it sums

  • Building your estimate summary (what the Estimating workspace, the MTO workbook, the internal estimate PDF and the takeoff JSON show) used to go over your priced markups three times. It now goes over them once.
  • Each line of the estimate now knows which markups it sums, and how many of them are priced in a unit that cannot bill their measurement.
  • Nothing you see or export changes: the same lines, quantities and totals, and the same files, byte for byte.

3.274 #

TRACEBUILD Pro: a live session shares no pricing unless you choose to, and Save As makes a copy you can send

  • A live session used to hand every attendee your price book and every markup's price: the file you had open went out as it was (a working file carries your whole price book), and each markup carried its cost item. Now attendees get the drawing and the markups, with no price book and no prices.
  • To share your pricing for one session, tick Share my pricing with attendees when you start hosting. It is off every time you host, and it never sends a row from a licensed price feed.
  • Save As > Share-safe copy writes an editable copy of the job without your price book, crew rates, markups, activity history or detection settings. Comments and replies go only if you tick Include comments and replies, and reviewer names only if you also tick Include reviewer names. Before you save, the dialog lists what the copy includes and leaves out, and reminds you that comments and drawing content may contain sensitive information.
  • Saving a share-safe copy leaves your working file as it was: still the open document, under its own name, with its unsaved work and its recovery copy.
  • Your working file is named for what it holds: in Save As it reads Working file - editable, includes your price book. The first time you save one, a note says so once and points you to the share-safe copy. It never stops your work and it does not come back.
  • Attendees who join on your network now open the drawing you host, the same as attendees who join online.
  • A locked PDF that carries attached files cannot be hosted, because those files cannot be checked before they leave: save a decrypted working copy to host it. A locked drawing with no attached file is still hosted as it is, without your pricing.

3.273 #

TRACEBUILD Pro: every priced export asks who it is for, and says what it includes

  • The estimate PDF, the MTO workbook, the estimate CSV, the takeoff JSON, the Excel export and the bid schedule all carry your prices, crew rates and markups. They used to write them out with no word, and the PDF was called a proposal.
  • Now each of them asks first, in one question that says what your job holds (in counts, never in dollars) and what each answer includes and leaves out: Internal estimate, for you and your team, or Quantities only, for sharing. Quantities only is the highlighted choice, so pressing Enter shares no prices. Cancel or Escape writes nothing.
  • Quantities only writes the Takeoff Summary PDF, the takeoff workbook without prices, or the takeoff CSV. None of them carries a price, a crew rate, a markup, an item from your price book or a row from a licensed price feed.
  • For now the detailed PDF is the Internal estimate PDF: its cover reads "INTERNAL ESTIMATE - contains costs, crew rates and markups", every page reads "Internal estimate - not for client distribution", and it saves as *-internal-estimate.pdf*. To share with a client, use the Takeoff Summary PDF - quantities only. The MTO workbook, the estimate CSV and the takeoff JSON say they are internal too.
  • The Excel export writes its Estimate sheet only when you choose Include the internal Estimate sheet, and that sheet is titled internal.
  • The client bid schedule waits for loaded prices: it printed your direct cost as the unit price, with no overhead, profit, contingency, tax or bond. The same pay items are still there as the Direct-cost schedule - internal use, which says "Excludes overhead, profit, contingency, tax and bond." at its top and bottom.
  • The bid schedule now always includes the welds and hangers TRACEBUILD works out from your takeoff, so its total matches the Estimate even right after you open a file. It used to leave them out until the Estimate had been shown once.
  • If the job changes while an export is being prepared, nothing is written and the status line says so. A long estimate PDF builds behind a progress bar with a Cancel button that writes nothing.

3.272 #

TRACEBUILD Pro: a price book tells you what it does to your job before it does it

  • Switching the active price book, deleting it, loading the starter library into it, importing a CSV as a new book and starting a new book with + New all change the book your open job is priced from. They used to do it at once: every markup priced from an item the new book does not have lost its price, and the status line only named the book.
  • Now, when one of them would change a price in the open job, TRACEBUILD asks first and says how much, for example "Switch to Supplier B? 3 priced markups lose their price ($7,093.50 -> $0.00). You can switch back." Keep this book is the highlighted choice, so pressing Enter changes nothing. Delete also names the book your job moves to.
  • When you go ahead, one Undo brings back the book and every price, and the status line says what changed: "Active price book: Supplier B. 3 markups lost their price ($7,093.50 -> $0.00). Undo restores them."
  • + New and Import as book can make the book without switching to it: choose Create only or Import only and your job keeps every price.
  • Load starter library now keeps the starter items your job is priced from. It used to give every starter item a new identity, so even a job priced only from the starter lost every price.
  • An action that changes no price in your job works exactly as before, with no new question.
  • Changing a crew rate tells you what it does to the open job, for example "Set Pipefitter / Plumber to $190.00/hr - this job: +$3,904.50 on 4 lines.", and one Undo puts the old rate back.
  • A file you receive now prices with the crew rates it was saved with, on any computer. The welds, hangers and labor TRACEBUILD works out from your takeoff used to be priced at the crew rates of whoever opened the file, so the same file could read $6,855.50 on one computer and $9,173.50 on another.

3.271 #

Resume Count: add your own clicks to a detected count you accepted

  • When the detector found most of an item and you accepted its count, you can now add the ones it missed to that same count. Select the accepted count and choose Resume Count, in the property bar beside the item name or at the top of the right-click menu. Each click adds one mark to it, and the status line says so once: "Resuming the detected count for Receptacles - each click adds a point to it" (with your item's name).
  • The count then tells you how many marks were detected and how many you added, for example "Receptacles: 27 - 24 detected and accepted, 3 manually added". You see it on the Markups row, under the item in Takeoff by Item, in both legends, in the Takeoff Summary PDF and the takeoff file, and in a Count detail column at the end of the CSV and Excel exports. The quantity is the whole count, the same number as before.
  • Resume Count is offered only for a detected count you have accepted. It is never offered for a proposal you have not reviewed, and never for a locked count. It ends when you pick another tool, pick Count again or select something else. A click it cannot take, such as one on another sheet, goes into your own Count tally and the status line says so.
  • A plain Count still keeps its own tally beside a detected one, as before.
  • Your added marks stay when you run detection again, use Clear detected takeoff, save, or move, rotate or crop the sheet. Running Detect runs again never proposes a fitting you already have, whether the detector found it or you added it by hand.
  • Files saved before this version open exactly as before.

3.270 #

Layout profiles keep your System theme

  • A layout profile (Settings > Preferences) saved while the theme was set to System remembered only the light or dark it showed at that moment, so applying it pinned your theme to that Light or Dark, and TRACEBUILD stopped following your computer's light or dark mode.
  • A profile now keeps the theme choice itself: one saved with System applies System again and keeps following your computer, and the profile list says System. Profiles saved as Light or Dark apply as before. A profile saved before this version still applies the light or dark it recorded; to have it follow your computer, set the theme to System and save the layout as a profile again.

3.269 #

TRACEBUILD Pro: Try a real bid set opens the demo set

  • In TRACEBUILD Pro, the start screen's "No plans handy? Try a real bid set" button answered "Could not load the demo set: Failed to fetch" instead of opening the demo set, because the desktop app did not include it.
  • Pro now includes the 10-sheet demo set (public-domain USACE clinic drawings) and the button opens it, ready to try Detect on the floor plan or HVAC sheet, or Scale the whole set. TRACEBUILD Lite opened it before and is unchanged.

3.268 #

TRACEBUILD Lite no longer lists Bid schedule, a Pro export

  • In TRACEBUILD Lite, Measure > Civil / Site listed Bid schedule (CSV). Bid schedule exports your priced takeoff, and Lite does not price markups, so clicking it could only tell you to assign cost items from an Estimate menu that Lite does not have.
  • Lite now leaves it out of the menu, like the other Pro features, and it does not show even for a moment while the app loads. The rest of Civil / Site (Average-end-area, Grid cut / fill, Stationing and Rebar weight) works as before, and TRACEBUILD Pro is unchanged.

3.267 #

Go to markups and the Markups list bring the markup into view

  • Go to markups in the QA panel now selects every markup a finding names, not just the first, and centers them on the screen. Before, the markups it named could stay off screen, and only one of them was selected.
  • Clicking a row in the Markups list now centers that markup on the screen and selects it, instead of jumping to the top of its sheet (or not moving at all when the markup was on the sheet you were looking at).
  • Both keep your zoom: the view moves, it never zooms in or out. If you click a second row before the first one's sheet has finished drawing, the second click wins.

3.266 #

The tutorial puts your panels back the way it found them

  • The interactive tutorial opens the tools panel and the side panel, and switches the side panel to Takeoff, so it can point at them. It used to leave them that way when it ended, and the app remembered the change: if you keep the tools panel hidden, one run of the tutorial left it showing in every later session, and the side panel stayed on Takeoff.
  • Now each step puts back what it opened as soon as you move on, and when the tutorial ends (Skip, Escape, or Finish) the tools panel, the side panel and the side panel's tab are exactly as you had them, including the next time you open the app.

3.265 #

Opening Find or a profile re-fits the sheet once

  • In Fit Page, opening the Find bar used to leave the sheet sized for the taller view, so the bottom of the sheet ran past the bottom of the window until you pressed Fit Page again, and closing it could leave the sheet smaller than the view. Opening or closing the Find bar, the bar that page OCR opens, or the visual search results now re-fits the sheet once, so the bar itself never leaves the sheet at the old fit. When going to another sheet closes the Find bar, the sheet re-fits the same way. (A status line long enough to wrap onto a second row still does not re-fit; that is a separate, smaller case.)
  • Applying a layout profile in Preferences re-fits the sheet once instead of twice, so the sheet is drawn once at its new size. Applying the profile you already have no longer redraws it.

3.264 #

Sheets stay drawn while you resize the window

  • Resizing the window quickly, or hiding and showing the tool and side panels, while a sheet was still drawing for the first time could blank the sheet for a moment and draw it again from the start, sometimes twice at the same zoom. The sheet now keeps what it shows until its new drawing starts, and each sheet is drawn once for the zoom it settles at.
  • While a sheet redraws after you zoom out or make the window smaller, the picture it shows in the meantime stays inside the sheet's edges, lined up with your markups, instead of spilling past them.

3.263 #

Cancelling the depth or height prompt keeps your outline

  • Cancel on "Enter depth / thickness for this volume" or "Enter wall height" now keeps the outline you traced. It stays on the sheet, its row in the Markups panel reads "Needs a depth - not counted until you enter one" (or a height); it counts in no total and adds no quantity to any estimate or export until you enter the number. Before, Cancel threw the outline away without a word, and your next Ctrl+Z took back the step before it.
  • The prompt says what Cancel does under its title, the status line confirms the outline was kept, and one Ctrl+Z takes it back.
  • Enter the number when you have it: the outline's row in the Markups panel has an Enter depth (or Enter height) button, and so does the bar at the top when you select the outline. It asks the same questions a first answer does, a wall's Deductions included, counts the same quantity, and is one Undo step.
  • The takeoff footer names what is waiting, for example "Not in totals: 1 needs a depth, 1 needs a height".
  • Answering the prompt with a number works exactly as before.

3.262 #

The scale you set stays set, and an assumed scale says so

  • "Apply to all pages" (in Set scale preset, in Calibrate, and in the "Set the drawing scale first?" picker) never changes the scale of a sheet you calibrated yourself and measured on without asking. When it would, it asks first: "Apply 1/8" = 1'-0" to all 6 sheets? Sheet 2 holds its own calibration and 2 measurements; sheet 5 holds its own calibration and 1 measurement." Skip those sheets is selected, so Enter keeps them as they are; Apply to all replaces them; Cancel changes nothing. Before, sheet 2's 60 ft length read 80 ft and its 600 sf area read 1,066.67 sf, with no word.
  • The status line afterwards says what was set and what was skipped, and one Undo takes the whole apply back. When no sheet has its own calibration and measurements, Apply to all pages works exactly as before.
  • A DXF that names no drawing units now stops on the same "Calibrate before taking off" box a DWG shows. The scale it assumed (1 drawing unit = 1 inch, or 1 millimeter for a drawing set up as metric) reads "Scale (assumed)" in the status bar, with the reason when you hover it, until you calibrate or pick a scale, and it stays marked through a save, a reopen and a tab switch. A DWG that names no units is marked the same way. A drawing that declares its units opens exactly as before.
  • Undo on the "Scale auto-set from the sheet's note" toast stays undone: a later Ctrl+Z no longer brings the scale you rejected back, and History shows "Auto-scale undone".
  • AI Auto-Takeoff (all plan sheets) reads every plan sheet's scale note first and sets them together. It ends with one line that names every sheet it scaled, for example "Scaled sheets 2, 3 and 4 from their scale notes (1/4" = 1'-0")", and one Undo in the toast takes all of those scales back. Before, it showed a toast per sheet, each one replacing the last, and its Undo put back only the last sheet.

3.261 #

Clear detected keeps your work and says what it cleared

  • Clear detected (the Clear button on the chip at the bottom of the sheet, and Measure > Clear detected takeoff) never removes a room you accepted, a Room fill you renamed, restyled or priced, a symbol count you added with AI Symbol Detect, or a room counted in a file from an older version. Before, a Room fill you had renamed in the item box was cleared along with the proposals, and the sheet's counted area dropped by its square footage while the status line said your edited work was kept.
  • It still clears every proposed room, run, wall and fitting on the sheet (none of them count until you accept them) and any Room fill you have not touched.
  • An untouched Room fill is counted area, so when Clear would remove one it asks first: "Clear 31 proposed rooms and 2 untouched fills (92.88 SF counted)? Accepted, edited and hand-drawn work stays. One Undo brings the fills back." Cancel is selected, so Enter or Escape keeps everything. With no untouched fill on the sheet it clears at once, as before.
  • Afterwards the status line names what went and what stayed, with the square footage: "Cleared 31 proposed rooms and 2 untouched fills (92.88 SF). Kept 3 accepted rooms (676.69 SF), 1 renamed fill (76.88 SF) and 1 earlier detection (16 SF)." The line stays up long enough to read.
  • One Undo brings back everything it cleared. Hand-drawn markups were never touched and still are not.
  • The tooltip on the Clear button and on both Clear detected takeoff menu items states the same rule: "Clears proposed rooms and untouched fills. Accepted, edited and hand-drawn work stays."

3.260 #

Deleting a room says what happened to its doors

  • When you delete a room you have accepted, the status line now tells you what happened to its doors and how the door schedule changed. Before, the doors left the schedule without a word: the door schedule in your CSV, MTO workbook and JSON exports could lose doors you had counted and nothing said so.
  • For example: "Deleted STAIR. Doors: 3 dropped (no room left), 2 moved to COUNSELING 1A15 as proposed. Door schedule 4 counted -> 1. Undo restores them." The line stays up long enough to read.
  • What happens to each door is the same as before. A door with no room left on either side is dropped. A door the room shared with a neighbor moves to that neighbor. If you have accepted the neighbor, the door keeps counting under it. If the neighbor is still a proposal, the door goes back to being a proposal too ("as proposed") and counts again once you accept that room. The difference is that each of these is now named, with the room it moved to.
  • One Undo brings back the room and every door, and the door schedule reads as it did.
  • The line shows wherever you delete: the Delete key, Edit > Delete Selection, the right-click menu, Delete selection in the menu bar and the delete button in the Markups list. Deleting a proposed room, a hand-drawn area or any other markup says nothing new, unless that delete moves a door you had counted (a door whose owner you had flipped onto a proposed room).

3.259 #

A double-click with Count drops one mark, not two

  • With Count on, a double-click used to drop two marks on the same spot. The second one sat exactly under the first, so the sheet showed one mark while the count went up by two. Now the second click of a quick double-click on the same spot is skipped: you get one mark, and one Undo takes it back.
  • The first time that happens in a session, the status line says "Double-click counted once - each click is one mark". After that it stays quiet.
  • Two separate clicks still count as two when they are half a second or more apart, or land a few pixels apart on screen, at any zoom. After you switch to another tool and back, your next click always counts.

3.258 #

A hand count always lands in your own tally

  • With Count on, every click you make now goes into your own tally of that item. Before, a click could join a count the detector had proposed for the same item on the same layer, such as an estimated fitting from Detect runs. A proposal counts nothing until you accept it, Save leaves unaccepted proposals out of the file, and Discard detected candidates or a new Detect runs clears them, so the clicks you added went with it. Clicks next to an AI symbol detect count could be lost the same way to Clear detected takeoff.
  • A count the detector found is now left exactly as it is, whether it is still a proposal or you have accepted it. Your first click starts your own tally beside it, and the status line says so once: "Started your own Count tally for SA elbow (est.) - the detected tally is left as it is" (with your item's name). Your next clicks join your tally.
  • Your tally counts right away, saves with the file, and stays when you use Clear detected takeoff, Discard detected candidates or run detection again.
  • Clicks next to a detected count you had already accepted were not being lost before (every clear keeps an accepted count). They now start your own tally too, so your clicks and the detector's are never mixed in one tally. The two tallies show under the one item and add up.
  • Clicks into a tally you started yourself, Undo and Redo of each click, and a locked tally (your click still starts a new one) work exactly as before.

3.257 #

While you are tracing, Undo takes back your last point, not your last finished measurement

  • In the middle of a trace (a polyline, a Length, an Area or any other click-by-click measurement, an arc or a Pen path), Ctrl+Z, the toolbar Undo and Edit > Undo now take back the last point you clicked. Before, they removed the last measurement you had FINISHED and left the half-drawn trace on screen. Your finished work and your Undo history are not touched.
  • Redo (Ctrl+Y, Ctrl+Shift+Z, the toolbar Redo, Edit > Redo) puts that point back, handles and all, so the trace finishes exactly as if you had never undone it. A point you took back with Backspace comes back the same way. With no point to put back, Redo says so and changes nothing: it no longer brings back a markup you undid earlier in the middle of a trace.
  • Undo on a trace with only its first point clears the trace, keeps the tool picked, and says so. The next Undo steps back through your finished work as before.
  • A tool letter (R, M, V and the rest) pressed in the middle of a trace no longer throws the trace away. The tool stays picked and the status line says how to finish: "Finish this trace first (Enter or double-click), or press Esc to discard it." While the trace is still too short to finish, the line says to keep clicking instead, because Enter would drop it. A right-click on a markup in the middle of a trace keeps the trace the same way, instead of switching to Select.
  • Picking a tool from the toolbar still switches tools and drops the trace, holding Space to pan still keeps it, and Esc still discards it. Outside a trace, Undo, Redo, the tool letters and the right-click menu work exactly as before.

3.256 #

Deleting a sheet that holds counted work asks first and says how much is on it

  • The trash button in the Pages pane now asks before it deletes a sheet that holds counted measurements, for example "Delete A-102? It holds 14 counted measurements (3 priced) and 6 proposals. This cannot be undone, and it clears Undo." Before, one click deleted the sheet and its takeoff at once, and because a page delete clears Undo, the work could not be brought back.
  • Cancel has the focus, so Enter or Escape keeps the sheet, its markups and your Undo history exactly as they were. Only the Delete button deletes it.
  • Detected rooms, runs and walls you have not accepted are not in the count; the question names them on their own. A sheet with no counted measurements (an empty sheet, or one with only notes or proposals) deletes at once, as before.
  • While the question is up, nothing behind it can be clicked, the floating Detected Spaces panel included.

3.255 #

Typing an item name or restyling never changes a markup you were not working on

  • With a drawing tool picked, the item name box and the style controls (color, line, fill, font, bold, italic, alignment, stamp text, symbol size) set the next markup you draw. A markup still selected from before is left as it is: with Area picked, typing the next item's name used to rename that markup, and a color pick used to repaint it. The status line says so once, for example "The selected markup is left as it is - this sets the next Area. Pick Select to edit it."
  • With Select, the item name box shows the selected item's name, or Mixed when the selected items have different names. Typing renames the selected counts and measurements in one undo step and leaves alone the name your next measurement files under, so picking Area again brings that name back.
  • The earthwork basis and cross-section controls show when a Volume or an Area is selected with Select. They change only that markup, so they are no longer offered with the Volume or Area tool picked, where their only effect was to change a markup left selected.
  • Arrow keys never move a detected room, run or wall that is still a proposal. Accept it first; the status line says "1 proposal left as it is - accept it first." Accepted and hand-drawn markups move as before.
  • A selected proposal shows no style controls. The bar says "Proposed, not counted" and where to accept it, and selecting it no longer passes its look to the next markup you draw. Restyling or renaming a selection that also holds proposals or locked markups changes only the others and says how many it left as they are.
  • A color drag, a symbol size, a stamp text or an arrow key that changes nothing no longer adds an empty step to your undo history (that step used to clear Redo).

3.254 #

Switching between open drawings never shows the previous drawing's audit, totals or review list

  • When you click the tab of another open drawing, the QA pane shows that drawing's own audit. It could keep showing the drawing you came from until your next edit, so a drawing with no scale could read as ready to review.
  • The Preliminary HVAC load panel follows the drawing you switch to. It used to keep the rooms, areas and loads of the previous drawing until you changed a page or a setting.
  • The "N spaces on this sheet" bar with its Clear button counts the detected candidates of the drawing on screen. Hiding it in one drawing no longer hides it in another, and it no longer stays on screen over the start page.
  • After you delete, insert, move, rotate or crop pages, the QA pane names each sheet by its new page number at once.
  • Scale the whole set stops if you switch drawings, open one, or change the pages while it reads the scale notes. It writes no scale into the drawing you switched to, and the status line names the sheets of the first drawing it had scaled before the change. It could write scales into the other drawing, even on sheets you never asked it to scale.
  • Also per drawing now: a wall height you set in one drawing is never applied to the walls you trace in another; Copy text in Find copies only this drawing's text; the live Excel link shows the drawing you switch to right away; and a revision report or an AI estimate made for one drawing is never exported or shown for another.

3.253 #

Detected runs, walls and fittings on a locked layer are no longer reported as accepted

  • Accept detected runs & walls (on the Measure menu) no longer reports a run, wall or fitting on a locked layer as accepted. TRACEBUILD does not change markups on a locked layer, so that candidate stayed a proposal outside every total, yet the status line counted it in "Accepted N detected candidates into the takeoff". The line now counts only the candidates that were accepted and tells you how many it left on a locked layer, for example "Accepted 3 detected candidates into the takeoff. 1 on a locked layer - unlock it to accept."
  • When none of the candidates can be accepted, the line says so and why, for example "Nothing accepted into the takeoff. 1 on a locked layer - unlock it to accept.", and nothing is added to your undo history. A candidate that is locked by itself, not through its layer, is named as locked.
  • Accepting candidates that are not locked works as before: the same status line, and one undo puts every accepted candidate back.

3.252 #

The takeoff pane says what it does not count, and why

  • The takeoff totals now end with a line that says what they leave out and why, for example "Not in totals: 3 proposals, 1 without a scale, 1 can't be measured". Detected rooms you have not accepted, markups on a page with no scale, and outlines that cannot be measured stay out of the totals as before; now the pane tells you they are there. The line is under By Item, By Type and By Space.
  • When nothing is counted yet, the takeoff pane names what is waiting, for example "Nothing counted yet - 34 proposals are waiting for review." It no longer says "No measurements yet" while detected rooms wait for your review or markups wait for a scale.
  • The By Item and By Type columns now read Markups and Quantity. The first number is how many markups a row adds up and the second is what they measure. Before, the markup count was headed "Qty" and the measured amount "Total".
  • An outline that cannot be measured, for example an area whose boundary crosses itself, is now named under the totals instead of being left out without a word. It still adds nothing to the totals until you fix the outline.
  • An outline with too many points for TRACEBUILD to check is still counted, and the pane now says it was counted without that check.
  • The QA pane no longer calls a takeoff ready to review while rooms are still proposals. It lists the work no total includes, in the same words as the takeoff pane, and what to do about each.
  • After you open another drawing, the QA pane no longer shows the findings of the drawing you had open before.
  • When Detect Spaces finishes, the status line now says how many of the rooms are counted and how many are proposals that are not counted yet, for example "34 rooms (0 counted, 34 proposed, not counted)". On a sheet with more than one floor plan view, the closing line still gives the room count only.

3.251 #

Detected rooms on a locked layer are no longer reported as kept

  • Keep all no longer reports a proposed room on a locked layer as kept. TRACEBUILD does not change markups on a locked layer, so that room stayed a proposal, yet Keep all counted it in "Accepted N spaces". Keep all now keeps only the rooms it can, and tells you how many it left on a locked layer and that you can unlock the layer to accept them.
  • Accept on a proposed room that is on a locked layer now tells you the room is on a locked layer and to unlock the layer to accept it. Before, the click left the room as it was and said nothing.
  • The doors of a room left on a locked layer are no longer counted. Before this version Keep all and Accept kept those doors even though their room stayed a proposal, so the door schedule and your exports counted doors in a room your takeoff did not include. Rooms that are accepted still bring their doors with them, and one undo still puts the rooms and their doors back.
  • The line at the bottom of the Detected Spaces panel now also says how many room outlines cannot be measured, for example an outline that crosses itself. Those rooms have no area and stay out of the total until you fix the outline; now the panel tells you they are there.
  • If you used Keep all or Accept on a sheet with a locked layer before this version, check the door schedule for doors in rooms you did not keep.

3.250 #

The Detected Spaces panel only totals the rooms you kept

  • The total at the bottom of the Detected Spaces panel now adds up only the rooms you have kept. Rooms that Detect Spaces proposed and you have not accepted yet are counted by number and marked "proposed, not counted" instead. Before this version the total included every proposed room too, so right after a fresh Detect Spaces the panel showed the whole sheet's area as a total even though none of it was in your takeoff yet. Your takeoff totals, exports and estimates were not affected: they have always left proposed rooms out.
  • Keep all now always tells you what happened. When every proposed room on the sheet was one TRACEBUILD marks for a closer look, Keep all did nothing and said nothing. It now says "No confident rooms to keep" and how many rooms need a look, so you can keep or reject them one at a time. When it does keep rooms, it also tells you how many it left for you to check.
  • Keep all and Discard now always act on the sheet the panel is showing. Before, if you scrolled to another sheet and clicked before the panel caught up, they could keep or throw away the proposed rooms on the sheet you had scrolled to instead of the rooms listed in the panel. The panel now also follows you when you scroll to another sheet, not only when you jump to one.
  • After you pick "Use these views" and Detect Spaces scans each floor plan view on a sheet, the last message now reports the rooms found on that sheet. Before, when the last view had no rooms in it, the run ended on "No enclosed rooms found on this sheet" even though an earlier view had found rooms.

3.249 #

Batch flatten no longer mixes in the drawing you have open

  • Batch flatten no longer draws the doors of the file you have open onto the other files in the batch, and no longer applies that file's hidden layers to them; each file goes out with only its own markups.
  • Before this version, when the drawing open in front of you had detected doors, Batch flatten drew those doors onto every working file in the batch, at the same spots on the sheet, and left out the doors that file had detected itself. A working file saved without its own layer list also picked up the layers of the drawing you had open, so if you had hidden a layer there, that file's markups were missing from its flattened copy.
  • Each flattened copy now matches what you get by opening that file and choosing Export flattened: its own markups, its own doors in its own room colors, its own layers and its own scale, and nothing from any other tab.
  • A working file you received from someone else is now checked the same way File > Open checks it before it is flattened. A web link that is not a normal web address is left without a link target, and markups made by a newer version of TRACEBUILD print as a dashed outline instead of being drawn in a way this version cannot vouch for.
  • Plain PDFs with no markups are still copied as they are, and working files with no markups are still cleaned out the way 3.247 and 3.248 clean them.
  • If you batch flattened working files while another drawing with detected doors was open, look over those copies for doors that do not belong to them and run them through again.

3.248 #

Extracted pages, stamped copies and searchable copies no longer carry your price book

  • A follow-up to the 3.247 privacy fix. That version cleaned every flattened copy, but a few tools make a copy without flattening it, and those still carried the takeoff data tucked inside your working file, along with the price book you had open: Extract pages, Batch header, footer and Bates stamping, and Batch OCR (the searchable copy). Anyone who opened one of those copies in TRACEBUILD, or took the file apart with the right tools, could read your items, assemblies, crew rates and markups. An extracted page set also reopened with your markups landing on the wrong sheets.
  • Starting with this version, those copies are cleaned out the same way a flattened copy is: no takeoff data, no price book, and none of the leftover pieces of the working file, such as pages you deleted earlier. Everything on the sheets stays the same: the drawings, the header, footer and Bates number on every page, the searchable text layer, and the pages you picked for an extract, in the order you picked them. If TRACEBUILD cannot remove that data from a file, it skips the file and tells you instead of writing the copy.
  • An extracted page set also leaves behind the sheets you did not pick. One exception remains for now: if the drawing set itself has bookmarks or form fields that point at a sheet you left out of an extract, or at a page you deleted earlier, that sheet still rides along inside the extracted, stamped or searchable copy, even though it does not show up as a page. Many issued bid sets are bookmarked, so keep that in mind before you send one of these copies to a sub.
  • Batch flatten now cleans a flattened copy made before 3.247 when you run it through again, instead of copying it as it was.
  • The extracted, stamped and searchable copies are plain PDFs now. They no longer reopen in TRACEBUILD with your takeoff, so keep working in your working file. That file, the one you save and reopen, is unchanged and still carries its takeoff and price book.
  • If you sent extracted pages, stamped copies or searchable copies made from a priced project before this version, treat them as if your price book traveled with them.

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&quot;" 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.