Prepare repository for HACS

Update integration metadata, sync translations, add HACS and Hassfest validation workflows, and add local brand assets for Home Assistant integration branding.
This commit is contained in:
2026-04-03 17:33:19 -05:00
parent 792f6905ab
commit f06d1a3d71
8 changed files with 218 additions and 14 deletions
+18
View File
@@ -0,0 +1,18 @@
name: Hassfest
on:
push:
pull_request:
workflow_dispatch:
permissions: {}
jobs:
hassfest:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Hassfest validation
uses: home-assistant/actions/hassfest@master
+19
View File
@@ -0,0 +1,19 @@
name: Validate
on:
push:
pull_request:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
permissions: {}
jobs:
validate-hacs:
runs-on: ubuntu-latest
steps:
- name: HACS validation
uses: hacs/action@main
with:
category: integration
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

+163
View File
@@ -0,0 +1,163 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
class="brandLogo"
viewBox="0 0 120 120"
role="img"
aria-label="RelayTV logo"
version="1.1"
id="svg7"
sodipodi:docname="logo.svg"
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
width="120"
height="120"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="2.2290436"
inkscape:cx="-56.750795"
inkscape:cy="-5.6077861"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg7" />
<defs
id="defs4">
<linearGradient
id="rtvBorder"
x1="26"
y1="23"
x2="26"
y2="104"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-7.0225934,-4.3094571)">
<stop
offset="0"
stop-color="#36D9F4"
id="stop1" />
<stop
offset="1"
stop-color="#2D89FF"
id="stop2" />
</linearGradient>
<linearGradient
id="rtvNode"
x1="44"
y1="52"
x2="85"
y2="80"
gradientUnits="userSpaceOnUse">
<stop
offset="0"
stop-color="#36D9F4"
id="stop3" />
<stop
offset="1"
stop-color="#2D89FF"
id="stop4" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#rtvNode"
id="linearGradient7"
gradientUnits="userSpaceOnUse"
x1="44"
y1="52"
x2="85"
y2="80"
gradientTransform="translate(-4.4220694,-33.157406)" />
<linearGradient
inkscape:collect="always"
xlink:href="#rtvNode"
id="linearGradient8"
gradientUnits="userSpaceOnUse"
x1="44"
y1="52"
x2="85"
y2="80"
gradientTransform="matrix(0.69654129,0,0,0.69654129,-0.44964633,-13.4924)" />
<linearGradient
inkscape:collect="always"
xlink:href="#rtvNode"
id="linearGradient9"
gradientUnits="userSpaceOnUse"
x1="44"
y1="52"
x2="85"
y2="80"
gradientTransform="matrix(1.4231088,0,0,1.4231088,-57.907395,-16.469392)" />
<linearGradient
inkscape:collect="always"
xlink:href="#rtvNode"
id="linearGradient10"
gradientUnits="userSpaceOnUse"
x1="44"
y1="52"
x2="85"
y2="80"
gradientTransform="translate(-1.9563444,-19.262153)" />
</defs>
<path
d="m 12.977405,22.421411 v 74.538263 c 0,5.480756 2.192302,9.865356 6.576907,12.057656 4.384602,2.1923 8.769207,2.1923 13.153811,0 L 102.86178,71.748202 c 4.3846,-2.192301 6.5769,-6.576904 6.5769,-12.05766 0,-5.480755 -2.1923,-9.865358 -6.5769,-12.05766 L 32.708123,10.363751 c -9.243046,-4.6215229 -19.730718,2.63855 -19.730718,12.05766 z"
fill="#1b2439"
id="path4-9"
sodipodi:nodetypes="sssccsccs"
style="fill:#ffffff;stroke-width:1.09615" />
<path
d="m 16.977405,25.690543 v 68 c 0,5 2,8.999997 6.000001,10.999997 4,2 8,2 12,0 L 98.977405,70.690543 c 3.999995,-2 5.999995,-6 5.999995,-11 0,-5 -2,-9 -5.999995,-11 l -63.999999,-34 c -8.432274,-4.216137 -18.000001,2.407104 -18.000001,11 z"
fill="#1b2439"
id="path4"
sodipodi:nodetypes="sssccsccs" />
<path
d="M 64.888912,39.132085 C 61.322926,36.625291 38.942884,24.088302 34.008525,21.830028 c -5.764742,-2.63831 -10.273365,1.854728 -9.880923,5.883937 0.172465,1.770705 0.181759,57.55271 0.209974,63.088644 0.04095,8.033864 5.24639,8.104474 8.462933,7.161964 5.13517,-1.41245 28.584861,-15.178429 29.632012,-15.777348"
fill="none"
stroke="url(#rtvBorder)"
stroke-width="5"
stroke-linecap="round"
stroke-linejoin="round"
id="path5"
sodipodi:nodetypes="cssscc"
style="stroke:url(#rtvBorder)" />
<path
d="M 66.281831,72.153756 C 65.097162,71.980113 52.367404,69.366545 50.403175,69.243248 M 67.68942,50.586989 C 65.099838,51.839237 49.195278,61.510615 49.195278,61.510615"
fill="none"
stroke="url(#rtvNode)"
stroke-width="4"
stroke-linecap="round"
id="path7"
style="stroke:url(#linearGradient7)"
sodipodi:nodetypes="cccc" />
<circle
cx="73.010902"
cy="73.952789"
r="6.9654131"
fill="url(#rtvNode)"
id="circle5"
style="fill:url(#linearGradient8);stroke-width:0.696541" />
<circle
cx="44.864246"
cy="65.872444"
r="9.9617615"
fill="url(#rtvNode)"
id="circle6"
style="fill:url(#linearGradient9);stroke-width:1.42311" />
<circle
cx="74.238838"
cy="48.116142"
r="7"
fill="url(#rtvNode)"
id="circle7"
style="fill:url(#linearGradient10)" />
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

