Basic Workflow
Learn the day-to-day workflow for using Ivaldi effectively.
Daily Development Cycle
1. Check Status
Start your day by checking where you are:
ivaldi whereami
# or shorter:
ivaldi wai
See what files have changed:
ivaldi status
2. Make Changes
Work on your project normally. Edit files, add features, fix bugs.
3. Review Changes
Before committing, review what changed:
# See which files changed
ivaldi status
# See specific changes
ivaldi diff
# See staged changes
ivaldi diff --staged
4. Stage Files
Add files to the next commit:
# Stage specific files
ivaldi gather src/main.go README.md
# Stage directory
ivaldi gather src/
# Stage everything
ivaldi gather .
5. Create Seal (Commit)
Create a commit with your changes:
ivaldi seal "Add user authentication feature"
Output:
Created seal: swift-eagle-flies-high-447abe9b (447abe9b)
6. Push to GitHub
Upload your changes:
ivaldi upload
Complete Example
Here’s a complete workflow from start to finish:
# Morning: Check where you are
$ ivaldi wai
Timeline: feature-auth
Last Seal: calm-river-flows-deep (2 hours ago)
Workspace: Clean
# Make changes
$ echo "new feature" >> src/auth.go
$ vim src/login.go
# Check what changed
$ ivaldi status
Timeline: feature-auth
Unstaged changes:
modified: src/auth.go
modified: src/login.go
# Review specific changes
$ ivaldi diff
# Stage changes
$ ivaldi gather src/
# Verify staging
$ ivaldi status
Timeline: feature-auth
Staged changes:
modified: src/auth.go
modified: src/login.go
# Create seal
$ ivaldi seal "Implement OAuth2 login flow"
Created seal: swift-eagle-flies-high-447abe9b (447abe9b)
# Push to GitHub
$ ivaldi upload
Uploading to javanhut/my-project...
Success!
Working on Features
Start a Feature
# Create feature timeline
ivaldi timeline create feature-payment
# Verify switch
ivaldi wai
Work on Feature
# Make changes
vim src/payment.go
# Stage and seal frequently
ivaldi gather src/payment.go
ivaldi seal "Add payment validation"
# Continue working
vim src/checkout.go
ivaldi gather src/checkout.go
ivaldi seal "Add checkout flow"
Complete Feature
# Switch to main
ivaldi timeline switch main
# Merge feature
ivaldi fuse feature-payment to main
# Push to GitHub
ivaldi upload
# Clean up (optional)
ivaldi timeline remove feature-payment
Quick Fixes
Hotfix Workflow
# On main, need quick fix
ivaldi wai # Confirm on main
# Make fix
vim src/security.go
# Quick commit
ivaldi gather .
ivaldi seal "Fix security vulnerability CVE-2025-1234"
# Push immediately
ivaldi upload
WIP Commits
Save work in progress:
# End of day, feature not complete
ivaldi gather .
ivaldi seal "WIP: User authentication - need to add tests"
# Next morning, continue where you left off
ivaldi wai
Switching Contexts
Ivaldi’s auto-shelving makes context switching easy:
# Working on feature-auth
$ ivaldi wai
Timeline: feature-auth
Workspace: 3 files modified
# Urgent: need to fix bug in main
$ ivaldi timeline switch main
# Your feature-auth changes are auto-shelved
# Fix bug
$ vim src/bug.go
$ ivaldi gather .
$ ivaldi seal "Fix critical bug"
$ ivaldi upload
# Return to feature
$ ivaldi timeline switch feature-auth
# Your changes are automatically restored!
$ ivaldi status
Unstaged changes:
modified: src/auth.go
modified: src/login.go
modified: src/oauth.go
# All your work is back!
Collaboration
Reviewing Teammate’s Work
# See what's available
ivaldi scout
# Download their branch
ivaldi harvest feature-payments
# Switch to it
ivaldi timeline switch feature-payments
# Review
ivaldi log
ivaldi diff
# Switch back
ivaldi timeline switch main
Contributing to Feature
# Get teammate's branch
ivaldi harvest feature-ui
# Switch to it
ivaldi timeline switch feature-ui
# Make improvements
vim src/components/button.js
ivaldi gather .
ivaldi seal "Improve button accessibility"
# Push changes
ivaldi upload
Best Practices
Commit Often
Small, focused commits are better:
# Good: Small focused commits
ivaldi seal "Add login endpoint"
ivaldi seal "Add logout endpoint"
ivaldi seal "Add session validation"
# Bad: One huge commit
ivaldi seal "Add authentication" # (100 files changed)
Write Clear Messages
# Good: Descriptive
ivaldi seal "Fix null pointer exception in user login handler"
# Bad: Vague
ivaldi seal "fix"
Review Before Committing
# Always check before sealing
ivaldi status
ivaldi diff
ivaldi gather .
ivaldi seal "Your message"
Keep Main Stable
# Use feature timelines for development
ivaldi timeline create feature-x
# Work on feature-x
# Test thoroughly
ivaldi timeline switch main
ivaldi fuse feature-x to main
Sync Regularly
# Daily sync
ivaldi scout
ivaldi harvest --update
ivaldi timeline switch main
Common Patterns
Feature Branch Pattern
1. ivaldi timeline create feature-name
2. Make changes
3. ivaldi gather . && ivaldi seal "Description"
4. Repeat step 2-3
5. ivaldi timeline switch main
6. ivaldi fuse feature-name to main
7. ivaldi upload
Hotfix Pattern
1. ivaldi timeline switch main
2. Fix issue
3. ivaldi gather . && ivaldi seal "Fix: description"
4. ivaldi upload
Experimentation Pattern
1. ivaldi travel
2. Select stable commit, diverge
3. Try experimental approach
4. If successful: merge
5. If not: abandon timeline
Troubleshooting Common Issues
Forgot to Create Feature Timeline
# Already made changes on main
ivaldi status
# Create timeline from current state
ivaldi timeline create feature-x
# Changes move with you!
Committed to Wrong Timeline
# On main, should have been on feature
ivaldi timeline create feature-x
ivaldi wai
# Last commit is now on feature-x!
Need to Undo Last Commit
# Use time travel
ivaldi travel
# Select commit before mistake
# Choose: Overwrite (or Diverge to be safe)
Summary
Basic daily workflow:
ivaldi wai- Check where you are- Make changes
ivaldi status- See what changedivaldi gather .- Stage changesivaldi seal "message"- Commitivaldi upload- Push to GitHub
That’s it! This covers 90% of daily Ivaldi usage.
Next Steps
- Learn about Timeline Branching
- Explore Team Collaboration
- Master GitHub Integration