diff --git a/Cargo.lock b/Cargo.lock index 94a1af8..874f6ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -633,7 +633,7 @@ dependencies = [ [[package]] name = "gree-controller" -version = "0.9.11" +version = "0.9.13" dependencies = [ "aes", "aes-gcm", diff --git a/Cargo.toml b/Cargo.toml index 7375d08..774f4d0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gree-controller" -version = "0.9.11" +version = "0.9.13" edition = "2021" authors = ["GREE Controller contributors"] description = "Standalone local GREE HVAC controller with Web UI, SQLite and Home Assistant sensor support" diff --git a/FILE_MANIFEST.sha256 b/FILE_MANIFEST.sha256 index 1e26b7f..dbcee74 100644 --- a/FILE_MANIFEST.sha256 +++ b/FILE_MANIFEST.sha256 @@ -1,11 +1,11 @@ d67af429e4da9ce08e9d2f2a8472849ffbd70d135b1c5da535a076026794d04c ./.env.example a4ec3874a2e3ab1bad28fb40bb620f7b01f64d01ad9b699306bf70ada31227db ./.gitignore -71d5043c5c5892bcf5ad33dd0ae73600bc0ff9bbc10d93e963c90c173963c39e ./Cargo.lock -c446b9af75b3d07cdf2c42b7f1286f503b225d5dc2ed3592cce4df74de31db21 ./Cargo.toml +18765f4d1c77c7c44ad4438aa3d31e90030577f5395190d0ec1450c0fadd5987 ./Cargo.lock +d3e13a2ef72326abae6de8eb727d858d191bb2eeb1a1680e2c028c2b560f13ea ./Cargo.toml 19b2943504acb8f8de280f873a8dbec4bb6ebbe3870b158f5655d4fb8c298f5f ./LICENSE -21b3a4808f6d47b3cb283be03faf8ec1327f2a757b247277c0299468c8a0d74c ./README.md +6955218013ff72cc2b92b930e664f0215d067c0ea88f928df09d244b69958ba9 ./README.md 41dfdc6d099b54f87d4dd51f696122b3c88d3bf3ddf420bea8f4bc621ba920b0 ./build.rs -05eafc8541a867aba3121bd0df1ba475305005841c8a2437a667484a232e80e4 ./docs/API.md +b232adc48c1737bd2a7d6ee47c97ff17750243027f6737ae8209f9111c8e819c ./docs/API.md 5322117989c854763d87a4ea6ec5e957863d370ca4ebdc332e2c8c11f23338d1 ./docs/FLOW.md a0893b2a56eb1523f1a72871842e9be2139a5fafba1f51ae942fc407a6e4ca34 ./home-assistant/README.md f8e8559fe10fe523ac5bc9aac25c6e26e862f679d502e8f3c39f38a0a8e40911 ./home-assistant/custom_components/gree_controller/__init__.py @@ -17,7 +17,7 @@ ab08fbe40e9bb48ebcbfff98760aaa0c9434b61b705aaaadea0c09c255d99b0e ./home-assista 5a96fe8f5c035c34f1339370270cd078056202d09e236dec75735be11de92a7d ./home-assistant/custom_components/gree_controller/entity_map.py c4fb75c246db651087900ebfc2291ff41ac87652cd6194fc0b776b0005c1cbcf ./home-assistant/custom_components/gree_controller/icon.png c4fb75c246db651087900ebfc2291ff41ac87652cd6194fc0b776b0005c1cbcf ./home-assistant/custom_components/gree_controller/logo.png -b4a1da0fc4912485c419f53b07dc651910a5cffb23f19b9a3290be7ae1946478 ./home-assistant/custom_components/gree_controller/manifest.json +3593dc4b937182dcf7d372c8710f079d99f25304f6a17ab7d5b84508127047ce ./home-assistant/custom_components/gree_controller/manifest.json 38d659d0273c0d1428679e44574a2666c605d1b3796d323b626baa40560788cf ./home-assistant/custom_components/gree_controller/number.py 39c4309001b75abb56234f05662bc06e077054986876f1927937edbce528ec95 ./home-assistant/custom_components/gree_controller/select.py cca65482e36d48035aca178121a378fe7d578d600acff267ae81a6399c0da653 ./home-assistant/custom_components/gree_controller/sensor.py @@ -171,7 +171,7 @@ f13f1be3d5789539eba3fc1b59c14835f8c681eca7634e118fa3763a53aeee2b ./src/queries/ b92a6cb158b494fe145b43c7641e65f6fafff47201d7d76edbec2cfd8b94835c ./systemd/gree-controller.service 544a31cb2e5374227026afd6abd0d910381f3fca1638154ebd74e3c3d96a35d1 ./web/404.html e98bdd7204349cce1ec6f57283509697af0bbc72280622a6c3efa6fed242db4f ./web/favicon.svg -460c3f8599feaf87deb854766b1d815069934132140fd3c48b5c81fe62957415 ./web/index.html +0c10450b9241a9b7a811fe8ad44b4413018e33fcd5b932f024a73e1ba6a3f946 ./web/index.html 9ba3f6fa05b72aa989139b2a909982571b2a02055052e4c40104f1e81a9aa7eb ./web/js/README.md 21b662914590e720dafefe4dc3dccc91dbeb963cce9ae91f007c835d2d0c1fe5 ./web/js/bootstrap.js 72fa280996ba331a05bdb29a1f49b4e61bdd8964953c8ce1db952156620f08fe ./web/js/charts.js @@ -179,7 +179,7 @@ e98bdd7204349cce1ec6f57283509697af0bbc72280622a6c3efa6fed242db4f ./web/favicon. d34953aec21ade81ca9770c9c99873b0b2a4862a1bf671a6e13b507a5dd5b7ed ./web/js/dashboard.js 2887856e35e086bb575e9fc0d8b0ed1160b6912297a2957535d5416bda68b4b7 ./web/js/entities.js 9a0e87911f78cd8a969f4c57ce74774f5fa829fdecd79494d9a7f9d5804f9792 ./web/js/events.js -7373214514dc553c6c793afc88aa62f4c21b02c32e002a81f27d7aeabca82fdf ./web/js/flows.js +ee094f55b3f6d0c40fafaf422776ee87b17e0d83eb228ca6c197dfd3efd4c774 ./web/js/flows.js f06557c6d338259059b990f8f79c91d68ac8ec1f245c302468f08929b5506901 ./web/js/forms.js dbf36223863ba882c03eccea4516ba8db7acf0c2e72c6c64490cb994f1e20f96 ./web/js/history.js 7eaa04992ea828dc89f5eaebf674cbbfd160f53eb8d0d6ef0d4e47bd8c28c435 ./web/js/main.js @@ -189,6 +189,6 @@ c8c82e88c3715b1bfabf155e36266a4c94f5e2fc03eb39dcdd9d08a1985a997c ./web/js/route 3d44b5457200a71f66fbf7bde89c7b9adf416ca185ad0e3c61f2c4e551bceb1e ./web/js/settings-ui.js a06d718217dc6ffb6d4fb5b002fedac02ba7eea3a5b00066c2241df7c1957e51 ./web/js/settings.js 6b653e4fe2d4db4ffae6ff8f39b8ce57a10a990dc0000ee4aae51d949afadd52 ./web/manifest.webmanifest -d6a7ebd22557a1dc8c74b14562a3f541c77bc0afcae88508a8e667c4ddbb775e ./web/styles.css +c8ca437e032fe81327f3bfe7457b5510f21bad21c021bfc83caf44527ce9633f ./web/styles.css ae1b03f30b494f474a781a5d32072f1e73eba2b7c768109fc1cc8028cb6662a4 ./web/sw.js d505d793ce7cc9485b45b78bba1c0d51887adc7451ab59a42702946e5b991382 ./web/theme-init.js diff --git a/README.md b/README.md index 278e75a..30db1f2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Self-hosted controller for GREE-compatible air conditioners with a local Web UI, thermostat zones, schedules, Home Assistant integration, history, notifications and a documented HTTP/WebSocket API. -**Current release: 0.9.11** +**Current release: 0.9.13** > [Full API reference](docs/API.md) — authentication, every endpoint, request bodies, response models, WebSocket events and examples. diff --git a/docs/API.md b/docs/API.md index 72b89d6..c4b434c 100644 --- a/docs/API.md +++ b/docs/API.md @@ -1,6 +1,6 @@ # GREE Controller API reference -HTTP and WebSocket API for GREE Controller **0.9.11**. +HTTP and WebSocket API for GREE Controller **0.9.13**. [← Main documentation](../README.md) @@ -213,7 +213,7 @@ Response: { "status": "ok", "name": "gree-controller", - "version": "0.9.11", + "version": "0.9.13", "uptime_seconds": 1234, "control_ready": true, "time": "2026-08-30T06:54:00Z" @@ -237,7 +237,7 @@ Returns the initial Web UI snapshot: "settings": {}, "outdoor_temperature": null, "system": { - "version": "0.9.11", + "version": "0.9.13", "uptime_seconds": 1234, "auth_required": false, "control_ready": true, diff --git a/docs/FLOW.md b/docs/FLOW.md index 94c23c8..6961e10 100644 --- a/docs/FLOW.md +++ b/docs/FLOW.md @@ -88,3 +88,7 @@ The next useful additions should be implemented with persisted runtime state rat - trace replay from historical sensor samples. These need durable state and restart semantics before they should be exposed in the editor. + +### Display name / alias + +The Flow name edited in `/flows` is a presentation alias. Renaming it changes labels shown in the UI (including the dashboard) but does not change the stable Flow ID or generated `flow-` schedule/automation names. diff --git a/home-assistant/custom_components/gree_controller/manifest.json b/home-assistant/custom_components/gree_controller/manifest.json index 79e4813..5b532c5 100644 --- a/home-assistant/custom_components/gree_controller/manifest.json +++ b/home-assistant/custom_components/gree_controller/manifest.json @@ -1,7 +1,7 @@ { "domain": "gree_controller", "name": "GREE Controller", - "version": "0.9.11", + "version": "0.9.13", "config_flow": true, "integration_type": "hub", "iot_class": "local_polling", diff --git a/lang/en.json b/lang/en.json index 1c7dc46..7881fda 100644 --- a/lang/en.json +++ b/lang/en.json @@ -823,7 +823,7 @@ "flow.emptyTitle": "No Flows", "flow.emptyText": "Create your first Flow and build the logic from blocks.", "flow.editorEyebrow": "Flow editor", - "flow.namePlaceholder": "Logic name", + "flow.namePlaceholder": "Flow name / alias", "flow.paletteHint": "Add a block, then connect its output to the next block.", "flow.time": "Time", "flow.sensors": "Sensors", @@ -847,7 +847,7 @@ "flow.noActionsYet": "Add an action to see the interpreted logic.", "flow.always": "Always", "flow.compileCount": "{schedules} schedules · {automations} automations", - "flow.nameRequired": "Enter a Flow name", + "flow.nameRequired": "Enter a Flow name / alias", "flow.saved": "Flow saved and translated into executable logic.", "flow.deleteConfirm": "Delete Flow “{name}” together with its generated schedules and automations?", "flow.deleted": "Flow deleted.", @@ -1041,6 +1041,7 @@ "flow.logMessageBlockedTemporary": "The Flow action was blocked by the temporary thermostat.", "flow.logMessageBlockedThermostatOwner": "The Flow action was suppressed because the device is controlled by an enabled thermostat zone.", "flow.logMessageBlockedOwnership": "The Flow action was suppressed because control ownership changed during execution.", - "flow.logMessageConflict": "The Flow action was skipped because another automation already claimed the same target." + "flow.logMessageConflict": "The Flow action was skipped because another automation already claimed the same target.", + "flow.nameAliasHint": "This is only the user-facing display name. The technical Flow ID and generated task names remain unchanged." } } diff --git a/lang/pl.json b/lang/pl.json index 94e1a0f..486acdf 100644 --- a/lang/pl.json +++ b/lang/pl.json @@ -823,7 +823,7 @@ "flow.emptyTitle": "Brak Flow", "flow.emptyText": "Utwórz pierwszy przepływ i ułóż logikę z bloków.", "flow.editorEyebrow": "Edytor Flow", - "flow.namePlaceholder": "Nazwa logiki", + "flow.namePlaceholder": "Nazwa / alias Flow", "flow.paletteHint": "Dodaj blok, a potem połącz jego wyjście z kolejnym blokiem.", "flow.time": "Czas", "flow.sensors": "Czujniki", @@ -847,7 +847,7 @@ "flow.noActionsYet": "Dodaj akcję, aby zobaczyć interpretację logiki.", "flow.always": "Zawsze", "flow.compileCount": "{schedules} harm. · {automations} autom.", - "flow.nameRequired": "Podaj nazwę Flow", + "flow.nameRequired": "Podaj nazwę / alias Flow", "flow.saved": "Flow zapisany i przetłumaczony na logikę wykonawczą.", "flow.deleteConfirm": "Usunąć Flow „{name}” razem z wygenerowanymi harmonogramami i automatyzacjami?", "flow.deleted": "Flow usunięty.", @@ -1041,6 +1041,7 @@ "flow.logMessageBlockedTemporary": "Akcja Flow została zablokowana przez tymczasowy termostat.", "flow.logMessageBlockedThermostatOwner": "Akcja Flow została pominięta, ponieważ urządzeniem steruje aktywna strefa termostatu.", "flow.logMessageBlockedOwnership": "Akcja Flow została pominięta, ponieważ w trakcie wykonania zmienił się właściciel sterowania.", - "flow.logMessageConflict": "Akcja Flow została pominięta z powodu konfliktu z inną automatyzacją dla tego samego celu." + "flow.logMessageConflict": "Akcja Flow została pominięta z powodu konfliktu z inną automatyzacją dla tego samego celu.", + "flow.nameAliasHint": "To tylko nazwa wyświetlana użytkownikowi. Techniczne ID Flow i nazwy wygenerowanych zadań pozostają bez zmian." } } diff --git a/web/index.html b/web/index.html index b46f926..5d942c9 100644 --- a/web/index.html +++ b/web/index.html @@ -88,7 +88,7 @@
-
+
Control plan

What happens next

@@ -693,7 +693,7 @@