Changelog

What changed, release by release

Newest first, in the words of the release itself. Releases from 0.12.0 (September 11, 2026) on ship code-signed; the builds before it were unsigned. The current build's checksum is published on the download page.

1.2What's new in 1.2, shown

v1.2.0

WoodWright 1.2.0: a Measure station, a rail that follows the job, and a Draftsman that reads what you measured

Cut lists: 188 of the 202 cabinets on our real jobs cut the same board they cut on 1.1.0; 14 changed, and every change is listed in the report.

Each of those 14 follows a rule the shop decided, and the first list below names them. If you drew a job in 1.1 and have not cut its toe skin or its lazy susans, or quoted it in Lin ft + pieces, read that list first.

Still true: a program saved from the Sheets page has not been proven on a machine yet. Every program is simulated and read back, and a fresh install has no machine turned on. Cut the first one on scrap at reduced feed, air pass first.

WoodWright 1.2.0 is for Windows 10 and 11. The Mac app is signed and in testing: a Mac that already has it will update to 1.2.0, but it is not on the download page yet.

Not updating yet? The Draftsman in 1.1.0 keeps working exactly as it does today. Its new Measure tools come with 1.2.0.

Cut lists, what moves: - Toe skin returns at finished ends. A finished open end now gets its own toe skin return on the cut list: 1/4 thick, 4 1/2 tall, from the wall out to the face of the run's skin (21 1/4 on a 24 deep base). Where a shallower cabinet stands beside that end, the return stops at its toe. 11 cabinets gain one. - An unfinished end gets no return: the skin stops at the face frame's outer edge (frameless: the box edge). A finished end scribed into a wall corner gets none either. - Crown, light rail and the toe band from Setup, Trims follow the same rule, so a run with an unfinished end loses the return it had there. On our jobs 4 of the 10 rooms with a trim picked move, and every one gets shorter. - Lazy susans have no corner post. The two face frames butt, the post (2 3/4 x 30 1/2 on a 36 base) is gone, and the frame rails grow into its place: 10 on one face and 10 3/4 on the other, where both were 8 3/4. 3 cabinets. - Lazy susan leaves are sized by Blum's bi-fold rule: 1 mm narrower for the fold gap, so a 36's leaves go from 9 3/4 to 9 23/32. Frameless pie-cut leaves follow the same rule. - Either leaf can be the one hinged to the cabinet, picked per cabinet; the other hangs off it on the bi-fold hinge. The long leg's leaf is the default, and the pull goes on the leaf that swings out. - A frameless 45 degree corner with square case ends cuts its door to the face it actually has, about 1 3/16 narrower (18 11/16 on a 40 x 36 base, where it was 19 7/8). Face-frame, inset and mitered 45s do not move. - Lin ft + pieces quotes: a panel bigger than a base end (6 sq ft) now pays for the sheet past 6 sq ft, at your sheet price plus 15% waste and no markup, on its own line. A tall or fridge box's own finished side over 6 sq ft pays the same way. With no sheet price set, the line reads "set a sheet price" at $0. - The labour estimate in Lin ft + pieces counts panels and fillers as finish pieces, not as boxes. Shop rate, Per cabinet and Line item quotes do not move a cent.

The rail: - The rail follows a job from start to finish: Home, Measure, Design, Quote, Build, then Library and Setup, with the Draftsman last. A dot on each of Measure, Design, Quote and Build says how far the open job has got there: walls closed, checks to fix, the quote's status, panels ticked in the shop. - Room and Cabinets are one station now, Design, with its Library, Place and Plan. Paperwork and Workshop are Quote and Build. The keys 1, 2 and 3 open Design, and old links land on the new stations. - Toasts, hints, help and the Draftsman all use the new names.

Measure: - Measure is its own station: drop a plan, set its scale, trace or type the walls, then the details. Step cards say where you are, and a new job opens here. - The room panel lists the room as measured, every wall, opening, soffit, beam and the ceiling, and where each number came from: typed, traced off the plan, or assumed. A size's dot is solid once every number in it is typed. Assumed numbers and guessed scales show amber. - The scale says how sure it is. A scale printed on the sheet wins. A guessed one stays amber until you check it with the Ruler, and the Ruler puts a wrong one right. - Trace the room: pick the kitchen off a busy plan sheet and trace its walls on your own computer, at no cost. Traced walls are counted as you go, and Build room is one card. - Open kitchens build as traced: an open side stays open and is flagged in Checks, never closed for you. - A traced L or U room keeps each wall's inside face. Some were inches off before. - The tape walk is a card on the plan for walking the room with a tape. It reads feet and inches, follows undo, and picks up where you stopped. - Soffits and beams can be added, changed and removed from the panel. A ceiling nobody typed reads assumed. - Import plan keeps the PDF with the job, and the plan's picture and scale come back when you reopen it. - Notes: pin a note on the plan, and read them all in their own panel. - A cased opening draws as a cut in the wall with no door swing, and a traced gap under 18 inches is never offered as a doorway. - Plans keep their line weights, and the Wall tool and the tape snap to the plan's corners. - Import plan and the old Measure tool left the Room toolbar. Its Measure link brings you here. - The tape walk carries on after a restart, and a ceiling typed on its card shows as typed in the panel at once. - The step cards keep up with the room: a wall you fix, a room built as traced and walls found on the plan each move the next step on, and a taped room skips the plan card. - A double-click on Send to Design or Build room does it once. - On a 1024 wide screen Measure keeps its columns: Send to Design stays in place and nothing scrolls sideways. - The tour draws its room in Measure.

Design: - Toe skin and crown follow the same return rule in the drawings and in 3D as on the cut list: a finished end wraps back to the wall, an unfinished end stops square at the frame. - A step between a deeper and a shallower box gets a return only where the deeper box's end is finished. - The lazy susan draws with no corner post, and shows which leaf hangs on the cabinet. - Moving an appliance along a wall names the appliance. - In the face editor, a rail or stile's width stops where the openings beside it would drop under 2 inches.

Quote: - Big panels and big finished ends pay for their sheet in Lin ft + pieces, on their own lines (the first list above). - The labour estimate has a Finish panels & fillers row in Lin ft + pieces. - The scope counts what Lin ft + pieces bills, and the proposal names its room. - A labour step set to zero can be put back, and a margin over 95% says why it is refused. - Clearing a cost on Prices says it went back to our starting guess. - Each room gets its own purchase order number and file name. - The customer band follows a Job details save. A resized catalog box is named by its own size on paper, and a hung box's bottom shows on the packet and the wall strip.

Build: - The cut list carries the toe skin returns and the lazy susan's new parts (the first list above). - Router G-code (Mach3/4, GRBL, LinuxCNC, Masso): the notes at the top of a program are plain letters. A material or bit name with a dash, a times sign or an inch mark went into the file as special characters, and a semicolon sat inside one note. Some controls read those badly. The moves themselves are unchanged. - Sheet and cut-list DXFs are complete drawings: the layer and linetype lists carry everything newer CAM programs expect, so VCarve and Aspire stop reading them as empty. Every part, hole and label is where it was. - After you save a program, WoodWright still asks once whether it cut right. The answers are clearer: cut right, something was off, my machine wouldn't run it, or haven't run it yet. "Haven't run it yet" asks again later. - When something went wrong, it asks the few things that let us help: your email if you want a reply, your machine's make, model and year, the control software, and what its screen said. Everything is optional, and only what you type is sent. If the control you name doesn't match the machine card the program was made for, it says so before you send. - Setup, CNC: each generic machine card says who it is for, and "My machine isn't listed" lets you tell us yours instead of guessing a card. - The G-code card points each refused sheet at its reason, and on a job opened only to look at it says so and holds Save. - Lumber: saw allowances refuse a kerf no saw has, and yield takes a percent. - Cut list, Doors, whole job: it says the door order prints the open room alone.

The Draftsman: - It works inside Measure, as a tab beside the room panel. - It reads what you measured as facts: the plan sheet and its scale, the walls, each wall run, and what is left to measure. It used to look at pictures of the screen. It gets the room right more often, and spends less doing it. - In Measure, a plan PDF no longer holds Send. The plan's picture stays on your computer; the Draftsman reads the plan's facts. - Walls stay joined. A wall length that would open a closed room is refused, with the reason. On an open room, a length that brings a wall's loose end onto another wall's end closes the room. Setting the ceiling moves the walls the way typing it does. - It deletes a wall that carries a door, a window or a cabinet only after your last message says yes, and it names what goes with the wall. - An open kitchen traced as open stays open: it asks first, names the open side, and never makes up a ceiling. - A question only looks: asking about the room never changes it. An edit changes what you asked about, and a layout builds. - Laying out a run, it reads rough openings and each wall's true free span. A gap at least half a box wide becomes one box sized to fit; a smaller one becomes a filler. An upper blind corner keeps 27 to 36 inches from the corner. "Drawers next to the range" picks the widest stock drawer base that still leaves the door cabinet beside it buildable, usually a 36. - When it hands a tool a detail the tool doesn't take, the detail is refused by name instead of quietly dropped, so it can put it right. That fix reached 1.1.0 too, on October 8.

Privacy: - Shop Window is a second switch, off unless you turn it on. If you do, once a day for each job you changed it sends the shape of that job: cabinet types and sizes, door and drawer layouts, how each room is laid out, and what any assembly you built is made of, tied only to this install's random number. Never names, customers, addresses, prices, notes or files. It is kept apart from everything else we hold, for thirteen months, and Settings, Privacy turns it off. - WoodWright asks once, the first time you save a job with three or more cabinets, and Not now is final. "See exactly what would be sent" shows the job's snapshot before you decide.

