Add a no-SSH install path: a self-hosted Homebrew Channel repository

ares-install needs a working ssh into the TV, and this TV only has root
access (no Developer Mode, no ssh currently reachable). The Homebrew
Channel's own "Add repository" dialog accepts any URL that returns
{"packages": [...]}, which is the same schema its own gen-manifest.js
uses per app — confirmed by reading the app's source directly rather
than guessing at the format.

make-manifest.py now also writes out/repo.json, the existing manifest
wrapped in that shape, so publishing is: build the ipk, run the script
with --base-url pointing at wherever the release assets will live,
attach ipk + icon + repo.json there, then paste the repo.json URL into
the TV once. No ares, no ssh, no review queue.

Root elevation afterwards is unaffected either way: "Grant root access"
in the app calls elevate-service over the Luna bus from inside the
running app, which was already ssh-independent.

Corrected two inaccuracies in the process: webosbrew/repo doesn't exist
(the real project is webosbrew/apps-repo), and the Homebrew Channel has
no "install from file" UI — Browse-and-install or the /install Luna
service are the only ways in, both of which need a URL, not a local
path.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Rene Kievits
2026-08-26 12:14:31 +02:00
co-authored by Claude Opus 5
parent 3e4d0e17bc
commit 4f008c558b
3 changed files with 88 additions and 30 deletions
+24 -15
View File
@@ -51,27 +51,36 @@ See [docs/hyperhdr.md](docs/hyperhdr.md) for both, step by step.
## Installing
**From the Homebrew Channel.** Open the Homebrew Channel on the TV, find
*Audio Cap*, install, launch.
This app is not in the official Homebrew Channel repository (that needs a
review submission — see [docs/development.md](docs/development.md)). Two ways
to get it onto the TV instead, neither needing SSH or Developer Mode:
**From an ipk.** Copy the ipk to the TV and install it with the Homebrew
Channel's *Install from file*, or from a workstation:
**Add it as a custom repository (recommended).** The Homebrew Channel can
browse-and-install from any repository URL you give it, not just the official
one. Build the ipk, publish it plus a generated repo index, then add that URL
on the TV:
```sh
npm install # ares-cli, only needed for step 2
./tools/docker-build.sh # cross-compile; Linux: ./tools/build.sh native
./tools/build.sh package # -> out/*.ipk
python3 tools/make-manifest.py --base-url <where you'll host the release assets>
# -> out/repo.json, out/manifest.json
```
Attach the ipk, `frontend/assets/icon.png` and `out/repo.json` to a release at
that URL, then on the TV: **Homebrew Channel → ⚙ → Add repository** → paste the
`repo.json` URL → back to Browse → *Audio Cap* → Install. Full walkthrough,
including why the URLs have to match exactly, in
[docs/development.md](docs/development.md#publishing-to-the-homebrew-channel).
**Install the ipk directly**, if you do have ares-cli talking to the TV (e.g.
LG Developer Mode's ssh on port 9922, or a root SSH server you've enabled):
```sh
ares-install --device tv out/org.webosbrew.audiocap_1.0.0_all.ipk
```
**From source.** The NDK is Linux-only, so on macOS or Windows the compile goes
through Docker:
```sh
npm install # ares-cli
./tools/docker-build.sh # or ./tools/build.sh native on Linux
./tools/build.sh package # -> out/*.ipk
```
See [docs/development.md](docs/development.md) for the rest.
## First run
1. Launch **Audio Cap** on the TV.