diff --git a/CLAUDE.md b/CLAUDE.md index b81d441..d134ad5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -23,24 +23,17 @@ Before touching v2, skim `v2/HANDOFF.md` — it carries the current roadmap, the - **[`docs/ARCHIVE-INDEX.md`](docs/ARCHIVE-INDEX.md)** points at bulk working material kept outside this repo on Bryan's machine. -### What is in flight right now (2026-09-29) - -`v2-2.2.0` shipped 2026-09-16, carrying all five user reports: #86 SmartTube backups, #87 Sony -launcher, #88 TCL discovery (partial), #89 macOS volume prompts, #91 Remote paste. Only #91 has -been seen working by anyone; #87 and #89 are still unconfirmed on the reporters' hardware. - -`v2-2.3.0` is prepared but not tagged: the ATV Optimizer rename plus fixes for #88 (pairing -dead-end), #119 (dead-end update badge), #120 (real TVs refused as "not an Android TV"), #121 -(Monet Launcher), #122 (launcher-switch false failure), #123 (Screensaver tweak) and #124 (license). -It is on the `release-prep-2.3.0` branch/PR, gated on CI, a Codex review pass and the device script -below before the owner cuts the `v2-2.3.0` tag. The Homebrew tap PR -(`bryanroscoe/homebrew-shield-optimizer#2`) must merge right before that tag, not earlier. - -The remaining gate before tagging is the device script in -[`docs/RELEASE-DECISION-2026-09-09.md`](docs/RELEASE-DECISION-2026-09-09.md), including its -`v2-2.3.0` addendum (section 7) covering the Windows in-place upgrade, the macOS DMG install over -the old app name, the launcher Advanced picker, and the other new risk areas. `v2/CHANGELOG.md` -already has the `v2-2.3.0` section the release workflow will read. +### What is in flight right now (2026-10-04) + +`v2-2.3.0` shipped 2026-09-30 (the ATV Optimizer rename plus #88, #119–#124). `v2-2.3.1` is +prepared on `release-prep-2.3.1`: the Google TV Setup Wraith fixes (#122, #157, #158), Report this +app (#100), app storage details (#98), restart after updating and patch notes on demand, the +right-click menu (#129), and the #97/#99/#135/#138/#139/#143/#147 fixes. It waits on the owner's +go before `v2/release.sh --set 2.3.1`. + +Still open and not code work: #122 needs a reporter on Google TV to confirm the Setup Wraith fix +once 2.3.1 ships; #123 needs Glance's package id from its reporter; #93 and #105 need a real +phone and TV. The mobile companion app (`v2/mobile/`) has its own authoritative handoff at [`v2/mobile/HANDOFF.md`](v2/mobile/HANDOFF.md). Its safety story depends on never claiming more diff --git a/v2/CHANGELOG.md b/v2/CHANGELOG.md index 1631734..566f761 100644 --- a/v2/CHANGELOG.md +++ b/v2/CHANGELOG.md @@ -22,49 +22,18 @@ this file and shows the newest few sections, dated, from its version button. ## Unreleased -### Added +## v2-2.3.1 — 2026-10-04 -- **Each catalog entry now records when it was reviewed and why** (#101). - Entries carry a `reviewed_at` date and their `sources`, plus a - `device_scope` on the Shield and Google TV lists. All 89 entries were dated - from git history. Tests reject malformed or future dates, and they reject any - scope that disagrees with the list the entry lives in. They also require - every Safe entry to carry a date. The app detail panel shows "Reviewed - " beside a catalog verdict. -- **A local triage tool for user reports** (#101). `tools/registry-triage` - reads a folder of mobile diagnostics exports and desktop bug-report - bundles. It prints the packages they mention, with report counts, device - scope and today's verdict, for a person to review. It never writes the - catalog, and a report never makes an app Safe. -- **Report this app** (#100). The app detail panel can report an app that is - missing from the list, or an entry that looks wrong. You pick a reason, add - an optional note, and see the exact report: the package and app name, the - device family and Android version, and the verdict shown with its source. - The installed and enabled state, RAM and storage go in only if you tick the - box. It never includes a serial, an IP address or any other app. Nothing is - sent automatically: you can copy it, save it as a file that `registry-triage` - reads, or open a prefilled GitHub issue that you submit yourself. A report - asks for a review and never changes an app's verdict. - -### App details - -- **Installed storage, separate from RAM.** Opening any app row now shows the - app's installed size, its data and its cache, read in one batch from - Android's `dumpsys diskstats`. Data includes cache, so the two are never - added together. When diskstats has no row for an app, the panel falls back to - the size of its APK files and says that data and cache are unavailable. -- **Every figure says where it came from and when.** RAM is PSS from - `dumpsys meminfo`, storage is from `diskstats`, and last used is from - `usagestats`, which keeps roughly a year of history. Each one shows the time - it was read. A read that failed shows "Unavailable" with the reason, never a - zero. A **Re-measure** button reads all three again. -- **One detail panel everywhere.** The App List, "Everything else" and the - Optimize wizard all open the same panel with the same numbers. The panel is - read-only: removing or restoring an app still goes through the row's - existing, safety-checked buttons. +Fixes for Google TV launcher switching (#122, #157, #158): Setup Wraith, Google TV's setup +helper, no longer takes the Home button back after you change launchers, and every way of +turning the stock launcher off or on now handles it. Also: Report this app, app storage +details, restart after updating, patch notes on demand, and a proper right-click menu. ### Fixed +- **The Memory table cut off long process names and dropped PIDs** + ([#97](https://github.com/bryanroscoe/shield_optimizer/issues/97)). Health's Memory + table now shows each process's full name and its PID. - **Disabling the stock launcher from the App List or Optimize left Setup Wraith on** ([#157](https://github.com/bryanroscoe/shield_optimizer/issues/157)). Every way of disabling Google TV's stock launcher now turns Setup Wraith off with it, once another @@ -156,11 +125,50 @@ this file and shows the newest few sections, dated, from its version button. ### Added +- **Each catalog entry now records when it was reviewed and why** (#101). + Entries carry a `reviewed_at` date and their `sources`, plus a + `device_scope` on the Shield and Google TV lists. All 89 entries were dated + from git history. Tests reject malformed or future dates, and they reject any + scope that disagrees with the list the entry lives in. They also require + every Safe entry to carry a date. The app detail panel shows "Reviewed + " beside a catalog verdict. +- **A local triage tool for user reports** (#101). `tools/registry-triage` + reads a folder of mobile diagnostics exports and desktop bug-report + bundles. It prints the packages they mention, with report counts, device + scope and today's verdict, for a person to review. It never writes the + catalog, and a report never makes an app Safe. +- **Report this app** (#100). The app detail panel can report an app that is + missing from the list, or an entry that looks wrong. You pick a reason, add + an optional note, and see the exact report: the package and app name, the + device family and Android version, and the verdict shown with its source. + The installed and enabled state, RAM and storage go in only if you tick the + box. It never includes a serial, an IP address or any other app. Nothing is + sent automatically: you can copy it, save it as a file that `registry-triage` + reads, or open a prefilled GitHub issue that you submit yourself. A report + asks for a review and never changes an app's verdict. + - **Patch notes are always one click away.** Click the version next to the app name to see the last few releases, newest first, with the installed one open and older ones collapsed, plus a link to every release on GitHub. They are bundled with the app, so this works offline. +### App details + +- **Installed storage, separate from RAM.** Opening any app row now shows the + app's installed size, its data and its cache, read in one batch from + Android's `dumpsys diskstats`. Data includes cache, so the two are never + added together. When diskstats has no row for an app, the panel falls back to + the size of its APK files and says that data and cache are unavailable. +- **Every figure says where it came from and when.** RAM is PSS from + `dumpsys meminfo`, storage is from `diskstats`, and last used is from + `usagestats`, which keeps roughly a year of history. Each one shows the time + it was read. A read that failed shows "Unavailable" with the reason, never a + zero. A **Re-measure** button reads all three again. +- **One detail panel everywhere.** The App List, "Everything else" and the + Optimize wizard all open the same panel with the same numbers. The panel is + read-only: removing or restoring an app still goes through the row's + existing, safety-checked buttons. + ## v2-2.3.0 — 2026-09-30 ### Renamed to ATV Optimizer diff --git a/v2/HANDOFF.md b/v2/HANDOFF.md index 2027b65..f338bee 100644 --- a/v2/HANDOFF.md +++ b/v2/HANDOFF.md @@ -1,21 +1,21 @@ # v2 — current state -v2 is a shipping desktop app. Last **published** version: **2.1.0** (2026-06-22). +v2 is a shipping desktop app. Last **published** version: **2.3.0** (2026-09-30). Full release pipeline live: installers built for macOS/Linux/Windows on every `v2-*` tag push via `.github/workflows/v2-release.yml`; macOS also distributed via Homebrew tap (`bryanroscoe/homebrew-shield-optimizer`). ## Unreleased on `main` -`v2-2.2.0` shipped 2026-09-16. Everything after it — the design-system port, the -ATV Optimizer rename, and fixes for #88, #119, #120, #121, #122, #123 and #124 — is -prepared as `v2-2.3.0` in `v2/CHANGELOG.md` (release-prep branch, not yet tagged). +`v2-2.3.0` shipped 2026-09-30 (the ATV Optimizer rename plus #88, #119–#124). +`v2-2.3.1` is prepared in `v2/CHANGELOG.md` (Setup Wraith fixes #122/#157/#158, #97, +#98, #100, #129 and the rest listed there) and waits on the owner's go to tag. Things the next reader needs that the code does not say: - **The app is now ATV Optimizer.** `identifier`, the `ShieldOptimizer` data dir and the updater channel are unchanged on purpose; the WiX UpgradeCode is pinned in - `tauri.conf.json` to the value the old name derived. The Homebrew tap change is a - draft PR (`homebrew-shield-optimizer#2`) that must merge right before the - `v2-2.3.0` tag, not earlier — its `url` names the renamed DMG. + `tauri.conf.json` to the value the old name derived. The Homebrew tap change + (`homebrew-shield-optimizer#2`) merged with the `v2-2.3.0` release; its `url` names + the renamed DMG. - **Launchers are data**: `crates/core/data/app-lists/launchers.json`, parsed once in `loader.rs`. The Launcher list shows HOME handlers only. An earlier `LEANBACK_LAUNCHER` union listed every TV app as a Home app (every TV launch activity carries that diff --git a/v2/screenshots/gallery-light.gif b/v2/screenshots/gallery-light.gif index 376ceb1..e52747a 100644 Binary files a/v2/screenshots/gallery-light.gif and b/v2/screenshots/gallery-light.gif differ diff --git a/v2/screenshots/gallery.gif b/v2/screenshots/gallery.gif index 574f6ee..9830d6e 100644 Binary files a/v2/screenshots/gallery.gif and b/v2/screenshots/gallery.gif differ