This WTH is not specific on the technology
I will like to emphasize that my “recipe” is specific to lights that use the Zigbee protocol.
The problem with a protocol like Zigbee (“Ooh the Zigbee”) is that it is a slow mesh network that easily gets saturated.
If you have a living room with say 7 Zigbee light bulbs and you implement a dim up or down automation by sending small increments to each bulb several times maybe 10 times per second then it means sending 70 messages per second. Some of these messages will be sent and retransmitted by devices that repeat the signal in the mesh.
The typical problem you will see is that some of the light bulbs will not dim as much as others.
What the Philips and Ikea hubs do are two things.
First you define a Zigbee group. You define a room called Living Room and you put your 7 bulbs in his group. These devices now react on messages sent to the group and you have already reduced the number of messages by a factor 7.
The second thing they so is to send an increment message. In Zigbee because of how things are implemented, the best is to increment the brightness by a value 254. Not the 255 you may think. It just does not work with 255 on many bulbs or Zigbee dimmers. And you send the command with a transition time which is defined so the dimming from minimum to maximum takes some seconds.
Most Zigbee light devices are implemented so they work on the grand father of all Zigbee hubs: Philips Hue, so they all seem to be implemented so when you send a message to increment the brightness by 0, while they are in the transition, they stop the transition.
So the Philips and Ikea dimmers on the hubs are implemented so when you press and hold the increase button, the hub sends an increment message to the bulb or the group of bulbs with a value of 254. And when you release the button, the same message is sent with the increase value of 0
When you press the decrement button, it sends a message to increase the brightness by -254.
The result is a smooth transition of brightness that lasts while you press the button and stop when you release it. And on the Zigbee network only two messages are sent.
This is a unique Zigbee thing. You cannot just implement it as a generic light feature in Home Assistant. So any implementation has to happen in the relevant integration. Zigbee2MQTT needs to implement it in their system and then Home Assistant can use it without any code changes to Home Assistant.
It is essential to note that Home Assistant alone cannot implement this.
It has to be the individual Zigbee software that needs to have the ability to both define Zigbee groups and make the lights know that they are members of this group, and it needs to implement the incremental change of brightness.
ZHA has groups added recently. All it needs is the ability to increase and decrease brightness (in addition to setting an absolute value) and it must be able to send the value 0 for the increase.
I cannot imagine how Home Assistant core can implement a generic feature for this that will fit any technology. It will always be something you have to implement specifically in an automation.
A Wifi based lightbulb may not have a command that is equivalent. I cannot see how you could add this to the genetic light commands.
One thing you can do with Home Assistant and Deconz and cannot do in Philips Hue is define the speed of the transition. By changing the transition time in my method you can decode how quickly you want the light to increase or decrease. You can even have different speed for the two.