layr. ← All releases
Release notes

Layr on its own foundations0.5.0

The product moved onto infrastructure that belongs to Layr, dropped the last of the old name from the inside, and gained the multi-user model it needs before a team can be put in front of it.

2026-08-03Minor11 changesMigrations 041–043

Highlights

More than one person can work on a drawing New

Previously a drawing held one set of markups with no notion of who made them, and of two people on the same sheet the second save destroyed the first. Now every markup belongs to its author, you can see who else has marked a sheet up and switch each person's layer on or off, and a colleague's work cannot be edited or deleted by anyone but them.

If someone changes the sheet underneath you, the app stops and says so rather than quietly failing to save — there is no state in which you keep working while nothing is being stored.

Projects have members and roles New

Every route that reaches project data is gated on membership: a non-member cannot reach a project's drawings at all. A member with read access can still take their own takeoff and make their own annotations — they simply cannot change anything shared, such as the drawing's scale.

Takeoff totals can be reported per person New

Quantity rollups take an author, so "whose numbers are these" always has an answer. The panels and the exported spreadsheet agree with the name shown beside them.

Layr is independent of the previous company's systems Infrastructure

The app, its database and its PDF-rendering services all run under Layr's own accounts. The retired systems are no longer in the path of anything shipped, and the tooling now refuses to point at them even by accident.

Releases are numbered and written down Internal

From this release on, every promotion to production carries a version and a notes page, and the version in the corner of the app links to the notes for whatever is deployed. The release history is the running record.

The product is called Layr all the way down Internal

The interface has said Layr for a while; the command-line tools, package name, deploy scripts and engineering docs did not. They do now. Dated records were deliberately left as written — a decision made in May was made about the old name, and rewriting the past would make the record false.

Fixes worth naming

Four defects were found and fixed before release, each reproduced first rather than taken on trust:

Two of the four were in work already written and believed finished. They were caught because a passing test suite is not treated as evidence on its own — a check that cannot fail looks exactly like a check that passes.

Upgrade notes

AreaWhat to know
Migrations041, 042 and 043 are applied to both hosted environments. 042 adds a trigger to a table the app writes roughly every second; it was verified against a real save before release.
Feature flagsPROJECT_ACL_ENABLED and DRAWING_USER_STATES_ENABLED are on in both environments. Local development needs both in .env.local and a dev-server restart, or the multi-user behaviour is silently absent.
Local stackThe local Supabase project id is now layr. If your stack predates this, run supabase stop --project-id pipe-dream once before starting it again.
CLI./layr is the command. ./pd remains a permanent alias, so nothing you have memorised breaks.
Two-user testing./layr local seed-users creates two accounts with different roles, a project and a sheet, so a multi-user pass is one command.

Known limits