HackerTrans
TopNewTrendsCommentsPastAskShowJobs

jmadeano

no profile record

Submissions

Fixing Intermittent Auth Failures in Chrome Manifest V3

tweeks.io
2 points·by jmadeano·vor 5 Monaten·0 comments

Launch HN: Tweeks (YC W25) – Browser extension to deshittify the web

tweeks.io
351 points·by jmadeano·vor 8 Monaten·213 comments

comments

jmadeano
·vor 5 Monaten·discuss
I enjoyed the article, but I’m skeptical of the “democratize via hardware + networking” path. Most people won’t run a Pi, manage updates/backups, or debug home networking, and that’s fine (as you note).

But I do think we’re reaching a turning point on the software side. The barrier to building custom, personalized apps is trending toward 0. I’m not naive enough to think every grandma will suddenly start asking ChatGPT to “build me an app to do XYZ,” but with the right UX it can be implicit. Imagine you tell an assistant: “My doctor says my blood sugar is high. Research tips to reduce it.” -> it not only replies with tips, it also proactively builds a custom app (that you own and control) for tracking your blood sugar (measurements, meals, reminders, charts, etc.). You can edit it by describing changes (“add a weekly trend graph,” “don’t nag me after 8pm,” etc.).

This doesn’t fully solve your Big Co control issue (they own the flagship models today), but open-weight + local options keep improving. I'm hopeful we have a chance to tip the scales back toward co-owner and participant.
jmadeano
·vor 8 Monaten·discuss
Awesome! If you run into any other issues feel free to email me at [email protected] or join our discord server (https://www.tweeks.io/discord). Always looking for more feedback to improve :)
jmadeano
·vor 8 Monaten·discuss
Ah I see what happened. From those links, I can see the pattern for the script is *://news.ycombinator.com/item?id=* . Some browsers don't support the wildcard (*) in the query param, so it would be better if that match pattern was *://news.ycombinator.com/item* .

In other words, it isn't that the script does nothing, rather the script isn't actually being applied/running on the page. You can verify this by opening the extension on the page, going to Library tab, and seeing if the script appears in "Modifications for Current Page" or "Other Modifications"

I already updated the agent so that it will should no longer generate match tags like that. Try again and hopefully it should work (and let me know if not).

Thanks for the comment and sorry for the trouble!
jmadeano
·vor 8 Monaten·discuss
Glad you're enjoying it!

> how much effort did you put in to acquire it, and what made you decide to pursue it?

We originally started looking into it when we were in the B2B space. On our end, we already took security pretty seriously so checking all the boxes was low lift.
jmadeano
·vor 8 Monaten·discuss
> Thanks for replying. I wasn't expecting a reply since the thread was so popular and there were a bunch of comments :)

The only way you can build a product that people love is by talking to people, so I am doing my best to keep up with all the feedback here!

To your main question: Tampermonkey has >11M downloads, which seems like a lot but at the scale of YouTube, Facebook, etc. the impact is largely inconsequential. I could understand concern about truly policy violating scripts (spam content/requests, etc.) but much of what people seem to want so far is basic Quality of Life things that should already be a native option in the first place.

To me, ad blockers seem like they much more materially impact these sites, and though there is pushback (and setbacks like Manifest V3), ad blockers are still kicking. I don't love that the marketshare of chromium continues to climb, as that gives Google massive power over the future of the web, but I can't do much to solve that.

Who knows what the future holds, but for now I am just focused on enabling people to have more control over their browsing experience :)

> Again, loved the extension, and a small suggestion I would make is for the extension to store locally the prompts that generated that code, like the conversation. I'm not sure if this exists—at least I wasn't able to find it—but I think it could be useful.

Great suggestion. I'll add it to our queue!
jmadeano
·vor 8 Monaten·discuss
While building this, we've had to do a lot of debugging. You think "Hey, this is a pretty simple request, why did it fail?" Then you actually dig into the archive that is 98 files of HTML, JS, and CSS, inlined and minified with obscure variable names and no comments. Thankfully many sites do still have relatively stable selectors + aria labels, but I am honestly amazed everyday at how well some of this stuff manages to works.