v1.1.0

WoodWright 1.1.0: the shop floor as a spreadsheet, doors made or bought, and re-nests onto your offcuts

Cut lists: every one of the 202 cabinets on our real jobs cuts the same board it cut on 1.0.0. Nothing on a saw list moved.

What does change is how the paper groups and names those boards, which fronts go on the sheets, and what a quote prices. It is the first list below. If you drew a job in 1.0 and have not ordered its doors or sent its quote, read it first.

Still true: a program saved from the Sheets page has not been proven on a machine yet. Every program is simulated and read back, and a fresh install has no machine turned on. Cut the first one on scrap at reduced feed, air pass first.

WoodWright 1.1.0 is for Windows 10 and 11. The Mac app is signed and in testing: a Mac that already has it will update to 1.1.0, but it is not on the download page yet.

Some Draftsman and render changes below reached you before this update: the service behind them was updated on October 4.

What changed in what gets cut: - Parts that are the same to the 1/32 share one cut-list line, and the line names every cabinet they come from. Some cut lists are a few lines shorter. The boards, their sizes and their count do not change. Part numbers on stickers follow the shorter list; a number already printed keeps its part. - Every panel's sticker carries its own code, so one scan or one tick marks one panel. Two same-size parts of one cabinet used to share a code. - Each door style is made in your shop or bought from your door vendor (Setup, Door style, Made by), saved with the job. Every style starts as bought. Fronts you make go on the sheets and the door cut list exactly as before; bought fronts go on the door order only. If you cut your own doors with the Doors & fronts switch on Sheets, set those styles to Made by our shop, or the switch nests nothing. - The door order prints sizes to the 1/32, the size that is cut. It rounded to the 1/16 before, so a door order sent from 1.0 can be 1/32 off. Two fronts 1/32 apart now order on two lines. The door order gains a Species column, and the door schedule a Made by column. - Countertops are not priced unless you say your shop prices its tops (Settings, Prices). A job with priced tops quotes lower by exactly its countertop line until you switch that on. Nothing else in the three quote styles you had moved. - Cut-list and sticker notes say the same things in shop words: no codes, no "1 of 2". Every number in them is the same. - In a millimetre job on the metric construction set, a library base's adjustable shelf sits 150 back from the front instead of 152.4, an inch number that leaked in. It cuts 2.4 mm deeper: 384 in a face-frame box, 402 frameless. Inch jobs do not change. - The library's Blind Corner Base 42 is a 42 inch box; it placed a 36 before. A blind corner already in a room keeps its size.

What changed in your programs (Sheets, the G-code card, the setup sheet): - A computer that never picked a hold-down rule now posts no tabs. Tabs for the small parts are one switch per job, and tabs for one part are one click on the sheet. A computer that set tabs before keeps what it set. - Small parts sit at least 2 inches in from the sheet's edge where there is room, so a loose one cannot reach the carriage. Only where they sit moves: the same parts, the same sheets. - No onion skin on prefinished or veneered stock (it tears out): small parts there get tabs. Skin stays for MDF and particleboard. - A sheet is refused, with its reason, when two of its parts overlap or sit closer than the bit, when it was laid out on an offcut that has been re-measured since, or when the sheet size changed after it was nested. Nothing else on the page saves a program for it, the DXFs included. - A hole with no depth is skipped, not drilled through, and the setup sheet says so. A hole meant to go through says through. - Deep parts cut in passes once the bit's stepdown is set in Tooling, and no pass goes deeper than the bit's flute. - For the SCM: the header sizes print to three decimals, and the vacuum alarm (V=) is set per program, 10 unless you change it. It is the alarm's limit for lost suction, not the suction itself. - The setup sheet lists every tool number with the bit it expects, the vacuum alarm, and what was left for the bench, and it says "tabs" for tabs: skin is its own thing. - A cabinet with a partition and adjustable shelves now posts: its shelf pins drill through once for both bays. That sheet was refused before. - The Sheets page draws a part red only when the program would refuse its sheet, and a hole set to depth 0 is not drawn on the sheet, in 3D or in the DXF.

Shop mode: - A job dashboard: how far each stage and each material has got, what to cut next, and who did what today. - The cut list as a spreadsheet: one row per material, size, name, banding and machining. Tick a whole row at once, or one panel at a time with + and -. - A tick remembers the panel it marked. A part the office changes after it was cut reads "changed since cut", stops counting as cut, and goes on a list with Recut or Keep as is. - Parts the office renamed or took out after they were cut are listed, not lost. - Sheets come from the last saved nest run, and a whole sheet can be marked cut at once. - Work one phase at a time, as the office sent it. - A scan on the cut list is the tick, with Undo, and it lands at once. - Fronts from your door vendor are not counted as parts to cut, band or bore. Each cabinet lists them in their own section. - Built for the floor: it fits a tablet without scrolling sideways, the buttons take a gloved finger, a double tap does not clear a count, and Back and reload keep your place.

Paper & cut lists: - Cabinet names: #3, K-3 or 1-3 on the cut list, stickers and orders (Settings). #3 is what you had. - A find box on the cut list: one part by its number, its name or its cabinet. - Every printed size is the size that is cut: cut list, stickers, door order, door schedule and build sheets. - Every printed page fits its paper and counts its pages. Long tables break between sections and keep their columns. - The drawing set marks the sheets that changed since you last printed it. - Drawing dimensions run two to three times faster on a big job, and draw the same sheets. - Metric paper reads metres, square metres and whole millimetres. - Panel-ready appliances draw on the elevation as your panel, in the job's door style. - Re-nest repacks only the sheets whose parts changed. Every other open sheet keeps its number and its layout. - Re-nest fills partly used sheets that are not cut yet before it opens a new one. For a sheet already cut it asks whether the offcut is still whole, nests on it, and draws which way to lay it on the machine. - The sheets check sees holes too: moving a hinge used to post without a word. Compare leads with what changed, by cabinet. - Sheets list the parts to check, and say why a part is held off. - A part machined on both faces exports its top face and a second DXF for the flip, instead of refusing the room. - Parts drawn in the Studio go on the job with Add to this job: cut list, sheets, stickers and shop mode, with no made-up cabinet.

CNC & offcuts: - Setup, CNC: every setting that changes what the router cuts, on one page, each one read from the one place the whole app reads it. - One tooling file for the shop holds every machine and that machine's own bits. Picking the machine that posts brings its bits with it. - Offcuts on the rack get names you can say, like Prefinished 7 (a piece cut from it is Prefinished 7B), a grain arrow, a rack page and a sticker. A nest offers a rack piece and waits for your yes before it uses one, and shop mode lists the pieces to pull. - Hold-down per job, per sheet and per part, drawn on the sheet. A sheet's Hold all or None stays with that sheet through a re-nest. - An air pass program can be made from any saved program, edge trims past the sheet are allowed when you mean them, and the setup sheet has the jog to X0 Y0. - Roll labels print one whole label per page. On the operator's sheet print, a part name that does not fit its part shows the part number alone.

Quotes: - A fourth quote style, linear foot plus pieces: runs bill by the foot, and panels, fillers, hoods, tops and posts bill once each as pieces. The other three styles price exactly as before. - The job's quoted amount is the whole job (each room's latest proposal), and the job record says so. - Ctrl+Z takes back a rate. Money boxes read $1,200, refuse 12,50 with a reason, and say what a change did to the quote. - Two rooms never share a quote number. - The purchase order orders rough board feet and leaves guessed costs blank. - The proposal names the door styles the job wears.

Doors: - Made by our shop or the door vendor, per door style (above). Shop mode lists the vendor's fronts in their own section. - Glass doors: a plain pane by default. Bars across can line up with the shelves behind them, and the door cut list cuts them. - A third drawer-front pick, for the job or one cabinet: five-piece lower fronts under a solid top front. Drawer bottoms can be any thickness, picked on a scale that shows every size side by side. - Finished ends get their own stock pick per job: veneered ply, MDF or prefinished (Setup, Materials). The default is the one you had. - The door order names each front as it is built. - Picking a door style no longer freezes the Door style page.

Room drawing: - Every wall card has the room's ceiling height; the walls follow it and the hood reads it. - A typed wall that leaves the room open asks how to close it: leave it open, move the other wall, or call it out of square. A typed wall that does close the room is no longer called open. - Library blind corners land in the open corner, blind side toward it. - Islands: a seating-side overhang and waterfall ends. - A metric job is offered a metric construction set (150 plinth, 18 board), shows Base 600, and finds it when you type 600. - The tape snaps to corners, Ctrl+Z takes back the tape and not a wall, and plan measurements survive reopening. - Import plan waits for you to set a scale instead of guessing one, holds the sheet still while you trace, and Esc closes it. - The room check finds more: a fridge under a bridge without its inch of air, an oven or microwave drawer its cabinet does not take, a corner cabinet in a corner that is not square, an upper run into a wood hood. - An appliance dropped with a click lands flush, as a drag does, and a click on it in 3D picks it. - Jobs open with nothing picked, and there is one New job door. - Length boxes read 10ft, 10 ft 3/16 in and 12 feet. - The 3D view only draws when something changes, so a laptop stays cool with a room open. - A closed L or U room puts every wall's cabinets on the room side. - A change that is refused leaves nothing to redo. Esc cancels a drag. A wall corner cannot be dragged down to nothing, and very long walls or far islands are refused with a reason. - Openings have a role: entry, closet, pass-through or window. Only an entry asks for a 32 inch doorway. - A finished end counts as hidden only when almost all of it is covered; otherwise the check says how much shows. - The range and fridge opening warnings say they are your shop's rough-opening rule, and where to change it. - Home counts every room of a job, and a job opens to the room you last picked. - A new millimetre job asks about the metric set first, and offers the Draftsman setup after. - A wall typed longer than 50 feet in an inch job asks whether you meant millimetres. - Three more sinks: 30 and 33 inch double undermount, 32 inch single undermount. Drawer banks can be graduated, equal, or a top drawer over equal ones (Setup, Sizes).

