Weekly open source: kataan at 99.9%, an MPC wallet in the browser, and a Rust firmware for Coldcard
A quieter week by volume, about 600 commits, and most of them went into finishing things rather than starting them. The JavaScript engine closed most of its remaining test262 gap, with the internationalization crate under it shipping a release nearly every day to keep up. The wallet library moved its multi-party wallet into the browser. On the last day of the week a new project started: catcard, an independent firmware for Coldcard hardware wallets.
kataan: from 99.4% to 99.93%
kataan, the pure-Rust JavaScript engine (73 commits), began the week with the README at 99.4% of test262 (51,565 of 51,890). By Sunday the committed figure was 99.93%: 51,856 passing, 34 known failures. Each commit title carries the number of tests it fixed, so the ledger is easy to follow:
- Real concurrency where the spec needs it.
Atomicsnow runs with real multi-agent execution, andbuilt-ins/Atomicsis fully green. Module evaluation is truly asynchronous now, deferred imports evaluate their async dependencies, and the garbage collector can collect during execution at bounded safepoints. - Intl and Temporal. CLDR units, calendar fields, hour cycles,
locale negotiation,
formatRange, and astronomical Chinese/Dangi calendars for Temporal. The Persian calendar moved to the 33-year arithmetic rule, and the Islamic leap-day term was fixed for pre-epoch years. - Regex. Unicode 17 property tables, emoji string properties,
and the spec definition of
\s. A series of performance commits also made global match/replace/split linear in the subject length. - Quadratic-to-linear fixes. Repeated string
+=, per-iterationletenvironments, andMap/Setlookups (now hash-indexed) had all been quadratic, and each got its own commit.
The engine tagged v0.0.8, and its documentation and a playground
are now published on GitHub Pages.
intl: seven releases to feed the engine
intl, the pure-Rust,
no_std ICU analog (42 commits), went from 0.5.2 to 0.6.1 in
one week, and kataan bumped its dependency several times to pick up
the fixes ("intl 0.6.0 — all nine list combinations, locale
separators (+14)"). The work was ECMA-402 coverage driven by CLDR
48:
- localized time-zone names from CLDR metazones, plus the zone-name combiner and host DST in a field-level calendar API;
- full ECMA-402 surfaces for list and relative-time formatting;
- number formatting: locale NaN/infinity, numbering-system
symbols, ranges, spec-correct rounding defaults, and the locale's
minimumGroupingDigits; - units in narrow width and compound form, the full ECMA-402 set;
- collation: re-vendored CLDR 48 tailorings, named collations
via
-u-co-, and a UTS #10 case level.
It's a clear case of one layer driving another: kataan's Intl built-ins sit on this crate, so many of the engine's conformance fixes actually land here.
libwallet: the MPC wallet moves into the browser
libwallet, the multi-chain wallet library with TSS support (37 commits), spent the week bringing its threshold-signature wallet to the web build. The steps are numbered in the commits:
- Stage 1: a passkey MPC wallet, with a committee of [passkey, password, RemoteKey]. The device share comes from a WebAuthn PRF passkey.
- Stage 2: the wallet persists and unlocks across reloads.
- Stage 3a/3b: a multichain wallet that creates the secp256k1 + ed25519 key pair and drives the dashboard's Accounts view.
Underneath, distributed FROST keygen and signing now run in the
browser over spotlib's async ceremonies, chain RPC is async through
rsurl::aio, and Account:signAndSendTransaction is uniform across
EVM, Solana and Bitcoin, on both native and wasm. Ed25519 accounts
got non-hardened HD derivation with tweaked FROST signing,
round-trip verified. On the web side, balances and sends no longer
go through a client-side chain RPC.
catcard: a clean-room Rust firmware for Coldcard
catcard started on
Sunday: "an independent, open-source firmware for Coldcard hardware,
written from scratch in Rust", no_std on Cortex-M4F, MIT licensed.
The README gives two reasons for it. The first is entropy: it states
that the stock firmware derives its BIP-39 seed from two chained
software PRNGs instead of the chip's hardware TRNG, which leaves
about 22 bits of real entropy on mk3 and about 32 on mk4. That is
why the entropy subsystem is the first thing built. The second is
licensing: the original is MIT plus the Commons Clause, which is
not open source, so CatCard has to be genuinely independent of that
source to be MIT-only.
The first day's scaffold is honest about how far it goes. It has a build system, the image format, a signing pipeline that produces a DfuSe image the stock bootloader will accept, and an entropy pool built from every noise source on the board. There is no wallet yet. Other commits that day discovered the bootloader's callgate entry point from its published table (it moves between bootloader versions, so it is never hardcoded) and mapped the Q1's keyboard, SE2 and NFC pins.
OxideAV: embroidery, FBX, and the big video decoders
The media framework accounted for most of the week's volume, spread across dozens of crates. Three stood out:
- oxideav-embroidery
is new (created 2026-07-30). It handles machine-embroidery design
formats: Tajima DST, Brother PEC/PES/PHC, Melco EXP with its
.infcompanion, and Janome JEF, all decoding to a single typed stitch-design model and most encoding back. It also has best-effort PHX and a cross-format agreement oracle over self-synthesized designs. - oxideav-fbx now composes the full node transform chain on decode, synthesizes it back on encode, and decodes the trailing binary footer. A real v7400 fixture now re-encodes byte-for-byte.
- oxideav-av1 and oxideav-h266 kept working on their encoders. AV1 gained a multi-tile write arm, spatial-scalability layers and segmented loop restoration, with the conformance corpus pinned at 122 streams. H.266 added palette coding on both sides and multi-slice pictures at 136/136 externally byte-exact, plus a decode driver for JVET conformance streams, all 56 of which now parse their slice headers cleanly.
Also this week
- fullrust builds unmodified Rust crates into static, libc-free Linux binaries. It ported its toolchain overlay to Rust 1.89, and its container image is now built in CI and checked end to end by building a proc-macro crate.
- zanolib (Zano
offline transaction signing) was ported in full to Rust,
byte-for-byte compatible with the Go tree, which was then
removed. It released as
0.2.0. Its threshold view key is now derived with tsslib's key-image ceremony. - teamclaude
1.1.10–1.1.11:TC_ACCTpins a session to one account, even in MITM mode, and a burst of 401s no longer rotates the token family once per error. - oxideav-h263 added RFC 4629 and RFC 2190 RTP packetization alongside Annex K slice encoding. oxideav-otf added script-itemized shaping and OpenType script, language and baseline tag registries.
Next week
kataan will keep working through the last few dozen failures, and intl will keep tracking what the engine needs. catcard moves from scaffold to actual firmware, starting with the display, keypad, and the Bitcoin primitives a wallet needs. libwallet's browser wallet should settle into everyday use, and OxideAV's encoders keep filling in.