SS
← All projectsSeedSigner

SeedSigner

Stateless, air-gapped Bitcoin signing software for Raspberry Pi hardware.

BitcoinHardware walletsNormal
Repository coverage

187 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

134security candidates25second-pass queue18AI analyses
8commits · 30 days
8commits · 60 days
37commits · 180 days
187commits · 365 days
Backfill bands
Aug 5 → Feb 6150 seen8 candidatesComplete
Feb 6 → Jun 629 seen0 candidatesComplete
Jun 6 → Jul 60 seen0 candidatesComplete
Jul 6 → Aug 57 seen1 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

44/100 average clarity
4Strong · 80–100
30Adequate · 60–79
89Thin · 40–59
64Opaque · 0–39
42security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
kdmukai117794039
okaybro17143063
Nick Klockenga14130061
PROWLERx1510104020
alvroble1273055
FazleRabbbiferdaus172861061
biel410037
Advait111060
Kshitij111033
securesigner110050
S1DDHEY111045
newtonick100045
Analysis record

Published AI watches

Last scanned 2 minutes ago

Low 43 AI analysisMessage 77 · Adequate
SS SeedSignerSeedSigner BitcoinHardware wallets

fix: replace removed `get_seed` call in `PSBTSelectSeedView`

This commit fixes a bug where selecting an existing seed during PSBT signing would crash because the code called a method (`get_seed`) that no longer exists. The fix uses the already-loaded list of seeds directly. The crash is a reliabilit…

Fixes a runtime exception (AttributeError) in a signing workflowPrevents workflow failure when user selects an existing seed for PSBT signingAdds regression test covering the previously broken code path
442b7a1aby okaybro+13−12 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
SS SeedSignerSeedSigner BitcoinHardware wallets

refactor: use `Seed` instead of `seed_num`

This commit is a straightforward internal code cleanup: it replaces the use of numeric seed indexes (seed_num) with direct references to Seed objects throughout the user interface and tests. There is no security-relevant change; it is pure…

65e312c9by okaybro+238−2698 files
No security note in commit
Informational 23 AI analysisMessage 45 · Thin
SS SeedSignerSeedSigner BitcoinHardware wallets

Minor bugfix to correct if/else path

This commit fixes a small logic bug in SeedSigner, a hardware-wallet-like signing device. The code was checking whether a seed's fingerprint string was empty, but it should have been checking whether the seed has a passphrase. The bug coul…

Logic bug in seed finalization flowIncorrect fingerprint display conditionPotential user confusion during seed setup
c52577a9by kdmukai+3−21 file
No security note in commit
Informational 15 AI analysisMessage 0 · Opaque
SS SeedSignerSeedSigner BitcoinHardware wallets

fix comment

This commit only fixes the indentation of a comment line so it is properly formatted as a code comment. No executable code, logic, or behavior was changed.

cf37ac2aby PROWLERx15+2−21 file
No security note in commit
Informational 15 AI analysisMessage 33 · Opaque
SS SeedSignerSeedSigner BitcoinHardware wallets

update comment

This commit only rewrites an inline code comment to describe the same back-button behavior more clearly. No actual code logic, function calls, or data handling changed.

94485e52by Kshitij+4−41 file
No security note in commit
Informational 15 AI analysisMessage 35 · Opaque
SS SeedSignerSeedSigner BitcoinHardware wallets

added comment explaining changes

This commit only adds a clarifying comment to existing code. It does not change any program behavior, fix a bug, or alter security logic. The comment explains that pressing the back button during seed phrase entry can mean either aborting …

d0b729a5by PROWLERx15+4−11 file
No security note in commit
Low 34 AI analysisMessage 35 · Opaque
SS SeedSignerSeedSigner BitcoinHardware wallets

update conditional branch

This commit changes how the back button behaves during two seed-related screens. In the first screen, it simplifies the logic so that the pending mnemonic is only discarded when leaving from the first word. In the second screen, it removes…

