Skip to content

Playback report, audio passthrough, resource sampling, shell runner - #90

Merged
bryanroscoe merged 9 commits into
bryanroscoe:mainfrom
arielsrv:feat/playback-report-and-shell-runner
Sep 17, 2026
Merged

bryanroscoe merged 9 commits into
bryanroscoe:mainfrom
arielsrv:feat/playback-report-and-shell-runner

Conversation

@arielsrv

@arielsrv arielsrv commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Adds desktop playback configuration reports, per-interface resource sampling, audio controls, and an opt-in expert shell with bounded execution and output. Expert shell is explicitly outside the curated actions' protected-package guarantee.

Reuses playback/resource reports and audio controls in the mobile app, retaining Free reads and Pro writes. Snapshot restoration now distinguishes absent settings from empty values, while older snapshots retain their existing behavior.

Includes corrected codec/audio reporting, stale-result and readback fixes, regression coverage, and refreshed desktop galleries. Draft pending physical-device validation.

Four additions to v2, all reading facts off the device rather than
assuming them.

Playback tab (engine/media.rs): rolls up the decoder list from
media_codecs*.xml, every supported display mode, HDR formats, and the
encoded-surround settings into one report, then derives a verdict —
whether 24p can actually reach the panel, whether lossless audio is
being decoded on the way out, what a format falls back to. Two layers,
kept apart on purpose: derived facts work on any Android TV, while
curated per-family notes (a Shield will not tell you its SoC has no AV1
block) are additive and rendered separately.

An unreadable codec list is reported as unknown, never as unsupported.
That distinction is load-bearing: a Shield TV Pro keeps the file under
/vendor/odm/etc, so a glob missing that path made the whole report read
as "no AV1" on the device this app is named after.

Tweaks: encoded_surround_output plus a format allow-list, for sinks that
under-report what they can decode and leave TrueHD/DTS-HD downmixed.

Health: CPU and network rates from two /proc reads either side of a
device-side sleep, in one round trip. Kept out of health_report so a
refresh never pays the sampling second.

Shell tab: command runner with read-only presets and local bookmarks.
engine::safety::shell_command_blocked refuses commands that plainly
disable or remove a never-disable package before anything is sent — an
anti-footgun, not a boundary, and its docs and tests say so explicitly.

parse_display_modes now returns every mode instead of only the active
one; 23.976 is never the active mode while the UI is on screen, which
is exactly why it needed finding.
@bryanroscoe

Copy link
Copy Markdown
Owner

Thanks for contributing here, i will take a look this week and get this cleaned up and ready to merge.

@bryanroscoe
bryanroscoe marked this pull request as draft September 16, 2026 20:34
@bryanroscoe
bryanroscoe marked this pull request as ready for review September 17, 2026 01:15
bryanroscoe and others added 4 commits September 16, 2026 21:22
# Conflicts:
#	.github/workflows/v2-tests.yml
#	v2/package.json
The new section landed between the v2-2.2.0-beta.1 heading and the paragraph
that introduces it, so the intro read as if it belonged to the playback work.
Move it below, split it the way the rest of the file is split, and rewrite the
bullets in the changelog's voice — it is release notes for users, not a commit
summary. The audio controls live on Tweaks, not on Playback; say so.

Renumber the capture script's screen comments now that two screens were
inserted, and move the test module's import back above its tests.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
# Conflicts:
#	.github/workflows/v2-tests.yml
#	v2/package.json
The Remote screen gained a Paste button and new copy on main, and the gallery
was not regenerated with it. This run picks that up along with the Playback and
Shell screens.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
# Conflicts:
#	v2/src/lib/prefs.ts
@bryanroscoe
bryanroscoe merged commit 74cf7fe into bryanroscoe:main Sep 17, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants