fix a regression I introduced earlier today: adding the CodexJson parser for the Codex blob fix inserted it BETWEEN the annotation and 'class VaultRepository', so the annotation landed on the property and the repository stopped being a singleton. Every injection point then got its own vault — createVault unlocked one instance while the screen observed a different, still-locked one 30ms later (proved by logging System.identityHashCode: 100965910 vs 135655535 in the same process). That is what made the recovery words render empty: the screen's repository had never been unlocked and had a null root key, while the vault genuinely existed. Moved CodexJson to file scope below the imports and restored to the class. Verified: a freshly created vault now shows all 12 words. Worth re-testing anything touched since that change — divergent vault instances could plausibly have broken June's Codex restore attempt with her real password too, since the restore writes to one instance and the UI reads another.

dev · 7 weeks ago · 2026-07-24 · 2.6 MB

session: fix VaultRepository singleton regression · agent: claude-opus-5

$ koh steal kepr.uk/peach-android@f78005e12eb1
·
← f3c888b0fccf 3573fda2b97b →
⇓ download .face