From the independent review of this pull request:
- The links are built from the parsed address (scheme, host, path); an address
with a user name, a query or a fragment, and a version with a control
character, are refused.
- An invitation too long for a link (FitsInALink) is shown for copying instead
of being handed to a mail program that might cut it short.
- A launch that throws is treated like one that found no mail program.
- The log says what happened after it happened, including a dialog that could
not be shown because another one is open.
- The clipboard copy is flushed, so the text survives gclo closing.
- The box that holds the text tells a screen reader why the dialog is there.
- The message no longer sends its reader to the issue tracker: filing an issue
there needs an account, and registration is closed. The reader is asked to
tell the sender.
Refs #163
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
The fallback dialog copied the invitation to the clipboard before it showed
itself. The clipboard belongs to the whole desktop: when another program
held it the dialog never appeared, and under the UI suite the copy overwrote
whatever the person at the machine had copied. The copy is now best effort,
the dialog says whether it happened, and the UI fixture skips it.
Refs #163
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
The text box was given its text before it was told to take several lines,
and a one-line box keeps only the first line of what it is given. Found by
the UI test for this dialog on its first run.
Refs #163
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
Help > Share gclo by email opens a new message in the user's email program
with an invitation already written: what gclo is, where to download the
latest release, how to install it (the installer, and Scoop for the command
line), where the documentation is, and where to send feedback. No
recipient is filled in, so the user types an address and sends. gclo
itself sends nothing, and nothing about the user, their accounts, or their
repositories is in the text.
- ShareInvitation (gclo.ViewModels) writes the subject, the body, and the
mailto link, and keeps the link short enough for mail programs that cut
long ones.
- The shell hands the link to the system. When no email program takes it,
the invitation is copied to the clipboard and shown, to be pasted into a
message by hand. Under the UI test fixture it is only shown, so the
suite opens nothing on the machine it runs on.
Closes#163
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>