FixBrowser
Blog
FixBrowser 0.2 - GitHub, SVG, audio/video, Imgur, tracking of unread comments (2025/01/25)
FixBrowser is a lightweight web browser created from scratch. It intentionally doesn't support JavaScript to make things faster and much less resource intensive. Instead it contains an updated set of scripts that fix and improve various websites.
This release covers mostly changes to FixProxy which allows to use the "backend" part of the browser in a regular browser which is used for layout/rendering.
This provides the ability to browse the web without JavaScript with the fix scripts applied. It also uses a whitelist so you can be sure that no 3rd party tracking can happen.
I've been using FixProxy for multiple years as my main way of web browsing with good results. It allows to also easily mix direct usage of the websites with access through FixProxy for each individual tab.
More information and download links are on the homepage.
Change log
- Added support for SVG, WebP and AVIF image formats in FixProxy
- Added showing of URL for using FixProxy
- Added support for <audio> and <video> tags in FixProxy
- Added support for downloading of files in FixProxy
- Added data store for scripts
- Added support for Haiku OS
- Changed scripts to use classes
- Disabled Unicode filtering for now
- Fixed handling of charset when replacing content in script handlers
- Fixed loading of pages with replaced content from script handlers
- Fixed matching of CSS class selectors
- Fixed merging of empty URLs or containing just fragment part
- Fixed compatibility with Windows 2000
- [imgur] Added support for viewing of images and videos
- [reddit] Added support for viewing of share links
- [reddit] Removed signup banner and obsolete adjustments
- [reddit] Added tracking of unread comments
- [hackernews] Added tracking of unread comments
- [hackernews] Added automatic expansion of hidden comments
GitHub mirror
I've created an internal tool for automatic conversion of commits from Monotone repository to Git. This tool exports just the public files and allows to review and adjust the commits before converting it to Git.
This allows to merge commits (eg. multiple stages of refactoring), to add files not present in the original repository (like dependencies to make it easier for the developers and having parity with the source releases) and other usages.
The GitHub mirror is available here. You can also open pull requests to contribute, the details are described on the GitHub page.
SVG support
FixProxy originally lacked support for SVG because the format is a very complex one and supports loading of other resources and even scripting. This is not good to directly expose to the user for privacy/security reasons.
Originally the idea was to create a full SVG parser and whitelist any such access to other resources and disabling of scripts like it's done for HTML/CSS. The specification is very complex though so it was pushed for later.
However I've found a simpler way how to pass the SVG to the browser with the dangerous features disabled by using CSP (Content Security Policy) headers. This not only allows to securely display SVGs but also no modification is needed so when the user downloads the file it is in the original form which is preferrable.
Audio/Video support
FixProxy supports <audio> and <video> tags now. It adjusts them to always provide browser controls and disables autoplay/preloading. Making it unobtrusive to use.
Imgur implementation
Imgur is a popular image/video sharing service. However it requires JavaScript to function. For such websites a reimplementation is required, this is achieved by observing which API calls are done (Firefox/Chrome developer tools are great for this) and the functionality is recreated from scratch.
The result is that we now have a simple HTML output that is fast to load and is lightweight. Currently only a basic functionality is present (title page with top viral images/videos, showing of albums and individual images/videos).
It shows the images without any extra downloads for custom fonts, heavy JavaScripts, etc. To retrieve the API key that is needed it must download a single 1.8MB JS file once (or when it's changed) but the key is then cached.
Later this will be expanded to include information about users and the comment section to allow better following of the content.
This will be similar for other such websites, a basic functionality at first, then more features in multiple stages.
Tracking of unread comments
Websites like Reddit and Hacker News provide ability to post links to websites and comment on them. However the discussions are hard to track, even when logged in.
On Reddit you get messages when someone replies to your post/comment, however there is no way to be notified about other comments under that post. In Hacker News case I've not found any way to track messages.
The fix scripts in FixProxy adds a feature to track such new comments, no account required. It saves the date/time of the last comment and the number of comments so it can then provide a way to highlight the new comments and having a simple way to navigate to them.
This makes the discussions more engaging as you don't miss anything, I do plan to extend this feature to other websites and comment systems.
There is a slight downside that the information about visited discussions is now saved to the disk, which can be a privacy issue. The information expires after 30 days (I guess a shorter time will be better as most discussions cease to be active after a few days on these websites). The feature will be configurable in the future.
Data store
The data store for storing information about the discussions (and other stuff in the future) is implemented as a JSON file with a good structure. While this is less efficent than a database or other binary format it allows users to see what exactly is stored and delete or change it as needed.
It is expected that the data store will be used for smaller amounts of data so it shouldn't be that big. It is possible to split the file into multiple ones if this becomes an issue in the future.
A special care was taken to first write it to a temporary file when updating and then atomically replace the original file. This makes sure that an error during writing (such as disk full) doesn't result in a broken file. Durability against power losses will be handled by backuping the file to avoid the expensive synchronous write after every change.
Haiku OS
Added support for Haiku OS. There are still some minor problems with input (like sometimes you need to click to get focus for scrolling, etc.) but otherwise it works well. FixProxy works without issues.
Fundraising
The project needs your help. For this initial round €5000 will be needed to be raised. It will allow me to work on FixBrowser to make it usable for actual browsing and also implement some of the additional areas based on a vote. The work will take about a year, expecting major improvements within about 6 months.
Comments
No comments.
Add comment
The website was designed for modern browsers and IE4+.