Draftsman: - Opus 5.5 and Sonnet 5.5 are in the model picker; Gemini stays the default. Each model says whether it is fast, careful or most careful. - The first screen says what a kitchen like the sample ran. - It refuses to place a cabinet past a wall's end, with no wall, or through the ceiling, and says why in shop words. A card's Undo refuses when a later box stands in the way, and names it. - It knows walls by nickname or compass point. - A run is never lost after it is billed: a sheet too big to keep is set down, not the run. - A garbled reply is tried once more, then stops in plain words. - Words you could not send stay in the box, and offline says so. - A reopened chat keeps its run and says where it starts. Copy and Rewind show on hover. Saved chats keep their receipts and drop their pictures, so they stay small. - The room drawing grows on a wide screen. - On a job open to look at, it says why it can't change it, and its button hands you the pen. - A tape walk in a millimetre job speaks millimetres. - It can start a wall anywhere or off another wall's end, size an appliance, set pullouts and inserts, lay out a cabinet's fronts in one line ("drawers 6,eq,eq"), and count from the left as you face a wall. - A plan sheet you attach is laid under the room as the plan. It reads the plan view at the scale printed under it, and when the walls will not close it hands back the walls it found. - When it is refused, it is told what to do instead, and an unknown setting name is refused instead of being written. - It can never take your credits below zero: a call your balance cannot cover is not made. - With Gemini it works in bigger steps by default, reading the room and writing one program at a time. Opus and Sonnet still go step by step, and the step switch decides once you have used it.

Render: - A failure says what happened in plain words, with one button. A clock shows the wait, and Redo keeps the look. - A picture that comes back damaged refunds itself. - Try another finish: options side by side, each with its difference from the quote, and the design put back exactly. - Star a render and it prints as the proposal's cover. Send to client makes one phone-ready file with no prices. - A render with people in it says "AI-generated people" wherever it is shown or printed. - Render stands inside the room, and the preview shows that spot. - Your door or counter sample photo can ride along with the request. - Sunlight lands across the room, not on the window wall. A doorway shows a dim room beyond, and the window reads as daylight. - The render panel names the design's finishes, with a door to change them.

Help & support: - One help door: every Ask for help carries the version, the page, the build, the system and the last error, with folder and job names taken out. The help form shows what it sends, one click leaves it off, and the privacy page says so. Offline, it says it cannot send. - The crash card no longer put a folder or a job name into the support link. - How do I finds "support" and answers a new shop's own questions, and the website's help page points you at a person. - The tour names the button that is on the screen.

Fixes: - Saves: an edit made during a save stays marked unsaved; a failed save asks before you open another job; a second computer is asked before it writes over the job; a job named with a trailing dot no longer writes over the one without it; a restored crash copy asks before saving over a newer save; a backup restore asks first. - Delete and Backspace stay in the room: they never delete a cabinet you cannot see from another page or a dialog. - Dark mode: toasts, badges and Retry save read again. - Laptops at 125% and 150%: the plan is bigger, the toolbar stays one row, and the welcome card fits. - Keys: Home's job rows open with Enter, and save and undo say Cmd on a Mac. - A number that does not read shows its red dashed mark. - Library search: a miss names the shelf that has it. - A cabinet that builds no parts says so in 3D, and end panels and fillers no longer draw a door pull. - Exports name the job and room, and the sample never exports into a real job's folder. - Print preview opens on its Print button, and Esc goes back. - Every door that reloads the app saves first: switching rooms, a new job, renaming another job, viewer mode, moving to a shop folder. If the save failed it asks. - A job another window renamed or deleted is asked about before a save brings it back. - Undo and redo land exactly on blind corner sets, and a refused change never comes back on redo. - About says credits are good for twelve months, as the terms do. The privacy page names Google, which runs the Draftsman's default model, and the switch lives under Settings, Privacy. - Job and room names are shown as written everywhere, even with < and & in them.

v1.0.0

WoodWright 1.0.0: the shop's own numbers, phases for the floor, and every nest run kept

Cut lists: 118 of the 202 cabinets on our real jobs cut the same board they cut on 0.12.0; 84 changed, and every change is listed in the report.

Each of those changes is traced to a decision the shop made. The list is below. If you drew a job in 0.12.0 and have not cut it yet, read it before you cut.

Still true: no WoodWright program has been cut on a machine yet. Every program is simulated and read back, and a fresh install has no machine turned on. Cut the first one on scrap at reduced feed, air pass first.

WoodWright 1.0.0 is for Windows 10 and 11. The Mac app is signed and in testing: a Mac that already has it will update to 1.0.0, but it is not on the download page and has not had its release checks on a Mac yet.

What cuts differently, and why: - Centre stiles and centre rails are 1 1/2 now, not 1 1/8, and a blind corner's stile shows 3" past the cabinet that butts into it. The doors, drawer fronts and drawer boxes beside them follow their openings, most by well under 1/2". On one sink base a drawer box drops from 8" to 6" tall because its opening no longer clears the 8". 56 cabinets. - A job saved before this version has no record of the numbers it was started with, so it opens with the new stile widths. A job that set its own widths keeps them. A job started in 1.0.0 keeps the numbers it was born with even when you change the shop's. - Where a 1 1/2 stile has drawers on both sides, two partitions stand behind it back to back, so each drawer's slide mounts flat. On a base with drawers over doors, the pair behind a long stile runs full height, one pair per stile. 4 cabinets. - Tall cabinets get one full top instead of a front and a back stretcher. 18 cabinets. - Stiles run long through the rails however the frame was drawn, and the rail is cut into pieces that butt into them. Openings, doors and fronts do not move. 4 cabinets. - Corners: nailers are cut only when the method asks for them (it asks for none, so 7 corners lose three each); corner backs are the same size and now come off prefinished stock (7); corner doors and bifold leaves are 1/2 longer and reach the top like the box beside them (7); the toe skin turns the corner, each corner carries its own board and the run's stick stops where the toe faces meet (12); a blind corner's skin stops where the next run's boxes start (2); a lazy susan with a finished end cuts the applied panel it was already being priced for (1). - A back set to plant on: the deck stops at the back and the back laps it. 4 cabinets that set that joint. - Hoods get a deck to hold the liner, two solid ledgers under it, and a flat for the crown; a bell hood gets blocking behind its ribs. The sizes follow the liner and are the shop's best numbers until a built hood is measured. 2 hoods. - A base cabinet beside a fridge with no toe now gets the toe skin it was missing. 1 cabinet. - A 3" filler picked from the library cuts one 3" stile. It was cut as a whole 3" cabinet box. A job that used one reads back with the stile. - Counter tops that meet at an inside corner butt on a seam: the second top starts at the first top's front edge instead of running 1 to 2" into it with a finished end. Tops at an angled turn meet on mitres. This shortens one top on 4 of our real jobs.

Placing and checking: - A fridge, a wall oven or an over-the-range microwave dropped into its cabinet or enclosure locks in and moves with it as one unit. The padlock on the placement bar unlocks it. The library's fridge bridge now hangs above the library's fridge. - Nothing lands on anything. A cabinet picked from the library, pasted, duplicated or attached back lands in open wall, counting appliances, a corner cabinet's return leg and doorways, or says why it can't. Drags, bumps, Stretch and Center stop at the neighbour, and a plain click never moves a box. - Center on works for appliances and between bases and uppers, and says what one click will do. - The room check shows every clash it works out, a box inside a fridge, an upper across a window, a cabinet past the end of its wall, as a line to fix with a pin on the drawing. It no longer calls an end beside a dishwasher or a range exposed, and it checks doorways, soffits, beams and the ceiling. - A lazy susan in either corner of a wall draws its return leg along the other wall, and its counter covers both legs. - Tab moves to the next number box. A size nobody builds is refused, and the box says the limit. Setup changes undo. - Delete with an appliance selected deletes the appliance, never the wall under it, and after a delete nothing is left selected.

Saves: - Props are saved with the job, and undo takes them back. - A job opened only to look at can't be changed or saved. - A price typed on the quote stays on its cabinet through undo, save and reopen.

The shop floor: - Phases. Setup, Phases splits a job into what goes to the shop and when: pick whole rooms or single cabinets, send a phase, nest just that phase, and mark cabinets built and installed. A cabinet that was sent or cut stays where it is; changing it is a remake. - Shop mode. Settings, Shop mode turns one computer into the floor's screen: each cabinet, its ends, its build steps, and a cut list to tick off. Ticks live in the job folder, so every computer that opens the job sees the same ones. - Every nest run is kept. Open an earlier run, compare two, lock a sheet once it is cut, and re-nest only the sheets still open. - A layered DXF of each nested sheet, with every part where it was nested, for any CAM. - The gap between parts follows the cutout bit, and a bit wider than the gap stops the program. A hole the drilling head cannot drill refuses by name, with a box to pocket it with a small bit instead. Small parts get at least two tabs. - The cut list, lumber, sheets and G-code carry plain-word notes, and every cut-list row draws its board with its machining.

