31 December 2007

Looking ahead to 2008

The hours and minutes are ticking as the end of 2007 approaches. There are a couple of new year's resolutions that I hope to fulfill in 2008. Here's a list.

First off, writing more frequently on this blog about projects as I work on them. I find that writing about them helps to brainstorm ideas, contemplate solutions to problems, and solicit feedback on them.

Finish up Clippings 3.0 development, and make it work in Firefox 3.

Send Tab URLs needs an update. Since its first release, there have been new localizations created for it, thanks to the translators over at Babelzilla. The new update will include the new localizations.

Develop a few extensions that I've got on my idea list:
  • Panic Button - minimizes all windows using a shortcut key or a toolbar button. Great for quickly concealing your Web surfing when the boss walks by your desk.
  • Bookmark Keys - inspired by shortcut keys for Clippings and also by a coworker's annoyance, I want to extend Clipping's shortcut key concept to work with Firefox's bookmarks. That is, pressing a shortcut key like CTRL+ALT+B, and then a letter or digit, will point the browser to the bookmarked Web page. (The name "Bookmark Keys" has already been taken by another extension that does something similar, but only for bookmarks in the Bookmarks Toolbar.)
  • Further development of XULicious, the del.icio.us tag browser. This isn't an extension - it's a stand-alone application that uses the XULRunner platform. The prototype that I introduced over a year ago is languishing, and its usefulness at present is rather trivial.
Finally, there is a Web 2.0-style application that I'm thinking about working on - but I'm still thinking about ideas on how to make it useful because as it is right now, it really isn't. Once I have my ideas clarified I'll write more about them in this blog.

Happy New Year!

29 December 2007

Clippings 2.99.4 development milestone release

This is the fourth development milestone release leading up to Clippings 3.0, intended for early adopter users who crave the latest and greatest. Users not comfortable trying out pre-release software and tolerating its many bugs should stick with Clippings 2.6 for now.

» Download: Clippings 2.99.4 (147 KB; English (United States); compatible with Firefox 1.5-2.0.0.x and Thunderbird 1.5-2.0.0.x)

If you already have a previous release of Clippings installed, you must uninstall it first before installing this release. Because this is a development snapshot, no automatic upgrades to this release will be available to current Clippings users.

What's New In This Release
  • Common Clippings Migration utility (Clippings Manager, Options → Common Clippings) to enable the common clippings feature and migrate your clippings data from the data source in the host application profile directory to the common data source. This eliminates the tedious, manual set up that was necessary in past milestone releases to enable and initialize the common clippings data source.
  • Double-click on a clipping in Clippings Manager to paste it into the most recent host app window
  • Mini-help appears when starting Clippings Manager for the first time, and when clicking What's This in the Shortcut Key field.
  • Clippings toolbar (disabled by default due to usability problems; see this post for details)
  • The Clippings button for the host application toolbar has been removed, as it is not very useful.
  • Bug fix: Clippings menu missing if clippak.rdf (the packaged data source file) is corrupted or invalid (bug 17898)
  • Bug fix: resolve confused UI state after migration to common datasource (bug 17939)
  • Bug fix: incorrect status bar count after new clipping/folder or import from other host app (bug 17871)
Known Issues

For the most up-to-date list of bugs, please see http://clippings.mozdev.org/bugs.html.
  • Common clippings is still disabled by default; however you can now enable it by running the Common Clippings Migration utility, described above.
  • Clippings Manager does not automatically reload the clippings tree after the migration is completed; workaround this by closing and then reopening Clippings Manager (bug 18197)
  • Shortcut key assignments are lost after migrating to the common data source.
Things You Should Know About
  • To migrate your clippings data to the common data source, you must run the Common Clippings Migration utility (Clippings Manager, Options → Common Clippings) from both Firefox and Thunderbird.
  • If, before migrating to the common data source, you have a large number of clippings and folders in the root Clippings folder, migrating from Firefox and Thunderbird may result in a larger number of clippings and folders in the common data source, resulting in a rather lengthy Clippings submenu in the host application's context menu. Consider organizing your clippings (deleting unneeded clippings from the root folder and moving clippings to folders) before running the migration utility.
  • Sometimes, if common clippings data source is enabled and you make changes to a clipping from Clippings Manager invoked from one host app and then switch to another instance of Clippings Manager from the other host app, the update from the first host app may not be reflected in Clippings Manager from the second host app. Use Options → Reload to update the display.
  • The Redo (a.k.a. "Undo Undo") function key in Clippings Manager has changed as of milestone release 2.99.3; the function key is now F2.
