Skip to content

fix: run the migration without a dialog and bound the retries - #3142

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

fix: run the migration without a dialog and bound the retries#3142
abose merged 1 commit into
mainfrom
ai

Conversation

@abose

@abose abose commented Aug 27, 2026

Copy link
Copy Markdown
Member

Three changes to how the incoming side behaves.

No confirmation step. The status bar task already says what is happening and the copy is additive rather than destructive, so stopping to ask only added a click to something the user did not choose to start. Completion is a notification carrying the reload action, since copied extensions load on the next boot. A dialog now appears for one reason only, an error.

The dialog could previously reappear on every boot. Declining wrote nothing and the done flag was only written on success, so saying no or losing the connection part way meant being asked again next time, indefinitely. Attempts are now counted the moment a transfer starts rather than when it finishes, so an attempt that dies hard still burns its slot: one attempt, one retry, then the automatic path stops for good and the error names the exact Help menu entry to use. That entry is built from the same format call the menu itself uses, so the two cannot drift apart.

A failure before the transfer starts, meaning the handshake or scan, still costs nothing and stays silent. Being offline for two boots must not permanently cost someone their migration, and those retries are invisible anyway, bounded by the sunset date.

An interrupted run also used to fail silently unless it had been started from the menu, so someone who saw a task appear on boot and then nothing had no way to know. Failures are now reported whichever path started them.

Metrics were count only, which told us nothing about volume or cost. Adds file and byte counts recorded before the run, so the size of what is out there is known even from failures, plus duration, per file cost, failure counts, and the skip reasons. Safari is counted too: without it there is no way to tell "nobody there needed this" from "we never offered it to them".

Sunset date is 2026-09-01.

Three changes to how the incoming side behaves.

No confirmation step. The status bar task already says what is happening and the
copy is additive rather than destructive, so stopping to ask only added a click
to something the user did not choose to start. Completion is a notification
carrying the reload action, since copied extensions load on the next boot. A
dialog now appears for one reason only, an error.

The dialog could previously reappear on every boot. Declining wrote nothing and
the done flag was only written on success, so saying no or losing the connection
part way meant being asked again next time, indefinitely. Attempts are now
counted the moment a transfer starts rather than when it finishes, so an attempt
that dies hard still burns its slot: one attempt, one retry, then the automatic
path stops for good and the error names the exact Help menu entry to use. That
entry is built from the same format call the menu itself uses, so the two cannot
drift apart.

A failure before the transfer starts, meaning the handshake or scan, still costs
nothing and stays silent. Being offline for two boots must not permanently cost
someone their migration, and those retries are invisible anyway, bounded by the
sunset date.

An interrupted run also used to fail silently unless it had been started from the
menu, so someone who saw a task appear on boot and then nothing had no way to
know. Failures are now reported whichever path started them.

Metrics were count only, which told us nothing about volume or cost. Adds file
and byte counts recorded before the run, so the size of what is out there is
known even from failures, plus duration, per file cost, failure counts, and the
skip reasons. Safari is counted too: without it there is no way to tell "nobody
there needed this" from "we never offered it to them".

Sunset date is 2026-09-01.
@sonarqubecloud

Copy link
Copy Markdown

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