Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
6890740
chore: update version numbers to v2.2.3 across all components
BitHighlander Jul 22, 2025
3199a36
begin wizard
BitHighlander Aug 2, 2025
4db4079
UX setup wizard
BitHighlander Aug 2, 2025
d52ffa1
UX setup wizard
BitHighlander Aug 2, 2025
c21d608
UX setup wizard
BitHighlander Aug 2, 2025
f49b09d
UX setup wizard
BitHighlander Aug 2, 2025
78a0732
UX setup wizard
BitHighlander Aug 2, 2025
84037c8
UX setup wizard
BitHighlander Aug 3, 2025
060c409
UX setup wizard
BitHighlander Aug 3, 2025
e79366d
UX setup wizard
BitHighlander Aug 3, 2025
2fd50ad
UX setup wizard, pin/recovery
BitHighlander Aug 3, 2025
fc6c1dc
UX setup wizard, final
BitHighlander Aug 3, 2025
a5e635e
Looking good
BitHighlander Aug 3, 2025
b7e926a
Looking good
BitHighlander Aug 3, 2025
4739766
Add Windows PowerShell build scripts (.ps1) for vault and desktop app…
Aug 3, 2025
eb2706b
Fix PowerShell build script: correct tauri commands
Aug 3, 2025
a540b0a
Merge remote-tracking branch 'upstream/release-1.2.4' into release-2.2.4
Aug 3, 2025
3cf8536
Fix Windows HID timeout issue for FirmwareErase during bootloader upd…
Aug 3, 2025
a142764
Implement comprehensive retry logic for device communication timeouts
Aug 3, 2025
dbe85da
Configure GitHub Actions to build release-* branches
Aug 3, 2025
ed69473
Adopt superior upstream workflows with release-* branch support
Aug 3, 2025
ce29421
Fix TypeScript errors in SetupWizard and WalletCreation components
Aug 3, 2025
0ed9660
Fix ARM64 Linux cross-compilation in GitHub Actions
Aug 3, 2025
180890f
Update version numbers to 2.2.4 to match release branch
Aug 3, 2025
dcdb4db
Remove i686 Linux target from Tauri build to fix cross-compilation
Aug 3, 2025
c8d3182
clean up tweeks
BitHighlander Aug 3, 2025
9050ab5
fix segwit inputs
BitHighlander Aug 3, 2025
0e29b79
USB optimized works
BitHighlander Aug 3, 2025
ef84d60
proxy work
BitHighlander Aug 4, 2025
ab1a6de
disable browser
BitHighlander Aug 4, 2025
cc2b39e
Release v2.2.5: Support button fix, backend restart, browser improvem…
BitHighlander Aug 4, 2025
89f72d1
fix: GitHub workflow syntax error in needs expression
BitHighlander Aug 4, 2025
acab328
fix: enforce firmware and bootloader verification in OOB setup
BitHighlander Aug 4, 2025
362e769
Merge branch 'release-2.2.5' into develop
BitHighlander Aug 4, 2025
e815db6
debug onboarding
BitHighlander Aug 4, 2025
8f0e6df
debug onboarding
BitHighlander Aug 4, 2025
936e576
debug onboarding
BitHighlander Aug 4, 2025
004cbd5
debug onboarding
BitHighlander Aug 4, 2025
751f10c
debug onboard
BitHighlander Aug 4, 2025
72ad6da
debug onboard
BitHighlander Aug 4, 2025
80bb95d
chore: release v2.2.6
BitHighlander Aug 4, 2025
5f79473
fix: prevent duplicate workflow runs on release branches
BitHighlander Aug 4, 2025
81a7f44
fix: resolve TypeScript build errors for v2.2.6 release
BitHighlander Aug 4, 2025
680c189
fix(release-2.2.6): simplify CI and fix device update race conditions
BitHighlander Aug 4, 2025
5ca723e
fix: remove all kkcli builds from build.yml workflow
BitHighlander Aug 4, 2025
3c6d3b8
fix: properly rewrite build.yml without kkcli builds
BitHighlander Aug 4, 2025
c822fec
chore: release v2.2.7 with CI/CD signing
BitHighlander Aug 4, 2025
87fb486
fix: properly import Apple certificate in GitHub Actions
BitHighlander Aug 4, 2025
529a8f6
fix: workflow syntax error - remove secrets check from if condition
BitHighlander Aug 4, 2025
2e17405
fix: improve certificate import with better error handling
BitHighlander Aug 4, 2025
65d906a
fix: handle newlines in base64 certificate
BitHighlander Aug 4, 2025
c42bc3f
ci: trigger build to test certificate signing
BitHighlander Aug 4, 2025
e057b23
fix: improve certificate password handling
BitHighlander Aug 4, 2025
6514103
debug: add password format verification
BitHighlander Aug 4, 2025
c73b78b
debug: test with hardcoded password and verify certificate MD5
BitHighlander Aug 4, 2025
9edabef
fix: use macOS md5 command and add debug tests
BitHighlander Aug 4, 2025
81f5726
fix: test different certificate import methods in CI
BitHighlander Aug 4, 2025
3712259
fix: remove hardcoded passwords from workflows - certificate mismatch…
BitHighlander Aug 4, 2025
cce3598
fix: add certificate size check - trigger CI with new certificate
BitHighlander Aug 4, 2025
86e9658
feat: switch to NSIS installer and add Sectigo signing scripts
Aug 4, 2025
f5a91e3
feat: complete NSIS workflow with local signing setup
Aug 4, 2025
01a59b9
feat: add dual repo support for testing and production
Aug 4, 2025
0714f6e
chore: bump version to 2.2.8
Aug 4, 2025
561b545
feat: v2.2.8 release with robust workflow fixes
Aug 4, 2025
9376bc6
feat: v2.2.8 release with robust workflow fixes
Aug 4, 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
549 changes: 193 additions & 356 deletions .github/workflows/build.yml

Large diffs are not rendered by default.

313 changes: 147 additions & 166 deletions .github/workflows/release.yml

Large diffs are not rendered by default.

99 changes: 98 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,23 @@
# make check-deps - Verify keepkey-rust dependency linking
# make test-keepkey-rust - Run keepkey-rust tests
#
# Release workflow targets:
# make release-branch VERSION=2.2.6 - Create release-2.2.6 branch and update version
# make release-patch-branch - Auto-increment patch version and create branch
# make release-minor-branch - Auto-increment minor version and create branch
# make release-major-branch - Auto-increment major version and create branch
#
# Version update only:
# make release VERSION=2.2.6 - Update version without creating branch
# make release-patch - Bump patch version (X.Y.Z+1)
# make release-minor - Bump minor version (X.Y+1.0)
# make release-major - Bump major version (X+1.0.0)
#
# Dependencies:
# - Rust/Cargo (for keepkey-rust and Tauri backend)
# - Bun (for frontend dependencies)
# - jq (for dependency verification)
.PHONY: all firmware kkcli rest vault-ui vault test test-rest clean keepkey-rust vault-build rebuild check-deps help
.PHONY: all firmware kkcli rest vault-ui vault test test-rest clean keepkey-rust vault-build rebuild check-deps help release release-patch release-minor release-major release-branch release-patch-branch release-minor-branch release-major-branch

# Display help information
help:
Expand All @@ -30,6 +42,16 @@ help:
@echo " check-deps - Verify keepkey-rust dependency linking"
@echo " test-keepkey-rust - Run keepkey-rust tests"
@echo ""
@echo "Release targets:"
@echo " release - Bump version across all projects (requires VERSION=x.y.z)"
@echo " release-branch - Create release branch and bump version (requires VERSION=x.y.z)"
@echo " release-patch - Bump patch version (X.Y.Z+1)"
@echo " release-minor - Bump minor version (X.Y+1.0)"
@echo " release-major - Bump major version (X+1.0.0)"
@echo " release-patch-branch - Create release branch with patch version bump"
@echo " release-minor-branch - Create release branch with minor version bump"
@echo " release-major-branch - Create release branch with major version bump"
@echo ""
@echo "Dependencies:"
@echo " - Rust/Cargo (for keepkey-rust and Tauri backend)"
@echo " - Bun (for frontend dependencies)"
Expand Down Expand Up @@ -73,6 +95,7 @@ vault: keepkey-rust check-deps

# Build vault for production
vault-build: keepkey-rust check-deps
lsof -ti:1420 | xargs kill -9 \
@echo "🔧 Building vault-v2 for production with latest keepkey-rust..."
cd projects/vault-v2 && bun i && tauri build

Expand All @@ -93,3 +116,77 @@ rebuild: clean all
vault-dev:
@echo "🚀 Quick vault-v2 development build..."
cd projects/vault-v2 && bun i && tauri dev

# Release targets for version management
release:
@chmod +x scripts/release.sh
@./scripts/release.sh $(VERSION)

# Create release branch and update version
release-branch:
@if [ -z "$(VERSION)" ]; then \
echo "Error: VERSION is required. Usage: make release-branch VERSION=2.2.6"; \
exit 1; \
fi
@echo "🔀 Creating release branch for version $(VERSION)..."
@git checkout -b release-$(VERSION) 2>/dev/null || (echo "⚠️ Branch release-$(VERSION) already exists, switching to it..." && git checkout release-$(VERSION))
@chmod +x scripts/release.sh
@./scripts/release.sh $(VERSION)
@echo "✅ Release branch release-$(VERSION) created and version updated"
@echo ""
@echo "Next steps:"
@echo " 1. Review changes: git diff"
@echo " 2. Build and test: make vault-build"
@echo " 3. Commit: git add . && git commit -m 'chore: release v$(VERSION)'"
@echo " 4. Push branch: git push -u origin release-$(VERSION)"
@echo " 5. Create PR to master branch"
@echo " 6. After merge, tag: git tag -a v$(VERSION) -m 'Release v$(VERSION)' && git push --tags"

# Quick release helpers
release-patch:
@CURRENT=$$(grep '"version"' projects/vault-v2/package.json | head -1 | cut -d'"' -f4); \
IFS='.' read -r major minor patch <<< "$$CURRENT"; \
NEW_PATCH=$$((patch + 1)); \
NEW_VERSION="$$major.$$minor.$$NEW_PATCH"; \
chmod +x scripts/release.sh; \
./scripts/release.sh $$NEW_VERSION

release-minor:
@CURRENT=$$(grep '"version"' projects/vault-v2/package.json | head -1 | cut -d'"' -f4); \
IFS='.' read -r major minor patch <<< "$$CURRENT"; \
NEW_MINOR=$$((minor + 1)); \
NEW_VERSION="$$major.$$NEW_MINOR.0"; \
chmod +x scripts/release.sh; \
./scripts/release.sh $$NEW_VERSION

release-major:
@CURRENT=$$(grep '"version"' projects/vault-v2/package.json | head -1 | cut -d'"' -f4); \
IFS='.' read -r major minor patch <<< "$$CURRENT"; \
NEW_MAJOR=$$((major + 1)); \
NEW_VERSION="$$NEW_MAJOR.0.0"; \
chmod +x scripts/release.sh; \
./scripts/release.sh $$NEW_VERSION

# Create patch release branch (convenience wrapper)
release-patch-branch:
@CURRENT=$$(grep '"version"' projects/vault-v2/package.json | head -1 | cut -d'"' -f4); \
IFS='.' read -r major minor patch <<< "$$CURRENT"; \
NEW_PATCH=$$((patch + 1)); \
NEW_VERSION="$$major.$$minor.$$NEW_PATCH"; \
$(MAKE) release-branch VERSION=$$NEW_VERSION

# Create minor release branch (convenience wrapper)
release-minor-branch:
@CURRENT=$$(grep '"version"' projects/vault-v2/package.json | head -1 | cut -d'"' -f4); \
IFS='.' read -r major minor patch <<< "$$CURRENT"; \
NEW_MINOR=$$((minor + 1)); \
NEW_VERSION="$$major.$$NEW_MINOR.0"; \
$(MAKE) release-branch VERSION=$$NEW_VERSION

# Create major release branch (convenience wrapper)
release-major-branch:
@CURRENT=$$(grep '"version"' projects/vault-v2/package.json | head -1 | cut -d'"' -f4); \
IFS='.' read -r major minor patch <<< "$$CURRENT"; \
NEW_MAJOR=$$((major + 1)); \
NEW_VERSION="$$NEW_MAJOR.0.0"; \
$(MAKE) release-branch VERSION=$$NEW_VERSION
77 changes: 76 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,89 @@ make vault
- **Unified UI**: One Vite UI bundle for both web and desktop.
- **Easy builds**: One command to build everything.

## Release Process

### Creating a Release

The project uses a Makefile-based release workflow for versioning and branch management:

#### Quick Release Commands

```bash
# Create release branch with specific version
make release-branch VERSION=2.2.7

# Auto-increment versions and create branch
make release-patch-branch # Bumps X.Y.Z -> X.Y.(Z+1)
make release-minor-branch # Bumps X.Y.Z -> X.(Y+1).0
make release-major-branch # Bumps X.Y.Z -> (X+1).0.0
```

#### Manual Release Steps

1. **Create release branch and update version:**
```bash
make release-branch VERSION=2.2.7
```

2. **Build and test locally with signing:**
```bash
cd projects/vault-v2
./build-signed.sh
```

3. **Commit changes:**
```bash
git add .
git commit -m "chore: release v2.2.7"
```

4. **Push branch:**
```bash
git push -u origin release-2.2.7
```

5. **Create Pull Request to master**

6. **After merge, create and push tag:**
```bash
git tag -a v2.2.7 -m "Release v2.2.7"
git push --tags
```

### CI/CD Signing

The GitHub Actions workflow automatically signs and notarizes macOS builds when the following repository secrets are configured:

- `APPLE_ID` - Apple developer account email
- `APPLE_ID_PASSWORD` - App-specific password for notarization
- `APPLE_TEAM_ID` - Apple developer team ID (e.g., DR57X8Z394)
- `APPLE_CERTIFICATE` - Base64-encoded Developer ID certificate
- `CERT_PW` - Certificate password

### Local Signing (macOS)

For local signed builds:

```bash
cd projects/vault-v2

# Build and sign
./build-signed.sh

# Notarize (requires Apple credentials)
APPLE_ID="your-email@example.com" \
APPLE_PASSWORD="app-specific-password" \
./notarize.sh
```

## Contributing

See [docs/contributing.md](docs/contributing.md).

## Architecture

See [docs/architecture.md](docs/architecture.md).
Bitcoin Only Stack



Expand Down
172 changes: 172 additions & 0 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
# Release Process

This document describes the release process for KeepKey Bitcoin-Only Vault.

## Quick Start

### Creating a New Release (e.g., 2.2.6)

```bash
# Method 1: Create release branch and update version in one command
make release-branch VERSION=2.2.6

# Method 2: Auto-increment version and create branch
make release-patch-branch # For patch release (2.2.5 -> 2.2.6)
make release-minor-branch # For minor release (2.2.5 -> 2.3.0)
make release-major-branch # For major release (2.2.5 -> 3.0.0)
```

## Release Workflow

### 1. Create Release Branch and Update Version

```bash
# Create release branch and update all version files
make release-branch VERSION=2.2.6
```

