PR #16866 renamed the decode argument in gettransaction to verbose to make it more consistent with other RPC calls like getrawtransaction.
However, if I understand correctly, it inadvertently overloaded the "details" fields when verbose is passed.
The result is that the original "details" field is no longer returned correctly, which seems to be a breaking API change.