Restyle and reskin webpages with a powerful set of developer tools.
Used OpenAI Codex for coding and debugging
Restyle and reskin webpages with a powerful set of developer tools.
Used OpenAI Codex for coding and debugging
LockIn Week 2
I had released v0.3.9, but found like 10 more bugs after releasing and decided to take it down.
Unfortunately due to the LockIn sidequest I basically have to ship right now.
So use v0.3.8, itās been pretty stable so far. If you really want to try out v0.3.9, you can still get it from the latest commit on Github Actions.
If you want to see what I did for the upcoming v0.3.9 release, you can still do so here.
Did a huge storage refactor.
The main problem with the current code is that upon any action that changes options, a callback must be called to update the field in storage. A similar callback must be implemented for each option upon load. This process is quite tedious, and it also makes the codebase littered with storage calls.
I fixed this by using one central appState variable that defines a schema for the save format, and used a $effect to sync the storage whenever certain variables in appState changed.
But this kinda broke everything, so I had to go around fixing bugs for multiple hours.
Anyway, if youāre reading this, hereās a short userscript to add spacing between the paragraphs of a devlog:
import { pa, pn, pq, ps, pt, pv } from "@page-proxy/pp";
// ==Page Proxy==
// @title Add space after paragraph
// @website https://*.hackclub.com/projects/*
// @description Add space after paragraph to devlogs and ship messages
// @author orangishcat
// @grant run-on-page-load
// ==/Page Proxy==
// ==Selectors==
ps.injectCSS(`
div.post__body p
{
margin: 0.85rem 0;
}
div.post__body li
{
margin: 0.5rem 0;
}
`);
// ==/Selectors==
And here it is in Tampermonkey format:
// ==UserScript==
// @name Add space after paragraph
// @match https://*.hackclub.com/projects/*
// @description Add space after paragraph to devlogs and ship messages
// @version 0.1.0
// @author orangishcat
// @run-at document-start
// @require https://orangishcat.github.io/page-proxy/pp/pp.min.js
// ==/UserScript==
// ==Selectors==
ps.injectCSS(`
div.post__body p
{
margin: 0.85rem 0;
}
div.post__body li
{
margin: 0.5rem 0;
}
`);
// ==/Selectors==
Iāve attached a side-by-side comparison.(left = before, right = after).
Log in to leave a comment
Added a settings tool panel.
This controls settings for scripts running on the current tab (top) and also extension settings (bottom). Currently the only extension setting is showing the help tool. Since Iām running out of space and the help tool isnāt all that useful once youāve used the extension for more than like 5 minutes, itās the first one to be able to be turned off.
The keybinds are now a bit weird though. Originally it was Shift+1 to Shift+5 from left to right, and now it still is, but the help tool has no keybind since it canāt be turned off, and shifting the keybinds based on whether the help tool appears or not would be a bad idea.
I also want to add some labels differentiating tab settings vs extension settings, but right now I still havenāt figured out how to make them look good.
I also added a @version metadata field that is preserved upon Tampermonkey export. Defaults to 0.1.0 if not present.
Log in to leave a comment
LockIn was definitely huge motivation for me to work on my projects. I probably wouldnāt have spent a single hour on this project if it wasnāt for the sidequest.
Since the last ship, I released versions v0.3.5 to v0.3.8, bringing some MUCH needed QOL changes. Mainly providing support for something that I should have provided a long time ago: multiple scripts running on the same page.
Previously, two scripts matching the same webpage would clash as although the extension would run both scripts, but it would only load one of the scripts in the sidepanel, meaning youād have to switch to a different tab to edit the other one. Now there is just a nice dropdown for easy switching.
So this is the sort of feature I should have implemented ages ago. Lesson is basically that I need to think through my features more thoroughly and get my priorities straight.
Also, you can export scripts into Tampermonkey format and CSS stylesheet format now! So there is partial support for both Tampermonkey and Stylus now.
Iām also messing around with posting stuff to websites like dev.to to share the project. The extension should be polished enough by now, so hopefully I will have the courage to post on Reddit soon :)
Released v0.3.8 today. Just some polish and QOL features.
terser and css-tree) to minify exported scriptsLog in to leave a comment
I released v0.3.7, making some convenient API changes, bug fixes, and most importantly, finally getting export to Tampermonkey to work. The current setup is to get Tampermonkey to load the pp library from a url hosted on the demo page for my extension.
The pp library is built into JS via a script which I run manually every time I release a version, and it literally just injects globals into the script. The setup is mildly cursed but I canāt think of anything better right now. Surely this wonāt just remain in the codebase forever, just like all my other temporary fixesā¦
Look! Iām running a Page Proxy script in Tampermonkey!
Log in to leave a comment
Painfully updated documentation š
This involved manually screenshotting each component and cropping them and filling the unwanted edges in with transparency.
And no, āCapture node screenshotā in DevTools does not set the contents behind the node to transparent, so the background is captured inside of the screenshot. And it doesnāt work in an extensionās sidepanel either.
Log in to leave a comment
Did a lot of polish to the website. Also added a nice undo button that pops from the recording stack and selects the element that was selected in the previous stack.
Log in to leave a comment
Finally added support for multiple scripts running on the same tab! Previously, the editor would just load the script that was created earlier, which was really annoying as you would have to navigate to a different tab to edit another script. Now there is just a nice dropdown.
Of course, I also updated the documentation and fixed bugs, as usual.
Log in to leave a comment
Added a feature list to the demo! (which took forever, as usual.) Also made a lot of fixes to the website UI, enforcing consistent margins and padding and whatnot, also cleaning up some of the website code.
Log in to leave a comment
The main feature of this ship is the most important tool of the extension, the record tool! It records your actions done with the select tool so you can easily convert your actions to code, speeding up the userscript creation process by a lot.
I made a demo for the landing page. It took forever, but hopefully it looks cool?
I updated the documentation, it should be much more polished now.
I also fixed a ton of bugs. The browser-specific ones were really annoying. Guess thatās why I have to test every browser.
I finally have a landing page demo now. It took forever but hopefully it was worth it?
Log in to leave a comment
Recording tool, probably the most important of them all. Allows you to convert actions you would normally do in DevTools into code.
Also reorganized the entire project, splitting many files.
Log in to leave a comment
Lots and lots of polishing and fixes. Thereās much more documentation and help links now, so hopefully the product will be a lot easier to use.
Log in to leave a comment
Made a few tweaks to documentation and UI.
Log in to leave a comment
First ship! This āsimpleā project ended up taking 40 hours.
Features are limited and the landing page is kinda empty, but I needed to get an initial ship out.
I built a Tampermonkey alternative that can proxy and inject JS and CSS into any website.
The main difference is that thereās a TON of GUI tools plus a nice API to make your life easier. No more copying selectors and managing them; the API can handle all that already.
This is my second attempt at making a website/web-based product. I actually knew what I was doing this time, which is nice.
This project is far from complete, so donāt hesitate to report issues or make suggestions!
I worked on documentation, export tool, demo website, and lots more; mostly polishing and stuff for the past few days.
This was supposed to be an easy project, and now I have 40 hours on itā¦
Just a few more final tests, and Iāll get a first ship out to get some payout. Features are limited but I donāt have time for everything.
Log in to leave a comment
The extension is mostly ready for a first ship. Also Monaco editor yay!
The website still has a long way to go, thoughā¦
Log in to leave a comment
UI implementation is finally done, I can finally begin implementing functionality
Only took nearly 20 hours
Log in to leave a comment
I wanted most of the functionality to be in the website, but CORS just doesnāt work like that. Oh well, I guess Iām developing a Chrome/Firefox extension now (using WXT).
Hereās the design.
Log in to leave a comment
Main app layout implemented and finalized, would look something like this
Log in to leave a comment
Designed the main app in Figma. Progress is slow, but I hope Iāll get better at it.
Designing is actually kinda fun. Previously I made websites by jumping straight into the coding without planning, and the end result was not what I had imagined at all. Using Figma though, this design already looks way better than what I had originally planned, and unlike before, I am actually excited this time to implement this design in code.
Log in to leave a comment
Havenāt written much code yet, but I have created some basic wireframes and components
Log in to leave a comment