OK, the relative approach is fortunately also what I put in the specs for intra-game level commands.
WB protocol specs wrote:The number of moves given in the level command (when non-zero) should be taken as the number of moves still to do before the specified time will be added to the clock, if the "level" command is received after some moves have already been played. The time given should be interpreted as the time left on its clock (including any time left over from the previous sessions), and not necessarily the time that will be added to the clock after the specified number of moves has been played.
I have not implemented increments in any session but the last in WinBoard. It seems pretty pointless to have increments in internal sessions. Because the number of moves in the session is known,so you could simpy add that many times the increment to the duration of the session.
But that of course does not mean that the protocol does not have to support them.
So I guess it is not so much a protocol change that is needed. Just a GUI that uses the existing protocol to the max. After all, we are going to dump this on existing engine, so the last thing we would want is to introduce some feature that would suppress the use of it in existing engines not specifically made to support it.
I would like to add new protocol to allow engines that want it to inquire about what to expect. To this end there would be a new boolean feature 'xlevel'. Engines that would send
feature xlevel = 1 at startup would get not just the parameters for the next session sent in a normal
level command, but also the parameters for all subsequent time controls. Problem is that we cold not really agree about the format. My original idea was to simply send all sessions in one level command, with as many groups of 3 parameters as needed. But most authors seemed to like the command split up in a normal level command, followed by a number of separate commands, one for each upcoming session. (Yegh!) Perhaps I should bring it up on TalkChess again...