Skip to content

Releases: bryanroscoe/shield_optimizer

Shield Optimizer v2-2.0.0-beta.13

11 Jun 17:20

Choose a tag to compare

Pre-release

Fixed

  • Linux: AppImage blank window / EGL crash on modern Wayland systems
    (CachyOS, Arch, and other rolling distros — "Could not create default EGL
    display: EGL_BAD_PARAMETER"). The AppImage bundled its own copies of
    libwayland, which clash with current Mesa graphics drivers; they are now
    removed so the system's own libraries are used, matching current AppImage
    tooling defaults. The crash was reproduced and the fix verified in CI
    against an Arch userspace. No more LD_PRELOAD workaround. (#60)

First-run warnings

These builds are unsigned. Your OS may complain on first launch:

  • macOS (Gatekeeper): the first-launch dialog on macOS 15+ only offers "Move to Trash" or "Done" — click Done, then either:
    • Terminal: xattr -dr com.apple.quarantine "/Applications/Shield Optimizer.app" (one-time, then double-click as normal)
    • GUI: System Settings → Privacy & Security → scroll to the "Shield Optimizer was blocked" message → Open Anyway → enter password
  • Windows (SmartScreen): "More info" → "Run anyway".
  • Linux: chmod +x ShieldOptimizer*.AppImage before running.

See the v2 README for setup and feature docs.

Shield Optimizer v2-2.0.0-beta.12

10 Jun 14:48

Choose a tag to compare

Pre-release

The audit release: a full codebase review, every finding fixed, plus a big
Optimize-wizard usability pass.

Fixed

  • Runaway memory / CPU in long sessions. Opening the Snapshot tab with no
    saved snapshots (or the Install APK tab with an empty remembered folder)
    silently re-fetched in a tight loop forever. This is the likely cause of
    multi-GB memory reports.
  • Large file transfers no longer time out. APK backups, app cloning, and
    file-manager uploads/downloads previously died at exactly 30 seconds —
    guaranteed failure for big apps and media files. Transfers now get a
    15-minute ceiling.
  • "Connect IP" honesty. adb connect reports success even when it fails;
    the app now reads the actual result, and an unauthorized connection tells
    you to approve this computer on the TV.
  • Snapshot apply / panic recovery now refresh the App List, Optimize, and
    Launcher views immediately instead of showing stale states.
  • Linux: blank window on some Wayland setups (EGL_BAD_PARAMETER crash) —
    fixed by disabling WebKit's DMABUF renderer at startup; no more LD_PRELOAD
    workaround.
  • Action-result messages (e.g. after an APK backup) are now dismissible
    instead of sticking around for the whole session.

Optimize wizard

  • Review apps are spotlighted, not buried. Streaming apps that need your
    judgment keep full opacity with an orange accent bar, the summary calls out
    how many — and which ones show no recent use ("3 show no recent use:
    Apple TV, …") — and each row's control now carries the rule itself:
    Keep (if you use it) / Uninstall, with an "Uninstall / disable if
    unused" hint.
  • Same look as the App List. One shared row component drives both tabs:
    state badge, labeled RAM, "last used" cue, and REVIEW pill all match, and
    the wizard gains the same default-on Hide not installed filter.
  • Usage cues now read "last used 5d ago" instead of a bare "5d ago".

Changed

  • Overview's "Send text to TV" box is gone — the Remote tab's live typing
    replaced it.
  • The footer now links to Ko-fi if you want
    to support development.
  • App catalog accuracy pass: Discovery+ is correctly reinstallable;
    YouTube Kids (TV), Showtime, and Epix Now are marked defunct (services
    discontinued); the STARZPLAY entry is renamed LIONSGATE+.

Hardening & internals

  • Device-shell input validation closed its last gaps (snapshot package names,
    settings keys/values are now validated or quoted everywhere).
  • The launcher-takeover logic — the most safety-critical code path — gained
    its first full test suite (149 tests total), including the revert path.
  • The 3,900-line device page was decomposed into per-tab components; CI now
    runs the full lint/test surface; docs were brought back in line with
    reality.

First-run warnings

These builds are unsigned. Your OS may complain on first launch:

  • macOS (Gatekeeper): the first-launch dialog on macOS 15+ only offers "Move to Trash" or "Done" — click Done, then either:
    • Terminal: xattr -dr com.apple.quarantine "/Applications/Shield Optimizer.app" (one-time, then double-click as normal)
    • GUI: System Settings → Privacy & Security → scroll to the "Shield Optimizer was blocked" message → Open Anyway → enter password
  • Windows (SmartScreen): "More info" → "Run anyway".
  • Linux: chmod +x ShieldOptimizer*.AppImage before running.

See the v2 README for setup and feature docs.

Shield Optimizer v2-2.0.0-beta.11

05 Jun 15:44

Choose a tag to compare

Pre-release

A big App List / Optimize update centered on smarter, safer recommendations.

Added

  • "Remove if unused" review tier. Preinstalled streaming apps (Netflix,
    Disney+, Showtime, …) are surfaced as candidates to remove if you don't use
    them
    — never auto-selected — with a last-used cue ("used 3d ago", "no
    recent use") from usage stats so you can decide.
  • Per-app RAM badges. The App List now shows live RAM (e.g. RAM 243 MB) on
    apps that are running right now — the cue for which unused app is quietly
    eating memory.
  • Friendly names + search for sideloads. "Everything else" recognizes
    popular sideloads (Artemis/Moonlight, Overseerr, SmartTube, Jellyfin, …) by
    name, and search matches the name you actually see, not just the package id.
  • Files: optional system paths (power user). A toggle lets you browse the
    whole filesystem beyond /sdcard; deletes outside /sdcard are
    double-confirmed and critical mounts are refused.
  • Tweaks: Background Process Limit. Cap background apps to free RAM (with a
    clear note that Android resets it on reboot).

Changed

  • Uninstall safety. The wizard never recommends uninstalling an app you
    can't easily get back — non–Play-Store, non-defunct apps are disabled instead.
  • Recommendations reflect real benefit. Dropped no-op suggestions (idle
    language keyboards), and RAM figures now only show for running, reclaimable
    apps.
  • App List defaults to installed apps ("Hide not installed" on).
  • The App List and Optimize tabs now stay in sync after an action.

Fixed

  • App List / Optimize tables no longer blank out, long system package names no
    longer overflow, and the Optimize plan loads faster (no redundant device
    re-detection).

First-run warnings

These builds are unsigned. Your OS may complain on first launch:

  • macOS (Gatekeeper): the first-launch dialog on macOS 15+ only offers "Move to Trash" or "Done" — click Done, then either:
    • Terminal: xattr -dr com.apple.quarantine "/Applications/Shield Optimizer.app" (one-time, then double-click as normal)
    • GUI: System Settings → Privacy & Security → scroll to the "Shield Optimizer was blocked" message → Open Anyway → enter password
  • Windows (SmartScreen): "More info" → "Run anyway".
  • Linux: chmod +x ShieldOptimizer*.AppImage before running.

See the v2 README for setup and feature docs.

Shield Optimizer v2-2.0.0-beta.10

05 Jun 03:03

Choose a tag to compare

Pre-release

The version now reads as 2.0.0 so the app no longer looks like a v0 build —
it's been a v2 beta all along.

Fixed

  • App List and Optimize tabs rendered blank. Two streaming apps (Pluto TV,
    Tubi) were duplicated in the catalog; the table render aborted on the repeated
    key, so the counts loaded but the rows never appeared. Removed the duplicates
    and hardened the loader so a stray repeat can never blank the UI again.
  • Optimize was slow to load the plan. It re-profiled every connected device
    first (and stalled on unauthorized ones). It now uses the type the page
    already detected and goes straight to the device query.
  • "Update available" link now opens the full releases list instead of
    redirecting to the latest v1 (PowerShell) release.

First-run warnings

These builds are unsigned. Your OS may complain on first launch:

  • macOS (Gatekeeper): the first-launch dialog on macOS 15+ only offers "Move to Trash" or "Done" — click Done, then either:
    • Terminal: xattr -dr com.apple.quarantine "/Applications/Shield Optimizer.app" (one-time, then double-click as normal)
    • GUI: System Settings → Privacy & Security → scroll to the "Shield Optimizer was blocked" message → Open Anyway → enter password
  • Windows (SmartScreen): "More info" → "Run anyway".
  • Linux: chmod +x ShieldOptimizer*.AppImage before running.

See the v2 README for setup and feature docs.

Shield Optimizer v2-0.1.0-beta.8

04 Jun 21:23

Choose a tag to compare

Pre-release

Added

  • TV screenshots. A Screenshot button on the device header captures the
    TV screen, saves a PNG on your computer, and shows an inline preview with
    Open folder. (Protected/DRM content can't be captured — the error says so.)
  • APK backup. Every App List row has a Backup button that saves the
    app's APK(s) to a folder you choose, named <package>-<version>.apk.
    Split APKs are pulled as a set and flagged.
  • Copy an app to another device. "Copy to…" on App List rows installs
    the app onto a second connected device in one click. App data does not
    transfer, and DRM/licensed apps may refuse — the confirm spells it out.
  • Rename device. A Rename button next to the device title writes the
    same setting the TV's own Settings → About → Device name does, so Cast /
    Google Home pick it up too.
  • Send text to TV (Overview tab): type Wi-Fi passwords and searches
    from a real keyboard into whatever field has focus on the TV.
  • Force stop on the Health tab's memory rows — frees an app's RAM now;
    it restarts on next launch.
  • Clear caches (Health tab): one click trims every app's cache.
  • The stock launcher is back in the Launchers list. It shows with a
    STOCK badge and a "Set as default" button — so switching back from a
    custom launcher is one click, even if stock was disabled.
  • All HOME-capable apps appear in the Launchers list (HOME APP badge)
    with the same Enable / Set as default / Disable actions. The separate
    "Disable stock launchers" wizard is gone — it could neither show nor
    restore disabled launchers reliably. Disabling now asks for confirmation
    and refuses to disable the last enabled launcher on the device.

Fixed

  • Network scan no longer hides devices that need authorization. A TV
    that hasn't approved this computer shows up in the device list as
    UNAUTHORIZED with instructions, and the scan summary says how many are
    waiting for the "Allow USB debugging?" prompt — instead of "connected 0"
    over an empty page.
  • No more "Failed: Success" when setting a default launcher.
    set-home-activity acknowledges with a bare "Success" on many builds; that
    ack was being recorded as the failure reason whenever the active-launcher
    check didn't confirm the switch in time. The launcher set now verifies with
    retries/backoff, treats the ack as acceptance, and when the device accepted
    the change but hasn't applied it yet, says exactly that ("press Home on the
    TV, then Refresh") instead of a contradictory error. (Beta feedback.)

First-run warnings

These builds are unsigned. Your OS may complain on first launch:

  • macOS (Gatekeeper): the first-launch dialog on macOS 15+ only offers "Move to Trash" or "Done" — click Done, then either:
    • Terminal: xattr -dr com.apple.quarantine "/Applications/Shield Optimizer.app" (one-time, then double-click as normal)
    • GUI: System Settings → Privacy & Security → scroll to the "Shield Optimizer was blocked" message → Open Anyway → enter password
  • Windows (SmartScreen): "More info" → "Run anyway".
  • Linux: chmod +x ShieldOptimizer*.AppImage before running.

See the v2 README for setup and feature docs.

Shield Optimizer v2-0.1.0-beta.7

04 Jun 04:47

Choose a tag to compare

Pre-release

Changed

  • Per-row action dropdown in the Optimize / Restore wizard. The old
    Apply/Skip checkbox is now a dropdown so you can choose what happens to each
    app: Disable / Uninstall / Skip (Enable / Skip in Restore mode). It
    defaults to the catalog's recommended action — so you can downgrade an
    Uninstall to a safer Disable, or skip individual rows, without giving up the
    recommendation. The do-not-disable safety list still gates every action.

Changed

  • Snapshot apply now shows a clear preview table instead of a text dump.
    Applying a snapshot (from the global Snapshots page) opens a panel listing
    each package and what will happen — Disable / Set as launcher / Set setting,
    with already-disabled and not-installed rows clearly de-emphasized — mirroring
    the Optimize wizard. Apply happens from the reviewed panel.
  • In the Optimize wizard, terminal rows (not installed / already in target
    state) now read as a neutral pill, visually distinct from a user-chosen
    "Skip".

Fixed

  • "Play Store" buttons only show for apps that are actually on the Play
    Store.
    Every catalog package was audited against Google Play; the button
    now appears only for the 33 packages with a real listing. System components
    and defunct apps (Print Spooler, Google Feedback, Funimation, Stadia, Quibi,
    Nvidia system packages, region/Fire-TV-only ids, …) no longer show a button
    that leads to a 404.
  • Optimize wizard defaults are no longer dangerously aggressive. The wizard
    pre-selected an action for every installed app, so streaming apps (Netflix,
    Prime Video, Hulu, …) and anything not on the curated default list defaulted
    to Disable/Uninstall. It now respects each app's default the way v1 does:
    only default-optimize entries are pre-selected for action; everything else
    defaults to Skip (you can still pick Disable/Uninstall per row from the
    dropdown). Restore mode mirrors this with default_restore.
  • App descriptions are back in the App List. Each app shows its inline help
    text ("Print service — irrelevant on a TV", etc.) under the name again,
    instead of only as a hover tooltip.
  • System keyboards added to the do-not-disable list. Gboard, the Leanback
    keyboard, and the AOSP IME can no longer be disabled (from the memory table,
    a snapshot, or anywhere) — disabling the active keyboard removes all
    on-screen text input.
  • Accurate success reporting for device actions. Apply-snapshot,
    disable/restore-stock-launchers, and Emergency Recovery judged success by
    scanning only stdout — but adb shell exits 0 even when the on-device
    command fails, and pm / settings write failures to stderr on many builds.
    They now inspect both streams, so a package or setting that didn't actually
    change is reported as failed instead of silently "done."
  • Apply-snapshot no longer claims settings were written when they weren't.
    Settings are now applied one at a time and each is checked, so the summary
    reflects what actually took (previously every key was reported written as
    long as the shell ran).
  • Hardened package-name and snapshot-value handling. Package names from
    manual-entry paths are validated before they reach the shell, and snapshot
    setting values are rejected if they contain shell metacharacters (matching
    the existing Tweaks guard).
  • Minor: the launcher-set error message no longer gets overwritten by benign
    empty output, and per-device state is fully reset if the device view ever
    switches devices without unmounting.

First-run warnings

These builds are unsigned. Your OS may complain on first launch:

  • macOS (Gatekeeper): the first-launch dialog on macOS 15+ only offers "Move to Trash" or "Done" — click Done, then either:
    • Terminal: xattr -dr com.apple.quarantine "/Applications/Shield Optimizer.app" (one-time, then double-click as normal)
    • GUI: System Settings → Privacy & Security → scroll to the "Shield Optimizer was blocked" message → Open Anyway → enter password
  • Windows (SmartScreen): "More info" → "Run anyway".
  • Linux: chmod +x ShieldOptimizer*.AppImage before running.

See the v2 README for setup and feature docs.

Shield Optimizer v2-0.1.0-beta.6

04 Jun 01:38

Choose a tag to compare

Pre-release

Fixed

  • Display Scaling now works. Clicking Shield 4K / 1080p failed silently with
    "unknown variant uhd_4k" — the frontend and backend disagreed on the preset
    names. Fixed the mismatch so the presets apply.
  • Correct Shield 4K scaling values (#24). The 4K preset is now
    3839×2160 @ density 640 (was 3840×2160 @ 540). Shield TV rejects a 3840
    width, and density 540 broke some app menus (Disney+, HBO). Applied to both
    the v2 app and the v1 PowerShell script.
  • "Open folder" on the Snapshots page works. It used an open_path call the
    app wasn't permitted to make; it now reveals the snapshot folder in the system
    file manager (and the folder is created up front so it works before your first
    snapshot).

Added

  • Light-theme gallery in the README alongside the dark one, and the
    screenshot pipeline now captures both themes.

First-run warnings

These builds are unsigned. Your OS may complain on first launch:

  • macOS (Gatekeeper): the first-launch dialog on macOS 15+ only offers "Move to Trash" or "Done" — click Done, then either:
    • Terminal: xattr -dr com.apple.quarantine "/Applications/Shield Optimizer.app" (one-time, then double-click as normal)
    • GUI: System Settings → Privacy & Security → scroll to the "Shield Optimizer was blocked" message → Open Anyway → enter password
  • Windows (SmartScreen): "More info" → "Run anyway".
  • Linux: chmod +x ShieldOptimizer*.AppImage before running.

See the v2 README for setup and feature docs.

Shield Optimizer v2-0.1.0-beta.5

04 Jun 00:53

Choose a tag to compare

Pre-release

Fixed

  • Light mode is now readable, and you can pick a theme. On Linux/macOS in
    light appearance, the cards and text kept dark-mode colors against a light
    page, making text nearly invisible (#26). The whole UI is now theme-aware via
    CSS variables, with a proper light palette. A Light / Dark / Auto toggle
    in the header lets you override the system appearance (Auto follows the OS).
    Dark mode is unchanged.

First-run warnings

These builds are unsigned. Your OS may complain on first launch:

  • macOS (Gatekeeper): the first-launch dialog on macOS 15+ only offers "Move to Trash" or "Done" — click Done, then either:
    • Terminal: xattr -dr com.apple.quarantine "/Applications/Shield Optimizer.app" (one-time, then double-click as normal)
    • GUI: System Settings → Privacy & Security → scroll to the "Shield Optimizer was blocked" message → Open Anyway → enter password
  • Windows (SmartScreen): "More info" → "Run anyway".
  • Linux: chmod +x ShieldOptimizer*.AppImage before running.

See the v2 README for setup and feature docs.

Shield Optimizer v2-0.1.0-beta.4

03 Jun 21:50

Choose a tag to compare

Pre-release

Fixed

  • Restart ADB now reconnects network devices. adb kill-server drops every
    TCP connection, and network devices (ip:port) don't re-attach on their own
    the way USB devices do — so after a restart the device list came back empty
    even though the daemon restarted fine. Restart ADB now remembers the
    connected network devices and reconnects them automatically, and reports
    which ones came back (or which to reconnect manually via Scan Network /
    Connect IP). (Reddit report.)
  • Windows: installers now upgrade in place. Previously the .msi made you
    uninstall the old version first. The MSI version encoded the release counter
    in the 4th version field — which Windows Installer ignores for upgrade
    detection — so every build looked like the same version. The build/3rd field
    now carries a strictly-increasing, semver-ordered value, so new releases
    install on top of the old one. (First applies upgrading from this build
    forward.)
  • Network scan now connects the devices it finds. The scan could report
    "found N devices, connected 0" — the port sweep detected them, but the
    follow-up adb connect raced a cold adb daemon and failed (which is why a
    manual Restart ADB then made them connect). The scan now starts the adb
    server first and retries each connect once, so found devices connect on the
    first pass. (Reddit report.)

First-run warnings

These builds are unsigned. Your OS may complain on first launch:

  • macOS (Gatekeeper): the first-launch dialog on macOS 15+ only offers "Move to Trash" or "Done" — click Done, then either:
    • Terminal: xattr -dr com.apple.quarantine "/Applications/Shield Optimizer.app" (one-time, then double-click as normal)
    • GUI: System Settings → Privacy & Security → scroll to the "Shield Optimizer was blocked" message → Open Anyway → enter password
  • Windows (SmartScreen): "More info" → "Run anyway".
  • Linux: chmod +x ShieldOptimizer*.AppImage before running.

See the v2 README for setup and feature docs.

Shield Optimizer v2-0.1.0-beta.3

03 Jun 19:08

Choose a tag to compare

Pre-release

Fixed

  • Windows: no more console-window "waterfall." Every adb call (and the
    network-scan gateway lookup) now spawns with CREATE_NO_WINDOW, so the app
    no longer flashes a cmd window for each command. Previously, pressing
    anything that ran multiple adb commands popped a cascade of console windows
    open and closed. macOS/Linux were never affected. (Thanks to the Reddit
    report.)

First-run warnings

These builds are unsigned. Your OS may complain on first launch:

  • macOS (Gatekeeper): the first-launch dialog on macOS 15+ only offers "Move to Trash" or "Done" — click Done, then either:
    • Terminal: xattr -dr com.apple.quarantine "/Applications/Shield Optimizer.app" (one-time, then double-click as normal)
    • GUI: System Settings → Privacy & Security → scroll to the "Shield Optimizer was blocked" message → Open Anyway → enter password
  • Windows (SmartScreen): "More info" → "Run anyway".
  • Linux: chmod +x ShieldOptimizer*.AppImage before running.

See the v2 README for setup and feature docs.