Help and Support

Send your questions to the Clippings mailing list at clippings@mozdev.org. Enter a new bug here (Bugzilla account on Mozdev required - or you can just post your bug report to the mailing list). Remember to check the bug list first to see if an issue you want to report has already been filed.

27 December 2007

The twin floating toolbar predicament

Hope everyone had a great Christmas! With the holidays winding down, and me not being in much of a mood to participate in the Boxing Day consumerism frenzy, it's time to dive back into Clippings.

Earlier, I wrote about the problem where it's impossible to determine which host application the floating toolbar palette is originating from, if both Firefox and Thunderbird are running and the toolbar was invoked from both host apps.

The ideal solution is to make the floating toolbar disappear whenever the host application window loses focus, and make it reappear, if it was hidden, when the user restores focus to the host app window. This behaviour is the same as that found in Microsoft Word. Another idea is to put an icon in the floating toolbar's title bar to indicate which host app the toolbar was invoked from. But trademark concerns would prevent me from using the official Firefox or Thunderbird logos in Clippings, and any kind of substitute would be unrecognizable by most users. Plus, the latter idea didn't address the issue of two floating toolbar windows appearing simultaneously if the toolbar was invoked from both host apps -- and that just looks silly, as the following screen shot illustrates:

The rather silly result of invoking the Clippings floating toolbar from both Firefox and Thunderbird.

The first solution was clearly the ideal, and one I tried to get it to work. The key to it is to be able to determine when the host app window loses or gains its focus so that the floating toolbar can be hidden. Unfortunately, there is no way to determine if the host app window has lost focus. The activeWindow property of the nsIWindowWatcher interface always refers to an open window -- even if that window doesn't have focus! Another approach was to hide the toolbar if the blur event on the XUL window is fired, and show the toolbar (if it was hidden) when the focus event is fired. While it is possible to handle a focus event, that isn't the case with the blur event; I tried putting an onblur event handler on the XUL window element, as well as using addEventListener() to register a blur event handler, but to no avail. A seemingly promising newsgroup discussion that I found only lead me to a dead end.

Rather than hiding the toolbar when the host app window loses focus and restoring it when the host app window regains focus, why not hide it when the user moves the mouse out of the host app window, and show it again when the mouse moves into the host app window? Seemed like a great idea... except that the mouseout and mouseover events are fired not just on the window, but on any element contained in it that can trigger mouseout and mouseover events. And when I say this, I don't just mean the XUL elements that define the host app window UI -- but the HTML elements in the Web page displayed in Firefox's browser content area, or the content area of Thunderbird's message compose window! There was no pattern that I could find to help me filter out unwanted event invocations, and at this point I knew that this wasn't going to work, either.

Sadly, the Clippings toolbar isn't ready for prime time, and having worked on this for some time with no results that's really usable, I decided that it's time to move on. The toolbar is still there, but it is now disabled by default. The boolean preference "clippings.toolbar.enabled" needs to be created and set to true in about:config to make the Clippings Toolbar command visible in the Clippings status bar icon menu in the host app.

Users itching to try it out now can do so by downloading and installing the latest experimental snapshot release from http://downloads.mozdev.org/clippings/experimental/. Look for the XPI file named clippings-2.99.3+_20071227.xpi.

15 December 2007

Creating the Clippings Toolbar

Finally I've got the Clippings toolbar to work reasonably well. It can be invoked by right-clicking on the Clippings icon on the host application's status bar and choosing the Clippings Toolbar command. It is a floating palette toolbar (or "windoid" as the Mac folks say), so it appears above all windows.


You can try it out now by going to http://downloads.mozdev.org/clippings/experimental/ and downloading and installing the XPI file named clippings-2.99.3+_20071215.xpi (there is another XPI file in the same directory with the word "toolbar" at the end of its file name; it is an older, buggy build, so ignore it). Note that it hasn't yet been tested on Firefox or Thunderbird 1.5 series, and thus it isn't guaranteed to work on those versions.

