Skip to content

Installed apps: the launch/<app-id> kind, and "Install as app" - #180

Merged
lannbot merged 1 commit into
mainfrom
pwa/launch-kind
Sep 8, 2026
Merged

Installed apps: the launch/<app-id> kind, and "Install as app"#180
lannbot merged 1 commit into
mainfrom
pwa/launch-kind

Conversation

@lannbot

@lannbot lannbot commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

A web app manifest's start_url is written once into the OS's registry
and replayed for months; the sealed app/ token fits that badly — its
opacity hides what the launcher shows, and its key binding turns a
route-key convergence into an installed app that opens to a refusal.
So an install opens at launch/<package>: plaintext, keyless, resolved
by route-decode to this user's install at route "". The bar switches to
app/ once the frame is up.

shell.install-app mints a manifest per package with id, start_url and
scope written absolute against the page's base (never /, which on a
project Pages site is somebody else's page), an icon of the user's
glyph on the user's hue, and calls the prompt the browser offers for
that manifest — not one it offered for an earlier one.

e2e: launch-fragment-opens-app, install-app-manifest.

Gates: just ci, just e2e 22/22. Automerge armed.

Unverified (needs a real install, which Playwright cannot drive): that Chromium keeps the fragment in start_url; the design record names ?launch= as the fallback for this kind.

A web app manifest's start_url is written once into the OS's registry
and replayed for months; the sealed app/ token fits that badly — its
opacity hides what the launcher shows, and its key binding turns a
route-key convergence into an installed app that opens to a refusal.
So an install opens at `launch/<package>`: plaintext, keyless, resolved
by route-decode to this user's install at route "". The bar switches to
app/ once the frame is up.

shell.install-app mints a manifest per package with id, start_url and
scope written absolute against the page's base (never `/`, which on a
project Pages site is somebody else's page), an icon of the user's
glyph on the user's hue, and calls the prompt the browser offers for
that manifest — not one it offered for an earlier one.

e2e: launch-fragment-opens-app, install-app-manifest.
@lannbot
lannbot enabled auto-merge September 8, 2026 03:09
@lannbot
lannbot merged commit 330c4bf into main Sep 8, 2026
2 checks passed
@lannbot
lannbot deleted the pwa/launch-kind branch September 8, 2026 03:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants