All notable changes to ReMemory are documented here.
- Minor improvements to arm64 support in the Docker image.
- Bundle verification — When a friend opens their bundle with just their own piece, a card now confirms everything is working: which piece they hold, how many are needed, and whether the encrypted archive is included. A small reassurance that their bundle is ready for when it matters. Thanks @tmchow!
- Simplified Chinese support — Added Simplified Chinese (zh-CN) across the recovery tool, maker, bundle instructions, and landing page. Thanks @gabrnavarro!
- Improved Turkish wordlist — Updated the Turkish BIP39 word list with corrections. Thanks @FrustT!
- Pasted share fix — Shares copied from PDFs now work reliably. Some PDF viewers strip a blank line that the recovery tool expected, causing pasted shares to be silently ignored. Thanks @tmchow!
- Italian translation fixes — Corrected typos in the Italian translations. Thanks @xushidev!
- Turkish language support — Added Turkish as a supported language. Thanks @FrustT!
- Bundles now work across operating systems — Archives created on Windows now extract correctly everywhere, and vice versa. Thanks @vnykmshr!
- Docker security — The Docker image now runs as a non-root user. Thanks @vnykmshr!
- Italian language support — Added Italian as a supported language. Thanks @xushidev!
- Docker on arm64 — The Docker image now ships for both amd64 and arm64.
docker pullpicks the right one automatically.
- Dutch language support — Added Dutch as a supported language for the recovery tool, maker, and bundle instructions. Thanks @idebeijer!
- Catalan language support — Added Catalan translations and wordlist support. Uses the Spanish BIP39 wordlist as a fallback for Catalan bundles. Thanks @xcxtxsx!
- Chinese text in PDFs — PDFs now render Chinese characters correctly by bundling the Noto Sans SC font. Previously, Chinese text could appear as blank boxes. Thanks @gabrnavarro!
- Update nudge — The CLI and web maker now gently let you know if you're running a version built more than six months ago, with a link to check for updates. No network calls — it just compares the build date to your clock.
- Mismatched piece detection — Adding a piece from a different set now shows a clear error right away, instead of failing later with a generic decryption message.
- Rewritten documentation — The guides and landing page have been rewritten to focus on what people actually need to do, in all supported languages.
- Time-delayed recovery — You can now set a waiting period when creating bundles. Even if your friends combine their pieces early, the files stay locked until the date you chose. Uses the League of Entropy — a distributed randomness beacon run by organizations around the world, not a single company. This is experimental: recovery requires a brief internet connection, and relies on the beacon continuing to operate. CLI:
rememory seal --timelock 30d. Also available in the web maker under "Advanced options." - Self-hosted web UI — ReMemory can now run as a small web server on your home network.
rememory servestarts a local instance where you can create bundles, store manifests on the server, and recover from any browser on the network. A home page shows all stored bundles at a glance, with one-click recovery for each. Designed for families or small groups who want a shared place to manage their recovery kits without relying on external services. See the self-hosted guide for setup. - Static pages for easy hosting —
rememory seal --pages(orbundle --pages,demo --pages) now outputs aoutput/pages/directory containingrecover.htmlandMANIFEST.age. Drop that folder on GitHub Pages, Netlify, or any static host and friends can visit the URL to recover — the page fetches the manifest automatically. No server needed. - Translated guide and landing page — The guide (
docs.html) is now available in Spanish, German, and French, each as a standalone page with its own language picker. The landing page (about.html) now auto-detects your browser language and switches between all seven supported languages — English, Spanish, German, French, Portuguese, Slovenian, and Traditional Chinese. - Offline by design, verified by default — ReMemory has always worked without the internet, but now the test suite proves it. Every test runs with network access blocked. The handful that genuinely need a connection — like checking the time-lock beacon — declare exactly which hosts they're allowed to reach. If any part of the app tries to phone home, the test fails. Time-lock encryption now works fully offline too (recovery still requires internet).
- ZIP archive format — Encrypted payloads now use ZIP instead of tar.gz. ZIP is understood by every operating system without extra tools, which makes manual inspection easier if someone ever needs it. Existing bundles created with earlier versions still work — the recovery tool detects the format automatically.
- Recover directly from bundles —
rememory recovernow accepts bundle ZIP files. You can pass the ZIPs your friends send you without unzipping them first, and the manifest is extracted automatically.rememory recover bundle-alice.zip bundle-bob.zipjust works.
- Improved Docs: improve guides on the website. Also updated demo bundles so it contains 5 friends instead of 3.
- Simpler recovery tool — The recovery tool (
recover.html) no longer relies on WebAssembly. It now uses plain JavaScript, making it smaller, faster to load, and more likely to work in browsers for decades to come. The CLI and bundle creation still use Go, but recovery — the part your friends will use — is now built on simpler, more universal technology. - Bigger files, simpler recovery — Encrypted archives up to 10 MB (up from 5 MB) are now embedded directly in
recover.html. More people will be able to recover by just opening the HTML file, without needing the separateMANIFEST.age. - PDF import in recovery — PDFs from bundles now contain a machine-readable share appended to the file. You can drop a PDF directly into the recovery tool instead of typing or scanning — it just works.
- QR scanning on more browsers — Added a polyfill for browsers that don't support the BarcodeDetector API, so QR code scanning works in more places.
- Tappable email addresses — Email addresses in the contact list are now
mailto:links, so you can tap them on a phone instead of copying and pasting. Thanks @vnykmshr! - Accessibility improvements — Keyboard users can now see where they are when tabbing through the recovery tool (focus indicators). Improved contrast for muted text to meet WCAG AA. Added ARIA attributes for screen readers. Thanks @vnykmshr!
- Safer sealing — Running
sealon a project where you haven't added any files to the manifest (only the template README) now gives a clear error instead of creating a useless encrypted bundle. Thanks @vnykmshr! - Better drop zones — Improved the look and behavior of file drop areas in the recovery tool.
- Language detection fix — Regional browser locales (like
en-GBores-MX) are now detected correctly instead of falling back to English. Thanks @vnykmshr! - Updated Slovenian translations — Thanks @h200101!
- Chinese (Traditional) support — Added zh-TW as a seventh language for the recovery tool, maker, and bundle instructions. Thank you @JasonHK!
- Portuguese translations — Added Portuguese as a sixth supported language. Thanks @Kasama!
- Language picker — Both the recovery tool and maker now have a language switcher, so people can choose their language themselves.
- Named and anonymous toggle in maker — The maker UI now has a clear selector for choosing between named and anonymous bundles, instead of burying the option.
- Security hardening — Added Content Security Policy headers to prevent XSS. Added size limits to ZIP extraction in the browser path (thanks @vnykmshr). Applied additional safety validations from a security review.
- PDF polish — Updated colours to better match the palette, added a coloured identity bar, and tweaked the header layout.
- PDF redesign — The README PDF has a clearer visual hierarchy and now shows the recovery rule ("2 of 3 required") prominently, so friends know at a glance how many people need to come together.
- Consistent colour palette — Standardized colours across the website, recovery tool, and PDF to use the same warm, low-contrast palette throughout.
- PDF screenshots in README — The project README now shows example PDF pages so people can see what friends receive before trying the tool.
- Embedded manifest in recovery bundles — If your encrypted manifest is under 5 MB, it's now embedded directly inside
recover.html. Friends can recover secrets without needing the separateMANIFEST.agefile at all — just open the HTML file and go. - Per-friend language support — Each friend can now have their own language preference. READMEs and BIP39 word lists in bundles are translated to their language using official translated word lists.
- Intro card in the recovery tool — A welcome card now explains what
recover.htmlis and how it works, making the first-time experience less confusing for non-technical friends. - Improved recovery navigation — The top navigation adapts based on whether the recovery tool is personalized (from a bundle) or generic (standalone download).
- PDF layout fix — QR codes no longer break across page boundaries in PDFs.
- Guidance on revoking access — Added documentation on what to do if you need to cut someone out of your recovery group.
- PDF word list fix — Fixed a bug where BIP39 word lists in the PDF could split awkwardly across many pages, making them hard to read.
The biggest release so far — a new protocol version, word-based shares, QR codes, and a more flexible contact system.
- Protocol V2 — Shamir secret sharing now operates on raw bytes instead of base64-encoded strings. This produces shorter, more efficient shares. V1 bundles remain fully recoverable.
- BIP39 word lists — Each share can now be represented as 24 human-readable words (similar to Bitcoin seed phrases). Supports English, Spanish, French, German, and Slovenian. This makes it possible to write a share on paper, print it, or read it over the phone — no digital device required.
- QR codes in PDFs — Each friend's PDF now includes a QR code containing their share. Scanning the code is the fastest way to enter a share during recovery.
- Compact share format — A new shorter encoding for shares, used in QR codes and other space-constrained contexts.
- Flexible contact field — The separate "phone" and "email" fields have been replaced with a single free-text "contact" field. Put whatever you want in it — phone, email, Signal handle, physical address.
- Recovery UX improvements — Better messaging when only one more share is needed to reach the threshold. Improved flow after real-world testing with printed PDFs.
- Standalone recovery tool — A generic
recover.html(not tied to any specific bundle) is now available for download from GitHub Releases. QR codes in PDFs link to it. - Backward compatibility testing — Added golden test fixtures for V1 to ensure old bundles remain recoverable as the protocol evolves.
- Slovenian language support — Added Slovenian as a fifth supported language for the recovery UI and instructions. Thanks to @h200101!
- Unicode name fix — Fixed an issue where non-ASCII characters in friend names (accents, umlauts, etc.) could cause problems when creating bundle folders. Thanks @h200101!
- Path traversal protection — Hardened tar.gz extraction against directory traversal attacks. Thanks to @vnykmshr!
- Release fix — Resolved an issue with GitHub release publishing.
- Anonymous mode — New option to create bundles without identifying information, for privacy-conscious setups where you don't want friend names in the bundles.
- Redesigned website — The homepage got a visual refresh with a cleaner layout.
- Improved error handling — Better error messages and guidance throughout the recovery flow.
- Web-based bundle creation — You can now create recovery bundles entirely in the browser using
maker.html, no CLI needed. Available on the project website. - Project website — A proper landing page with documentation, hosted on GitHub Pages.
- Smaller, faster recovery tool — The WebAssembly payload in
recover.htmlis now gzip-compressed and stripped down to only what's needed for recovery, making the file smaller and faster to load. - Bug fix: files lost when adding more — Fixed a bug in the web UI where adding more files would cause previously added files to disappear.
- Better translations — Improved localization across supported languages.
- Apache 2.0 license — The project is now licensed under Apache 2.0.
- Personalized recovery bundles — Each friend now gets a customized
recover.htmlwith their share pre-loaded and contact information for the other friends embedded. No more copying and pasting shares — just open the file and follow the steps. - Share verification — The recovery tool now validates shares before attempting decryption, catching typos and errors early with a clear message instead of a cryptic failure.
- Security hardening — Tightened file permissions on generated bundles and added warnings when attempting to encrypt symlinks (which could lead to unexpected behavior).
- Auto-bundling — Running
sealnow automatically generates friend bundles in one step, instead of requiring a separatebundlecommand. - Documentation cleanup — Reorganized and improved the guides and README.
The first release of ReMemory.
- Encrypt and split — Encrypt files with age and split the decryption key among trusted friends using Shamir's Secret Sharing (via HashiCorp Vault's implementation).
- Offline browser recovery — Each friend receives a self-contained
recover.htmlthat works offline in any browser. No servers, no internet, no installation — just open the file. - PDF instructions — Each friend's bundle includes a PDF with clear recovery instructions and their share.
- Multi-language support — Recovery instructions available in English, Spanish, German, and French.
- CLI tool — Commands to initialize a project, seal secrets, generate bundles, and recover.