Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
36 changes: 16 additions & 20 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,12 +99,6 @@ npx boxel profile switch username # Switch by partial match

## Available Skills

### `/track` - Track Local Edits
Starts `boxel track` to auto-checkpoint local file changes:
- Creates checkpoints as you save files in IDE
- **IMPORTANT:** Track creates LOCAL checkpoints only
- **After editing, run `boxel sync . --prefer-local` to push to server**

### `/watch` - Smart Watch
Starts `boxel watch` with intelligent interval based on context:
- **Active development** (5s interval, 3s debounce): When editing files
Expand All @@ -120,7 +114,7 @@ Complete restore workflow:

### `/sync` - Smart Sync
Context-aware bidirectional sync:
- After local edits or track → `--prefer-local`
- After local edits → `--prefer-local`
- After server changes → `--prefer-remote`
- After restore → `--prefer-local` (essential for syncing deletions)

Expand Down Expand Up @@ -151,18 +145,23 @@ boxel sync . --dry-run # Preview only
boxel track . # Track local edits, auto-checkpoint as you save
boxel track . -d 5 -i 30 # 5s debounce, 30s min between checkpoints
boxel track . -q # Quiet mode
boxel track . --push # Auto-push changes to server (batch upload)
boxel track . --push -v # Push with verbose logging
```

**Use track when:** Editing locally in IDE/VS Code. Creates checkpoints as you save files.
**Symbol:** ⇆ (horizontal arrows = local changes)

**--push mode:** Automatically batch uploads changes to the server after each checkpoint using the `/_atomic` endpoint. Efficient for real-time sync workflows.

### Watch ⇅ (Remote Server Watching)
```bash
boxel watch # Watch all configured realms (from .boxel-workspaces.json)
boxel watch . # Watch single workspace
boxel watch . ./other-realm # Watch multiple realms simultaneously
boxel watch . -i 5 -d 3 # Active: 5s interval, 3s debounce
boxel watch . -q # Quiet mode
boxel watch . -v # Verbose logging
```

**Use watch when:** Others are editing in Boxel web UI. Pulls their changes and creates checkpoints.
Expand Down Expand Up @@ -238,6 +237,7 @@ boxel gather . -s /path/to/repo # Pull from GitHub repo
```

**Share** copies workspace state to a GitHub repo branch:
- Copies to repo root by default (use `--subfolder` to target a specific directory)
- Preserves repo-level files (package.json, LICENSE, README, etc.)
- Skips realm-specific files (.realm.json, index.json, cards-grid.json)
Copy link

Copilot AI Feb 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docs say share "Skips realm-specific files (.realm.json, index.json, cards-grid.json)", but share.ts now only preserves/skips .realm.json. Either update this documentation to match the new behavior or restore skipping/preserving of index.json / cards-grid.json in the share implementation to avoid confusing users.

Suggested change
- Skips realm-specific files (.realm.json, index.json, cards-grid.json)
- Skips the realm config file (.realm.json)

Copilot uses AI. Check for mistakes.
- Creates branch and commits changes
Expand Down Expand Up @@ -274,25 +274,21 @@ boxel skills --export . # Re-export to .claude/commands/

## Key Workflows

### Local Development with Track (IDE/Agent Editing)
```bash
boxel track . # Start tracking local edits (auto-checkpoints)
# ... edit files in IDE or with Claude ...
# Track creates LOCAL checkpoints as you save

# IMPORTANT: When ready to push changes to Boxel server:
boxel sync . --prefer-local # Push your local changes to server
```

**Remember:** Track does NOT sync to server automatically - it only creates local checkpoints. Always run `sync --prefer-local` when you want your changes live on the server.

### Active Development Session (Watching Server)
### Active Development Session
```bash
/watch # Starts with 5s interval
# ... edit in Boxel UI or locally ...
/sync # Push/pull changes
```

### Real-Time Local-to-Server Sync
```bash
boxel track . --push -d 2 -i 5 # Track + auto-push with 2s debounce, 5s interval
# Edit files in IDE - changes auto-sync to server via batch upload
```

**Use this when:** You want instant sync to server as you edit locally. Uses the efficient `/_atomic` batch upload endpoint.