A few challenges had to be overcome in order to implement the Clippings toolbar:
  1. The features string in the window.open() call which invokes the floating toolbar window includes the unknown string "popup" - this makes the window appear as a popup window which UI elements like menus and tooltips render as. However, this results in a chromeless window, lacking the title bar and borders. I had to style my own window border and title bar, resulting in a floating toolbar window that, as you can see from the above screen shot, won't necessarily match the appearance of floating toolbar windows in the user's desktop environment.

    The toolbar was invoked in this fashion to satisfy the criteria of a floating toolbar palette -- specifically, that it floats above all windows and that a taskbar button (in Windows) should not appear for the floating toolbar. Invoking the floating toolbar as a modeless dialog would satisfy the criteria, but on the Mac it may be rendered as a dialog sheet.

  2. The toolbar needs a reference to the most recent host application window so that it will perform its operations (insert clipping, new from selection) in the context of that window. This was made possible through the very useful XPCOM interface nsIWindowMediator.

  3. Moving the floating toolbar window by dragging its title bar was painful to implement. After over a week of trying to get it to work I gave up and searched online for drag-and-drop DHTML code, hoping that I could somehow adapt it to work with dragging an XUL window to move it. In the end, I figured it out on my own.

    In a nutshell, the drag start and stop can be initiated from the onmousedown and onmouseup events, respectively, on the toolbar palette's title bar (actually an XUL <vbox> element) -- but the actual move event handling needs to be invoked from the onmousemove event from the XUL <window> element. Handling the mouse move from the title bar (the <vbox> element) works only as long as the mouse stays within that element during the move operation; if the mouse is moved at a great distance on the screen, the mouse cursor jumps out of the title bar rather than moving the floating toolbar window. I still haven't figured out exactly why, although I suspect it has something to do with the DOM event flow as explained in the W3C's DOM 3 Events specification.
There's another problem: if the Clippings toolbar is invoked from both host applications (Firefox and Thunderbird), and both are open at the same time, two Clippings toolbars appear on the screen, and it's nearly impossible to distinguish which of the two is from which host app. More about this in another post.

18 November 2007

A toolbar for Clippings

Many users have asked for a quicker, easier way to paste clippings as an alternative to right-clicking on a web page text box (or a new email message), pointing to Clippings in the context menu, and then picking from the submenu that appears. Shortcut keys, which was introduced in the first milestone release leading up to the eventual 3.0 release, is one answer to this request -- albeit for keyboard-savvy users.

There were several ideas that were suggested, all of which I considered:
  • A new sidebar UI
  • A new toolbar UI
  • Double-clicking on a clipping in Clippings Manager to paste it
  • Clippings "smart tags" -- like the Smart Tags in MS Office applications
  • Make the Clippings menu detachable
  • Placing the Clippings menu on the status bar icon. (This is actually the original placement of the Clippings menu in a very early, pre-1.0 release.)
