Chickenfoot 1.0.3

Bug fixes for Firefox 3:

  • “Trying to load non-local URI” bug fixed in FF3
  • Extension packager now written in Javascript, not Java

Chickenfoot 1.0.2 released

This release fixes a bug introduced by Firefox 2.0.0.13, which was just released today. It’s also the first prerelease of support for Firefox 3. If you’re running a Firefox 3 beta, please try out this release of Chickenfoot and let us know how it works for you.

Changes:

  • Chickenfoot scripts are now evaluated with mozIJSSubScript rather than eval.call(), because eval.call() is not supported in FF3 (or FF2.0.0.13, for that matter).
  • Combined the Output pane and Actions pane together. If the Record Actions checkbox is enabled, then the Chickenfoot commands corresponding to the buttons you click and form controls you use are displayed in blue.
  • Fixed a bug where the XPath displayed by the action recorder was sometimes broken.
  • Fixed a bug where read() would create directories if the filename you’re trying to read doesn’t exist.
  • Extension packager now uses Javascript to generate GUIDs, instead of Java.
  • Fixed bug #290: script editor sometimes introduces garbage character.
  • Fixed bug #382 - when triggers are packaged as an extension, all triggers are now enabled in the package

Known bugs on Firefox 3:

  • Calls down to Java crash the browser, so the extension packager (which currently uses Java) doesn’t work yet.
  • Intermittent crashing observed on FF3/Windows.

Chickenfoot 1.0.1

Fixes a bug in regular expression matching.

Chickenfoot 1.0.0 released

We’re happy to announce the 1.0.0 release of Chickenfoot, just in time for 2008. This release includes several major improvements:

  • The extension packager now allows you to select multiple trigger scripts, files, and folders to include in the extension package. You can also set an update URL for the extension package, so that when you release your extension on the web, Firefox will automatically check for updates.
  • Trigger metadata is now stored in a //UserScript comment, in GreaseMonkey style.
  • When you output a Match object returned by a find() command, the Output pane allows you to browse the matches it found, highlighting them in the page.
  • The Output pane also browses other objects displayed with output(), allowing you to expand them as deeply as you like.
  • The Chickenscratch language now includes keypress() and onKeypress() commands for simulating and responding to keyboard actions. For example, keypress(”Ctrl d”) presses Control-D on whatever part of the page currently has the keyboard focus; keypress(”Enter”, “search textbox”) presses Enter on the Search textbox; onKeypress(”Enter”, “search textbox”, function) runs the given function whenever Enter is pressed on the Search textbox.

A few small bug fixes are also included in this release:

  • The keyboard shortcut for Run Trigger On This Page (on the right-click menu) no longer conflicts with Open Link in New Tab
  • click() on Element and Match objects now works again
  • click() on a link with a target attribute no longer clicks the link twice

Finally, the experimental keyword-commands feature has been removed from this release, so keyword commands will no longer work. Keyword commands will be released separately as another extension that can be installed alongside Chickenfoot to enhance its behavior, like the way LAPIS is distributed.

Chickenfoot 0.9.20070702

include() can now include other script files in the same directory using a relative pathname. For example, A.js can include a file B.js in the same directory by calling include(”B.js”). Along with this, a script file can now discover its own filename using the global readonly property scriptFile.

A new command, reset(), resets a form’s controls back to the values they had when the page was originally loaded. For example, reset(”search form”).

Chickenfoot’s editor tabs now have a right-click menu, with commands like closing all tabs simultaneously.

Introduced a new function writeBytes() that writes binary data (represented as a string using only low-order bytes) to a file. The existing function write() writes textual data using UTF-8 encoding.

Added a new library for taking screenshots of pages, screenshot.js.
Also fixed a bunch of bugs.

Finally, Chickenfoot is now distributed under the terms of the MIT license, instead of GPL.

Chickenfoot 0.9.20070430 released

Chickenfoot now supports hybrid programs consisting of both Javascript and keyword commands. Text recognized as keyword commands is shown in italics in the code editor.

The default is still pure Javascript; trying hybrid keyword commands requires switching to “Run as keywords” in the menu under the Run button.

Chickenfoot 0.9.20070423 released

This release includes some new debugging features:

  • When a pattern is ambiguous (like click(”Search”) on a page with two Search buttons), Chickenfoot now highlights all the matches to the ambiguous pattern.
  • Objects displayed in the output pane can now be opened to show their properties.

In addition, Chickenfoot scripts can now use Javascript 1.7 constructs, assuming you’re running in Firefox 2.0+. (FF 1.5 only has JS 1.6.) In particular, Match objects are now iterators, so you can do away with the nasty hasMatch/next syntax and simply use for..in, like so:

for (c in find(”checkbox”)) check(c);
for (img in find(”image”)) remove(img);
for (number in find(/\d+/)) output(number);

JS 1.7 has a few other nice features, like proper lexical scoping for local variables. See
http://developer.mozilla.org/en/docs/New_in_JavaScript_1.7
for more details.

The file-handling commands (read, write, append, exists) have been moved out of the Chickenfoot core and into a library. You need to put include(”fileio.js”) at the top of your script to use these commands.

Also fixed a bug in the extension generator, so that Firefox extensions generated from Chickenfoot work once more.

Chickenfoot 0.9.20070227 released

Minor bug fix that allows trigger scripts to run when the Chickenfoot sidebar is closed.

Chickenfoot 0.9.20070226 released

For the first release of 2007, we have the following treats:

- Triggers can now fire whenever Firefox starts, or whenever a new Firefox window opens. This will be useful for changing Firefox’s chrome, e.g. adding toolbars or menu items from Chickenfoot scripts.
- Chickenfoot scripts can now be triggered from the Firefox command line. Use firefox -cf-run to load and run a Chickenfoot script right after Firefox starts.

- pick() and enter() now simulate onchange events when they change a checkbox, radio button, listbox, or textbox, so Chickenfoot will play better with Javascript-intensive web sites.

- there is now a Stop button on the Chickenfoot sidebar, right next to the Run button. It makes a best effort to stop any running Chickenfoot scripts, although it may not succeed if a script is CPU-bound (because that usually locks up the user interface too).

- fixed a few bugs, such as click(”Next”) not working on Google search results

Chickenfoot 0.9.20061127 released

Chickenfoot now has a new feature called keyword commands, which allows simple scripts to be written without knowing any Javascript syntax. For example, here’s a simple script of commands that takes you to the Chickenfoot page:
go to google.com
type “chickenfoot mit”
search

Keyword commands are still an experimental feature, not enabled by default. You can switch to keyword command execution mode by using the new drop-down menu on the Run button. Keyword commands require Java support in your browser.

The Chickenfoot script editor also now supports Ctrl-Enter to execute the current line in the editor. Ctrl-Enter provides the same behavior as a command line (such as the Javascript command line in the Error Console). Ctrl-Enter works on both Javascript code and keyword command code.
Bug fixes:

  • Java is now loaded lazily when needed, rather than every time Firefox starts.
  • Packaged Chickenfoot extensions can now be installed in Firefox 2.0.
  • The fetch() command no longer conflicts with AdBlocker or causes crashes on MacOS when no Firefox windows are visible. Instead, fetch() now loads pages into invisible tabs in the current window.
  • Triggers now run on the first page loaded by Firefox.
  • A number of startup race conditions have been fixed. Symptoms of these bugs varied, but generally Firefox refused to start up, hung on startup, or started up with important features disabled, like the Back/Forward buttons or menu items. Because it was a race condition, these effects were intermittent, not seen all the time or on all platforms.