Hi there, this is sort of a half bug / half feature request. It's like the offset mode feature is not quite as complete as it could be.
I love how the offset mode aids the shifting of keys in a loop. However, it only seems to work when whole keys actually fall past the end. What would be really good is if the extra interpolated end-keys were created even if you only shift a small amount.
This actually mattered in my first attempted walk cycle, where I wanted to add a slight lag to the head bobbing by shifting those keys to slightly later. I used offset mode, but it didn't add the required interpolated keys at the start and end, so the head bobbing suddenly looked like an uneven hobble instead of a symmetrical cycle.
I realise one might not always want these extra keys being generated with small shifts, but it would be great if this was either another mode, or some modifier to the existing mode, or a preferences setting. Maybe it could take effect only when keys adjacent to an end are being shifted, so usually the extra keys would not be generated.
Ideally I guess you wouldn't ever even need to have special keyframes at the start and end, and the timeline would just always interpolate between adjacent relevant keys on the same bone, always taking looping into account. This would eliminate the need to perpetually maintain the duplicate start and end frames, while also allowing clean shifting of keys forward and backward without generating any extra keys. The runtime probably wouldn't even need to be modified for this, as the editor could just generate the correct interpolated start/end keys only on export.
Anyway, just some ideas there. :-)
Cheers,
Jules