Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 11 additions & 18 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Comment on lines +28 to +29

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Refresh the authoritative v2 handoff

These lines advance the release state to 2.3.0 shipped and 2.3.1 prepared, while v2/HANDOFF.md:3-11 still says the last published version is 2.1.0 and that 2.3.0 remains untagged. Because the repository explicitly directs anyone touching v2 to that handoff as the current roadmap, the next agent will receive obsolete release state and may repeat already-completed preparation; update the handoff in this release-prep commit.

AGENTS.md reference: AGENTS.md:L10-L10

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 76e8a6a.

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
Expand Down
86 changes: 47 additions & 39 deletions v2/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add the shipped #97 fix to the 2.3.1 notes

When v2-2.3.1 is tagged, .github/workflows/v2-release.yml extracts only this section, which the app also bundles as its in-product history. CLAUDE.md:31 says #97 is in the release, and commit 2a4818f introduced the user-visible full-process-name/PID fix after 2.3.0, but this new section has no #97 entry; users and support therefore receive incomplete release notes. Add that fix under this heading.

AGENTS.md reference: AGENTS.md:L105-L106

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 76e8a6a.


- **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
<date>" 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.
Comment on lines +27 to +30

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Include the #97 memory-table fix in the release notes

When v2-2.3.1 is tagged, this section becomes the published and bundled release notes, but it never mentions the shipped #97 fix that preserves full process names and PIDs in the Memory table. The changed CLAUDE.md explicitly includes #97 in the 2.3.1 scope, and merge 3de41cb is in the release range, so add an entry here to avoid publishing an incomplete change list.

AGENTS.md reference: AGENTS.md:L105-L106

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 76e8a6a.


### 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
Expand Down Expand Up @@ -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
<date>" 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
Expand Down
14 changes: 7 additions & 7 deletions v2/HANDOFF.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Binary file modified v2/screenshots/gallery-light.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified v2/screenshots/gallery.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading