Skip to content

Status

Two clocks agree. One does not.

The store listing and the tagged release finally describe the same build. The repository’s own status document does not. And nothing here has been through a browser.

0 of 15 desk rows marked pass · 0 of 36 rows in the extension's own checklist

Chrome Web Store

1.4.1

Published 2026-10-04

Updated 2026-10-04 · 272 KiB · 5 permissions

What Chrome installs today: the betanet build, with listing copy that finally describes it — token drawer, verified custom tokens, desktop notifications, Ctrl+L. It replaced 1.2.0, which had been the only installable version since 2026-09-23.

Open the listing

Source release

v1.4.1

Merged cee006e · contract v15

83 methods · @thru 0.4.1 · released 2026-10-03

The same build, one day earlier. Clone main at cee006e, run the suite, build dist/, and you get what the store is serving — which is the first time that sentence has been true here.

Release v1.4.1

Audited status doc

v12

behind both

81 methods · 2026-09-26 · 4aa55ba

STATUS_AND_ROADMAP.md was not rewritten for the merge or the release, so the repository's own summary describes neither the store build nor the code beside it. A rewrite exists on the open #17 to #18 chain and has not merged.

STATUS_AND_ROADMAP.md

Source release detail

Merge commit
cee006e
Contract
v15 · 83 methods
Packages
@thru/sdk@0.4.1 · @thru/programs@0.4.1
Network
https://rpc.betanet.thru.org
Permissions
storage, alarms, sidePanel, clipboardRead, notifications
Suite at release
20 suites · 1,641 assertions

Read from the extension repository at cee006e: package 1.4.1, contract v15 with 83 declared methods, @thru packages at 0.4.1, and a CSP whose only connect-src is the betanet RPC. Merged 2026-10-03, tagged the same minute, published to the store the next day.

What a store install gets you today

Package 1.4.1 from 2026-10-04, 272 KiB, built for betanet: contract v15, @thru 0.4.1, the token drawer, chain-verified custom tokens, optional desktop notifications, and an auto-lock that measures real inactivity. The listing copy describes that build rather than the previous one — the first time those two have matched here.

Two things are still true. The repository’s own status document describes contract v12 at 4aa55ba and was not touched by either the merge or the release. And 0 of 36 rows in docs/MANUAL_SMOKE_CHECKLIST.md are ticked — 95 individual checks once each row is counted for popup and side panel — because the package went from merge to store in a day on automated evidence alone.

Listing facts re-read from the live store page on 2026-10-04.

Already written, not yet merged

Contract v16 retires tx.send and token.transfer.

v16 removes tx.send and token.transfer, the unbound mutation paths left over after every shipped caller moved to the checked methods that bind account and network at the background boundary. The chain also rewrites docs/STATUS_AND_ROADMAP.md to describe v16 with 81 methods, which is the fix for the third clock on this page.

Contract
v16 · 81 methods (-2)
Source files
19 changed
Package version
1.4.1 — unchanged
Read on
2026-10-04
  • #17 docs: establish mainnet-ready engineering directive — 7883219, base main, 40 files, 8 commits
  • #18 audit: 2026-10-04 production-rules conformance audit + targeted remediation — 97276a7, base #17, 29 files, 16 commits

Merging it closes the documentation gap and opens a different one. main would describe contract v16 while the package in the Chrome Web Store is contract v15 — and the chain does not bump the package number, so both would be called 1.4.1. A build from main after the merge would answer to the same version string as the store build while speaking a different contract. The fix is a version bump in the same change that merges the chain.

Browser smoke checklist

Canonical runbook

