Skip to content

Add user-visible migration notice when legacy .deepseek state is relocated to .codewhale #3726

Description

@Hmbown

Problem

The ~/.deepseek/~/.codewhale/ state migration is completely silent. When migrate_legacy_state_dir() relocates a legacy directory (sessions, skills, tasks, etc.), it only emits a tracing::info!() log entry that users never see. Users have no idea their data was moved, where it went, or why their sessions suddenly appear empty.

Reported in:

Current behavior

crates/config/src/lib.rs migrate_legacy_state_dir() (line 3344-3403):

tracing::info!(
    target: "config::migration",
    "Migrated legacy state directory {} -> {} (relocated). The .deepseek copy was removed.",
    legacy.display(), primary.display()
);

This goes to the debug log — invisible to the end user.

Desired behavior

When legacy state is migrated on first run, CodeWhale should print a clear, hard-to-miss banner to the terminal explaining:

  1. What was moved (~/.deepseek/<subdir>~/.codewhale/<subdir>)
  2. That data is preserved
  3. That the user should now use ~/.codewhale/ as the canonical location
  4. Optionally: that they can safely remove ~/.deepseek/ if no other apps use it

The banner should appear once per migration (not every launch), and should be visible even when TUI starts (e.g., in the startup welcome area or as a dismissible notification).

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingenhancementNew feature or requestmigrationProject rename and compatibility migration work

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions