Haphaestus will be a web browser, built upon Rhapsode's infrastructure, specifically designed for use via TV remotes with minimal button presses. Aiming to show the great potential of a simpler, JavaScript-free web.
Unlike other smart TV browsers Haphaestus does not attempt to translate your TV remote input into mouse and keyboard events for the sake of any prescriptive (via JavaScript) behaviour of the webpages you're viewing. Instead treating the webpage as a static menu of links, with pagination in place of scrolling.
Goals
Simplicity
In an era where modern browsers have become incredribly complex in their persuit of turning a document publishing system into an application delivery platform, Haphaestus aims to be simpler & easier to adapt to your individual needs by focusing on the reading experience.
Privacy
By being willing break web compatibility Haphaestus can take its privacy protections to new heights. No trackers can run on it by design.
Modularity
Software developers will be able to pick up Haphaestus's individual components (collectively termed the Argonaut Stack) & use them for their own purposes.
Internationalization
Haphaestus aims to support as many written languages as possible, taking precedance over simplicity.
Accessibility
Haphaestus and its siblings aim to show that without websites prescribing how to achieve their communication ends, the exact same Web can be presented over practically any medium.
Components
Haphaestus is assembled out of multiple, independantly repurposable, Haskell modules:
Layout, paginate, & render paragraphs of text (in-progress)
Backgrounds & borders
Rich Layout
Navigate links
Webforms
Browser chrome
Bonus features
These plans are extremly rough, take with a huge grain of salt.
In more detail...
Rendering paragraphs
Intra-paragraph ("inline") layout [in-progress]
Customizable line-splitting [in-progress]
Font selection [done]
Unicode scripts/alphabets, emojis
Justification
Inter-paragraph ("block") layout [in-progress]
Bulletpoints & numbering for lists
Pagination (within & between paragraphs)
Text rendering (ideally hardware accelerated)
Inline-text will be implemented with the aid of FontConfig, HarfBuzz, & FreeType from GNOME's widely-used text rendering stack.
Backgrounds & borders
This would be hardware-accelerated with OpenGL & GLSL to avoid messier optimizations elsewhere, with a possible fallback to Pixman.
Background colours & gradients
Background images/textures
Borders
Rounded borders
Embedded resources, e.g. images
Shadows?
Background Filters?
Cycle between user- & alternative- styles
Text styling
Bidirectional text
Inline blocks
Rich Layout
Haskell's immutability would make it trivial to utilize all your CPU cores for webpage layout. The CSS position property will not be supported as its mostly used by webpages to harm their own legibility.
Grid layout
<table> layout
Multicolumn layout
Flexbox layout
Inline blocks
Floats?
Vertical text
Hyphenation
Ellipsization
Navigate Links
Extract navigation grid
Event handling
Make <table>s sortable
CSS4 States & <details>
Log tree-history
Allow navigating tree-history
Allow navigating timestamped history
Webforms
This would be implemented as a locally-run serverside webapp lowering webforms into hyperlinks the rest of Haphaestus can handle.
Hyperlink form controls
Parse webforms
Render selection menus
Render configurable keyboards
Text prediction
Render calendars
Cryptographic authentication
More form controls?
Browser chrome
This'll mostly be another locally-run serverside webapp serving as a root to the tree-history (described earlier), with a couple of its pages tied to dedicated TV remote buttons.