<?xml version="1.0"?>
<?xml-stylesheet href="changelog.css" type="text/css"?>

<document>

<title>
<maintitle>Changelog</maintitle>
</title>

<entry>
<version>0.5</version>
<revisions>

<revision>
<revNum>d2</revNum>
<revName>(DeadTree - 130k)</revName>
<revText>deinstall: improved component-registry restoration; incorporated Wladimir's rdf / overlay removal routine. made intall-dialog more verbose -- now tells where previous installs are located. obj-tabs: fixed moz-opacity to be current with latest spec (no more percentages). compacted pref-observer code slightly. added nsISupports interface to allow weak-referencing of the pref-observer object with observer-service; also set pref-observer to store a strong reference to the pref-Service -- allows for observer removal on window-close. added try-blocks to filter routines in addfilterdialog.js / filterall.js. improved filter-dialog openers for all types in adblock.js -- especially when breaking out of an overlay. added "adblocktab" property to tab-frame, to accomodate applet refiltration. added code to remove frame-nodes if blocked, and set the frameset 'cols' attribute appropriately; additionally, a listener maintains the 'cols' attribute if it's later modified. changed keybinding for "List Adblock-able Items.." to 'ctrl+shift+ a', per user request. removed unnecessary rules in adblock.css; added aaron's hover-class for status-indicator. pref-observer: removed try-blocks from observer-function; rearranged major areas of code to increase speed; disabled observer-init from adblock.xul, leaving only adblock.xml. re-enabled case-insensitive filtration. added pref + routine to bypass window-interval on element removal: Fast Collapse. added frame-collapsation to fast-collapse. added special-listing for already filtered nodes in "List Adblock-able Items.."; added dummy-flag to simple-filters, so "List.." can de-regexp properly. fixed css for pref-window list under "classic" theme. QuickblockBackgrounds is now default disabled -- for speed-boost. fixed flasher-routine in "List Adblock-able.." -- now stores original moz-outline in string-indexed array. highly revised filter-dialog and blocking routines -- consolidation + streamlining. fixed temp-dir cleanup. fixed quiblock-enable. fixed click-handler for obj-tabs. Quickblock avoids other listeners better. made filter-import universally compatible -- now learns the linebreak-pattern unique to each file. Quickblock: made allowances for form-submission keypresses -- they fire a shifted-mouse event. added special handling for applets: frames are inserted, rather than wrapped; adblock-data is stored in the frame, retrieved accordingly on refiltration / filterAll. added pref + routine to filter images and objects based on parent-links: linkcheck. more patches for applets: component.js, addfilterdialog.js, filterall.js. Applet Handling Has Been Completely Disabled. fastCollapse: now hides iframes. root-elements ("html", "body") are no longer hidden when blocked -- causes odd redraw issues. Quickblock now has multiple levels: "partial" which still allows shift-singleclick to operate normally, "full" which suppresses click-handlers by terminating shift-singleclicks, and, of course, "off". updated filter-dialog caller in adblock.js to correctly receive flashblock-listener's target-node. tools menuitem is now properly situated. disabled re-registering of original content-policy component. disabled node-QueryInterface on tab-click -- applets aren't filtered anymore. removed try-block from metadata-storage:unblocked in component.js. updated the "adblock-simple-flag" for filtered items. fixed pattern-loading when no patterns are entered (list != ""). re-enabled re-registering of original content-policy component. linkCheck: handles javascript-urls; now removes the href-attribute for link-matches. updated install-routine to handle failure for forced root-install: asks user if profile-install is desired. flashblock: fixed conditional-check for previous overlays to catch applet-overlays too (yea, i know.. applets are ignored now. big deal:P ). LiveUpdate: new -- installer now renames previous versions, and a cleanup-routine (in component.js) removes them on restart. updated "force profile" install-confirm msg to mention specific version numbers. flasher in "List Adblock-able.." now loops 3x. implemented document-blocking: blocked sites show a message containing the filter that blocked them. linkCheck: improved regexp extraction of url's from javascript-links. added automated-removal of beginning and trailing wildcards on simple-filters -- only for memory-load. pref-window: moved all minor-options to the 'Adblock Options" menu; added 'add' button to filter-entry area; added context-menu to filter-list. further updates to install-routine. deinstall: finally added chrome.rdf removal !- it was *thought* to have already landed. changed iframe-blocking again: no more 'display: none' -- slow-collapse routine now just hides them. pref-window: filter-list now completely restores its scroll-view. more patches for iframe-blocking. re-added frameset-collapsation to fastCollapse routine. linkCheck: improved javascript-url extraction; added catch for relative-urls. even more patches for iframe-blocking. duplicate filters are automatically removed. loadSettings (in component.js) now handles pref-saving. pref-window: the enabled-box correctly (de)activates the radio-buttons. fixed loadSettings in component.js to only clear in-memory pattern list on pattern-pref change. fixed filter-loading to keep single-asterisk simple filters (*) -- multiple-asterisk filters are reduced to one (*** -> *). switched pref-handling for filter-change and pref-file saving from prefbranch-observer to observer-service (nifty!). quickblock: only traps 'mousedown' events on fullblock -- to allow shifted text-selection. fixed asterisk-reduction filter-regexp in component.js. siteblock: urlbar and browser-uri are properly set to the blocked site's spec. linkcheck: javascript-hrefs are now parsed intact -- no "extraction" of enclosed urls. added a per-site "filter-cache", which is consulted first to see if an element's src-url has already been filtered -- across-the-board speedup, especially with forums. linkcheck: spaces are removed from all non-javascript hrefs. yet another tweak for iframes. streamlined + rewrote blocking-routines to accomodate nested framesets. pref-window: updated keybindings -- pressing escape when no edit is active, or return on the empty entry-box, saves + closes the window; work-around for context menu "coordinates" bug; filterList's currentItem is correctly hilighted when initially out-of-view. deinstall: jar-removal failure no longer throws an error -- the installer cleans it up, anyway; component-registry is properly purged of references to nsAdblock.js -- firebird should restart properly, now. pref-window: minor fix: pressing 'delete' in the entry-area no longer deletes the selected listitem. linkcheck: no longer runs the filter-test twice. deinstall: *finally* fixed the chrome/overlay removal routine. pref-window: further patching for context menu "coordinates" bug. installer: now asks where to install if buildID == 0. removed debug "throw" from install-cleanup in component.js. deinstall: better detection for failure; streamlined xul-cache removal. local files are no longer adblocked. moved profile-component loading from adblock.xul to the new component.xul -- added hiddenWindow overlay, component.xul, to contents.rdf. backed-out overlay (didn't work for firebird/fox). bugfixes: list-import ignores blank lines; obj-tabs are appended, rather than swapped; siteblock shows the filter with proper escaping; siteblock adds history-items for blocked pages; added pattern-pool reload for Windows' Quicklaunch. new: status-element can be repositioned on statusbar -- just drag :P~ filter-cache now active for unblocked items -- you'll note a speed gain. applet handling returns! drag now works proper to panel midpoints, and anchors to the bar-edges. we're registered with firefox EM proper, and have styled+overridden version-display. component.js + filterall.js handle wnd.top better in problematic cases. moved to the new ContentPolicy system and built-in support for the old. </revText>
</revision>

<revision>
<revNum>d1</revNum>
<revName>(full-sail)</revName>
<revText>removed binding inheritance (extends) from status-indicator and pref-window -- firebird 0.7 doesn't allow /bindings/ in chrome urls. adjusted menuitem in tools-menu. consolidated installer-xpi's for root and profile -- a dialog now allows the user to choose. switched codebase to xpcom in profile -- we no longer modify userContent.css bindings. added Wladimir's "filter all" to the tools-menu. new shortcut-key: 'cmd+shift+ l' to list all blockable items in a page. statusbar-indicator can be clicked to also list all blockable items in a page. updated deinstall-routine for component-removal. many, many changes to re-integrate, optomize, and increase usability. ..oh, and all objects are "tagged" with one-click-filter tabs for easy access which reposition to object-bottom if too close to screen-top, *and* resize parent-iframes if cropped :)</revText>
</revision>

</revisions>
</entry>

<entry>
<version>0.4</version>
<revisions>

<revision>
<revNum>d31</revNum>
<revName>(finale)</revName>
<revText>status-indicator: finalized css + binding layout; added more panel-items to the 'insertafter' property -- should work for firebird nightlies now. quickblock: separated the blocking routines from the mouse-handlers -- much easier on the eyes; added pref to disable background-image removal (rather taxing stuff) -- default off; restructured and steamlined removal code -- notably regexp handling; changed 'mouseover' back to 'mousemove' -- catches stuff quicker. removed contextmenu separator.</revText>
</revision>

<revision>
<revNum>d30</revNum>
<revName>(stata)</revName>
<revText>quickblock: added conditionals to handle mouse leaving window-area during drag; added disabler for context-menu; added handling to disregard container-elements; added handling for container text-nodes; added removal of background-images; added removal of map-areas; added pref-toggle and conditionals to pref-listener. added serialization pref + pref-listener conditional -- toggle unimplemented. streamlined pref-listener code with regexp's. status-indicator: shows underline for quickblock; label-text reflects present state; improved css-dimensions. renamed flash-override to flashblock. bugfixes: changed binary array-search from a prototyped array method to a standalone function -- fixed Tabbrowser Extensions conflict. changed context-menu-builder from being called by "onpopupshown" to a window-listener -- fixed Quicknote conflict. renamed global flashblock variables, and functions / variables in global.js -- prevention of future conflicts.</revText>
</revision>

<revision>
<revNum>d29</revNum>
<revName>(quicktime)</revName>
<revText>renamed wildblock to quickblock. changed quickblock's shortcut and mouse-routine to improve usefulness. pref-window: adjusted button-menu labels. bugfixes: added 'adblock' prefix to functions in adblock.js -- accomodates extensions with similar calls; added explicit applet handling to serialization-check and changed "adblockChecked" property to attribute for duplicate-filter prevention; brought codebase-url construction to applet filtering routine, for parity with its filter-dialog routine -- correctly catches on complete urls added thusly.</revText>
</revision>

<revision>
<revNum>d28</revNum>
<revName>(wild)</revName>
<revText>implemented wildblock -- shortcut + routines for quick-hide of any dom-element. serialization-check recurses through frames / iframes. added property "adblockChecked" to filtered elements, so the serialization-check doesn't duplicate filtering. isolated pref-observer subroutines -- try-blocks, relevant to which pref changed -- if one fails, the others can still be attempted.</revText>
</revision>

<revision>
<revNum>d27</revNum>
<revName>(nodular - nearly)</revName>
<revText>implemented a rudimentary catch for serialization -- listener for DOMContentLoaded; it only catches nodes serialized exactly on pageload, but this should be enough. updated flashblock to handle infinitely-nested frames / iframes -- techrepublic.com flashblocks properly now. iframe context-item displays the frame-nesting depth. bugfixes: updated key/menu bindings -- firebird-menuitem for flashblock works properly. pref-window: deinstall-menuitem is properly accessed for disabling in uninstall.js; 'list sort' sets correctly -- id-call still pointed to "listoptions-menu"; disabled conditional for filtering objects on the movie-param -- now checks even if there are already child-embeds.</revText>
</revision>

<revision>
<revNum>d26</revNum>
<revName>(reversion)</revName>
<revText>pref-window: list-import now handles dos, unix, and mac formats; rewrote hover-handling for button-menus; added 10-second timer to deactivate hover; moved 'deinstall' to the options button-menu; added 'revert' button for undoing session-changes; added confirm-dialog to 'list import' for choosing between append and overwrite. bugfixes: for zdnet -- flashblock verifies each frame-element to be valid and loaded before parsing; context-menu routine no longer assumes there's always a target -- explicitly disables inaccessible items. added context-item + routine to disable coordinate maps</revText>
</revision>

<revision>
<revNum>d25</revNum>
<revName>(fixed pt.ii)</revName>
<revText>bugfixes: no longer removes empty-objects -- added mutation listener 'DOMNodeInserted' to all objects to catch script modifications on their subtree; added parameter 'FlashblockOverlayed' to overlayed items -- the 'reTrigger' method checks for this now, since setting 'visility: hidden' otherwise trips it; re-arranged object filtering to check for the 'data' attribute first; added global arrays to track the flashblock-overlays -- abcnews.com flashblocks properly; the parent-object is now tagged as "Adblocked" when child-embeds are blocked, so we don't trip the 'DOMAttrModified' event -- i may remove this; filter-dialog's event-dispatching checks explicitly for applets; added a redundant call to 'initPrefObserver' from the overlay-file; context-menu routine checks 'target.hasAttribute' rather than just 'target' when enabling items. script-blocking is implemented.. but may never work.</revText>
</revision>

<revision>
<revNum>d24</revNum>
<revName>(parity)</revName>
<revText>applet-blocking is fully implemented -- and flashblocking has been updated to provide the overlays. deinstall is back. installer-xpi now warns if a previous version is already present. flashblock-overlay has improved standards-compliance. added code to filter objects based on 'data' attribute or movie-param. improved filtering routine to handle items with no 'src', parentNode, or ownerDocument. flashblock wont trip on media loaded without a containing page -- you'll have the url right there -! the context-menu doesn't die if there's no target. code-cleanup in adblock.js and adblock.xml</revText>
</revision>

<note>[user-suggestion: a context-menu for the pref's window list to more easily edit / delete entries]</note>

<revision>
<revNum>d23</revNum>
<revName>(infobae)</revName>
<revText>added keybindings for firebird (thanks aaron!). bugfix: d22 wouldn't show the complete url when adding filters -- removed the getter/setter for image 'src'. added 'DOMAttrModified' event listener for all adblock bindings. this should stop infobae's ads.</revText>
</revision>

<revision>
<revNum>d22</revNum>
<revName>(revolutions)</revName>
<revText>rewrote major portions of flashblock to accomodate moz1.4+ -- embedded-media is now hidden prior to overlaying. now traps input-buttons at amazon.com: added binding for 'input type="image"'. now correctly filters infobae.com: added getter/setter for image 'src' attribute which calls 'adblockTrigger' on value-change. minor rearrangement of pref-creation ordering in 'initAdblock'. added conditionals to status-element binding which hide it for other windows (unneeded now -- see following). changed registration in contents.rdf to only overlay navigator windows.</revText>
</revision>

<note>[idea: streamline the bindings by making a general one which all others extend -- they'd each have a property with their keyCode and would call the general method with their unique number.]</note>

<note>[note: there's a bug in mozilla 1.3.1 and prior, where items that are loaded by serializing the parent's 'innerHTML' attribute, don't fire the 'onxblconstructor' event; we can't block the nickelrotation gif on amazon.] </note>

<revision>
<revNum>d21</revNum>
<revName>(flashback)</revName>
<revText>flashblock / object-overriding routines are implemented -- even removes the oncontextmenu-trap at thehulk.com :P. key-bindings are in place, along with code to disable any conflicting bindings. a statusbar-element indicates whether adblock is loaded and active or not. curiously, the pref-observer seems to be the only instance that can actually access keybindings and window-chrome elements, so this is where the status-element-update and keybinding-conflict-remover code currently resides. modifications to the uninstall-routine. the usercontent routine correctly removes any conflictingly-named folders. the filter dialog now creates the filter-trigger keypress itself, should calling the 'adblockTrigger' method fail (ie. object-embeds). oh yea- and applet-blocking was attempted.. and removed; failure.</revText>
</revision>

<note>[idea: a skin that slowly morphs colour over the course of a year -- *not* user-configurable. would use transparent png's on background-colours.]</note>

<revision>
<revNum>d20</revNum>
<revName>(fixed)</revName>
<revText>wow- lots of bugfixes: the userContent.css update is working again. an abberant xbl-binding for objects was removed. the filter dialog fires an item's 'adblockTrigger' method on accept. the pref-observer is now restricted to browser-windows. the "adblock-temp" directory idea is partially implemented. finally, script-blocking was attempted.. and removed; failure.</revText>
</revision>

<note>[idea: create an "adblock-temp" directory which gets flushed on startup (with css-check), *and* flushed by our install-script. then, we can effectively remove deprecated versions entirely by ourselves]</note>

<revision>
<revNum>d19</revNum>
<revName>(window-bound)</revName>
<revText>at last!- the settings-window loads *much* faster thanks to a custom xbl-binding on listitems. button-menus are better aligned. the 'Help' button-menu has an item for regular expressions. all preliminary support for mail REMOVED. (who cares anyway..)</revText>
</revision>

<revision>
<revNum>d18</revNum>
<revName>(listsort - moof)</revName>
<revText>an option to "keep list sorted" is now available from the pref-window. all menu-options are available as button-menus on the window itself. the preferences-window is now consistently named (thus). More preliminary support for mail. (in fact, why isn't it working?- stupid "3-pane windows"...)</revText>
</revision>

<note>[idea: add a per-window object that gets updated with the url's of images that aren't filtered. then, for pages with lots of duplicate *allowed* images --eg. forums--, acceptible images are only filtered once.]</note>

<revision>
<revNum>d17</revNum>
<revName>(deinstall)</revName>
<revText>uninstall is implemented. optomizations to userContent.css update. a pref-observer catches changes to adblock's settings. "about" in settings now opens a tab. Preliminary support for mail. the "hack" for context-filtering flash remains, but doesn't work on firebird. </revText>
</revision>

<revision>
<revNum>d16</revNum>
<revName>(regenerate)</revName>
<revText>userContent.css install/update is now functioning. convert2RegExp() catches more "unaccepted" characters and has a 'normal' boolean. conditionals and a new pref were added for the css-bindings -- see "loadSettings" and "initAdBlock"</revText>
</revision>

<revision>
<revNum>d15</revNum>
<revName>(zdnet pt-ii)</revName>
<revText>the style-node is now properly saved when collapsing. visibility is then set to 'hidden' to hide any "placeholder" graphics. the expandItem function is complete.</revText>
</revision>

<revision>
<revNum>d14</revNum>
<revName>(iframes)</revName>
<revText>iframe-blocking is now implemented. lots of code-cleanup: commented-out stuff removed; bindings are all separate for their respective elements,  all using the 'adblockTrigger' method to fire the filter-trigger keypress.</revText>
</revision>

<revision>
<revNum>d13</revNum>
<revName>(zdnet die)</revName>
<revText>updated to handle zdnet and tomshardware -- unclosed objects are now removed during binding.</revText>
</revision>

</revisions>
</entry>

<entry>
<standalone>
<unpaddedNote>The old changelog was a tedious thing to keep up. It detailed every single code-change, as entered by hand. It's now renamed, and entries will be sweeping and brief.</unpaddedNote>
</standalone>
</entry>

</document>