UI integrates the shared sidebar (nav#sidebar + sidebar.js + crt-engine) and
adds per-service quick actions (start/stop/restart/enable/disable) + a config
editor drawer (view/edit module TOML, shows deps). API: POST
/module/{name}/action/{verb}, GET/PUT /module/{name}/config. Privileged work
via validated root helper secubox-appstorectl (secubox-* units +
/etc/secubox/<name>.toml only, TOML-validated writes) + narrow sudoers.
postinst rebuilds the hub menu cache so the store shows in the navbar.
Bumps 0.2.0.
The /api/v1/appstore/ route must live in secubox-routes.d/ (the hub's
authoritative API include) or the generic /api/ -> aggregator catch-all
swallows it (404). Split: API route -> secubox-routes.d/appstore-routes.conf
(standalone appstore.sock), UI -> secubox.d/appstore.conf. Bumps 0.1.1.
New secubox-appstore module: api/main.py serves /catalog (category/tier/
state/q), /module/{name}, /categories, /health — merging a build-time
catalog (generated from every module's debian/secubox.yaml) with live dpkg
+ systemctl state (available/installed/running/tier-locked). Categorized,
tiered, searchable grid UI at /appstore/. Standalone service on
/run/secubox/appstore.sock, nginx route + static (no aggregator dependency).
Also backfills secubox-lyrion's missing manifest.