If it had not been for the jam I might not have worked on this browser re-invention project! Turns out the parts I thought out to be complex were simple, and the real challenge was dealing with Webkit quirks in PyQt. I would like to thank all the people from Discord for their ideas and feedback!
My initial goal was to go for a p2p browser. I implemented that partially. Do we really need forms and servers when you can just send a secure email on clicking a buy button ?
By far, the biggest surprise came from implementing transclusion from Xanadu. Both Xanadu and Literate programming (my previous project) share transclusion in common. Xanadu by Ted Nelson is the first two-way hyperlink system. WEB by Don Knuth is also a hypertext system, but for code. Needless to say, I will be working on this project in the future as well. Basic support for literate programming is implemented currently using jinja and yaml. Write all your code in yaml and extract it out. While it is doubtful I will invest 40+ years on this project like Ted or Don, I will try to be a Saul Goodman for literate programming :) As of now, you can use this project as a browser for your markdown notes, code snippets and task lists ... kinda like Gopher/Gemini.
The approach taken for reinventing the DOM and layout is also quite minimal. Everything is in YAML files that are served from a folder via HTTP in a single column. There's a
user_metadata.yaml file that holds some config and custom menu actions. The action will pipe the current file name to a script as a parameter. The main file for each site is
index.yaml and it acts as a sitemap. All the documents linked in the sitemap are opened at once, saving you the trouble of opening multiple tabs.