Version History & Restore¶
SkillMeat maintains a complete immutable record of every change to your artifacts. This guide explains how to view version history, compare versions, and safely restore to any previous version.
Overview¶
Every modification to an artifact creates a new immutable version entry:
- Saved changes — When you update artifact content
- Synced updates — When you pull changes from upstream
- Imported versions — When you import from the marketplace or GitHub
- Restored versions — When you restore a previous version (creates a new version, preserves original)
The version timeline preserves complete history with: - Exact timestamp of each change - Who made the change (collection source, sync, import, restore) - What changed (file additions, deletions, modifications) - Why it changed (change attribution: upstream, local, conflict)
This enables you to recover from corruption, rollback unwanted changes, or explore your artifact's evolution over time.
Viewing Version History¶
Opening the History Timeline¶
- Navigate to an artifact in the web UI
- Click the History tab at the top of the artifact details panel
- The timeline view displays all versions chronologically with:
- Version timestamps — When each version was created
- Change badges — Color-coded indicators of change origin
- Current marker — Shows which version is currently deployed
- Summary counts — Number of files added, removed, modified
Timeline Navigation¶
The timeline displays versions in reverse chronological order (newest first). Each version shows:
Date & Time - When the version was created (formatted as "Jan 15, 2025 10:30 AM")
Version Type Badge - Indicates what kind of change created this version: - Saved — Manual edit to artifact - Synced — Pulled from upstream or collection - Imported — Added from marketplace or GitHub - Restored — This is a restore operation result
Change Origin Badges - Files in each version show their origin: - Blue Badge — Upstream changes (from collection or marketplace source) - Amber Badge — Local modifications (your customizations) - Red Badge — Conflicting changes (both sides modified)
File Summary - Quick counts showing:
- +N files added
- -N files removed
- M N files modified
Identifying the Current Version¶
The "Current" label appears on whichever version is currently deployed to your project. If you're viewing version history in the web UI, the current version helps you understand what's running right now.
Viewing Version Metadata¶
Click on any version in the timeline to see:
- Exact timestamp of creation
- Version type (saved, synced, imported, restored)
- File list with change attribution badges for each file
- Change summary showing total additions and deletions
- Associated metadata (sync source, upstream version if applicable)
Comparing Versions¶
Side-by-Side Diff¶
To see exactly what changed between two versions:
- In the timeline, click the first version you want to compare
- Hold Shift and click a second version to compare against
- A diff panel opens showing side-by-side comparison:
- Left side — Content from the first version (older)
- Right side — Content from the second version (newer)
- Green highlights — Lines added in the newer version
- Red highlights — Lines removed in the newer version
- Blue highlights — Lines that changed
Understanding Diff Display¶
The diff viewer shows:
File structure - Full path of file being compared
Change legend: - Green (+) — Added in the newer version - Red (-) — Removed in the newer version - Blue (modified) — Changed content
Context lines - Several unchanged lines around each change for context
Binary files - Indicated as binary with a note (no detailed diff for binary files)
Comparing Against Current Version¶
To compare any version against what's currently deployed:
- Click the version you want to compare
- Look for the "Compare with Current" option
- The diff panel opens automatically showing changes needed to update to this version
Large Artifact Handling¶
For artifacts with many versions or large file sizes:
- Lazy diff loading — Diffs only render when you scroll into view (faster loading)
- Performance optimized — Even with 100+ versions, timeline remains responsive
- Indexed queries — Efficient version lookups by creation date
Restoring a Previous Version¶
Two-Step Restore Process¶
Restore follows a safe two-step workflow: preview, then confirm.
Step 1: Select & Preview¶
- Open the History tab on your artifact
- Click the version you want to restore to
- Click "Restore to This Version" button
- The preview diff panel appears showing:
- What the artifact looks like now (current version)
- What it will look like after restore (target version)
- Exact line-by-line changes that will happen
- Whether any conflicts exist
Step 2: Confirm Restore¶
After reviewing the preview:
- Click "Confirm Restore" button
- A confirmation dialog appears with a final summary
- Click "Restore" to proceed
- The restore completes and a new version is created
Non-Destructive Restore Behavior¶
Critically, restore is always safe:
- New version is created — Your artifact gains a new entry in the timeline
- Original versions preserved — The version you restored from still exists unchanged
- Complete audit trail — All versions remain visible in history
- Multiple restores allowed — You can restore from the same version multiple times
Example: If you have versions v1 → v2 → v3 and restore to v1, the timeline becomes v1 → v2 → v3 → v1-restored. All four versions exist. You can restore from v1 again later.
Restore with Conflicts¶
If the version you're restoring has conflicting changes (marked with red badges):
- The diff preview shows conflict markers indicating which lines conflict
- You can proceed with restore knowing conflicts exist
- After restore, you may need to manually resolve conflict markers in the restored file
See "Handling Conflicts" section below for resolution guidance.
What Happens to Deployments¶
When you restore a version:
- Projects using this artifact remain unchanged until you explicitly redeploy
- Deployment tracking updates to record the restore event
- You can re-sync the artifact to projects to get the restored version
- The restored version becomes available for deployment immediately
Deployments & Topology¶
Understanding Deployment Status¶
The Topology panel (available in the History tab) shows where your artifact is currently deployed across all projects:
Status indicators: - Active — Artifact is deployed and matches collection version - Outdated — Artifact is deployed but newer version exists in collection - Pinned — Deployment is locked to a specific version (won't auto-sync)
Viewing the Topology Panel¶
- Open artifact History tab
- Scroll to Topology section — Shows all projects with this artifact
- Each project displays:
- Project name
- Current deployed version (hash)
- Deployment status (active/outdated)
- Pin status (locked or unlocked)
- Deployment timestamp
Outdated Badge¶
An "Outdated" badge appears when your collection has a newer version than what's deployed in a project. This helps you spot projects that need updating.
The topology panel includes: - Count of outdated deployments (e.g., "3 of 5 projects outdated") - Percentage outdated (helps prioritize when many projects are behind)
Push to Collection¶
What is Push?¶
Push lets you take modifications you've made to an artifact in your project and push them back to your main collection. This is useful when you've customized an artifact locally and want to share that improvement across all your projects.
How to Push¶
- Open artifact in web UI and make your modifications
- Click the "Push to Collection" action in the artifact detail view
- A conflict preview appears showing what will change in your collection
- Review the changes — green shows what you're adding, red shows what you're removing
- Click "Confirm Push" to apply changes
- The artifact in your collection is now updated and available for deployment
Handling Push Conflicts¶
If your local modifications conflict with upstream changes:
- A "Conflict Detected" dialog appears showing both versions
- Review which approach makes more sense (yours or the upstream version)
- Choose "Push My Version" to keep your customization or "Cancel" to keep collection as-is
- After push, other projects can sync to get your improvement
Sync All Outdated¶
One-Click Sync for Multiple Projects¶
The "Sync All Outdated" action updates all projects that have outdated deployments to the latest collection version.
How to Use Sync All¶
- Open artifact in web UI
- Look for "Sync All Outdated" button in the Deployments section
- Click the button — all outdated projects are updated at once
- A progress indicator shows how many projects are syncing
- Pinned projects are skipped (won't be synced until unpinned)
Results Summary¶
After sync completes, you'll see: - "Synced 3 projects" — How many were successfully updated - "2 pinned (skipped)" — How many pinned deployments were not touched - Any errors that occurred (e.g., if a project was deleted)
Pinned Projects¶
Projects with pinned deployments are intentionally excluded from "Sync All". To sync a pinned project:
- Unpin it in the project details
- Run "Sync All" again, or manually redeploy the artifact
- Repin if needed for future deployments
Automatic Version Seeding¶
What is Automatic Seeding?¶
When you upgrade to VCS v2 or enable version history, SkillMeat automatically seeds historical versions for all your existing artifacts. This means:
- Existing artifacts gain version history instantly (no manual action needed)
- No versions are lost — all previously known states are preserved
- Seeding happens in the background during upgrade
Hydration Banner¶
During the seeding process, a "Hydration in Progress" banner appears at the top of the web UI:
- Shows progress: "Processing artifacts (45 of 120)"
- Updates every few seconds as seeding continues
- Disappears automatically when seeding completes
What Gets Seeded?¶
Automatic seeding captures versions from: - Deployed artifacts — Snapshots of what's currently in each project - Collection history — Previous syncs and imports are preserved - Upstream sources — Known versions from GitHub or marketplace
This ensures you have continuity before and after upgrade.
Impact on Your Work¶
- No interruption — Continue using SkillMeat while seeding happens in the background
- History available immediately — Once seeding completes, you can restore to any previous version
- Safe operation — Seeding only reads existing state; no changes are made to artifacts
Composite Artifacts¶
Version History for Composites¶
Composite artifacts (bundles, composites with multiple members) show version history at two levels:
Composite level — Versions of the entire composite as a unit
Member level — You can view history for individual members within the composite
Restoring Individual Members¶
When restoring a composite artifact, you can choose which members to restore:
- Open the History tab for the composite artifact
- Click "Restore to This Version" on your target version
- Member selection panel appears listing all members:
- Check ✓ members you want to restore
- Uncheck members you want to keep at current versions
- Only selected members will be updated
Example Scenario¶
Suppose you have a bundle with:
- canvas-ui.py (current: v2.1.0)
- canvas-core.py (current: v2.0.0)
- canvas-config.yml (current: v1.5.0)
You restore to version from 2025-01-10 which had:
- canvas-ui.py v2.0.0
- canvas-core.py v1.9.0
- canvas-config.yml v1.4.0
You can select to restore only canvas-core.py and canvas-config.yml, keeping canvas-ui.py at v2.1.0.
Atomic Restore¶
If you select multiple members to restore:
- All members are restored together in a single atomic operation
- If any member restore fails, the entire operation rolls back (nothing is modified)
- Safety snapshot is taken before restore to enable rollback if needed
This ensures composites never end up in a partially-restored state.
Enterprise: Version Scoping¶
Note: Version scoping features are available in Enterprise edition. Local edition users see a single global version timeline.
What is Version Scoping?¶
In Enterprise deployments, version history can be scoped at three levels:
User Scope — Each user has their own version timeline - User modifications are isolated from other team members - User can view and restore only their own versions - User versions are visible to team and enterprise admins
Team Scope — Team members share a curated version baseline - Team admins can approve or reject member versions - Members can promote personal versions to team baseline - Team versions become the reference point for all team members
Enterprise Scope — Organization-wide approved versions - Enterprise admins maintain the canonical version - Teams can promote to enterprise scope (requires approval) - Strict audit trail of all scope changes
Promotion Workflow¶
Members can promote versions up the scope hierarchy:
- User → Team: User version gets promoted to team baseline after team lead approval
- Team → Enterprise: Team version promoted to org-wide baseline after enterprise approval
- Enterprise Promotion: Results in increased visibility but doesn't change the version itself
Viewing Scoped Versions¶
In the Enterprise history tab, you see:
- Your versions — All versions created by you
- Team versions — Versions approved by your team
- Enterprise versions — Organization-wide approved versions
- Promotion status — Shows whether versions are pending approval, rejected, or approved
Approving/Rejecting Promotions¶
Team and enterprise admins can:
- Review promotion requests in the Admin Console
- View the version diff to understand what's being promoted
- Approve to move version up a scope tier
- Reject with optional feedback to require changes
Preventing & Resolving Conflicts¶
Understanding Conflict Badges¶
When a version has conflicting changes (red badges), it means:
- Both upstream and your local changes affected the same file
- The system performed a three-way merge but couldn't automatically resolve
- Manual review is required to decide which approach to use
Handling Conflicts During Restore¶
If you restore a version with conflicts:
-
Conflict markers appear in the restored file in Git-style format:
-
Resolve manually by:
- Keeping LOCAL (your current code)
- Keeping RESTORED (the restored version)
- Intelligently merging both approaches
-
Removing the conflict markers
-
After resolving, the artifact works normally and has a new version
Conflict Resolution Decision Guide¶
| Situation | Recommendation |
|---|---|
| Upstream added logging, you added error handling | Merge intelligently — Keep both features |
| Upstream refactored function, you customized behavior | Understand both sides — May need to reapply customization on refactored version |
| Upstream deprecated something, you still use it | Keep local — Keep your version until you can migrate |
| Both added different features | Merge — Import/call both features if possible |
Feature Availability¶
Version history features are available in all SkillMeat editions, with scope restrictions in Enterprise. See the Edition Feature Matrix for complete details.
| Feature | Local Edition | Enterprise Edition |
|---|---|---|
| View version timeline | ✓ | ✓ |
| Compare any two versions | ✓ | ✓ |
| Restore to previous version | ✓ | ✓ |
| Composite member selection | ✓ | ✓ |
| User version scoping | — | ✓ |
| Team version approval workflow | — | ✓ |
| Enterprise version promotion | — | ✓ |
| Admin version management | — | ✓ |
Recovery Workflows¶
Scenario 1: Accidental Modification¶
Problem: You accidentally modified a critical artifact and want to revert.
Solution:
1. Open artifact History tab
2. Find the version before your accidental modification
3. Click "Restore to This Version"
4. Review the preview diff
5. Click "Confirm Restore"
6. Redeploy the artifact to projects
Time to recover: ~2 minutes
Scenario 2: Corrupt File Content¶
Problem: Your artifact file is corrupted or has invalid syntax.
Solution:
1. Review recent versions for when corruption started
2. Find the last known-good version
3. Click "Restore to This Version"
4. Verify the restored content is correct in preview
5. Confirm the restore
6. Test in your project
Key insight: Version history acts as automatic backup with full audit trail.
Scenario 3: Conflicting Upstream Changes¶
Problem: Upstream made changes that conflict with your customizations.
Solution:
1. View History tab and locate versions with red conflict badges
2. Compare upstream version vs your version in diff panel
3. Decide: keep upstream, keep local, or merge both
4. Restore to your preferred version or manually merge
5. Create a new version with resolved conflict
Related Guides¶
- Syncing Changes — Understand drift detection and merge strategies
- Updating Safely — Best practices for updating from upstream
- Searching — Find specific artifacts and versions
- Edition Feature Matrix — Full feature availability by edition
Troubleshooting¶
History Not Showing All Versions¶
If your history timeline seems incomplete:
- Refresh the page — timeline data may need reloading
- Check if artifact was recently imported — early versions may not be available
- Contact support if timeline stops before expected date
Restore Preview Shows No Changes¶
If comparing identical versions:
- Both versions may be the same — no changes to preview
- Try comparing against a different version
- Use diff panel to see file structure differences
Conflict Resolution Difficult¶
If conflicts are complex:
- Start by understanding what upstream changed (blue badge changes)
- Understand what you changed (amber badge changes)
- Contact your team lead or maintainer for guidance
- Consider keeping both versions separately (fork strategy) to preserve both approaches
See Also¶
- Syncing Changes Guide — Complete drift and merge documentation
- Updating Safely Guide — Safe update strategies
- Enterprise Admin Guide — Advanced scope management