• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

dangernoodle-io / TaipanMiner / 26175626047
90%

Build:
DEFAULT BRANCH: main
Ran 20 May 2026 04:24PM UTC
Jobs 3
Files 101
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

20 May 2026 04:23PM UTC coverage: 89.766% (+0.02%) from 89.743%
26175626047

push

github

web-flow
feat(stats): per-pool lifetime stats + block-found detection (#413)

Replaces the aggregate mining_lifetime_t schema (which had a dead
total_hashes field that never incremented in any code path) with
mining_pool_stats_t: an 8-slot LRU table indexed by host:port. Each
slot tracks shares, hashes (now actually wired at the Tier-2 mining
yield), best_diff, blocks_found, and last_seen_us. NVS persistence
uses per-field keys (ps<N>_<field>); legacy lt_* keys are erased on
first boot. No migration — users start fresh.

share_validate.c gains share_meets_network_target(hash, nbits) which
unpacks the standard Bitcoin nbits → 256-bit target and compares the
share hash. Mining/asic loops call it after the pool-target pass; on
match, the slot's blocks_found bumps and a "block.found" bb_event
fires with {host, port, share_diff} payload.

Stratum resolves and caches the active pool slot on each connect
(find_or_alloc by host:port, case-insensitive host match, LRU
eviction when full).

/api/stats no longer emits `lifetime`. /api/pool grows a `stats`
array (up to 8 entries, ordered by last_seen_us descending) so the
webui Pool page can render history. Heap-allocate pool_snapshot_t
in the handler — it's now ~3 KB and was crashing the 6 KB httpd
worker stack with stack-overflow panics.

Webui:
- blockFoundState (mirrors updateAvailableState): SSE subscriber for
  block.found, sticky banner state with localStorage dismissal
  (key taipanminer.blockFound.dismissedAt). Banner only re-shows when
  a newer event arrives.
- BlockFoundBanner: green pill at top of <main>, dismissable.
- PoolStatsCard: per-pool stats display, highlights the active pool.
- Pool.svelte gains a "pool history" section rendering all slots.

Tests:
- Host: 550 pass (+11) — pool_stats find_or_alloc + LRU + record_*,
  share_meets_network_target with genesis-block + edge vectors.
- Webui: 1072 pass (+25) — blockFoundState SSE/localStorage, banner
  render/dismiss, PoolStatsCard formatting + active high... (continued)

2491 of 3158 branches covered (78.88%)

Branch coverage included in aggregate %.

239 of 252 new or added lines in 10 files covered. (94.84%)

4982 of 5167 relevant lines covered (96.42%)

159819.48 hits per line

Uncovered Changes

Lines Coverage ∆ File
10
89.79
-2.35% components/webui/src/routes_json.c
3
94.47
components/mining/src/mining_pool_stats.c
Jobs
ID Job ID Ran Files Coverage
1 webui - 26175626047.1 20 May 2026 04:25PM UTC 72
91.28
GitHub Action Run
2 e2e - 26175626047.2 20 May 2026 04:30PM UTC 54
56.38
GitHub Action Run
3 native - 26175626047.3 20 May 2026 04:24PM UTC 29
89.28
GitHub Action Run
Source Files on build 26175626047
  • Tree
  • List 101
  • Changed 10
  • Source Changed 9
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #26175626047
  • 8d468b4a on github
  • Prev Build on main (#26138162521)
  • Next Build on main (#26197721446)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc