Following on from last night's frantic addition of agentic terminal control, I've updated that to resolve the initial linter problems and declared v0.25.
Letting Humbug control the terminal (continued)
Following on from last night's frantic addition of terminal control, I've updated the code to improve parameter validation. I also had Claude remove code that accessed protected properties of the terminal widget and replaced them with public APIs that would do the same things, but in a more typesafe way.
Total time, including yesterday's work, was about 90 minutes!
Separating the terminal writes and reads has been an eye opener! By providing orthogonal tools it's now easy for an LLM to try something and if it doesn't work immediately to try again.
This has some surprising benefits.
As an example I just asked gpt-oss-120b to open a terminal and run vi
on a file. I then asked it to find things in the file, and make edits to the text, based solely on my conversation with it. Occasionally vi needs a little help because it needed an enter key pressing, but it pretty-much "just worked", including closing the file and realizing it needed to use [object Object] when vi complained the file had been edited.
This is very cool!
More ticket cleanups
I spent a little while clearing down old tickets in GitHub issues. My rule of thumb is if something hasn't been important enough to do in 6 months and it's not a clear bug then drop it! That's purged a lot more tickets and reduced the cognitive load.
Humbug v0.25
With the new agentic terminal capability this feels like a big enough feature to warrant a new release:
New features:
- Updated the system AI tool to allow the AI to send commands to a terminal window (subject to user approval) and to be able to query the status of terminal. This allows the AI to have full control of the terminal!
- When the AI backend gets a 200 OK connection response from the AI a new temporary "AI connected" message appears so the user can tell the AI is responding but not showing any messages (e.g. setting up a tool call). This also means conversation transcripts now enable between network analytics.
- Removed the "bookmark" functionality in the conversation tabs. While this was nice idea early in development it appears to be something almost no-one uses now because the AI can write files via the filesystem tool. Removing this significantly simplifies the code (over 300 lines removed).
- Added
grok-code-fast-1
support using the xAI backend.
Bug fixes:
- Delegating a task could trigger a previously-silent exception.
- If we edit text that matches an active search in an editor the editor will re-trigger the search so the search highlights and match counts are correct.
- If the user hits cancel on a conversation that's waiting on a tool approval this would leave the tool approval widget on the screen. Now this is cleaned up.
- File watching would not reliably stop when tabs were closed. This is now handled precisely, not lazily.
- Duplicating a file in the mindspace conversation view would not set the correct file extension.
Internal structure changes:
- Added a new
tools
directory and adependency_checker
tool. This checks that internal modules are not using dependencies that they shouldn't be using.