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:
@@ -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
|
||||
@@ -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 |
Executable
+163
@@ -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 |
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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})"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user