Merged
Conversation
Replace `submodules: recursive` with selective init of hdwallet and proto-tx-builder only. The recursive checkout fails because keepkey-firmware has deeply nested submodules (lwip.git) that cannot be cloned from git.savannah.gnu.org in CI. Also update hdwallet submodule pointer to develop branch with Solana support (keepkey/hdwallet#15). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The AppImage is already created in the artifacts directory (cwd), so `mv file .` fails with "are the same file". Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…architecture - BUILD.md: added signing deep dive (3 passes, entitlements, Mach-O detection), prune-app-bundle stage, version-aware dedup, DEV_BLOCKLIST, corrected bundle size - API.md: complete rewrite documenting actual RPC methods (70+) and REST endpoints (~60) - ARCHITECTURE.md: fixed stale references (React Router → tab state machine, updated file tables, lodash/rxjs cleanup marked complete) - ELECTROBUN.md: fixed build targets, added collect-externals to pipeline, entitlements section - collect-externals-guide.md: updated to 9-step pipeline with DEV_BLOCKLIST and banned packages - README.md: removed keepkey-desktop references, documented direct USB architecture Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove unsigned/*.bin from .gitignore (unsigned builds should be tracked) - Add firmware.keepkey.solana-8acfd898.bin (523KB, Ed25519 support) - Add payload hash to firmware_hashes for analyzeFirmware() detection - Add unsigned_firmware section to manifest with full + payload hashes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ashboard Root cause: vault called GetPortfolioBalances (/portfolio) which only returns native balances. Pioneer SDK uses GetPortfolio (/charts/portfolio) which returns both balances AND tokens arrays. Switched to the correct endpoint. Dashboard changes: - No auto-fetch on mount — loads from SQLite cache only (saves API credits) - Small highlighted refresh button below chart with pulse animation when stale - Removed bulky stale-balance header banner - Token warning when refresh returns zero tokens - getCachedBalances now returns updatedAt timestamp for "last updated" display Also includes: SDK updates, EIP-712 decoder, signing approval improvements, SendForm enhancements, REST API refinements, API audit log improvements. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…rove dashboard cache display - hdwallet: fix stale version pins pulling bnb-javascript-sdk-nobroadcast (~27MB) from npm registry; regenerate yarn.lock; add Solana signMessage protobuf shims + wallet method - collect-externals: add bnb-javascript-sdk-nobroadcast to DEV_BLOCKLIST - Dashboard: color-coded cache age (green <1h, yellow <24h, red >24h) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix baseUrl: BitHighlander/keepkey-vault-v11 → keepkey/keepkey-vault (root cause of "Update check failed, will retry") - Warning/error notifications now render as small bottom-right toast instead of full-width top banner - Auto-dismiss after 20 seconds - Actionable phases (available, downloading, ready) keep full top banner Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Use titleBarStyle: "hidden" to remove native titlebar that caused ~150px blank gap between chrome and WebView content - TopNav now serves as draggable window handle with traffic light padding - Add global error handlers (uncaughtException/unhandledRejection) in Bun - Add frontend unhandledrejection handler to prevent silent failures - Cap RPC WebSocket reconnection at 50 attempts (was infinite) - Debounce Updater.onStatusChange to prevent RPC spam on errors - Fix misleading "will retry" text in update error toast - Fix hdwallet transport ArrayBuffer casts for strict TS Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…window - titleBarStyle: "hidden" eliminates blank gap (hiddenInset broken in Electrobun) - Custom close/minimize/maximize dots in TopNav right side - Window control RPC handlers (windowClose/Minimize/Maximize) - Electrobun-compatible inline style drag regions (app-region: drag) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Reorder traffic lights: green → yellow → red (close/X rightmost) - TrafficLights rendered on ALL phases (splash, claimed, setup, ready) - className="electrobun-webkit-app-region-drag" for reliable window dragging - Bump version to 1.0.3 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
REMOVE_PREBUILD_PREFIXES was hardcoded to strip linux/win32/android, which is correct for macOS builds but strips Windows native modules (node-hid, usb, keccak, secp256k1) when building on Windows or Linux. Make the prefixes dynamic based on process.platform so each platform keeps its own prebuilds and only strips the others. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Build infrastructure: - Add build-windows-production.ps1 (EV code signing, Inno Setup installer) - Add installer.iss with WebView2 bootstrapper for Win10 support - Add wrapper-launcher.zig for branded EXE with embedded icon - Add dev-hmr-windows.ps1 for Windows HMR development - Embed KeepKey icon into wrapper + launcher via rcedit (skip bun.exe) Window icon fix: - Call setWindowIcon FFI on Windows via libNativeWrapper.dll - Electrobun doesn't invoke this on Windows, causing Bun logo in taskbar Engine reliability fixes (affect all platforms): - Register USB attach/detach listeners BEFORE manifest fetch to prevent lost device events during network calls - Add 10s AbortSignal timeout to firmware manifest fetch - Use initialize() instead of getFeatures() for bootloader-mode compat - Add bootloader hash-to-version lookup to prevent update loop when blVersion is missing but hash proves firmware is current - Strip 256-byte KPKY header before hashing firmware binary for manifest integrity verification Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- collect-externals.ts: Resolve file: linked @keepkey/* packages to their actual source directories. Bun leaves empty stubs in node_modules for file: deps, causing 0 transitive deps to be collected (79 → 238 packages now properly found). - index.ts: Replace Electrobun's setWindowIcon (no-op on Windows) with direct Win32 API calls via bun:ffi — LoadImageW + SendMessageW WM_SETICON on the HWND from mainWindow.ptr. - build-windows-production.ps1: Copy real ICO over renamed-PNG app.ico so LoadImageW can load it at runtime. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Show update banner on splash, setup, claimed, and ready phases - Remove duplicate inline UpdateBanner from ready phase - Use translation key instead of raw Electrobun build hashes - Bump version to 1.0.4 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The windowControls overlay (z-index 1001) spanned full width with electrobun-webkit-app-region-drag, sitting on top of TopNav (z-index 1000) and blocking all clicks on tabs, settings, and other interactive elements. Electrobun's drag detection has no "no-drag" exclusion for buttons, so every mousedown inside the drag class triggered startWindowMove, which on Windows uses aggressive raw input tracking that swallows click events. Fixes: - Remove full-width drag overlay from windowControls (only traffic lights) - Add onMouseDown stopPropagation on TopNav interactive elements to prevent Electrobun's document-level drag handler from intercepting clicks - Bump version to 1.0.5 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan
🤖 Generated with Claude Code