1. *Live REPL connection from your editor to the web page*, letting you inspect and modify the page on the fly, with or without the assistance of an AI agent.
2. *Userscripts*: Somewhat Tampermonkey style (I love Tampermonkey!).
The two form a powerful pair. The live REPL connection, while happily supporting one-off changes or data extractions, is also a very efficient and fun means to interactively develop userscripts. The buzzword here is Interactive Programming (aka REPL-driven development).
I started to build Epupp because I wanted the AI agent to help me solve a problem with printing a very tall receipt cleanly from Gmail. After that success, I realized it was generally very useful so I made an extension out of it. I then also noticed that I wanted to be able to save my live tampers as userscripts.
Epupp's scripting language is ClojureScript, the SCI kind. This is what makes the live tampering possible.
I have probably gotten a lot of things wrong with this first version. I am entering feedback-driven mode now. Though, unless something is terribly wrong with the API, I intend to keep it stable. In true Clojure tradition, I do not want to break my callers.
Epupp is free and open source, available at the Chrome and Firefox extension stores.
Try it out, please. I have created a template project which I hope can help with getting started + be your base for using Epupp.
* https://github.com/PEZ/my-epupp-hq
Security:
* Epupp enables a userscript to do just about anything on web page, including all the dangerous things. The gate is the user, scrutinizing userscripts and userscript authors.
* The REPL opens a websocket to Epupp's REPL. Again the user is responsible for what connects to that websocket.
* On a whitelist of domains, userscripts can install and modify userscripts. This enables a web userscript installer to be active on GitHub, GitLab and Codeberg. Userscripts can not, however, list or read userscripts from Epupp.
* The REPL can install, modify, list and read userscripts. But only if the user enables this in Epupp after establishing the REPL connection.
Demo videos:
* Copilot builds the Isolated Element Printer script, using interactive programming: https://youtu.be/CuEWN5yYVa8
* LinkedIn Squirrel, a userscript that keeps posts you engage with in immediate reach: https://youtu.be/yU6rsjoR7HQ
On the roadmap:
1. Fix issues when used with Firefox
2. Fix (many more) issues with Safari
3. Mobile browser support
WDYT, HN?