### Undo Server Changes (Restore)
```bash
boxel history . # Find checkpoint
Expand Down
84 changes: 0 additions & 84 deletions .claude/commands/track.md

This file was deleted.

48 changes: 48 additions & 0 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
"permissions": {
"allow": [
"Bash(grep:*)",
"Bash(npm run dev:*)",
Copy link

Copilot AI Feb 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This appears to be a machine-local Claude configuration file (includes broad tool permissions and absolute local paths). It shouldn’t be committed to the repo. Please remove it from the PR and add .claude/settings.local.json to .gitignore (or move to a documented, non-local config file if it’s meant to be shared).

Copilot uses AI. Check for mistakes.
"Bash(ls:*)",
"Bash(pdftotext:*)",
"Bash(python3:*)",
"Bash(npm run build:*)",
"Bash(git checkout:*)",
"Bash(git add:*)",
"Bash(git commit:*)",
"Bash(DEBUG=1 timeout 30 npm run dev:*)",
"Bash(pkill:*)",
"Bash(code:*)",
"Bash(open:*)",
"Bash(npm run:*)",
"Bash(git push:*)",
"Bash(npx boxel:*)",
"Bash(git remote set-url:*)",
"Bash(npm install:*)",
"Bash(git fetch:*)",
"Bash(git stash:*)",
"Bash(git pull:*)",
"Bash(git ls-tree:*)",
"Bash(git status:*)",
"Bash(git branch:*)",
"Bash(xargs:*)",
"Bash(cat:*)",
"Bash(echo \"card definitions\" ls ./steady-loon/boxel-ai-website/SampleCard/*/*.json)",
"Bash(zip:*)",
"Bash(find:*)",
"WebFetch(domain:images.pexels.com)",
"WebSearch",
"Bash(# Copy all instance directories explicitly SOURCE=\"\"/Users/chris/Documents/code/boxel-cli/steady-loon/boxel-ai-website/SampleCard\"\" DEST=\"\"/Users/chris/Documents/code/boxel-cli/hilarious-marmoset/placeholders\"\" for dir in AiImageCard AnalyticsDashboard BlogPost BrochureCard BudgetLineItemCard CodeReview ConferenceCard CourseModuleCard DesignAssetCard EventTicketCard ExpenseReportCard FitnessActivityCard FlashcardCard HotelRoomCard InventoryItemCard Invoice LeaseAgreementCard MaintenanceRequestCard MedicationReminderCard MeetingRoomCard PatientAppointmentCard PodcastEpisodeCard Product ProjectTracker PropertyListingCard RecipeCardCard RestaurantMenuItemCard SalesCrm ShipmentTrackingCard StockTickerCard StudentGradeCard StudyGuideCard SubscriptionPlanCard TimeEntryCard TradingCardCard TripItineraryCard VideoContentCard; do cp -rf \"\"$SOURCE/$dir\"\" \"\"$DEST/\"\" done echo \"\"Directories copied. Listing new directories:\"\" ls -d \"\"$DEST\"\"/*/)",
"Bash(# List the orphan JSON files in placeholders root \\(not in subdirectories\\) ls /Users/chris/Documents/code/boxel-cli/hilarious-marmoset/placeholders/*.json)",
"Bash(# Delete all orphan JSON files from placeholders root rm /Users/chris/Documents/code/boxel-cli/hilarious-marmoset/placeholders/*.json echo \"\"Deleted orphan JSON files\"\" ls /Users/chris/Documents/code/boxel-cli/hilarious-marmoset/placeholders/*.json)",
"Bash(lsof:*)",
"Bash(xattr:*)",
"Bash(ssh-add:*)",
"WebFetch(domain:github.com)",
"WebFetch(domain:raw.githubusercontent.com)",
"Bash(npx tsc:*)",
"Bash(npx tsx:*)",
"Bash(curl:*)"
]
Copy link

Copilot AI Feb 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The .claude/settings.local.json file contains user-specific Claude AI permissions and should not be committed to the repository. This file should be added to .gitignore and removed from version control. User-specific settings can expose information about the development environment and should remain local.

Suggested change
"allow": [
"Bash(grep:*)",
"Bash(npm run dev:*)",
"Bash(ls:*)",
"Bash(pdftotext:*)",
"Bash(python3:*)",
"Bash(npm run build:*)",
"Bash(git checkout:*)",
"Bash(git add:*)",
"Bash(git commit:*)",
"Bash(DEBUG=1 timeout 30 npm run dev:*)",
"Bash(pkill:*)",
"Bash(code:*)",
"Bash(open:*)",
"Bash(npm run:*)",
"Bash(git push:*)",
"Bash(npx boxel:*)",
"Bash(git remote set-url:*)",
"Bash(npm install:*)",
"Bash(git fetch:*)",
"Bash(git stash:*)",
"Bash(git pull:*)",
"Bash(git ls-tree:*)",
"Bash(git status:*)",
"Bash(git branch:*)",
"Bash(xargs:*)",
"Bash(cat:*)",
"Bash(echo \"card definitions\" ls ./steady-loon/boxel-ai-website/SampleCard/*/*.json)",
"Bash(zip:*)",
"Bash(find:*)",
"WebFetch(domain:images.pexels.com)",
"WebSearch",
"Bash(# Copy all instance directories explicitly SOURCE=\"\"/Users/chris/Documents/code/boxel-cli/steady-loon/boxel-ai-website/SampleCard\"\" DEST=\"\"/Users/chris/Documents/code/boxel-cli/hilarious-marmoset/placeholders\"\" for dir in AiImageCard AnalyticsDashboard BlogPost BrochureCard BudgetLineItemCard CodeReview ConferenceCard CourseModuleCard DesignAssetCard EventTicketCard ExpenseReportCard FitnessActivityCard FlashcardCard HotelRoomCard InventoryItemCard Invoice LeaseAgreementCard MaintenanceRequestCard MedicationReminderCard MeetingRoomCard PatientAppointmentCard PodcastEpisodeCard Product ProjectTracker PropertyListingCard RecipeCardCard RestaurantMenuItemCard SalesCrm ShipmentTrackingCard StockTickerCard StudentGradeCard StudyGuideCard SubscriptionPlanCard TimeEntryCard TradingCardCard TripItineraryCard VideoContentCard; do cp -rf \"\"$SOURCE/$dir\"\" \"\"$DEST/\"\" done echo \"\"Directories copied. Listing new directories:\"\" ls -d \"\"$DEST\"\"/*/)",
"Bash(# List the orphan JSON files in placeholders root \\(not in subdirectories\\) ls /Users/chris/Documents/code/boxel-cli/hilarious-marmoset/placeholders/*.json)",
"Bash(# Delete all orphan JSON files from placeholders root rm /Users/chris/Documents/code/boxel-cli/hilarious-marmoset/placeholders/*.json echo \"\"Deleted orphan JSON files\"\" ls /Users/chris/Documents/code/boxel-cli/hilarious-marmoset/placeholders/*.json)",
"Bash(lsof:*)",
"Bash(xattr:*)",
"Bash(ssh-add:*)",
"WebFetch(domain:github.com)",
"WebFetch(domain:raw.githubusercontent.com)",
"Bash(npx tsc:*)",
"Bash(npx tsx:*)",
"Bash(curl:*)"
]
"allow": []

Copilot uses AI. Check for mistakes.
}
}
29 changes: 24 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -205,13 +205,16 @@ boxel pull <url> ./local # One-way pull (remote → local)
boxel track . # Track local edits, auto-checkpoint
boxel track . -d 5 -i 30 # 5s debounce, 30s min between checkpoints
boxel track . -q # Quiet mode
boxel track . --push # Auto-push to server via batch upload
boxel track . --push -v # Push with verbose logging

# Watch REMOTE server changes (pull external updates)
boxel watch . # Watch single workspace (30s default)
boxel watch . ./other-realm # Watch multiple realms
boxel watch # Watch all configured realms
boxel watch . -i 5 -d 3 # 5s interval, 3s debounce
boxel watch . -q # Quiet mode
boxel watch . -v # Verbose logging

# Stop all watchers and trackers
boxel stop # Stops all running watch (⇅) and track (⇆) processes
Expand All @@ -225,6 +228,7 @@ boxel status . --pull # Auto-pull changes
| Command | Symbol | Direction | Purpose |
|---------|--------|-----------|---------|
| `track` | ⇆ | Local → Checkpoints | Backup your IDE edits as you type |
| `track --push` | ⇆ | Local → Server | Real-time sync to server (batch upload) |
| `watch` | ⇅ | Server → Local | Pull external changes from Boxel web UI |

### History & Checkpoints
Expand Down Expand Up @@ -301,14 +305,9 @@ boxel skills --export . # Export to .claude/commands/
boxel track . # Start tracking local edits
# In another terminal or IDE, edit files...
# Checkpoints created automatically as you save

# IMPORTANT: Track creates LOCAL checkpoints only!
# When ready to push changes to Boxel server:
boxel sync . --prefer-local # Push changes to server
```

**Remember:** `track` does NOT sync to server - it only creates local checkpoints for safety. Always run `sync --prefer-local` when you want your changes live.

### Active Development (with edit lock)
```bash
boxel edit . my-card.gts # Lock file (if watch is running)
Expand Down Expand Up @@ -508,6 +507,26 @@ cat ./Type/card-id.json
| Files reverting after restore | Stop watch first, use `--prefer-local` after |
| Watch not detecting changes | Check interval, verify workspace URL |
| Definition changes not reflected | `boxel touch . Instance/file.json` |
| Need more details on errors | Add `-v` or `--verbose` flag |

### Verbose Mode

Most commands support verbose logging with `-v` or `--verbose`:

```bash
boxel sync . --prefer-local -v # Detailed sync logging
boxel track . --push -v # See batch upload details
boxel watch . -v # JWT and polling info
boxel push ./local <url> -v # Upload debugging
boxel pull <url> ./local -v # Download debugging
```

Verbose output shows:
- Matrix authentication details
- JWT acquisition timing
- Batch upload operations (file lists, payload sizes)
- Server response status codes
- Error details from `/_atomic` endpoint

---

Expand Down
Loading
Loading