Solved the nested terminal problem on Windows with #hex1b. This screenshot is from a build of Hex1b that has a pty proxy, shows terminals nested in terminals nested in terminals.
Here is a little demo I put together combining #Hex1b with another cool open-source project called Trolley.
hex1b.dev
github.com/weedonandsco...
Learned about it from the comments to a link on HN about this example in the Ghostty org: github.com/ghostty-org/....
I think I'm 95% of the way there with KGP support in the TUI side of #hex1b
Working on Kitty Graphics Protocol support in #hex1b. Here is a picture of some output of one of the test cases. A few more tests at the Hex1bTerminal layer and then I can figure out the best way to make this work within the TUI abstraction and build on this strong foundation.
In both the @aspire.dev and #hex1b codebases I cannot communicate in shorthand because there is enough code that shapes the agent's behavior. Building "repo dialect" is an important role for developers doing engineering with coding agents. It is what unlocks productivity.
GitHub Copilot has been busy extending the Editor widget in #hex1b to support syntax highlighting. Here is a little taste test of where it is at.
Just shipped an update to #hex1b today which adds a `WithDockerContainer` API to Hex1bTerminaBuilder. The idea is that you attach a running container to your terminal to help with test isolation. Works fairly well although not very visual. Was @davidfowl.com's idea.
github.com/mitchdenny/h...
TUI map rendering in #hex1b.
Been experimenting with getting #hex1b to support Kitty Graphics Protocol. Very early days bat at least something is showing on the screen. I've got it working inside Hex1bTerminal itself (on this branch of the code), but this screenshot shows it flowing through from a Hex1b app (TUI framework).
#hex1b drag and drop support with drag ghost overlays AND a proof-of-concept for terminal thumbnails
Here is a little terminal multiplexing experiment for #hex1b. This one shows a main terminal window and a panel on the right with thumbnails which I can then drag and drop (with previews) onto the main terminal to switch between them.
#hex1b ... interactive surface rendering as a background for a Window Panel.
Here is a nice little example of what you can do with Hex1b. Over the past week I've been making some performance improvements to #Hex1b. Some big wins and lots of little optimizations - and a few more things to work on.
As the #Hex1b stack gets more capable I'm needing to build out the tools so that I and coding agents can debug them. That's why I build the `hex1b app tree` command to dump out stats from running TUIs widget tree
Another #hex1b widget added which I've actually build specifically for #aspire but which will be pretty useful for any .NET-based TUI is a LoggerPanel. There are a few parts of this including an extension for Microsoft.Extensions.Logging that returns a sink that can be bound to the UX.
#Hex1b has also gotten some useful widgets that you see in more complex #tui systems like a TabPanelWidget and a TreeWidget. Here is a screenshot that shows off both. The TabPanel is quite flexible and composed of a TabBar that can be used independently and the ability to add icons to the tabs!
Some of the other features that I've been cooking in #Hex1b. A big chunk of the weekend was building a CLI tool for Hex1b that can be used for debugging. One of the things it can do is launch terminals in the background and attach to them. You can even view them in the browser.
I just shared with the rest of the @aspire.dev team a proof of concept for a TUI interface in the Aspire CLI. It is built with #Hex1b using a few features that I've been cooking over the weekend. This specific UX might not make it but it shows you what is possible.
This was my desktop pretty much all weekend working on improvements to #hex1b. I'll need to start writing up some detailed blog posts on the #hex1b story so far and update with details on improvements I'm making.
Back to building real widgets for #hex1b. This time a data bound table. Not perfect yet, but looking pretty good. Supports nested widgets and has a compact and full mode. Still need to work on data source virtualization and preserving selection and column sorting. #tui
This demo also shows of the input sequencer to automate the execution of commands within the terminal. In this case I'm just launching Mapscii and Pipes, but you can do all kinds of things with this and its part of the testing and automation stack in #Hex1b.
Resumed work on the #TUI framework side of #Hex1b. One of the more challenging features to implement is an embedded terminal. Here is a demo of a work in progress I have where the terminal widget is embedded within a Hex1bApp and I launch a shell and then use the cool Mapscii app.
Getting closer with #hex1b being able to property support running child processes and being exposing a PTY to them. This is a screenshot out of a test harness I have which dumps out the internal Hex1b terminal cell state to a HTML file to allow me to inspect what is going on. Its showing mapscii.
I'm hoping that we can find a way to support interactive terminal experiences in #aspire using an approach like this. Still lots of details to work about but a big part of why I wanted to build #hex1b was to improve a bunch of things both of the Aspire dev team, and Aspire users generally.
My work on #hex1b continues. I've got a pretty solid TUI framework now including things like drop down lists, menus etc. But today I spiked out using the Hex1bTermiunal to create a "terminal host" for @aspire.dev
More #hex1b shenanigans. This short clip shows a Hex1b app running inside a Hex1b app. Because part of the Hex1b app stack is a terminal emulator, I'm working on building a TerminalWidget that allows you to show other programs inside your Hex1b app - in theory Hex1bApp.