Repeat any combination of count/for_each/while/until

Currently, repeat only allows one condition out of count, for_each, while or until. But why not allow any combination of conditions?! It would not break any existing automations, and would make for code that is easier to both read and write for anyone working directly in YAML.

I suppose making a visual editor that would allow any combination of conditions might be complicated. But considering there are already lots of more advanced functionality can only be accomplished directly in YAML, leaving it out of the visual editor would not be without precedent.

Here is a slightly paraphrased excerpt out of a blueprint I am working on, which quite nicely demonstrates which I would consider this an improvement. It is a loop that slowly increases the volume of a group of media players, but will abort if the user pauses the player or adjusts volume manually.

Current implementation:

- variables:
    group_members: ["media_player.sonos_ray", "media_player.sonos_era_100"]
    volume_level: "{{ range(5, 25) | multiply(0.01) | map('round', 2) | list }}"
- repeat:
    while:
    - "{{ is_state(group_members | first, 'playing') }}"
    - "{{ repeat.index <= volume_level | count }}"
    - "{{ repeat.first or not wait.completed }}"
    - "{{ repeat.first or is_state_attr(group_members | first, 'volume_level', volume_level[repeat.index - 2]) }}"
    sequence:
    - action: media_player.volume_set
      target:
        entity_id: "{{ group_members }}"
      data:
        volume_level: "{{ volume_level[repeat.index - 1] }}"
    - if: "{{ repeat.index < volume_level | count }}"
      then:
      - wait_for_trigger:
        - ...
        timeout: 15

How I would simplify the code according to proposal above:

- variables:
    group_members: ["media_player.sonos_ray", "media_player.sonos_era_100"]
- repeat:
    for_each: "{{ range(5, 25) | multiply(0.01) | map('round', 2) | list }}"
    while: "{{ is_state(group_members | first, 'playing') }}"
    until: "{{ wait.completed or not is_state_attr(group_members | first, 'volume_level', repeat.item) }}"
    sequence:
    - action: media_player.volume_set
      target:
        entity_id: "{{ group_members }}"
      data:
        volume_level: "{{ repeat.item }}"
    - if: "{{ not repeat.last }}"
      then:
      - wait_for_trigger:
        - ...
        timeout: 15