SwiftMiner 1.35.11
A reliability release for the mining loop. Every account had quietly lost its real-time drop connection, and idle miners were spending their entire Twitch request budget re-asking questions they had just answered. Both are fixed, along with the status text that hid it.
Real-Time Drop Progress Restored
The most serious fix in this release: every miner was running blind.
- Restores the live drop-progress (PubSub) connection for accounts signed in without a refresh grant. Sessions imported from cookies store no refresh token, and Twitch's web client reports no expiry, so SwiftMiner invented a 30-day deadline. Once that invented deadline passed, every token refresh failed instantly — even though the token itself was still perfectly valid and serving hundreds of successful requests. The result was silent: real-time progress went offline for the whole fleet and mining fell back to polling alone.
- Twitch is now the only authority on whether such a token is dead. SwiftMiner revalidates against Twitch and re-arms its local window instead of trusting a deadline it made up, and a transport failure deliberately leaves a working account alone.
- Loads the access token and opens the live connection as separate steps. A token problem used to skip both, and a genuinely rejected token was logged and forgotten — it is now surfaced as an account that needs reconnecting rather than a miner that quietly earns nothing.
Idle Miners No Longer Exhaust the Request Budget
Waiting for a stream cost as much as mining one.
- Shares approved-channel liveness checks across every miner. Restricted esports campaigns can list dozens of approved channels, and each miner was probing all of them on every selection cycle and again on every idle tick. One diagnostic captured 641 liveness probes and 22 minutes of accumulated rate-limit backoff inside a three-minute window, starving the requests that actually pick a channel.
- Whether a channel is live is the same answer for every account, so it is now asked once. The cache holds only misses, and only for less than one probe interval, so an approved channel coming online is still discovered on the very next tick — the cache can never be the reason a campaign is missed. That relationship is pinned by a test.
- Stops retrying the followed-channel lookup once it fails. Follow state only reorders otherwise-equal channels, but each failed attempt was forcing another doomed token refresh — thirteen in three minutes. It now backs off and ranks channels without it.
Honest Status
A miner no longer describes itself using work it isn't doing.
- A miner waiting for a stream no longer reports Drops complete. Smart strategy regularly schedules a campaign for a game that is not on the prioritised list, but only prioritised games were being evaluated — so the miner described itself from games it had already finished while actively hunting streams for the campaign it had just selected.
- The game the scheduler actually chose is now part of that assessment, so the reported state reflects real work.
Under the Hood
Coverage for the safety properties, not just the happy paths.
- Adds tests pinning the liveness cache window below the probe interval, proving a cached miss has always expired before the next probe and that a live channel is never cached.
- Adds coverage for a scheduled non-prioritised game producing its own state, and for a miner waiting on one not being reported as finished.
- Prepared as SwiftMiner 1.35.11, build 2026072910.