Skip to content

v0.3.0

Latest

Choose a tag to compare

@IvanKuria IvanKuria released this 09 Aug 16:47
· 1 commit to main since this release

Adds support for browsers with no push service. The zip below is built by CI from this tag.

Install

  1. Download the zip and extract it
  2. chrome://extensionsDeveloper modeLoad unpacked → pick the folder
  3. Click the extension icon and follow the setup guide

What changed since v0.2.0

Browsers built on ungoogled-chromium now work. Helium, Thorium and similar strip out Google's FCM, and Chrome's Push API is FCM — so pushManager.subscribe() can never succeed there. Previously the extension detected that and told you to switch browsers.

Those browsers now get a second transport: the extension holds a WebSocket open to the relay and codes are written down it. Setup is identical, and nothing extra is stored — holding the socket is the registration. The code passes through a Durable Object's memory and is never written to storage, so the "we never store codes" property is unchanged.

Measured at 216ms from the phone posting a code to it arriving in the browser.

It is second-best, not equivalent. Push wakes a suspended service worker by design; a socket cannot. If the worker is evicted and a code arrives before the one-minute heartbeat re-establishes the connection, that code is lost. Chrome, Edge, Brave and Vivaldi use push and have no such window.

Adds the alarms permission, which is what re-establishes the connection after the worker is evicted — the only thing that survives eviction.

Known limitations

Unchanged from v0.2.0: creating the iPhone automation is manual and cannot be automated by anyone; iOS forces a notification each time it runs; codes reach the relay over TLS but are not end-to-end encrypted, and are never written to disk or logged. Locked-phone reliability is still unmeasured — see docs/SPIKES.md.