Troubleshooting

Keyed by the exact message. The terminal's messages come first, then the pages a tester can see.

In the terminal

Nothing is answering at localhost:3000 — start your app, then share again
Purlview checks the app before it shares. Start the app, check the port, then share again. localhost is tried on both IPv4 and IPv6, so an app bound to either works.
localhost needs a port — try purlview share localhost:3000
Name the app by its port, as purlview share 3000, or by host and port.
Couldn't reach Purlview — check your connection and try again
Your machine could not reach Purlview. Check the connection and any proxy, then try again. A share that was running keeps its link and reconnects on its own.
Not signed in — run purlview login first
Without a terminal, such as in a script or a pipe, a share cannot ask for your email. Run purlview login once in a terminal.
That code didn't match — 4 attempts left
Type the 6 digits from the email again; spaces and dashes are ignored. After five misses, or five minutes, the message becomes ✗ That code has expired — run purlview login to get a new one. Type resend at the code prompt for a new code; before a minute has passed it says ! Wait 40s before asking for another code.
--ttl 2h is over the 1h limit — use 1h or less
A share lasts an hour at most. For a longer call, start a new share when this one expires.
! localhost:3000 stopped responding — visitors see a waiting page
Your app stopped answering, as when a development server restarts. The tester sees The app isn't responding, a page that reloads on its own; when the app answers again the terminal says ✓ localhost:3000 is responding again. A page your app itself returns with an error is an answer, not this.
! Connection lost — reconnecting
Your machine lost its connection to Purlview. The share reconnects with the same link: ✓ Reconnected — same link, still expires 3:42 PM. Meanwhile the tester sees the waiting page.
! Expires in 5 minutes
The hour is nearly up; the share then stops on its own with Share expired. Start a new share and send the new link.
Stopped from another device
The share was stopped with purlview stop on another device of yours, or from the console at purlview.dev.
This device was signed out — run purlview login
This device was signed out from another device or from the console, which also stopped its shares. Sign in again.
! Showing this device only — couldn't reach Purlview
purlview list could not ask Purlview about your other devices, so it lists only this one. Check the connection and try again.
No share k7m2p4qx in your account — see purlview list
The id is not one of your active shares; it may have stopped or expired already. purlview list shows the current ids.
! Purlview was updated — shares started before the update have stopped
Updating stopped the shares that were running. Share again and send the new link.
A newer Purlview is available: 0.9.1 (you have 0.9.0)
A notice, not an error; the share runs as usual. The line beneath gives the command for the way this copy was installed, for example Update: brew upgrade --cask purlview — updating stops running shares.

What a tester sees

The app isn't responding
Your app is down or your connection dropped; the terminal says which. The page says It may be restarting. This page reloads when it's back. and does so.
This share has ended
The share was stopped or expired, or the link's id is unknown. The page says Ask the person who sent it for a new link. Share again and send the new link.
An emailed link works once, and one from the request page for 5 minutes. The page offers Send new link, which returns to the request page for that share.
A secret link was pasted without its ending. Print it again with purlview link k7m2p4qx and send the whole line.
The tester opened the app's address directly instead of the link. Their browser gets in only through the link you sent, or the invite.
Enter a valid email address.
What was typed on the request page is not an email address. Any address is accepted and sees the same next page; only an address you named with --to receives a link.