A Fix for HTML label elements not working consistently in Live Preview

Hello! i’ve been working a bit on a CSS snippet that implements a tab-style interface for in-note content in Obsidian. The snippet as-is works well in Source mode, but i’ve had folks ask to provide similar behavior in Live Preview. In attempting to write a solution, i encountered a bug which is not considered supported, and thus i’m submitting a feature request here.

Use case or problem

In Live Preview, HTML label elements can produce a bugged interaction with radio buttons (and possibly other input elements). This interaction prevents the labels from correctly propagating behavior to their bound inputs. As a consequence, various applications of HTML inputs and labels—that would ordinarily allow a large amount of improvised customization of layouts using CSS and without requiring the use of third-party plugins—are not possible or are made extremely onerous to implement in Live Preview.

More details and examples can be found in the original bug report.

Proposed solution

i do not possess enough knowledge about how Obsidian works behind the scenes or the languages that it is written in to properly suggest any conceptual fixes. This is partly why i am upset about the bug report being immediately shelved when it seems empirically clear that the majority of interactions involving HTML label+input elements work perfectly well (i.e. in Source mode and even situationally correctly in Live Preview). Due to that, it seems to me correct to say that isolated HTML is de facto supported in Obsidian; the help vault makes explicit mention of HTML features as part of practical techniques for using the software, and the main warnings offered against any specific HTML are in regards to sanitization of possibly dangerous vectors such as script elements, and that markdown parsing will not work directly within HTML blocks. At the very least, it would be nice to have a page added to the help vault that clarifies the stance/supportedness of HTML both in general and in specific (where reasonable).

Current workaround (optional)

My workaround is less of a workaround and just a lucky coincidence that i prefer using Source mode, where the implementation works as desired, as opposed to Live Preview. If i find any more complete solutions i will update this thread with explanations and examples.

Related feature requests (optional)

[none at present]