These 15 rows are this desk’s own tracking subset, editable from the desk. They are not a second opinion on the extension’s docs/MANUAL_SMOKE_CHECKLIST.md, which holds 36 rows and 95 individual checks and is the runbook that has to be signed off. Both are at zero.

  • open

    Popup layout, narrow

    Toolbar popup at the shipped 400px width. No clipped actions, balances, or review rows.

    Updated 26 Sept 2026, 00:00 UTC

  • open

    Side panel, wide

    User-resized side panel. Body caps to the available width. Do not assume a 408px layout.

    Updated 26 Sept 2026, 00:00 UTC

  • open

    Side panel opens from Settings

    Settings > Window > Open side panel calls chrome.sidePanel.open from a user gesture.

    Updated 26 Sept 2026, 00:00 UTC

  • open

    Toolbar still opens the popup

    Nothing calls setPanelBehavior. The toolbar icon must keep opening the popup.

    Updated 26 Sept 2026, 00:00 UTC

  • open

    Popup and panel mutual exclusion

    Opening one context closes the other. The close listener registers before asynchronous boot.

    Updated 26 Sept 2026, 00:00 UTC

  • open

    Password dialog focus trap

    Tab wraps inside the dialog, Escape cancels, and focus returns to the control that opened it.

    Updated 26 Sept 2026, 00:00 UTC

  • open

    QR canvas paints

    Receive route canvas actually draws. A shim cannot prove this.

    Updated 26 Sept 2026, 00:00 UTC

  • open

    Clipboard prompt

    Copy address surfaces the browser permission prompt and does not write secrets anywhere else.

    Updated 26 Sept 2026, 00:00 UTC

  • open

    MV3 worker eviction

    Reload the extension, not only the popup. Confirm restart, timeouts, and side-panel mode restore.

    Updated 26 Sept 2026, 00:00 UTC

  • open

    Lock on refresh

    Check reported session-storage behavior in the target browser. A Node harness cannot certify it.

    Updated 26 Sept 2026, 00:00 UTC

  • open

    Token drawer opens from the balance box

    Shipped in 1.4.1, unverified in a browser. Click, Enter, and Space on the balance box all slide the drawer up. Search filters it. No inline token ledger returns.

    Updated 26 Sept 2026, 00:00 UTC

  • open

    Add a custom token by contract address

    Shipped in 1.4.1, unverified in a browser. The chain supplies symbol and decimals through token.readMint. A bad address fails visibly instead of adding a token with typed metadata.

    Updated 26 Sept 2026, 00:00 UTC

  • open

    Desktop notification on confirm and fail

    Shipped in 1.4.1, unverified in a browser. Chrome must actually post it, the Settings toggle must suppress it, and the body must carry no amount, address, or signature.

    Updated 26 Sept 2026, 00:00 UTC

  • open

    Auto-lock measures real idleness

    Shipped in 1.4.1, unverified in a browser. Leave the wallet idle past the window and confirm it locks; keep using it and confirm it does not. Background sync must not count as activity.

    Updated 26 Sept 2026, 00:00 UTC

  • open

    Repeat transfer is caught before signing

    Shipped in 1.4.1, contract v15. Send the same amount to the same recipient twice inside 30 seconds and confirm the second one requires an explicit confirmation.

    Updated 26 Sept 2026, 00:00 UTC

Still open or blocked

  1. 01open

    Verify the package a real user can install

    1.4.1 is live on the Chrome Web Store as of 2026-10-04 and every row of docs/MANUAL_SMOKE_CHECKLIST.md is still unticked. Install the published package from the store — not a local dist/ — and run the 36 rows against it. Start with what is newest: duplicate detection while a transfer is still pending, desktop notification delivery and its Settings toggle, popup and side-panel mutual exclusion, and the dark-mode action grid, drawer ledger, and connection footer.

  2. 02open

    Merge the v16 chain with a package bump

    Pull requests #17 and #18 are stacked and mergeable, and they carry contract v16: tx.send and token.transfer are retired, 19 source files change, a storage-migrations suite is added, and docs/STATUS_AND_ROADMAP.md is finally rewritten to describe the code. What the chain does not do is bump the package number. Merging it as-is leaves main describing contract v16 under the same 1.4.1 string the store serves as contract v15. Bump the version in the same change.

  3. 03open

    Live v12 activation pass

    Create several HD accounts on betanet and exercise send just-in-time registration for an owned, absent recipient. Confirm the target signer and offline-versus-absent handling.

  4. 04open

    Token transfer and token lab live probe

    Measure the token-program fee and whether a sender-initialized token account can target a never-registered owner. The pending scripts/token-lab.mjs walks deploy, add, send, and receive — a live run is still the evidence, not the script's existence. Use a throwaway wallet. Do not guess the fee in the UI.

  5. 05open

    Betanet block time and explorer confirmation

    Betanet is documented at roughly six-second blocks, so a transfer should settle in about one block. Confirm block-time availability through the RPC, first-load latency, whether an authoritative fee exists outside the current detail call, and that the ?network=betanet explorer links resolve.

  6. 06blocked

    Custom network re-enable

    Keep activation disabled until HTTPS policy, narrow host permission, per-network capability records, and password re-auth land together. Localnet was removed from the shipped wallet for exactly this reason. Removing a legacy record is already allowed.

  7. 07blocked

    Provider contract watch

    Do not inject a browser provider until Thru publishes, and this project validates, an extension-compatible contract covering discovery, permission, approval, signing ownership, and submission.

Recorded done

  • Legacy launchpad, DEX, and prediction surface deleted and guarded out of dist/.
  • Route lifecycle tests mount all 14 routes in no-vault, locked, and unlocked states.
  • Contract v7 quarantines custom networks at the background boundary.
  • Contract v8 ships token transfer and real token balance reads. Live probe still open.
  • Contract v12 adds owned-account registration and a storage-only history cache.
  • Modal focus trapping and an explicit side-panel action, without replacing the toolbar popup.
  • Released in v1.4.1: the 2026-09-26 chain reset tracked end to end — @thru 0.4.1 packages, managed-genesis program addresses, betanet RPC, and a CSP that allows nothing else.
  • Released in v1.4.1: auto-lock measures real inactivity instead of restarting its own clock on every worker wake.
  • Released in v1.4.1: contract v13 to v15, the token drawer, chain-verified custom tokens, desktop notifications, and duplicate detection across the whole pending window.
  • PR #16 merged as cee006e with 20 suites and 1,641 assertions green, shipped as a tagged GitHub release, and published to the Chrome Web Store as 1.4.1 on 2026-10-04 — the listing copy, screenshots, and permission justifications went with it.