And that isn't even to mention all the guardrails the sites put in place today: content security policies, untrusted html, dynamic refreshing, etc.
jmadeano
·vor 8 Monaten·discuss
I tried "Make this page look like the 2004 version of CNN" and it did update the theming to be older but it didn't have the true reference, so it just made up the old style.

We don't currently have a way to provide a reference during generation, but if I were you, I'd personally try downloading the old page archive and a new page archive, throw them both in codex/claude code as context and see what it can come up with. Wouldn't be surprised if it could do a decent job writing a converter.

Somewhat tangential: I have had luck with more generic retheming, e.g. "Turn Google into a 1970s era CLI " (https://www.tweeks.io/share/script/8c8c0953f6984163922c4da7) or "Turn LinkedIn into a 90s era Neocities site" These aren't the most useful, but they are fun!
jmadeano
·vor 8 Monaten·discuss
Great minds think alike :) I think it is important for users to have more control over how the browse the internet, so I'm happy to see others building in the space!

> Also it turns out llm's are already very good at just generating Violentmonkey scripts for me with minimal prompting. They also are great for quickly generating full blown minimal extensions with something like WXT when you run into userscript limitations.

We've thought about full blown extensions and maybe we'll get there, but I'd wager that there is gap between users who would install/generate a userscript vs a full blown extension. Also a one-click install userscript is much simpler to share vs full chrome store submission/approval (the approval time has been a pain for many developers I've talked with). With that said, this is early days and we're still figuring out what people want.

> One angle I was/am considering that I think could be interesting would be truly private and personal recommendation systems using LLM's that build up personal context on your likes/dislikes and that you fully control and could own and steer. Ideally local inference and basically an algo that has zero outside business interests.

I've definitely considered the idea of your own personal, tunable recommendation system that follows you across the web. And I have some background there (worked on recommendations systems at Pinterest), but recommendation systems are very data hungry (unless we regress to the XGBoost days), and task of predicting will/won't the user like this image (binary) is vastly easier than operating over the entire page UI. Definitely not impossible, but we aren't there yet. For now, I just want to make it super easy for you to generate your own useful page mods
jmadeano
·vor 8 Monaten·discuss
Totally hear you on the permissions/access. I'd love to request fewer permissions, but the chrome store doesn't support that kind of permissions granting.

In order for us to be able to execute your scripts that do powerful things (send notifications, save to local storage, download things, etc.), our extension needs to have those permissions itself. Google doesn't have any way for us to say our extension itself only requires permissions x, y, z but give this user script permissions j, k, l.

Your browsing/page data is yours. That data is only accessed when you explicitly request to generate a script (i.e. can't generate a script to modify a page without seeing that page).
jmadeano
·vor 8 Monaten·discuss
I've also noticed the fragmentation of the ecosystem. There is still some powerful stuff out there, but it is hard to find and UX has a lot of room for improvement (especially for laypeople).

Part of the fragmentation (on the extension side at least) came from Manifest V3 which required a massive re-write of logic and introduced a lot of friction for userscript managers. Many projects just died or stayed in maintenance mode since it was a big undertaking. MV3 certainly has been a pain to work with on our side.
jmadeano
·vor 8 Monaten·discuss
> This one was a fail: it took 180+ seconds (vs. around 60 seconds of previous query), then some thumbnails got smaller (not all), while the physical space and padding for each entry was still there (so no real density was gained from the change)

Did you try updating that one (click the New Modification drop to select or Library -> click Modify)? It's not always perfect on the first attempt but a follow up can often help.

> Right now, it feels like a very slow iteration process where I write something, it doesn't get it, and I keep trying to refine it and waiting around 60 to 100 seconds between results.

There is a push and pull here. We've spent a lot of time evaluating models and pipelines for this. We can make generation much faster but the results will be worse (so faster iteration, but more required). We can also make generation much better (e.g. if you give me 5 minutes, we can do a bunch of post processing: manually selector validation, LLM-as-a-judge, even test the whole thing in something like playwright). In practice, we chose something in the middle, but everyone's preference is different. We do have a "fast" vs "smart" mode but so far it seems like people just rely on the default ("smart"). Of course, as we keep improving, our goal is to make it much faster and smarter.

> I'd also like to see the actual filters that are being generated and applied on each change.

This is possible. Go to the Library tab, scroll down and click Open Options. You'll be able to see the details of all your scripts there. The options page could be improved a lot (you're kind of seeing the plumbing behind the scenes) but hopefully useful for you.

> A collection of curated changes would be useful. My first instinct was to check if there's a gallery of the most common changes that people request to some popular websites.

We're working on more social/discoverability features. You can already share your individual tweeks and curate your own profile of tweeks at www.tweeks.io/share/profile (here's my profile with some examples: www.tweeks.io/share/jason). This is all early. We are also working on a system to surface top scripts for a given site dynamically as your browse different pages. There is a lot of work to do here.

> Changing website contents was out of reach for the general public before, so this extension could become their door to that.

1000% agree with that.

Really appreciate all your feedback, and we're excited to keep improving. You can reach me any time at [email protected] or https://www.tweeks.io/discord if you have more questions/feedback :)
jmadeano
·vor 8 Monaten·discuss
For standard greasemonkey / tampermonkey features (install, modify, enable/disable), no sign in is required.

Sign in enables you to generate new scripts. This relies on LLMs and costs us money so we having auth helps us prevent bad actors who abuse/spam the system.
jmadeano
·vor 8 Monaten·discuss
There are a few things that could have happened:

1. Maybe the domain matching missed? You can check this by going to the library tab and seeing if it appears in "Modifications for Current Page" when you're on the site.

2. Maybe there was a silent error. Our current error system relies on chrome notifications and we've come to realize that many people have them disabled. That means you don't get a clear error message when something goes wrong. We are actively working on this.

3. The script could be caught be a content policy. Checking console log could help to see if there are any errors.

4. Maybe the script just doesn't work on the first try. Can't guarantee it will work perfectly every time. You can try to update the script (Library -> click Modify on the script) and say that it didn't work/you don't see any changes.

Happy to provide more support via email ([email protected]) or discord (https://www.tweeks.io/discord)
jmadeano
·vor 8 Monaten·discuss
You may be right but gotta start somewhere :)

We launched now because we're satisfied that the current version can be a useful tool for people. But we definitely plan to keep iterating and improving!
jmadeano
·vor 8 Monaten·discuss
That's the goal! This whole project started because I was originally just asking ChatGPT to write userscripts. For generic ones, it was okay, but the feedback loop was slow: I had to save the page archive, manually feed it to LLM, write a detailed prompt, generate a script (that probably didn't work initially), and then repeat that process until I was happy.

Now I can do that all in seconds (and iterate just as quickly). I also love the ability to easily share scripts I made with friends. Hopefully it's useful for you!
jmadeano
·vor 8 Monaten·discuss
Love the windows XP aesthetic!
jmadeano
·vor 8 Monaten·discuss
The script is generated once and then persists across reload. There is no AI running continuously.
jmadeano
·vor 8 Monaten·discuss
Great callout! Will update the site with socials
jmadeano
·vor 8 Monaten·discuss
See the email in the main post. Happy to chat.
jmadeano
·vor 8 Monaten·discuss
> I currently use a patchwork of site specific extensions, so will definitely give this a go

Hopefully we can help you trim down the patchwork. If they're broadly useful, I'm happy to assist with the creation to share with others. Just let me know!

> You can specify in plain english what the algorithm should exclude / include - that pulls from your fb/ig/gmail/tiktok feeds.

The is the holy grail. Admittedly, we aren't there yet, but something like that might be possible as we keep building