Conversation
Asked for by a user who runs one client, switches identity in Sidecar rather than in the client, and would rather Sidecar sign as whatever is active than be asked every time. Their reasoning holds: Sidecar cannot see which slot the client has selected, and they are volunteering to keep the two in step themselves. Off everywhere until turned on, and scoped to ONE HOST. Host-scoped rather than per account is not an implementation detail: "do not ask me which account on this host" is a claim about the host, and storing it per account would let A opt out while B had not, on the one host where the whole point is that they share it. IT SUPPRESSES THE CONFIRM AND NOTHING ELSE, which took two goes. sharedHost drives both the shared-identity confirm and appDataAutoAllow, so the first cut cleared sharedHost and would have made app-data signs start asking. More prompts rather than fewer, exactly backwards. It gates sharedIdentity instead, and a test pins that sharedHost is left alone. It is also not a different choice, only a skipped question: the swap to the global active account already ran before this existed and still runs either way, and a block on the account it swaps to is still honored. The row says what it costs in the same breath as what it saves, because a setting that removes a safety prompt reads as a convenience toggle otherwise. Forgetting a site, singly or in bulk, forgets this with it: an erased host must not keep a standing instruction to skip the check.
The row borrowed .tg-input, .tg-track and .tg-thumb, which live in content.js's CARD_CSS and do not exist in the panel stylesheet at all. So the switch rendered as a bare browser checkbox and the two empty spans drew nothing. Nesting the explanation inside the row on top of that squeezed it to one word per line. The panel's own idiom is a .toggle-row carrying the switch and its label, with the explanation as a SIBLING paragraph beneath, which is how every other setting in here is built. This uses that, which also means it inherits the accent color and the disabled state for free, and the stylesheet drops to a separator and its spacing. The toggle disables itself while the write is in flight, matching the dev controls, so a fast second click cannot race the first. Pinned: a test now fails if any of those four page-card class names come back.
As a plain checkbox row it read as one more preference, which is the wrong weight for the only control in that sheet that turns a safety confirm off. Tinted with .kind-warn's construction, --warn-rgb at 0.1 over a 0.3 border, since this is the same class of thing that pattern already exists for: not a setting, an exception the user is deliberately making. The label stays in --text so it stays comfortably legible, and the consequence carries the warn color, because that sentence is the reason the row is there at all.
Three things were wrong and they had one cause: it was built as its own thing rather than as another row in a sheet that already had rows. The leading checkbox pushed the wrapped label into a ragged indent. It sits at the right edge now, with the text in the left column, which is exactly what the account rows above it do. The tint made a box inside a box. It carries a top rule instead, so it still reads as a separate decision from the list without becoming its own panel. The weight comes from the warn-colored note and the warn accent on the control. And the explanation was a paragraph of small type repeating what the paragraph at the top of the sheet already said. One line now, capped by a test so it cannot grow back: "Skips the confirm. Posts may not match the client."
Three rewrites kept moving the layout when the problem was the strings. At this
width the text column is about 240px with the control at the right edge, so a
label over roughly 26 characters wraps and orphans its last word. The label was
38 and the note was 49, which is four lines of text beside one small checkbox.
"Always sign as Sidecar's active account" -> "Don't ask which account"
"Skips the confirm. Posts may not match the client."
-> "Posts may not match the client."
The sheet's opening paragraph went the same way: 275 characters over six lines,
describing what the list directly underneath it already shows. It is 103 now and
says the two things a reader needs, which are why the confirms are happening and
what stops them.
Every one of those strings is now capped by a test, measured rather than judged,
so the next edit cannot quietly put the wrapping back.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this does
For users who run one client and switch identity in Sidecar rather than in the client: a per-host opt-out that stops the "which account is posting" confirm on shared-identity hosts. The reasoning (from the requesting user) holds — Sidecar cannot see which slot the client has selected, and they are volunteering to keep the two in step themselves.
Relation to #340
Issue #340 (filed separately) asks for the explanatory note around these confirms to be silenceable. This branch is the deeper lever for the same audience — it removes the confirm itself, per host, deliberately. They compose: this opt-out takes precedence where set, #340 only quiets the note elsewhere.
Testing
1605 tests green on the branch (main's suite plus
test/always-active-account.test.js). Merges cleanly into currentmain; overlaps PR #341 only insidepanel.js/styles.cssregions far from the composer, so whichever lands first rebases trivially.