Ombrise
Ombrise

Object — 2026

The notch pauses with you.

A prototype that gives a browser pause somewhere physical to happen: the MacBook’s own hardware cut-out.

What it does

The browser decides. The notch shows it.

You reach a checkout in Chrome. The pause fires as it already does, and at the same moment it tells the Mac. The notch expands into a small black panel with shoulders wider than the cut-out, counts the browser’s thirty seconds down, and then offers the same three outcomes.

The browser stays authoritative. A decision made on the Mac is logged and sent back, and never applied. That is phase one. The flag that would hand the notch the decision is written, untested, and off.

The states

Eight, at their real size.

  • The notch panel, state 1: At rest. The notch is the notch.

    01At rest. The notch is the notch.

  • The notch panel, state 2: A checkout in the browser. Thirty seconds.

    02A checkout in the browser. Thirty seconds.

  • The notch panel, state 3: Still counting.

    03Still counting.

  • The notch panel, state 4: Ready when you are.

    04Ready when you are.

  • The notch panel, state 5: Walk away · plan it · continue.

    05Walk away · plan it · continue.

  • The notch panel, state 6: Walked away.

    06Walked away.

  • The notch panel, state 7: Planned.

    07Planned.

  • The notch panel, state 8: Continue.

    08Continue.

How it connects

Public APIs and a local socket.

Native Swift — AppKit and SwiftUI, public APIs only. The notch rect comes from NSScreen’s safe-area insets, with a top-edge fallback on Macs that have no cut-out; the panel is an NSPanel above it; the global shortcut is Carbon’s RegisterEventHotKey, which needs no permission. No accessibility access, no screen recording, no network.

Chrome reaches it through a native messaging host, com.griotta.mac.bridge, which talks to the app over a Unix socket in the user’s temp directory at mode 0600. A pause that arrives from the browser counts the browser’s own length, whatever the app’s demo toggle says. Nothing else is on the link: no URL, origin, merchant, product, price, cart, page text or identity crosses either side of it.

Status

Made of
Fifteen Swift files. One menu-bar app — no dock icon, no window.
The bridge
A Chrome native messaging host over a local Unix socket. Local only; it reaches nothing.
Who decides
The browser. Phase two is written, untested and switched off.
Checked
End to end against the real Chrome binary on a throwaway profile: real content script, worker, native messaging, host, socket and app.
Not checked
A normal Chrome profile with the extension loaded by hand. Still to do.
The images
Eight states, rendered by the app's own snapshot harness.
Status
A prototype. Not shipped, not released, and not in the Chrome Web Store.

If I can’t leave a thought alone, I make it real.

Some become products. Some become research. Some only needed to exist once.

Griotta is the one I’m building now.

julien@ombrise.com
© 2026 Ombrise · Julien Poulain · Seoul, KR