Skip to content

fix: do not report a half finished migration as complete - #3146

Merged
abose merged 1 commit into
mainfrom
ai
Aug 27, 2026
Merged

fix: do not report a half finished migration as complete#3146
abose merged 1 commit into
mainfrom
ai

Conversation

@abose

@abose abose commented Aug 27, 2026

Copy link
Copy Markdown
Member

Cutting the bridge mid transfer produced "Migration complete", listed the 816 files that failed as a footnote, and set the done flag. Eight of 824 files had copied, the user was told it succeeded, and the automatic path would never try again.

The cause is that per file errors are caught inside the loop so one unreadable file cannot kill the whole run. A bridge that dies therefore looks like 800 separate file failures rather than one crash, so the interrupted path never fired, which is the exact case it was written for. Only a clean run now records the done flag; anything less stays retryable and is reported as a failure, with the count missing and either the retry promise or the Help menu entry to use.

The dialogs also said too little. "All done." left the user asking what was done, and "did not finish" did not say how far it got. Success now names what came across and where from, as a list of projects, extensions and settings with a file total. Failures lead with how many of how many files copied, and state that what did copy has been kept.

Recent projects came across unusable. The list is absolute paths, and three kinds were broken on arrival: /mnt entries are File System Access mounts whose handles are origin bound and were never migrated, anything that failed to copy is not there either, and the same project could appear twice because ProjectManager hands out a trailing slash while RecentProjects stores none, so the two spellings did not compare equal and one of them failed to open. Entries are now normalised, filtered against what is actually on disk, and merged with the list this origin already had rather than replacing it.

The task list also opens itself when the transfer starts. Nothing else announces the migration now that there is no dialog up front, so without it a user looking elsewhere never learns why the app is busy.

Cutting the bridge mid transfer produced "Migration complete", listed the 816
files that failed as a footnote, and set the done flag. Eight of 824 files had
copied, the user was told it succeeded, and the automatic path would never try
again.

The cause is that per file errors are caught inside the loop so one unreadable
file cannot kill the whole run. A bridge that dies therefore looks like 800
separate file failures rather than one crash, so the interrupted path never
fired, which is the exact case it was written for. Only a clean run now records
the done flag; anything less stays retryable and is reported as a failure, with
the count missing and either the retry promise or the Help menu entry to use.

The dialogs also said too little. "All done." left the user asking what was
done, and "did not finish" did not say how far it got. Success now names what
came across and where from, as a list of projects, extensions and settings with
a file total. Failures lead with how many of how many files copied, and state
that what did copy has been kept.

Recent projects came across unusable. The list is absolute paths, and three
kinds were broken on arrival: /mnt entries are File System Access mounts whose
handles are origin bound and were never migrated, anything that failed to copy
is not there either, and the same project could appear twice because
ProjectManager hands out a trailing slash while RecentProjects stores none, so
the two spellings did not compare equal and one of them failed to open. Entries
are now normalised, filtered against what is actually on disk, and merged with
the list this origin already had rather than replacing it.

The task list also opens itself when the transfer starts. Nothing else announces
the migration now that there is no dialog up front, so without it a user looking
elsewhere never learns why the app is busy.
@sonarqubecloud

Copy link
Copy Markdown

@abose
abose merged commit d0f0a67 into main Aug 27, 2026
15 of 21 checks passed
@abose
abose deleted the ai branch August 27, 2026 20:05
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.

1 participant