This command will:
- Create a new branch named `release-2.2.6`
- Update version in all relevant files:
- `VERSION`
- `projects/vault-v2/package.json`
- `projects/vault-v2/src-tauri/tauri.conf.json`
- `projects/vault-v2/src-tauri/Cargo.toml`
- `projects/keepkey-rust/Cargo.toml`
- `projects/vault-v2/VERSION`
- `projects/keepkey-rust/VERSION`
- Lock files (`package-lock.json`, `Cargo.lock`)

### 2. Review Changes

```bash
git diff
```

### 3. Build and Test

```bash
# Build the application
make vault-build

# Run tests
make test-keepkey-rust
```

### 4. Commit Changes

```bash
git add .
git commit -m "chore: release v2.2.6"
```

### 5. Push Release Branch

```bash
git push -u origin release-2.2.6
```

### 6. Create Pull Request

Create a PR from `release-2.2.6` to `master` branch on GitHub.

### 7. After PR Merge

Once the PR is merged to master:

```bash
# Checkout master and pull latest
git checkout master
git pull

# Create and push tag
git tag -a v2.2.6 -m "Release v2.2.6"
git push --tags
```

The tag will trigger the GitHub Actions release workflow to:
- Build applications for all platforms (Windows, macOS, Linux)
- Create a GitHub release with artifacts
- Upload built binaries

## Version Management

### Version Sources

The primary version source is `projects/vault-v2/package.json`. All other version files are synchronized from this source.

### Files Updated During Release

- `VERSION` - Root version file
- `projects/vault-v2/package.json` - Main application package
- `projects/vault-v2/src-tauri/tauri.conf.json` - Tauri configuration
- `projects/vault-v2/src-tauri/Cargo.toml` - Rust backend
- `projects/keepkey-rust/Cargo.toml` - KeepKey Rust library
- `projects/vault-v2/VERSION` - Project version file
- `projects/keepkey-rust/VERSION` - Library version file
- Lock files (`package-lock.json`, `Cargo.lock`)

### Makefile Targets

#### Release Branch Creation
- `make release-branch VERSION=x.y.z` - Create branch and set specific version
- `make release-patch-branch` - Auto-increment patch version and create branch
- `make release-minor-branch` - Auto-increment minor version and create branch
- `make release-major-branch` - Auto-increment major version and create branch

#### Version Update Only
- `make release VERSION=x.y.z` - Update version without creating branch
- `make release-patch` - Increment patch version (2.2.5 -> 2.2.6)
- `make release-minor` - Increment minor version (2.2.5 -> 2.3.0)
- `make release-major` - Increment major version (2.2.5 -> 3.0.0)

## GitHub Actions

The project includes automated workflows:

### Build Workflow (`.github/workflows/build.yml`)
**Triggered by:**
- Push to `main`, `master`, or `release-*` branches
- Pull requests to these branches
- Manual workflow dispatch

**Purpose:** CI/CD builds and testing for all platforms

### Release Workflow (`.github/workflows/release.yml`)
**Triggered by:**
- Tags starting with `v*` (e.g., `v2.2.6`)
- Manual workflow dispatch

**Purpose:** Creates official GitHub releases with artifacts for:
- Windows (MSI installer)
- macOS (DMG installer)
- Linux (AppImage, DEB packages)

## Best Practices

1. **Always create a release branch** for version updates
2. **Test thoroughly** before pushing the release branch
3. **Use semantic versioning**:
- Patch (x.y.Z): Bug fixes, minor updates
- Minor (x.Y.z): New features, backward compatible
- Major (X.y.z): Breaking changes
4. **Document changes** in commit messages and PR descriptions
5. **Tag only after** PR is merged to master

## Troubleshooting

### Version Mismatch
If version files get out of sync:
```bash
make release VERSION=<correct-version>
```

### Failed GitHub Actions
Check the Actions tab in GitHub for build logs and errors.

### Local Build Issues
```bash
# Clean and rebuild
make clean
make rebuild
```
1 change: 1 addition & 0 deletions VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2.2.8
Loading
Loading