diff --git a/.github/workflows/publish-app.yml b/.github/workflows/publish-app.yml
index 191d21e..731b3c5 100644
--- a/.github/workflows/publish-app.yml
+++ b/.github/workflows/publish-app.yml
@@ -10,7 +10,7 @@ concurrency:
cancel-in-progress: false
permissions:
- contents: read
+ contents: write
packages: write
jobs:
@@ -63,6 +63,19 @@ jobs:
- name: Validate Home Assistant integration syntax
run: python3 -m compileall -q homeassistant/integration
+ - name: Package HACS integration release
+ run: |
+ cd homeassistant/integration
+ zip -r ../../virtual_carillon.zip . -x '__pycache__/*' '*.pyc'
+
+ - name: Publish GitHub release with HACS asset
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: >-
+ gh release create "${GITHUB_REF_NAME}" virtual_carillon.zip
+ --title "Virtual Carillon ${GITHUB_REF_NAME}"
+ --generate-notes
+
- name: Log in to GHCR
uses: docker/login-action@v3
with:
diff --git a/README.md b/README.md
index 4e2e211..18ddc16 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
# Virtual Carillon
-
+
Virtual Carillon turns your speakers into a programmable Church carillon.
@@ -20,7 +20,7 @@ You can also run the carillon on its own from the command line or connect to it
Most people will use Virtual Carillon with [Home Assistant](https://www.home-assistant.io/getting-started/), a free, self-hosted home-automation system. The included Home Assistant Integration provides a user-friendly GUI to interact with Virtual Carillon. We also provide Virtual Carillon as a standalone app for advanced users who are comfortable working from the command line and don't want to use Home Assistant.
-[HACS](https://hacs.xyz/docs/use/) (Home Assistant Community Store) is an optional community store inside Home Assistant. This repository keeps all Home Assistant sources under `homeassistant/`; use the manual installation path below unless a HACS release package is provided.
+[HACS](https://hacs.xyz/docs/use/) (Home Assistant Community Store) is the recommended way to install the Home Assistant integration. Releases include the HACS package; the repository keeps its source under `homeassistant/integration` so no HACS-specific top-level source directory is needed. If HACS is unavailable, use the manual installation fallback below.
For either Home Assistant path, you must have at least one working Home Assistant `media_player` (speaker) before setting up Virtual Carillon.
@@ -40,9 +40,13 @@ Use this path when your Home Assistant installation has **Settings → Apps**. I
2. Search the App store for **Virtual Carillon**, select it, choose **Install**, and then choose **Start**.
3. Open the app’s **Configuration** tab. Set **API token** to a long, unique private value, choose **Save**, and restart the app if Home Assistant asks.
-4. Install the integration:
+4. Install the integration through HACS:
- - **Manual installation:** copy this repository’s `homeassistant/integration` directory to `/config/custom_components/virtual_carillon/`, then restart Home Assistant.
+ - In HACS, open **Integrations**, choose the three-dot menu, and select **Custom repositories**.
+ - Add `https://github.com/HPaulson/virtual-carillon` as an **Integration**, then choose **Download** for the latest release.
+ - Restart Home Assistant when HACS asks.
+
+ If HACS is unavailable, manually copy this repository’s `homeassistant/integration` directory to `/config/custom_components/virtual_carillon/`, then restart Home Assistant.
5. Open **Settings → Devices & services → Add integration**, search for **Virtual Carillon**, and enter:
@@ -80,7 +84,14 @@ Use this path when Home Assistant itself runs in a Docker container. Virtual Car
The `virtual-carillon_default` network is created by the command in step 3. Once both containers share it, Home Assistant can reach the engine as `http://virtual-carillon:9876`. Keep this connection in your own Compose configuration if you recreate the Home Assistant container.
-5. Copy this repository’s `homeassistant/integration` directory to `/config/custom_components/virtual_carillon/`, then restart Home Assistant. HACS custom repositories currently require the integration under a repository-root `custom_components/` directory, so this source layout is intentionally installed manually.
+5. Install the integration through HACS:
+
+ - In HACS, open **Integrations**, choose the three-dot menu, and select **Custom repositories**.
+ - Add `https://github.com/HPaulson/virtual-carillon` as an **Integration**, then choose **Download** for the latest release.
+ - Restart Home Assistant when HACS asks.
+
+ If HACS is unavailable, manually copy this repository’s `homeassistant/integration` directory to `/config/custom_components/virtual_carillon/`, then restart Home Assistant.
+
6. Open **Settings → Devices & services → Add integration**, search for **Virtual Carillon**, and enter:
- **Engine URL:** `http://virtual-carillon:9876`
diff --git a/hacs.json b/hacs.json
index 89f2f06..9f3cae5 100644
--- a/hacs.json
+++ b/hacs.json
@@ -1,4 +1,7 @@
{
"name": "Virtual Carillon",
- "homeassistant": "2024.1.0"
+ "homeassistant": "2024.1.0",
+ "zip_release": true,
+ "filename": "virtual_carillon.zip",
+ "hide_default_branch": true
}