The "Summer of SeedSigner" Release
v0.8.7 includes 80 PRs from 20 contributors along with 13 new volunteer translation teams.
This release incorporates work from a wave of new contributors via the Summer of Bitcoin
mentorship program. Nine new devs contributed to v0.8.7! And this is just the first batch
of work; most of the newcomers' more ambitious changes are still in the pipeline for later
releases.
v0.8.7's headline user-facing feature is our expanded localization effort which now covers
22 languages, including our first right-to-left language: Persian. This means that
SeedSigner is now usable by an estimated 4.5+ billion people, roughly 60% of the world!
We've also included some important quality-of-life improvements to resolve some of the
most common issues users run into.
But the bulk of the dev work was focused on behind-the-scenes code refactors to improve and
further professionalize the codebase, our dev processes & releated tooling, and improving the
breadth and reliability of the test suite.
This is a "calm before the storm" release. Significant new features are slated for v0.9.0
while simultaneously the massive work to port SeedSigner to a microcontroller races ahead
towards its first alpha preview.
How to volunteer to add YOUR language
Four .img files are included in the release; select the one that is appropriate for your Raspberry Pi hardware:
- "pi0.img" - For Raspberry Pi Zero v1.3 & Raspberry Pi Zero W
- "pi2.img" - For Raspberry Pi 2 Model B
- "pi02w.img" - For Raspberry Pi Zero 2 W & Raspberry Pi 3 Model B
- "pi4.img" - For Raspberry Pi 4 Model B
To update your microSD card:
- Download the appropriate .img file
- Verify your download.
- Flash the image to a MicroSD card (64MB or larger)
- Must use a disk-authoring tool like Balena Etcher, Raspberry Pi Imager, or "
dd".
- Must use a disk-authoring tool like Balena Etcher, Raspberry Pi Imager, or "
More Notes:
- Check out our Independent Custody Guide to read more on what our project is all about.
- If you are getting value from SeedSigner, please consider donating to our development fund.
Full release details:
New Features:
- BBQr PSBT decoding: @newtonick; w/@fedebuyito (#601)
- 13 NEW LANGUAGES!:
- Fully supported:
- Catalan / Català
- German / Deutsch
- Spanish / Español
- French / Français
- Italian / Italiano
- Dutch / Nederlands
- Beta:
- Czech / Čeština (NEW)
- Chinese Simplified / 简体中文
- Hindi / हिन्दी (NEW)
- Indonesian / Bahasa Indonesia (NEW)
- Japanese / 日本語
- Korean / 한국어 (NEW)
- Persian / فارسی (NEW)
- Polish / Polski (NEW)
- Portuguese (Brazil) / Português (Brasil) (NEW)
- Thai / ไทย (NEW)
- Vietnamese / Tiếng Việt (NEW)
- In progress:
- Greek / Ελληνικά (NEW)
- Norwegian / Norsk (NEW)
- Russian / русский (NEW)
- Turkish / Türkçe (NEW)
- Fully supported:
Improvements
- Gracefully handle PSBTs that do not contain wallet fingerprint (BlueWallet
0000000fingerprint issue): @alvroble; w/@kdmukai (#815) - Export Xpub: Remove "Coordinator" selection and instead directly select QR format: @kdmukai; w/@Chaitanya-Keyal, @newtonick (#844)
- [Performance] Scrolling text can cause delays moving to next screen: @kdmukai; w/@alvroble (#849)
- Disable screensaver during SeedQR transcription: @FazleRabbbiferdaus172; w/@kdmukai (#740; 🎉 NEW CONTRIBUTOR!)
- Camera connection errors: Provide better error message: @kdmukai; w/@Chaitanya-Keyal, @bitcoinprecept, @newtonick (#748)
User-Facing Bugfixes:
- Prevent English BIP-39 words from being accidentally translated: @Chaitanya-Keyal; w/@alvroble (#813; 🎉 NEW CONTRIBUTOR!)
- Back Navigation in Seed Entry Views: @PROWLERx15; w/@Chaitanya-Keyal, @kdmukai (#900; 🎉 NEW CONTRIBUTOR!)
Misc / Nerdy Details:
- [Enhancement] Added 'Calculating...' spinner while generating seed from Image Entropy: @krishnavbajoria02; w/@abhigit-saha, @kdmukai, @newtonick (#711; 🎉 NEW CONTRIBUTOR!)
- [Enhancement] Restart on Manual Build: @Chaitanya-Keyal; w/@jdlcdl, @alvroble, @kdmukai @newtonick (#758; 🎉 NEW CONTRIBUTOR!)
- [Enhancement] MicroSD toast timer settings: @alvroble; w/@newtonick (#600)
- [Enhancement] Light reorg and simplification of PSBTChangeDetailsScreen: @kdmukai (#827)
- [Enhancement] Move foreign font files to the seedsigner-translations repo: @newtonick; w/@kdmukai (#819)
- [Bugfix] Empty Passphrase Handling: @notTanveer; w/@alvroble, @kdmukai, @newtonick (#790; 🎉 NEW CONTRIBUTOR!)
- [Bugfix] Remove unnecessary sleep time in toast.py to speed up Screenshot Generator: @alvroble; w/@fedebuyito (#750)
- [Bugfix] Update Dice Roll Count: @PROWLERx15; w/@kdmukai (#799; 🎉 NEW CONTRIBUTOR!)
- [Bugfix] Multiselect settings must have a selection: @kdmukai; w/@Chaitanya-Keyal (#850)
- [Refactor] Replace Screen.display with View.run_screen: @Chaitanya-Keyal; w/@alvroble, @notTanveer, @kdmukai (#801; 🎉 NEW CONTRIBUTOR!)
- [Refactor] Tab spacing to Spaces: @megha-66; w/@kornpow, @alvroble; @kdmukai (#739; 🎉 NEW CONTRIBUTOR!)
- [Refactor] replace PSBT text in codebase with Proposed transaction or Transaction: @FazleRabbbiferdaus172; w/@notTanveer, @newtonick, @SeedSigner, @easyuxd (#804; 🎉 NEW CONTRIBUTOR!)
- [Refactor] Enable auto-detection of screenshot generator renderer: @alvroble; w/@Chaitanya-Keyal (#796)
- [Refactor] Remove bip85 app num: @Chaitanya-Keyal (#809; 🎉 NEW CONTRIBUTOR!)
- [Refactor] Make DisplayDriver a true parent class; add DisplayDriverFactory: @kdmukai; w/@alvroble (#821)
- [l10n] Move Italian to the "Fully supported languages" list: @kdmukai (#781)
- [l10n] Remove libraqm workarounds and enforce libraqm dependency: @alvroble; w/@kdmukai, @newtonick (#774)
- [l10n] Promote Thai to beta status; add Thai font: @kdmukai (#784)
- [l10n] Add logger message in Controller if libraqm not supported: @alvroble; w/@notTanveer (#787)
- [l10n] Enable Arabic and Persian: @kdmukai; w/@alvroble (#772)
- [l10n] Updating messages.pot to dev at
3455aa4: @kdmukai (#824) - [l10n] Exception str does not need to be translated: @kdmukai; w/@alvroble (#825)
- [l10n] Initial Hindi support: @kdmukai (#845)
- [l10n] Mark missing strings for translation: @Chaitanya-Keyal; w/@kdmukai (#867; 🎉 NEW CONTRIBUTOR!)
- [l10n] Make multisig wallet policy display translatable: @Chaitanya-Keyal; w/@kdmukai (#881; 🎉 NEW CONTRIBUTOR!)
- [l10n] Update seedsigner-translations submodule to latest dev: @newtonick (#886)
- [l10n] Finalize v0.8.7 languages: @kdmukai; w/@Chaitanya-Keyal (#889)
- [l10n][Refactor] Remove TextArea.allow_text_overflow for improved localization / screenshot usability: @kdmukai; w/@alvroble (#761)
- [Testing] Exhaustively test PSBTParser with all supported script types: @kdmukai; w/@alvroble (#763)
- [Testing] Exclude hardware drivers from
coverage: @kdmukai; w/@fedebuyito, @kornpow (#782) - [Testing] Fix inadvertently persistent test artifacts: @kdmukai; w/@Chaitanya-Keyal, @alvroble, @securesigner (#853)
- [Cleanup] Update capitalization to Sentence case for buttons: @Advaitgaur004; w/@kdmukai, @notTanveer (#727; 🎉 NEW CONTRIBUTOR!)
- [Cleanup] Clean up else condition to catch ALL remaining possibilities: @fedebuyito; w/@alvroble, @newtonick (#684)
- [Cleanup] BIP references cleanup to read like "BIP-XX": @PROWLERx15; w/@alvroble, @notTanveer, @kornpow (#773; 🎉 NEW CONTRIBUTOR!)
- [Cleanup] Trivial changes: Text, comments, etc: @kdmukai (#828)
- [Cleanup] SeedOptionsView: Remove unreachable VERIFY_ADDRESS code: @kdmukai (#826)
- [Cleanup] Remove dead code:
buttons.py: @kdmukai; w/@newtonick (#830) - [Cleanup] Remove dead code:
components.py: @kdmukai (#831) - [Cleanup] Remove dead code:
keyboard.py: @kdmukai (#832) - [Cleanup] Remove dead code: misc
*_screens.py: @kdmukai (#833) - [Cleanup] Remove dead code:
scan_screens.py: @kdmukai (#834) - [Cleanup] Remove dead code:
screen.py: @kdmukai (#835) - [Cleanup] Remove dead code:
mnemonic_generation.py: @kdmukai (#836) - [Cleanup] SettingsDefinition minor improvements + better tests: @kdmukai (#861)
- [Cleanup] Fix typos in source code comments and strings: @securesigner; w/@Chaitanya-Keyal, @PROWLERx15 (#847; 🎉 NEW CONTRIBUTOR!)
- [Cleanup] Remove unnecessary CameraConnectionError error message: @kdmukai (#859)
- [Cleanup] Eliminate the "Export xpub" Settings option: @Bicaru20; w/@kdmukai, @alvroble, @newtonick (#851; 🎉 NEW CONTRIBUTOR!)
- [Maintenance] Use PyPI version for urtypes lib: @tadeubas; w/@newtonick, @kornpow (#753)
- [Maintenance] Bump Pillow version to 10.3.0: @alvroble; w/@Chaitanya-Keyal (#871)
- [Screenshot Generator][Enhancement] Add ScreenshotRenderer check to catch missing screenshots: @kdmukai; w/@Chaitanya-Keyal, @FazleRabbbiferdaus172, @newtonick (#805)
- [Screenshot Generator][Refactor] Clean up the end of the screenshot generation process: @kdmukai (#806)
- [Screenshot Generator][Refactor] Better state management: @kdmukai; w/@alvroble (#860)
- [Screenshot Generator][New screenshot] Brightness tip during QR display: @kdmukai; w/@alvroble (#760)
- [Screenshot Generator][New screenshot] Generate png for
RestartView: @FazleRabbbiferdaus172; w/@Chaitanya-Keyal, @kdmukai (#803; 🎉 NEW CONTRIBUTOR!) - [Screenshot Generator] Update IOTestScreen to preserve "Clear" button: @Chaitanya-Keyal; w/@kdmukai (#879; 🎉 NEW CONTRIBUTOR!)
- [CI] Modify CI to run test checks on all commits: @PROWLERx15; w/@Advaitgaur004, @Chaitanya-Keyal, @newtonick (#699; 🎉 NEW CONTRIBUTOR!)
- [Documentation] Clarify that SeedQR uses English BIP39 wordlist: @krishnavbajoria02; w/@newtonick, @kdmukai (#698; 🎉 NEW CONTRIBUTOR!)
- [Documentation] Update encode_qr.py - Adds comments to code: @fedebuyito; w/@kdmukai, @jdlcdl, @newtonick (#643)
- [Documentation] Mention --ignore-missing flag issue on older macOS versions: @Chaitanya-Keyal; w/@newtonick (#703; 🎉 NEW CONTRIBUTOR!)
- [Documentation] Improved Docs: @PROWLERx15; w/@notTanveer (#731; 🎉 NEW CONTRIBUTOR!)
- [Documentation] SeedQR: Improve clarity on BIP-39 wordlist and indexing: @kdmukai (#816)
- [Documentation] Update the PR template: set more explicit expectations re: tests: @kdmukai; w/@Chaitanya-Keyal (#877)
- [Release] Ceremonial version bump to 0.8.7: @Chaitanya-Keyal; w/@kdmukai (#887; 🎉 NEW CONTRIBUTOR!)
Legacy Restoration
- In honor of SeedSigner's 5th birthday: Minor fixes to make the original v0.0.1 from Dec 2021 runnable again: @kdmukai (#843)
SeedSigner OS updates:
- [Enhancement] Add libraqm support for RTL languages: @alvroble; w/@newtonick (SeedSigner/seedsigner-os#91)
- Add seedsigner-translation compile as build step: @newtonick (SeedSigner/seedsigner-os#92)
- Update Buildroot submodule to 2024.11 branch: @newtonick; w/@kdmukai, @alvroble (SeedSigner/seedsigner-os#94)
- Pillow upgrade from 10.0.1 to 10.3.0 and move to buildroot external package: @newtonick; w/@alvroble (SeedSigner/seedsigner-os#95)
- Increase disk image size to 50 MB from 45 MB to solve CI/CD issues: @newtonick (SeedSigner/seedsigner-os#97)
- [Docs update] Add note to update submodules: @kdmukai (SeedSigner/seedsigner-os#99)
seedsigner-translations updates:
- [Feature] Add extract-characters script and move foreign fonts into the translations repo: @newtonick; w/@kdmukai (SeedSigner/seedsigner-translations#48)
- [Tooling] Transifex CLI integration: @kdmukai; w/@Chaitanya-Keyal (SeedSigner/seedsigner-translations#51)
- [Documentation] README update w/ better
tx pullcommands: @kdmukai; w/@Chaitanya-Keyal (SeedSigner/seedsigner-translations#59)
New contributors 🎉
First-ever contributions landed in v0.8.7:
- @Advaitgaur004 (#727)
- @Bicaru20 (#851)
- @Chaitanya-Keyal (9 merged PRs!)
- @FazleRabbbiferdaus172 (3 merged PRs)
- @krishnavbajoria02 (2 merged PRs)
- @megha-66 (#739)
- @notTanveer (#790)
- @PROWLERx15 (5 merged PRs)
- @securesigner (#847)
Team
- Project Lead / Creator: @SeedSigner ("the man")
- Lead Developer / Summer of Bitcoin Mentor: @kdmukai
- Lead Maintainer / SeedSigner OS Lead: @newtonick
- UX Designer: @easyuxd
- Most Active Reviewers/Testers: @alvroble, @Chaitanya-Keyal
🎉🎉 9 new developers and 13 new translation teams contributed to this release! 🎉🎉