This is a plug, but this is one of the problems my own app, Repla is designed to solve. Instead of trying to add to the terminal, Repla tries to work alongside the terminal. There's some details of how this works here
https://blog.repla.app/2020/01/13/repla-use-cases/
Terminals are blindly fast at displaying huge quantities of text, they are, bar none, the most responsive applications to input (e.g., they lose less key strokes than GUI applications), they are extraordinarily flexible, remaining at the forefront of programming as an industry, essentially since the dawn of their invention.
Frankly I think terminals are finished, and the are as close to perfection as our industry has ever reached. While certainly not the best solution to every (or even most) problems, they are the best tool for large number of problems, and of course to re-iterate their most important feature is their adaptability. They are likely to remain the best tool for many new problems in the future.
So instead of trying to add to terminals, which is a losing battle when you have a tool that's already been honed to a razor-sharp edge, Repla tries to provide the same missing features, e.g., being able to display media, but through interoperability with the terminal. It's essentially a web rendering engine that can run processes itself, install its own packages, and is compatible with Unix pipes, so you could for example pipe output into Repla to display graphics, etc... but in a Repla window separate from the terminal.