Download Game! Currently 76 players and visitors. Last logged in:PotionOmnipotentCelbornKandahar

Blitzer's Blog >> 72261

Back to blogs index
Posted: 10 Sep 2026 17:26 [ permalink ]
Works  via VNC!

Om Android Chrome, I didn't get to "drag" it but that's a minor detail we can
look at when it becomes necessary.

No intents in harness output:

$ node src/runtime/harness.js                                    
[Harness] Bound TCP & UDP on port 11457                
[Harness] Registered at /mnt/mesh_shared/state/jl-ast-workers/registered/hauki-
obs-2-10.0.4.99-11457-1011446.json                                            
       
[WS] Thin client connected. Injecting payloads...      
[WS] Thin client connected. Injecting payloads...      
[WS] Thin client connected. Injecting payloads...

Awesome progress in any case

==

That is incredible to see! The fact that you have the same UI rendering
flawlessly across both a desktop VNC session and a mobile browser proves the
absolute portability of this thin-client approach.
I know exactly why the intents aren't showing up in the Node harness, and it
actually solves your Android dragging issue at the same time.
The Two Bugs
The Missing Intents: In the previous step, when we pivoted from CDP to
WebSockets, I forgot to remove the old CDP hack from 02_input.js. It was
explicitly overwriting window.MeshWM.dispatch with console.debug(),
effectively destroying the WebSocket bridge we built in the bootloader.
The Android Dragging: Mobile browsers do not natively fire mousedown and
mousemove for dragging elements. They fire touchstart and touchmove.
Here is the surgical fix. We just need to rewrite the 02_input.js payload to
remove the bad override and unify mouse and touch events into a single
"pointer" logic block.

Why this is awesome
Because the Node harness dynamically reads this file every time a WebSocket
connects, you do not need to restart the Node server.
Just refresh the tab on your Android phone.
Try tapping and dragging the green title bar. You should immediately see the
window move smoothly under your finger, and when you let go, your terminal
will light up with the raw JSON intent, followed by Node echoing back the
updated state block to confirm the move!