Repository navigation
Releases
Releases · foXaCe/cryptoinfo
v1.9.0
v1.9.0 — Integration overhaul
Added
- Price sensor metrics as dedicated entities (market cap, volume, 1h-1y changes, supplies, ATH, rank) — 13 per coin
- Mining metrics as dedicated entities (difficulty, block height, retarget, halving, fees, hashrate, workers, blocks)
sensor_descriptions.py: frozen+kw_only EntityDescription with value_fn- 33 entity translation keys (EN + FR, vouvoiement) + icons.json + brand/ icons
- Automation examples + use cases in README
Changed
- Minimum HA bumped to 2025.11 (UpdateFailed retry_after)
- Structure: const/const.py → const.py, helper/ → api/, options_flow.py
- Perf: entry setup 0.77s → 0.01s (background first refresh)
Fixed
- Rate-limit backoff honors CoinGecko Retry-After
- no_results error lost in reconfigure flow
- Gitleaks false positive (translation_key)
v1.8.4
📦 Uncategorized
- chore(deps): update dependency ruff to >=0.15.20
- PR: #31
- chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.15.20
- PR: #32
- chore(deps): update pre-commit hook pre-commit/mirrors-mypy to v2.2.0
- PR: #35
- chore(deps): update dependency ruff to >=0.15.21
- PR: #36
- chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.15.21
- PR: #37
- chore(deps): update pre-commit hook pre-commit/mirrors-mypy to v2.3.0
- PR: #38
- chore(deps): update pre-commit hook codespell-project/codespell to v2.4.3
- PR: #39
- chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.15.22
- PR: #41
- chore(deps): update dependency ruff to >=0.15.22
- PR: #40
- chore(deps): update dependency pre-commit to >=4.6.1
- PR: #43
- chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.16.0
- PR: #45
- chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.16.1
- PR: #47
- chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.16.2
- PR: #48
- chore(deps): update dependency pre-commit to >=4.6.2
- PR: #49
- chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.16.3
- PR: #50
- chore(deps): update pre-commit hook pre-commit/mirrors-mypy to v2.3.1
- PR: #51
v1.8.3
📦 Uncategorized
- chore(config): migrate Renovate config
- PR: #1
- chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.15.19
- PR: #9
- chore(deps): update home-assistant
- PR: #3
- chore(deps): update pre-commit hook pre-commit/mirrors-mypy to v1.20.2
- PR: #11
- chore(deps): update dependency pre-commit to >=3.8.0
- PR: #5
- chore(deps): update dependency mypy to >=1.20.2
- PR: #4
- chore(deps): update dependency pytest to >=8.4.2
- PR: #6
- chore(deps): update pre-commit hook codespell-project/codespell to v2.4.2
- PR: #10
- chore(deps): update dependency pytest-asyncio to >=0.26.0
- PR: #7
- chore(deps): update dependency ruff to >=0.15.19
- PR: #8
- chore(deps): update actions/dependency-review-action action to v5
- PR: #13
- chore(deps): update dependency pre-commit to v4
- PR: #19
- chore(deps): update dependency pytest-asyncio to v1
- PR: #21
- chore(deps): update actions/checkout action to v7
- PR: #12
- chore(deps): update home-assistant
- PR: #18
- chore(deps): update actions/setup-python action to v6
- PR: #14
- chore(deps): update actions/stale action to v10
- PR: #15
- chore(deps): update dependency pytest to v9
- PR: #20
- chore(deps): update dependency mypy to v2
- PR: #17
- chore(deps): update codecov/codecov-action action to v7
- PR: #16
- chore(deps): update dependency pytest-cov to v7
- PR: #22
- chore(deps): update github/codeql-action action to v4
- PR: #23
- chore(deps): update mikepenz/release-changelog-builder-action action to v6
- PR: #25
- chore(deps): update gitleaks/gitleaks-action action to v3
- PR: #24
- refactor: dedupe price unique_id, drop dead code, hoist imports
- PR: #29
- chore(deps): update pre-commit hook pre-commit/mirrors-mypy to v2
- PR: #26
- chore(deps): update softprops/action-gh-release action to v3
- PR: #28
- chore(deps): update pre-commit hook pre-commit/pre-commit-hooks to v6
- PR: #27
- chore(release): 1.8.3
- PR: #30
v1.8.2
Fixed
- Sensor: Remove incompatible device_class monetary (was causing HA warnings with state_class measurement)
v1.8.1
Fixed
- CI: Ignore PT001 in tests to avoid ruff auto-fix conflict
- CI: Use space-separated ignore list for HACS validation
- CI: Ignore HACS topics and issues checks
- HACS: Remove invalid keys from root hacs.json and duplicate file
- CI: Resolve pre-commit and mypy compatibility issues
Changed
- Refactor: Upgrade to Home Assistant Quality Scale standards
- Added circuit breaker and rate limiting patterns to API clients
- Improved exception handling with typed exceptions
- Added UTC-aware datetime usage
- Enhanced resilience with retry logic and exponential backoff
v1.8.0 - Complete CKPool Mining Stats
✨ New Features
- Workers Count: Display active worker count
- Best Share: Show best share with auto-formatting (M/G units)
- Best Ever: Display all-time best share
📊 Complete Mining Dashboard
Your CKPool sensor now displays:
- Hashrate: Current mining speed (1m average)
- Hashrate 1h: 1-hour average
- Hashrate 24h: 24-hour average
- Workers: Active miners count
- Best Share: Current best (e.g., "153.78 M")
- Best Ever: All-time best (e.g., "1.32 G")
- Blocks Found: Total blocks mined
🎯 Example Output
Sensor: 1110 GH/s
Attributes:
- Hashrate 1h: 1050 GH/s
- Hashrate 24h: 1030 GH/s
- Workers: 1
- Best Share: 153.78 M
- Best Ever: 1.32 G
- Blocks Found: 0
🔧 Technical Details
- Parses worker count from workers array in HTML
- Extracts
bestShare(JavaScript number format) - Extracts
bestEver(escaped string format) - Auto-formats large numbers with M (millions) and G (billions) units
Restart Home Assistant to see all the new stats!
v1.7.2 - Fix EU Pool Escaped JSON Parsing
🐛 Critical Bug Fix
- Fix EU pool HTML parsing - Correctly handle escaped JSON strings from Next.js
- EU pool embeds JSON data as escaped strings (
\"hashrate1m\":\"1110000000000\") - Sensor now displays correct hashrate instead of "Unknown"
✅ Verified Working
Tested with real EU pool data:
- Hashrate: 1110 GH/s (1.11 TH/s) ✅
- 1-hour average: 1050 GH/s ✅
- 24-hour average: 1030 GH/s ✅
🔧 Technical Details
The EU pool's Next.js frontend escapes JSON data in JavaScript strings. This release adds proper regex patterns to extract data from the escaped format:
- Before:
"hashrate1m":"..."❌ - After:
\"hashrate1m\":\"...\"✅
Action Required: Restart Home Assistant to apply the fix.
v1.7.1 - EU Pool HTML Parsing Fix
🐛 Bug Fixes
- Fix EU pool (eusolostats.ckpool.org) returning "Unknown" state
- Add automatic HTML parsing for EU pool Next.js page
- Detect content type and handle both JSON API (Global pool) and HTML (EU pool) transparently
- Extract hashrate data from embedded JSON in HTML
🔧 Technical Details
The EU pool uses a Next.js frontend that embeds JSON data in HTML instead of providing a direct JSON API. This release adds smart detection and parsing for both formats:
- Global pool (
solo.ckpool.org): Direct JSON API ✅ - EU pool (
eusolostats.ckpool.org): HTML with embedded JSON ✅
Your mining stats will now display correctly regardless of which pool you use!
v1.7.0 - CKPool Multi-Region Support
✨ New Features
- CKPool Pool Region Selection: Choose between EU pool (
eusolostats.ckpool.org) and Global pool (solo.ckpool.org) - Automatic Format Detection: Seamlessly handles both EU pool format (integers in H/s) and Global pool format (strings with units like "3.12T")
- Default to EU Pool: Pre-selected for European users
🐛 Bug Fixes
- Fix CKPool sensor showing "Unknown" for addresses without mining history (now shows 0 GH/s)
- Handle HTTP 404 responses gracefully
- Parse JSON response correctly instead of attempting HTML parsing
🔧 Improvements
- Robust hashrate unit conversion supporting K, M, G, T, P units
- Better error handling and logging
- Add
bestshareattribute to sensor
📝 Notes
- Existing CKPool sensors will default to EU pool - reconfigure if using Global pool
- Hashrate displayed in GH/s for consistency
v1.6.1 - CKPool Mining Sensor Fix
Bug Fixes
- Fix CKPool mining sensor returning unknown state instead of 0 when address has no mining history
- Handle HTTP 404 responses for addresses without mining activity
- Parse JSON response from CKPool API instead of attempting HTML parsing
- Improve hashrate unit conversion robustness (K, M, G, T, P)
- Add bestshare field to sensor attributes