KX
← All projectsKrux

Krux

Open-source signing firmware for Kendryte K210 devices.

BitcoinHardware walletsNormal
Repository coverage

216 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.

58security candidates41second-pass queue22AI analyses
39commits · 30 days
59commits · 60 days
100commits · 180 days
216commits · 365 days
Backfill bands
Aug 5 → Feb 6116 seen6 candidatesComplete
Feb 6 → Jun 639 seen3 candidatesComplete
Jun 6 → Jul 622 seen1 candidatesComplete
Jul 6 → Aug 538 seen5 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.

65/100 average clarity
59Strong · 80–100
62Adequate · 60–79
79Thin · 40–59
16Opaque · 0–39
6security 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.
Odudex29148272
odudex892910159
Tads36101063
qlrd1621082
kdmukai422066
tadeubas410038
kkdao1200083
Jean Do600078
Naman015500060
bitcoisas500066
Naman Gupta200079
SatsCzar200062
Analysis record

Published AI watches

Last scanned 43 minutes ago

Moderate 62 AI analysisMessage 90 · Strong
KX KruxKrux BitcoinHardware wallets

feat: warn when PSBT input amounts cannot be verified

This commit adds a warning screen to Krux, a hardware signing device, when it is asked to sign a multi-input Bitcoin transaction where the amounts of some inputs cannot be independently verified. The risk is that a malicious transaction co…

New user-facing warning for unverified multi-input SegWit amountsDetection logic tied to BIP143 signature semantics and inp.is_verifiedDoes not enforce previous-transaction inclusion; user can still proceed
518b3314by odudex+159−24 files
Vendor flagged security relevance
High 78 AI analysisMessage 95 · Strong
KX KruxKrux BitcoinHardware wallets

fix: verify PSBT input amounts before showing the fee

This commit fixes a security flaw in Krux, a Bitcoin signing device. Before the fix, an attacker could trick the device into showing a low transaction fee on screen while actually signing a much higher fee. The fix makes the device verify …

Fixes fee-display/sighash amount mismatchAdds prevout txid hash verification for non_witness_utxoMandates non_witness_utxo for legacy inputs
fc808059by odudex+353−122 files
Vendor flagged security relevance
Moderate 66 AI analysisMessage 85 · Strong
KX KruxKrux BitcoinHardware wallets

fix: reject a PSBT whose outputs exceed its inputs

This commit fixes a bug in Krux, a Bitcoin signing device, where a malformed transaction whose outputs spend more than its inputs could be loaded and shown to the user. Normally such a transaction is impossible on the Bitcoin network, but …

Input validation gap in PSBT parsingUI rendering bug masking invalid transaction economicsPotential social-engineering / user-confusion attack
d6813d88by odudex+52−02 files
Vendor flagged security relevance
Moderate 55 AI analysisMessage 82 · Strong
KX KruxKrux BitcoinHardware wallets

chore: bump MaixPy with Shannon changes and RNG removal

This commit updates a bundled firmware component called MaixPy. The commit message says it fixes a 'Shannon heap overflow,' removes an unused random-number binding, and drops support for one hardware variant (Maix Bit). A heap overflow is …

Commit message explicitly mentions fixing a heap overflowRemoval of an unused cryptographic/randomness binding (os.urandom)Submodule bump only; no source-level patch visible in this commit
5c4ece9aby odudex+1−11 file
Vendor flagged security relevance
Moderate 52 AI analysisMessage 85 · Strong
KX KruxKrux BitcoinHardware wallets

fix: remove Maix Bit and CIF camera support

This commit removes support for an old, discontinued hardware device called the Maix Bit from the Krux Bitcoin wallet firmware. The commit message says the Maix Bit's camera resolution (CIF) was the only one that fed frames larger than QVG…

Buffer overflow / scratch buffer overflow claimed in commit message (49,152 bytes)Removal of vulnerable hardware code path rather than hardening the entropy moduleDiscontinuation of affected device reduces real-world exposure
8090ac73by odudex+11−1279 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 90 · Strong
KX KruxKrux BitcoinHardware wallets

refactor: use native uUR on tests and simulator

This commit is a routine engineering cleanup: it removes a Python-only compatibility layer (a 'shim') used for testing and simulation, and makes the test environment use the same C-language UR encoder/decoder module that the real hardware …

2fe2f5f5by odudex+108−24919 files
No security note in commit
Informational 15 AI analysisMessage 95 · Strong
KX KruxKrux BitcoinHardware wallets

test: build embit's C libsecp256k1 for tests

This commit only changes how automated tests are run. It builds a C cryptography library during testing so the test environment matches the real firmware more closely. There is no change to the actual Krux firmware or wallet code, and no s…

ac3ea482by odudex+37−03 files
No security note in commit
Low 37 AI analysisMessage 90 · Strong
KX KruxKrux BitcoinHardware wallets

docs: self-host math, remove MathJax/require.js CDN

This change removes third-party web scripts (MathJax and require.js loaded from a content delivery network) from the project's documentation and replaces them with self-hosted, pre-rendered math images. That eliminates a supply-chain risk …

Removal of cdnjs MathJax and require.js external script loadsSelf-hosting of rendered math assets as static SVGsExplicit commit message reference to supply-chain class (polyfill.io incident)
492820a1by odudex+8779−8928 files
Vendor flagged security relevance
Low 32 AI analysisMessage 95 · Strong
KX KruxKrux BitcoinHardware wallets

feat: migrate UR encoding to uUR MicroPython C module

This commit swaps out the pure-Python QR code encoding/decoding libraries used by the Krux hardware wallet for a new C module called uUR. The stated goal is faster scanning and lower memory use. The change touches code that handles Bitcoin…

Large-scale dependency swap in cryptographic data path (UR/PSBT/wallet descriptors/BIP39 seeds)New native C module is not visible in this diff; behavior must be trusted to MaixPy firmware imageShim layer changes string case handling (uppercase Bytewords) and decoder attribute semantics
401c70c4by odudex+167−7612 files
No security note in commit
High 74 AI analysisMessage 83 · Strong
KX KruxKrux BitcoinHardware wallets

