The original app is always one click away. Satin sits over the app, never in place of it.

The native switch is built and tested; the extension is in development.

tracker.example.com/atlas/ATL-142Satin on

Atlas · Personal mode

Your day

Today

Design support flowToday

Next

Polish billing pageTomorrow
Audit colour contrastFri

Blocked

Fix login redirectToday
  • The original page stays mounted underneath
  • Its own shortcuts pause while Satin has focus
  • One click or your shortcut takes you back

Illustrative. Satin never changes the page underneath.

One click back, and nothing lost. Every feature stays where it was, and the way back is on every screen.

The page stays put. Satin draws over the app in an isolated layer; the page underneath stays loaded and untouched.

On every screen. The translation engine refuses to produce a Satin screen without the switch back.

A shortcut, too. Use the button or a keyboard command.

Focus comes back. Switch back and your cursor is exactly where it was on the original page.

Nothing is lost. Scroll position, selection and unsent text survive the trip in both directions.

Links to the source. Every task and safe failure links to the same item in the original app.

Graceful failure

If the app changes, Satin steps aside. On its own, before it can get in your way.

Every adapter runs a health probe at start. If the app’s answers no longer fit its mapping, the adapter switches off, changes are refused and the original app returns.

  • “Paused by us” and “the app changed” have separate reasons.
  • Adapters are bundled, never downloaded, so fixes are reviewed updates.
  • Each pause is announced once, not on every page.

Jira Cloud adapter

Declarative, bundled inside the extension

Healthy

Atlas · Personal mode

Your day

Design support flow
Polish billing page
  1. Press a button to see what Satin does when something goes wrong.
Shown in seconds; in real life, on the next render.

Locked surfaces

Some screens are never touched. The product decides which.

In an SDK product, the manifest lists screens OwnUX must never re-render, such as billing, security and consent. The SDK refuses to render them; the product’s own screen appears.

  • Locked screens are declared once, in the manifest.
  • A locked-surface result falls back to the product’s view.
  • Satin for People never runs on banking or payment pages.
About the capability manifest

Acme Projects OwnUX SDK

My work

Your OwnUX
Design support flow
Fix login redirect
Polish billing page

Plain words, roomy rows, built from Acme’s own components.

locked: ["billing", "security", "consent"]

compose("my_work") → ok, validated surface

The kill switch. Satin can be paused remotely, only by a file signed with its own key.

  1. 1

    Signed

    Each file is signed with Ed25519 and checked against public keys pinned inside the extension.

  2. 2

    Flags only

    It can switch reviewed behaviour off or on. It can never add new behaviour or code.

  3. 3

    Never replayed

    Tampered, unknown-key, older or expired files are ignored, and the last good one stays in force.

  4. 4

    Checked often

    The extension looks for a new file at most every 15 minutes, and whenever Satin’s view renders.

Built and tested against development keys. The production signing key and hosted file come before the first release to testers.

Questions, answered plainly.

In developmentSatin for People is in development: Jira Cloud first, Linear next. The native switch and health probes are built and tested.

No. In Personal mode, Satin’s view sits over the page in its own isolated layer. The page underneath is identical before, during and after, and a test checks exactly that.

Change how your apps feel. Never what they are.