From 58aa4be00a62f9c0f33f37163e0a36c9f44d4e72 Mon Sep 17 00:00:00 2001 From: Piotr Kubiak Date: Fri, 11 Nov 2022 15:39:43 +0100 Subject: [PATCH 01/14] Update faq.rst More appropriate link. --- guides/faq.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/faq.rst b/guides/faq.rst index 958162713..0fff1f2b7 100644 --- a/guides/faq.rst +++ b/guides/faq.rst @@ -385,7 +385,7 @@ And a docker compose file looks like this: Notes on disabling mDNS ------------------------------------------------------------------------------ -Some of ESPHome's functionalities rely on mDNS, so naturally :ref:`disabling ` it will cause these features to stop working. +Some of ESPHome's functionalities rely on mDNS, so naturally :doc:`disabling ` it will cause these features to stop working. Generally speaking, disabling mDNS without setting a :ref:`static IP address ` (or a static DHCP lease) is bound to cause problems. This is due to the fact that mDNS is used to find the IP address of each ESPHome nodes. - You will not be able to use the node's hostname to ping, find it's IP address or connect to it. From 26f1157dad8a804f61a2859c4903328aa98a7846 Mon Sep 17 00:00:00 2001 From: Piotr Kubiak Date: Fri, 11 Nov 2022 16:00:57 +0100 Subject: [PATCH 02/14] Update faq.rst Fix typo --- guides/faq.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/faq.rst b/guides/faq.rst index 0fff1f2b7..3a064b783 100644 --- a/guides/faq.rst +++ b/guides/faq.rst @@ -385,7 +385,7 @@ And a docker compose file looks like this: Notes on disabling mDNS ------------------------------------------------------------------------------ -Some of ESPHome's functionalities rely on mDNS, so naturally :doc:`disabling ` it will cause these features to stop working. +Some of ESPHome's functionalities rely on mDNS, so naturally :doc:`disabling ` it will cause these features to stop working. Generally speaking, disabling mDNS without setting a :ref:`static IP address ` (or a static DHCP lease) is bound to cause problems. This is due to the fact that mDNS is used to find the IP address of each ESPHome nodes. - You will not be able to use the node's hostname to ping, find it's IP address or connect to it. From 0d9eaf425d8c6c5a1a938189db427800bda8af4f Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 23 Nov 2022 13:04:22 +1300 Subject: [PATCH 03/14] Bump version to 2022.11.2 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index fe95949b2..6586b3c4b 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 2022.11.1 +PROJECT_NUMBER = 2022.11.2 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index da05b2951..7089afe76 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2022.11.1 +ESPHOME_REF = 2022.11.2 .PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify diff --git a/_static/version b/_static/version index 8512b9247..a0dcb34b7 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2022.11.1 \ No newline at end of file +2022.11.2 \ No newline at end of file diff --git a/conf.py b/conf.py index 4138c96e5..4c5094a0f 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ author = "ESPHome" # The short X.Y version. version = "2022.11" # The full version, including alpha/beta/rc tags. -release = "2022.11.1" +release = "2022.11.2" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From a27d78ffc647d7c5f539a87c1d547da28e874fbd Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 23 Nov 2022 13:04:50 +1300 Subject: [PATCH 04/14] Update changelog for 2022.11.2 --- changelog/2022.11.0.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/changelog/2022.11.0.rst b/changelog/2022.11.0.rst index 945d2e60b..36f8cfaf0 100644 --- a/changelog/2022.11.0.rst +++ b/changelog/2022.11.0.rst @@ -98,6 +98,15 @@ Release 2022.11.1 - November 17 - Support ADC on RP2040 :esphomepr:`4040` by :ghuser:`jesserockz` +Release 2022.11.2 - November 23 +------------------------------- + +- Fix rp2040 pwm to use pico-sdk, not mbed :esphomepr:`4059` by :ghuser:`jesserockz` +- Update web_server index :esphomepr:`4060` by :ghuser:`jesserockz` +- rp2040_pwm frequency is per pair of pins :esphomepr:`4061` by :ghuser:`jesserockz` +- Avoid 128bit uuid loop for 16/32 bit uuids :esphomepr:`4068` by :ghuser:`bdraco` +- Avoid creating a new espbt::ESPBTUUID each loop when registering for notify :esphomepr:`4069` by :ghuser:`bdraco` + Full list of changes -------------------- From 9be4eaa045274acdf9ddb56e0d0e3bacd1bfb144 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 23 Nov 2022 13:05:28 +1300 Subject: [PATCH 05/14] Update supporters for 2022.11.2 --- guides/supporters.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 5fe228a0e..263d38c3c 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -230,7 +230,6 @@ Contributors - `Destix (@Destix) `__ - `Develo (@devyte) `__ - `Dezorian (@Dezorian) `__ -- `dgtal1 (@dgtal1) `__ - `Dan Halbert (@dhalbert) `__ - `Alain Turbide (@Dilbert66) `__ - `Mark (@Diramu) `__ @@ -898,4 +897,4 @@ Contributors - `Zack Barett (@zsarnett) `__ - `Christian Zufferey (@zuzu59) `__ -*This page was last updated November 17, 2022.* +*This page was last updated November 23, 2022.* From 2e6c5ce710acf2bce8d677eab3c2ffb0960a17e0 Mon Sep 17 00:00:00 2001 From: Ryan Neufeld Date: Wed, 23 Nov 2022 10:54:59 -0800 Subject: [PATCH 06/14] Update shelly_dimmer.rst (#2472) --- components/light/shelly_dimmer.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/components/light/shelly_dimmer.rst b/components/light/shelly_dimmer.rst index b38897680..d6f9b8c12 100644 --- a/components/light/shelly_dimmer.rst +++ b/components/light/shelly_dimmer.rst @@ -5,7 +5,7 @@ Shelly Dimmer :description: Instructions for setting up a Shelly Dimmer 2. :image: shellydimmer2.jpg -The ``shelly_dimmer`` component adds support for the dimming and power-metering functionality that can be found the `Shelly Dimmer 2 `_. The interaction with mains is done via an STM32 microcontroller that is flashed with an `open source firmware `_. +The ``shelly_dimmer`` component adds support for the dimming and power-metering functionality that can be found the `Shelly Dimmer 2 `_. The interaction with mains is done via an STM32 microcontroller that is automatically (when configured) flashed with an `open source firmware `_. A detailed analysis of the Shelly Dimmer 2 hardware is given `here `_. Warning!!! At the time of writing there seems to be no way to revert back to the "stock firmware", because there seems to be no way to revert to firmware of the STM32 co-processor. @@ -84,14 +84,15 @@ Configuration variables: .. note:: - When flashing Shelly Dimmer with esphome for the first time, flashing the STM firmware is necessary too for the dimmer to work: + When flashing Shelly Dimmer with esphome for the first time, automatic flashing the STM firmware is necessary too for the dimmer to work and enabled by the following configuration.: .. code-block:: yaml firmware: version: "51.6" #<-- set version here update: true - + + There is no action required by the user to flash the STM32. There is no way to revert to stock firmware on the STM32 at the time of writing. - All other options from :ref:`Light `. From 1502fcc5f6f37496e101c9843f16f8fac481f7be Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 24 Nov 2022 17:01:54 +1300 Subject: [PATCH 07/14] Bump version to 2022.11.3 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 6586b3c4b..522dd8621 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 2022.11.2 +PROJECT_NUMBER = 2022.11.3 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index 7089afe76..824f4006c 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = 2022.11.2 +ESPHOME_REF = 2022.11.3 .PHONY: html html-strict cleanhtml deploy help live-html Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png minify diff --git a/_static/version b/_static/version index a0dcb34b7..9a79ef19d 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -2022.11.2 \ No newline at end of file +2022.11.3 \ No newline at end of file diff --git a/conf.py b/conf.py index 4c5094a0f..36981d478 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ author = "ESPHome" # The short X.Y version. version = "2022.11" # The full version, including alpha/beta/rc tags. -release = "2022.11.2" +release = "2022.11.3" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 090e42dcc7114f1e717369c22b0016085f9aaadc Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 24 Nov 2022 17:03:47 +1300 Subject: [PATCH 08/14] Update changelog for 2022.11.3 --- changelog/2022.11.0.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/changelog/2022.11.0.rst b/changelog/2022.11.0.rst index 36f8cfaf0..d43725f9c 100644 --- a/changelog/2022.11.0.rst +++ b/changelog/2022.11.0.rst @@ -107,6 +107,13 @@ Release 2022.11.2 - November 23 - Avoid 128bit uuid loop for 16/32 bit uuids :esphomepr:`4068` by :ghuser:`bdraco` - Avoid creating a new espbt::ESPBTUUID each loop when registering for notify :esphomepr:`4069` by :ghuser:`bdraco` +Release 2022.11.3 - November 24 +------------------------------- + +- fix missing library :esphomepr:`4051` by :ghuser:`ssieb` +- Fix units for refresh: never :esphomepr:`4048` by :ghuser:`bkaufx` +- Don't convert climate temperature step :esphomepr:`4082` by :ghuser:`jesserockz` + Full list of changes -------------------- From 12f75efc2abe17642fea8951311364feddd6b02f Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Thu, 24 Nov 2022 17:04:23 +1300 Subject: [PATCH 09/14] Update supporters for 2022.11.3 --- guides/supporters.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 263d38c3c..b4c6e1124 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -897,4 +897,4 @@ Contributors - `Zack Barett (@zsarnett) `__ - `Christian Zufferey (@zuzu59) `__ -*This page was last updated November 23, 2022.* +*This page was last updated November 24, 2022.* From ed45c152c9bf6b9f401ed8af67605acce4bb3222 Mon Sep 17 00:00:00 2001 From: rlowens <35885181+rlowens@users.noreply.github.com> Date: Thu, 24 Nov 2022 00:17:03 -0600 Subject: [PATCH 10/14] Update debug.rst Minor typo --- components/debug.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/debug.rst b/components/debug.rst index 4c63451fc..5a3f928c8 100644 --- a/components/debug.rst +++ b/components/debug.rst @@ -7,7 +7,7 @@ Debug Component The ``debug`` component can be used to debug problems with ESPHome. At startup, it prints a bunch of useful information like reset reason, free heap size, ESPHome version and so on. -It also allows you get the same information as a text sensor, and to monitor the state of the +It also allows you to get the same information as a text sensor, and to monitor the state of the ESP heap memory (free space, maximum free block size and fragmentation level) and the main-loop timing. .. figure:: images/debug.png From de1d8332e2678c816b629e3ac350470288bb4864 Mon Sep 17 00:00:00 2001 From: diletone <96388572+diletone@users.noreply.github.com> Date: Fri, 25 Nov 2022 03:38:09 -0500 Subject: [PATCH 11/14] Fix set_calibration_point_high example (#2476) --- components/sensor/ezo.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/sensor/ezo.rst b/components/sensor/ezo.rst index fd7e2b7a4..810ef414d 100644 --- a/components/sensor/ezo.rst +++ b/components/sensor/ezo.rst @@ -152,7 +152,7 @@ From :ref:`lambdas `, you can interact with the sensor in various .. code-block:: cpp - id(ph_ezo).set_calibration_point_low(10.00); + id(ph_ezo).set_calibration_point_high(10.00); - ``clear_calibration()``: Clears all calibration points. From 1f865beef777f8c26e16101ebfc622694a80c781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Fri, 25 Nov 2022 12:24:47 +0100 Subject: [PATCH 12/14] Update getting_started_hassio.rst --- guides/getting_started_hassio.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/guides/getting_started_hassio.rst b/guides/getting_started_hassio.rst index 2be91479e..5f886ae52 100644 --- a/guides/getting_started_hassio.rst +++ b/guides/getting_started_hassio.rst @@ -76,6 +76,10 @@ The configuration files for ESPHome can be found and edited under ``` to extend your configuration. Adding some (basic) features From cd9937927f13f8bd9bd1e53c0e58596d3e5a01b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Fri, 25 Nov 2022 14:31:51 +0100 Subject: [PATCH 13/14] climate cosmetic fixes --- components/climate/index.rst | 77 ++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/components/climate/index.rst b/components/climate/index.rst index 927e217ad..7461c0ecf 100644 --- a/components/climate/index.rst +++ b/components/climate/index.rst @@ -7,7 +7,7 @@ Climate Component ESPHome has support for climate devices. Climate devices can represent different types of hardware, but the defining factor is that climate devices have a settable target temperature -and can be put in different modes like HEAT, COOL, HEAT_COOL or OFF. +and can be put in different modes like ``HEAT``, ``COOL``, ``HEAT_COOL`` or ``OFF``. .. figure:: images/climate-ui.png :align: center @@ -58,42 +58,6 @@ Advanced options: for a list of available options. Requires Home Assistant 2021.11 or newer. Set to ``""`` to remove the default entity category. -MQTT options: - -- **action_state_topic** (*Optional*, string): The topic to publish - climate device action changes to. -- **away_state_topic** (*Optional*, string): The topic to publish - away mode changes on. -- **away_command_topic** (*Optional*, string): The topic to receive - away mode commands on. -- **current_temperature_state_topic** (*Optional*, string): The topic to publish - current temperature changes to. -- **fan_mode_state_topic** (*Optional*, string): The topic to publish - fan mode changes to. -- **fan_mode_command_topic** (*Optional*, string): The topic to receive - fan mode commands on. -- **mode_state_topic** (*Optional*, string): The topic to publish - climate device mode changes to. -- **mode_command_topic** (*Optional*, string): The topic to receive - climate device mode commands on. -- **swing_mode_state_topic** (*Optional*, string): The topic to publish - swing mode changes to. -- **swing_mode_command_topic** (*Optional*, string): The topic to receive - swing mode commands on. -- **target_temperature_state_topic** (*Optional*, string): The topic to publish - target temperature changes to. -- **target_temperature_command_topic** (*Optional*, string): The topic to receive - target temperature commands on. -- **target_temperature_high_state_topic** (*Optional*, string): The topic to publish - higher target temperature changes to. -- **target_temperature_high_command_topic** (*Optional*, string): The topic to receive - higher target temperature commands on. -- **target_temperature_low_state_topic** (*Optional*, string): The topic to publish - lower target temperature changes to. -- **target_temperature_low_command_topic** (*Optional*, string): The topic to receive - lower target temperature commands on. -- All other options from :ref:`MQTT Component `. - Climate Automation ------------------ @@ -189,7 +153,7 @@ advanced stuff. .. _climate-on_state_trigger: ``climate.on_state`` Trigger -****************************************************** +**************************** This trigger is activated each time the state of the climate device is updated (for example, if the current temperature measurement or the mode set by the users changes). @@ -202,6 +166,43 @@ This trigger is activated each time the state of the climate device is updated on_state: - logger.log: "State updated!" +MQTT options: + +- **action_state_topic** (*Optional*, string): The topic to publish + climate device action changes to. +- **away_state_topic** (*Optional*, string): The topic to publish + away mode changes on. +- **away_command_topic** (*Optional*, string): The topic to receive + away mode commands on. +- **current_temperature_state_topic** (*Optional*, string): The topic to publish + current temperature changes to. +- **fan_mode_state_topic** (*Optional*, string): The topic to publish + fan mode changes to. +- **fan_mode_command_topic** (*Optional*, string): The topic to receive + fan mode commands on. +- **mode_state_topic** (*Optional*, string): The topic to publish + climate device mode changes to. +- **mode_command_topic** (*Optional*, string): The topic to receive + climate device mode commands on. +- **swing_mode_state_topic** (*Optional*, string): The topic to publish + swing mode changes to. +- **swing_mode_command_topic** (*Optional*, string): The topic to receive + swing mode commands on. +- **target_temperature_state_topic** (*Optional*, string): The topic to publish + target temperature changes to. +- **target_temperature_command_topic** (*Optional*, string): The topic to receive + target temperature commands on. +- **target_temperature_high_state_topic** (*Optional*, string): The topic to publish + higher target temperature changes to. +- **target_temperature_high_command_topic** (*Optional*, string): The topic to receive + higher target temperature commands on. +- **target_temperature_low_state_topic** (*Optional*, string): The topic to publish + lower target temperature changes to. +- **target_temperature_low_command_topic** (*Optional*, string): The topic to receive + lower target temperature commands on. +- All other options from :ref:`MQTT Component `. + + See Also -------- From 2d4082d8ad9a652c3b96a064dec24e964144ccc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Fri, 25 Nov 2022 14:38:58 +0100 Subject: [PATCH 14/14] Update thermostat.rst Remove deprecated (rejected by config validation) options from thermostat --- components/climate/thermostat.rst | 51 +++++-------------------------- 1 file changed, 8 insertions(+), 43 deletions(-) diff --git a/components/climate/thermostat.rst b/components/climate/thermostat.rst index 862513424..7b7e6fa3c 100644 --- a/components/climate/thermostat.rst +++ b/components/climate/thermostat.rst @@ -6,10 +6,10 @@ Thermostat Climate Controller :image: air-conditioner.svg The ``thermostat`` climate platform allows you to control a climate control system in much the same manner as a -physical thermostat. Its operation is similar to the :doc:`bang-bang ` controller; a sensor measures a value +physical thermostat. Its operation is similar to the :doc:`Bang-Bang ` controller; a sensor measures a value (the air temperature) and the controller will try to keep this value within a range defined by the set point(s). To do this, the controller can activate devices like a heating unit and/or a cooling unit to change the value observed by the sensor. -When configured for both heating and cooling, it is essentially two :doc:`bang-bang ` controllers in one; it +When configured for both heating and cooling, it is essentially two :doc:`Bang-Bang ` controllers in one; it differs, however, in that interaction with the thermostat component is nearly identical to that of a real thermostat. This component can operate in one of two ways: @@ -169,45 +169,6 @@ The thermostat controller uses the sensor to determine whether it should heat or - **sensor** (**Required**, :ref:`config-id`): The sensor that is used to measure the current temperature. -Default Target Temperatures and Mode -************************************ - -These configuration items determine default values the thermostat controller should use when it starts. - -- **default_mode** (*Optional*, *Deprecated*, climate mode): The default climate mode the controller should - use if it is unable to restore it from memory. One of: - - - ``off`` (default) - - ``heat_cool`` - - ``cool`` - - ``heat`` - - ``dry`` - - ``fan_only`` - - ``auto`` - -This value is used the first time your device starts after ESPHome is initially installed onto it. Add -this option into your configuration if you want your thermostat component to start in a climate mode other -than ``off``. If this option is not configured, you'll need to manually change the climate mode later via -the front end (Home Assistant), an ESPHome action, automation, or from within a lambda elsewhere in your -device's configuration. - -- **default_target_temperature_low** (*Optional*, float): The default low target - temperature for the control algorithm. This can be dynamically set in the frontend later. -- **default_target_temperature_high** (*Optional*, float): The default high target - temperature for the control algorithm. This can be dynamically set in the frontend later. - -**At least one of** ``default_target_temperature_low`` **and** ``default_target_temperature_high`` -**must be specified.** - -.. note:: - - **default_mode**, **default_target_temperature_low**, and **default_target_temperature_high** are - being removed in a future release. In the future you will need to migrate your configuration to using - a :ref:`preset ` which will allow for more flexibility and customisation - -Note that ``min_temperature`` and ``max_temperature`` from the base climate component are used to define -the range of allowed temperature values in the thermostat component. See :doc:`/components/climate/index`. - Heating and Cooling Actions *************************** @@ -527,6 +488,9 @@ Additional Actions/Behavior - **min_fan_mode_switching_time** (*Required with any* ``fan_mode`` *action*, :ref:`config-time`): Minimum duration any given fan mode must be active before it may be changed. +Note that ``min_temperature`` and ``max_temperature`` from the base climate component are used to define +the range of allowed temperature values in the thermostat component. See :doc:`/components/climate/index`. + Hysteresis Values ***************** @@ -547,15 +511,16 @@ Hysteresis Values adjustability and the defaults will probably not make sense for control of things like humidity. See :doc:`/components/climate/index`. -Bang-bang vs. Thermostat +Bang-Bang vs. Thermostat ------------------------ -Please see the :doc:`Bang-bang ` component's documentation for a detailed comparison of these two components. +Please see the :doc:`Bang-Bang ` component's documentation for a detailed comparison of these two components. See Also -------- - :doc:`/components/climate/index` - :doc:`/components/sensor/index` +- :doc:`Bang-Bang ` - :ref:`config-action` - :ghedit:`Edit`