Bridge-mode networking with explicit 8123:8123 port mapping. Image is
homeassistant/home-assistant:stable — upstream's recommended production
tag, same image as the Docker Hub link in #1.
One Docker-managed volume (`furtka_home-assistant_config`). No
manifest.settings — onboarding (admin user, home location, units) is
the standard Home Assistant in-browser flow on first visit to :8123,
same shape as Jellyfin and Uptime Kuma.
Cloud integrations (Hue Cloud, Tado, Sonos via account) work today.
Local-discovery integrations that need host networking, Bluetooth, or
Zigbee/Z-Wave dongle passthrough are explicitly deferred — listed as
a follow-up once the manifest schema grows a network_mode knob.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Catalog 26.11-alpha rolls up the Jellyfin compose default-substitution
fix (already on main as 2a31a79) into a tagged release so the
validator CI goes green on every post-Jellyfin commit.
No app additions or schema changes — core 26.11-alpha (auth) is the
substantive release this cycle, catalog just clears its CI red X.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Forgejo Actions did not pick up the push of 2a31a79 (fix(jellyfin)
default-substitution) — no ci.yml task registered 10+ min after the
push landed. Empty commit forces a fresh webhook trigger so the
validator fix can go green. Same Forgejo hiccup also dropped
ci.yml for core 577c246 earlier.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Without a .env in the jellyfin app dir, validate-catalog.py's
\`docker compose config\` step substituted \${MEDIA_PATH} → empty →
\`:/media:ro\` which compose rejects ("empty section between colons"),
failing CI on every post-Jellyfin commit. Local runs skipped the
check because the validator gates it on \`which docker\` and my dev
box has none.
Fix: use the default-substitution form \${MEDIA_PATH:-/nonexistent}.
Empty/unset MEDIA_PATH now expands to /nonexistent — valid volume
spec, CI green. Real install flow (form fill → .env with real path)
substitutes the user value as before. /nonexistent is obviously
wrong, so if a broken install path ever reaches \`docker compose up\`
the mount fails loudly rather than silently mounting something
random.
Doesn't affect the already-published 26.10-alpha catalog tarball —
that one works end-to-end for the Web UI install flow. This fix is
purely to un-red CI on subsequent pushes.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Catalog 26.10-alpha adds Jellyfin (first app to use the core-26.10
path-type setting for host-bind-mounted media libraries) and bumps
the vendored manifest schema to match core. Requires boxes to be on
core 26.10-alpha or newer — the 26.9 manifest parser rejects the
path type.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Mirror of the core repo's apps/README.md update. Keeps the two copies
in lockstep since app authors may land on either one.
Co-Authored-By: Claude Opus 4.7 (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>
Catalog 26.9-alpha cuts the IT-Tools addition from b2b4793 into a
tagged release so boxes pick it up via on-box sync.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Client-side utility collection (password/UUID/QR generators, hashes,
Base64/JWT, JSON/YAML formatter, regex tester, cron parser, etc.) from
corentinth/it-tools. No state, no volumes, no settings — runs fully in
the browser and serves on port 8080. Good smoke-test target for the
catalog-sync path.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Both apps grow an `open_url` manifest field so the core UI can render
an Open button that deep-links into the app. fileshare uses smb:// to
trigger the OS file manager; uptime-kuma uses http://{host}:3001/ for
the browser. No image or compose changes.
- fileshare 0.1.1 → 0.1.2
- uptime-kuma 1.0.0 → 1.0.1
louislam/uptime-kuma:1 with one data volume and port 3001. Admin
account bootstrapped from the first browser visit to :3001 — no
Furtka settings form needed. Catalog release 26.7-alpha.
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>