SwiftMiner 1.38.2
A reliability and privacy release. Automatic recovery no longer reports success while real-time drop progress is dead, cached campaign artwork loads again, changes you make to your miners apply in the order you made them, diagnostics no longer echo fragments of your credentials, and storage faults that used to pass silently now say what went wrong.
🐝 Fixes
Recovery tells the truth, artwork loads, and changes apply in order.
- Automatic recovery no longer reports a miner as recovered when its real-time drop connection failed to come back. The miner says it is running on polling only, so a miner that looks healthy while earning nothing is now visible.
- Cached campaign artwork loads from disk again instead of falling back to a placeholder until the next download.
- Adding and removing miners applies in the order you made the changes, so a removed account can no longer stay wired into the Drops view for the rest of the session.
- Switching accounts updates the watch session before the next heartbeat goes out, rather than racing it.
- Editing failover streamers reaches every miner in the order you saved them, so two quick edits can no longer leave miners running on different rules.
- Needs attention can be dismissed for the two reminders that were already mutable — a game-account link and a subscription-only campaign. It uses the same mute as the Pending list, so the item stays there with Remind me to bring it back. States that mean a miner cannot earn until you act, such as reconnecting Twitch or a stopped worker, still have no dismiss.
🎨 Simpler artwork
One source of game art, plus your own uploads.
- Removes Steam artwork. Twitch box art is now requested at a resolution that made the Steam lookup unnecessary, and Steam answered with a blank grey placeholder for titles it had no library art for — so preferring it could replace real artwork with nothing.
- Uploading your own artwork for a game is unchanged, and existing uploads are kept. Remove Custom Artwork now returns the game to the artwork Twitch supplies.
- The Use Steam artwork setting and the Set Steam ID menu items are gone, and the downloaded Steam images are deleted from the cache the next time SwiftMiner starts.
🔒 Quieter diagnostics
Nothing resembling a credential goes into a log or a diagnostics export.
- Removes access-token fragments and lengths, client-ID fragments, token-validation response bodies, and the service API key from log output, including the client ID printed at the start of every Twitch sign-in.
- Drops an unused legacy session-import path that stored logins with no refresh grant.
- Sends app diagnostics to the system log rather than standard output, so failures such as a database that will not open are recoverable from Console after the fact instead of being lost in a normally launched app.
🛡 Failures that used to pass silently
A fault in storage now leaves a trace you can act on.
- Activity-log, earning-ledger, and event-outbox writes report failures instead of discarding them.
- Unattended health history that cannot be read is set aside rather than overwritten, so the record of an overnight failure survives to be read back.
- Keychain, Discord account-activation, and admin-linking write failures are reported. An account whose renewed sign-in window cannot be saved keeps working for the session and explains what will happen after a restart.
- Every write into the unattended health record reports its own failures, so the incident history cannot stop accumulating without saying so.
- Linking a miner to a Discord owner reports a storage failure instead of showing the link and losing it at the next launch, and an operator change that could not be saved says so.
🧰 Build and release quality
Cleaner builds and more of the release checked automatically.
- Declares SwiftMiner as a Utilities app and satisfies Xcode's App Intents metadata probe, so builds no longer emit a false missing-framework warning.
- Uses an explicit generic macOS destination throughout repository build and release automation.
- Adds a Release build, static analysis, an Xcode project drift check, built-app version and Sparkle key verification, and code-coverage reporting to continuous integration.
- Separates the largest settings and web-dashboard source files into focused files, and adds regression tests for Twitch sign-in, token refresh, background ordering, corrupted stored state, and account activation.