Skip to content

FAQ

You get the answer to the questions the first week raises, in a paragraph each. For a problem that is not here, see Troubleshooting.

As long as the desktop app runs. Settings → Your phone → Enable phone access (or Enable phone access… in the app menu) starts a Cloudflare quick tunnel to your laptop; if your Wi-Fi drops or the laptop sleeps, cloudflared reconnects by itself and the address stays the same. Quitting the app ends the tunnel; the next Enable phone access gets a new address, so scan the code again. (A quick tunnel cannot keep a name; a named tunnel needs a Cloudflare account and is on the roadmap.) If cloudflared itself crashes, the app restarts it once with a new address and shows a notification, “Phone address changed — rescan the code”. A second crash within 5 minutes stops it; the card and the menu show phone access as off and say why.

The tunnel changed since the phone last opened the app — you quit and relaunched, or the tunnel was restarted. On the Mac, open Settings → Your phone (or Show phone access code… in the app menu) and scan the new code. Scanning signs the phone in as you; then Add to Home Screen again so the home-screen icon points at the new address, and turn Settings → Push → This device back on, since push is bound to the address.

The login page says the phone code expired

Section titled “The login page says the phone code expired”

A code is single-use and valid for 30 minutes from the moment it is shown. On the Mac, press New code in Settings → Your phone (or open Show phone access code… in the app menu) and scan again. The phone does not need a second GitHub sign-in: scanning a valid code signs it in as the person signed in on the Mac.

Open the account ⋯ menu at the foot of the sidebar and choose Switch GitHub account. It signs you out and opens the sign-in step (the welcome wizard on the desktop app, the login page on a team server). Everything you posted stays under the account that posted it.

On the desktop app, Repositories in the sidebar (also Settings → Repositories) lists the repositories you own, collaborate on or belong to through an organisation. Tick or untick and save; the queue filter and the badge follow at once. On a team install, repositories are REPOS in .env (restart after editing) or REPO_ALLOW_ORG for a whole org; see Team mode → Many repositories.

Desktop app: no. Posting is live from the first run, and the Post button is the gate — nothing reaches GitHub until you press it. To rehearse without posting, add DRY_RUN=1 to ~/.reviewstage/.env and relaunch. Team install (Docker or from source): yes, DRY_RUN=1 ships on. Every button works, the payload it would have sent is saved for you to inspect, and nothing is written to GitHub until you set DRY_RUN=0 and restart. It is deliberately not a runtime setting.

Not yet. The server’s job scripts are bash; a WSL-hosted server with the Electron shell on Windows is the planned shape. Until then, use the Docker install under WSL2, or a Linux or macOS machine. Linux x64/arm64 and macOS 12+ (Apple Silicon and Intel) are supported.

Under ~/.reviewstage: .env (written by the app), settings.json (your repositories, poller interval), bin/ (the fetched gh, jq, cloudflared and a flock shim), state/ (every run), repos/ (one clone per repository), users.json (who signed in; tokens encrypted), server.log. Delete the directory to start over. npx reviewstage --doctor prints one PASS / WARN / FAIL line per check.

MIT licensed · Built on Claude Code