-- Leo's gemini proxy
-- Connecting to auragem.letz.dev:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini; lang=en
Near the end of March, I started a new series of posts talking about the design choices of Gemini (and Gopher), which you can find here:
However, I stopped just before the start of April because I was working on an entirely new project - a new graphical browser for gemini, nex, spartan, and scroll. This is a project I've been wanting to take up for the past two years. About two years ago I wrote a custom GUI library in the Odin programming language. However, I was unable to use it for browsers and networking because Odin lacked a TLS/SSL library.
When I stopped the posts in late March is when I started work on porting this GUI library over to Golang. I then started developing this new browser, which was at the time called "scroll-gui-golang". This process of porting the GUI library over and making sure I had the GUI elements required to start work on the browser took a lot of time, but I got it done.
So with this, I officially introduce the alpha of Profectus. You can view more information about Profectus and download it via Gemini here:
And here is the source-code, licensed MIT:
Here are some images of the browser running:
Multiple protocols: Scroll, Gemini, Nex (Spartan coming soon); Filetype detection when using the Nex protocol
Multiple document formats: Markup - gemtext, scrolltext, nex; Images - png, jpeg, webp, bmp, ico, cur, tiff, xcf, svg, and partial gif support (no animation)
Basic navigation: Back, forward, refresh, homepage
Streaming audio: Ogg Vorbis, Flac, Mp3, and Wav; Streams in background; continue browsing while it plays.
Streaming video: Pipes data into mpv, ffplay, or vlc; Streams in background (continue browsing while it plays).
Download YouTube videos from YT links: Pipes into mpv, ffplay, or vlc; Selects best quality with audio
Decodes various IANA charsets for textfiles: Uses charset mimetype parameter if available; Otherwise, tries to auto-detect the charset if no charset parameter specified (or via Nex protocol)
The current alpha state of profectus was built to be the most basic functional browser, which means there are a lot of missing features and probably bugs too. I have many features and bug fixes planned, which you can see below. The most foundational features will go in the beta, the commonly expected browser features will be released with 1.0, and 1.1 and 1.2 will include mostly quality of life updates and features.
Scroll Protocol: abstracts, metadata
Music Player: volume, mute, pause, play, metadata
Spartan Protocol support
Basic Markdown support
Up and root navigation buttons
UI scaling
TOFU verification
Tabs
Bookmarks and History
Sibling links
Cert management
AsciiDoc support
UI Animations
Improved textbox input
Gemsub feeds and Atom feeds
Theming
Search via addressbar
File upload via Titan and Spartan
Fonts settings
Emojis, Harfbuzz, and Bidi improvements
-- Response ended
-- Page fetched on Mon May 6 10:43:44 2024