Features
- Dynamic input finally locks: type an angle and TAB — the rubber-band pins to that direction while you pick the length (and vice versa); the locked value constrains the preview, the click and the Enter commit identically (#356).
- STRETCH in one round: with nothing pre-selected, the crossing window itself selects the objects — window, base, destination, done (#338). Dimensions stretch too: definition points inside the window move and the measurement updates (#372).
- PURGE removes nested leftovers in one run (a purged block's now-unused sub-blocks, layers, linetypes and styles go with it), prompts with category options, and a single UNDO restores everything (#375).
- MATCHPROP keeps painting: apply the source properties to target after target until Enter/Escape (#362).
- Layer search: live filter boxes in both the ribbon layer dropdown and the Layer Manager (#343); the Layer Manager's Name column is drag-resizable for long layer names (#359).
- Bare ZOOM prompts with Window / Extents / All / In / Out / Scale as clickable options.
- Command line: a
>toggle button makes literal-space mode persistent — Space stays in the line until you switch it off; the state survives restarts. - Every modal dialog now shows its name, centred in the title bar.
- EXTEND lengthens arcs along their circle to the nearest boundary.
- OFFSET works distance-first with a repeat loop and starts from pre-selected objects.
- Gradient hatches: selectable gradient types with working creation; pattern-scale edits apply and background fill toggles (hatch editor).
- Snapping onto a polyline's start point closes it; Select-objects prompts accept Previous / Last; block references get a uniform-scale checkbox in Properties.
- Web: renderer errors surface in a copyable on-page banner (#414).
Fixes
- Web on Windows Chrome/Edge rendered nothing: the hatch and wipeout shaders called dpdx outside uniform control flow, which Tint rejects — both now compute derivatives up front (#414).
- All text vanished inside paper-space viewports: the SDF glyph cache handed one wire source's text to another; reuse is now keyed per source (#403).
- A reopened file's dimensions ignored grip drags: edits now drop the stale baked *D block so the live geometry renders and the next save re-bakes (#398).
- TRIM/EXTEND missed arc-arc intersections — they were tested against the wrong circle's span (#370).
- ZOOM Extents fits the whole window at the real viewport aspect instead of a small centre patch (#364); window-corner picks (ZOOM WINDOW, PLOTWINDOW, rectangular WIPEOUT) are exempt from Ortho/Polar so the rectangle can't collapse to a line (#363).
- Ribbon buttons no longer stay blue after use: one-shots clear immediately, dialog openers clear when their dialog closes, state toggles light from state alone — and on the Start tab, unusable tools render dimmed (#355).
- Files saved without the built-in Standard styles re-seed them on open, so style dropdowns can't come up broken (#366).
- The running object-snap set persists in the app config — modern DWG has no file slot for it, and opening a file no longer wipes your snaps.
- Mirrored (OCS) entities: LINE/POINT endpoints and the remaining per-entity gaps handle extrusion normals correctly.
- Saving a freshly created empty drawing produced a DWG other applications refused: dangling owned handles are no longer written (#410).
- Xrefs: merged xref layers appear in the Layer Manager at attach time (#407), and blocks respect their internal draw order.
- Spline-fit 2D polylines draw the fitted curve instead of the control frame.
- Ribbon tooltips show again; web builds pack wire attributes under the 16-attribute cap.
- Dynamic input: an explicit minus keeps its sign in the angle field.
- Snap: the nearest discrete snap wins, so Center can't mask Quadrant.
- REFEDIT: objects created during the session join the block; BEDIT restores the view on exit; the layout context menu opens at the clicked tab.
Chore
- acadrust bumped: the DXF writer emits $OSMODE and $LWDISPLAY, six boolean header variables on group code 290 parse correctly, and a poisoned model/paper-space handle gets a fresh one on read.
Full Changelog: v0.8.5...v0.8.6