Skip to content

Releases: CXBilen/dev-migration-assistant

1.0.0 — first stable release

Choose a tag to compare

@github-actions github-actions released this 29 Aug 04:02
00fc225

Dev Migration Assistant 1.0.0 — back up and restore the real local state of your projects (Claude Code sessions, Git working trees and worktrees, project-local config) between Macs.

Install

Download Dev Migration Assistant-1.0.0-arm64.dmg below, open it and drag the app to Applications. macOS 13+ on Apple Silicon.

The build is ad-hoc signed but not notarized, so on first launch use right-click → Open and confirm. Verify the download against SHA256SUMS.txt if you like:

shasum -a 256 -c SHA256SUMS.txt

What it does

Pick your projects on the old Mac, review exactly what will be captured, and write one encrypted .devbackup file (Argon2id + chunked AES-256-GCM). On the new Mac, open it, map each project to its new path, approve the restore plan, and the app writes only where you approved — then reports what it did and what still needs your attention.

Credentials are never captured. No Keychain items, no OAuth tokens, no MCP server secrets. Sign in again on the new Mac; the restore report tells you where.

Everything runs locally: no account, no server, no telemetry, no cloud upload.

Verification for this build

  • pnpm verify and the Playwright E2E suite green on the tagged commit (650 unit + renderer tests, 77 integration tests, 10 E2E).
  • Every mitigation in the threat model names a passing test — 114 citations, checked mechanically, and a test now fails the build if an unvalidated one reappears.
  • The packaged app's Electron fuses are read back in CI and must match ADR-0007: RunAsNode, EnableNodeOptionsEnvironmentVariable and EnableNodeCliInspectArguments disabled; OnlyLoadAppFromAsar and EnableEmbeddedAsarIntegrityValidation enabled.

Known limitations

No password recovery, no compression, no incremental backups, macOS/Apple Silicon only. The full list is in docs/KNOWN_LIMITATIONS.md.

Next up is 1.1 — Rehydrate: turning "files restored" into "development environment ready" (detect the tools, check what needs signing in again, and walk you through it).


First stable release. Everything the app was built for now ships and is covered by the security gate in
docs/security/THREAT_MODEL.md §5: project scan, encrypted .devbackup
(Argon2id + chunked AES-256-GCM), restore plan with collisions and preflight, safe path remapping, and the
macOS desktop app with a sandboxed renderer, zod-validated IPC, packaged-build fuses and a startup sweep of
leftover staging directories. From 1.0.0 the app version follows SemVer strictly and every 1.x release
keeps opening containers written by any earlier 1.x. Builds are ad-hoc signed but not notarized — see the
install notes in the README.

Added

  • Every backup now records a capability snapshot (manifest.capabilities): developer tools with
    version, resolved path and install method, the search path used, and the Claude Code versions that
    wrote the transcripts. Names and paths only — never credentials, env values or account details.
  • Diagnostics lists the developer tools it found (version, path, install method) and the directories
    it searches.

Changed

  • The app resolves a deterministic search path (launchd PATH + /etc/paths(.d) + the well-known
    user tool directories that exist) instead of relying on the environment it was launched with. A
    Finder-launched build previously reported claude, gh, brew, node and pnpm as not
    installed
    when they lived in ~/.local/bin or /opt/homebrew/bin. No login shell is spawned.
  • The remediation catalogue moved to @devmig/core (Remediation type in @devmig/model); the
    nvm install suggestion (a shell function) became brew install node@<major>, and the invalid
    brew install npm became brew install node.

