Friday, April 17, 2009

Planning

I wanted to give readers a feel for what I'm currently working on and where some of the more important work items stand. First off, I seem to have a working fix for the unfiltered-on-refresh issue (Work around DocumentComplete not firing on refresh), which basically involves filtering on every DownloadComplete event, and some associated jiggery-pokery.

These fixes also seem to provide a partial resolution to Fails to block Google Pageads on Gmail, though I'm getting inconsistent results with Gmail still. I'm investigating.

I've also significantly reworked the rule syntax, though preserved backwards compatibility, to allow per-site rules and filtering of specific page elements, including <div> tags (Add stylesheet class-based blocking; add per-domain rule specificity). In the process, I've switched from the .NET regex engine to a much simpler handwritten globbing engine (supporting only wildcard and single-character wildcard--i.e. * and ?--a la shell globbing). This is a little limiting, but it should provide sufficient expressiveness for most rules, is a lot closer to what most other ad filters (e.g. Adblock Pro) do, and is roughly 45 times faster than .NET's regex engine. When I have a new alpha ready, I'll be sure to post some sample rules here with an explanation of their function and how to do advanced stuff.

These changes, collectively, provide the core requirements for Implement NoScript-style JavaScript blocking, though to make it usable I really need a toolbar GUI (if script blocking is on by default, you really need an easy way to enable scripts for certain sites, other than hand-editing an XML file).

I have a bit of testing and debugging to do still before I'm ready to put up a new release, as well as some perf testing and some other business (e.g., I'd like to add a keyboard shortcut for "reload unfiltered"). But hopefully I'll have a new alpha build by this weekend or early next week with all the new features.

No comments:

Post a Comment