I’d probably paint it on canvas and then overlay an invisible plaintext node to allow selection.
I’d probably paint it on canvas and then overlay an invisible plaintext node to allow selection.
The terminal lines with (colored) text definitely don't need a view library if you just want to display it, true. Canvas would be way more efficient here, and it's not out of the question for the terminal part in the future. One thing that using DOM (spans here) gives for free is copy-paste. Like you mentioned it could be solved by overlaying a text element on top of canvas (on mousedown, or when paused) or custom implementing copy-paste for canvas with mousedown/mousemove/mouseup, but that's all extra work, and as I mentioned in the blog terminal emulation was the bottleneck, not rendering.
I feel like you may not be seeing the whole picture / problem domain.