Add merge handoff document with copy-pasteable commands
Complete handoff guide for merging feature/api-keys-refactor: - Pre-merge verification steps - Exact merge commands (copy & paste ready) - Post-merge testing checklist - Links to all documentation - Rollback procedures - Release notes template All systems verified and ready for merge.
This commit is contained in:
1 parent
34ab753524
commit
59e7562af0
1 file changed
+427
@@ -0,0 +1,427 @@
|
|||||||
|
# 🚀 HANDOFF: API Keys Refactor - Ready to Merge
|
||||||
|
|
||||||
|
**Date:** January 17, 2026
|
||||||
|
**Branch:** `feature/api-keys-refactor`
|
||||||
|
**Status:** ✅ Ready for merge to `main`
|
||||||
|
**Working Tree:** Clean (verified)
|
||||||
|
**Commits:** 13 commits ahead of main
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Pre-Merge Verification
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Verify current location
|
||||||
|
pwd
|
||||||
|
# Should be: /home/blitzkriegfc/Personal/qbz/qbz-worktrees/feature-api-keys-refactor
|
||||||
|
|
||||||
|
# Verify branch
|
||||||
|
git branch
|
||||||
|
# Should show: * feature/api-keys-refactor
|
||||||
|
|
||||||
|
# Verify clean state
|
||||||
|
git status
|
||||||
|
# Should show: nothing to commit, working tree clean
|
||||||
|
|
||||||
|
# Verify commits ready
|
||||||
|
git log --oneline origin/main..HEAD
|
||||||
|
# Should show 13 commits
|
||||||
|
```
|
||||||
|
|
||||||
|
**All checks passed:** ✅
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 Commits to Merge (13 total)
|
||||||
|
|
||||||
|
```
|
||||||
|
34ab753 Add post-merge cleanup instructions for API Keys UI
|
||||||
|
7d07f9a Add merge preparation documentation
|
||||||
|
81b65bd Add comprehensive CHANGELOG for API keys refactor
|
||||||
|
80ba2bf Fix Discogs artwork selection UI issues
|
||||||
|
732a489 Improve Discogs artwork selection with multi-release images
|
||||||
|
279d433 Add catalog number support for precise Discogs searches
|
||||||
|
2a5c181 Fix Discogs artwork selection to show unique images
|
||||||
|
dab5c28 Add Discogs artwork selection UI in album edit modal
|
||||||
|
dd70f0a Refactor Discogs integration to use Cloudflare Workers proxy
|
||||||
|
9099123 Refactor Spotify and Tidal playlist import to use proxy
|
||||||
|
179a6b7 Refactor Last.fm integration to use Cloudflare Workers proxy
|
||||||
|
3a49e3f Remove embedded Last.fm API secret for Flathub compliance
|
||||||
|
b7048fa feat: register qbz:// URI scheme for OAuth callbacks
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Merge Commands (Copy & Paste)
|
||||||
|
|
||||||
|
### Step 1: Ensure you're in the main worktree
|
||||||
|
```bash
|
||||||
|
cd /home/blitzkriegfc/Personal/qbz/qbz-nix
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 2: Ensure main is up to date
|
||||||
|
```bash
|
||||||
|
git checkout main
|
||||||
|
git pull origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 3: Merge feature branch (no fast-forward for clean history)
|
||||||
|
```bash
|
||||||
|
git merge --no-ff feature/api-keys-refactor -m "Merge feature/api-keys-refactor: Remove embedded API keys and add Discogs artwork selector
|
||||||
|
|
||||||
|
This major refactor achieves Flathub compliance by removing all embedded
|
||||||
|
API credentials from the binary. All API requests now go through a
|
||||||
|
Cloudflare Workers proxy for secure credential management.
|
||||||
|
|
||||||
|
New Features:
|
||||||
|
- Discogs artwork selection UI with multi-release support
|
||||||
|
- Catalog number support for audiophile libraries
|
||||||
|
- Carousel navigation for artwork options
|
||||||
|
- Release metadata display (title, year)
|
||||||
|
|
||||||
|
Technical Changes:
|
||||||
|
- Cloudflare Workers proxy for Last.fm, Spotify, Tidal, Discogs
|
||||||
|
- Database migration adds catalog_number column
|
||||||
|
- URI scheme registration (qbz://) for OAuth flows
|
||||||
|
- Rate limiting and User-Agent validation server-side
|
||||||
|
|
||||||
|
See CHANGELOG-api-keys-refactor.md for complete details.
|
||||||
|
See POST-MERGE-CLEANUP.md for removing legacy API Keys UI."
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 4: Resolve conflicts (if any)
|
||||||
|
```bash
|
||||||
|
# If conflicts occur (likely in SettingsView.svelte due to audio config changes)
|
||||||
|
git status
|
||||||
|
# Check which files have conflicts
|
||||||
|
|
||||||
|
# For each conflicted file:
|
||||||
|
# 1. Open in editor
|
||||||
|
# 2. Look for <<<<<<< HEAD markers
|
||||||
|
# 3. Keep BOTH changes (main's audio config + feature's other changes)
|
||||||
|
# 4. Remove conflict markers
|
||||||
|
# 5. git add <file>
|
||||||
|
|
||||||
|
# After resolving all conflicts:
|
||||||
|
git merge --continue
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 5: Push to origin
|
||||||
|
```bash
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 6: Tag the release
|
||||||
|
```bash
|
||||||
|
git tag -a v1.2.0 -m "API Keys Refactor - Flathub Compliance
|
||||||
|
|
||||||
|
Major changes:
|
||||||
|
- Removed all embedded API credentials
|
||||||
|
- Added Cloudflare Workers proxy for credential management
|
||||||
|
- Added Discogs artwork selection UI
|
||||||
|
- Added catalog number support
|
||||||
|
- Database migration for catalog_number column
|
||||||
|
- Flathub submission now possible"
|
||||||
|
|
||||||
|
git push origin v1.2.0
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 7: Cleanup (optional - can keep branch for reference)
|
||||||
|
```bash
|
||||||
|
# Delete local feature branch (optional)
|
||||||
|
git branch -d feature/api-keys-refactor
|
||||||
|
|
||||||
|
# Delete remote feature branch (optional)
|
||||||
|
git push origin --delete feature/api-keys-refactor
|
||||||
|
|
||||||
|
# Remove worktree (optional)
|
||||||
|
git worktree remove /home/blitzkriegfc/Personal/qbz/qbz-worktrees/feature-api-keys-refactor
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧪 Post-Merge Testing Checklist
|
||||||
|
|
||||||
|
### Critical Tests (Must Pass)
|
||||||
|
- [ ] App launches without errors
|
||||||
|
- [ ] Database migration runs (check logs for catalog_number column)
|
||||||
|
- [ ] Last.fm login works
|
||||||
|
- [ ] Last.fm scrobbling works
|
||||||
|
- [ ] Spotify playlist import works
|
||||||
|
- [ ] Tidal playlist import works
|
||||||
|
- [ ] Discogs artwork search works
|
||||||
|
- [ ] Discogs carousel navigation works (4+ images)
|
||||||
|
- [ ] Artwork save works (select image → Save)
|
||||||
|
- [ ] Settings view intact (audio config + other sections)
|
||||||
|
|
||||||
|
### Regression Tests (Should Still Work)
|
||||||
|
- [ ] Audio playback
|
||||||
|
- [ ] Local library scanning
|
||||||
|
- [ ] Album/Artist browsing
|
||||||
|
- [ ] Search functionality
|
||||||
|
- [ ] Playlist management
|
||||||
|
- [ ] Downloads
|
||||||
|
|
||||||
|
### Open browser DevTools and check console for:
|
||||||
|
- [ ] No errors on startup
|
||||||
|
- [ ] No errors when fetching Discogs artwork
|
||||||
|
- [ ] Logs show: "Downloading Discogs artwork from: ..."
|
||||||
|
- [ ] Logs show: "Downloaded to: ..."
|
||||||
|
- [ ] Logs show: "Set album artwork successfully"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 What Changed - Quick Summary
|
||||||
|
|
||||||
|
### 🔐 Security & Compliance
|
||||||
|
- ❌ Removed Last.fm API secret from binary
|
||||||
|
- ❌ Removed Spotify credentials from binary
|
||||||
|
- ❌ Removed Tidal credentials from binary
|
||||||
|
- ❌ Removed Discogs credentials from binary
|
||||||
|
- ✅ Cloudflare Workers proxy handles all credentials
|
||||||
|
- ✅ Flathub submission now possible
|
||||||
|
|
||||||
|
### ✨ New Features
|
||||||
|
1. **Discogs Artwork Selector**
|
||||||
|
- Visual UI in album edit modal
|
||||||
|
- Multi-release support (4 images from top 2 releases)
|
||||||
|
- Carousel navigation (4 per page)
|
||||||
|
- Shows release title and year
|
||||||
|
- Smart search (uses catalog number if available)
|
||||||
|
|
||||||
|
2. **Catalog Number Support**
|
||||||
|
- Reads from audio file tags (CATALOGNUMBER field)
|
||||||
|
- Stored in database
|
||||||
|
- Displayed in UI ("Cat# XXXXX")
|
||||||
|
- Prioritized in Discogs searches
|
||||||
|
|
||||||
|
### 🔧 Technical
|
||||||
|
- Cloudflare Workers proxy deployed: `https://qbz-api-proxy.blitzkriegfc.workers.dev`
|
||||||
|
- Database migration adds `catalog_number` column (automatic, non-destructive)
|
||||||
|
- URI scheme `qbz://` registered for OAuth
|
||||||
|
- ~715 lines of legacy code documented for removal (POST-MERGE-CLEANUP.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ Known Issues
|
||||||
|
|
||||||
|
### 1. Discogs 429 Rate Limits
|
||||||
|
- **Severity:** Low
|
||||||
|
- **Frequency:** Occasional (when fetching detailed release info)
|
||||||
|
- **Impact:** User must retry after a few seconds
|
||||||
|
- **Status:** Acceptable (transient error)
|
||||||
|
- **User Experience:** Works on retry
|
||||||
|
|
||||||
|
### 2. API Keys UI Still Visible
|
||||||
|
- **Why:** Legacy code, avoids conflicts with audio config changes
|
||||||
|
- **Status:** Documented for removal
|
||||||
|
- **Action:** Follow `POST-MERGE-CLEANUP.md` after merge
|
||||||
|
- **Note:** UI accepts input but credentials are ignored (all goes through proxy)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📄 Important Documentation Files
|
||||||
|
|
||||||
|
### 1. CHANGELOG-api-keys-refactor.md
|
||||||
|
**Location:** `/home/blitzkriegfc/Personal/qbz/qbz-worktrees/feature-api-keys-refactor/CHANGELOG-api-keys-refactor.md`
|
||||||
|
|
||||||
|
**Contains:**
|
||||||
|
- Complete list of all changes
|
||||||
|
- Security improvements details
|
||||||
|
- New features with user benefits
|
||||||
|
- Technical architecture changes
|
||||||
|
- Database migrations
|
||||||
|
- Testing notes
|
||||||
|
- Breaking changes (none for users)
|
||||||
|
- Deployment requirements
|
||||||
|
|
||||||
|
**Read this:** Before announcing release to users
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. MERGE-PREP.md
|
||||||
|
**Location:** `/home/blitzkriegfc/Personal/qbz/qbz-worktrees/feature-api-keys-refactor/MERGE-PREP.md`
|
||||||
|
|
||||||
|
**Contains:**
|
||||||
|
- Pre-merge checklist (all ✅)
|
||||||
|
- Merge strategy recommendations
|
||||||
|
- Post-merge testing plan
|
||||||
|
- Rollback procedures
|
||||||
|
- Release notes template
|
||||||
|
- Success criteria
|
||||||
|
|
||||||
|
**Read this:** Before doing the merge (you're reading the HANDOFF now, so this is optional)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. POST-MERGE-CLEANUP.md
|
||||||
|
**Location:** `/home/blitzkriegfc/Personal/qbz/qbz-worktrees/feature-api-keys-refactor/POST-MERGE-CLEANUP.md`
|
||||||
|
|
||||||
|
**Contains:**
|
||||||
|
- Step-by-step instructions to remove API Keys UI
|
||||||
|
- 11 files to modify with line numbers
|
||||||
|
- Before/after code examples
|
||||||
|
- Verification steps
|
||||||
|
- Git commit message template
|
||||||
|
- Estimated 30-45 minutes to complete
|
||||||
|
|
||||||
|
**Read this:** After merge, when ready to clean up legacy code
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌐 Cloudflare Workers Proxy
|
||||||
|
|
||||||
|
**Status:** ✅ Deployed and operational
|
||||||
|
**URL:** `https://qbz-api-proxy.blitzkriegfc.workers.dev`
|
||||||
|
**Repository:** `/home/blitzkriegfc/Personal/qbz/qbz-api-proxy`
|
||||||
|
|
||||||
|
**Endpoints Active:**
|
||||||
|
- Last.fm: `/lastfm/*`
|
||||||
|
- Spotify: `/spotify/token`, `/spotify/refresh`
|
||||||
|
- Tidal: `/tidal/token`, `/tidal/refresh`
|
||||||
|
- Discogs: `/discogs/search`, `/discogs/release/{id}`, `/discogs/image`
|
||||||
|
|
||||||
|
**Test Proxy:**
|
||||||
|
```bash
|
||||||
|
curl https://qbz-api-proxy.blitzkriegfc.workers.dev
|
||||||
|
# Should return: {"service":"QBZ API Proxy","version":"1.0.0",...}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎉 Release Notes Template
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## QBZ v1.2.0 - API Keys Refactor & Discogs Enhancement
|
||||||
|
|
||||||
|
### 🔐 Security & Flathub Compliance
|
||||||
|
We've completely removed all embedded API credentials from the application.
|
||||||
|
All API requests now go through a secure Cloudflare Workers proxy, making
|
||||||
|
QBZ ready for Flathub submission and improving overall security.
|
||||||
|
|
||||||
|
### ✨ New Features
|
||||||
|
|
||||||
|
**Discogs Artwork Selector**
|
||||||
|
Browse and select album artwork directly from Discogs! The new visual selector
|
||||||
|
shows multiple release variants with metadata, making it easy to find the
|
||||||
|
perfect cover for your albums.
|
||||||
|
|
||||||
|
- 🎨 Visual artwork browser in album edit modal
|
||||||
|
- 🖼️ See images from different release variants
|
||||||
|
- 📄 Navigate with carousel (4 images per page)
|
||||||
|
- 📋 View release titles and years
|
||||||
|
- 🏷️ Smart search using catalog numbers
|
||||||
|
|
||||||
|
**Catalog Number Support**
|
||||||
|
For audiophile and collector libraries with professional tagging:
|
||||||
|
- Automatically reads catalog numbers from audio file tags
|
||||||
|
- Displays in album details (e.g., "Cat# MFSL 1-395")
|
||||||
|
- Prioritized in Discogs searches for precise results
|
||||||
|
|
||||||
|
### 🔧 Technical Improvements
|
||||||
|
- Cloudflare Workers proxy for all external APIs
|
||||||
|
- Database migration adds catalog_number support
|
||||||
|
- Improved error handling and logging
|
||||||
|
- Rate limiting and validation server-side
|
||||||
|
|
||||||
|
### 🐛 Known Issues
|
||||||
|
- Occasional 429 rate limit errors from Discogs (retry after a few seconds)
|
||||||
|
|
||||||
|
### 🙏 Thanks
|
||||||
|
Special thanks to all users who requested catalog number support!
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Rollback Plan (If Needed)
|
||||||
|
|
||||||
|
If critical issues found after merge:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Find the merge commit
|
||||||
|
git log --oneline -10
|
||||||
|
|
||||||
|
# Revert the merge (safest option)
|
||||||
|
git revert -m 1 <merge-commit-hash>
|
||||||
|
git push origin main
|
||||||
|
|
||||||
|
# OR hard reset (use with EXTREME caution)
|
||||||
|
git reset --hard <commit-before-merge>
|
||||||
|
git push --force origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📞 Support Checklist
|
||||||
|
|
||||||
|
If users report issues after release:
|
||||||
|
|
||||||
|
1. **Proxy Down**
|
||||||
|
- Check: https://qbz-api-proxy.blitzkriegfc.workers.dev
|
||||||
|
- Verify Cloudflare Workers dashboard
|
||||||
|
- Check environment variables are set
|
||||||
|
|
||||||
|
2. **Database Migration Failed**
|
||||||
|
- Check app logs for migration errors
|
||||||
|
- May need manual `ALTER TABLE local_tracks ADD COLUMN catalog_number TEXT;`
|
||||||
|
|
||||||
|
3. **API Integration Broken**
|
||||||
|
- Check proxy is responding
|
||||||
|
- Verify User-Agent is "QBZ/1.0.0"
|
||||||
|
- Check rate limits not exceeded
|
||||||
|
|
||||||
|
4. **UI Issues**
|
||||||
|
- Clear browser cache
|
||||||
|
- Check browser console for errors
|
||||||
|
- Verify Settings changes don't conflict with audio config
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Final Verification Before Merge
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# You are here
|
||||||
|
pwd
|
||||||
|
# → /home/blitzkriegfc/Personal/qbz/qbz-worktrees/feature-api-keys-refactor
|
||||||
|
|
||||||
|
# Branch is clean
|
||||||
|
git status
|
||||||
|
# → nothing to commit, working tree clean ✅
|
||||||
|
|
||||||
|
# All commits ready
|
||||||
|
git log --oneline origin/main..HEAD | wc -l
|
||||||
|
# → 13 ✅
|
||||||
|
|
||||||
|
# Proxy is up
|
||||||
|
curl -s https://qbz-api-proxy.blitzkriegfc.workers.dev | grep service
|
||||||
|
# → "service":"QBZ API Proxy" ✅
|
||||||
|
|
||||||
|
# Ready to merge!
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Next Steps After Merge
|
||||||
|
|
||||||
|
1. ✅ **Immediate:** Test all integrations (checklist above)
|
||||||
|
2. 📢 **Within 24h:** Announce release with release notes
|
||||||
|
3. 🧹 **When convenient:** Follow `POST-MERGE-CLEANUP.md` to remove API Keys UI
|
||||||
|
4. 🚀 **Future:** Submit to Flathub!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Notes
|
||||||
|
|
||||||
|
- Feature branch can be kept for reference or deleted
|
||||||
|
- Worktree can remain or be removed
|
||||||
|
- CHANGELOG files will be in main after merge
|
||||||
|
- No user data affected by this merge
|
||||||
|
- All changes are backward compatible
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Prepared by:** Claude Sonnet 4.5
|
||||||
|
**Handoff Date:** January 17, 2026
|
||||||
|
**Status:** ✅ READY TO MERGE
|
||||||
|
|
||||||
|
🚀 **You're all set! Just run the merge commands above.**
|
||||||
Reference in new issue
Block a user