Drawings and paper: - Elevations, the floor plan and three typical sections are drawn from the model at real scales, with a title block on every sheet and a cover sheet. - Appliances draw their own profile instead of a box with an X, and their openings get their own dimension. - Doors are one builder for the preview and the room, with 24 styles. - Printed dimension strings measure the boxes, with an appliance's opening on its own string, and every upper's bottom and height are on the elevation and the build sheet. - A box that runs past the end of its wall is drawn whole on paper with a note, and shortening a wall under cabinets says which ones now run past. - Each sheet of the drawing set prints on one page with its title block, and nothing from the app's screen prints on paper. - The Letter floor plan is drawn to a scale, and a set marked FOR APPROVAL leaves out the shop-only notes. The title block's JOB is the job's name, with the customer in its own cell.

Designing: - Metric jobs. A job knows its unit, sizes land on whole millimetres, and there is a metric sample kitchen. - Setup, Specs has two tabs: the shop's defaults, and this job's changes. - Blind corner sets: a blind and its return placed as one, snapped into the corner. - The face-frame editor: pick the partition behind a stile (left, centre, right or both), and widen a long stile on every row it crosses. - Number fields apply when you press Enter or Tab or click away; Esc puts the old number back. - The wall tool closes exact corners and takes the arrow keys. - Each room keeps earlier versions as you work, one per ten minutes: the last five, plus one a day for ten days, shown as a timeline of plans. - The room check puts numbered pins on the plan and the elevation where each finding is. - The Library page shows every finish, cabinet, profile, hardware item and hood the app can use, and the same shelf is on the website. - Wood grain is drawn at true scale, each part its own board, and stains soak into it. - The Draftsman knows how runs meet at a corner and will not put a cabinet across a doorway.

Privacy: - Besides the daily version check, the app now counts a few kinds of work as bare numbers (whether a job was edited that day, how many cut lists, nests, programs, DXFs and drawing sets were saved or printed). Never a dimension, a part, a file name, a client or a price. After you save G-code it may ask you once whether that program cut right. Settings, Privacy says every word of it, and the Diagnostics switch turns it all off.

v0.12.0

WoodWright 0.12.0 — a cabinet lands where there is room, and the app asks before it deletes

Every cut list in every job on this machine comes out byte for byte the same as 0.11.0 — 166 cabinets checked, none changed. This release is about the app around the drawing.

Placing cabinets: - A new cabinet now goes into the first opening on the wall that it fits, reading left to right the way the elevation reads. It used to go to the far end of everything already on that wall, which on a wall with a gap at the start could hang it off the end. On one of the sample rooms an 18" base landed 17 5/8" past the end of a 102 3/8" wall, while the strip above the drawing said there was open wall. - Doors and windows are counted now. A base cabinet still slides under a window, because a sink base has to; nothing lands in a doorway, and an upper will not cross a window. - Drag a cabinet from the library onto the drawing and it still drops exactly where you let go. That is how you overrule the automatic spot. - The strip above the drawing says "Placing on Wall 3" while you are placing, and its arrows say which wall you are placing on. It is the control that decides where the next cabinet goes, and it never said so. - Moving a cabinet to another wall with the "on" box in the bottom bar now finds it a spot on that wall instead of dropping it past the end and warning you about it.

Fixed — it never asked: - "Delete the job?" deleted the job without asking. Since the desktop app moved to its own window frame, every "are you sure?" in the app had quietly stopped working: deleting a job, a room, a saved assembly, a library part, taking somebody out of the shop, putting every shop rule back to default, saving CNC programs off a stale nest. All of them now ask, and wait for your answer. - The crash behind that is gone too, along with a second crash on the busiest drawing handler and a "Copied" message that appeared when the copy had failed.

Fixed — the drawing: - Opening a cabinet in the editor used to show blank paper on about half the walls in a room. The elevation draws a wall as you see it standing in the room, and on a wall that reads the other way the editor was aiming at the opposite end of the run. It opens on the cabinet now. - Fit, while you have a cabinet open, frames that cabinet instead of the whole wall. - In 3D, dragging to look around no longer moves a cabinet. The first press selects; a press on the cabinet you already selected moves it. Looking around is also calmer — a short flick used to swing you from a three-quarter view to straight down. - On a small laptop the row of steps across the top could run off the screen with no way to reach the last one. It scrolls now, and the step you are on scrolls itself into view. - The line along the bottom used to promise that your work saves itself as you go. It said that whether or not autosave was switched on. It now says only what stays true.

New: - Stand in the room. One button in 3D puts you on the floor at eye height looking at the run, which is the view you want for a customer. Fit is still the overview from outside. - The Sheets page nests when you open it. It used to remember your stock, your pinned parts and your mic'd thickness, then ask you to nest again. - Materials: each row you have changed now has its own ↺ to put just that one back. The Shop defaults button still resets everything. - One way into help instead of three. The keyboard card and the tips switch now live inside "How do I…?". - Tips in panels can be switched off once you know the app, and back on any time — How do I…? ▸ Tips in panels. - Settings in the app menu opens Settings.

Worth knowing: - A corner cabinet on a wall that reads the other way round is a left-hand corner, and it cuts the same boards as a right-hand one as long as its two legs are the same length. Every corner in every job on this machine is. If you ever make one with legs of different lengths, the room check now tells you that its deck, top, shelf and backs are still cut as the right-hand set.

v0.11.0

WoodWright 0.11.0 — blind corners the shop's way, stain or paint read off the finish, and the Specs page shows what the sidebar overrides

Still true: no WoodWright program has been cut on a machine yet. Every program is dry-run and read back, and a fresh install has no machine enabled. First cut on scrap at reduced feed, air pass first.

Blind corners: - A framed blind corner has four frame members. The corner stile shows a set width past the cabinet that butts into it — the "stile showing" parameter, or a number typed on that one cabinet — and cuts that plus the tuck behind the return, so no plywood ever shows. The buried face is a prefinished plywood panel that extends the frame: its inside face shows in the cabinet, and its note carries the build — pocket screws into the stile from the buried face, staples on the other three edges. - The blind panel now nests on the prefinished sheets, where it belongs; it had been landing on the frame-stock list. - A frameless blind's panel is finished stock on the cut list, as it always was in the shop; it had read as plywood. - The width a new blind is born buried is a job parameter now, until the return cabinet is placed and it follows. - One switch decides between this build and a single wide stile of frame stock the whole length of the cabinet: Specs, Ends, "Face frame runs over the blind end". Every construction method ships with that switch on; turn it off for the four-member frame.

Stain or paint, off the finish: - A wood finish means stain grade; a paint colour means paint grade. Nothing to set. - A flushed finished end on a wood finish is cut from stain-grade veneer plywood, and its note says so. On a paint colour the shop's rule is a prefinished end wearing an applied panel, so a flush end there is called out on the cut list and by the room check. - The end selects grew "Finished — the job's way", which picks the build the job's finished-end parameter resolves to for that cabinet's finish.

The Specs page: - The "Commonly changed" list now includes every job default the cabinet sidebar can override per cabinet — how the toe is built, cross members, the toe profile, the furniture base, how the back goes in, hardware, ends and blind corners. They were there all along under "Every parameter", but invisible on the landing list. - Three sidebar controls had no job default at all; they do now: the buried width a new blind starts with, how a finished end is built, and how far an applied panel runs.

Cut lists: 159 of 166 real cabinets in the shop's jobs are byte-identical to 0.10.0. Three framed blind corners' wide stile grew 3/4" (the stile-showing parameter replaced a stand-in), and four cabinets in one room were edited by hand between the two readings.

v0.10.0

WoodWright 0.10.0 — the Draftsman is one conversation, corners face the right way, and blind corners are built the shop's way

Still true: no WoodWright program has been cut on a machine yet. Every program is dry-run and read back, and a fresh install has no machine enabled. First cut on scrap at reduced feed, air pass first.

The Draftsman: - One conversation. The page is a single thread with the room beside it; what the Draftsman changes lands as a card you can open, and the old stage-by-stage traveler is gone. - Every tool on every turn. It no longer refuses a move because you are "in planning" — a plan or a review is a focus, not a fence. - Rooms. It knows the job's other rooms, can switch to one, and can start a new one. - The plan sheet. Attach a PDF or DXF plan, box a room on it, and that piece of the sheet becomes the room's underlay — the room you are in, or a new one born with it. - Attach anything from the message bar: plus, drop, or paste. Photos and PDFs stay off unless you turn them on, and a picture leaves your machine only after you have seen and masked it. - The 3D comes back. Switching to 3D inside the Draftsman used to leave the Room and Cabinets pages without their 3D until a restart; a flicker and stutter in the 3D on some machines is fixed too.

Corners: - A pie-cut or 45° corner on a wall that reads from the other side used to draw with its corner in the wrong place and its leg out in the room. Corners are handed now, and a left-hand corner is drawn as one. - Blind corners follow the cabinet that butts into them: the buried width and the corner stile re-derive when either cabinet moves, the buried face is a plywood panel with no frame, the frame starts a hair behind the return cabinet, and what shows of the corner stile matches the return's stile. Two new parameters: the tuck behind the return, and a frameless blind's strip past it. - The buried-width match looked at the wrong end of the wall on rooms the Draftsman draws; a blind whose panel faces away from its corner is now flagged.