Security Hardening (#851)

This commit fixes four security weaknesses in Krux, a Bitcoin hardware-wallet project. The changes prevent: (1) encrypted backups from declaring zero or very low password-stretching effort, which would make them easy to brute-force; (2) mu…

Minimum PBKDF2 iteration enforcement against trivial work-factor envelopesRejection of multiple origin-less xpubs in multi-key descriptorsSD file-list filtering of traversal entries ('.', '..', path separators)
8f62c860by Odudex+263−39 files
Vendor flagged security relevance
Moderate 66 AI analysisMessage 93 · Strong
KX KruxKrux BitcoinHardware wallets

fix: add zip bomb protection and QR part limit enforcement (#843) (#848)

This commit fixes two denial-of-service weaknesses in Krux, a Bitcoin hardware-wallet firmware. First, it caps how much data can come out of compressed (deflated) QR codes and encrypted backups, preventing a maliciously crafted 'zip bomb' …

zip-bomb / decompression-bomb protectiondenial-of-service (OOM) mitigationinput validation on multi-part QR part counts
bd95e828by Odudex+102−610 files
Vendor flagged security relevance
Moderate 60 AI analysisMessage 93 · Strong
KX KruxKrux BitcoinHardware wallets

fix: warn user before signing raw hashes in message signing (#846)

This commit adds a warning screen to Krux's message-signing feature when the user is about to sign a raw 32-byte hash or a 64-character hex string. Previously, the device would silently treat such inputs as already-hashed values and sign t…

Silent signing of raw 32-byte values allowed transaction sighash spoofingMessage signing path treated raw hashes identically to SHA256(message) digestsFix explicitly references 'C3 of #843' as a security concern
23bc73b3by Odudex+46−726 files
Vendor flagged security relevance
High 78 AI analysisMessage 98 · Strong
KX KruxKrux BitcoinHardware wallets

fix: reject PSBT inputs with non-standard sighash types before signing (#844)

Krux is a small, open-source Bitcoin signing device (hardware wallet). This commit fixes a security flaw where the device would sign transactions even if the sender asked it to use unusual Bitcoin signature modes—specifically SIGHASH_NONE,…

Explicit security fix for externally-reported audit finding (#843 C2)Pre-sign validation added to reject non-standard sighash typesRelevant to transaction-replacement / fund-redirect attacks via SIGHASH_NONE/SINGLE/ANYONECANPAY
e5318112by Odudex+115−03 files
Vendor flagged security relevance
Low 36 AI analysisMessage 98 · Strong
KX KruxKrux BitcoinHardware wallets

chore: require urllib3 >2.6 security fix for CVE-2025-66471 urllib3 is dependency of requests and translate, used in dev tools

This commit updates the project's Python dependency lock file to require urllib3 version 2.6.0 or newer. The commit message says this is a security fix for CVE-2025-66471, a vulnerability in the urllib3 library. urllib3 is used indirectly …

Dependency version bump for a reported CVE (CVE-2025-66471)urllib3 constrained to >=2.6.0Affected packages moved from main to dev dependency group, limiting runtime exposure
268f3f7bby odudex+23−172 files
Vendor flagged security relevance
Informational 18 AI analysisMessage 58 · Thin
KX KruxKrux BitcoinHardware wallets

Datum crypto-bip39: join list so Datum can load and display it (#799)

This commit fixes a display bug in Krux's Datum tool. When a user scanned a BIP39 mnemonic seed phrase from a QR code, the device received the words as a list but tried to show them as a single string, which could not render correctly. The…

No security-relevant keywords in commit title or messageNo input validation changesNo cryptographic operation changes
9a06ae7fby Odudex+2−42 files
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
KX KruxKrux BitcoinHardware wallets

Refactor capture entropy test to be less fragile, more DRY (#781)

This commit only refactors a single test file to make the tests less brittle and remove duplicated code. It does not change any production code, cryptographic logic, or user-facing behavior. There is no security issue here.

f091ec71by kdmukai+18−511 file
No security note in commit
Informational 15 AI analysisMessage 63 · Adequate
KX KruxKrux BitcoinHardware wallets

Minor UI change: Add line break for "bits/px" Shannon's entropy text (#780)

This commit is a cosmetic user-interface change. It splits a single line of text showing camera-captured entropy statistics into two lines so it fits better on small screens. No security-sensitive code, calculations, or behavior was altere…

30efd634by kdmukai+52−2725 files
No security note in commit
Low 37 AI analysisMessage 58 · Thin
KX KruxKrux BitcoinHardware wallets

Give warning for non-ASCII BIP39-passphrase (#769)

This change relaxes a safety rule in the Krux hardware wallet firmware. Previously, if a user scanned a BIP39 passphrase QR code containing non-English/non-ASCII characters (for example accented letters or symbols), Krux would block it wit…

Relaxation of input validation for BIP39 passphraseNon-ASCII passphrase now allowed after warning instead of blockedBIP39 NFKD normalization not performed due to firmware size constraints
fad4a0b8by Tads+53−1127 files
Vendor flagged security relevance
Low 44 AI analysisMessage 58 · Thin
KX KruxKrux BitcoinHardware wallets

Embit update: Improved BIP39 mnemonic validation (#759)

This commit tightens how a Bitcoin wallet tool (Krux) checks recovery phrases. Previously, the code accepted phrases with extra spaces, tabs, newlines, or commas between words because it used a loose 'strip and split' approach. Now it requ…

Stricter input validation for BIP39 mnemonic parsingRejection of whitespace-normalized parsing that could mask malformed user inputAlignment with upstream embit validation behavior
6806a792by Odudex+43−33 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.

Lower-prioritychore: update `poetry` to `uv` commands.by qlrd · 5752a688 · Jun 17, 2026 · 3 filesMessage 57 · ThinTriage 0Details
Commit message · qlrd

chore: update `poetry` to `uv` commands.

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Lower-priorityrefactor: read Settings() once in display.py orientation/init pathsby kkdao · 5eb27afe · Jun 15, 2026 · 1 fileMessage 85 · StrongTriage 0Details
Commit message · kkdao

refactor: read Settings() once in display.py orientation/init paths

to_landscape/to_portrait built a fresh Settings() namespace tree twice per
call and initialize_lcd built it three times. Read it once into a local and
reuse. Behavior unchanged.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Lower-priorityrefactor: dedupe flipped-orientation check via is_flipped_orientationby kkdao · 3decdfd0 · Jun 15, 2026 · 2 filesMessage 85 · StrongTriage 0Details
Commit message · kkdao

refactor: dedupe flipped-orientation check via is_flipped_orientation

The orientation check was implemented in three places. Settings.is_flipped_
orientation() now uses self.hardware (it's a Settings method) instead of
rebuilding Settings() twice, and display.to_landscape/to_portrait call that
helper instead of re-implementing the hasattr/getattr inline. Consolidates the
logic to one place and removes redundant Settings() builds (also benefits
camera.py callers). Behavior unchanged.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Lower-priorityfix: narrow bare except blocks to stop hiding real errors (#877)by kkdao · c2048960 · Jun 12, 2026 · 6 filesMessage 100 · StrongTriage 0Details
Commit message · kkdao

fix: narrow bare except blocks to stop hiding real errors (#877)

* fix: narrow bare except to StopIteration in display_qr_codes
* test: lock in StopIteration narrowing in display_qr_codes
* fix: narrow bare except to Exception in Key.extract_fingerprint
* test: lock in Exception narrowing in extract_fingerprint
* fix: narrow bare excepts in qr.py (IndexError / Exception)
* test: lock in detect_format Exception narrowing
* test: cover narrowed except branches in qr.py
* fix: narrow has_sd_card bare except to Exception

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Lower-priorityfix: make settings reads non-mutating and harden malformed settings handling (#874)by kkdao · 7368ca45 · Jun 9, 2026 · 2 filesMessage 93 · StrongTriage 8Details
Commit message · kkdao

fix: make settings reads non-mutating and harden malformed settings handling (#874)

* refactor: make Store.get() a non-mutating read-only walk
* fix: harden Store.__init__ against malformed persisted settings
* fix: validate persist.location is a known path in Store.__init__
* fix: harden Store.set/delete against non-dict namespace levels

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
defensive validation
Lower-prioritydocs: add Spanish Krux video tutorialby odudex · b049b8e8 · Jun 9, 2026 · 1 fileMessage 57 · ThinTriage 0Details
Commit message · odudex

docs: add Spanish Krux video tutorial

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
documentation-only discount
Lower-prioritydocs: serve templates page at folder URL via index.mdby odudex · cd9ccf02 · Jun 8, 2026 · 5 filesMessage 85 · StrongTriage 0Details
Commit message · odudex

docs: serve templates page at folder URL via index.md

Rename templates.en.md to index.en.md so the page is served at the
folder URL, fixing the confusing leading '..' in image paths. Wrap it
in its own nav section so navigation.indexes labels it 'Templates'
instead of absorbing it into 'Interface'.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Security candidatedocs: self-host math, remove MathJax/require.js CDNby odudex · 492820a1 · Jun 8, 2026 · 28 filesMessage 90 · StrongLow 37Details
Commit message · odudex

docs: self-host math, remove MathJax/require.js CDN

Pre-render the entropy page display equations to committed SVGs and
write inline math as plain HTML, removing the cdnjs MathJax and
require.js loads (same supply chain class as the polyfill.io incident).
render_docs_math.py regenerates the SVGs from the markdown. Also ignore
mkdocs (public/) and pytest-cov (htmlcov/) build output.

90/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
entropy or randomnessseed or entropy path
AI analysis · Low 37/100

This change removes third-party web scripts (MathJax and require.js loaded from a content delivery network) from the project's documentation and replaces them with self-hosted, pre-rendered math images. That eliminates a supply-chain risk similar to the polyfill.io incident, where a compromised or malicious CDN could inject harmful code into documentation pages viewed by users or developers.

AI review queueddocs: drop all third-party assets, add CSPby odudex · 6a7a357f · Jun 8, 2026 · 7 filesMessage 85 · StrongTriage 0Details
Commit message · odudex

docs: drop all third-party assets, add CSP

Make the docs site fully self-contained so no remote code or assets load
in visitors' browsers:

- System font stack (theme.font: false) instead of Google Fonts
- Video tutorials as a title + link list, dropping YouTube thumbnails
- Shortcode emoji replaced with inline Material icons
- Remove the gitmind.com mind-map iframes (navigation page)
- Add a Content-Security-Policy meta tag (overrides/main.html) that
blocks external scripts/styles/fonts/frames, preventing a polyfill.io
style CDN injection at the browser level

85/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
second-pass: broader security terminology
Lower-prioritychore(mkdocs.yml): Remove polyfill.io from extra_javascriptby SatsCzar · de3c8300 · Jun 6, 2026 · 1 fileMessage 62 · AdequateTriage 0Details
Commit message · SatsCzar

chore(mkdocs.yml): Remove polyfill.io from extra_javascript

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Lower-prioritychore(mkdocs.yml): Remove polyfill.io from extra_javascriptby SatsCzar · d2bff6b5 · Jun 6, 2026 · 1 fileMessage 62 · AdequateTriage 0Details
Commit message · SatsCzar

chore(mkdocs.yml): Remove polyfill.io from extra_javascript

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Lower-prioritychore: add min / recommended / latest tested python version to ciby qlrd · 249c8dbf · Jun 5, 2026 · 3 filesMessage 87 · StrongTriage 0Details
Commit message · qlrd

chore: add min / recommended / latest tested python version to ci

This commit add a restricted range of python versions on
`pyproject.toml` and testing those three versions on CI

87/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification
Lower-priorityfix: hide QR title in line/region modes to avoid index overlapby odudex · 04300401 · Jun 5, 2026 · 1 fileMessage 74 · AdequateTriage 0Details
Commit message · odudex

fix: hide QR title in line/region modes to avoid index overlap

74/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Explains rationale or failure mode! No meaningful explanatory body
Security candidatechore: update Embit and Maixpy to latestby odudex · b9b269c7 · May 30, 2026 · 2 filesMessage 57 · ThinTriage 12Details
Commit message · odudex

chore: update Embit and Maixpy to latest

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
boot or update path
Lower-prioritydocs: add `SECURITY.md` file (#817)by qlrd · 07805a5b · May 26, 2026 · 1 fileMessage 70 · AdequateTriage 0Details
Commit message · qlrd

docs: add `SECURITY.md` file (#817)

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
documentation-only discount
Lower-prioritydocs: tighten and clarify CONTRIBUTING.mdby odudex · 933e4d0b · May 25, 2026 · 1 fileMessage 72 · AdequateTriage 0Details
Commit message · odudex

docs: tighten and clarify CONTRIBUTING.md

Make the contribution guide more concise, trim topics beyond the document's scope, and fix inaccuracies

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
documentation-only discount
Lower-prioritydocs: add `CONTRIBUTING.md` fileby qlrddev · db7641d5 · May 23, 2026 · 1 fileMessage 80 · StrongTriage 0Details
Commit message · qlrddev

docs: add `CONTRIBUTING.md` file

`CONTRIBUTING.md` is a important file that guides new developers through
the standards built by krux team through years. This isn't a monad and
could be changed at time to time.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
documentation-only discount
Lower-prioritydocs: add Embit and k_quirc updates to CHANGELOGby odudex · 9ef58035 · May 14, 2026 · 1 fileMessage 57 · ThinTriage 0Details
Commit message · odudex

docs: add Embit and k_quirc updates to CHANGELOG

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
documentation-only discount
Security candidatechore(firmware): bump MaixPy to k_quirc + bump uUC + Maixpy cleanupby odudex · 834d75be · May 14, 2026 · 1 fileMessage 62 · AdequateTriage 12Details
Commit message · odudex

chore(firmware): bump MaixPy to k_quirc + bump uUC + Maixpy cleanup

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
boot or update path
Lower-prioritychore: update Embit requires Docker image and toolchain rebuild in order to have compliant python version.by odudex · 5271ebdb · May 14, 2026 · 2 filesMessage 89 · StrongTriage 0Details
Commit message · odudex

chore: update Embit
requires Docker image and toolchain rebuild in order to have compliant python version.

89/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Explains rationale or failure mode
Lower-priorityfeat: add vertical export methods to Stackbit 1248by bitcoisas · e04b36a1 · May 14, 2026 · 2 filesMessage 62 · AdequateTriage 0Details
Commit message · bitcoisas

feat: add vertical export methods to Stackbit 1248

Add grouped and compact export methods.

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Lower-priorityfeat(i18n): add Standard and Vertical strings for stackbit menuby bitcoisas · effba1bb · May 14, 2026 · 11 filesMessage 62 · AdequateTriage 0Details
Commit message · bitcoisas

feat(i18n): add Standard and Vertical strings for stackbit menu

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
translation-only discount
Lower-prioritytest: add tests for Stackbit 1248 vertical layoutby bitcoisas · c6bd35bb · May 14, 2026 · 1 fileMessage 82 · StrongTriage 0Details
Commit message · bitcoisas

test: add tests for Stackbit 1248 vertical layout

Test grouped/compact layouts + 24-word pagination.

82/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification
Lower-prioritydocs: add Stackbit 1248 vertical layout screenshots and documentationby bitcoisas · a7fcea84 · May 14, 2026 · 4 filesMessage 62 · AdequateTriage 0Details
Commit message · bitcoisas

docs: add Stackbit 1248 vertical layout screenshots and documentation

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
documentation-only discount
Lower-prioritydocs: add Stackbit 1248 vertical layout to CHANGELOGby bitcoisas · aa2751d9 · May 14, 2026 · 1 fileMessage 62 · AdequateTriage 0Details
Commit message · bitcoisas

docs: add Stackbit 1248 vertical layout to CHANGELOG

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
documentation-only discount