Please sign in to access this page

csd4ni3l-browser

csd4ni3l-browser

9 devlogs
29h 20m
•  Ship certified
Created by csd4ni3l

A browser from scratch in Python and the arcade module which uses OpenGL. I followed the tutorial from browser.engineering and ported it from Tkinter to Arcade/pyglet. To try it, enter https://browser.engineering/styles.html or https://example.com and most sites dont work because there is no way anyone is writing a CSS and Javascript engine from scratch. Some Javascript will be supported, but not much. The URL i linked is what works the best and shows off the most about the browser.

Timeline

Ship 3

1 payout of shell 119.0 shells

csd4ni3l

10 days ago

csd4ni3l Covers 2 devlogs

I fixed crashing if a click happened before rendering, fixed crashing if inline css didnt have text children, fixed css loading issues with weird urls that include parameters, fixed font size issues with font sizes that are rem and fixed text merging on Windows cause space width is 0. I made clicking on links change search bar text, made it so https:// is added if no scheme is found in the address bar, added tab support by having separate renderers and http clients for each tab, made link clicking open new tabs. I alos added better default headers, fixed style elements showing as text, fixed crash if there are no nodes but needs_render is True, and fixed view-source scheme not working by converting from parsed html cache to simple html caching. So much stuff i havent made a devlog about but i had to fix to get the first ship done, and then now i finally have tab support which was easy to implement but its a great feature!

Fix SSL not working by using certifi to find them, I added css caching which was pretty easy. I adapted to LineLayout and Textlayout instead of BlockLayout placing texts. I added link support, but no tab support currently. I added a resolve_url function which was needed to resolve the link urls, and css urls. The program now caches name to color values and space widths for fonts. And i fixed a bug crashing if font doesnt exist that is on the webpage.

Ship 2

1 payout of shell 49.0 shells

csd4ni3l

21 days ago

csd4ni3l Covers 3 devlogs

Fixed EXE crashing which was due to a too new version of a library.

Update attachment

I fixed everything. I just had to multiply the ascent and descent of the font's more and now the background is adjusted to be great as well and it looks so nice! I am really happy i figured it out. Btw, the browser's default CSS will be editable in assets/css/browser.css if you dont want to highlight pre elements or add more css.

Something is very off currently but I worked on CSS styling that automatically layouts HTTP client that gathers the remote CSS and also parses inline CSS. I also worked on better layouting because of the CSS display value. I have added the background color rects to finish the layout tutorial, but currently they are very off. I have worked on faster speeds due to less labels.

Update attachment

Ship 1

1 payout of shell 111.0 shells

csd4ni3l

26 days ago

csd4ni3l Covers 4 devlogs

Fix scrolling, Github action, and requirements.txt

Implemented proper layouting by the tutorial. I made resizing work, i switched to pyglet for the renderer for speed, made emojis work, fixed an issue with caching not working and the project is now on Github!

I implemented my own scrolling and better positioning. I fixed the text being too close or too far from eachother. I implemented implicit tags by the tutorial. I started to work on http caching. Also, it turns out that i have to figure something out for text layouting because having thousands of labels for each word is way too slow. You can see that in the video. Hopefully the tutorial will cover line conversion which i can port to Arcade.

I have a search bar, scrollable renderer, file opening, source viewing, html parsing ,i can know tags for styling, i have HTTPS done, redirects done, but text placing has problems for some reason.. I will try to follow the tutorial but some stuff is hard to port from Tkinter to Arcade.

Update attachment