Export › Excel › Page Region boxes a schedule on a sheet and saves it as a workbook. You can fix cells, drop rows and collect several tables first. It is in review, so it is on at layrbuild.dev and off on layrbuild.app. Snapshot, Cut Content, Color Processing, the Image tool and Select Text are on in production. A hatch drawn here still looks like that hatch when the PDF is opened in Revu, and Revu's hatches come back.
Export › Excel › Page Region frames a rectangle on the sheet. It is not a tool: nothing on the belt lights, and picking a tool, Esc or a right-click backs out. The box is green, with an Excel tab. Letting go reads the table. The rows and columns that were found stay drawn on the sheet, heading rows tinted, with eight handles. Dragging a handle reads the box again. The card shows the rows Excel will get. Heading rows can be changed with −/+. Repeat merged cells and Drop empty rows and columns start on, and both are remembered in this browser. Add table keeps the table in a tray and arms the box again, on any sheet. Copy puts tab-separated text on the clipboard, which pastes straight into a spreadsheet. Save writes one workbook: a worksheet per table, plus an About sheet that names the project, when it was exported, and each worksheet's source sheet. Save opens the system save window on Chrome and Edge, and goes to Downloads elsewhere.
Expand, the card's ⤢ or a double-click on the preview, opens the whole table. Double-click a cell to edit it. Enter keeps it and moves down, Tab moves across, Alt+Enter starts a new line, and Esc lets the edit go. Hovering a row's number or a heading takes that row or column out. Edited cells are marked, and Undo all drops the edits. Collapse returns to the card with nothing lost. Copy, Save and the tray take the edits. Reading the table again asks first — a heading-row change, a cleanup switch, a dragged edge, or closing the table — because those edits would be lost. The prompt says how many, and Keep edits leaves them.
Snapshot (G), Cut Content (Shift+G), Color Processing and the Image tool's file picker are on at layrbuild.app. Select Text is on there too: Y, then drag across spec text to copy it. They were on at layrbuild.dev in 0.28.0 and off in production. Paste (Ctrl+V) was already on.
A hatched Rectangle, Ellipse, Polygon, Cloud, Area, Volume or Diameter exports as Revu's own hatch, and Revu paints the pattern the canvas shows. Diagonal goes out as Diagonal Up, Crosshatch as Grid, and Dots as 10% Dots. Diagonal cross and Zigzag go out under their own names, Layr Diagonal Cross and Layr Zigzag, and Revu still paints those tiles. A hatch from Revu comes back as the nearest Layr pattern, at Revu's spacing and in its color. On Revu 21, ./layr bluebeam check was 70/70 from Layr to Revu. The other way was 115/117; the two misses are the known Dimension and Count gaps.
Dragging a Snapshot, Cut Content or Color Processing frame, or the Excel box or one of its handles, to the canvas edge slides the sheet, the same as dragging a markup. On a spec page the edge scrolls the book. The corner you started from stays on the drawing while the sheet moves.
supabase/migrations is unchanged from 0.28.0. Pull requests #794 and #797 add none. Production applies nothing new when this release merges. Do not apply anything by hand. dev has already deployed the product that reads a table and writes hatch keys.tool:snapshot, tool:cut-content, tool:color-processing, tool:ann-image and ui:selectText move from review to released. They turn on at layrbuild.app with this release. That is a change in src/domain/features/features.ts, not a database write.ui:exportExcel is new and review. On at layrbuild.dev and locally, off on layrbuild.app. Flipping it to released is a later change in the same file. The Export menu hides Excel until then. The route still ships with the app.features.ts. A tool with no row is on in every channel, including production. ALWAYS_ON_TOOLS is gone. Existing rows keep the statuses above.POST /api/pages/{pageId}/table with { region: [x0, y0, x1, y1] } returns the table inside that box, in the page's markup frame. Any member who can read the page may call it. The route is classed project in the route ACL registry, the same gate as search hits. No new table. The read runs in modal/table_core.py, as a script locally and as the tables endpoint on Modal. Merging deploys that endpoint through deploy.yml. Do not deploy Modal by hand.PatternName, PatternColor, PatternScale and Pattern tile on the markup. Nothing new is stored in Postgres. The fade lives in the tile, and FillOpacity is written as 1, so Revu's Fill Opacity field reads 100% on a hatched markup.0.29.0.ui:exportExcel is released. Entire Document stays disabled and says Coming next. Later formats (images, Word, PowerPoint) are not in this release.