v1 release prep: docs, zero-state, error handling, defaults#4
Merged
Conversation
Addresses the blocker and high-priority items from the v1 readiness audit. All changes are localized polish fixes — no architectural or functional changes to core data flow. Documentation (README.md): - Rewrite Quick Start to use ASIC Miners → Add Device flow (the old Monitoring tab no longer exists) and add a Mobile Miners subsection covering the pairing code flow - Fix Configuration section to correctly split %LOCALAPPDATA% vs %APPDATA% on Windows with a per-file inventory so users can back up the right directories - New "First Launch on Windows" section covering Windows SmartScreen unrecognized-app warning (expected until code signing lands) and the Windows Defender Firewall prompt for the optional mobile telemetry listener Accurate hardware list (Settings → About): - Replace "Iceriver KS0 / KS0 Pro / KS0 Ultra" with the full supported fleet: Iceriver KS0-KS5, Whatsminer M50/M56/M60/M66, Antminer S19/S21 — prevents testers with Antminer/Whatsminer hardware from quitting thinking their gear isn't supported Dashboard zero-state (Dashboard.tsx): - When both ASIC and mobile counts are zero, short-circuit the dashboard content with a full-viewport welcome card instead of rendering 7 zero-value stat cards above a tiny empty-state hint - Welcome card has "Add ASIC Miner" and "Add Mobile Miner" CTAs routing to the respective pages, plus a pointer to Settings → About for docs and GitHub link - Existing "No miners found" inner hint preserved — it still handles the asymmetric case where ASIC list is empty but mobile miners exist Error handling (MinerList.tsx, MobileMinerList.tsx, MobileMinerDetail.tsx): - Replace four window.alert() calls with inline red-tinted banners inside the existing confirmation modals so failed remove operations surface cleanly in-app instead of triggering native Windows alert dialogs - MobileMinerList gets two separate error states (single-device and bulk) so each modal shows its own scoped error Logging noise (Dashboard.tsx): - Downgrade "Poll cycle start" and "Poll cycle complete" log lines from info to debug so testers opening popmanager.log can find real errors instead of wading through poll spam Mobile server default (mobile_miner.rs): - Flip default_enabled and MobileServerConfig::default from true to false. Fresh installs no longer auto-open port 8787 or trigger a Windows Firewall prompt. Users who want mobile miner support opt in via Settings → Mobile Miner Server. Existing installs with mobile_server_config.json on disk are unaffected.
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Addresses the blockers and top high-priority items from the v1 readiness audit. Every change is localized polish — no architectural or functional changes to core data flow. 8 targeted fixes across 7 files, +127/-29.
This is the last PR I'm planning before cutting a v1 tag and handing builds to external testers.
What this fixes
Blockers (docs + stale copy)
. Only preferences/history/uptime go to \%APPDATA%\`. Testers trying to back up their setup would have missed half their data. Now documents both directories with a per-file inventory.High-priority first-impression fixes
Dashboard zero-state welcome card — on a fresh install with no miners, the dashboard used to render 7 zero-value stat cards above a tiny empty-state hint. Now short-circuits to a full-viewport welcome card with "Add ASIC Miner" / "Add Mobile Miner" CTAs when both counts are zero. The existing inner "No miners found" hint is preserved for the asymmetric case (ASIC empty, mobile present or vice versa).
Replace `window.alert()` with inline error banners — four call sites in the removal flows (`MinerList.tsx:986`, `MobileMinerDetail.tsx:126`, `MobileMinerList.tsx:711, 754`) used native browser `alert()` dialogs which look unprofessional on Windows. Now each confirmation modal has a red-tinted error banner that appears if the Tauri command rejects. MobileMinerList gets two separate error states (single-device and bulk) so each modal shows its own scoped error.
Downgrade poll-cycle logs to debug — `info("Poll cycle start")` and `info("Poll cycle complete")` in Dashboard.tsx were firing every 45 seconds at info level. Testers opening `popmanager.log` from Settings → Troubleshooting would see a wall of poll-cycle spam drowning out real errors. Now logged at debug level so they only appear when users bump log level to debug.
Mobile miner server defaults to `enabled: false` — fresh installs no longer auto-open port 8787 or trigger a Windows Firewall prompt for users who have no interest in mobile miners. The Settings → Mobile Miner Server toggle remains in place so users who want mobile support can opt in with one click. Existing installs with `mobile_server_config.json` already on disk are unaffected (this is intentional — no migration).
What this does NOT fix (deferred to v1.1 post-tester-feedback)
These are in the "nice to have" tier of the audit and intentionally left for after the first round of external feedback:
Also deferred:
Verification
After merge: v1.0.0 release process
Once this lands, the v1 cut looks like:
Files changed
```
README.md | +43 -7
src-tauri/src/commands/mobile_miner.rs | +2 -2
src/pages/Dashboard.tsx | +45 -2
src/pages/MinerList.tsx | +9 -1
src/pages/MobileMinerDetail.tsx | +11 -3
src/pages/MobileMinerList.tsx | +23 -6
src/pages/Settings.tsx | +1 -1
7 files changed, 127 insertions(+), 29 deletions(-)
```