Skip to content

fix(core): make JSON-to-SQLite migration truly one-time#16884

Open
vereis wants to merge 1 commit intoanomalyco:devfrom
vereis:fix/json-migration-marker
Open

fix(core): make JSON-to-SQLite migration truly one-time#16884
vereis wants to merge 1 commit intoanomalyco:devfrom
vereis:fix/json-migration-marker

Conversation

@vereis
Copy link

@vereis vereis commented Mar 10, 2026

Issue for this PR

Closes #16885

Type of change

  • Bug fix
  • New feature
  • Refactor / code improvement
  • Documentation

What does this PR do?

The startup JSON->SQLite migration gate currently checks for ~/.local/share/opencode/opencode.db. On non-latest channels, the active DB can be channel-specific (for example opencode-local.db), so that filename check can stay false forever and migration reruns every launch.

This change switches the gate to a dedicated marker file at ~/.local/share/opencode/storage/json-sqlite-migration.done and writes that marker after a successful migration run. That makes the migration truly one-time regardless of DB filename/channel.

Why this approach instead of checking channel DB names: checking channel DB filenames only fixes the rerun case, but not the skip case where a DB file exists from prior schema migrations even though JSON->SQLite import never completed. A dedicated migration-completion marker tracks the actual event we care about.

How did you verify your code works?

  • Reproduced repeated migration locally before the change (migration banner showed on each startup)
  • Applied this patch and validated migration no longer reruns after completion
  • Ran typecheck locally using nix-provided bun:
    • nix shell nixpkgs#bun --command bun install
    • nix shell nixpkgs#bun --command bun run --cwd packages/opencode typecheck

Screenshots / recordings

Before:
image

After:
image

N/A (CLI startup behavior change, no UI change)

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

@github-actions github-actions bot added needs:compliance This means the issue will auto-close after 2 hours. needs:issue labels Mar 10, 2026
@github-actions
Copy link
Contributor

Thanks for your contribution!

This PR doesn't have a linked issue. All PRs must reference an existing issue.

Please:

  1. Open an issue describing the bug/feature (if one doesn't exist)
  2. Add Fixes #<number> or Closes #<number> to this PR description

See CONTRIBUTING.md for details.

@github-actions github-actions bot removed needs:issue needs:compliance This means the issue will auto-close after 2 hours. labels Mar 10, 2026
@github-actions
Copy link
Contributor

Thanks for updating your PR! It now meets our contributing guidelines. 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

JSON->SQLite one-time migration reruns on channel-specific DBs

1 participant