UEMA
What's new

Built in the open, changed in public

There has been no release yet — the deployed version is whatever is on main. These are the increments that landed, and what each one actually fixed.

0.1.0-dev.1414 September 2026Claude AgentLaunch

The Claude agent, and a way to run it without a second AI bill

  • Released the Claude migration agent as a separate product: it reads a site on any CMS and rebuilds it as a working Adobe project — components, content, images and navigation — on your own machine, against your own repository.
  • It runs inside Claude itself, which means the AI doing the work is the Claude subscription you already have. No separate AI account to set up, and no second usage bill to approve or forecast.
  • Also available to developers inside their own tools, and as an unattended mode for migrating many sites overnight — that last one is the only mode that carries its own AI usage cost.
  • It never publishes, pushes or touches a live site. It produces a folder and a report; a person decides what happens next, and there is no setting that changes that.
  • Every stage is checked before the next one starts, so content is never built on top of components that were never made.
0.1.0-dev.1313 September 2026ContentQuality

Your images finally come with the site

  • Migrated pages used to keep pointing their pictures at the site they were migrated from — which looks fine on the day and breaks the moment the old system is switched off. Images are now copied across, converted to a modern format, and stored once however many pages use them.
  • Pictures served from someone else's domain are listed rather than copied, because re-hosting another company's images is a licensing question nobody asked us.
  • The navigation and footer are now carried across as site-wide pieces. Previously every migrated site arrived with neither, because the step that strips them out for analysis had no counterpart putting them back.
0.1.0-dev.1213 September 2026AccuracyMigration

It reads your CMS, not only your pages

  • Where a CMS can be read directly — WordPress, Drupal, Adobe, Contentful, Sitecore — the migration now reads it, instead of inferring everything from the rendered page. Structure the CMS can simply state is no longer guessed at.
  • For any other system, the agent works out how to read it once, then checks that answer against pages it has already crawled before trusting it. A plausible wrong guess about your CMS would migrate somebody else's content, so it has to prove itself first.
  • Recognises twenty-one platforms from the page itself, weighing strong evidence over weak — a site naming itself outranks a coincidental folder name repeated on forty pages.
  • A new check catches content your CMS holds that the page never displayed. No other check could see it, because the page is the only thing they compare against.
  • Where the CMS has a proper name for something the migration called 'text1', it now proposes the real name — the difference between a component your authors understand and one they have to decode.
0.1.0-dev.1112 September 2026QualityMigration

One component, used on every page that needs it

  • The same design appearing on two pages now becomes one reusable component rather than two that happen to look alike. That single rule is the difference between a site where a change is made once and one where it is made in fourteen places and missed in three.
  • A duplicate is refused outright, with the existing component named — so reuse is the default rather than a cleanup job for later.
  • The verification report now shows how many pages use each component. One used on a single page is usually two designs that should have been one, and it is worth looking at before sign-off.
  • Fixed the AEM Cloud output, which passed every check and produced a project that would not have loaded: pages written outside the deployable package, components referenced but never created, and the manifest that decides what actually ships missing entirely.
0.1.0-dev.1011 September 2026HonestyQuality

Checks that had never actually run

  • The two most valuable checks — does the content match the original, and did the search metadata survive — had never once executed on a real page, because the original page was thrown away after conversion. Originals are now kept, and both checks run.
  • The report says how many pages were checked against a real original, so a clean report over nothing cannot be mistaken for a clean report over everything.
  • A failed content check no longer marks the whole stage as broken. Content worth a human's attention and output that is genuinely broken are different problems, and treating them alike made every real migration look stuck at the exact moment it became reviewable.
  • Thirteen AI providers now work behind one setting — Claude, Gemini, OpenAI, Azure OpenAI, Groq, Mistral, Cerebras, OpenRouter, Together AI, GitHub Models, Hugging Face, Cohere and Cloudflare Workers AI — so a customer can use whichever account they already have, and switch without a migration of their own.
  • Every change now runs through automated checks before it lands.
0.1.0-dev.910 September 2026SecurityOnboarding

Tenant isolation, email confirmation, and a first-run tour

  • Closed a tenant-hijack hole: registering with an unverified address at a company's domain made you an active member of that tenant with read and write access to their projects. Such a registration now lands pending until the address is confirmed, and the original exploit is a regression test.
  • Closed a cross-tenant read: every route naming a project id now resolves it within the caller's tenant and answers 404 otherwise, and the unauthenticated project list survives only on a deployment with no accounts at all.
  • Email confirmation is real — 256-bit tokens stored only as a SHA-256, single-use, 24 hours, with a resend route that retires the previous link.
  • Added a first-run product tour: seven steps, one per screen, recorded against the account rather than the browser so it appears once per person rather than once per machine.
  • Documentation: architecture, decisions, an OpenAPI contract, domain vocabulary, operations and security, plus eight Mermaid diagrams versioned with the code.
0.1.0-dev.88 September 2026OperationsHonesty

The operator portal, and no more invented data

  • Shipped an operator portal as a separate application — read-only on the database, three audited actions through the API, and an append-only log ordered by a monotonic sequence rather than a timestamp.
  • Stopped showing demo fixtures to real users: a connected account with no projects now sees the empty state instead of an invented 10,412-page project it never created.
  • Added /healthz, reporting process liveness and database reachability separately — a process that is up with an unreachable database is not healthy.
  • Matched the operator portal's design system to the customer app: same red, same Montserrat, same components, and mobile-responsive throughout.
0.1.0-dev.75 September 2026Auth

Password reset, rate limiting and session revocation

  • Real password reset over a mail provider's HTTP API, with the link written to the server log when none is configured — a supported mode, and a documented one.
  • Per-IP rate limiting on registration, sign-in, reset request and reset completion, with separate buckets so exhausting one does not lock out another.
  • Session revocation by watermark rather than a deny list: one column write invalidates every token an account holds, and completing a reset sets it, so a reset actually evicts an intruder.
0.1.0-dev.628 August 2026Pipeline

The pipeline runs end to end

  • A crawl can be started over HTTP: ingest jobs are queued through the API and claimed by the local runner, which drives real headless Chromium.
  • Authored importers are persisted and loaded from a real registry, so a bulk run uses the module the agent wrote rather than a fixture.
  • Emitted artifacts are stored per project with a change kind and a diff against the branch, and a deleted path stays visible with its prior content until the next emission.
  • Approve and Waive in the review queue now record an append-only resolution carrying the actor and the reason.
0.1.0-dev.514 August 2026AuthMulti-tenancy

Accounts, tenants and RBAC

  • OAuth and password sign-in, with tenants derived from the email domain and personal tenants for consumer addresses.
  • Three roles and ten actions, with a last-active-owner rule enforced in one function called from every path that could violate it.
  • Projects scoped to the caller's tenant, with the tenant taken from the session rather than the request body on create as well as read.
0.1.0-dev.430 July 2026EmitDesign

Real pull requests, and Figma ingestion

  • Emission assembles a project's documents into repository files and opens — or reuses — a pull request through a GitHub App installation.
  • Figma ingestion against the real REST API, so DESIGN_SYSTEM mode maps into a library that actually exists.
  • Verified end to end against a real site, git push and pull request included.

Every release note has a specification behind it

Customers get the full increment record — requirements, design and the alternatives that were rejected — not just a summary of what changed.