The face frame: - A partition dragged past the opening line goes behind the stile and becomes the stile's pick, drawn and draggable both ways.

Fixes: - A box hood's ends, front and cap shared space at every edge; the parts are sized to meet now. - The app tells us which version is running, once a day, under the same Diagnostics switch as crash reports. It is anonymous, it never carries your jobs, and the privacy page says exactly what it sends.

Cut lists: 145 of 148 real cabinets in the shop's jobs are byte-identical to 0.9.2. The three that changed are the two blind corners (the corner stile now shows the return's width) and one wall pair whose room was edited by hand between the two readings.

v0.9.2

WoodWright 0.9.2 — the Draftsman stops getting stuck, jobs and rooms can be deleted, and every build says when it was made

Still true: no WoodWright program has been cut on a machine yet. Every program is dry-run and read back, and a fresh install has no machine enabled. First cut on scrap at reduced feed, air pass first.

The Draftsman: - A turn no longer sticks. When the drafting service does not acknowledge an answer within twenty seconds the app sends it again, and the service picks up where it was instead of doing the work twice. - A long turn is no longer cut off by the app after 32 moves while the service is still working; the service's own budget pause is what stops a turn now. - The send button is Stop while a turn runs, and the working line says when the service has gone quiet instead of showing "writing". - The bench can be hidden or opened full screen, and Export chat saves the whole conversation beside the job as a file. - The room can be read in every stage: room queries, measurements, free space, checks and views are never refused for being in the wrong stage. - Product names are looked up a wall at a time instead of one cabinet at a time, and the shop's own product names ride along with every turn, so most lookups never happen. - A 3D picture no longer ends a conversation: the saved transcript keeps a note where the picture was, so a long session stays inside its storage limit.

Jobs and rooms: - Rename job and Delete job are in the job menu, and every room line has a bin. Deleted files go to the Recycle Bin with their notes, never gone for good. A room made by another program is left alone.

Settings: - About shows when the build was made beside the version, so a daily build and a release at the same number are told apart at a glance.

Fixes: - The streaming dots no longer animate while the Draftsman is idle.

Cut lists: all 140 real cabinets in the shop's jobs are byte-identical to 0.9.1. A job on the bench under 0.9.1 cuts the same numbers.

v0.9.1

WoodWright 0.9.1 — Gemini takes the wheel, longer fast turns, and the red stand-ins fixed

Still true: no WoodWright program has been cut on a machine yet. Every program is dry-run and read back, and a fresh install has no machine enabled. First cut on scrap at reduced feed, air pass first.

The Draftsman: - Gemini 3.8 Flash is the default model. Opus 5 and Sonnet 5 stay one click away in Settings, and a pick you already made is kept. - The drafting budget is priced, not counted: a Gemini turn runs about three times as many moves before it pauses for review, so the fast model is no longer stopped a third of the way through a wall.

Sheets: - Nest sheets is one button at the foot of the page and stays in view instead of sitting below the fold. - The measured-thickness box says nominal until you type, and Enter on an empty box accepts the material's nominal. - The readiness card updates as machines are switched on and off. - The sample kitchen no longer arrives with counters switched on for you.

Account: - Buying credits returns you to your account page, which says payment received and shows the new balance as it lands.

Fixes: - With some construction methods every system hole read as having no size, so cabinets drew as red stand-ins in 3D and pin holes had no diameter in the cut list. Both read the method correctly now. - The developer endpoint fields under Settings › Advanced are gone from this build.

Cut lists: all 140 real cabinets in the shop's jobs are byte-identical to 0.9.0. A job on the bench under 0.9.0 cuts the same numbers.

v0.9.0

WoodWright 0.9.0 — a third Draftsman model, the shop as a folder, and a fix for the typing crash

Still true: no WoodWright program has been cut on a machine yet. Every program is dry-run and read back, and a fresh install has no machine enabled. First cut on scrap at reduced feed, air pass first.

The Draftsman: - A third model to pick from: Gemini 3.8 Flash, the economy row. Same tools, same guardrails, at a fraction of the price per turn. The picker says what each row is for; pick by the job, not the name. - A turn that cannot reach the drafting service says so instead of sitting there thinking, and a signed-out ask tells you to sign in. - A Stop button ends a turn in flight; nothing after that point is applied. - When a turn runs out of drafting budget and you choose Keep, the stage stays where you were instead of jumping ahead with fixtures unplaced.

The shop: - The shop is a folder. On first run WoodWright asks where the shop's jobs live. - Settings has a People card: who is in the shop, what each person may do, and a join code that pairs another machine to the same folder. - Nothing syncs on its own and nothing needs an account; a shared Drive folder is all the plumbing there is. - The first-run cards say prepaid credits everywhere and never call the AI free.

Fixes: - Typing into the Draftsman on some Windows machines could crash the app. - Under the hood, the code that draws and saves your rooms was reorganised into smaller pieces so it is easier to keep correct. Nothing about your jobs, your files or your settings changes.

Cut lists: all 135 real cabinets in the shop's jobs are byte-identical to 0.8.0. A job on the bench under 0.8.0 cuts the same numbers.

v0.8.0

WoodWright 0.8.0 — special cabinets, cleaner trim, and a Draftsman that talks shop

Still true: no WoodWright program has been cut on a machine yet. Every program is dry-run and read back, and a fresh install has no machine enabled. First cut on scrap at reduced feed, air pass first.

Cabinets: - Furniture base: a vanity on legs with an open slat shelf is one pick under Toe. - Toe profiles: an arched valance or bracket feet on the front toe board. - Toe skin: a trim run along the toe, like crown but automatic, returning at finished ends. - Fluted fronts: a fourth door style, vertical flutes cut on the router. - The cabinet panel is one size up, and each section header shows what is set.

Trim and counters: - Crown wraps every corner correctly whichever way the room was drawn, returns only at exposed ends, and follows applied end panels. - Scribe is counted only where a finished end meets a wall. - A counter stops at the wall instead of overhanging into it.

The Draftsman: - Renders have a front door: a card on Home and under Documents with an example, three steps and the price, and a Render chip in the Draftsman. - The room speaks first, the next moves are one-tap chips, and every card can be undone on its own. - Corners are checked: an appliance in another one's space, or a dishwasher whose door would hit the run beside it, is flagged and fixed before you see the layout. - Plain words. Ids, counts and tool names sit behind "Show technical details". - The phase strip shows progress. The side panel folds away so the drawing takes the room. - A turn that goes quiet is dropped after three minutes with a note, instead of a typing bubble that never leaves. - A burst of moves runs as one program, so a busy turn takes fewer round trips.

Fixes: - Two drilling conflicts at tall toe heights: hinge plate pilots against shelf pins, back pins against nailer rows. - The landing check names the side you see, left or right, on a wall that reads right to left.

Cut lists: all 129 real cabinets in the shop's jobs are byte-identical to 0.7.0. A job on the bench under 0.7.0 cuts the same numbers.

v0.7.0

WoodWright 0.7.0 — corners cut what they need, the face frame is drawn from its parts, and the Draftsman stops going in circles

THE CNC POSTURE HAS NOT CHANGED. No WoodWright program has been cut on a machine yet. Every program is re-parsed and dry-run simulated; a fresh install still has NO machine enabled; the scrap-cut rule still asks to be ticked once per machine; every setup sheet still says verify on scrap first. Run the first program on scrap or MDF at reduced feed, with an air pass first.

CORNERS (the cut list changes here — read the diff line at the bottom before cutting a job that was on the bench under 0.6.0): · a frameless blind corner now cuts its BLIND PANEL — the fixed panel over the buried side, floor line to top, on the door plane, in finished stock — and its buried width comes off the room, not a guess. Before this the corner had no panel at all and every size check was green, because a whole missing part is invisible to a size compare; · a corner upper's deck rides up to the rail top like every other framed upper; · the corner nailers are drawn where they are cut. The 3-D, the bench and the cut list agree.