+4 -4
View File
@@ -1,16 +1,16 @@
{
"codeowners": [
"@your-github-handle"
"@mcgeezy"
],
"config_flow": true,
"dependencies": [
"frontend"
],
"documentation": "https://github.com/your-org/relaytv",
"documentation": "https://github.com/mcgeezy/relaytv-ha",
"domain": "relaytv",
"iot_class": "local_polling",
"issue_tracker": "https://github.com/your-org/relaytv/issues",
"issue_tracker": "https://github.com/mcgeezy/relaytv-ha/issues",
"name": "RelayTV",
"requirements": [],
"version": "0.3.6"
}
}
+12 -8
View File
@@ -1,27 +1,31 @@
{
"title": "RelayTV Panel",
"config": {
"step": {
"user": {
"title": "Connect to RelayTV",
"description": "Enter the base URL where RelayTV is reachable from Home Assistant (example: http://relaytv-host:8787).",
"description": "Add a RelayTV server reachable from Home Assistant.",
"data": {
"base_url": "RelayTV base URL"
"base_url": "RelayTV server address",
"server_name": "Name"
}
}
},
"error": {
"missing_base_url": "Please enter a RelayTV base URL."
"missing_base_url": "Please enter a RelayTV base URL.",
"missing_name": "Please enter a name.",
"already_configured": "This RelayTV server is already configured."
}
},
"options": {
"step": {
"init": {
"title": "Panel options",
"description": "Customize how the RelayTV panel appears in the Home Assistant sidebar.",
"title": "Sidebar panel",
"description": "Choose sidebar behavior and optional sensor-to-stream mappings.",
"data": {
"panel_title": "Sidebar title",
"panel_icon": "Sidebar icon (MDI)",
"panel_path": "Sidebar path (URL slug)"
"panel_enabled": "Enable sidebar panel",
"panel_target_entry_id": "Server shown in sidebar",
"sensor_stream_mappings": "Sensor to Stream Mapping (list of {sensor_entity_id, url})"
}
}
}
+2 -2
View File
@@ -1,8 +1,8 @@
{
"name": "RelayTV Panel",
"name": "RelayTV",
"content_in_root": false,
"render_readme": true,
"homeassistant": "2023.10.0",
"zip_release": true,
"filename": "relaytv.zip"
}
}