Great to see what you're doing there, but speaking as a 30-year hardcore C++ veteran (to the extent of creating my own C++ GUI framework: https://juce.com)... When I was writing a code agent (https://github.com/juggler-ai/juggler), there's no way I'd have used C++ for an agent GUI!

Agent UIs are all markdown, HTML, big scrolling lists, text flow, unicode chars, and all the other stuff that C++ frameworks are terrible at, but which is a doddle in HTML/CSS/JS.. You are a brave man!

> and all the other stuff that C++ frameworks are terrible at, but which is a doddle in HTML/CSS/JS

This is very interesting. I know that coding string-related stuff with C/C++ can be incredibly tedious and error prone (even hard security-wise). But all the stuff in the web-related stacks/libraries in other languages, is either already somehow being transcompiled to C to execute, or could be relatively easily ported/reused by directing an LLM/agent to do it

Do you think that could work to make C/C++ better at this? What things would you import/copy from elsewhere?

Strings are trivial in C++. Drawing 2D graphics is fine, many libraries do it. Creating old-fashioned component frameworks (like Qt, JUCE, etc) is easy. I implemented all those things on my own, decades before AI.

The hard bit is when you have complex, responsive layouts involving text. (And styling it)

Something seemingly trivial like an agent-style chat containing markdown text blocks, where it's expandable and smoothly scrollable is insanely difficult. The only frameworks that do this well are browsers, and the amount of horrible, horrible logic hidden inside them to make it look easy is hard to believe.

And since in many agents you're also going to want to display actual HTML, unless you're going to embed a browser engine in your C++ library, that's just not doable.

Thank you for the insightful explanation

> And since in many agents you're also going to want to display actual HTML, unless you're going to embed a browser engine in your C++ library, that's just not doable.

I guess this is the main issue. Either you end up reimplementing a browser (which will def have a ton of issues), or you embed a browser and you end up with bloat anyway

You don't need a full browser or a full HTML implementation. You just need enough HTML support for markdown converted to HTML and wxWidgets has that level of support for HTML backed in. I've never seen an LLM generate HTML without it being explicitly told to do so, so I don't know where this notion comes from that full HTML/CSS/JS support is needed to render LLM text outputs.

I used the wxWidgets C++ GUI for my coding agent ( https://github.com/fluxmoot/fluximp ) not directly in C++ but in Python via wxPython. While wxWidgets doesn't have a full browser level implementation of HTML/CSS/JS it has enough HTML support for rendering markdown converted to HTML just fine. I'd imagine Qt would have no problem with markdown either.

This thread caused me to check out juggler. A couple hours later, I'm playing with it. This is awesome, really great work.

Thanks! Really nice to see that it's hitting the spot with a lot of people.