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:
co-authored by
Claude Opus 5
parent
3e4d0e17bc
commit
4f008c558b
+41
-7
@@ -107,22 +107,56 @@ npm run serve # http://localhost:8000
|
||||
|
||||
## Publishing to the Homebrew Channel
|
||||
|
||||
Two ways to get an ipk into the Browse tab. Neither one touches `ares-install`
|
||||
or ssh — the app installs itself once the TV can reach a URL.
|
||||
|
||||
### Your own repository (no review, no waiting)
|
||||
|
||||
The Homebrew Channel's *Settings → Repositories → Add repository* accepts any
|
||||
URL that returns `{"packages": [...]}`, where each entry is the same manifest
|
||||
[`make-manifest.py`](../tools/make-manifest.py) already writes. Point one at
|
||||
your own git host's release assets and the app shows up in Browse with no
|
||||
submission process at all — this is what `--repo-out` (on by default) is for.
|
||||
|
||||
1. Bump `version` in `frontend/appinfo.json`, `servicefiles/package.json` and
|
||||
`package.json`.
|
||||
2. `./tools/build.sh` and test the ipk on a real set.
|
||||
3. Attach the ipk and `frontend/assets/icon.png` to a release.
|
||||
4. Generate the manifest and attach that too:
|
||||
2. Build the ipk: `./tools/docker-build.sh && ./tools/build.sh package` (or
|
||||
`./tools/build.sh` on Linux with the NDK installed).
|
||||
3. Create a release tagged e.g. `v1.0.0` and attach three files to it: the
|
||||
ipk, `frontend/assets/icon.png`, and a repo index generated with
|
||||
`--base-url` set to that release's asset URL:
|
||||
|
||||
```sh
|
||||
python3 tools/make-manifest.py \
|
||||
--base-url https://git.crylia.de/Crylia/lgtv_audio_cap/releases/download/v1.0.0
|
||||
# -> out/manifest.json (one app entry)
|
||||
# -> out/repo.json (that entry wrapped as {"packages": [...]})
|
||||
```
|
||||
|
||||
5. Submit the manifest URL to [webosbrew/repo](https://github.com/webosbrew/repo).
|
||||
Attach `out/repo.json` itself too — its own download URL is what you paste
|
||||
into the TV, and it must match `--base-url` exactly or the ipk/icon links
|
||||
inside it point at the wrong place.
|
||||
4. On the TV: Homebrew Channel → gear icon → *Add repository* → paste the
|
||||
`repo.json` release URL → back out to Browse → find *Audio Cap* → Install.
|
||||
|
||||
The manifest sets `"rootRequired": true`, which tells the Homebrew Channel the
|
||||
service needs elevating. The app can also do it on demand — *System → Grant root
|
||||
access* runs the Channel's `elevate-service`.
|
||||
Shipping an update later is the same four steps with a bumped version and a
|
||||
new release tag; the Channel diffs against the installed version and offers
|
||||
an update once the repo URL is already added.
|
||||
|
||||
### The official repo (public listing, reviewed)
|
||||
|
||||
Submit once to [webosbrew/apps-repo](https://github.com/webosbrew/apps-repo)
|
||||
and anyone with a stock Homebrew Channel install can find it without adding a
|
||||
custom repository. That project wants a `.yml` descriptor pointing at your own
|
||||
hosted `manifest.json` (the un-wrapped file from step 3 above) — see its README
|
||||
for the submission format.
|
||||
|
||||
---
|
||||
|
||||
`rootRequired: true` in the manifest tells the Homebrew Channel the service
|
||||
needs elevating, from either path. The app can also do it on demand —
|
||||
*System → Grant root access* runs the Channel's `elevate-service` itself, over
|
||||
the Luna bus, so it works whether SSH is enabled on the TV or not.
|
||||
|
||||
## How the service is put together
|
||||
|
||||
|
||||
Reference in New Issue
Block a user