Back-button control flow altered in seed creation UIPending mnemonic discard logic narrowed to first-word exit onlyRemoval of back-button guard before button_data indexing in finalize view
ef7d3716by PROWLERx15+3−71 file
No security note in commit
Informational 19 AI analysisMessage 28 · Opaque
SS SeedSignerSeedSigner BitcoinHardware wallets

fix back navigation

This commit fixes two minor user-interface navigation bugs in a Bitcoin seed-signer device app. In one screen, pressing the hardware back button after entering a mnemonic incorrectly dumped the user at the main menu instead of going back. …

No security-relevant keywords in commit title or messageNo changes to cryptography, key handling, or authenticationChange is purely UI navigation flow
5c7dcd17by PROWLERx15+4−41 file
No security note in commit
Low 46 AI analysisMessage 45 · Thin
SS SeedSignerSeedSigner BitcoinHardware wallets

replaced os.popen() with inbuilt file handling

This commit replaces a shell command used to read the Raspberry Pi CPU serial number with safer built-in Python file reading. The old code ran the command 'cat /proc/cpuinfo | grep Serial' through the operating system shell, which is gener…

Removal of os.popen shell invocationReplacement of shell pipeline with native file I/ODefensive hardening in entropy collection path
a00810caby S1DDHEY+6−41 file
No security note in commit
Informational 17 AI analysisMessage 35 · Opaque
SS SeedSignerSeedSigner BitcoinHardware wallets

Remove `TextArea.allow_text_overflow`

This commit removes a UI flag called allow_text_overflow from SeedSigner's on-screen text rendering code. Previously, the flag decided whether text that was too long should be silently allowed to spill past its box (overflow) or trigger an…

No cryptographic, wallet-seed, or input-validation code is touchedException path removed: TextDoesNotFitException no longer raised for single-word overflowAll changes are in GUI rendering/layout components
1f188754by kdmukai+9−427 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
SS SeedSignerSeedSigner BitcoinHardware wallets

Remove now-unused `has_passphrase` attr

This commit simply removes an unused attribute called has_passphrase from two screen classes and the two places that passed it in. There is no functional change, no bug fix, and no security relevance visible in the code change.

639c2a14by kdmukai+0−42 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
SS SeedSignerSeedSigner BitcoinHardware wallets

Improve commenting and solve minor nits

This commit only rewrites comments and removes an unused variable in a single file. It does not change any program logic, security behavior, or functionality. There is no security issue here.

c565b825by alvroble+10−111 file
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
SS SeedSignerSeedSigner BitcoinHardware wallets

Improve naming, comments and code consistency * Added explanatory comments and reference to the original issue * Better variable naming and type hinting to increase clarity * Modified nested functions handling, naming and (intended) visibility

This commit is a code cleanup and documentation improvement for a previously existing fingerprint-repair feature in SeedSigner. It renames functions, adds explanatory comments, adds type hints, and refactors nested helper functions. The ac…

725ae563by alvroble+62−601 file
No security note in commit
Informational 15 AI analysisMessage 50 · Thin
SS SeedSignerSeedSigner BitcoinHardware wallets

Light reorg and simplification of `PSBTChangeDetailsScreen`

This commit is a minor UI cleanup for a screen that shows details about a Bitcoin change address. It reorders on-screen elements, changes some label text (for example from 'Change' to 'change address'), and adjusts how a success message is…

71b91cfcby kdmukai+27−201 file
No security note in commit
Low 32 AI analysisMessage 68 · Adequate
SS SeedSignerSeedSigner BitcoinHardware wallets

Add PSBT with empty fingerprint support

This commit changes how SeedSigner handles Bitcoin transaction files (PSBTs) that contain placeholder '00000000' fingerprints. Normally, a fingerprint identifies which wallet seed a transaction belongs to. Some wallet software exports inco…

Change to fingerprint matching logic for PSBT ownership verificationNew fallback derivation-and-public-key comparison when fingerprint is zeroMutation of PSBT derivation metadata before parsing/signing
5ebd49c1by alvroble+85−51 file
No security note in commit
Informational 15 AI analysisMessage 65 · Adequate
SS SeedSignerSeedSigner BitcoinHardware wallets

replace PSBT text in codebase with Proposed transaction or Transaction

This commit only renames user-facing text strings. Every occurrence of 'PSBT' shown to the user is changed to 'Transaction' or 'Proposed Transaction' (for example, 'Review PSBT' becomes 'Review Transaction'). There are no code logic, secur…

7df24a84by FazleRabbbiferdaus172+16−164 files
No security note in commit
Informational 15 AI analysisMessage 60 · Adequate
SS SeedSignerSeedSigner BitcoinHardware wallets

Update src/seedsigner/gui/screens/psbt_screens.py

This commit is a massive initial repository import or merge of the entire SeedSigner project into the branch. It adds documentation, images, 3D enclosure files, GitHub workflows, Docker files, and source code. The commit title mentions onl…

a31a4fc2by Advait+131777−0328 files
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Security candidateminor comment updatesby Nick Klockenga · 848fbc03 · Feb 20, 2026 · 1 fileMessage 28 · OpaqueTriage 27Details
Commit message · Nick Klockenga

minor comment updates

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
seed or entropy pathsigning or wallet path
Security candidaterefactor(l10n): update translator notes for multisig policy displayby okaybro · 4c94f427 · Feb 19, 2026 · 3 filesMessage 62 · AdequateTriage 27Details
Commit message · okaybro

refactor(l10n): update translator notes for multisig policy display

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
seed or entropy pathsigning or wallet path
Security candidaterefactor(l10n): make multisig wallet policy display translatableby okaybro · 7f7f977a · Feb 19, 2026 · 6 filesMessage 62 · AdequateTriage 27Details
Commit message · okaybro

refactor(l10n): make multisig wallet policy display translatable

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
seed or entropy pathsigning or wallet path
Security candidatefix(IOTestScreen): stop blanking out "Clear" button for the screenshot rendererby okaybro · 3e1f8625 · Feb 18, 2026 · 1 fileMessage 77 · AdequateTriage 27Details
Commit message · okaybro

fix(IOTestScreen): stop blanking out "Clear" button for the screenshot renderer

Co-authored-by: kdmukai <934746+kdmukai@users.noreply.github.com>

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
seed or entropy pathsigning or wallet path
AI review queuedImprove tests, maintainabilityby kdmukai · e9b08094 · Feb 17, 2026 · 2 filesMessage 45 · ThinTriage 7Details
Commit message · kdmukai

Improve tests, maintainability

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
Security candidateImprovements for SettingsQR Generatorby kdmukai · fa111d8d · Feb 17, 2026 · 1 fileMessage 35 · OpaqueTriage 27Details
Commit message · kdmukai

Improvements for SettingsQR Generator

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
seed or entropy pathsigning or wallet path
Lower-prioritychore(l10n): regenerate `messages.pot`by okaybro · f8c4dce5 · Feb 16, 2026 · 1 fileMessage 57 · ThinTriage 0Details
Commit message · okaybro

chore(l10n): regenerate `messages.pot`

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Security candidatefix(l10n): use named variables in `NetworkMismatchView` messageby okaybro · b7f394e9 · Feb 16, 2026 · 1 fileMessage 77 · AdequateTriage 27Details
Commit message · okaybro

fix(l10n): use named variables in `NetworkMismatchView` message

Co-authored-by: kdmukai <934746+kdmukai@users.noreply.github.com>

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
seed or entropy pathsigning or wallet path
Security candidatefix(l10n): mark missing strings for translationby okaybro · 12a8e1c4 · Feb 16, 2026 · 2 filesMessage 57 · ThinTriage 27Details
Commit message · okaybro

fix(l10n): mark missing strings for translation

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
seed or entropy pathsigning or wallet path
Security candidatefix(l10n): update MicroSD toast timer terminology and add translator notesby okaybro · aa4b8e06 · Feb 16, 2026 · 1 fileMessage 62 · AdequateTriage 27Details
Commit message · okaybro

fix(l10n): update MicroSD toast timer terminology and add translator notes

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
seed or entropy pathsigning or wallet path
Lower-priorityExplicit description template; minor presentation reformatting; docs link fixby kdmukai · aa4e3293 · Feb 14, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · kdmukai

Explicit description template; minor presentation reformatting; docs link fix

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI review queuedUpdate PR templateby kdmukai · b386caa8 · Feb 14, 2026 · 1 fileMessage 28 · OpaqueTriage 0Details
Commit message · kdmukai

Update PR template

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
Lower-priorityBump Pillow version to 10.3.0by alvroble · 2757ced8 · Feb 3, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · alvroble

Bump Pillow version to 10.3.0

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI review queuedRestore whitespace alignment formattingby kdmukai · b447edd6 · Jan 20, 2026 · 1 fileMessage 35 · OpaqueTriage 0Details
Commit message · kdmukai

Restore whitespace alignment formatting

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI review queuedMinor comments updatesby kdmukai · fd051d3b · Jan 20, 2026 · 2 filesMessage 28 · OpaqueTriage 0Details
Commit message · kdmukai

Minor comments updates

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
Lower-priorityAdd `mock_context_manager`; factor out all `run_before` methodsby kdmukai · b609abb6 · Jan 20, 2026 · 2 filesMessage 50 · ThinTriage 0Details
Commit message · kdmukai

Add `mock_context_manager`; factor out all `run_before` methods

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Security candidatebufixes: dataclass; paramby kdmukai · 0b373b32 · Jan 20, 2026 · 1 fileMessage 35 · OpaqueTriage 27Details
Commit message · kdmukai

bufixes: dataclass; param

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
seed or entropy pathsigning or wallet path
Security candidateRename to `BaseDisplayDriver`; ili9341 changesby kdmukai · 777f6041 · Jan 20, 2026 · 4 filesMessage 45 · ThinTriage 27Details
Commit message · kdmukai

Rename to `BaseDisplayDriver`; ili9341 changes

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy pathsigning or wallet path
Security candidateRefactor `DisplayDriver` to be a true parent class; add Factoryby kdmukai · 6fed5e88 · Jan 20, 2026 · 4 filesMessage 50 · ThinTriage 27Details
Commit message · kdmukai

Refactor `DisplayDriver` to be a true parent class; add Factory

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy pathsigning or wallet path
AI review queuedMinor test improvementby kdmukai · a8e68142 · Jan 20, 2026 · 1 fileMessage 38 · OpaqueTriage 0Details
Commit message · kdmukai

Minor test improvement

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI review queuedMinor cleanupby kdmukai · f639d3df · Jan 20, 2026 · 1 fileMessage 18 · OpaqueTriage 0Details
Commit message · kdmukai

Minor cleanup

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
Security candidateBetter bulletproofingby kdmukai · dd9b3ece · Jan 20, 2026 · 2 filesMessage 18 · OpaqueTriage 27Details
Commit message · kdmukai

Better bulletproofing

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
seed or entropy pathsigning or wallet path
Security candidateEnsure persistent settings load valid multiselectsby kdmukai · 40e9fe76 · Jan 20, 2026 · 2 filesMessage 50 · ThinTriage 27Details
Commit message · kdmukai

Ensure persistent settings load valid multiselects

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy pathsigning or wallet path
Security candidateSettingsQR values cannot be blankby kdmukai · adaf3d1f · Jan 20, 2026 · 2 filesMessage 45 · ThinTriage 27Details
Commit message · kdmukai

SettingsQR values cannot be blank

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy pathsigning or wallet path
Security candidateUX changes to require a selection for multiselect settingsby kdmukai · 6e25e3f9 · Jan 20, 2026 · 3 filesMessage 50 · ThinTriage 27Details
Commit message · kdmukai

UX changes to require a selection for multiselect settings

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy pathsigning or wallet path