usebruno/bruno · error · Error

Failed to reopen collection after migration

Error message

Failed to reopen collection after migration

What it means

Error "Failed to reopen collection after migration" thrown in usebruno/bruno.

Solutions

  1. Close and reopen the collection manually from its directory.
  2. Check the collection directory still exists and is readable.

When it happens

Trigger: Thrown at packages/bruno-electron/src/ipc/yml-migration.js:282 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of usebruno/bruno@9bdd81c7bd (2026-08-13). Data as JSON: /api/errors/316f9caa710d99e0. Report an issue: GitHub.

Appendix: source

Thrown at packages/bruno-electron/src/ipc/yml-migration.js:282

    mainWindow.webContents.send('main:display-error', { message });
  };
  // The renderer dropped the collection from its store before invoking us, so on every
  // exit — success, failure or cancel — re-open from disk; the renderer re-creates and
  // mounts it fresh via the normal main:collection-opened flow (same deterministic uid).
  // openCollection catches load errors and returns { opened: false, error } rather than
  // always throwing, so treat that shape as failure too.
  const reopenCollection = async () => {
    let result;
    try {
      result = await openCollection(mainWindow, watcher, collectionPathname);
    } catch (reopenError) {
      console.error('Failed to reopen collection after migration:', reopenError);
      throw reopenError;
    }
    if (result?.opened === false) {
      const message = result.error || 'Failed to reopen collection after migration';
      console.error('Failed to reopen collection after migration:', message);
      throw new Error(message);
    }
  };

  let result;
  try {
    result = await migrateCollectionOnDisk({
      collectionPathname,
      brunoConfig,
      backupRootDir: path.join(app.getPath('userData'), 'tmp', 'yml-migration'),
      checkCancelled,
      emitProgress,
      reportError
    });

    // Remap .bru → .yml tab paths across EVERY workspace snapshot entry for this
    // collection. Force-flushing only rewrites the active workspace; shared
    // collections keep per-workspace tab lists that would otherwise restore as
    // dead "Not Found" tabs after switching workspaces.

View on GitHub (pinned to 9bdd81c7bd)