We implemented the new indentation model by changing where the reply links pointed.
However, this means clients using the API need to respect the reply link given, and use that to determine what the base post is. It's likely some would skip that step and compute the parameters to the reply API call themselves.
We could make this more reliable by having two separate trees:
- Logical tree saying who actually replied to whom
- Rendering tree generating the new indentation model from that (just requires who replied to whom and chronology).
For example:
A posts new topic (T). B replies to A. C replies to B. D replies to B.
Logical tree would be:
T | A | B / \ C D
From that plus chronology, rendering tree would be constructed:
T / | \ A B C | D
This also paves the way for different rendering options at the same time, either via preferences or different apps (e.g. mobile may want to use a different indentation model when rendering due to limited screen space)
We could store a date where we cut-over to representing things internally in the new logical tree, so old topics still use the old model.