Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
293 commits
Select commit Hold shift + click to select a range
4c416c8
dont translate sig-or-script-types yet
jdlcdl Dec 1, 2022
4a8a04c
ok, now translate sig/script-types
jdlcdl Dec 1, 2022
4b0dc31
Merge branch 'dev' into kdmukai/initial_multilanguage
jdlcdl Dec 2, 2022
4df5757
postmerge bugfix on poorly resolved conflict
jdlcdl Dec 2, 2022
8ca3edb
i18n/l10n settings i18n/l10n-ized too
jdlcdl Dec 8, 2022
2f18588
Merge branch 'dev' into kdmukai/initial_multilanguage
jdlcdl Dec 8, 2022
a4c784e
french l10n revisited
jdlcdl Dec 12, 2022
eab4942
i18n/l10n iter: RemoveableMicroSd/BIP85-ChildSeeds
jdlcdl Dec 13, 2022
3d0395e
working w/o halting
jdlcdl Dec 13, 2022
6de246f
message catalog cleanup
jdlcdl Dec 13, 2022
1b94005
added en locale and translated langs
jdlcdl Dec 13, 2022
e433b50
gettext() from instance, not class
jdlcdl Dec 13, 2022
bf5561f
added views for more screenshots
jdlcdl Dec 13, 2022
14174c6
fr/es by nmhs
jdlcdl Dec 13, 2022
1e45c45
exclude line-num from message catalogs
jdlcdl Dec 14, 2022
760b157
messages.po catalogs included
jdlcdl Dec 14, 2022
9a4063a
l10n by nmhs
jdlcdl Dec 14, 2022
9d4f469
access font sizes w/ getter() for i18n
jdlcdl Dec 14, 2022
2ff0c90
discard-seed and seedqr-format screenshots in tests
jdlcdl Dec 15, 2022
1e283bd
tiny effort to i18n-ize embit strings
jdlcdl Dec 18, 2022
79857b6
i18n special keys (del,space)
jdlcdl Dec 18, 2022
e13f5dc
One last screen, and this exploration is hereby paused!
jdlcdl Dec 20, 2022
fe5f0a5
Merge branch 'dev' into kdmukai/initial_multilanguage
jdlcdl Jan 11, 2023
5b6961e
updated readme
jdlcdl Jan 12, 2023
0f7ea65
resolves Pillow 10 deprecation warning
jdlcdl Jan 13, 2023
d17b21f
Merge branch 'dev' into kdmukai/initial_multilanguage
jdlcdl Feb 8, 2023
9f07504
merge cleanup
jdlcdl Feb 8, 2023
0f44a29
some locales disabled
jdlcdl Feb 8, 2023
4834a20
i18n msgid extractions
jdlcdl Feb 8, 2023
3de70c1
Merge branch 'dev' into kdmukai/initial_multilanguage
jdlcdl Feb 16, 2023
04da43b
(i18n, fr-l10n) iteration
jdlcdl Feb 16, 2023
e477a89
Merge branch 'dev' into kdmukai/initial_multilanguage
jdlcdl Feb 22, 2023
298878a
works for me as of 0.6.0
jdlcdl Feb 22, 2023
08e3039
Merge branch 'dev' into kdmukai/initial_multilanguage
jdlcdl Mar 3, 2023
577e33a
MainMenuView now in view.py
jdlcdl Mar 12, 2023
14d7754
i18n for view.py
jdlcdl Mar 22, 2023
23337fd
compiled gettext *.mo in repo; cost=-20K/locale
jdlcdl Jun 25, 2023
110ffb8
Merge branch 'dev' into kdmukai/initial_multilanguage
jdlcdl Jul 16, 2023
5a1bf4c
resolved merge-conflict errors
jdlcdl Jul 27, 2023
681d3d4
Merge branch 'v0.7.0' into kdmukai/initial_multilanguage
jdlcdl Oct 7, 2023
3f3e144
Post v0.7.0 merge bug-fixes: components, generator, view
jdlcdl Oct 9, 2023
59ecc61
partial i18n at v0.7.0
jdlcdl Oct 9, 2023
0d4df24
l10n msgids updated w/o new translations
jdlcdl Oct 9, 2023
250813c
Multilanguage Spanish: Reviewed all text strings
enteropositivo Feb 24, 2024
e08037f
supporting enteropositivos es work: l10n-fr, screenshots, messages ca…
jdlcdl Feb 24, 2024
27549a4
Updated colors and icons
easyuxd Sep 9, 2024
cf0e7a6
Change icon for Sign PSBT
easyuxd Sep 9, 2024
17d1524
Update encode_qr.py
fedebuyito Sep 18, 2024
56a15ec
Fixes screenshot generator to work for generating all languages at once
kdmukai Sep 21, 2024
328da28
Removes babel *.mo binaries
kdmukai Sep 21, 2024
8ab7350
Update settings_definition.py
kdmukai Sep 21, 2024
128181d
Add `locale` to SettingsQR tests
kdmukai Sep 21, 2024
b0299f7
No need to have an "en" babel dir when English is the string source
kdmukai Sep 21, 2024
65f99b8
Revert Toast changes
kdmukai Sep 21, 2024
405d0c8
Update encode_qr.py
fedebuyito Sep 23, 2024
8d769c1
Update test_encodepsbtqr.py
fedebuyito Sep 23, 2024
1c75cca
Merge commit 'refs/pull/3/head' of github.com:jdlcdl/seedsigner into …
jdlcdl Sep 30, 2024
ed8591f
Merge commit 'refs/pull/4/head' of github.com:jdlcdl/seedsigner into …
jdlcdl Sep 30, 2024
e1d8fb6
Merge commit 'refs/pull/5/head' of github.com:jdlcdl/seedsigner into …
jdlcdl Sep 30, 2024
dd06d10
Merge pull request #7 from jdlcdl/kdmukai/initial_multilanguage
kdmukai Oct 2, 2024
0dd3eb8
Updated babel files
kdmukai Sep 28, 2024
b785cc9
setup.cfg for pybabel integration with setuptools
kdmukai Sep 28, 2024
22be02f
Update setup.cfg
kdmukai Oct 3, 2024
9d81d06
remove locale-specific messages.po from repo
kdmukai Oct 11, 2024
6a81e9d
Additional translation strings; separate Babel deps
kdmukai Oct 11, 2024
2690cdd
Remove unnecessary *.po file copy
kdmukai Oct 11, 2024
b5e2b25
Merge pull request #8 from kdmukai/pr_7_with_merges
kdmukai Oct 11, 2024
a25fb4e
Add seedsigner-translations as a submodule
kdmukai Oct 11, 2024
f2548b2
Remove line numbers in messages.pot
kdmukai Oct 11, 2024
543f15b
Merge pull request #9 from kdmukai/initial_multilanguage_submodule
kdmukai Oct 11, 2024
41d58db
Merge commit 'bf12291be1eba8c6427cd5cf741ee7fa491a61a1' into initial_…
kdmukai Oct 11, 2024
fd45717
Merge commit '7fd0ebc871476f3357c9d5d525788eb1643f47a0' into initial_…
kdmukai Oct 11, 2024
f5b6aae
Merge commit 'b5d244a8c7aa35fdc8ac3bf8d41741f15d41f400' into initial_…
kdmukai Oct 11, 2024
8862bf5
Merge commit '16cb15ec0a6846901c5e17b5c77147a64a4bc121' into initial_…
kdmukai Oct 11, 2024
a11d91f
Merge commit '0c83196828497d2b4308a370b85ffeda97b47efb' into initial_…
kdmukai Oct 11, 2024
1d33af4
Merge commit 'f7ec9ff221a5e0b8398c701b45441044688b0e9d' into initial_…
kdmukai Oct 11, 2024
cb4348a
Merge commit 'facf7efd9ff417177576066def67f4afc5a287a7' into initial_…
kdmukai Oct 11, 2024
ac564ce
Merge commit 'a109c80c92d7267e243595a80bcee212b4679fd0' into initial_…
kdmukai Oct 11, 2024
e623bef
Merge commit '39d11d978e7fed2e99f4075d75049154c3469c21' into initial_…
kdmukai Oct 11, 2024
8bf46f7
Merge commit '87452cdf8f7e17323e3cc50f329739b3892ba052' into initial_…
kdmukai Oct 11, 2024
9519e6c
Merge commit 'a73cae6ae80a81962a67fd5ef2e3ec9cf68700bd' into initial_…
kdmukai Oct 11, 2024
fdf951c
Merge commit '213ca2b49a8f6426f24284564b2e67d6f0464c0c' into initial_…
kdmukai Oct 11, 2024
2c27de2
Merge commit '558e6c3e4e82494c8150ddcc33cff679350f55f9' into initial_…
kdmukai Oct 11, 2024
bf22113
Merge commit '5667cee489d627f4bf3da18fb5587e09ce26a708' into initial_…
kdmukai Oct 11, 2024
333b524
Merge commit '5bfad17e12d5ee34aa572d943a08049c71b8aba7' into initial_…
kdmukai Oct 11, 2024
fd4e0a4
Merge commit 'a14aa2f08972e72478f5d3a40a9c023205b8c299' into initial_…
kdmukai Oct 11, 2024
b5a47e9
Merge commit 'db16fa77f87914c0a51d96f2b5ea9fcc4d7ddf0e' into initial_…
kdmukai Oct 11, 2024
5929ecb
Merge commit '69cb6ac7fffc2fa1f2c7775eaf6762f0d5805fed' into initial_…
kdmukai Oct 11, 2024
39cf75e
Merge commit 'c12f64e1ecfa9fe33ba78b9c8e0dcc0f3a673c6f' into initial_…
kdmukai Oct 11, 2024
8e99e70
Merge commit '8e50f597d76958d3043e308cab82702a36a172aa' into initial_…
kdmukai Oct 11, 2024
7b7a69b
Merge commit '82bbd7d673d6f2726e2a976048bf8371d84ac7c4' into initial_…
kdmukai Oct 11, 2024
aae5124
Merge commit 'a446b67adb27f2d1d1c323db5c636269026d967e' into initial_…
kdmukai Oct 11, 2024
18b449c
Merge commit '1b9fc3f7642e292be0b2915fd2c90dc1ca35d96b' into initial_…
kdmukai Oct 11, 2024
5b88ce4
Merge commit 'b17677cfdd120ddaf2fb6b0a8ea3a822a8cd816a' into initial_…
kdmukai Oct 11, 2024
a47af33
Merge commit 'c7738c114c5675c164260676e39c1a7fc9d43db6' into initial_…
kdmukai Oct 11, 2024
c9c2c26
Merge commit 'e5d313360d3b9977eebe4f483b435f7b800d4e49' into initial_…
kdmukai Oct 11, 2024
310042d
Merge commit 'adbf5bc1967c8e91a3fa4cf2c7c6e9a4cb7342a4' into initial_…
kdmukai Oct 12, 2024
84ea603
Merge commit '62807fd6744165b672170cc3c3f030fe90ae41e2' into initial_…
kdmukai Oct 12, 2024
f0a5110
Merge commit 'cdf7fc202729a35945ae955d53b0bfe9e592e02a' into initial_…
kdmukai Oct 12, 2024
76d2e2e
Merge commit '59409bd76cd3be64de9854fb8272b7e111edd990' into initial_…
kdmukai Oct 12, 2024
576f847
Merge commit '9aa95e8c9283d85475f24519abce38d454cd5297' into initial_…
kdmukai Oct 12, 2024
ca59bac
Merge commit 'c94725e7fa6f4f9ef6c3c8fd33e11e454d9a5900' into initial_…
kdmukai Oct 12, 2024
d33bc0a
Merge commit 'c5e602f5a4fd9ccbce8c37a15f08b0bea787672d' into initial_…
kdmukai Oct 12, 2024
7ccdf56
Merge commit '2b42c436d4fc15552d63c6261386c0b0ffbae90b' into initial_…
kdmukai Oct 12, 2024
c464607
Merge commit '153af5125c0a20b2288df924e4fd7886ea323aad' into initial_…
kdmukai Oct 12, 2024
49c4556
Merge commit '49c4a4338a54b44248c7e68e26c3b5706e0eab64' into initial_…
kdmukai Oct 12, 2024
a14af18
Merge commit 'b07292f0e8f47a5c0564262865f80ded44313bc5' into initial_…
kdmukai Oct 12, 2024
df8fdac
Merge commit 'd973007c469799b22b703f1349e220eb93811bf4' into initial_…
kdmukai Oct 12, 2024
142b5b6
Merge commit 'dec01b292ac990ac32409088e73eca2edc1ef637' into initial_…
kdmukai Oct 12, 2024
e3e9b8c
Merge commit '724033ce66a97065a460b50d136073fec4c5a335' into initial_…
kdmukai Oct 24, 2024
62c84a3
Merge commit 'ad6f55ddbc15a285a82631a1ea0dfeb6db61641a' into initial_…
kdmukai Oct 24, 2024
6bddee3
Merge commit '3e0b69b2d31f012b9bdfc1f40ea5c19c972d72a0' into initial_…
kdmukai Oct 24, 2024
7bc936a
Merge commit '20acf302f6cb9092122770087d3bd7248a346820' into initial_…
kdmukai Oct 24, 2024
146db1d
Merge commit '0f2677291815184cc4f75b1b42cbbc385d82fa75' into initial_…
kdmukai Oct 24, 2024
bc12e68
Merge commit 'e16c853e6ea54ed6d697b0e6f710f221331d2c44' into initial_…
kdmukai Oct 24, 2024
0c75ae6
Merge commit '80ad7d610ac71e13ea472309dd1878c0804b7270' into initial_…
kdmukai Oct 24, 2024
1a29e7d
Merge commit '2c96e20afc23c9cf33117d0f6a738ec02435bcd0' into initial_…
kdmukai Oct 24, 2024
3b1e744
Merge commit '0f329f6fb568f1c7aaae6288ce33e38c566f3d1d' into initial_…
kdmukai Oct 24, 2024
ae77de5
Merge commit '0f329f6fb568f1c7aaae6288ce33e38c566f3d1d' into initial_…
kdmukai Oct 24, 2024
2cd5377
Merge commit '07f0bbf847d8ca41c5bc526d2c81a807c75a95d9' into initial_…
kdmukai Oct 24, 2024
e789e05
Merge commit '13e1d607054f38127be9d76d94c489e2efd773d8' into initial_…
kdmukai Oct 24, 2024
bea5d6c
Merge commit '5e4f6697318d0e4ba7998b15d30fae265cf6b4ed' into initial_…
kdmukai Oct 24, 2024
318587c
Merge commit '037702444f7957bf6354f82a185c35e0b3d03ad7' into initial_…
kdmukai Oct 24, 2024
4de6f58
Merge commit '34322ee04fa0ea3f3bc026118b1b714411ab0866' into initial_…
kdmukai Oct 24, 2024
a75343f
Merge commit '100a9740e70e3c7119eab0f8b0ad262f72a35b7e' into initial_…
kdmukai Oct 24, 2024
02ba581
Merge commit 'dc4c2c877e186ddf383b008942e4169738f9ff8d' into initial_…
kdmukai Oct 24, 2024
929fbed
Merge commit '794c25cfaf261b8f8f7df39e7f72d118b766787b' into initial_…
kdmukai Oct 24, 2024
50e230f
Merge commit '520a74df8640e31763aac12ba5242afddc82a9ff' into initial_…
kdmukai Oct 24, 2024
52652c7
Merge commit 'e50f23468ba671ff0ae7d973a14b3363eb454e16' into initial_…
kdmukai Oct 24, 2024
83f2dff
Merge commit 'ec68481869516376b77e06187975da399e329041' into initial_…
kdmukai Oct 24, 2024
3167d24
Merge commit 'cd3e0f3c2a3b16a2bd3fb844cb7028b6dec0e8b4' into initial_…
kdmukai Oct 24, 2024
69c8364
Merge commit 'c2a4a80d7fa2707e46e9e5e8e92469e1d1fb59c7' into initial_…
kdmukai Oct 24, 2024
9376bdb
Merge commit '0c477e27f558a55556b09575eda9d218f7f05e35' into initial_…
kdmukai Oct 24, 2024
2caa7ad
Merge commit '8cd8a5be2d9e6973db3b855541c65a0f2a6fdedf' into initial_…
kdmukai Oct 24, 2024
dca7f5e
Nunchuk to use UR Xpub encoding for both single sig and multisig
newtonick Oct 25, 2024
f64f394
Full l10n integration; Initial possible v0.8.5
kdmukai Nov 1, 2024
a353e26
cleanup
kdmukai Nov 1, 2024
e4c4cb4
import cleanup/isolation
kdmukai Nov 2, 2024
d412be2
Large refactor to add `ButtonOption` and `mark_for_translation`
kdmukai Nov 3, 2024
a213032
minor bugfix
kdmukai Nov 3, 2024
47044a0
docs update
kdmukai Nov 3, 2024
82df4bd
Coordinating latest to Transifex
kdmukai Nov 3, 2024
7920bbd
Minor text / translation fix
kdmukai Nov 3, 2024
47fe9e6
Screenshot generator improved integration with pytest
kdmukai Nov 5, 2024
f65ea6d
Update to match latest translations
kdmukai Nov 5, 2024
14ccab7
bugfix
kdmukai Nov 5, 2024
87003b4
misc TODO note
kdmukai Nov 5, 2024
e98eea8
Remove duplicate merge artifacts; additional screenshots
kdmukai Nov 5, 2024
c5dae84
Remove legacy Raspi OS Power Off
kdmukai Nov 5, 2024
5472add
test suite bugfixes
kdmukai Nov 5, 2024
7ee89c8
Minor cleanup
kdmukai Nov 5, 2024
28d21bb
Merge pytest results and screenshot generator coverage
kdmukai Nov 5, 2024
2cd3523
Adding `gui` modules back to coverage; basic l10n tests
kdmukai Nov 5, 2024
547b01d
Explanatory comment for legacy setup.py
kdmukai Nov 6, 2024
ae96508
Fix test runner CI integration
kdmukai Nov 6, 2024
03274aa
Adds `coverage` convenience script
kdmukai Nov 6, 2024
ab02028
Experiment to add coverage to test runner
kdmukai Nov 6, 2024
c57ae0a
Github Action coverage bugfix
kdmukai Nov 6, 2024
f5a359a
Fixes / improvements to CI coverage
kdmukai Nov 6, 2024
6199288
Coverage CI bugfix
kdmukai Nov 6, 2024
bb9dbf8
More CI fix attempts
kdmukai Nov 6, 2024
7989378
CI fix
kdmukai Nov 6, 2024
4a8145f
Coverage CI fix
kdmukai Nov 6, 2024
174597d
CI bugfix
kdmukai Nov 6, 2024
8eb886d
CI test runner bugfix, cleanup
kdmukai Nov 6, 2024
3e068b0
Updated coverage docs, script
kdmukai Nov 6, 2024
a47097d
Filter to get local coverage to match CI results
kdmukai Nov 6, 2024
7a8609f
better attempt at unifying CI and local results
kdmukai Nov 6, 2024
fae400d
Integration w/seedsigner-screenshots as a submodule
kdmukai Nov 6, 2024
0eeb751
Syncing submodules to latest repo updates.
kdmukai Nov 7, 2024
8559eaf
bugfix
kdmukai Nov 8, 2024
29cb0c7
bugfix
kdmukai Nov 8, 2024
6d19db1
l10n omission fix
kdmukai Nov 8, 2024
44e24bf
Adds `ScrollableTextLine`, scrolling `TopNav` titles
kdmukai Nov 8, 2024
ed53b90
Force `status_headline` to be one line
kdmukai Nov 8, 2024
3fade06
Move commit to match current screenshots
kdmukai Nov 8, 2024
80ea2c8
Modernize OpeningSplash, add to screenshots
kdmukai Nov 8, 2024
917a578
Interim commit
kdmukai Nov 12, 2024
72f945d
Minor existing bugfix
kdmukai Nov 12, 2024
e34ef66
cleanup, temp bugfix
kdmukai Nov 18, 2024
fff1a9a
Update settings_definition.py
kdmukai Nov 18, 2024
30bc020
removing screenshots from default submodule fetch
kdmukai Nov 18, 2024
db34116
Add files via upload
steven-s-martins Nov 19, 2024
71bc222
bugfix. Don't use "`_`" as a placeholder var!!!
kdmukai Nov 21, 2024
425acfb
Adds screenshots for passphrase entry, SeedQR transcription, addr ver…
kdmukai Dec 5, 2024
fcacbbb
Fix for when running screenshot generation for multiple locales
kdmukai Dec 6, 2024
6ee36a4
README typo fix
kdmukai Dec 11, 2024
e8f26b1
Screenshot generator fixes, refactor
kdmukai Dec 11, 2024
ea5064c
Sync to latest ES translations
kdmukai Dec 14, 2024
05d4ea5
Removing l10n fonts that aren't needed yet.
kdmukai Dec 17, 2024
60b23f3
Workaround for Pi Zero / SeedSigner OS missing libraqm
kdmukai Dec 19, 2024
09f016b
Fix for right edge rendering issues on scrolling text/buttons
kdmukai Dec 20, 2024
7df8067
bugfix: Ensure `Keyboard` screens isolate updates w/`Renderer.lock`
kdmukai Dec 20, 2024
b2b9908
bugfix: de-selecting actively scrolling `Button` can let scroll threa…
kdmukai Dec 20, 2024
fe2b579
Update screenshots submodule to match latest after right-side scrolli…
kdmukai Dec 20, 2024
6ef42cf
Better code comment explanation, removes outdated info
kdmukai Dec 20, 2024
5f99e32
Clarifying code comment
kdmukai Dec 20, 2024
abde001
Not necessary but defensive/best practice `Renderer.lock` additions
kdmukai Dec 20, 2024
3c7cfd4
Additional code explanation
kdmukai Dec 20, 2024
97e1555
Trivial refactor to match usage everywhere else
kdmukai Dec 20, 2024
229151d
Sync to latest minor screenshot submodule update
kdmukai Dec 20, 2024
cf19a81
bugfix: import at wrong scope
kdmukai Dec 20, 2024
0d6356c
Additional FlowTest for verifying a single sig addr
kdmukai Dec 20, 2024
1ea73e8
Deprecated PIL resampling method updated
kdmukai Dec 20, 2024
a2ffa7d
sync to minor screenshot update
kdmukai Dec 20, 2024
6c7ee5e
new url for libzbar; altered config for seedsigner service
jdlcdl Dec 21, 2024
59b5ef2
Fix internal link to Verification section
kdmukai Dec 21, 2024
879cd66
Update outdated README feature highlights
kdmukai Dec 21, 2024
3fbc863
Merge pull request #620 from kdmukai/initial_multilanguage_0.8.0
newtonick Dec 22, 2024
f8c380f
Merge pull request #618 from newtonick/nunchuk_xpub_fix
newtonick Dec 22, 2024
cfc22b0
Merge pull request #637 from jdlcdl/manual-build-adjustments-0.8.0
newtonick Dec 22, 2024
6a0a840
Update pyproject.toml
newtonick Dec 22, 2024
15009e4
Update controller.py
newtonick Dec 22, 2024
a43ea05
Merge pull request #638 from kdmukai/readme_verification_internal_link
newtonick Dec 22, 2024
c12ac7d
Merge pull request #631 from steven-s-martins/dev
newtonick Dec 22, 2024
a1107dc
Merge pull request #641 from newtonick/version-bump-0.8.5-rc1
newtonick Dec 23, 2024
209b86c
Sync to translations repo at 0.8.5-rc1
kdmukai Dec 23, 2024
24e70c3
Merge pull request #642 from kdmukai/prep_0.8.5-rc1
newtonick Dec 24, 2024
c2ccb61
Merge pull request #639 from kdmukai/readme_feature_highlights_update
newtonick Dec 24, 2024
0496eea
Update encode_qr.py
fedebuyito Dec 24, 2024
9bfb7b2
Merge pull request #610 from fedebuyito/resolves_issue_582
newtonick Dec 24, 2024
5cf5a01
Update README.md to fix version naming for verification step
Dec 30, 2024
b5e3d4f
add SeedAddressVerificationSuccessScreen
kdmukai Dec 30, 2024
5ad4818
bugfix on `show_back_button`
kdmukai Dec 30, 2024
8c902aa
Refactor / simplify `HardwareButtons`
kdmukai Jan 1, 2025
9efb700
cleanup
kdmukai Jan 1, 2025
7c09dc1
Removing outdated comment
kdmukai Jan 2, 2025
5267844
bugfix on edge case Compact SeedQRs
kdmukai Jan 2, 2025
75ba1e0
Further bugfix; convert first, then check length
kdmukai Jan 2, 2025
cf83ebe
add test case
kdmukai Jan 2, 2025
7990193
bugfix for method arg change
kdmukai Jan 3, 2025
6407310
Merge pull request #657 from kdmukai/decodeqr_bytes_fix_v2
newtonick Jan 13, 2025
c0a2799
Merge pull request #658 from kdmukai/seedqr_dev_tool_update
newtonick Jan 13, 2025
64d63c7
Merge pull request #651 from kdmukai/update_SeedAddressVerificationSu…
newtonick Jan 13, 2025
24d688a
Merge pull request #649 from copy2018/patch-1
newtonick Jan 13, 2025
e972fc8
swapping out print() for logging.info()
kdmukai Jan 13, 2025
825a25a
Merge pull request #655 from kdmukai/hardwarebutton_refactor
newtonick Jan 13, 2025
0179a62
Adds missing text wrapping for "Electrum seeds"
kdmukai Jan 14, 2025
ab18ec1
Sync submodules to latest translations and screenshots
kdmukai Jan 14, 2025
b4ee0e7
Update submodule branch reference
kdmukai Jan 14, 2025
46d9a53
Update translations repo pointer to latest commit
kdmukai Jan 14, 2025
b4b484b
Added input/keyboard icons (delete, space)
easyuxd Jan 15, 2025
2fedf2d
Start using named variables in l10n English source strings
kdmukai Jan 15, 2025
568534d
Sync submodule pointers
kdmukai Jan 15, 2025
be465a3
Merge pull request #605 from easyuxd/messaging-components
newtonick Jan 19, 2025
cbaaaf4
Merge pull request #661 from kdmukai/0.8.5-rc1_fixes
newtonick Jan 19, 2025
f9534e7
fixes uppercase bug; adds tests
kdmukai Jan 20, 2025
2bd3233
minor improvement after reviewing coverage
kdmukai Jan 20, 2025
684d1d0
Add testnet legacy addr to tests
kdmukai Jan 20, 2025
a90e7a6
Use same test key for all test addrs; add native segwit regtest
kdmukai Jan 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 12 additions & 5 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ jobs:

