Files
fusion/.changeset/dev-isolated-instance.md
gsxdsm 338dc173ff feat: pnpm dev --isolated runs against its own database and project
Working on Fusion from inside a machine that already runs one, a plain
`pnpm dev` shares that instance's LIVE database. Everything durable hangs off
$HOME/.fusion — settings, credentials, central DB, the embedded Postgres data
dir — and a process pointed at a data dir whose postmaster is already running
attaches to it instead of starting its own.

--isolated spawns the dev child with HOME pointed at a sandbox, so it gets its
own settings, credentials and Postgres cluster on its own port. It also moves
the child's cwd, which is the half that is easy to miss: `fn dashboard`
derives its project from the working directory and has no project flag, so
isolating HOME alone leaves both instances on `<repo>/.fusion` — including
`.fusion/tasks/<id>/`, which the orphaned-task-dir sweep re-imports, so a
fresh dev database would adopt the real instance's tasks.

The sandbox defaults to ~/.fusion-dev/<checkout-name>/{home,project}: outside
the work tree so it neither shows up in git status nor dies on a clean
checkout, and keyed by checkout so two clones cannot collide. The project dir
is git init-ed on first use because Fusion projects are git work trees.
Changing cwd is safe because PRELOAD/LOADER/ENTRY are already absolute.

Verified in a container beside a running Fusion: the isolated instance
reported zero projects while the real one reported two, on separate Postgres
clusters (ports 42617 and 38311).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 21:14:31 -07:00

1.1 KiB

@runfusion/fusion
@runfusion/fusion
minor

summary: Add pnpm dev --isolated to run the dev server against its own database and project directory. category: feature dev: Inside a machine already running Fusion, a plain pnpm dev shares the live database: everything durable hangs off $HOME/.fusion and embedded-lifecycle attaches to an existing postmaster when the data dir already has one. --isolated (also --isolated=<dir>, FUSION_DEV_ISOLATED=1) spawns the dev child with HOME pointed at a sandbox, giving it its own settings, credentials, central DB and Postgres cluster on its own port. It also sets the child's cwd, because fn dashboard derives its project from the working directory and has no project flag — without that, both instances share <repo>/.fusion/tasks/, which the orphaned-task-dir sweep re-imports, so a fresh dev database adopts the real instance's tasks. The sandbox defaults to ~/.fusion-dev/<checkout-name>/{home,project} — outside the work tree and keyed by checkout — and the project dir is git init-ed on first use. Safe because PRELOAD/LOADER/ENTRY are already absolute paths.