Will McGugan
@willmcgugan.bsky.social
CEO / Founder of https://textualize.io Hyperborean Python expert, author, humanist, husband, sometimes wildlife photographer. Carbonara aficionado. He/him.
Put some final touches to Toad's permission request screen.
When the agent has an update, it pops this screen up. You can review the diffs in unified or split view, then decide if you want to accept or reject the changes.
Watch this space!
When the agent has an update, it pops this screen up. You can review the diffs in unified or split view, then decide if you want to accept or reject the changes.
Watch this space!
September 22, 2025 at 9:05 PM
Put some final touches to Toad's permission request screen.
When the agent has an update, it pops this screen up. You can review the diffs in unified or split view, then decide if you want to accept or reject the changes.
Watch this space!
When the agent has an update, it pops this screen up. You can review the diffs in unified or split view, then decide if you want to accept or reject the changes.
Watch this space!
I posted about Toad, my agentic coding interface for the terminal. Going to make this a regular-ish thing until the app is solid enough to share.
willmcgugan.github.io/toad-report-1/
willmcgugan.github.io/toad-report-1/
August 28, 2025 at 5:11 PM
I posted about Toad, my agentic coding interface for the terminal. Going to make this a regular-ish thing until the app is solid enough to share.
willmcgugan.github.io/toad-report-1/
willmcgugan.github.io/toad-report-1/
Screenshot of Toad, my agentic coding UI.
August 26, 2025 at 5:48 PM
Screenshot of Toad, my agentic coding UI.
I've been working on a new fuzzy search file picker for Toad (my terminal AI interface).
It is similar to the other terminal based agentic coding tools, but I want to address a few UX issues, and hopefully make it prettier in the process!
It is similar to the other terminal based agentic coding tools, but I want to address a few UX issues, and hopefully make it prettier in the process!
August 25, 2025 at 9:07 PM
I've been working on a new fuzzy search file picker for Toad (my terminal AI interface).
It is similar to the other terminal based agentic coding tools, but I want to address a few UX issues, and hopefully make it prettier in the process!
It is similar to the other terminal based agentic coding tools, but I want to address a few UX issues, and hopefully make it prettier in the process!
I don't see many people customizing Rich tables. And it saddens me!
June 24, 2025 at 8:43 AM
I don't see many people customizing Rich tables. And it saddens me!
I have it configured to use MyPy. The error message seem to confirm this -- unless its lying!
June 23, 2025 at 11:44 AM
I have it configured to use MyPy. The error message seem to confirm this -- unless its lying!
This stuff. Not the hottest. But lots of flavour.
June 12, 2025 at 5:28 PM
This stuff. Not the hottest. But lots of flavour.
Trying to get back in shape. Started by walking to Arthur’s seat. Maybe next week I’ll walk up it.
June 2, 2025 at 11:04 AM
Trying to get back in shape. Started by walking to Arthur’s seat. Maybe next week I’ll walk up it.
Finally found time to look in to adding "Exception Groups" to Rich.
Based on work by @andreas.backx.org
Based on work by @andreas.backx.org
March 29, 2025 at 1:49 PM
Finally found time to look in to adding "Exception Groups" to Rich.
Based on work by @andreas.backx.org
Based on work by @andreas.backx.org
Pythonistas, if you haven't already done this, give it a try! Run this in your terminal:
uvx textual-demo
Requires UV docs.astral.sh/uv/
uvx textual-demo
Requires UV docs.astral.sh/uv/
February 26, 2025 at 9:10 PM
Pythonistas, if you haven't already done this, give it a try! Run this in your terminal:
uvx textual-demo
Requires UV docs.astral.sh/uv/
uvx textual-demo
Requires UV docs.astral.sh/uv/
Textual inherited its markup from Rich, and suffers from the same gotcha.
Consider this:
f"Hello [b]{name}[/b]"
If 'name' contains markup tags like [blink], then they will be treated like tags.
Textual's new Content markup fixes this.
Consider this:
f"Hello [b]{name}[/b]"
If 'name' contains markup tags like [blink], then they will be treated like tags.
Textual's new Content markup fixes this.
February 4, 2025 at 12:53 PM
Textual inherited its markup from Rich, and suffers from the same gotcha.
Consider this:
f"Hello [b]{name}[/b]"
If 'name' contains markup tags like [blink], then they will be treated like tags.
Textual's new Content markup fixes this.
Consider this:
f"Hello [b]{name}[/b]"
If 'name' contains markup tags like [blink], then they will be treated like tags.
Textual's new Content markup fixes this.
This snippet of code represents the best bang for your buck when it comes to profiling Python code.
@timer("is this slow")
def my_func():
...
with timer("is this slow"):
my_func()
Replace the log with a print for other projects.
Feels almost stdlib worthy...
@timer("is this slow")
def my_func():
...
with timer("is this slow"):
my_func()
Replace the log with a print for other projects.
Feels almost stdlib worthy...
January 23, 2025 at 11:56 AM
This snippet of code represents the best bang for your buck when it comes to profiling Python code.
@timer("is this slow")
def my_func():
...
with timer("is this slow"):
my_func()
Replace the log with a print for other projects.
Feels almost stdlib worthy...
@timer("is this slow")
def my_func():
...
with timer("is this slow"):
my_func()
Replace the log with a print for other projects.
Feels almost stdlib worthy...
Did you know you can play a "game" on the Textualize website??
Go to textual.textualize.io
Scroll down.
Click Start
Click the app
Press G
Go to textual.textualize.io
Scroll down.
Click Start
Click the app
Press G
January 10, 2025 at 6:20 PM
Did you know you can play a "game" on the Textualize website??
Go to textual.textualize.io
Scroll down.
Click Start
Click the app
Press G
Go to textual.textualize.io
Scroll down.
Click Start
Click the app
Press G
I do believe I nailed text selection in Textual.
Coming to the next version...
Coming to the next version...
January 6, 2025 at 5:36 PM
I do believe I nailed text selection in Textual.
Coming to the next version...
Coming to the next version...
Some widgets are a special case when it comes to text selection.
The Digits widget displays a number with box characters. You can select digits as a whole, and when you copy them you get a readable string, and not a jumble of funny characters.
The Digits widget displays a number with box characters. You can select digits as a whole, and when you copy them you get a readable string, and not a jumble of funny characters.
January 3, 2025 at 3:49 PM
Some widgets are a special case when it comes to text selection.
The Digits widget displays a number with box characters. You can select digits as a whole, and when you copy them you get a readable string, and not a jumble of funny characters.
The Digits widget displays a number with box characters. You can select digits as a whole, and when you copy them you get a readable string, and not a jumble of funny characters.
Arbitrary text selection is working in Textual.
This was an *ordeal* to get working. A few more gray hairs in my beard from this PR.
This was an *ordeal* to get working. A few more gray hairs in my beard from this PR.
January 3, 2025 at 9:31 AM
Arbitrary text selection is working in Textual.
This was an *ordeal* to get working. A few more gray hairs in my beard from this PR.
This was an *ordeal* to get working. A few more gray hairs in my beard from this PR.
Selecting arbitrary text is a surprisingly gnarly problem.
Here it is working in Textual with the simple case of two vertical stacked widgets.
Here it is working in Textual with the simple case of two vertical stacked widgets.
December 21, 2024 at 2:14 PM
Selecting arbitrary text is a surprisingly gnarly problem.
Here it is working in Textual with the simple case of two vertical stacked widgets.
Here it is working in Textual with the simple case of two vertical stacked widgets.
OK fine.
It’s actually quite good.
It’s actually quite good.
December 13, 2024 at 2:51 PM
OK fine.
It’s actually quite good.
It’s actually quite good.
If you aren't near a terminal, you can try the demo out online.
textual-web.io/textualize/d...
If you are near a terminal, give this a shot:
uvx --python 3.12 textual-demo
Requires @astral_sh 's uv
textual-web.io/textualize/d...
If you are near a terminal, give this a shot:
uvx --python 3.12 textual-demo
Requires @astral_sh 's uv
December 12, 2024 at 3:27 PM
If you aren't near a terminal, you can try the demo out online.
textual-web.io/textualize/d...
If you are near a terminal, give this a shot:
uvx --python 3.12 textual-demo
Requires @astral_sh 's uv
textual-web.io/textualize/d...
If you are near a terminal, give this a shot:
uvx --python 3.12 textual-demo
Requires @astral_sh 's uv
Wanted to share some screenshot of a Textual app currently in development, because I think it is gorgeous.
Lots more on our Discord server!
discord.gg/Enf6Z3qhVr
Lots more on our Discord server!
discord.gg/Enf6Z3qhVr
November 28, 2024 at 7:58 PM
Wanted to share some screenshot of a Textual app currently in development, because I think it is gorgeous.
Lots more on our Discord server!
discord.gg/Enf6Z3qhVr
Lots more on our Discord server!
discord.gg/Enf6Z3qhVr
Would you like to try out this game in your terminal?
Of course you would!
Click here 👇
github.com/Textualize/t...
Of course you would!
Click here 👇
github.com/Textualize/t...
November 26, 2024 at 11:55 AM
Would you like to try out this game in your terminal?
Of course you would!
Click here 👇
github.com/Textualize/t...
Of course you would!
Click here 👇
github.com/Textualize/t...
Final (hopefully) edit of this image for the Textual docs.
November 26, 2024 at 10:40 AM
Final (hopefully) edit of this image for the Textual docs.