steps:
- uses: actions/checkout@v3
with:
# Needs to also pull the seedsigner-translations repo
submodules: recursive
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
Expand All @@ -45,16 +48,20 @@ jobs:
--cov=seedsigner \
--cov-append \
--cov-branch \
--cov-report term \
--cov-report html \
--cov-report html:./artifacts/cov_html \
--cov-report xml \
--durations 5 \
-vv
- name: Generate screenshots
run: |
python -m pytest tests/screenshot_generator/generator.py
python -m pytest tests/screenshot_generator/generator.py \
--color=yes \
--cov=seedsigner \
--cov-append \
--cov-branch \
--cov-report html:./artifacts/cov_html \
-vv
cp -r ./seedsigner-screenshots ./artifacts/
- name: Coverage report
run: coverage report
- name: Archive CI Artifacts
uses: actions/upload-artifact@v3
with:
Expand Down
7 changes: 4 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ src/seedsigner.egg-info/
.vscode
src/seedsigner/models/settings_definition.json
.idea
*.mo
.coverage
seedsigner-screenshots
.coverage*

*.po
*.mo
9 changes: 9 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[submodule "src/seedsigner/resources/seedsigner-translations"]
path = src/seedsigner/resources/seedsigner-translations
url = https://github.com/SeedSigner/seedsigner-translations.git
branch = dev
[submodule "seedsigner-screenshots"]
path = seedsigner-screenshots
url = https://github.com/SeedSigner/seedsigner-screenshots.git
branch = dev
update = none
112 changes: 65 additions & 47 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* [Project Summary](#project-summary)
* [Shopping List](#shopping-list)
* [Software Installation](#software-installation)
* [Verifying the Software](#verifying-the-software)
* [Verifying your download](#verifying-your-download)
* [Enclosure Designs](#enclosure-designs)
* [SeedQR Printable Templates](#seedqr-printable-templates)
* [Build from Source](#build-from-source)
Expand All @@ -21,7 +21,7 @@
[![CI](https://github.com/SeedSigner/seedsigner/actions/workflows/tests.yml/badge.svg)](https://github.com/SeedSigner/seedsigner/actions/workflows/tests.yml)
[![Build](https://github.com/SeedSigner/seedsigner/actions/workflows/build.yml/badge.svg)](https://github.com/SeedSigner/seedsigner/actions/workflows/build.yml)

The goal of SeedSigner is to lower the cost and complexity of Bitcoin multi-signature wallet use. To accomplish this goal, SeedSigner offers anyone the opportunity to build a verifiably air-gapped, stateless Bitcoin signing device using inexpensive, publicly available hardware components (usually < $50). SeedSigner helps users save with Bitcoin by assisting with trustless private key generation and multisignature (aka "multisig") wallet setup, and helps users transact with Bitcoin via a secure, air-gapped QR-exchange signing model.
The goal of SeedSigner is to lower the cost and complexity of Bitcoin multisignature wallet use. To accomplish this goal, SeedSigner offers anyone the opportunity to build a verifiably air-gapped, stateless Bitcoin signing device using inexpensive, publicly available hardware components (usually < $50). SeedSigner helps users save with Bitcoin by assisting with trustless private key generation and multisignature (aka "multisig") wallet setup, and helps users transact with Bitcoin via a secure, air-gapped QR-exchange signing model.

Additional information about the project can be found at [SeedSigner.com](https://seedsigner.com).

Expand All @@ -30,55 +30,73 @@ You can follow [@SeedSigner](https://twitter.com/SeedSigner) on Twitter for the
If you have specific questions about the project, our [Telegram Group](https://t.me/joinchat/GHNuc_nhNQjLPWsS) is a great place to ask them.

### Feature Highlights:
* Calculate the final word (aka checksum) of a 12- or 24-word BIP39 seed phrase
* Create a 24-word BIP39 seed phrase with 99 dice rolls or a 12-word with 50 rolls [(Verifying dice seed generation)](docs/dice_verification.md)
* Create a 12- or 24-word BIP39 seed phrase via image entropy from the onboard camera
* Temporarily stores seeds in memory while the device is powered; all memory is wiped when power is removed
* SD card removable after boot to ensure no secret data can be written to it
* Guided interface to manually transcribe a seed to the SeedQR format for instant seed loading [(demo video here)](https://youtu.be/c1-PqTNx1vc)
* BIP39 passphrase (aka "word 25") support
* Native Segwit Multisig XPUB generation
* PSBT-compliant; scan and parse transaction data from animated QR codes
* Sign transactions & transfer XPUB data using animated QR codes [(demo video here)](https://youtu.be/LPqvdQ2gSzs)
* Live preview during image entropy seed generation and QR scanning UX
* Optimized seed word entry interface
* Support for Bitcoin Mainnet & Testnet
* Support for custom user-defined derivation paths
* Support for loading Electrum Segwit seed phrases with feature limitations: [Electrum support info](docs/electrum.md)
* On-demand receive address verification
* Address Explorer for single sig and multisig wallets
* User-configurable QR code display density
* Responsive, event-driven user interface

### Considerations:
* Built for compatibility with Specter Desktop, Sparrow, and BlueWallet Vaults
* Device takes up to 60 seconds to boot before menu appears (be patient!)
* Always test your setup before transferring larger amounts of bitcoin (try Testnet first!)
* Taproot not quite yet supported
* Slightly rotating the screen clockwise or counter-clockwise should resolve lighting/glare issues
* If you think SeedSigner adds value to the Bitcoin ecosystem, please help us spread the word! (tweets, pics, videos, etc.)

### Planned Upcoming Improvements / Functionality:
* Multi-language support
* Significantly faster boot time
* Reproducible builds
* Port to MicroPython to broaden the range of compatible hardware to include low-cost microcontrollers
* Other optimizations based on user feedback!
* Stateless, air-gapped operation:
* Temporarily stores seeds in memory while the device is powered; all memory is wiped when power is removed.
* SD card removable after boot to ensure no secret data can be written to it.
* No wifi or Bluetooth hardware onboard.
* Can only receive data via reading QR codes with its camera.
* Can only send data by displaying QR codes on its screen.

* Trustless, auditable:
* Completely FOSS code, MIT license
* Reproducible builds
* Created and maintained by volunteers. There is no corporation. No profit motive.

* Creating and handling seeds:
* Create a seed phrase by picking BIP39 words, calculates the final word (aka checksum).
* Create a seed phrase [via dice rolls](docs/dice_verification.md).
* Create a seed phrase via image entropy from the onboard camera.
* Guided interface to manually transcribe a seed to the SeedQR format for instant seed loading [(video)](https://youtu.be/c1-PqTNx1vc).
* BIP39 passphrase (aka 13th or 25th word) support.
* Import any existing seed phrase via an optimized seed word entry interface.
* Partial support for Electrum Segwit seed phrases [(info)](docs/electrum.md).

* Wallet setup and transaction signing
* Script types: Taproot, native segwit, nested segwit, legacy (p2pkh).
* Single sig and multisig xpub export.
* Support for user-defined custom derivation paths.
* In-depth transaction (aka PSBT) review flow before signing.
* Verify the PSBT's single sig or multisig change outputs or self-transfer outputs.
* Mainnet, testnet, and regtest.

* Additional utilities
* [SettingsQR](https://github.com/SeedSigner/seedsigner-settings-generator) to instantly reconfigure a SeedSigner for beginners, advanced users, or tailored to your preferences.
* Scan a software wallet's receive or change address to verify that it's correct.
* Address Explorer for single sig and multisig wallets.
* Message signing to prove address ownership.
* BIP85 child seed generation.

* Compatible with:
* Sparrow
* Nunchuk
* Keeper
* BlueWallet
* Specter Desktop
* Any bitcoin wallet software that supports QR codes

* Supported languages:
* English
* Español
* Many more coming soon!


---------------

# Shopping List

To build a SeedSigner, you will need:

* Raspberry Pi Zero (preferably version 1.3 with no WiFi/Bluetooth capability, but any Raspberry Pi 2/3/4 or Zero model will work, Raspberry Pi 1 devices will require a hardware modification to the Waveshare LCD Hat, as per the [instructions here](./docs/legacy_hardware.md))
* Waveshare 1.3" 240x240 pxl LCD (correct pixel count is important, more info at https://www.waveshare.com/wiki/1.3inch_LCD_HAT)
* Pi Zero-compatible camera (tested to work with the Aokin / AuviPal 5MP 1080p with OV5647 Sensor)
* Raspberry Pi Zero
* Preferably version 1.3 which has no WiFi/Bluetooth capability, but any Raspberry Pi 2/3/4 or Zero "W"/"2W" model will work.
* Waveshare 1.3" 240x240 LCD (MUST be the 240x240 version!) https://www.waveshare.com/wiki/1.3inch_LCD_HAT.
* Pi Zero-compatible camera (tested to work with the Aokin / AuviPal 5MP 1080p with OV5647 Sensor).

Notes:
* You will need to solder the 40 GPIO pins (20 pins per row) to the Raspberry Pi Zero board. If you don't want to solder, purchase "GPIO Hammer Headers" for a solderless experience.
* Other cameras with the above sensor module should work, but may not fit in the Orange Pill enclosure
* Choose the Waveshare screen carefully; make sure to purchase the model that has a resolution of 240x240 pixels
* You may need to solder the 40 GPIO pins (20 pins per row) to the Raspberry Pi Zero board. If you don't want to solder, most stores offer the board "with headers" already soldered on.
* The Pi Zero "W" or "2W" is often easier to find but has wifi/Bluetooth hardware. You can still use these boards and can optionally [disable the wifi/Bluetooth hardware](https://github.com/DesobedienteTecnologico/rpi_disable_wifi_and_bt_by_hardware).
* Other cameras with the above sensor module should work, but may not fit in the Orange Pill enclosure.
* Choose the Waveshare screen carefully; they make a number of different boards that look very similar but ARE NOT COMPATIBLE! Make sure you purchase the model that has a resolution of 240x240 pixels.
* Raspberry Pi 1 is also compatible, but will require a [hardware modification to the Waveshare LCD Hat](./docs/legacy_hardware.md).

---------------

Expand Down Expand Up @@ -119,13 +137,13 @@ Once the files have all finished downloading, follow the steps below to verify t
[Our previous software versions are available here](https://github.com/SeedSigner/seedsigner/releases). Choose a specific version and then expand the *Assets* sub-heading to display the .img file binary and also the 2 associated signature files. **Note:** The prior version files will have lower numbers than the scripts and examples provided in this document, but the naming format will be the same, so you can edit them as required for signature verification etc.


## Verifying that the downloaded files are authentic (optional but highly recommended!)
## Verifying your download

You can quickly verify that the software you just downloaded is both authentic and unaltered, by following these instructions.
We assume you are running the commands from a computer where both [GPG](https://gnupg.org/download/index.html) and [shasum](https://command-not-found.com/shasum) are already installed, and that you also know [how to navigate on a terminal](https://terminalcheatsheet.com/guides/navigate-terminal).
You can quickly verify that the software you just downloaded is both authentic and unaltered by following these instructions.
We assume you are running the commands from a computer where both [GPG](https://gnupg.org/download/index.html) and [shasum](https://command-not-found.com/shasum) are already installed and that you also know [how to navigate on a terminal](https://terminalcheatsheet.com/guides/navigate-terminal).

> You must run the following verification before opening or mounting the .img file.
> Some operating systems modify the file on mount causing verification to fail.
> Some operating systems modify the file on mount, causing verification to fail.

### Step 1. Verify that the signature (.sig) file is genuine:

Expand All @@ -141,7 +159,7 @@ The result should confirm that 1 key was *either* imported or updated. *Ignore*

Next, you will run the *verify* command on the signature (.sig) file. (*Verify* must be run from inside the same folder that you downloaded the files into earlier. The `*`'s in this command will auto-fill the version from your current folder, so it should be copied and pasted as-is.)
```
gpg --verify seedsigner.0.7.*.sha256.txt.sig
gpg --verify seedsigner.0.8.*.sha256.txt.sig
```

When the verify command completes successfully, it should display output like this:
Expand Down
8 changes: 5 additions & 3 deletions docs/raspberry_pi_os_build_instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ SeedSigner requires `zbar` at 0.23.x or higher.

Download the binary:
```bash
curl -L http://raspbian.raspberrypi.org/raspbian/pool/main/z/zbar/libzbar0_0.23.90-1_armhf.deb --output libzbar0_0.23.90-1_armhf.deb
curl -L http://raspbian.raspberrypi.org/raspbian/pool/main/z/zbar/libzbar0_0.23.90-1+deb11u1_armhf.deb --output libzbar0_0.23.90-1_armhf.deb
```

And then install it:
Expand Down Expand Up @@ -211,7 +211,9 @@ Description=Seedsigner
[Service]
User=pi
WorkingDirectory=/home/pi/seedsigner/src/
ExecStart=/usr/bin/python3 main.py > /dev/null 2>&1
ExecStart=/usr/bin/python3 main.py
StandardOutput=null
ErrorOutput=null
Restart=always

[Install]
Expand All @@ -220,7 +222,7 @@ WantedBy=multi-user.target

_Note: For local dev you'll want to edit the `Restart=always` line to `Restart=no`. This way when your dev code crashes it won't keep trying to restart itself. Note that the UI "Reset" will no longer work when auto-restarts are disabled._

_Note: Debugging output is completely wiped via routing the output to `/dev/null 2>&1`. When working in local dev, you'll `kill` the `systemd` SeedSigner service and just directly run the code on demand so you can see all the debugging output live._
_Note: Debugging output is completely wiped via routing the stdout and stderr to `/dev/null`. When working in local dev, you'll `kill` the `systemd` SeedSigner service and just directly run the code on demand so you can see all the debugging output live._

Use `CTRL-X` and `y` to exit and save changes.

Expand Down
Binary file not shown.
Binary file not shown.
Loading
Loading