fix: upgrade command works without git connection for disconnected users
- Clone latest to .tmp/ directory instead of using git upstream - Users stay completely disconnected from original repo - Use .tmp/ instead of /tmp/ to hide from Obsidian - Add user choice when local modifications detected - Verify all files were addressed with checklist - Clean up temp directory after upgrade - Add .tmp/ to .gitignore
This commit is contained in:
+133
-15
@@ -22,16 +22,23 @@ Intelligently upgrades your claudesidian installation by fetching the latest rel
|
|||||||
|
|
||||||
### 1. **Version Check & Setup**
|
### 1. **Version Check & Setup**
|
||||||
- Get current version from package.json
|
- Get current version from package.json
|
||||||
- Fetch latest release from GitHub (heyitsnoah/claudesidian)
|
|
||||||
- Create timestamped backup in `.backup/upgrade-YYYY-MM-DD-HHMMSS/`
|
- Create timestamped backup in `.backup/upgrade-YYYY-MM-DD-HHMMSS/`
|
||||||
- Fetch upstream changes: `git fetch upstream --tags`
|
- Clone latest claudesidian to temp directory (doesn't affect user's repo):
|
||||||
|
```bash
|
||||||
|
# Get fresh copy in .tmp dir (hidden from Obsidian) - user's repo stays disconnected
|
||||||
|
git clone --depth=1 --branch=main https://github.com/heyitsnoah/claudesidian.git .tmp/claudesidian-upgrade
|
||||||
|
```
|
||||||
|
- Now we have latest version to compare against
|
||||||
|
|
||||||
### 2. **Create Upgrade Checklist**
|
### 2. **Create Upgrade Checklist**
|
||||||
- Get list of SYSTEM files that need checking (NOT user content):
|
- Compare system files between current directory and .tmp/claudesidian-upgrade/:
|
||||||
```bash
|
```bash
|
||||||
# Only check claudesidian system files, not user notes
|
# Find all system files that differ
|
||||||
git diff HEAD upstream/main --name-only | grep -E '^(\.claude/|\.scripts/|package\.json|CHANGELOG\.md|README\.md|\.gitignore)'
|
diff -qr . .tmp/claudesidian-upgrade/ --include="*.md" --include="*.sh" --include="*.json" |
|
||||||
|
grep -E '(\.claude/|\.scripts/|package\.json|CHANGELOG\.md|README\.md)' |
|
||||||
|
grep -v '(00_|01_|02_|03_|04_|05_|06_|\.obsidian|CLAUDE\.md)'
|
||||||
```
|
```
|
||||||
|
- Create checklist of files that need review
|
||||||
- Explicitly EXCLUDE:
|
- Explicitly EXCLUDE:
|
||||||
- User content folders (00_Inbox, 01_Projects, etc.)
|
- User content folders (00_Inbox, 01_Projects, etc.)
|
||||||
- User's CLAUDE.md (their personalized version)
|
- User's CLAUDE.md (their personalized version)
|
||||||
@@ -60,14 +67,33 @@ Intelligently upgrades your claudesidian installation by fetching the latest rel
|
|||||||
|
|
||||||
### 3. **File-by-File Review**
|
### 3. **File-by-File Review**
|
||||||
For EACH file in the checklist:
|
For EACH file in the checklist:
|
||||||
1. Show the diff: `git diff HEAD upstream/main -- [file]`
|
1. Read current checklist status from `.upgrade-checklist.md`
|
||||||
2. Determine update strategy:
|
2. Show the diff between local and .tmp/claudesidian-upgrade/ version:
|
||||||
- **Direct replace**: Commands, agents, scripts with no user changes
|
```bash
|
||||||
- **Skip**: User's CLAUDE.md, vault-config.json, .mcp.json
|
diff current/file .tmp/claudesidian-upgrade/file
|
||||||
- **Merge needed**: Files with both upstream and user changes
|
```
|
||||||
3. Apply the update
|
3. Determine update strategy:
|
||||||
4. Mark complete in checklist: `[x]`
|
- **No local changes**: Direct replace from upstream
|
||||||
5. Move to next file
|
- **Never update**: User's CLAUDE.md, vault-config.json, .mcp.json
|
||||||
|
- **Local changes detected**: Ask user:
|
||||||
|
```
|
||||||
|
File: .claude/commands/thinking-partner.md has local modifications
|
||||||
|
|
||||||
|
Options:
|
||||||
|
1. Keep your version (skip update)
|
||||||
|
2. Take upstream version (lose your changes)
|
||||||
|
3. View diff and decide
|
||||||
|
4. Try to merge both (AI-assisted)
|
||||||
|
|
||||||
|
Choice (1/2/3/4): _
|
||||||
|
```
|
||||||
|
4. Apply the chosen strategy
|
||||||
|
5. **CRITICAL: Update the checklist file immediately**:
|
||||||
|
```markdown
|
||||||
|
[ ] .claude/commands/init-bootstrap.md → becomes → [x] .claude/commands/init-bootstrap.md
|
||||||
|
```
|
||||||
|
6. Save `.upgrade-checklist.md` after EVERY file update
|
||||||
|
7. Move to next file
|
||||||
|
|
||||||
### 4. **Update Types**
|
### 4. **Update Types**
|
||||||
- **Safe to replace**: `.claude/commands/*.md`, `.claude/agents/*.md`, `.scripts/*`
|
- **Safe to replace**: `.claude/commands/*.md`, `.claude/agents/*.md`, `.scripts/*`
|
||||||
@@ -75,15 +101,40 @@ Intelligently upgrades your claudesidian installation by fetching the latest rel
|
|||||||
- **Never touch**: User content folders, CLAUDE.md, API configs
|
- **Never touch**: User content folders, CLAUDE.md, API configs
|
||||||
|
|
||||||
### 5. **Progress Tracking**
|
### 5. **Progress Tracking**
|
||||||
|
- Use TodoWrite tool to track progress alongside the checklist
|
||||||
- Save progress after each file in `.upgrade-checklist.md`
|
- Save progress after each file in `.upgrade-checklist.md`
|
||||||
|
- **MUST mark items in checklist**:
|
||||||
|
- `[x]` = completed
|
||||||
|
- `[-]` = skipped (user customization)
|
||||||
|
- `[ ]` = still pending
|
||||||
- If interrupted, can resume from where you left off
|
- If interrupted, can resume from where you left off
|
||||||
- Show progress: "Updating file 5 of 23..."
|
- Show progress: "Updating file 5 of 23..."
|
||||||
- Clear indication of what's been done and what's remaining
|
- Clear indication of what's been done and what's remaining
|
||||||
|
|
||||||
### 6. **Final Steps**
|
### 6. **Verification Check**
|
||||||
|
- Re-check all system files against the checklist
|
||||||
|
- Compare with checklist to identify:
|
||||||
|
- Files marked `[ ]` pending = likely missed (problem)
|
||||||
|
- Files marked `[-]` skipped = intentionally kept different (fine)
|
||||||
|
- Files marked `[x]` updated but still in diff = merge issues or user edits (review)
|
||||||
|
- Show verification results:
|
||||||
|
```
|
||||||
|
✅ All required files updated successfully
|
||||||
|
ℹ️ 2 files intentionally kept with user customizations:
|
||||||
|
- .claude/commands/thinking-partner.md (user's concise style)
|
||||||
|
- package.json (user's custom scripts preserved)
|
||||||
|
- or -
|
||||||
|
⚠️ Warning: 2 files appear to be missed (still marked pending):
|
||||||
|
- .claude/commands/release.md
|
||||||
|
- .scripts/vault-stats.sh
|
||||||
|
```
|
||||||
|
- Only flag as problem if files are still marked `[ ]` pending in checklist
|
||||||
|
|
||||||
|
### 7. **Final Steps**
|
||||||
- Update version in package.json
|
- Update version in package.json
|
||||||
- Verify all commands work
|
- Verify all commands work
|
||||||
- Clean up checklist file (or keep for reference)
|
- Clean up temp directory: `rm -rf .tmp/claudesidian-upgrade`
|
||||||
|
- Save final checklist for reference (shows what was updated vs skipped)
|
||||||
- Show summary of what was updated
|
- Show summary of what was updated
|
||||||
|
|
||||||
## Update Categories
|
## Update Categories
|
||||||
@@ -321,11 +372,18 @@ Starting file-by-file review...
|
|||||||
|
|
||||||
[... continues through all files ...]
|
[... continues through all files ...]
|
||||||
|
|
||||||
|
🔍 **Verification Check**
|
||||||
|
Re-checking for any missed system files...
|
||||||
|
|
||||||
|
✅ All system files successfully updated!
|
||||||
|
No claudesidian system files remain out of sync with upstream.
|
||||||
|
|
||||||
🎉 Upgrade complete!
|
🎉 Upgrade complete!
|
||||||
📈 claudesidian 0.8.2 → 0.8.3
|
📈 claudesidian 0.8.2 → 0.8.3
|
||||||
|
|
||||||
✅ Updated: 14 files
|
✅ Updated: 14 files
|
||||||
⏭️ Skipped: 1 file (CLAUDE.md - user customization)
|
⏭️ Skipped: 1 file (CLAUDE.md - user customization)
|
||||||
|
✅ Verified: All system files match upstream
|
||||||
|
|
||||||
Summary of changes:
|
Summary of changes:
|
||||||
- Fixed init-bootstrap vault selection
|
- Fixed init-bootstrap vault selection
|
||||||
@@ -334,4 +392,64 @@ Summary of changes:
|
|||||||
- Updated all commands to latest versions
|
- Updated all commands to latest versions
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Example: Verification Catches Missed Files
|
||||||
|
|
||||||
|
```
|
||||||
|
🔍 **Verification Check**
|
||||||
|
Re-checking for any missed system files...
|
||||||
|
|
||||||
|
⚠️ Warning: 2 files appear to be missed (still marked pending in checklist):
|
||||||
|
- .claude/commands/thinking-partner.md [ ]
|
||||||
|
- .scripts/vault-stats.sh [ ]
|
||||||
|
|
||||||
|
These files haven't been processed yet.
|
||||||
|
|
||||||
|
Would you like to complete the upgrade for these files? (y/n) > y
|
||||||
|
|
||||||
|
📄 Completing upgrade for missed files...
|
||||||
|
|
||||||
|
📄 File: .claude/commands/thinking-partner.md
|
||||||
|
Status: Reviewing diff...
|
||||||
|
Action: Direct update from upstream
|
||||||
|
[x] Updated
|
||||||
|
|
||||||
|
📄 File: .scripts/vault-stats.sh
|
||||||
|
Status: Reviewing diff...
|
||||||
|
Action: Direct update from upstream
|
||||||
|
[x] Updated
|
||||||
|
|
||||||
|
✅ Verification complete - all system files now match upstream!
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example: Verification with User Customizations
|
||||||
|
|
||||||
|
```
|
||||||
|
🔍 **Verification Check**
|
||||||
|
Re-checking for any missed system files...
|
||||||
|
|
||||||
|
Files still differing from upstream:
|
||||||
|
- .claude/commands/thinking-partner.md [x] ← Updated but user customized
|
||||||
|
- package.json [x] ← Merged, kept user's custom scripts
|
||||||
|
- .claude/commands/daily-review.md [ ] ← Not processed yet!
|
||||||
|
|
||||||
|
✅ 2 files intentionally preserve user customizations
|
||||||
|
⚠️ 1 file appears to be missed (still pending)
|
||||||
|
|
||||||
|
Would you like to:
|
||||||
|
1. Review the missed file (.claude/commands/daily-review.md)
|
||||||
|
2. Skip verification (keep current state)
|
||||||
|
3. See details about customized files
|
||||||
|
|
||||||
|
Choice (1/2/3) > 1
|
||||||
|
|
||||||
|
📄 File: .claude/commands/daily-review.md
|
||||||
|
Status: Reviewing diff...
|
||||||
|
Action: Direct update from upstream
|
||||||
|
[x] Updated
|
||||||
|
|
||||||
|
✅ Verification complete!
|
||||||
|
- All required updates applied
|
||||||
|
- User customizations preserved where intended
|
||||||
|
```
|
||||||
|
|
||||||
This intelligent upgrade system leverages Claude's semantic understanding to provide the smoothest possible upgrade experience while ensuring no user customizations are lost.
|
This intelligent upgrade system leverages Claude's semantic understanding to provide the smoothest possible upgrade experience while ensuring no user customizations are lost.
|
||||||
@@ -26,5 +26,8 @@ node_modules/
|
|||||||
.node_modules/
|
.node_modules/
|
||||||
pnpm-lock.yaml
|
pnpm-lock.yaml
|
||||||
|
|
||||||
|
# Temporary directories
|
||||||
|
.tmp/
|
||||||
|
|
||||||
# Never commit real API keys
|
# Never commit real API keys
|
||||||
*_API_KEY
|
*_API_KEY
|
||||||
Reference in New Issue
Block a user