| Epupp has two modes of operation: 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? |