Okay. Okay! The web browser I wrote today is now working! Except for the web browser part.
I will do the web browser part of the web browser tomorrow
This is not a joke, I am creating a command line browser (a la lynx, w3m, links) based on servo, which I am calling Cuervo because command-line servo. So far you can bring up a dialog box to enter a URL, choose to either enter a URL or abort, and if you launch with LANG=es the interface is in Spanish. This is actually not that bad for one day considering at the start of the day I literally just had the ratatui "popup" sample and nothing else!
Update 20 minutes after hitting MVP on my web browser frontend: My web browser frontend now supports Toki Pona
Hey… I'm writing a web browser… what user agent should I send. Like what is a good user agent that people would enjoy

I discovered there's a 🐦‍⬛ sequence which creates a black bird, like a raven, and I got really excited and put it in my startup message, and immediately discovered gnome-terminal displays 🐦‍⬛ as the Twitter logo. Boooooo

EDIT: This is fine actually https://infosec.exchange/@munin/113145193344126351

Fi, infosec-aspected 🏳️‍⚧️ (@[email protected])

@[email protected] amusing corvid lore: blue jays are also corvids, lol

Infosec Exchange
Anyway I guess this is day three of working on this project (non-contiguous) and I now have a ratatui text interface and a copy of Servo running in the same process! What? You wanted them to like… talk to each other? … … That sounds hard
Update wait wait no WAIT: My program now has ONE communication with servo. When the program quits, it now sends servo an EmbedderEvent::Quit event and gets back a EmbedderMsg::Shutdown, at which point it calls deinit() and completes the shutdown handshake. And this has tangible effects because if you DON'T do this servo crashes. So this actually feels like an extremely satisfying end to day three! I compiled in servo and did one proof of concept interaction with it (lifecycle management).

Okay, so cuervo (my web browser frontend) is now able to load a web page! Note carefully my wording. Although I have successfully directed servo to load a web page, and it did so, and I received back an event saying it did so (as verified by an event viewer in a little debug pane), I don't… display… the webpage.

This actually will be a *bit* hard in textmode. I'm going to have to locate the "Display Lists", which is what Servo munches the DOM into, and exfiltrate them out of the engine somehow.

Another good solution is if at this exact step in the process I get distracted for about 4-10 mo by a DIFFERENT hobby project and/or unusually absorbing video game, and in that interval the Servo project— shamed into action by my questions in their support zulip— implements a whole API for embedders to access the DOM directly. But I guess things are never that easy.
@mcc that would be perfect for writing scrapers
@mcc so it's closer to a lynx right now...
@mcc don't munch the dom unless you're prepared for the consequences
@turmoni I'm gonna munch with the dom!!!
@mcc
The easy (and bad) solution is http://caca.zoy.org/wiki/libcaca of course 😅
libcaca – Caca Labs

@mcc ooh, have fun. i spent a bit debugging similar stuff with steamvr's use of embedded chrome (and limits on the number of file handles).
@oliviaselenic I mean, it's not so odd in a program with multiple threads to need to coordinate shutting those down.
@mcc and yet.. this particular bug lived in steamvr for 5+ years until it finally caused a reproducible bug in fetching controller bindings