Hi all,


James Ladd here. Some of you may remember me from Redline Smalltalk, a Smalltalk

for the JVM, years back. I've been away from the community for a while, but

Smalltalk has crept back into what I'm building, and I'd like to share it with  

people who'll understand why that makes me happy.

                                                                                

I've been building Taskriz, a way for AI agents to ask people things: approve an

invoice, pick a delivery date, send a photo. Instead of sending text, the agent 

sends Smalltalk source that builds a small UI. The source arrives on the

person's phone or computer, gets evaluated in a sandbox, and a button sends the 

answer back. For example:

                                                                                

  | colour |

  colour := SegmentedControlMorph new label: 'Colour';                          

    segments: #('Red' 'Green' 'Blue'); selected: 'Green'.

  ScreenMorph new title: 'Favourite Colour';                                    

    addMorph: (ListMorph new style: #insetGrouped; addMorph: colour; yourself);

    ...                                                                         


The Morphs are modelled on Pharo's Morphic, which will be obvious from the  addMorph:s and yourselfs. 

The big difference is that they don't draw themselves. 

The morph tree is turned into a UI description, and each platform renders it natively: in a browser, in a terminal, and in iPhone and Android apps. 

The set of Morphs follows Apple's UIKit (a Morph per control) rather than Pharo's, so that the result feels native on a phone.


To be clear about what it isn't: there's no image, no IDE and no bytecode. 

It's a small interpreter written in Dart and compiled to WebAssembly (WasmGC). 

It reads source into message sends and interprets them, and most of the kernel is written in Smalltalk. 

It's a long way from Pharo, but it's been a joy to see an AI agent write cascades.


Things I'd genuinely like this list's opinion on:


- The Morph API. I've stuck close to Pharo's Morphic idioms so that it feels familiar. Would Spec's style have been a better model for UIs described once and rendered in many places?


- Liveness. Dropping "everything is live and draws itself" was the price of native rendering. Has anyone here tried something similar, such as Morphic as a description that gets rendered elsewhere, and what did you miss?


- Pharo as the agent. The agent side is a plain JSON API, so a Pharo image could send requests and get answers back with Zinc. If anyone fancies trying that, I'd love to hear how it goes, and I'll help.


If you want to look closer, the developer docs and more examples are at https://www.taskriz.com/developers/ and every Morph is live at https://www.taskriz.com/morphcatalog/


Thanks for reading. It's good to be back among Smalltalkers.


- James