diff --git a/.github/dependabot.yml b/.github/dependabot.yml index e8c76dc4a8..41fd51f301 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,6 +3,17 @@ version: 2 updates: - package-ecosystem: "github-actions" directory: "/" + labels: + - "pr: dependency-update" schedule: - interval: "weekly" - + interval: weekly + time: "06:00" + open-pull-requests-limit: 10 + - package-ecosystem: "pip" + directory: "/" + labels: + - "pr: dependency-update" + schedule: + interval: weekly + time: "06:00" + open-pull-requests-limit: 10 diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 73b46bd131..169586b8c6 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -1,4 +1,5 @@ -name: "Checks" +name: Check + on: pull_request: types: @@ -10,13 +11,9 @@ on: - master paths: - appdaemon - - blacklist - - critical - integration - - netdaemon - plugin - python_script - - removed - template - theme @@ -24,17 +21,24 @@ concurrency: group: checks-${{ github.ref }} cancel-in-progress: true +permissions: {} + jobs: preflight: runs-on: ubuntu-latest - name: Initialize + name: Preflight outputs: repository: ${{ steps.repository.outputs.repository }} category: ${{ steps.category.outputs.category }} removal: ${{ steps.removal.outputs.removal }} steps: - name: Check out repository - uses: actions/checkout@v4.1.1 + uses: actions/checkout@v4.2.2 + + - name: Set up Python + uses: actions/setup-python@v5.3.0 + with: + python-version-file: ".python-version" - name: Clone origin run: git clone --depth 1 https://github.com/hacs/default /tmp/repositories/default @@ -43,6 +47,10 @@ jobs: id: repository run: echo "repository=$(python3 -m scripts.changed.repo)" >> $GITHUB_OUTPUT + - name: Set category + id: category + run: echo "category=$(python3 -m scripts.changed.category)" >> $GITHUB_OUTPUT + - name: Check removal id: removal run: | @@ -50,38 +58,21 @@ jobs: echo "removal=true" >> $GITHUB_OUTPUT fi - - name: Set category - if: steps.removal.outputs.removal != 'true' - id: category - run: echo "category=$(python3 -m scripts.changed.category)" >> $GITHUB_OUTPUT - - - name: Clone new addition - if: steps.removal.outputs.removal != 'true' - run: | - repo=$(python3 -m scripts.changed.repo) - git clone --depth 1 "https://github.com/$repo" /tmp/repositories/addition - - - name: Upload shared artifacts - if: steps.removal.outputs.removal != 'true' - uses: actions/upload-artifact@v3 - with: - name: repositories - path: /tmp/repositories - owner: runs-on: ubuntu-latest - name: Check Owner + name: Owner needs: preflight if: needs.preflight.outputs.removal != 'true' steps: - name: Check out repository - uses: actions/checkout@v4.1.1 + uses: actions/checkout@v4.2.2 - - name: Download shared artifacts - uses: actions/download-artifact@v3 + - name: Set up Python + uses: actions/setup-python@v5.3.0 with: - name: repositories - path: /tmp/repositories + python-version-file: ".python-version" + cache: "pip" + cache-dependency-path: "requirements.txt" - name: Install dependencies if needed run: scripts/setup @@ -90,13 +81,22 @@ jobs: run: python3 -m scripts.check.owner env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPOSITORY: ${{needs.preflight.outputs.repository}} - edits: + editable: runs-on: ubuntu-latest - name: Check if PR is editable + name: Editable PR steps: - name: Check out repository - uses: actions/checkout@v4.1.1 + uses: actions/checkout@v4.2.2 + + - name: Set up Python + uses: actions/setup-python@v5.3.0 + with: + python-version-file: ".python-version" + cache: "pip" + cache-dependency-path: "requirements.txt" + - name: Install dependencies if needed run: scripts/setup @@ -104,49 +104,59 @@ jobs: - name: Run the check run: python3 -m scripts.check.edits - - hassfest: + removed: runs-on: ubuntu-latest - name: "Check hassfest" + name: Removed repository needs: preflight - if: needs.preflight.outputs.category == 'integration' + if: needs.preflight.outputs.removal != 'true' steps: - name: Check out repository - uses: actions/checkout@v4.1.1 + uses: actions/checkout@v4.2.1 - - name: Download shared artifacts - uses: actions/download-artifact@v3 + - name: Set up Python + uses: actions/setup-python@v5.2.0 with: - name: repositories - path: /tmp/repositories + python-version-file: ".python-version" + cache: "pip" + cache-dependency-path: "requirements.txt" - - name: Get hassfest action - run: | - git clone --depth 1 https://github.com/home-assistant/actions.git /tmp/actions - echo "::add-matcher::/tmp/actions/hassfest/problem-matcher.json" + - name: Install dependencies if needed + run: scripts/setup + + - name: Run the check + run: python3 -m scripts.check.removed + env: + REPOSITORY: ${{needs.preflight.outputs.repository}} - - name: Enable problem-matcher - run: echo "::add-matcher::/tmp/actions/hassfest/problem-matcher.json" + hassfest: + runs-on: ubuntu-latest + name: Hassfest + needs: preflight + if: needs.preflight.outputs.category == 'integration' && needs.preflight.outputs.removal != 'true' + steps: + - name: Check out repository + uses: actions/checkout@v4.2.2 - - name: Build hassfest - run: docker build /tmp/actions/hassfest -f /tmp/actions/hassfest/Dockerfile -t hassfest + - name: Clone new addition + run: | + git clone --depth 1 "https://github.com/${{needs.preflight.outputs.repository}}" /tmp/repositories/addition - name: Run hassfest run: | integration=$(python3 -m scripts.helpers.integration_path) domain=$(python3 -m scripts.helpers.domain) - docker run \ - --rm \ + docker run --rm \ -v "$integration":"/github/workspace/$domain" \ - hassfest + ghcr.io/home-assistant/hassfest:latest + hacs: runs-on: ubuntu-latest - name: "Run HACS Action" + name: HACS action needs: preflight if: needs.preflight.outputs.removal != 'true' steps: - name: HACS action - uses: "hacs/action@main" + uses: hacs/action@main with: repository: ${{needs.preflight.outputs.repository}} - category: ${{needs.preflight.outputs.category}} \ No newline at end of file + category: ${{needs.preflight.outputs.category}} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index d465809d2d..22dfe45d90 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -17,17 +17,47 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repository - uses: actions/checkout@v4.1.1 + uses: actions/checkout@v4.2.2 - name: Validate run: jq --raw-output . appdaemon blacklist critical integration netdaemon plugin python_script removed template theme + jsonschema: + name: JSON schema + runs-on: ubuntu-latest + steps: + - name: Check out repository + uses: actions/checkout@v4.2.2 + + - name: Critical + uses: cardinalby/schema-validator-action@3.1.1 + with: + file: "critical" + schema: "tools/jsonschema/critical.schema.json" + + - name: Repositories + uses: cardinalby/schema-validator-action@3.1.1 + with: + file: "appdaemon|blacklist|integration|netdaemon|plugin|python_script|template|theme" + schema: "tools/jsonschema/repositories.schema.json" + + - name: Removed + uses: cardinalby/schema-validator-action@3.1.1 + with: + file: "removed" + schema: "tools/jsonschema/removed.schema.json" + sorted: name: Sorted runs-on: ubuntu-latest steps: - name: Check out repository - uses: actions/checkout@v4.1.1 + uses: actions/checkout@v4.2.2 + + - name: Set up Python + uses: actions/setup-python@v5.3.0 + with: + python-version-file: ".python-version" - name: Check lists - run: python3 scripts/is_sorted.py \ No newline at end of file + run: python3 scripts/is_sorted.py diff --git a/.github/workflows/upload-critical.yml b/.github/workflows/upload-critical.yml index 107b27ab5c..bd909bbf2b 100644 --- a/.github/workflows/upload-critical.yml +++ b/.github/workflows/upload-critical.yml @@ -18,10 +18,16 @@ jobs: name: Upload steps: - name: Checkout the repository - uses: actions/checkout@v4.1.1 + uses: actions/checkout@v4.2.2 + + - name: Validate with JSON schema + uses: cardinalby/schema-validator-action@3.1.1 + with: + file: 'critical' + schema: 'tools/jsonschema/critical.schema.json' - name: Set up Python - uses: actions/setup-python@v5.0.0 + uses: actions/setup-python@v5.3.0 id: python with: python-version: "3.x" @@ -29,7 +35,7 @@ jobs: - name: Install AWS CLI run: | pip3 install \ - --disable-pip-version-check install \ + --disable-pip-version-check \ --ignore-installed \ awscli @@ -40,7 +46,7 @@ jobs: jq -c '[.[].repository]' < critical > upload/critical/repositories.json - name: Upload artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: critical path: upload/critical diff --git a/.github/workflows/upload-removed.yml b/.github/workflows/upload-removed.yml index 823fa9efae..0d5cc715a2 100644 --- a/.github/workflows/upload-removed.yml +++ b/.github/workflows/upload-removed.yml @@ -18,10 +18,16 @@ jobs: name: Upload steps: - name: Checkout the repository - uses: actions/checkout@v4.1.1 + uses: actions/checkout@v4.2.2 + + - name: Validate with JSON schema + uses: cardinalby/schema-validator-action@3.1.1 + with: + file: 'removed' + schema: 'tools/jsonschema/removed.schema.json' - name: Set up Python - uses: actions/setup-python@v5.0.0 + uses: actions/setup-python@v5.3.0 id: python with: python-version: "3.x" @@ -29,7 +35,7 @@ jobs: - name: Install AWS CLI run: | pip3 install \ - --disable-pip-version-check install \ + --disable-pip-version-check \ --ignore-installed \ awscli @@ -40,7 +46,7 @@ jobs: jq -c '[.[].repository]' < removed > upload/removed/repositories.json - name: Upload artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: removed path: upload/removed diff --git a/.python-version b/.python-version new file mode 100644 index 0000000000..7c7a975f4c --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.10 \ No newline at end of file diff --git a/appdaemon b/appdaemon index fce9ea8ef0..a08d95b142 100644 --- a/appdaemon +++ b/appdaemon @@ -36,16 +36,7 @@ "NiklasReiche/ad-spotify-mood-lights-sync", "nra4ever/calremind", "Odianosen25/Monitor-App", - "Petro31/ad_convert_media_volume", - "Petro31/ad_count_entities", - "Petro31/ad_group_all", - "Petro31/ad_monitor_events", - "Petro31/ad_seasonal_lights", - "Petro31/ad_simple_door_bell", - "Petro31/ad_sunset_lights", - "Petro31/ad_toggle_light", - "Petro31/ad_who_used_the_door", - "Petro31/IlluminateDoor", + "Pythm/ad-ClimateCommander", "Pythm/ad-Lightwand", "roopesh/ad-qolsys", "simonhq/accu_allergies", @@ -67,4 +58,4 @@ "wernerhp/ha.appdaemon.wasp", "XaF/qolsysgw", "xaviml/controllerx" -] +] \ No newline at end of file diff --git a/blacklist b/blacklist index 9695232df2..7a78e0ff59 100644 --- a/blacklist +++ b/blacklist @@ -1,14 +1,18 @@ [ "9rpp/securifi", + "a529987659852/openwbmqtt", "abacao/hass_wibeee", "AdamNaj/linksys_velop", "aijayadams/hass-blueair", "AitorDB/home-assistant-sun-card", + "alexarch21/history-explorer-card", "alryaz/hass-component-yandex-smart-home", "alryaz/hass-mosenergosbyt", "amaximus/bkk_stop_card", "amelchio/logbook_cache", + "anarion80/sodexo_dla_ciebie", "And3rsL/Deebot-for-Home-Assistant", + "andrew-codechimp/HA-Mastodon-Profile-Stats", "Armaell/home-assistant-custom-icons-loader", "atomic7777/atomic_calendar", "au190/au190_bkk_stop_card", @@ -45,7 +49,9 @@ "Ceerbeerus/beerbolaget", "cgarwood/homeassistant-fullykiosk", "cgarwood/homeassistant-zwave_mqtt", + "chaptergy/noctis-grey", "clayauld/lovelace-darksky-card", + "codyc1515/ha-contact-energy", "custom-cards/boilerplate-card", "custom-cards/button-entity-row", "custom-cards/camera-card", @@ -114,9 +120,14 @@ "cyberjunky/home-assistant-plugwise", "Cyr-ius/hass-cozytouch", "Cyr-ius/hass-hue-service-advanced", + "daenny/climate_group", "DavidFW1960/bom_forecast", "DavidMStraub/homeassistant-homeconnect", "DCSBL/ha-homewizard-energy", + "DeebotUniverse/Deebot-4-Home-Assistant", + "dgomes/ha_rrd_recorder", + "digitaljamie/google-theme", + "disforw/inverse", "djtimca/hagooglewifi", "djtimca/HASpaceX", "dmamontov/hass-ledfx", @@ -124,6 +135,7 @@ "dr1rrb/ha-twinkly", "DSorlov/hasl-platform", "dummylabs/watchman", + "dynasticorpheus/gigasetelements-ha", "eavanvalkenburg/sia", "echoromeo/hanobo", "edenhaus/ha-prosenic", @@ -183,6 +195,7 @@ "mac-zhou/midea-ac-py", "mammuth/ha-fritzbox-tools", "mampfes/hacs_wiffi", + "marcokreeft87/room-card", "marcomow/ble-bulb-card", "marrobHD/firetv-card", "MatthewFlamm/nwsradar", @@ -196,8 +209,10 @@ "Michsior14/ha-kaiterra", "Michsior14/ha-laser-egg", "mlowijs/HomeAssistant-TeslaCustomComponent", + "Mr-Groch/HA-Emulated-Color-Temp-Light", "MTrab/clever", "nagyrobi/home-assistant-custom-components-cover-rf-time-based", + "nagyrobi/home-assistant-custom-components-linkplay", "nagyrobi/home-assistant-custom-components-pfsense-gateways", "natekspencer/hacs-litterrobot", "NemesisRE/lovelace-swipe-navigation", @@ -208,11 +223,25 @@ "ntilley905/faastatus", "OpenXbox/xboxone-home-assistant", "opravdin/weback-hass", + "oziee/ha-solcast-solar", + "patrickhilker/tedee_hass_integration", "perara/systemair-save-connect", "peternijssen/home-assistant-jumbo", "peternijssen/lovelace-postnl-card", + "Petro31/ad_convert_media_volume", + "Petro31/ad_count_entities", + "Petro31/ad_group_all", + "Petro31/ad_monitor_events", "Petro31/ad_multizone_media_control", "Petro31/ad_people_tracker", + "Petro31/ad_seasonal_lights", + "Petro31/ad_simple_door_bell", + "Petro31/ad_sunset_lights", + "Petro31/ad_toggle_light", + "Petro31/ad_who_used_the_door", + "Petro31/IlluminateDoor", + "pfunkmallone/HACS-camect-custom_card", + "pfunkmallone/HACS-camect-integration", "pilotak/homeassistant-mikrotik", "PiotrMachowski/Home-Assistant-custom-components-Google-Keep", "pippyn/Home-Assistant-Sensor-Groningen-Afvalwijzer", @@ -220,6 +249,7 @@ "ppanagiotis/pymusiccast", "PTST/O365-HomeAssistant", "PTST/O365Calendar-HomeAssistant", + "Racailloux/home-assistant-pijuice", "Raukze/home-assistant-fitx", "rccoleman/lamarzocco", "reharmsen/hass-youless-component", @@ -238,7 +268,11 @@ "rsnodgrass/hass-integrations", "ryanbateman/bvg-sensor", "ryannazaretian/hacs-nexia-climate-integration", + "ryanwinter/hass-rainforest-emu-2", "safepay/cover.hd_powerview", + "safepay/sensor.fronius", + "safepay/sensor.willyweather", + "sakowicz/home-assistant-tenda-tracker", "sdebruyn/homeassistant-bpost-integration", "SebuZet/samsungrac", "shaonianzhentan/ha-cloud-music", @@ -248,10 +282,13 @@ "shutupflanders/sensor.moneydashboard", "sinclairpaul/ha_purple_theme", "SNoof85/lovelace-tempometer-gauge-card", + "speleolontra/daikin_residential_altherma", "spycle/microbot_push", "tellerbop/havistapool", "tenly2000/HomeAssistant-Places", "thebino/rki_covid", + "TheLastProject/lovelace-media-art-background", + "Thomas55555/husqvarna_automower", "thomasloven/lovelace-dummy-entity-row", "thomasloven/lovelace-gap-card", "thomasloven/lovelace-gui-sandbox", @@ -266,11 +303,13 @@ "Villhellm/custom-sidebar", "Villhellm/lovelace-animated-background", "walthowd/ha-automower", + "websylv/homeassistant-meteoswiss", "WillowMist/sensor.mylar", "WolfRevo/climate.spzb0001_thermostat", "xannor/ha_reolink_rest", "xaviml/z2m_ikea_controller", "xlcnd/meteoalarmeu", "xMrVizzy/button-toolbar", - "zha-ng/zha-map" + "zha-ng/zha-map", + "zweckj/acaia" ] \ No newline at end of file diff --git a/integration b/integration index 65d8c6077e..d9529aa076 100644 --- a/integration +++ b/integration @@ -1,11 +1,13 @@ [ "0xAlon/dolphin", "0xAlon/tami4edge", + "3ll3d00d/jriver_homeassistant", "5high/konke", "5high/phicomm-dc1-homeassistant", "9a4gl/hass-centrometal-boiler", - "a529987659852/openwbmqtt", "AaronDavidSchneider/SonosAlarm", + "ablyler/home-assistant-aquahawk", + "ablyler/home-assistant-bradford-white-connect", "aceindy/Duepi_EVO", "acesyde/hassio_mylight_integration", "adamoutler/anycubic-homeassistant", @@ -17,10 +19,16 @@ "al-one/hass-xiaomi-miot", "alandtse/alexa_media_player", "alandtse/tesla", + "albaintor/homeassistant_electrolux_status", "albertogeniola/meross-homeassistant", "albinmedoc/ha-cleanmate", "alemuro/ha-cecotec-conga", + "alengwenus/ha-sma-ev-charger", + "AlexandrErohin/home-assistant-flightradar24", + "AlexandrErohin/home-assistant-tplink-router", + "alexdelprete/ha-4noks-elios4you", "alexdelprete/ha-abb-powerone-pvi-sunspec", + "Alexwijn/SAT", "AlexxIT/Jura", "AlexxIT/SonoffLAN", "AlexxIT/WebRTC", @@ -50,17 +58,19 @@ "amosyuen/ha-epson-projector-link", "amosyuen/ha-registry", "amosyuen/ha-tplink-deco", - "anarion80/sodexo_dla_ciebie", "And3rsL/VisonicAlarm-for-Hassio", "andersonshatch/midea-ac-py", "Andre0512/hon", "Andre0512/speedport", + "andrea-mattioli/bticino_x8000_component", + "AndreaTomatis/loex-xsmart-integration", "andrew-codechimp/HA-Andrews-Arnold-Quota", "andrew-codechimp/HA-Battery-Notes", - "andrew-codechimp/HA-Mastodon-Profile-Stats", + "andrewjswan/SwatchTime", "andrzejchm/blebox_shutterbox_tilt", "andvikt/mega_hacs", "aneeshd/schedule_state", + "ankohanse/hass-dab-pumps", "Anonym-tsk/homeassistant-climate-xiaomi-remote", "anrolosia/shopping-list-with-grocy", "Antoni-Czaplicki/vulcan-for-hassio", @@ -72,7 +82,7 @@ "Archef2000/homeassistant-upsplus", "ardevd/ha-bobcatminer", "arifwn/homeassistant-whatspie-integration", - "arjenvrh/audi_connect_ha", + "artspb/homeassistant-tk-husteblume", "asantaga/lightwaverf_HA_EnergySensor", "asantaga/wiserHomeAssistantPlatform", "asev/homeassistant-helios", @@ -86,7 +96,9 @@ "aturri/ha-zcsazzurro", "atxbyea/samsungrac", "atymic/project_three_zero_ha", + "audiconnect/audi_connect_ha", "augustas2/eldes", + "aunefyren/bluesound_alt", "austinmroczek/neovolta", "avolmensky/panasonic_eolia", "ayavilevich/homeassistant-dlink-presence", @@ -96,6 +108,7 @@ "bacco007/sensor.waternsw", "barban-dev/homeassistant-midea-dehumidifier", "barleybobs/homeassistant-ecowater-softener", + "basbruss/adaptive-cover", "basilfx/homeassistant-biketrax", "basnijholt/adaptive-lighting", "basschipper/homeassistant-generic-hygrostat", @@ -107,6 +120,7 @@ "BHSPitMonkey/homeassistant-garmin-mapshare", "bigbadblunt/homeassistant-lightwave2", "BigNocciolino/CryptoTracker", + "binarydev/ha-generac", "binsentsu/home-assistant-solaredge-modbus", "bkbilly/medisanabp_ble", "bkbilly/oralb_ble", @@ -129,6 +143,7 @@ "bouwew/sems2mqtt", "bramkragten/mind", "bramstroker/homeassistant-powercalc", + "Breina/idrac_power_monitor", "Breina/nad_controller", "Breina/PowerTagGateway", "bremor/bonaire_myclimate", @@ -169,7 +184,6 @@ "Cmajda/ha_golemio", "cnstudio/Taipower-Bimonthly-Energy-Cost-homeassistant", "CodeFoodPixels/robovac", - "codyc1515/ha-contact-energy", "codyc1515/ha-em6", "codyc1515/ha-managemyhealth", "codyc1515/ha-yeelock", @@ -219,7 +233,6 @@ "Cyr-ius/hass-heatzy", "Cyr-ius/hass-livebox-component", "Daanoz/ha-google-photos", - "daenny/climate_group", "daernsinstantfortress/cupra_we_connect", "dahlb/ha_blueair", "dahlb/ha_carrier", @@ -228,6 +241,8 @@ "dahlb/ha_sense", "dalinicus/homeassistant-acinfinity", "dalinicus/homeassistant-aerogarden", + "dan-r/HomeAssistant-NissanConnect", + "dan-r/HomeAssistant-Ohme", "danieldiazi/homeassistant-meteogalicia", "Danieldiazi/homeassistant-meteogalicia_tides", "danieldotnl/ha-measureit", @@ -238,6 +253,7 @@ "danielsmith-eu/home-assistant-themeparks-integration", "danobot/entity-controller", "DarwinsBuddy/WienerNetzeSmartmeter", + "DasBasti/SmartHashtag", "dave-code-ruiz/elkbledom", "dave-code-ruiz/uhomeuponor", "davesmeghead/visonic", @@ -249,27 +265,26 @@ "deadbeef3137/ha-cloudflare-tunnel-monitor", "deblockt/hass-aria2", "deblockt/hass-proscenic-790T-vacuum", - "DeebotUniverse/Deebot-4-Home-Assistant", "DeerMaximum/QR-Code-Generator", "DeerMaximum/Technische-Alternative-CMI", "DeerMaximum/Technische-Alternative-CoE", "definitio/ha-rhvoice", "definitio/ha-sox", + "deler-aziz/fuel_prices_sweden", "delphiki/hass-pronote", "denpamusic/homeassistant-plum-ecomax", "dext0r/yandex_smart_home", "dgomes/ha_erse", "dgomes/ha_generic_water_heater", - "dgomes/ha_rrd_recorder", "dimagoltsman/ha-proof-dashcam-integration", "dingo35/ha-SmartEVSEv3", - "disforw/inverse", "djansen1987/SAJeSolar", "djbulsink/panasonic_ac", "djerik/beolink-ha", "djerik/wavinsentio-ha", "djtimca/harocketlaunchlive", "djtimca/hasatellitetracker", + "dknowles2/ha-pitboss", "dlarrick/hass-kumo", "dlashua/templatebinarysensor", "dm82m/hass-Deltasol-KM2", @@ -292,10 +307,11 @@ "dvd-dev/hilo", "dwainscheeren/dwains-lovelace-dashboard", "dylandoamaral/trakt-integration", - "dynasticorpheus/gigasetelements-ha", + "earendil06/Windy-Webcams", "ec-blaster/magicswitchbot-homeassistant", "edekeijzer/osrm_travel_time", "edwork/homeassistant-peloton-sensor", + "egmen/moscow_transport", "eifinger/hass-foldingathomecontrol", "eifinger/hass-here-weather", "eifinger/hass-weenect", @@ -310,6 +326,7 @@ "elden1337/hass-peaq", "elden1337/hass-peaqhvac", "elden1337/hass-peaqnext", + "elsbrock/cowboy-ha", "emes30/facebook_messenger", "emics/ham_radio_propagation", "enes-oerdek/Home-Assistant-Helium-Integration", @@ -319,12 +336,14 @@ "erikkastelec/hass-WEM-Portal", "eseglem/hass-wattbox", "evantaur/seiverkot-consumption", + "evercape/hass-resol-KM2", "evilmarty/mjpeg-timelapse", "exKAjFASH/media_player.elkoep_lara", "exxamalte/home-assistant-custom-components-nsw-rural-fire-service-fire-danger", "eyalcha/kan_program", "eyalcha/read_your_meter", "faanskit/ha-esolar", + "faizpuru/ha-ambeo_soundbar", "fapfaff/homeassistant-appwash", "faserf/ha-deutschebahn", "faserf/ha-rewe", @@ -334,8 +353,10 @@ "fineemb/xiaomi-cloud", "fineemb/Xiaomi-Smart-Multipurpose-Kettle", "finity69x2/nws_alerts", + "firstof9/ha-gasbuddy", "firstof9/ha-openei", "FL550/dwd_weather", + "flexopus/flexopus-hass-sensor", "fondberg/spotcast", "Fr3d/camect-ha", "franc6/ics_calendar", @@ -357,6 +378,8 @@ "gcobb321/icloud3", "gcorgnet/sensor.emby_upcoming_media", "gdgib/span", + "geeks-r-us/maxstorage_ultimate", + "geertmeersman/cloudlibrary", "geertmeersman/eeveemobility", "geertmeersman/miwa", "geertmeersman/mobile_vikings", @@ -370,22 +393,28 @@ "giachello/beoplay", "giachello/mlgw", "gicamm/homeassistant-comelit", + "gickowtf/pixoo-homeassistant", "gieljnssns/buienalarm-sensor-homeassistant", "gieljnssns/kostalpiko-sensor-homeassistant", + "gillesvs/librelink", "gilsonmandalogo/hacs-minerstat", + "gjohansson-ST/attribute_as_sensor", "gjohansson-ST/sector", "gndean/home-assistant-hypervolt-charger", "godely/ha-dremel-3d-printer", "golles/ha-kamstrup_403", "golles/ha-knmi", "golles/Home-Assistant-Sensor-MC66C", + "greghesp/ha-bambulab", "greghesp/ha-evonic", "gregoryduckworth/GoogleGeocode-HASS", + "gritaro/gigachain", "gtjadsonsantos/consul", "gtjadsonsantos/controlid", "gtjadsonsantos/vapix", "guerrerotook/securitas-direct-new-api", "GuilleGF/hassio-ovh", + "GuyKh/ims-custom-component", "GuyLewin/home-assistant-crunch-o-meter", "GuyLewin/home-assistant-lifetime-fitness", "GuySie/ha-meural", @@ -415,7 +444,6 @@ "HomeAssistant-Mods/home-assistant-miele", "hostcc/hass-gs-alarm", "HrGaertner/HA-vent-optimization", - "htmltiger/config-editor", "hudsonbrendon/ha_epic_games", "hudsonbrendon/sensor.drivvo", "hugobloem/stateful_scenes", @@ -458,7 +486,10 @@ "jcgoette/baby_buddy_homeassistant", "jcgoette/weight_gurus_homeassistant", "jcwillox/hass-auto-backup", + "jdejaegh/irm-kmi-ha", + "jdrozdnovak/ha_pagerduty", "JeffSteinbok/hass-dreo", + "jekalmin/extended_openai_conversation", "jellespijker/home-assistant-ultimaker", "jeroenterheerdt/HADailySensor", "jeroenterheerdt/HAsmartirrigation", @@ -467,7 +498,7 @@ "jihao/rokid-webhook-hass", "jippi/hass-nordnet", "jjlawren/sonos_cloud", - "jm-73/Indego", + "jmacri01/homeassistant-custom-components-catholic-calendar", "jmcollin78/solar_optimizer", "jmcollin78/versatile_thermostat", "jmcruvellier/little_monkey", @@ -475,13 +506,15 @@ "jobvk/Home-Assistant-Windcentrale", "joggs/home_assistant_ebeco", "JohNan/homeassistant-wellbeing", + "johnnybegood/ha-ksenia-lares", "Johnwulp/rad-afval", "joleys/niko-home-control-II", "jonasbkarlsson/ev_smart_charging", + "JonasJoKuJonas/homeassistant-trias", "JonasJoKuJonas/homeassistant-WebUntis", - "jonasniesner/open_epaper_link_homeassistant", "JonasPed/homeassistant-eloverblik", "jonkristian/wasteplan_trv", + "joosthoi1/hockey-team-tracker", "joselcaguilar/azure-openai-ha", "jrfernandes/ontario_energy_board", "jscruz/sensor.carbon_intensity_uk", @@ -493,13 +526,18 @@ "jugla/keyatome", "jugla/worldtidesinfocustom", "juicejuice/homeassistant_redback", + "julcollas/hass-vigicrues", + "junkfix/config-editor", "JurajNyiri/HomeAssistant-Atrea", "JurajNyiri/HomeAssistant-qBitTorrentAlternativeSpeed", "JurajNyiri/HomeAssistant-Tapo-Control", "JurajNyiri/HomeAssistant-Tavos", + "jvitkauskas/homeassistant_blauberg_s21", + "jwillemsen/daikin_onecta", "jxlarrea/ha-emfitqs", "kaechele/napoleon-efire", "kalanda/homeassistant-aemet-sensor", + "kamaradclimber/geovelo-homeassistant", "kamaradclimber/heishamon-homeassistant", "kamaradclimber/rte-ecowatt", "kamaradclimber/vigieau", @@ -515,6 +553,7 @@ "kirei/hass-chargeamps", "klacol/homeassistant-clage_homeserver", "klatka/nc-talk-bot-component", + "klausj1/homeassistant-statistics", "Kleinrotti/hass-senertec", "klejejs/ha-thermia-heat-pump-integration", "knudsvik/energyscore", @@ -536,7 +575,10 @@ "kpoppel/homeassistant-eforsyning", "kpoppel/homeassistant-novafos", "krahabb/meross_lan", + "krasnoukhov/homeassistant-nova-poshta", "krasnoukhov/homeassistant-oncharger", + "krasnoukhov/homeassistant-smart-maic", + "krasnoukhov/homeassistant-tesy", "kubawolanin/ha-reaper", "kuchel77/diskspace", "kukulich/home-assistant-jablotron100", @@ -551,15 +593,18 @@ "laszlojakab/homeassistant-easycontrols", "LavermanJJ/home-assistant-solarfocus", "lbbrhzn/ocpp", + "legrego/homeassistant-combustion", "legrego/homeassistant-elasticsearch", "leikoilja/ha-google-home", "Lektrico/ha_lektrico", "leonardlcl/general_link", "leonardlcl/mhtzn", + "leranp/HomeAssistant-galatz-news", "lewei50/ha_iammeter", "lewei50/ha_iammeter_modbus", "libdyson-wg/ha-dyson", "lichtteil/local_luftdaten", + "Limych/ha-apparent-temperature", "Limych/ha-average", "Limych/ha-beward", "Limych/ha-car_wash", @@ -568,11 +613,13 @@ "Limych/ha-jq300", "Limych/ha-narodmon", "Limych/ha-snowtire", - "Limych/ha-temperature-feels-like", + "Limych/ha-tor_check", "lindell/home-assistant-svt-play", "lindell/home-assistant-tv4-play", "linsvensson/sensor.greenely", + "lizardsystems/hass-mygas", "lizardsystems/hass-taipit", + "lizardsystems/hass-tnse", "ljmerza/ha-email-sensor", "lociii/homeassistant-csgo", "lociii/homeassistant-overwolf-status", @@ -587,6 +634,7 @@ "maciej-or/hikvision_next", "macxq/foxess-ha", "madpilot/hass-amber-electric", + "mag1024/bosch-alarm-homeassistant", "make-all/metlink-nz", "Mallonbacka/custom-component-cloudwatch", "mampfes/ha_bayernluefter", @@ -604,6 +652,8 @@ "markvader/sonic", "marotoweb/home-assistant-vacuum-viomise", "marq24/ha-senec-v3", + "marq24/ha-tibber-pulse-local", + "marq24/ha-waterkotte", "MartinDybal/TapHome-HomeAssistant", "Martinvdm/garbage-nissewaard-homeassistant", "masaccio/ha-kingspan-watchman-sensit", @@ -629,6 +679,7 @@ "miguelangellv/tarifa_20td", "mikelawrence/senseme-hacs", "mill1000/midea-ac-py", + "MineTech13/homeassistant-basestation", "MislavMandaric/home-assistant-vaillant-vsmart", "mletenay/home-assistant-ev-charge-control", "mletenay/home-assistant-goodwe-inverter", @@ -640,7 +691,6 @@ "moralmunky/Home-Assistant-Mail-And-Packages", "morosanmihail/HA-LondonTfL", "Mr-Groch/ambihue", - "Mr-Groch/HA-Emulated-Color-Temp-Light", "Mr-Groch/HA-ESA-NASK-Air-Quality", "mrk-its/homeassistant-blitzortung", "MrSleeps/Juwel-HeliaLux-Home-Assistant-Custom-Component", @@ -667,13 +717,13 @@ "myTselection/telenet_telemeter", "myTselection/youfone_be", "N0ciple/hass-kef-connector", - "nagyrobi/home-assistant-custom-components-linkplay", "nathanmarlor/foxess_modbus", "Nazze/ha_best_bottrop_garbage_collection", "nbogojevic/homeassistant-midea-air-appliances-lan", "ndom91/homeassistant-checkly", "Nedevski/hass_kat_bulgaria", "neggert/hass-egauge", + "nelbs/solaredge-forecast", "NemesisRE/sensor.plex_recently_added", "netsoft-ruidias/ha-custom-component-coverflex", "netsoft-ruidias/ha-custom-component-myedenred", @@ -681,6 +731,7 @@ "netsoft-ruidias/ha-custom-component-sodexo", "NiaoBlush/impc_energy", "nick2525/broadlink_s1c_s2c", + "nickknissen/hass-monta", "NickM-27/swatch-hass-integration", "nickneos/HA_harmony_climate_component", "nicole-ashley/homeassistant-goldair-climate", @@ -699,16 +750,19 @@ "olibos/HomeAssistant-RecycleApp", "ollo69/ha-samsungtv-smart", "ollo69/ha-smartthinq-sensors", + "OpenEPaperLink/Home_Assistant_Integration", "osk2/panasonic_smart_app", "osohotwateriot/osoenergy_community", "oven-lab/tuya_cloud_map_extractor", - "oziee/ha-solcast-solar", + "p0l0/hapetwalk", "pail23/stiebel_eltron_isg_component", + "pantherale0/ha-familysafety", "pantherale0/ha-nintendoparentalcontrols", "parautenbach/hass-shairport-sync", + "parvez/network_scanner", "Patrick762/hassio-bluetti-bt", + "Patrick762/hassio-solvis-modbus", "Patrick762/hassio-streamdeck", - "patrickhilker/tedee_hass_integration", "patrickribbing/sjofartsverket_viva-component", "Paul-dH/Home-Assisant-Sensor-OvApi", "PaulAnnekov/home-assistant-padavan-tracker", @@ -725,7 +779,8 @@ "petergridge/openweathermaphistory", "petretiandrea/home-assistant-tapo-p100", "Petro31/ha-integration-multizone-controller", - "pfunkmallone/HACS-camect-integration", + "Pho3niX90/solis_modbus", + "physje/waterinfo", "Pigotka/ha-cc-jablotron-cloud", "piitaya/home-assistant-qubino-wire-pilot", "pilotak/homeassistant-attributes", @@ -767,26 +822,30 @@ "pyalarmdotcom/alarmdotcom", "Pyhass/Hive-Custom-Component", "r-renato/ha-climacell-weather", - "Racailloux/home-assistant-pijuice", "radical-squared/aquatemp", "Rain1971/V2C_trydant", "raman325/ha-zoom-automation", + "raulgbcr/lednetwf_ble", "rccoleman/channels_dvr_recently_recorded", "rdehuyss/homeassistant-custom_components-denkovi", "redlukas/emu_mbus_center", "regulad/hass-lacrosseview", + "ReneNulschDE/ha-mysmartbike", "ReneNulschDE/mbapi2020", "rexave/hass-orange-internet-on-the-move", "rgc99/irrigation_unlimited", + "rgerbranda/rbfa", "rnovacek/homeassistant_cz_energy_spot_prices", "rob196/home-assistant-fxmarketapi", "robbinjanssen/home-assistant-ojmicroline-thermostat", "robbinjanssen/home-assistant-omnik-inverter", + "robbrad/UKBinCollectionData", "RobertD502/home-assistant-flair", "RobertD502/home-assistant-iocare", "RobertD502/home-assistant-petkit", "RobHofmann/HomeAssistant-GreeClimateComponent", "RobHofmann/HomeAssistant-PhilipsAndroid2014", + "robinostlund/homeassistant-svk-mimer", "robinostlund/homeassistant-volkswagencarnet", "robmarkcole/HASS-amazon-rekognition", "robmarkcole/HASS-Machinebox-Classificationbox", @@ -816,15 +875,13 @@ "ryanbdclark/owlet", "ryanmac8/HA-Mint-Mobile", "ryanmac8/Home-Assistant-Marta", - "ryanwinter/hass-rainforest-emu-2", "rytilahti/homeassistant-upnp-availability", - "safepay/sensor.fronius", - "safepay/sensor.willyweather", - "sakowicz/home-assistant-tenda-tracker", "samjsmart/ha-zone4", "samuolis/brink", + "sander1988/Indego", "sanghviharshit/ha-mila", "sanghviharshit/ha-monarchmoney", + "sanjoyg/dirigera_platform", "sbabcock23/hass-tryfi", "scaarup/aula", "schwarzenbergf/irtrans", @@ -860,14 +917,16 @@ "slesinger/HomeAssistant-BMR", "slesinger/HomeAssistant-PREdistribuce", "SLG/home-assistant-whatpulse", + "slydiman/sscpoe", "snarky-snark/home-assistant-variables", "snicker/zwift_hass", "snikch/climate.escea", "sockless-coding/garo_wallbox", "sockless-coding/panasonic_cc", + "SoftXperience/home-assistant-foxess-api", "soloam/ha-pid-controller", "sopelj/hass-ember-mug-component", - "speleolontra/daikin_residential_altherma", + "SplinterHead/ha-honeygain", "sprocket-9/hacs-nuvo-serial", "spycle/tuneblade", "stackia/ha-deye-dehumidifier", @@ -888,13 +947,13 @@ "syssi/xiaomi_fan", "syssi/xiaomi_raw", "syssi/xiaomiplug", - "t0mer/ims-custom-component", "t0mer/manish-custom-notifier", "t0mer/matterbridge-custom-notifier", "taarskog/home-assistant-component-somweb", "tadasdanielius/daikin_altherma", "Taraman17/hass-homee", "Tasshack/dreame-vacuum", + "tbouron/ha-agur", "tefinger/hass-brematic", "TekniskSupport/home-assistant-resrobot", "tetele/hvac_group", @@ -902,16 +961,19 @@ "TheByteStuff/RemoteSyslog_Service", "thecode/ha-onewire-sysbus", "thecode/ha-rpi_gpio", + "TheGui01/Frisquet-connect-for-home-assistant", "TheHolyRoger/hass-cryptoinfo", + "TheNoctambulist/hass-airtouch", "TheRealWaldo/thermal", "ThermIQ/thermiq_mqtt-ha", "thevoltagesource/LennoxiComfort", "thisisthetechie/home-assistant-sickgear", - "Thomas55555/husqvarna_automower", + "ThomasLomas/ha-starlinghomehub", "thomasloven/hass-browser_mod", "thomasloven/hass-favicon", "thomasloven/hass-fontawesome", "thomasloven/hass-lovelace_gen", + "thomasloven/hass-plejd", "thomasprior/2minersInfo", "tijsverkoyen/HomeAssistant-FusionSolar", "tikismoke/home-assistant-plcbus", @@ -952,27 +1014,35 @@ "tybritten/ical-sensor-homeassistant", "tykeal/homeassistant-rental-control", "ualex73/monitor_docker", + "ufozone/ha-unifi-voucher", "ufozone/ha-zcs-mower", "UI-Lovelace-Minimalist/UI", "user2684/imou_life", "v1ack/lelight", + "vakio-ru/vakio_atmosphere", + "vakio-ru/vakio_base_smart", + "vakio-ru/vakio_kiv", + "vakio-ru/vakio_openair", "vanstinator/hass-raincloud", "Vaskivskyi/ha-asusrouter", "Vaskivskyi/ha-chroma", "vasqued2/ha-teamtracker", "veista/nilan", "Verbalinsurection/next_rocket_launch", + "verdel/hass-petoneer-smartdot", "vigonotion/hass-simpleicons", "viktak/ha-cc-abalin-nameday", "viktak/ha-cc-openweathermap_all", "vincentwolsink/home_assistant_micronova_agua_iot", "vingerha/gtfs2", + "vingerha/ha_adsb_lol", "vinteo/hass-opensprinkler", "viragelabs/virage_dashboard", "vlumikero/home-assistant-securitas", "vmakeev/huawei_mesh_router", + "vooon/hass-myheat", "Vova-SH/termux-api", - "websylv/homeassistant-meteoswiss", + "Weissnix4711/hass-listenbrainz", "weltenwort/home-assistant-rct-power-integration", "wernerhp/ha.integration.load_shedding", "werthdavid/homeassistant-pulsatrix-local-mqtt", @@ -982,10 +1052,11 @@ "WillCodeForCats/tekmar-482", "willholdoway/hifiberry", "wills106/homeassistant-solax-modbus", - "wimb0/home-assistant-saj-modbus", + "wimb0/home-assistant-saj-r5-modbus", "wizmo2/zidoo-player", "wlcrs/huawei_solar", "wolffshots/hass-audiobookshelf", + "wrodie/ha_behringer_mixer", "xannor/ha_reolink_discovery", "xilense/aimp_custom_component", "xirixiz/homeassistant-afvalwijzer", diff --git a/plugin b/plugin index 8a55910d90..7472bde5e3 100644 --- a/plugin +++ b/plugin @@ -6,7 +6,6 @@ "abualy/philips-tv-remote-card", "adizanni/floor3d-card", "aex351/home-assistant-neerslag-card", - "alexarch21/history-explorer-card", "amaximus/bkk-stop-card", "amaximus/fkf-garbage-collection-card", "amaximus/garbage-collection-card", @@ -16,6 +15,7 @@ "AmoebeLabs/flex-horseshoe-card", "AmoebeLabs/swiss-army-knife-card", "Anonym-tsk/lovelace-starline-card", + "Anrolosia/Shopping-List-with-Grocy-Card", "arallsopp/hass-hue-icons", "argaar/comfortable-environment-card", "artem-sedykh/mini-climate-card", @@ -34,8 +34,10 @@ "bernikr/lovelace-webos-keyboard-card", "berrywhite96/lovelace-shutter-row", "bokub/rgb-light-card", + "bolkedebruin/erhv-lovelace", "bramkragten/swipe-card", "bramkragten/weather-card", + "Brianfit/xkcd-card-ha", "Ceerbeerus/beerbolaget-card", "chaptergy/lightalarm-card", "ciotlosm/lovelace-thermostat-dark-card", @@ -69,6 +71,7 @@ "custom-cards/unused-card", "CyrisXD/love-lock-card", "czz/timbox-remote-control-card", + "DanChaltiel/heatzy-pilote-card", "danimart1991/pvpc-hourly-pricing-card", "DanteWinters/lux-power-distribution-card", "daredoes/default-dashboard", @@ -91,8 +94,12 @@ "dmulcahey/zha-network-card", "dnguyen800/air-visual-card", "dooz127/swipe-glance-card", + "drakulis/jb-battery-card", + "dvb6666/homed-zigbee-networkmap", "dylandoamaral/uptime-card", "elax46/custom-brand-icons", + "elchininet/custom-sidebar", + "elchininet/home-assistant-secret-taps", "elchininet/keep-texts-in-tabs", "ExperienceLovelace/ha-floorplan", "ezand/lovelace-posten-card", @@ -121,6 +128,7 @@ "fratsloos/fr24_card", "frozenwizard/onlylocklock", "fufar/simple-clock-card", + "gaco79/gcclock-words", "gadgetchnnel/lovelace-card-preloader", "gadgetchnnel/lovelace-card-templater", "gadgetchnnel/lovelace-header-cards", @@ -133,8 +141,6 @@ "gurbyz/power-wheel-card", "hasl-sensor/lovelace-hasl-departure-card", "hasl-sensor/lovelace-hasl-traffic-status-card", - "htmltiger/config-editor-card", - "htmltiger/numberbox-card", "hulkhaugen/hass-bha-icons", "Hypfer/lovelace-valetudo-map-card", "iablon/HomeAssistant-Touchpad-Card", @@ -144,6 +150,7 @@ "iantrich/restriction-card", "iantrich/roku-card", "iantrich/text-divider-row", + "ibz0q/better-moment-card", "idaho/hassio-trash-card", "IhorSyerkov/linak-desk-card", "ikaruswill/lovelace-fan-xiaomi", @@ -165,6 +172,8 @@ "jtbgroup/kodi-playlist-card", "jtbgroup/kodi-search-card", "junalmeida/homeassistant-minimalistic-area-card", + "junkfix/config-editor-card", + "junkfix/numberbox-card", "JurajNyiri/PlexMeetsHomeAssistant", "kalkih/mini-graph-card", "kalkih/mini-media-player", @@ -202,8 +211,10 @@ "Makin-Things/weather-radar-card", "mampfes/ha-knx-uf-iconset", "marcokreeft87/formulaone-card", - "marcokreeft87/room-card", + "Mariusthvdb/custom-attributes", + "Mariusthvdb/custom-icon-color", "Mariusthvdb/Custom-icons", + "Mariusthvdb/custom-more-info", "Mariusthvdb/custom-ui", "marrobHD/rotel-card", "marrobHD/tv-card", @@ -213,11 +224,13 @@ "mawinkler/astroweather-card", "maxwroc/battery-state-card", "maxwroc/github-flexi-card", + "mentalilll/ha-vpd-chart", "MesserschmittX/lovelace-nicehash-excavator-monitor-card", "MindFreeze/ha-sankey-chart", "mlamberts78/weather-chart-card", "Mofeywalker/openmensa-lovelace-card", "MrBartusek/MeteoalarmCard", + "nathan-gs/ha-map-card", "nathanmarlor/foxess_modbus_charge_period_card", "NemesisRE/kiosk-mode", "NemesisRE/upcoming-media-card", @@ -225,6 +238,7 @@ "nervetattoo/simple-thermostat", "nervetattoo/themable-grid", "Nerwyn/android-tv-card", + "Nerwyn/service-call-tile-feature", "nicufarmache/lovelace-big-slider-card", "nielsfaber/alarmo-card", "nielsfaber/scheduler-card", @@ -233,7 +247,6 @@ "ownbee/bootstrap-grid-card", "peetereczek/ztm-stop-card", "petergridge/Irrigation-Card", - "pfunkmallone/HACS-camect-custom_card", "pgorod/power-todoist-card", "phischdev/lovelace-mushroom-better-sliders", "piitaya/lovelace-climate-mode-entity-row", @@ -249,6 +262,7 @@ "postlund/search-card", "PRProd/HA-Firemote", "punxaphil/custom-sonos-card", + "punxaphil/maxi-media-player", "queimadus/cover-icon-element", "queimadus/last-changed-element", "r-renato/ha-card-waze-travel-time", @@ -260,6 +274,7 @@ "rgc99/irrigation-unlimited-card", "rianadon/opensprinkler-card", "rianadon/timer-bar-card", + "RJArmitage/rfxtrx-stateful-blinds-icons", "RodBr/miflora-card", "RomRider/apexcharts-card", "royto/logbook-card", @@ -281,7 +296,6 @@ "TarheelGrad1998/gallery-card", "tcarlsen/lovelace-light-with-profiles", "tdvtdv/ha-tdv-bar", - "TheLastProject/lovelace-media-art-background", "tholgir/TodoIst-Task-List", "thomasloven/lovelace-auto-entities", "thomasloven/lovelace-badge-card", @@ -298,6 +312,7 @@ "tomasrudh/analogclock", "tomvanswam/compass-card", "totaldebug/atomic-calendar-revive", + "trollix/ha-tsmoon-card", "tungmeister/hass-blind-card", "turbulator/pandora-cas-card", "twrecked/lovelace-hass-aarlo", @@ -314,6 +329,7 @@ "wassy92x/lovelace-ha-dashboard", "wilsto/pool-monitor-card", "wiltodelta/homeassistant-sugartv-card", + "wrodie/mixer-card", "zanna-37/hass-swipe-navigation", "zeronounours/lovelace-energy-entity-row" -] +] \ No newline at end of file diff --git a/removed b/removed index c83541ae0a..2eceb18a48 100644 --- a/removed +++ b/removed @@ -1533,5 +1533,239 @@ "reason": "Requested by author", "removal_type": "remove", "link": "https://github.com/hultenvp/home_assistant_omnik_solar" + }, + { + "repository": "Thomas55555/husqvarna_automower", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2495" + }, + { + "repository": "ryanwinter/hass-rainforest-emu-2", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2495" + }, + { + "repository": "speleolontra/daikin_residential_altherma", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2495" + }, + { + "repository": "disforw/inverse", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2495" + }, + { + "repository": "DeebotUniverse/Deebot-4-Home-Assistant", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2495" + }, + { + "repository": "alexarch21/history-explorer-card", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2495" + }, + { + "repository": "digitaljamie/google-theme", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2495" + }, + { + "repository": "chaptergy/noctis-grey", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2495" + }, + { + "repository": "pfunkmallone/HACS-camect-integration", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2536" + }, + { + "repository": "patrickhilker/tedee_hass_integration", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2536" + }, + { + "repository": "pfunkmallone/HACS-camect-custom_card", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2536" + }, + { + "repository": "dgomes/ha_rrd_recorder", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2536" + }, + { + "repository": "oziee/ha-solcast-solar", + "reason": "Repository no longer exsist", + "removal_type": "remove", + "link": "https://github.com/hacs/integration/issues/3745" + }, + { + "repository": "Racailloux/home-assistant-pijuice", + "reason": "Repository no longer exsist", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2537" + }, + { + "repository": "Mr-Groch/HA-Emulated-Color-Temp-Light", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2609" + }, + { + "repository": "sakowicz/home-assistant-tenda-tracker", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2609" + }, + { + "repository": "dynasticorpheus/gigasetelements-ha", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2666" + }, + { + "repository": "websylv/homeassistant-meteoswiss", + "reason": "Repository no longer exsist", + "removal_type": "remove", + "link": "https://github.com/hacs/integration/issues/4023" + }, + { + "repository": "marcokreeft87/room-card", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2683" + }, + { + "repository": "nagyrobi/home-assistant-custom-components-linkplay", + "reason": "Requested by author", + "removal_type": "remove", + "link": "https://github.com/hacs/integration/issues/4031" + }, + { + "repository": "andrew-codechimp/HA-Mastodon-Profile-Stats", + "reason": "Retiring as Mastodon core duplicates functionality", + "removal_type": "remove", + "link": "https://github.com/andrew-codechimp/HA-Mastodon-Profile-Stats" + }, + { + "repository": "safepay/sensor.willyweather", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2689" + }, + { + "repository": "safepay/sensor.fronius", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2689" + }, + { + "repository": "codyc1515/ha-contact-energy", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2767" + }, + { + "repository": "daenny/climate_group", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2767" + }, + { + "repository": "zweckj/acaia", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2894" + }, + { + "repository": "a529987659852/openwbmqtt", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2894" + }, + { + "repository": "TheLastProject/lovelace-media-art-background", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2894" + }, + { + "repository": "Petro31/ad_simple_door_bell", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2894" + }, + { + "repository": "Petro31/ad_who_used_the_door", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2894" + }, + { + "repository": "Petro31/ad_sunset_lights", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2894" + }, + { + "repository": "Petro31/IlluminateDoor", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2894" + }, + { + "repository": "Petro31/ad_seasonal_lights", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2894" + }, + { + "repository": "Petro31/ad_toggle_light", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2894" + }, + { + "repository": "Petro31/ad_group_all", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2894" + }, + { + "repository": "Petro31/ad_convert_media_volume", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2894" + }, + { + "repository": "Petro31/ad_monitor_events", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2894" + }, + { + "repository": "Petro31/ad_count_entities", + "reason": "Repository is archived", + "removal_type": "remove", + "link": "https://github.com/hacs/default/pull/2894" + }, + { + "repository": "anarion80/sodexo_dla_ciebie", + "reason": "Deprecated and not working anymore", + "removal_type": "remove", + "link": "https://github.com/anarion80/sodexo_dla_ciebie/issues/1" } ] \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 0caac0e142..c7c0e2aab4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ -aiogithubapi==21.11.0 \ No newline at end of file +aiogithubapi==24.6.0 +requests==2.32.3 diff --git a/scripts/check/owner.py b/scripts/check/owner.py index 024d9a51fe..685cb34f85 100644 --- a/scripts/check/owner.py +++ b/scripts/check/owner.py @@ -1,7 +1,6 @@ import asyncio import os -from scripts.changed.repo import get_repo from scripts.helpers.event import get_event from scripts.remove_publishers import REMOVED_PUBLISHERS from aiogithubapi import GitHub, AIOGitHubAPIException @@ -11,7 +10,7 @@ async def check(): print("Information: https://hacs.xyz/docs/publish/include#check-owner") - repo = get_repo() + repo = os.environ["REPOSITORY"] event = get_event() actor = event["pull_request"]["user"]["login"] repo_owner = repo.split("/")[0].lower() diff --git a/scripts/check/removed.py b/scripts/check/removed.py new file mode 100644 index 0000000000..cca71948be --- /dev/null +++ b/scripts/check/removed.py @@ -0,0 +1,22 @@ +import asyncio +import os +import requests + +CHECKURL = "https://data-v2.hacs.xyz/removed/repositories.json" + + +async def check(): + repo = os.environ["REPOSITORY"].lower() + + try: + removed_repositories = set(x.lower() for x in requests.get(CHECKURL).json()) + if repo in removed_repositories: + exit(f"::error::'{repo}' has been removed from HACS") + except Exception as e: + exit(f"::error::{e}") + + print("Repository not removed from HACS") + + +if __name__ == "__main__": + asyncio.get_event_loop().run_until_complete(check()) diff --git a/theme b/theme index 59b658d401..24db569ca3 100644 --- a/theme +++ b/theme @@ -14,13 +14,14 @@ "basnijholt/lovelace-ios-light-mode-theme", "basnijholt/lovelace-ios-themes", "bbbenji/synthwave-hass", + "brezlord/BrezNET-iOS", "catppuccin/home-assistant", - "chaptergy/noctis-grey", "coltondick/nordic-theme-main", "DickSwart/swart_ninja_dark_theme", - "digitaljamie/google-theme", + "Djelle/milcomarmy", "einschmidt/github_dark_theme", "einschmidt/github_light_theme", + "Eonasdan/home-assistant-bootstrap-5-theme", "estiens/sweet_pink_hass_theme", "fi-sch/ux_goodie_theme", "flejz/hass-cyberpunk-2077-theme", @@ -64,11 +65,11 @@ "Neekster/MidnightTeal", "Nerwyn/material-rounded-theme", "Nihvel/your_name", - "orickcorreia/caule-themes-pack-1", "pacjo/google_dark_animated", "pbeckcom/green_slate_theme", "piitaya/lovelace-mushroom-themes", "Poeschl/slate_red", + "ricardoquecria/caule-themes-pack-1", "robinwittebol/whatsapp-theme", "seangreen2/slate_theme", "SnakeFist007/ha_vastayan_bond", diff --git a/tools/jsonschema/critical.schema.json b/tools/jsonschema/critical.schema.json new file mode 100644 index 0000000000..cf6316e4ff --- /dev/null +++ b/tools/jsonschema/critical.schema.json @@ -0,0 +1,26 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Schema for critical repositories", + "type": "array", + "items": { + "type": "object", + "properties": { + "repository": { + "type": "string", + "pattern": "^[\\w\\.-]+\/[\\w\\.-]+$" + }, + "reason": { + "type": "string" + }, + "link": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "repository", + "reason", + "link" + ] + } +} \ No newline at end of file diff --git a/tools/jsonschema/removed.schema.json b/tools/jsonschema/removed.schema.json new file mode 100644 index 0000000000..0691c42a3d --- /dev/null +++ b/tools/jsonschema/removed.schema.json @@ -0,0 +1,27 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Schema for removed repositories", + "type": "array", + "items": { + "type": "object", + "properties": { + "link": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "removal_type": { + "type": "string" + }, + "repository": { + "type": "string", + "pattern": "^[\\w\\.-]+\/[\\w\\.-]+$" + } + }, + "required": [ + "removal_type", + "repository" + ] + } +} \ No newline at end of file diff --git a/tools/jsonschema/repositories.schema.json b/tools/jsonschema/repositories.schema.json new file mode 100644 index 0000000000..ca4769e29c --- /dev/null +++ b/tools/jsonschema/repositories.schema.json @@ -0,0 +1,9 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Shema for a repository list", + "type": "array", + "items": { + "type": "string", + "pattern": "^[\\w\\.-]+\/[\\w\\.-]+$" + } +} \ No newline at end of file