Is this a bug ? idle_timeout / controller_fan

The global idle status is reflected in the printer variable printer.idle_timeout.state
You could use this to construct a macro to do whatever you want. See Macro Creation Tutorial for more information