feat(recoverbull): explain Tor connection progress - #2585
Conversation
|
Claude finished @ethicnology's task in 7m 10s —— View job Code review
Note: posting inline review comments ( SummaryThe rewrite is careful and well-documented, and most of the PR's claims check out: the navigation dedup guard is correct, 🔴 The grace-period blockage explanation never renders while Tor is still connecting
bool get _hasFailure =>
_torPhase == _PhaseState.failed || _serverPhase == _PhaseState.failed;In the mainline scenario this PR describes (device offline, Suggested fix: bool get _hasFailure =>
_torPhase == _PhaseState.failed ||
_serverPhase == _PhaseState.failed ||
_diagnostic != null;The tests cover the 🟡 The elapsed counter is misattributed to the server phase and never resets on retry
A single page-lifetime
Tracking a phase start timestamp (reset when the active phase changes and on retry) would make both readings honest. Fix this → 🟢 Minor: the mount-time state is not processed by the listener
Verified while reviewing
|
0a59df7 to
71138e1
Compare
71138e1 to
020ab85
Compare
020ab85 to
35f244b
Compare
3cf4541 to
887acf4
Compare
887acf4 to
3205859
Compare
3205859 to
5077823
Compare
5077823 to
4284613
Compare
4284613 to
81af8b7
Compare
81af8b7 to
47e3372
Compare
47e3372 to
4334d76
Compare
4334d76 to
09374a0
Compare
Stacked on the
feat/tor-persistencePR. Review that one first.The connecting screen is what the user stares at for the whole Tor bring-up, which takes 40s or more on a cold directory. It rendered an empty body on device: the title, both phase rows and the reassurance line were laid out but never painted.
It now shows what the data can honestly support: two named phases — Tor network, then RecoverBull server — an elapsed counter, and, when arti reports a blockage that outlives a short grace period, an explanation that the network rather than the app is the problem.
Two omissions are deliberate:
The grace period exists to ride out a transient readiness dip, so it deliberately does not apply to a terminal failure:
TorUnavailablecarries its diagnostic straight through, otherwise the reason was dropped exactly when it stopped being provisional and the user was told to "try again" with no explanation.Also fixes a navigation defect in this screen: readiness is not a single event — Tor republishes
TorReadyon every directory refresh and the key-server check emits its own states — so the success condition is satisfied repeatedly and each repetition pushed another route, stacking duplicate pages behind the visible one. Guarded, with a test that replays the device sequence.