mirror of
https://github.com/nestriness/nestri.git
synced 2026-09-29 22:22:26 +03:00
feat(nesdoctor): close the loop with a submit link, and three corrections
The run used to end by asking someone to copy a line and paste it "wherever you
got this from". That is not a loop, it is a hope. At a few hundred people in one
quiet channel, with one shot and no chance to say "please run it again, we made
a mistake", the drop-off between seeing output and pasting it somewhere is
where the whole exercise dies.
So the run now ends with a link, a plain-English list of what the link
contains, and Enter to open it. No account, no form, no mail client, no
assumption about being logged into anything.
· Query parameters, not an encoded blob. A blob would be shorter and would
let us send more; it would also mean the person clicking cannot read what
they are sending, which is the one thing this program has going for it.
· It carries more than the clipboard line did, because nobody has to eyeball
it in a chat window: every requirement check individually rather than only
the aggregate verdict -- which single requirement stops people is the thing
worth knowing -- plus the full latency triple, the 24-hour launch
histogram, and the five largest titles.
· `--submit-url` points it at a local worker; `--no-open` prints only.
· The clipboard line stays as the offline path: a headless host, a machine
with no browser, or somebody who would rather not click a link we wrote.
Three corrections
1. Steam consent now defaults to yes. This is a questionnaire and the person
running it knows that; defaulting to no framed our own instrument as
something to be wary of, and the yes/no still asks.
2. The virglrenderer check is gone. It could only ever report "present,
patch state unknown" -- a row incapable of passing -- and the box now
carries its own virglrenderer and Mesa inside the image it runs in, so the
host's copies are not on the path. It was telling prospective hosts their
machine was wrong when it was not.
3. The roadmap question -- cloud, or reach my own machine from anywhere -- is
now question one, of everybody. It was going to be a channel poll, and the
channel is no longer the only way in. It is asked first because a
respondent who quits after one question should have answered that one.
Two collisions found while wiring it up: the `gpu` check id overwrote the GPU
model parameter (last-writer-wins in a query string is a silent loss), so check
ids are prefixed `ck_`; and both renderers now take the assembled report rather
than seven positional arguments that had to be kept in step by hand.
This commit is contained in:
@@ -61,6 +61,8 @@ always a router setting rather than a line you need to upgrade.
|
||||
| `--yes` | Take the defaults — for a second run, not a first |
|
||||
| `--json <PATH>` | Where to write the full report |
|
||||
| `--quiet` | Only the summary line, for scripting |
|
||||
| `--no-open` | Do not offer to open a browser; just print the link |
|
||||
| `--submit-url` | Where the submit link points (default `https://doctor.nestri.io`) |
|
||||
|
||||
## Verdicts
|
||||
|
||||
@@ -73,14 +75,30 @@ always a router setting rather than a line you need to upgrade.
|
||||
| `CLIENT` | Not a host. A complete answer, and what most machines are |
|
||||
| `UNKNOWN` | A blocking check could not be run. An unknown is not a no |
|
||||
|
||||
## Sending it back
|
||||
|
||||
At the end it prints a link, lists in plain English what the link contains, and
|
||||
opens it when you press Enter. That is the whole submission — no account, no
|
||||
form, no email client.
|
||||
|
||||
The link is built from **readable query parameters** rather than an encoded
|
||||
blob. A blob would be shorter and would let us send more; it would also mean you
|
||||
cannot read what you are sending, which is the one thing this program has going
|
||||
for it.
|
||||
|
||||
If you would rather not click a link we wrote, the short line is printed too and
|
||||
put on your clipboard.
|
||||
|
||||
## What it deliberately does not tell you
|
||||
|
||||
- **A pass is not a promise.** Every check is a *necessary* condition. Nothing
|
||||
here runs under load, so a machine that passes can still fail on block I/O.
|
||||
- **`vulkaninfo` reporting the encode extension is not proof the path works.**
|
||||
We have had a correct extension list over a broken path before.
|
||||
- **Whether `libvirglrenderer` carries the native-context patches cannot be
|
||||
determined from outside**, so that row reports presence only.
|
||||
- **The host's `virglrenderer` and Mesa are not checked at all**, on purpose.
|
||||
The box carries its own inside the image it runs in, so the host's copies are
|
||||
not on the path — and a row that could only ever say "present, patch state
|
||||
unknown" told prospective hosts their machine was wrong when it was not.
|
||||
|
||||
## Building
|
||||
|
||||
|
||||
Reference in New Issue
Block a user