Security

  • MCP server definitions in ~/.claude.json whose args or url carry a secret-looking value
    (e.g. API_KEY=… inline) now make the corresponding artifact sensitive and opt-in; previously
    they were included as safe.
  • session-env/ scripts (hook-generated per-session environment files, which hooks may fill with
    secrets) are no longer backed up or restored; they are listed as ephemeral and Claude Code
    regenerates them.
  • Git remote URLs are stored without embedded credentials — in the manifest and in the Git provider's
    repository.json — and are restored without them (https://user:token@… → https://…); sign in again
    through your credential helper on the destination.

v0.1.0-alpha.6 — backup fix, Select everything

Choose a tag to compare

@github-actions github-actions released this 28 Aug 16:00

What's changed

Added

  • Backup Review: Select everything picks every selectable item at once (sensitive files, weak Claude Code
    matches, hidden-by-default state when ephemeral items are shown). When that would include sensitive files or
    weak matches, a confirmation dialog lists them first; credentials are never included.

Fixed

  • Backup failed with payloadPath "…/claude-code/sessions/<dir>" does not exist in the staging directory when a
    Claude Code project directory (typically a stale .claude/worktrees/… leftover) contained no transcripts. Such
    directories are no longer offered as "sessions (0)", and the sessions payload directory is always created even
    when nothing could be copied.

Build: macOS Apple Silicon (arm64) · code signing: false · notarization: false

Unsigned builds need right-click → Open (or xattr -d com.apple.quarantine) on first launch — see the README.
Verify your download with shasum -a 256 -c SHA256SUMS.txt.

Full Changelog: v0.1.0-alpha.5...v0.1.0-alpha.6

v0.1.0-alpha.5

v0.1.0-alpha.5 Pre-release
Pre-release

Choose a tag to compare

@CXBilen CXBilen released this 27 Aug 22:51

Build: macOS Apple Silicon (arm64) · code signing: false · notarization: false

Unsigned builds need right-click → Open (or xattr -d com.apple.quarantine) on first launch — see the README.
Verify your download with shasum -a 256 -c SHA256SUMS.txt.

Maintainer: paste the CHANGELOG section for this version above the generated notes before publishing.

Full Changelog: v0.1.0-alpha.4...v0.1.0-alpha.5

v0.1.0-alpha.4

v0.1.0-alpha.4 Pre-release
Pre-release

Choose a tag to compare

@CXBilen CXBilen released this 27 Aug 22:31

Build: macOS Apple Silicon (arm64) · code signing: false · notarization: false

Unsigned builds need right-click → Open (or xattr -d com.apple.quarantine) on first launch — see the README.
Verify your download with shasum -a 256 -c SHA256SUMS.txt.

Maintainer: paste the CHANGELOG section for this version above the generated notes before publishing.

Full Changelog: v0.1.0-alpha.3...v0.1.0-alpha.4

v0.1.0-alpha.3 — UI preview, packaging polish

Choose a tag to compare

@CXBilen CXBilen released this 27 Aug 22:22

v0.1.0-alpha.3 — UI preview, packaging polish

Migration Assistant, but for developers. This pre-release exists to look at the product flows and give feedback
on the UI. It is an ad-hoc signed (not notarized) Apple Silicon build.

Since alpha.2: transparent app and volume icons, a Retina-ready DMG background with a refined drag-and-drop layout, an
external-disk style volume icon, and green CI on main (pnpm verify: 510 unit + 65 integration tests). The app is
ad-hoc signed so Gatekeeper offers "Open Anyway" instead of reporting it as damaged.

⚠️ This build does not read or write anything on your Mac. The renderer runs on built-in preview data
(you will see a "Preview data — the native bridge is not connected" badge). The backup/restore engines, the
.devbackup container and all four providers are implemented and tested in the repository, but the Electron
bridge that connects the UI to them ships in the next alpha.

What you can try

  • The complete Create Backup wizard (projects → scan → review → security review → progress → done)
  • The complete Restore Backup wizard (unlock → contents → path mapping → preflight/plan → progress → report),
    including collision handling and the path-remap preview
  • Diagnostics and Settings, light and dark mode, keyboard navigation

What is in the codebase at this tag

  • .devbackup container: Argon2id + chunked AES-256-GCM, streaming, hardened extraction — docs/backup-format/DEVBACKUP_SPEC.md
  • Providers: Claude Code (metadata-driven session matching, schema-aware path remap), Git (bundle + working-tree
    deltas + worktree reconstruction), project files, runtime manifest
  • 400+ unit/integration tests against fake "Mac A → Mac B" fixtures

Install

  1. Open the DMG and drag Dev Migration Assistant onto the Applications shortcut.
  2. The build is ad-hoc signed but not notarized. On first launch macOS says it cannot verify the developer: click Done,
    then System Settings → Privacy & Security → Open Anyway (macOS 15+), or right-click → Open (macOS 13/14).
    If you see "damaged and can't be opened" instead, remove the quarantine attribute and open it again:
    xattr -dr com.apple.quarantine "/Applications/Dev Migration Assistant.app"
  3. Verify the download against SHA256SUMS.txt.

Next alpha

Electron main/preload bridge (native dialogs, IPC, live job progress), the end-to-end migration test, Playwright E2E.

v0.1.0-alpha.2 — UI preview, ad-hoc signed

Choose a tag to compare

@CXBilen CXBilen released this 27 Aug 22:09

v0.1.0-alpha.2 — UI preview, ad-hoc signed

Migration Assistant, but for developers. This pre-release exists to look at the product flows and give feedback
on the UI. It is an ad-hoc signed (not notarized) Apple Silicon build.

Since alpha.1: the core engines landed on main (pnpm verify green: 510 unit + 65 integration tests), the DMG has a
proper drag-and-drop layout and volume icon, and the app is ad-hoc signed so Gatekeeper no longer reports it as damaged.

⚠️ This build does not read or write anything on your Mac. The renderer runs on built-in preview data
(you will see a "Preview data — the native bridge is not connected" badge). The backup/restore engines, the
.devbackup container and all four providers are implemented and tested in the repository, but the Electron
bridge that connects the UI to them ships in the next alpha.

What you can try

  • The complete Create Backup wizard (projects → scan → review → security review → progress → done)
  • The complete Restore Backup wizard (unlock → contents → path mapping → preflight/plan → progress → report),
    including collision handling and the path-remap preview
  • Diagnostics and Settings, light and dark mode, keyboard navigation

What is in the codebase at this tag

  • .devbackup container: Argon2id + chunked AES-256-GCM, streaming, hardened extraction — docs/backup-format/DEVBACKUP_SPEC.md
  • Providers: Claude Code (metadata-driven session matching, schema-aware path remap), Git (bundle + working-tree
    deltas + worktree reconstruction), project files, runtime manifest
  • 400+ unit/integration tests against fake "Mac A → Mac B" fixtures

Install

  1. Open the DMG and drag Dev Migration Assistant onto the Applications shortcut.
  2. The build is ad-hoc signed but not notarized. On first launch macOS says it cannot verify the developer: click Done,
    then System Settings → Privacy & Security → Open Anyway (macOS 15+), or right-click → Open (macOS 13/14).
    If you see "damaged and can't be opened" instead, remove the quarantine attribute and open it again:
    xattr -dr com.apple.quarantine "/Applications/Dev Migration Assistant.app"
  3. Verify the download against SHA256SUMS.txt.

Next alpha

Electron main/preload bridge (native dialogs, IPC, live job progress), the end-to-end migration test, Playwright E2E.

v0.1.0-alpha.1 — UI preview

Pre-release

Choose a tag to compare

@CXBilen CXBilen released this 27 Aug 21:57

v0.1.0-alpha.1 — UI preview

Migration Assistant, but for developers. This first pre-release exists to look at the product flows and give
feedback on the UI. It is an unsigned Apple Silicon build.

⚠️ This build does not read or write anything on your Mac. The renderer runs on built-in preview data
(you will see a "Preview data — the native bridge is not connected" badge). The backup/restore engines, the
.devbackup container and all four providers are implemented and tested in the repository, but the Electron
bridge that connects the UI to them ships in the next alpha.

What you can try

  • The complete Create Backup wizard (projects → scan → review → security review → progress → done)
  • The complete Restore Backup wizard (unlock → contents → path mapping → preflight/plan → progress → report),
    including collision handling and the path-remap preview
  • Diagnostics and Settings, light and dark mode, keyboard navigation

What is in the codebase at this tag

  • .devbackup container: Argon2id + chunked AES-256-GCM, streaming, hardened extraction — docs/backup-format/DEVBACKUP_SPEC.md
  • Providers: Claude Code (metadata-driven session matching, schema-aware path remap), Git (bundle + working-tree
    deltas + worktree reconstruction), project files, runtime manifest
  • 400+ unit/integration tests against fake "Mac A → Mac B" fixtures

Install

  1. Open the DMG and drag Dev Migration Assistant onto the Applications shortcut.
  2. The build is ad-hoc signed but not notarized. On first launch macOS says it cannot verify the developer: click Done,
    then System Settings → Privacy & Security → Open Anyway (macOS 15+), or right-click → Open (macOS 13/14).
    If you see "damaged and can't be opened" instead, remove the quarantine attribute and open it again:
    xattr -dr com.apple.quarantine "/Applications/Dev Migration Assistant.app"
  3. Verify the download against SHA256SUMS.txt.

Next alpha

Electron main/preload bridge (native dialogs, IPC, live job progress), the end-to-end migration test, Playwright E2E.