THE FACE FRAME IS DRAWN FROM ITS PARTS. Stiles and rails were cut from the face layout, drawn by the 3-D from the same layout, and given a third position by the bench (3/4" proud). Now each member carries one position and the 3-D, the bench and the space check all read it. The space check saw the frame for the first time and asked one question about applied end panels — it is in the shop's question list, nothing moved until it is answered.

THE DRAFTSMAN STOPS GOING IN CIRCLES. Read off two real runs: · every tool that takes a number now reads that number back under the same meaning — a sink placed at centre 63 1/2 answers "47–80, 33 wide, centre 63 1/2", not a bare left edge that looked like a miss and sent the model correcting a placement that was already right; · a fixture that could not sit where it was asked says so ("pulled 15 15/16 to keep it on the wall") instead of quietly landing elsewhere; · the landing check waits for the run beside its fixture — one info line until the cabinets on that wall are placed, a hard finding only once they are; · the elevation says the order it reads in, and a wall that reads right-to-left says so once; · an appliance set places the cabinetry around a fixture in one call — the bridge over a fridge with its end panels, the cabinet around an oven, the bridge over a microwave — and moving a fixture is one call, not a delete and a re-place; · an oven cabinet is no longer flagged as intruding on its own oven. The service side of this (a per-turn drafting budget that actually holds across tool calls, and a guard that refuses the third identical mutating call) arrives with the next service update; the app side above is in this build.

THE PLAN AND THE ELEVATION AGREE ON A REVERSED WALL. On a wall that reads right-to-left from inside the room, appliances, rough-ins and soffits drew unmirrored while the cabinets mirrored, and dragging an appliance there ran against the mouse. Everything on the wall mirrors together now, and the drag follows the hand.

SMALLER, ALL REAL: · changing a room's standard base height or depth moves only the cabinets drawn at the old standard — a cabinet you sized by hand keeps its size (a fridge bridge at 24" stays 24"); · a toe height you set on a cabinet yourself is no longer capped at 35% of its height (a 30" unit standing 12" up kept being clipped to 10 1/2"); · a framed opening over a cabinet with no deck ends at the case bottom, not at a deck top that is not there; · a shelf-pin row shared by two bays through one panel is bored once, not twice; · a deck is not grooved for an end the cabinet does not have.

NOT YET PROVEN, SAID PLAINLY: · no program from any post has been cut on iron — the posture above stands; · the corner parts and the frame positions are proven by the engine's own judges over the shop's real jobs (no two parts share space, every groove receives a part, every bore opens into air), not by a corner assembled on the bench yet; · the Draftsman changes are measured against two real runs; the next runs will say whether the loops are gone.

Cut lists: 56 of 129 real cabinets byte-identical to 0.6.0 (CUTLIST-DIFF-0.6.0-to-0.7.0.md). The 73 that changed, traced: on every framed base and tall, the toe END boards and the toe cross members are 3/4" longer — the 3" toe recess is measured from the FRAME face now, the way the shop's own jobs measure it (T1, confirmed on a real job); a corner's diagonal toe board follows the same line. One hood: its ribs stand on the deck and stop under the cap (1 1/2" shorter) instead of running through both — they shared space with the deck and the cap before. Nothing else moved. A job that was on the bench under 0.6.0 has toe boards 3/4" short of this build's numbers; the cabinets themselves are unchanged.

v0.6.0

WoodWright 0.6.0 — the first public release: design, quote, nest, and post from one app

THE CNC POSTURE FIRST. No WoodWright program has been cut on a machine yet — not the SCM's, not the new ones. Every program is re-parsed and dry-run simulated; every non-SCM post is a translation of that same simulated program, read back and compared move for move. That is not a router. So: · the first time this computer saves programs for a machine, the app shows the scrap-cut rule and asks you to tick it — once per machine; · every machine card says "simulated · not yet cut on iron"; · a fresh install has NO machine enabled — tick your own card on the Sheets page; · every setup sheet and program header still says "verify on scrap first". Run the first program on scrap or MDF at reduced feed, with an air pass first, the setup sheet's corner / face / Z checked against your table, and measure the first part.

THE WORKSHOP BENCH (new since 0.5.0, proven on our own first job): open a whole cabinet on the Assembly bench — box, interior and face frame posed as built. Draw a part in the Studio and drop it on; JOINT FIT (J) — click a dado or groove, then the tenon that mates it, either order, and the loose part seats itself square to the run; a part with NO tenon seats too — pick the dado, click the part, and its edge goes to the groove bottom (a housed joint, the way island ribs land in an applied end). SKIN a run of matching ribs with 1/4" material — the cut list gets the DEVELOPED (unrolled) length at the bend neutral axis, bend stations from the leading end, and a cold-bend warning when the radius is tight; SAVE puts the skin on the cabinet like any added part — it nests, prices and posts with it, and the 3-D shows it wrapped, not unrolled. Parts you add by hand nest with the job (they ride their own bucket, named as you named them).

THE JOB BRIEF: a new job can start as a form — rooms, openings, budget tier, appliances, the notes a walkthrough produces — and the form IS the Setup and Style pages; the Draftsman reads the same brief. REVIEW MODE ("Walk the job"): the Draftsman walks the room read-only and reports what it finds — nothing changes unless you act on a card.

PAPER ON A DIET: the build sheet is one compact page per cabinet (facts, parts, joinery, the setup band); labels ride the job packet in saw order; plans and assembly sheets stopped being two copies of the same page.

NEW POSTS (all OFF until you tick them): ShopBot OpenSBP (.sbp) · Biesse bSolid/bWorks CIX (.cix) · Homag/Weeke woodWOP MPR (.mpr) — beside the SCM Xilog (.xxl) and the generic ISO cards (Mach3/4 · GRBL · LinuxCNC · Masso). Where a format token was uncertain the conservative reading was taken and the program header says so. If you run one of these machines, ONE real program from it (any job your CAM writes today) is worth more to us than a week of reading — Sheets ▸ Machines ▸ "Tell us about your machine".

FLIPSIDE (off by default, per machine): a sheet with work on both faces can post as TWO programs — the far face first with the sheet turned end for end, then the sheet as nested with every through cut last. Sheets ▸ Machines ▸ "Two-face parts". Try it on scrap.

SURFACE THE SPOILBOARD: Sheets ▸ Machines — a skim program for the active machine (the bit you pick, 1/64" default, 40% stepover). Bed cleared of stock; re-zero after.

THE SHOP FLOOR: label stock presets (4×2 sheet · Avery 5163 · Dymo/Zebra 4×6 rolls · 2.25×1.25 roll) with field picks; the SHOP-FLOOR PACK (Paperwork ▸ Shop-floor pack) — one HTML file any phone or tablet opens: cabinet index, assembly sheets, part check-off, find by part id; a placed REMAKE now stays put through a re-nest.

PAPERWORK: door and drawer-box VENDOR ORDER sheets (Paperwork ▸ Door order · Drawer-box order); your logo in every title block (Company settings); a sheet-size pick (Letter · Tabloid · Arch C · Arch D) in the print preview; PDFs dropped in the job's WW Docs folder print in the drawing set.

DESIGN: accessory INSERTS in a bay (trash pullout · tray divider · spice pullout · mixer lift · wine cubby · appliance garage) — a hardware line on the BOM and quote and a block in the 3-D, never a cut part; their costs and prices are blank until you type them. Under-cabinet strip lights render as strips now, not one beam.

PRESENTING: AI render scene presets (time of day · people & accessories) and "Render every view" beside Render — one charge per image, the hard stop untouched. (The default scene is today's render; the other scenes switch on with the next cloud deploy.)

THE LIBRARY (new): a curated shelf of 3D assets — browse it at woodwright.app/library or inside the app (the Packs door). One click installs, checksums verify, and the piece lands in Products ready to place. Three pieces to start (CC0); make your own — the spec is one page at woodwright.app/develop, and the good ones ship with your name on them.

A REAL WINDOWS APP: double-click a .ww file and it opens; a second launch focuses the one running app; the window remembers its size and place; the title bar names your job and wears a dot while work is unsaved.

WHEN SOMETHING BREAKS: the app says so — a quiet card with the error, a Copy-details button, and support@woodwright.app one click away. If you're online it also sends us the error facts (version, message, trace — never your job, never your files; the switch is in Settings ▸ Diagnostics, and the privacy page says all of this in full).

THE APP: dark mode (Settings ▸ Appearance ▸ Theme); Ctrl+K "How do I…" — type what you want to do, pick a row, the app goes there and flashes the control; the first-run tour is a timed six-step run to your first cut list (the time lands under Settings ▸ About); the Draftsman's question cards survive a reload and answer exactly once.

THE BENCH LEARNED JOINERY MANNERS: a dado you cut from the bench BELONGS to its part now — move the part, save, and its dados re-cut at the new spot ("2 dados followed"); dados you cut by hand are never touched. The bench toolbar gained the placebar's moves for a part — flush, center, and BETWEEN (the middle rib centers between its two neighbours). A skin renders in the fronts' stained wood, not raw ply. And a FINISHED BACK stops at the same line the finished ends run to — the two finished faces meet clean at the corner (this is the one cut that moved on the real jobs; see the line below).

EASIER EVERYWHERE — a ten-surface audit of first-week friction, all of it shipped: · the field-measure door makes a REAL job first (nothing you measure is thrown away), every new job lands on the Room page, and a wall-less elevation says the next move; · walls take feet-and-inches (12'6"), and a number that can't parse bounces back visibly instead of silently keeping the old length; · on a mirrored wall the cabinet now follows your mouse (drags, drops, bumps and arrows all learned the flip); a dragged base stays on the floor and snaps 1/32; · place a run card-card-card — the drawer stays open until Done or Esc; · the Studio has undo (Ctrl+Z belongs to the drawing there); every one-click permanent delete asks first; a wrong wall, door or window deletes by hand; jobs rename and delete (to the Recycle Bin — never gone for good); rooms and walls take shop names ("Pantry", "the sink wall") that the titlebar, menus and prints wear; · delete and undo SPEAK ("Cabinet #5 deleted — Ctrl+Z brings it back"); long messages stay up long enough to read and click away; · doors show their swing and flip it (⇄ hinge side); windows and doors join the plan's dimension chains; a traced plan's doorways land in a card — one click adds each as a door exactly where the trace measured it; · the parameters page opens on the two dozen values shops actually change (the full library is one click away); Ctrl+P prints the page you're on, on every paperwork page; · the nest names the parts that don't fit the stock; the mic'd-stock box takes 23/32; · out of the box the starter kitchen wears countertops.

NOT YET PROVEN — read before you cut: · no program has run on iron (SCM included); the scrap-cut rule above is the whole answer; · the three new posts are built from public format descriptions only — origin corner, Z sense and tool naming are stated as assumptions in each program header; · flipside assumes the ends swap when you turn the sheet (same long edge on the fence) and the sheet is trimmed to the program's exact length; · the spoilboard program assumes nothing stands taller than the bed within half a bit of its edge, and that the SCM takes DZ=0 (every golden carries a mic'd thickness); · a saved skin is a snapshot — reshape a rib later and re-drape + re-save it (its note carries the developed length either way).

Cut lists: 127 of 128 real cabinets byte-identical to 0.5.7 (CUTLIST-DIFF-0.5.7-to-0.6.0.md); the one change traces — a finished back now stops at the ends' finished line (its skin cuts 1/2" taller and sits 1/2" lower, meeting the applied end clean at the corner).

Files: on your disk, in WoodWright's own .ww format, no account needed to open them. Windows 10/11. Installer signing arrives with the certificate (RELEASING.md).

v0.4.0

WoodWright 0.4.0 - the first public build (take 2: the overlay is comment-free)

Tauri validates the merged config against a strict schema, so the public overlay carries no "//" key - the first run died on "Additional properties are not allowed" before anything was built or uploaded. The overlay is now documented in RELEASING.md instead of in itself.

WoodWright now stands entirely on its own. A fresh install lands on a welcome with three ways in: draw the room you measured, open the starter kitchen (a real sample job - nest it, print it, take it apart), or start a blank job. Jobs live as WoodWright's own .ww files under Documents\WoodWright\Jobs, and every job card on Home draws its own plan picture.

New in the shop: - Door profiles cut from real router-bit geometry - chamfers, roundovers, coves, ogees, beads for edges, stickings and panel raises - beside the Conestoga catalog set in Setup > Door Style. - Attach two cabinets that get screwed together on site: share an end, run a stile past the seam, and the shared panel carries the neighbour's shelf-pin and hinge boring on its far face for the bench. - Grab a face-frame member's edge in the 3D and drag it - snaps to the quarter inch, the floor, the ceiling, the neighbour, the wall end. - Add your own parts to any cabinet (stretchers, nailers, cleats, panels) with honest joinery, and delete or resize what the recipe gave you. - The corner cabinet's shelves are carved to fit inside its backs - the 3D, the cut list and the sheet all show the same shape.

Under the hood: one derivation drives the 3D, the cut list, the sheets and the G-code; the full test gate is 137 suites green.

v0.3.5

0.3.5 — every thickness is a knob, the bleeds are gone, the setup sheet prints, and any router can run the sheets

Fixed — the parameter bleed: - Opening a job put its parameter overrides in the wrong place: they landed in the app's storage but the engine kept deriving with the LAST job's values, and the first edit wrote those back over the new job's — the "parameters bleed between jobs" you reported. And on start-up, loading your saved method wiped the job's overrides seconds after they applied. Both fixed: a job's overrides reach the engine the moment it opens, a job without any inherits none, and start-up keeps them.

Materials — every family has its thickness now: - CASE stock ½ · ⅝ · ¾ (Setup ▸ Materials & Finish ▸ Case; the WWCaseT parameter). Ends, deck, top, stretchers, partitions, nailers, toe boards and shelves follow — every joint, groove and toe with them. Proven at ⅝ over the whole cabinet matrix AND all 443 real cabinets: no two parts share space, every groove is filled, every bore has a purpose, no note lies. The Interior follows the case (one thickness in the engine); a ⅝ melamine case with prefinished-maple interiors takes melamine interiors too (prefinished isn't sold in ⅝) and says so. - DRAWER BOX stock ½ · ⅝ · ¾ (WWDrawerBoxT) — sides, front and back; the ¼ bottom stays. Unset = the style's own: ⅝ for the dado box, ½ for your butt-joint box, so neither changes until you say. A ½ box now nests and prices as ½ stock (it was called ⅝). - "Shop defaults" on the Materials card clears every thickness parameter — back to what the method and the style say, never a ¾ pinned as a value. - The Draftsman reads the job's material picks every turn (it drafts and talks in your materials instead of asking twice).

Cabinets — THE PLACEMENT BAR: - Where a cabinet is and how big it is now lives in ONE place: a bar under the drawing (plan · elevation · 3D) whenever you click a cabinet, an appliance or a placed prop — W · H · D · Elev · X + the wall picker, and the QUICK SNAPS: Left / Right (slides to the neighbour on that side or the wall's end — a window at cabinet height, a range, a doorway are neighbours; an overlapping cabinet lands on the nearest free spot), Center on the wall, Center on… what sits above or below it (a hood centers on the range, a sink base on the window, a wall cabinet on the base under it — one candidate is instant, more offers a list), Stretch L / R to the neighbour, Top = / Bottom = level with the nearest cabinet, ⋯ island · attach · duplicate · delete. Every snap is one click, undoable, and says what it did ("#3 against #2 Sink Base — moved 8″ left"). Arrow keys nudge the selection 1/16″ (Shift = 1″; ↑↓ elevation). Escape leaves a field first, then the selection. - The right rail slims to what is per-cabinet and deep — Ends & panels · Toe · Back · Appearance · Hardware · Construction — and starts a little wider. Nothing lives in two places. - A blind corner's buried width matches the cabinet that butts into it (the inspector names it and offers the number in one click).

Sheets & CNC: - PER-PART MACHINING: right-click a part on a sheet → grooves at the bench · bores at the bench (and back). The sheet drops them, the program drops them, the bench list names them, and it rides the job. When a groove has no bit, the refusal now tells you this is the way out. - STOCK PER MATERIAL: under the sheet preset, each material class in play picks its own sheet — 5×10 melamine beside 4×8 prefinished beside 5×5 baltic. The run header says which; the cards, the programs and the buy follow. A ½ drawer box nests as "Drawer stock 1/2 (baltic)" — its own class, its own sheet; ⅝ keeps the label your cost book prices by. - THE SETUP SHEET PRINTS WITH THE LAYOUT. Print ▸ Sheet layouts (and the job packet): every sheet's page now carries a setup band under the material header — the load rule as a picture (the marked corner is 0,0 · top face up · grain along X), the program's name with a QR, the machine, the stock and its MEASURED thickness, every T word the program calls with Ø / rpm / feed, the counts (parts · bores · dados · tabs), the parts that come off machined-face-down, anything rotated across the grain — the program's own facts, the same ones in the .txt saved beside it. If no program can be built yet the band says the one reason (no machine · stock not mic'd · refused: …). Under the key: 🔧 the sheet's bench work, and the drops worth racking. - THE SHEETS SAY WHEN THEY ARE STALE. Nest, then change a cabinet, a material or a parameter, and the Sheets page says so above the runs — "6 parts changed since this nest ran: 6 resized — these sheets show the job as it WAS", each part named (added · removed · resized · moved stock, from → to), with Re-nest now. A print of a stale nest carries the same warning across every page. Nothing is re-nested behind your back. - CUT-READINESS: one card at the top of the runs says whether the sheets are ready to cut and, if not, exactly why — a stale nest (Re-nest now), parts that don't fit the stock, no machine enabled, parts with no stock class, stock not mic'd ("mic it" jumps to the run), the bench count. Green reads "ready to cut — 8 sheets". Nothing is blocked; the G-code window says THE NEST IS STALE in red, and Save asks "cut anyway?". - YOUR ROUTER: four new machine cards under Sheets ▸ Machines — Generic router · Mach3/Mach4 (.tap; Avid, Laguna, most 4×8 kits), GRBL 1.1 (.nc; Onefinity, Shapeoko, LongMill), LinuxCNC (.ngc), Masso G3 (.nc). Tick yours, pick program units (mm or inches), where Z zero is (the table — safer — or the top of the stock) and how tools change (T M6, or an M0 pause that names the bit), and the same programs the SCM gets are written in your control's G-code — the same toolpath, translated move for move, then read back and compared before you see it. Bores on a router with no drilling head: a same-size drilling bit pecks; a bigger hole (a 35 hinge cup) is helix-bored with a smaller bit; if nothing in your library can make the hole the sheet refuses and names the bit to add. Every card says it: no shop has run one of these on iron yet — verify on scrap first.

Settings — the shop travels, and files go where you say: - SHOP BACKUP: Settings ▸ Shop backup exports ONE .wwshop file with everything that lives only on this computer — the tool library and machines, parameter sets, materials and stock, the cost book, your library, the remnant rack, the folders, the letterhead, the Draftsman settings (never your sign-in). Import it on a new PC or after a reinstall, ticking which sections to take; the app reloads with them. A chip says how long since the last backup. - FOLDERS: Settings ▸ Folders — CNC programs, exports (CSV / GLB / 360° / renders) and part DXFs each land beside the job as always, or in a folder you choose (the machine's share, a CAM watch folder, the office server), with a subfolder per job or flat. The Documents page lists whatever folder is set; the toasts name it. - "Open in viewer" on the Documents page opens the file again — the app had never been granted permission to open a path with the OS, only web links; it is now.

The Draftsman: - The meter shows the LAST TURN's bill beside this chat's running total ("$12.40 in credits · this chat $0.62 · last turn $0.18") — the number a small shop steers by, seen the moment it lands. - Its map of the app caught up with the week: ask "how do I…" about parameter sets, the Materials card, the Overview tab, the placement bar, the tool library, the bench list, stock per material, the setup band, the stale banner, the router cards or the readiness card and it names the real control.

Under the hood (RELEASING.md): CUTLIST-DIFF-0.3.4-to-0.3.5.md — 0 of 104 real cabinets moved; 127 suites green; a sweep preload runs every suite at ⅝ case stock (scripts/tools/sweep-preload.mjs) — the physics laws hold there too.

v0.3.4

0.3.4 — parameter sets, materials, the tool library, and the corner squared away

Setup: - MATERIALS — what the parts are cut from. Setup ▸ Materials & Finish has a Materials card: five rows (Case · Interior · Backs · Fronts & frame · Drawer boxes), two boxes each — the nominal thickness (¾ · ½ · ¼: the stock's NAME, never the mic'd number, which stays on the Sheets page) and the species / ply type: prefinished maple or birch ply, unfinished birch / maple / oak / walnut / cherry, melamine white or woodgrain TFL, MDF, particleboard, baltic birch, solid hardwood. A pick renames the cut list's material column and splits the Sheets runs (a melamine interior never shares a sheet with a prefinished case); the backs' and fronts' thickness IS the parameter (WWBackT / WWFrontT). Where the engine cuts one thickness today (case ¾, interior ¾, drawer boxes ⅝) the chip says so — no menu the cut list would ignore. Shop defaults keep every label you already price by.

Cabinets: - FINISHED ENDS run to the frame's bottom — 3½ off the floor with a 4" toe and a 1¼ rail — whether applied, ¼ skin, or the FLUSH end itself (the deck dies into a groove that far up). Unfinished ends still sit on the deck. Walls never hang. (Cut lists: an applied panel / flush end +½ long.) - THE 45 CORNER: wall A's back runs to the chamfer and wall B's back from the chamfer's end (it sat 1⅜ toward the corner — ~2" of bare wall at the return end); the void panel seats between the wall backs' inner faces and no longer pokes through wall B; the toe's front board runs end board to end board (it stopped ~1.9" short of each). Toe cross members hang from the deck (the gap is at the floor). - OVERVIEW — the first tab in the cabinet editor: the whole cabinet with its doors and hardware ON, chips to show or hide layers (Box · Frame · Fronts · Interior · Hardware · Toe · End panels; Alt+click solos one), an EXPLODE slider, Home. Per cabinet. - If one cabinet can't be built, the 3-D no longer dies: a translucent red stand-in the cabinet's size stands in and a toast names it ("#4 Tall: …").

Counters: - The top runs OVER a dishwasher, trash compactor (new 15" entry) or under-counter fridge between two bases; ranges still stop it. A corner cabinet joins its two walls' runs — the L has no void; a 45 corner's slab follows the diagonal door and its overhang (a polygon, not two boxes). Sizes, edge and area in the takeoff match. And over the real jobs, every base cabinet is under a slab: a narrow product inside a wider box (an end panel, a filler stile) used to shorten the run's slab and split the run; a panel's stored "depth" no longer sizes the top.

Sheets & CNC: - MACHINES: the programs name the machine (SCM N100 · Xilog Plus · .xxl · 5×10 bed); a checkbox per machine (untick = nothing posts, and it says why); "Tell us about your machine →". - Bench work per run: 🔧 the parts the machine doesn't finish (the far face, anything the note sends to the bench), in the part's own words. - The sample job's Prefinished ¾ run refused one sheet ("tab floor: #1 Back…") — the tab recovery dropped the wrong part's tabs. Fixed; every sheet of the sample posts.

The Draftsman: - COST: the conversation now caches (breakpoint on the last message) — a small task that read $1.95 was paying full price for its own history every turn; the meter shows "this chat $x.xx". - EYES, restrained: inspectGeometry (free, exact — every part with its box, what shares space, what leaves the envelope, two labelled drawings) for checks; and the LOOK — a real picture, framed on one cabinet (three-quarter with the rest ghosted, or straight on), rationed. Settings ▸ The Draftsman ▸ Pictures per turn (0–4, default 2).

Under the hood (RELEASING.md): the corpus cut-list diff (12 of 104 real cabinets moved, every line a ruling above); 117 suites green; the tool library's migration and the tab-floor fix are pinned by tests.

v0.3.3

WoodWright 0.3.3

Money: - A 45° corner quoted TWO doors whenever its face said "pair" and cut ONE. It quotes one now; a pie-cut quotes its bifold pair. - A test now holds the quote's counts against the cut list on every real cabinet, so the two cannot drift apart again.

The sheet buy and the router: - The toe platform's cross member, the corner's wall backs and nailers, and the corner shelf were unclassified — flagged on the Sheets page and left OFF the sheets and the router while the cut list billed them. Routed with their cousins. Every part name now has to land in a bucket (a test).

Multi-bay cabinets (a stile between two bays — every drawer bank beside a door, every three-bay wall cabinet). These CHANGE CUTS: - A bay machines only the end it reaches. The middle bay's shelf pins were bored into BOTH ends (where no shelf of its ever rests); a 4-drawer row bored both ends for all four drawers, four times over. - The flush-out partition behind a stile carries the machining of the bays beside it — shelf-pin rows, fixed-shelf grooves, slide pilots — on the face each bay sees. It was a bare board; the door bay's shelves rested on pins two bays away, the drawer bank's slides ran on nothing. - The flush-out runs deck-top to top-underside when its stile does (a case part, like a partition), so the grooves cut for it in the deck, the stretchers and the top actually receive it — they received nothing, and the top-side ones were on the wrong face and 3/4" off besides. - Two panels behind a stile only when two panels fit: your 1 1/8" centre stile was getting two 3/4" "twins" that overlapped each other by 3/8". Narrower than 1 1/2" → one panel, centred. - Shelves, nosings and drawer boxes size off the flush-out's face, not the frame's opening line (a shelf was entering the panel's groove 3/16 instead of 3/8). - A door shorter than about 8" takes one hinge, centred (a 7 1/2" door was getting two cups 1 1/2" apart).

Boring: - A line-bored column no longer drills through a fixed shelf's groove (a 10mm pin in what is left of 3/4 stock after a 3/8 dado breaks through the finished face). - One partition through a drawer bank over doors carries BOTH bays' boring — it had the runner pilots and none of the shelf pins, so the shelves below had nothing to rest on at the partition. - The Specs page's Boring picture names every hole on hover (shelf pin, hinge plate pilot, slide pilot, cup, dowel) and counts them by purpose under each card.

Parameters: - BackTopScribe reads per class now (the wall and tall siblings were hidden and never read). Audit: 180 parameters move something, 54 claimed-wired ones do not, 0 base/wall/tall asymmetries left.

v0.3.2

0.3.2 — the parameter truth release

The saw gets it right more often: - A wall cabinet is a wall cabinet because it HANGS, not because it hangs high — three low-hung uppers were being cut with base rails. - Backs are plain squares when the groove runs through. The Back panel says why. - Notches that were only words on the cut sheet are cut now (baseboard, hang rail, the 45 corner's end inset). - A part you reshape in the Studio sits where you drew it, and the grooves that receive it follow. - No two parts share space, and nothing sticks out of its cabinet: a sweep boxes every part against every other and against the cabinet. It caught frameless shelves and drawer boxes cut off the front opening instead of the case (1" too long — they could not go in), a deck running 3/4" into an applied end panel, and frameless corner doors 3/8" taller than the box. All fixed. - Every groove receives a part: a second sweep maps each groove into the cabinet and checks something sits in it. The partition grooves on the stretchers and the top were on the wrong face of the board (the partition comes from below) and 3/4" from the partition. Fixed. A part machined only on its underside (a top, a back stretcher) is drawn machined-face-up so the sheet and the router agree; a part machined on BOTH faces (a lit upper's deck) sends the underside work to the bench, and says so. - Hinge-plate pilots go on the side the door hangs on. A single door hinged left was boring the right end too.

The back, in your words (this one CHANGES A CUT on every cabinet): - ONE question for the back — "Back — how it goes in": in grooves (the shop), inside the box butt-jointed (no bigger than the opening, for CNC-less building), or plant-on. On the Specs page and per cabinet in the inspector. - An island's finished back sits INSIDE the depth you type (24 typed = 24 built, panel included), so walkways measure true on the plan.

The toe kick, in your words: - One question — manual, into the ends, or separate parts — plus a plain cross-member switch, one every 24", 3 1/2" tall, four setbacks, and a front board that can run long toward a corner. A separate platform is a four-sided box (front, back, an end board at each end, members between). Each board is a real part; the 3D draws the platform — the 45's five-piece and the pie-cut's L platform too, and a manual toe draws none. (The 45 was billing its back toe boards twice.) - A framed corner cabinet was 3/4" deeper than the cabinet beside it. It lines up now.

The Specs page tells the truth: - 61 settings nothing reads are hidden. A setting that can't matter yet says so on its row, and why. "Commonly changed" shows the ones this shop actually uses.

Also: drawer boxes as a purchase line (bought) or cut — including your 1/2" butt box with the runner notch; applied end panels held 1/32 shy of the frame; shelf pin count is a live knob; the interior editor can put a partition behind any stile, and no longer hides a ghost shelf in a drawer bank; the chimney's three numbers are fields; oak plates grown off your own boards; the update chip pops when a release lands.

Everything above is pinned by 99 test suites, all green locally including the six that read the real jobs.

v0.3.1

WoodWright 0.3.1 — ink, the side-panel law, and per-cabinet customisation made legible

The first release that arrives on its own: 0.3.0 was the last hand install.

v0.3.0

WoodWright 0.3.0 — the first release that can update itself

Auto-update: the app checks dl.woodwright.app 45 seconds after launch and every six hours, downloads in the background, and installs only when you say so. It never restarts itself — this app holds unsaved rooms and billed Draftsman runs.

Ink: near-black is the interactive colour, warm neutrals, and the only saturated pixels left on screen are the ones that mean something.

This is the last version that has to be installed by hand.