June 17, 2025
Fixed some CORS errors.
Fixed an error where JSON was being read incorrectly.
I have copied/converted the code over from the old repository into the new react based project. Now to make it look better.
This is a website to provide recommendations for books based on previously read books. It is powered by Gemini. I'm continuing it now, 5 months later and improving it. I am converting it to React and making some improvements.
I made the toggles save their state when changed using localstorage.
I've got basic toggles setup, now to make them save their state.
A npm package for React websites to create a settings page with toggles and input fields.
To be honest, that took far too long. 4 hours and 20 minutes for a simple feature is ridiculous. It's fine though because the feature is quite nice. Thanks to Jim Dinias for the idea, now that I finally understand it.
I added that feature so that you can pause being able to edit settings, and block/unblock websites. Unfortunately, I misread Jim Dinias' suggestion and coded the wrong feature. Anyway I still think this is a cool feature, and I'll probably code Jim's feature soon. I think I also created a bug, so I'll fix that too.
I have converted all my javascript code to typescript, so hopefully no annoying type related errors now. I also updated the Firefox addon listing, and published a github package.
Thanks to Jim Dinias for the idea, I am going to add a feature where you cannot modify settings for some amount of time.
I noticed I should probably keep consistency between the modules in my project, so I have converted the three remaining modules to mjs files.
I've gotten rid of all of those unnecessary css rulesets. Thankfully that didn't take too long. What I realised when I was doing this was that I never created a way of accessing the statistics page, so I added a button to the popup to access that too. I'm going to make that sort by times blocked soon.
So I was making the transition between light and dark and then I realised that I didn't need to do it in this way at all, and the new way is much more compact and useful. In hindsight I don't know why I thought this was necessary. So the way I was doing it before was:
`.className {
transition: background 0.3s;
}
:root.light-theme .className {
background: var(--background);
}
:root.dark-theme .className {
background: var(--background);
}`
But now I know that I only need this:
.className {
transition: background 0.3s;
background: var(--background);
}
Also I'm not sure if this will work properly with the markdown so it looks like code. Anyway I wrote 22 css rulesets like this, so I'm gonna fix them now....
Added a dark and light theme switch button to the popup button. I think I'll update the css so it fades between the two when switched.
Just some bug fixes this time.
- I realised I was chaining two DOMContentLoaded event listeners, so the second wouldn't run and add the click event listeners to the black list and whitelist buttons.
- Fixed setting a password for the first time.
This was a long one, over 4 hours. I have added a password system so that you can't change any settings or unblock sites with out the password.
Another one of those only a few line changes (it was 2) that required far too long to find the problem and fix it.
I added that transition for theme changes to the settings page. Sorry for the double cursor in the recording, can't find many google screen recorders that I can install easily for arch linux arm64 on a macbook silicon.
I added a statistics pages to see what sites you've blocked. Also I found this really cool way to make the background transition from light to dark mode and vice versa.
This was a quick one. I realised that the logic for showing the advanced regex warning was backwards. Fixed that!
I finally wrote a README for my project.
I added a feature where you can import and export your settings to a file.
Yeah I kinda realised that having 13 files in the top level directory probably wasn't the best organisation, so I created some folders to store stuff.
I've added a button to the context menu to block the current webpage.
Now you can redirect yourself to a different page instead of the default one.
I've added a dark theme to the redirect page.
I added a little warning box that shows when advanced regex checking is enabled.
I've added a setting to check against an actual regex instead of my simplified version.
I have replaced the simple checking system with a very simplistic regex checking but only the wildcard () is checked (it is also replaced with '.' as that is regex for any amount of any character). I also added a simple help section below it.
Forgot to add a way of accessing settings last time, so now I have added a floating button in the popup.
I have added better dark and light theming, and the ability to disable website blocking for some amount of minutes.
I have finally added dark mode, but it doesn't look great. Oh well. Anyway I added a settings page to customise stuff like dark mode and temporary disabling the blocker.
Now I have added a whitelist feature so you can access specific sites even though the domain is blacklisted.
I have added a simple menu to add and remove the blocked websites, and also made it so that any prepended www. is removed when checking if the website should be blocked.
As of right now, there is only a simple redirect and it only works on example.com. My plan is now to add a simple menu on the click button to select the websites.
It's a Firefox add-on that blocks certain websites of your choice. ㅤ Installation: From the Firefox web store, or build from source. Building from source is more up to date, but I've updated the Firefox addon as of 2/7 for the ship. Features ㅤㅤ - Block with advanced or simple regex - Dark and Light mode - Disable Blocking - Redirect to custom page - Pause blocking for some time - Export settings to file - Whitelist specific websites
This was widely regarded as a great move by everyone.