Skip to content

feat(mac): copy generated passwords from the dialog, and say less to ask more - #233

Merged
dvcdsys merged 1 commit into
developfrom
fix/launcher-dialog-copy
Aug 10, 2026
Merged

feat(mac): copy generated passwords from the dialog, and say less to ask more#233
dvcdsys merged 1 commit into
developfrom
fix/launcher-dialog-copy

Conversation

@dvcdsys

@dvcdsys dvcdsys commented Aug 10, 2026

Copy link
Copy Markdown
Owner

The password is one click from the clipboard

Both the first-run wizard and Reset Password… show a generated credential
that has to be typed into a browser. Ab3-xY_9kQ is exactly the thing people
mistype.

AppleScript cannot make a run of text clickable — display dialog draws one
static string — so the click target is a button. The dialog re-shows after
copying rather than dismissing: a password displayed once is what someone
reaches for twice, and a window that vanishes on the first attempt is how
credentials end up being read off a screenshot.

The value reaches the clipboard through a pipe to pbcopy, not through
AppleScript's set the clipboard to, which would place a secret inside a
script string — one quoting mistake from being interpreted.

The wizard leads with the instruction

Before:

cix needs an administrator account before it can start.

Enter the email address to sign in with. A password will be generated for you,
and you will be asked to change it the first time you log in.

Setup then downloads the cix server itself — around 40 MB — which takes a moment.

After:

Enter an email address for the administrator account.

It is the login for the cix dashboard on this Mac — nothing is sent anywhere.
A password is generated for you, and setup then downloads the server (about 40 MB).

It opened with why and buried what to do in the second paragraph, which
reads like a sign-up form — and left unanswered the question everybody asks:
where is my address going. Nowhere.

Gatekeeper: two blocks, not one

doc/MACOS_APP.md and the release body promised a single trip to System
Settings. There are two — the downloaded disk image is refused when opened, and
the app is refused again on first launch, because it inherits the quarantine
flag from the image it was dragged out of.

Confirmed on a genuinely quarantined build: spctl -a -t open rejects the image
whether or not it carries the flag, so the flag only decides whether that
verdict is enforced. Both documents now say so, and both tell people to choose
Done rather than Move to Bin.

🤖 Generated with Claude Code

…ask more

Two changes to what the first-run wizard and the password reset put on screen.

**The password is now one click away from the clipboard.** Both dialogs show a
credential that has to be typed into a browser, and a value like Ab3-xY_9kQ is
exactly the thing people mistype. AppleScript cannot make a run of text
clickable — `display dialog` draws one static string — so the click target is a
button, and the dialog re-shows after copying rather than dismissing: a
password displayed once is what someone reaches for twice, and a window that
vanishes on the first attempt is how credentials end up being read off a
screenshot. The value goes to pbcopy through a pipe rather than through
AppleScript's `set the clipboard to`, which would put a secret inside a script
string, one quoting mistake from being interpreted.

**The wizard leads with the instruction.** It opened with why an account is
needed and buried "enter the email address" in the second paragraph, which
reads like a sign-up form — and left unanswered the question everybody actually
asks: where is my address going. Nowhere. Saying so is worth more than the
explanation it replaced.

Also corrects the Gatekeeper instructions, in doc/MACOS_APP.md and in the
release body. They promised one trip to System Settings. There are two: the
downloaded disk image is refused when it is opened, and the app is refused
again on first launch, because it inherits the quarantine flag from the image
it was dragged out of. Confirmed with a genuinely quarantined build —
`spctl -a -t open` rejects the image whether or not it carries the flag; the
flag only decides whether that verdict is enforced.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@dvcdsys
dvcdsys merged commit 71a735e into develop Aug 10, 2026
2 checks passed
@dvcdsys
dvcdsys deleted the fix/launcher-dialog-copy branch August 10, 2026 21:50
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