Clarify hosted deletion edge-case copy - #543
Conversation
Contain a full npub inside the deletion dialog alert and blocked-owner notice, explain unauthorized identity responses without assuming an expired session, say "Try again." when a cleared slot can be retried directly, and stop asking the same identity to switch to itself when a pending request belongs to another origin. Signed-off-by: Elrond <28d6302a099e5225b02c4155ac4236e4912603df2ab08dbfc2f4fef08ce598c8@buzz.block.builderlab.xyz>
Signed-off-by: Elrond <28d6302a099e5225b02c4155ac4236e4912603df2ab08dbfc2f4fef08ce598c8@buzz.block.builderlab.xyz>
Name the other-origin case by what the code knows, give the dialog a next step, pin that Start deletion sends after "Try again.", and drop the notice wrap class and span check that guarded nothing. Signed-off-by: Elrond <28d6302a099e5225b02c4155ac4236e4912603df2ab08dbfc2f4fef08ce598c8@buzz.block.builderlab.xyz>
Signed-off-by: Elrond <28d6302a099e5225b02c4155ac4236e4912603df2ab08dbfc2f4fef08ce598c8@buzz.block.builderlab.xyz>
wesbillman
left a comment
There was a problem hiding this comment.
No changes requested: this focused follow-up addresses the four #403 copy/layout nits without changing deletion admission or recovery behavior. Star Lord automated source review via Wes’s account, head 61cb168fff06be25ed7f3c3043972d0509adadbf against base f869df84ed24e3ca176e978c7476c0d0e088a44a. The added component cases cover both other-origin entry points and direct retry, and the browser case appropriately targets text containment. Source-only: no tests or app execution performed; the current-head CI/DCO snapshot passes, but live deletion, real cross-tab behavior, packaged-native support and human acceptance remain unverified.
wesbillman
left a comment
There was a problem hiding this comment.
Carl, an automated reviewer, commenting via Wes’s GitHub account.
No blockers found; safe to approve this narrow copy/layout follow-up. Reviewed head 61cb168fff06be25ed7f3c3043972d0509adadbf against base f869df84ed24e3ca176e978c7476c0d0e088a44a.
The wording follows the existing owner/origin checks and direct-retry path. Deletion admission, persistence and recovery logic are unchanged. Component coverage checks retained recovery records, no unintended POST, and a single direct retry; the browser journey targets the actual overflow regression.
Validation: source review and clean git diff --check; existing current-head CI is green, including both JavaScript shards and all Chromium/WebKit journey shards. I did not run tests or the app locally. Live deletion, a real simultaneous two-tab race and packaged-native acceptance remain outside this review; this is not approval to enable the default-off deletion capability.
Follow-up to #403. This fixes the four non-blocking copy and layout items from the #403 review. Behavior is unchanged: nothing new is sent, stored or removed.
Changes
<span>getsmin-w-0 wrap-anywhere, so a long npub wraps instead of running past the dialog edge. The page notice already wraps through the global paragraph rule.unauthorizedcopy. The old text assumed an expired session. The identity endpoint also returns this code when the account isn't authorized for Buzz identities. New text: "This Builderlab account can't manage Buzz identities right now. Try signing in again."backend_origin, the notice and the final-confirmation error used to ask the user to switch to the identity they are already using. Both now say the request was saved from a different app address on this device and point to support. The dialog shows that next step too, since the modal hides the page notice.Tests
unauthorizedassertions. The "Try again." test now presses Start deletion again and asserts exactly one POST whose body equals the stored request. Added two cases for the same-owner, other-origin envelope: the page notice, and the error at final confirmation.tests/browser/settings.spec.mjs): added one journey. It inserts a foreign owner's envelope while the dialog is open, then asserts that the dialog doesn't overflow horizontally, and that the page notice doesn't either after Cancel. The notice check only guards against regressions, because the global paragraph rule already wraps it. This needs a browser because jsdom has no layout, so a lower layer can't prove the text stays inside the dialog.Validation at
61cb168fpnpm check,lint,format:checkandgit diff --checkagainstf869df84all pass.tests/browser/settings.spec.mjsin Chromium passes 8/8 with one worker and no retries.f869df84and these tests, exactly the 6 changed Vitest cases fail, and the new journey fails at the dialog containment assertion.What got simpler
Nothing structural. The diff is copy and two utility classes, plus one ternary to separate the other-origin case. No new state or concepts.
Not covered
These are unchanged from #403: the live backend, the packaged native app, and a real two-tab race.