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.

Imgur.com title page reimplementation using FixProxy (in Firefox)

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.

Highlighted comments on Reddit using FixProxy (in Firefox) Showing new comments in the submission list on Hacker News using FixProxy (in Firefox)

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.

FixBrowser 0.2 running on Haiku OS

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.

Please select additional areas that you wish to be implemented the most (read FAQ section for more information):







Extra suggestions (eg. what websites or features to support etc.):


E-mail: (optional, used solely for contacting you in relation to the donation)

Donation amount: (you will need to enter it again on PayPal website)



You can donate using PayPal account or debit/credit card (no PayPal account required).

Comments

No comments.

Add comment

Name:
Content:
Confirmation code:
 
  (type the letters shown in the picture)
 


The website was designed for modern browsers and IE4+.