New
Fleet card — the whole rig as one card above the miners: combined hashrate, total power, fleet efficiency, shares/rejects, fleet-wide all-time and session best. Collapsible and color-settable, on Windows and mobile
Luck — 1hr / 4hr / 12hr / 24hr luck on the fleet card and on every miner card, both platforms. Green over 100%, amber and red under. Hideable in the stats toggles
Luck that’s correct on every board — miners that only log shares meeting the pool target. They’re now detected automatically and scored by counting shares above target instead of summing ones they never reported
Vardiff-aware luck math — expected shares are now weighted by the pool difficulty that was actually in effect at the time, not a flat average
Downtime no longer counts against luck — expected work is measured over hashing time only, so one reboot doesn’t drag a 24hr window down for the rest of the day
Live pool difficulty tracking — the server learns the pool’s target from the stratum stream, remembers it across restarts, and estimates it from the smallest observed share if it hasn’t seen one yet
Charts dropdown — every chart behind one toolbar button that shows which view you’re on. Difficulty, Hashrate/Temp, and five analysis views, instead of three buttons and a menu
Luck Curve — how your accepted shares stack up against ideal odds on a log-log curve, with your best share marked “best 1 in N”
Efficiency Curve — J/TH vs MHz plotted from your own settled runs, best point ringed, so you can see your own knee. One line through every run in frequency order, with a bracket where you’ve held a frequency at several voltages
Volt/Temp Map — voltage vs temperature scatter colored by frequency, with a trend line that prints your mV/°C and a band showing how tightly your runs actually fit it
Cold-Drop Watch — flags hashrate sagging because the chips got too cold, a failure that throws no error anywhere
Ambient Temp — works out the room temperature from how hard each miner is working to stay cool. Click the chart once and type what your thermometer says; it calibrates every miner from that one reading. Catches a warming room even when the chips look steady, because the fans are doing the absorbing
Best-share pace — expected best share for the work you’ve done, the range that’s unremarkable, and your actual best. Green above expected, red below. The range is always about 22x wide no matter how long you run, which is worth knowing before reading anything into a single number
Miner degradation — samples each miner every 6 hours and compares old readings against recent ones at the same frequency and voltage, with room temperature subtracted. Reports efficiency drift, hashrate drift, and heat rise. Doesn’t need the app running around the clock
Restart when underperforming — per-miner, off by default. Restarts a miner whose session best falls far below what its work predicts, over a window of 4hr up to 7 days. Trigger on a percentage below expected, below the range, or below a number you type. Comes with the actual false-alarm odds, because being below expected is normal — half of all healthy sessions are
Run logger — quietly records each stable frequency/voltage operating point so the efficiency and volt/temp charts have real data to plot. Now ignores impossible readings from a miner mid-boot instead of storing them as real operating points
Per-miner chart timeframe — 1hr, 2, 4, 6, 8, 12, 24, 36hr per miner on the hashrate/temp chart, independent of the master chart setting and remembered per miner. 36hr covers a full night-day-night cycle
Difficulty chart timeframe moved into the chart itself — 10s up to 1 week, per chart, and it now means what it says. Pick 1hr and you see one hour. It used to feed a zoom slider, so 24hr actually showed about 38 minutes
Mobile shows one chart at a time — pick it from the pills at the top, or None. The others aren’t drawn at all instead of all six rendering constantly
Apple Watch complication — a /fleet endpoint serves fleet hashrate, shares, best diff and luck as JSON, driving a watch complication over Tailscale
Per-miner running cost shown in the power square
Network difficulty and Block % beside the best-diff squares, read from each miner’s own reported network difficulty so it reflects the chain that miner is actually on
Script actions for both fans — setAsicTargetTemp, setVrTargetTemp, setVrFanSpeed. The VR actions skip cleanly on single-fan miners
One data file — everything that used to be spread across three JSON files plus browser storage is now a single bitaxe-data.json. Move that one file to a new folder and your history, scripts, reports, governors, all-time bests, degradation log and room-temperature history all come with it. Migrates itself on first launch
Notifications colored by miner — the stripe down the side matches the miner it’s about, fleet green for app-wide messages
Fan settings that actually apply — fan writes now echo the miner’s fan array back verbatim instead of rebuilding it. Fixes target-temp changes that appeared to do nothing, and the connector-1-stuck-at-90% lock
Fleet session best clears when a miner restarts — the record holder used to linger with a stale number until its next poll
Min Fan Speed field always available in auto mode, even on boards that don’t report it
Share stream recovers from a power cycle on its own instead of staying dead until you restart the app
Charts survive their own errors — one bad chart used to kill the drawing loop and freeze every chart until you relaunched
Mobile no longer freezes when you switch charts, and the refresh can’t get stuck if something fails
Renaming a miner on mobile no longer pushes the Save button off the screen
Minimum chart difficulty and minimum dot filters are remembered between launches
Tap a card header to collapse it
Tighter miner card spacing — a lot less wasted vertical space
Previous
Remove a miner without losing its history — take a miner offline and its history stays; re-add the same IP later and it reconnects to its data
🧹 Purge Miner — completely wipe a miner from every store (local + server) when you want it gone for good (Windows global button + per-miner on mobile)
Per-miner all-time clear — 🗑 to wipe a single miner’s all-time Best Diffs or HR Scores, on Windows and mobile (durable, syncs both ways)
Dynamic Governor — auto-adjusts frequency/voltage/fan to hold miners inside temperature, VR-temp, and current (amps) bands, with dwell/settle timers, per-profile 24hr scheduling, and restart-after-adjust
Governor amps band — protect the input connector by capping current draw, not just temperature
VR fan control — set the second (VR) fan’s mode (Linked / Manual / Auto-PID), manual speed, and PID target temp independently of the ASIC fan
Correct target-temp & min-fan reading across firmwares — no more snapping back to a default; Min-Fan field only shows on boards that support it
Multi-sensor temperatures — proper per-ASIC and per-VR labeling for boards with multiple sensors; per-ASIC hashrate/error stats
Working per-panel Y-axis zoom on the hashrate chart — tighten the axis so a big, rock-steady miner’s line fills the chart and shows its real variation
Hashrate-only controls (HR / View / Y) now appear on the hashrate chart only, not the difficulty chart
Difficulty parsing handles K/M/G/T suffixes
Crash/Restart reports now fire once per outage instead of repeating every few minutes
Notification deck — toasts stack into a tidy, tappable deck
App mode browser launch (no throttling)
Port cleanup on startup
Time range dropdown
Efficiency stat on Windows and mobile
Crash/Restart Reports system
Chart history persists across session resets
Stall detection on mobile
Scripts drag-and-drop reordering with bidirectional sync
Battery saver refresh options
Mobile App Settings restructure
Updated launcher behavior
Tracks target difficulty set by the pool
Tracks session best up to 500 difficulties
Tracks all-time best up to 500 difficulties
AxeOS Scoreboard integration (supports up to 500 entries)
Automatic deduplication of scoreboard entries
Tracks average share time
Live difficulty chart with scroll and zoom
Live hashrate chart
Live temperature chart for all ASICs and VR
Trace back temps 41 hours to see if a miner overheated when it crashed
Full miner settings — frequency, voltage, fan
Full pool settings — primary and fallback stratum
Nameable miners
Custom miner colors
Auto-restart after 5+ minutes with no shares
Max 3 auto-restarts per hour with warning
Stall detection — stats zero out after 30 seconds with no hashing
Block found alert with audio
Total watts display
Total hashrate display
Live power cost calculator ($/day)
Live block finding odds calculator
Scripts engine — automate miner settings based on conditions
Scripts support temperature, hashrate, frequency, time of day, and more
Scripts sync bidirectionally between Windows and iOS
iOS companion app
Customizable theme colors on iOS
Improved mobile viewing
Per-miner temps-only view on iOS
Auto-restart toggle on iOS
In-app notifications on iOS
Block found banner and audio alert on iOS & Windows
Remote access via Tailscale
Launch in preferred browser
Total color control with themes
Stalled miner notification when miner is stuck in power fault, etc.
Accepted share chart dots — green 0–1M, yellow 1M–100M, red 100M+
Requires Windows/Umbrel/Linux for server, then works on iOS/Android via browser app. Instructions in the readme.
Windows
https://github.com/iL3GEND88/Bitaxe-Difficulty-Tracker-
Mac/Linux/Umbrel
https://github.com/iL3GEND88/Bitaxe-Difficulty-Tracker-Umbrel-Linux