First catalog apps to exercise core 26.17's app-to-app dependency
feature — until now every app was standalone.
- mosquitto: MQTT broker, first dependency *provider*. Mandatory auth;
per-consumer accounts created by on_install/on_start hooks
(scripts/provision-client.sh, scripts/ensure-client.sh) that run inside
the broker container via `docker compose exec`. Provider-side password
stash so on_start can restore an account after a volume wipe.
- zigbee2mqtt: first dependency *consumer*. `requires` mosquitto; MQTT
creds wired in from the provisioning hook via ZIGBEE2MQTT_CONFIG_* env.
Serial coordinator path as a text setting + devices mapping.
Supporting changes:
- Bump vendored furtka_manifest.py (26.10-era -> 26.17) so the validator
actually validates the `requires` schema instead of ignoring it.
- Document `requires`/hooks in apps/README.md (was undocumented), including
the three framework gaps building this pair surfaced.
- CI now shellchecks app hook scripts (apps/*/scripts/*.sh), not just
repo-root scripts/.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
First app to use the core-26.10-alpha `path` setting type. User picks
their existing media folder (MEDIA_PATH=/mnt/media) in the install
form; core installer validates the path server-side; compose mounts
it read-only at /media. Docker-managed volumes hold /config and
/cache; admin account is created from the first browser visit to
:8096. No HW transcoding yet — that's a later schema extension.
Also bumps the vendored manifest schema in scripts/vendor/ to match
core 26.10-alpha — catches up both the missing `open_url` field (gap
since 26.6-alpha) and the new `path` setting type. No changes needed
to validate-catalog.py itself.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Initial layout: apps/fileshare/ (seeded from daniel/furtka apps/), CI
(JSON + manifest validator + shellcheck), release pipeline (tag-driven,
mirrors core repo), vendored manifest schema for offline validation.
The core repo (daniel/furtka) at 26.6-alpha keeps apps/fileshare as a
seed so offline first-boot still has an installable app; this catalog
becomes authoritative once a box has synced at least once.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>