A new sidebar UI seems like a sensible idea, but I don't like how it would narrow the viewable browser content area just so a user can paste a clipping from a list that's always visible (until the sidebar is closed). Obviously not a problem for people with large screens -- but remember that not everyone has the luxury of a large monitor (for example, I still use a 17" CRT at home). And if the user's collection of clippings in the "root" (a.k.a top level) folder is not that many, then all that empty space in the lower part of the list is just wasted screen real estate.

Smart tags are a great idea -- until you actually experience them. They can be annoying, especially when they follow you everywhere in its futile attempt to be overly helpful to you in every single use case scenario. I've turned off Smart Tags in Microsoft Word for that very reason.

While double-clicking on a clipping in the Clippings Manager tree list might seem convenient, the question is, if multiple browser windows/message compose windows are open at the same time, where does the double-clicked clipping go? Should a double-click action display a popup menu or a dialog box asking which window to paste the selected clipping into? Sure, let's suppose that by default the clipping will be pasted into the previously-focused host app window... but what if the user wanted it pasted in a different window?

That leaves the toolbar UI idea. The advantage of a toolbar is that it only needs to appear when when user wants it to, and that it can either be docked to the host app window, or floating (as a floating toolbar pallete). Not only can the user quickly access the Clippings menu with just one (left) click, but other commands (New, New From Clipboard, etc.) can be readily available. Here is what I have in mind:

Clippings toolbar, docked to the host app window.

Floating toolbar.

The toolbar idea seems to be the best option. It uses up only the screen space it needs (well, the floating toolbar at least), and the user can show or hide it as he pleases. And the floating toolbar can be moved anywhere on the screen -- where the user wants it to be -- so that its within easy reach, as opposed to a fixed sidebar UI, and without the annoyance of a "smart tag" that follows you everywhere. Now that I think about it more, is a docked toolbar really that necessary?

Edit: I just realized that my arguments against adding clipping pasting capabilities from the Clippings Manager are baseless. If one could insert a clipping into the current host app window from the toolbar, one should be able to do so from Clippings Manager, too. Silly me.

07 November 2007

Discovering the wonders of stringBundle.getFormattedString()

Localization in an XUL-based app or extension is accomplished by putting all UI strings into DTD or .properties files and bundling them into a Mozilla XPI. The latter type of file is used for storing UI strings that will be programmatically assigned to XUL elements like <label> and <description>, etc. during run-time. In this situation, one would need to define a <stringbundle> element in the XUL document and set its src attribute to the chrome URL of the .properties file containing the localized UI strings. Then to get the UI string, one would do the following in the JavaScript source:
// Get the <stringbundle> element in the XUL document
var strBundle = document.getElementsByTagName("stringbundle").item(0);

// Get the UI string
var theString = strBundle.getString("foobar");
The variable theString will then contain the localized string defined in the XUL document.

A problem for which I've discovered a solution only recently is how to embed another string within a localized string. This typically happens when the UI string contains one or more substrings that are only determined at run-time, such as file I/O error messages that gives the name of the file or folder.

Somehow I overlooked a method of the <stringbundle> object that can accomplish what I needed: getFormattedString(). The idea is that the UI string contains placeholders that will be substituted at run-time with another string that is provided in an array parameter. Each nth element in the array parameter corresponds to the nth placeholder in the string -- basically, the same idea in the C library function printf().

After reading the documentation on XULPlanet, I tried it out. I modified the UI string that defines the error message that appears if the user attempts to import an invalid Clippings file:
alertImportFailed = Cannot read file: \"%s\"\nThe selected file may not be a valid Clippings file.
Then in clippings.js, which contains Clippings Manager's UI logic, I modified the code that gets the error message as follows:
// gStrBundle is a global variable referencing the <stringbundle> element defined in clippings.xul
// path contains the full path of the file the user attempted to import
var err = gStrBundle.getFormattedString("alertImportFailed", [path]);
doAlert(err);
But it didn't work: only the first character in path was returned. So I did some searching on Google and came across the documentation on Devmo that indicated that an uppercase "S" is needed in the placeholder.
alertImportFailed = Cannot read file: \"%S\"\nThe selected file may not be a valid Clippings file.
Now it works. Armed with this knowledge, I even made the effort to point this out to a developer who had written a "bug fix" to work around the lowercase "s" problem.

And one other hint on the subject of localizing strings: to embed a non-breaking space in a UI string in a .properties file, use the hexadecimal Unicode escape character \u00A0.

18 October 2007

Musings on Thunderbird's future

Over the summer, it was announced that the Mozilla Thunderbird project would be spun off into a new, separate organizational structure. Then, earlier this month, the lead Thunderbird developer, Scott McGregor, suddenly announced his departure from the Mozilla Corporation. This unexpected announcement was then followed two days later with news from David Bienvenu, another prominent Thunderbird developer, that he too was leaving.

In their respective blog postings where they briefly announced their resignations, both have stated that they will continue working on the Thunderbird project. Nonetheless I'm skeptical of their ability to retain their focus on the continued development of the Thunderbird email client, especially since they're moving on to other endeavours. With them pursuing their new venture (according to David Ascher's open letter to the Thunderbird community), how could they possibly maintain the same level of effort on Thunderbird like they used to? Unless their new "venture" somehow involves Thunderbird, but very little has been revealed as to what they'll be pursing next.

I've read a lot about these recent events with great interest, and it's interesting to read the speculative reasons for the departures and the negative "doom and gloom"-type predictions; case in point: right now Mozilla Links has a reader survey up, asking if the two key departures signify "the end of Thunderbird." While I can't help but wonder if there is a deeper, undisclosed reason for these two developers leaving, perhaps these departures -- as well as the spin-off from the Mozilla Corp -- is an opportunity for the Thunderbird project to reinvigorate itself with fresh ideas and evolve further from what it is right now.

How? Being the open source project that it is, there are people all over the world either volunteering their time, efforts and talents into the ongoing development and testing of Thunderbird, or are paid to do so by other companies (Red Hat, Google, IBM, et. al.) that hire them to do their work. As long as there is interest and motivation in improving Thunderbird, as well as the number of end users justifying the effort at doing so, there will be people who will be passionate and dedicated enough to step forward and make it so. And with the new, separate organization focusing entirely on the email client, the unavoidable distractions that come with supporting other, non-mail projects should be eliminated.

I admit that Clippings wasn't originally intended to be compatible with Thunderbird; I had designed and coded it with Firefox in mind. As a Thunderbird user, it never struck me as the slick, polished application that Firefox is; even with version 2, I still regard Thunderbird as nothing more than the mail and news component split off from the original Mozilla 1.x suite. But compare that with Firefox... much effort has been put into making it the most user-friendly open source application thus far (although I have heard a lot of good things about Ubuntu...), and Firefox 3 promises to be another great leap forward into making Web browsing even more easier, efficient and fun -- for both end users and developers.

Hopefully we will soon see the same with Thunderbird.

08 October 2007

Clippings 2.99.3 development snapshot released

This is the third development milestone leading up to Clippings 3.0, intended for early adopter users who crave the latest and greatest. Users not comfortable trying out pre-release software and tolerating its many bugs should stick with Clippings 2.6 for now.

» Download: Clippings 2.99.3 (128 KB; English (United States); compatible with Firefox 1.5-2.0.0.x and Thunderbird 1.5-2.0.0.x)

If you already have a previous release of Clippings installed, you must uninstall it first before installing this release. Because this is a development snapshot, no automatic upgrades to this release will be available to current Clippings users.

What's New in This Release
  • Default clippings. System administrators and redistributors who want to package the Clippings XPI with default clippings can do so by unzipping the XPI archive using a ZIP client such as WinZip, putting the data source file containing the default clippings in the "defaults" directory, and then re-zipping the archive. The data source file must be named "clippak.rdf", and must be a valid Clippings file. Hint: Create and organize the default clippings using Clippings Manager, and then export the data to a Clippings file.
  • The predefined clipping variable $[HOSTAPP] now includes the host application's version number.
  • On-the-fly updating of clipping edits/changes.
  • Automatic refreshing of Clippings Manager's display whenever its window is focused. This is especially important when common Clippings data is enabled, because this ensures that the most recent changes from the other host application is reflected in Clippings Manager.
  • Improvements to the new common data source feature, which was introduced in the last development snapshot.

Known Issues


For the most up-to-date list of bugs, please see http://clippings.mozdev.org/bugs.html.
  • Common clippings is still disabled by default; please read this blog post for instructions on how to enable it. This issue will be addressed in the next development snapshot release.
  • The Clippings menu in Firefox's textbox context menu may not appear if the default clipping file is corrupted or not recognized as a valid Clippings file (bug 17898)
  • Clippings Manager's status bar item count is sometimes incorrect; this can happen when either a new clipping/folder from another host app is created, or when a clipping file is imported from another host app. This bug occurs when common clippings is enabled (bug 17871)

Other Things You Should Know About


The function key for Clippings Manager's Redo command (a.k.a., "Reverse Last Undo," "Undo Last Command" or - my personal favourite - "Undo Undo") has changed. Prior to this release it was F4. Because that key is in conflict with the shortcut key for invoking the menu in the new Shortcut Key drop-down field, the function key for Undo Undo has been changed to F2.

Help and Support

Send your questions to the Clippings mailing list at clippings@mozdev.org. Enter a new bug here (Bugzilla account on Mozdev required - or you can just post your bug report to the mailing list). Remember to check the bug list first to see if an issue you want to report has already been filed.

04 September 2007

Clippings featured in Linux.com article

Clippings was among the five extensions described in an article on Linux.com:
“As the name suggests, the Clippings extension allows you to save text snippets and quickly insert them into a message, which can save you a lot of typing. To create a new snippet, select the desired text fragment, right-click on it, and choose Clippings -> New From Selection. Alternatively, you can evoke the Clippings Manager by clicking on the Clippings icon in the lower right corner of Thunderbird's main window. You can then create a new clipping from scratch (press the New Clipping button), or from the text in the Clipboard (press Options and choose New From Clipboard). The Clippings Manager also allows you to edit the existing clippings and organize them into folders. Better yet, using the Options button, you can easily export and import your clippings, which can come in handy if you use Thunderbird on multiple machines, or you want to share clippings with other users.”
Click here to read the full article.

30 August 2007

More about the Clippings 2.99.2 development snapshot

As promised, here are more details on the new features introduced in the latest pre-3.0 development snapshot.

P
laceholders In Clippings

You can now define placeholders inside a clipping that you will be prompted to fill in when you paste the clipping. Placeholders are essentially variables that appear in the clipping text in the format $[variable_name]. Valid variable names can contain letters (lowercase or uppercase), digits (0-9) and underscores. Example clipping with placeholders:
Hello, $[YourName], I'm glad you're coming to the club meeting at $[meeting_time]. See you $[2nite]!
When you paste a clipping with placeholders, you will be prompted to fill in the value for each placeholder in the clipping. If you want the placeholders in the clipping pasted exactly as they are, with no prompting and substitution, the clipping name should be prefixed with [NOSUBST].

There are six predefined placeholders you can use in your clippings; these predefined placeholders will be automatically substituted with their expected values when you paste the clipping.
  • $[NAME] - the name of the clipping
  • $[FOLDER] - the name of the folder the clipping belongs to
  • $[DATE] - the current date, expressed in the format defined in your system's locale settings
  • $[TIME] - the current time, expressed in the format defined in your system's locale settings
  • $[HOSTAPP] - the name of the host application you're pasting the clipping in
  • $[UA] - the user agent string of the host application

Toolbar Button for Firefox

To add this button to a toolbar in the Firefox browser window, right-click on a toolbar and choose Customize, then from the toolbar button pallete drag the Clippings button to the desired location.

Common Clippings Data for Firefox and Thunderbird

This much-requested feature allows your Clippings data to be created, accessed and modified from both Firefox and Thunderbird. That means that a clipping created in Firefox will be visible in Thunderbird; a clipping created in Firefox that is modified in Thunderbird will be updated in Firefox, too; etc.

This feature is still a work in progress with lots of bugs, and is therefore turned off by default. If you want to test this feature, be sure to familiarize yourself with the list of known issues in the post announcing the release of this milestone and the latest bug list from the Clippings website.

To enable common clippings for both host applications (Firefox and Thunderbird):
  1. Download and install this release of Clippings in both host apps.
  2. Export your clippings from both host apps. You can skip this step if you've never used Clippings before, or want to start from scratch.
  3. Create a new boolean pref in about:config named clippings.datasource.common and set it to true. Do this for both host apps.
  4. Exit both host apps and restart them.
  5. In one of the two host apps, open Clippings Manager, then import the clippings you had exported in step 2 (Options -> Import).
  6. Switch to the other host app, and from there either right-click on a text box or open Clippings Manager. You should now see the imported clippings from the other host app.
If this feature is enabled, your Clippings data for both host applications will be stored in your home directory. So for Linux or UNIX, this would be /home/username, and on Windows this would be C:\Documents and Settings\username.

Sometimes the tree list of clippings and folders in Clippings Manager may not be updated with the latest changes from the other host app. To refresh the display, choose Options -> Reload. (This command appears on the Options menu only if clippings.datasource.common is enabled.)

29 August 2007

Clippings 2.99.2 development snapshot released

This is the second development milestone leading up to Clippings 3.0, intended for early adopter users who crave the latest and greatest. Users not comfortable trying out pre-release software and tolerating its many bugs should stick with Clippings 2.6 for now.

» Download: Clippings 2.99.2 (120 KB; English (United States); compatible with Firefox 1.5-2.0.0.x and Thunderbird 1.5-2.0.0.x)

If you already have a previous release of Clippings installed, you must uninstall it first before installing this release. Because this is a development snapshot, no automatic upgrades to this release will be available to current Clippings users.

What's New in This Release

Here is a summary of the new features in this release. More information on these new features will be posted to this blog soon.
  • Clipping placeholders. You can now define placeholders inside a clipping that you will be prompted to fill in when you paste the clipping.
  • Toolbar button for Firefox.
  • Common clippings data for Firefox and Thunderbird. There are a lot of bugs affecting this much-requested feature that can render it unusable; consequently this feature has been disabled by default. More details (like how to turn it on) will be forthcoming.
Known Issues

For the most up-to-date list of bugs, please see http://clippings.mozdev.org/bugs.html.
  • Undoing deletion of a clipping with a shortcut key assigned to it will not restore its shortcut key. It is also not yet possible to undo a shortcut key assignment in Clippings Manager (bug 17531).
  • Clippings Manager doesn't immediately update the shortcut key assignment on a newly-created clipping, if it was created via the New Clipping dialog box (bug 17467).
  • Clippings Manager problems with Options -> Reload: repeated invocations will cause folder icons for empty folders to change to a clipping icon and then back to folder images. Also, unwanted undoing of editing actions when invoking Reload (bug 17669)
  • Subfolders sometimes don't appear in the Clippings menu when common Clippings data is enabled; the Clippings menu needs to be invoked repeatedly to have all subfolders (empty and non-empty) appear (bug 17413).
  • Shortcut key doesn't work immediately after assignment in Clippings Manager (bug 17673)

Help and Support


Send your questions to the Clippings mailing list at clippings@mozdev.org. Enter a new bug here (Bugzilla account on Mozdev required - or you can just post your bug report to the mailing list). Remember to check the bug list first to see if an issue you want to report has already been filed.

15 August 2007

Clippings 2.99.1 development snapshot released

Despite the seemingly long quietness that has descended on this blog, much has been going on behind the scenes... well, in the past month, anyway... =P

This release is the first development milestone towards version 3.0. Unlike official "stable" releases like version 2.6 (the most recent one), version 2.99.1 (and others numbered 2.99.x) will contain bugs and there is a risk that your Clippings data may be lost or corrupted as a result. If that scares you, or if you're not an early adopter who craves the latest and greatest and you're not willing to tolerate bugs, then stick with Clippings 2.6 for now.

» Download: Clippings 2.99.1 (117 KB; English (United States); compatible with Firefox 1.5-2.0.0.x and Thunderbird 1.5-2.0.0.x)

If you already have a previous release of Clippings installed, you must uninstall it first before installing this release. Because this is a development snapshot, no automatic upgrades to this release will be available to current Clippings users.

What's New
  • Shortcut keys. You can now define a shortcut key (a single letter or digit) for a new or existing clipping. To quickly paste a clipping into a form field in a Web page in Firefox or an email message in Thunderbird, press CTRL+ALT+V, followed by its shortcut key.
There are other new features in development, including the much-requested ability to have common Clippings data for both Firefox and Thunderbird. These new features will appear as further development snapshots are released in the coming weeks.

Known Issues
  • Undoing deletion of a clipping with a shortcut key assigned to it will not restore its shortcut key. It is also not yet possible to undo a shortcut key assignment in Clippings Manager (bug 17531).
  • Clippings Manager doesn't immediately update the shortcut key assignment on a newly-created clipping, if it was created via the New Clipping dialog box (bug 17467).
Help and Support

Send your questions to the Clippings mailing list at clippings@mozdev.org.

If you find a bug, check the above Known Issues list first, and then do a bug search to ensure that it has not been already reported. If you have a Bugzilla account on Mozdev, you may file a bug report; if not you may simply post your bug report to the Clippings mailing list.

13 April 2007

Clippings 2.6 released

This release introduces a few new features for Thunderbird, and is compatible with Thunderbird 2.0 release candidate 1.

Clippings 2.6 is now available for download from the Clippings website, http://clippings.mozdev.org, or from the download link below:

» Clippings 2.6 (109 KB; compatible with Firefox 1.5-2.0.0.* and Thunderbird 1.5-2.0rc1)

Supported Languages: English (United States), Chinese (traditional and simplified), Croatian, Dutch, French, German, Hungarian, Italian, Russian, Slovak, Spanish, Ukrainian. NOTE: In a few locales, some dialog box text may not be fully translated and may appear in English instead.

If you already have Clippings installed, it will be upgraded for you if automatic extension updates are enabled. Otherwise, choose Tools | Add-ons, then right-click on the entry for Clippings in the list of installed extensions and choose Find Update.

Users who had first installed Clippings from the Clippings website will be able to upgrade immediately. Clippings is awaiting review on Mozilla Addons, so users who first installed Clippings from there will not see updates for it until it is approved by Mozilla Addons reviewers.

What's New

This release adds new Thunderbird-specific options for removing extra line breaks and quote symbols when creating new clippings. Two check boxes are added to the New Clipping dialog box:

  • Create as unquoted text - If the selected text contains message quote symbols (">" for plain text messages), the new clipping is created without the quote symbols.
  • Remove extra line breaks - Creates the new clipping with unnecessary line breaks removed. Spacing between paragraphs are preserved.

Also for Thunderbird, you can choose to have clippings pasted into the email compose window as plain (normal) text or quoted text. To enable this feature, right-click on the Clippings status bar icon and choose Show Options When Pasting.

Getting Help

A Quick Start Guide is available for first-time users. See http://clippings.mozdev.org/help.html.

Support requests should be emailed to the Clippings mailing list at clippings@mozdev.org. If you think you found a bug, please do a search first to see if the issue hasn't been reported yet. Bug reports can be emailed to the Clippings mailing list; or if you have a Bugzilla account on Mozdev, you may file a bug report at http://clippings.mozdev.org/bugs.html.

30 March 2007

Yahoo! Mail APIs

Big news from Yahoo! - Web APIs (SOAP- and JSON-RPC-based) are now available for their Yahoo! Mail service. As a Yahoo! Mail user, I can see how useful it can be to give third-party developers the ability to create new apps that lets users access and compose emails through interesting and different ways.

A few ideas quickly came to mind:
  • a mini email client implemented as a Firefox extension or a desktop app
  • a mini email client implemented as an app/widget/module/flake/doohickey for web-based portals and desktop environments like Netvibes, Pageflakes, eyeOS and YouOS
  • a mini-email client that would be available to users of my Send Tab URLs extension so that users can send a list of browser tab URLs via Yahoo! Mail (and thus overcoming the annoying limitation on Windows of not being able to support every email client)
Then I browsed through the Yahoo! Mail API documentation, and was disappointed to find that the most useful API calls can only be invoked if the end user of the app, plugin or widget is authenticated as a user of Yahoo's premium mail service. Users of the standard mail service will only be able to perform basic functions like listing messages, creating and managing folders and getting user information. Apparently, doing anything ridiculously basic as... oh, I dunno... composing an email message from within your own home-brewed app, plugin or widget requires that the logged-in end user be a paying "premium" customer.

Considering that I am not a Yahoo! Mail Plus user, and that such a limitation shuts out an entire class of end users that are happy with their basic Yahoo! Mail account and are not interested in paying for unneeded extras, perhaps the best that I can accomplish with this for the broadest range of users is a little desktop (web-based or otherwise) utility that tells the users how many unread messages he has.

And I'm not the least bit motivated by the $10 commission for referring users to Yahoo! Mail Plus - I'm a programmer, not a salesman.

Update - apparently, someone has already written a Yahoo! Mail notifier extension.

31 January 2007

Clippings 2.5.1 and Send Tab URLs 0.4

Two releases! Clippings 2.5.1 and Send Tab URLs 0.4 are now available for download. You can download them from the new AE Creations web site on mozdev.org, or you can download them from the following links:
  • Download: Clippings 2.5.1 (101 KB; compatible with Firefox 1.5-2.0.0.* and Thunderbird 1.5-2.0b2)
    Supported Languages: English (United States), Chinese (traditional and simplified), Croatian, Dutch, French, German, Hungarian, Italian, Russian, Slovak, Spanish, Ukrainian.

  • Download: Send Tab URLs 0.4 (18 KB; compatible with Firefox 1.5-2.0.0.*)
    Supported Languages: English (United States), Dutch, French, German, Italian, Korean, Portuguese (Brazil), Russian.
Clippings 2.5.1 is already available from Mozilla Addons. Send Tab URLs is being uploaded to Mozilla Addons and is awaiting approval from a reviewer.

Check out http://aecreations.mozdev.org, which will host info and download/install links for all Firefox extensions. Clippings info and downloads will continue to be available from the main Clippings web site.