<?xml version="1.0" encoding="UTF-8"?>
<tickets type="array">
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">false</closed>
    <created-at type="datetime">2009-09-12T21:51:28+02:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime" nil="true"></milestone-due-on>
    <milestone-id type="integer">48956</milestone-id>
    <number type="integer">15</number>
    <permalink>integrate-wm-to-the-ff-add-ons-dialog</permalink>
    <priority type="integer">5</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>open</state>
    <tag>!medium #enhancement :big</tag>
    <title>Integrate WM to the FF &quot;add-ons&quot; dialog</title>
    <updated-at type="datetime">2010-01-18T20:21:41+01:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/15</url>
    <milestone-title>0.1a2</milestone-title>
    <original-body>List installed userscripts in a &quot;scripts&quot; or &quot;userscripts&quot; tab in Firefox &quot;Add-ons&quot; dialog.
This idea has also been mentioned on [GM issue 1012](http://github.com/greasemonkey/greasemonkey/issues#issue/1012/comment/45520).

This is a major GUI update as the preferred script managing interface changes: userscripts present and behave as in the add-ons list. In other words, scripts are listed vertically, each one featuring:
 * an optional icon (see #15)
 * the script version (see #16)
 * the script description
 * an &quot;options&quot; button leading to the script config
 * a &quot;disable&quot; button
 * an &quot;uninstall&quot; button

For a start, the &quot;options&quot; button may redirect to the current `manager.js` with the corresponding script selected. The next step would be to design a script-centric config interface. WM options could be pushed back into WM &quot;Add-ons&quot; tab &quot;options&quot; button.</original-body>
    <latest-body>List installed userscripts in a &quot;scripts&quot; or &quot;userscripts&quot; tab in Firefox &quot;Add-ons&quot; dialog.
This idea has also been mentioned on [GM issue 1012](http://github.com/greasemonkey/greasemonkey/issues#issue/1012/comment/45520).

This is a major GUI update as the preferred script managing interface changes: userscripts present and behave as in the add-ons list. In other words, scripts are listed vertically, each one featuring:
 * an optional icon (see #15)
 * the script version (see #16)
 * the script description
 * an &quot;options&quot; button leading to the script config
 * a &quot;disable&quot; button
 * an &quot;uninstall&quot; button

For a start, the &quot;options&quot; button may redirect to the current `manager.js` with the corresponding script selected. The next step would be to design a script-centric config interface. WM options could be pushed back into WM &quot;Add-ons&quot; tab &quot;options&quot; button.</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;List installed userscripts in a &quot;scripts&quot; or &quot;userscripts&quot; tab
in Firefox &quot;Add-ons&quot; dialog.&lt;br&gt;
This idea has also been mentioned on &lt;a href=
&quot;http://github.com/greasemonkey/greasemonkey/issues#issue/1012/comment/45520&quot;&gt;
GM issue 1012&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is a major GUI update as the preferred script managing
interface changes: userscripts present and behave as in the add-ons
list. In other words, scripts are listed vertically, each one
featuring:&lt;br&gt;
* an optional icon (see &lt;a href=&quot;/projects/27038/tickets/15&quot; title=
&quot;Ticket #15&quot;&gt;#15&lt;/a&gt;) * the script version (see &lt;a href=
&quot;/projects/27038/tickets/16&quot; title=&quot;Ticket #16&quot;&gt;#16&lt;/a&gt;) * the
script description * an &quot;options&quot; button leading to the script
config * a &quot;disable&quot; button * an &quot;uninstall&quot; button&lt;/p&gt;
&lt;p&gt;For a start, the &quot;options&quot; button may redirect to the current
&lt;code&gt;manager.js&lt;/code&gt; with the corresponding script selected. The
next step would be to design a script-centric config interface. WM
options could be pushed back into WM &quot;Add-ons&quot; tab &quot;options&quot;
button.&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">true</closed>
    <created-at type="datetime">2010-01-08T00:14:47+01:00</created-at>
    <creator-id type="integer">81920</creator-id>
    <milestone-due-on type="datetime" nil="true"></milestone-due-on>
    <milestone-id type="integer" nil="true"></milestone-id>
    <number type="integer">18</number>
    <permalink>dumpster-newark-nj-908-313-9888</permalink>
    <priority type="integer">6</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>invalid</state>
    <tag nil="true"></tag>
    <title>dumpster newark nj 908-313-9888</title>
    <updated-at type="datetime">2010-01-08T15:28:51+01:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>dumpster</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/18</url>
    <original-body>www.njwastedisposal.com</original-body>
    <latest-body>www.njwastedisposal.com</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;&lt;a href=
&quot;http://www.njwastedisposal.com&quot;&gt;www.njwastedisposal.com&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">false</closed>
    <created-at type="datetime">2009-09-14T11:43:07+02:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime" nil="true"></milestone-due-on>
    <milestone-id type="integer">48956</milestone-id>
    <number type="integer">4</number>
    <permalink>scripts-update-feature</permalink>
    <priority type="integer">1</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>open</state>
    <tag>!high #feature :big</tag>
    <title>Scripts update feature</title>
    <updated-at type="datetime">2009-09-14T12:05:49+02:00</updated-at>
    <user-id type="integer">33943</user-id>
    <user-name>Erik Vold</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/4</url>
    <milestone-title>0.1a2</milestone-title>
    <original-body>One of the most requested features out there: version checking and update of installed scripts.

See: [GM#45](http://greasemonkey.devjavu.com/ticket/45)</original-body>
    <latest-body>One of the most requested features out there: version checking and update of installed scripts.

See: [GM#45](http://greasemonkey.devjavu.com/ticket/45)</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;One of the most requested features out there: version checking
and update of installed scripts.&lt;/p&gt;
&lt;p&gt;See: &lt;a href=&quot;http://greasemonkey.devjavu.com/ticket/45&quot;&gt;GM#45&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">false</closed>
    <created-at type="datetime">2009-09-12T22:08:07+02:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime" nil="true"></milestone-due-on>
    <milestone-id type="integer">48956</milestone-id>
    <number type="integer">16</number>
    <permalink>support-for-version-header-tag</permalink>
    <priority type="integer">6</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>open</state>
    <tag>!medium #enhancement :trivial</tag>
    <title>Support for @version header tag</title>
    <updated-at type="datetime">2009-09-13T10:58:37+02:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/16</url>
    <milestone-title>0.1a2</milestone-title>
    <original-body>Parse, save and restore scripts `@version` string.
This is a prerequisite to implementing script update (see #14) and displaying script version in the script list (see #15).</original-body>
    <latest-body>Parse, save and restore scripts `@version` string.
This is a prerequisite to implementing script update (see #14) and displaying script version in the script list (see #15).</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;Parse, save and restore scripts &lt;code&gt;@version&lt;/code&gt;
string.&lt;br&gt;
This is a prerequisite to implementing script update (see &lt;a href=
&quot;/projects/27038/tickets/14&quot; title=&quot;Ticket #14&quot;&gt;#14&lt;/a&gt;) and
displaying script version in the script list (see &lt;a href=
&quot;/projects/27038/tickets/15&quot; title=&quot;Ticket #15&quot;&gt;#15&lt;/a&gt;).&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">false</closed>
    <created-at type="datetime">2009-09-12T22:42:35+02:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime" nil="true"></milestone-due-on>
    <milestone-id type="integer">48956</milestone-id>
    <number type="integer">17</number>
    <permalink>specify-a-script-icon</permalink>
    <priority type="integer">7</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>new</state>
    <tag>!medium #enhancement :small</tag>
    <title>Specify a script icon</title>
    <updated-at type="datetime">2009-09-13T03:22:44+02:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/17</url>
    <milestone-title>0.1a2</milestone-title>
    <original-body>Optional GUI feature, used among other things for &quot;add-on&quot; style userscript listing (see #15).
Possible implementations include:

* introduction of an `@icon` header tag
* reserve the &quot;icon&quot; `@resource` name

In both cases the target file would be downloaded into the script directory at install time.</original-body>
    <latest-body>Optional GUI feature, used among other things for &quot;add-on&quot; style userscript listing (see #15).
Possible implementations include:

* introduction of an `@icon` header tag
* reserve the &quot;icon&quot; `@resource` name

In both cases the target file would be downloaded into the script directory at install time.</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;Optional GUI feature, used among other things for &quot;add-on&quot; style
userscript listing (see &lt;a href=&quot;/projects/27038/tickets/15&quot; title=
&quot;Ticket #15&quot;&gt;#15&lt;/a&gt;).&lt;br&gt;
Possible implementations include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;introduction of an &lt;code&gt;@icon&lt;/code&gt; header tag&lt;/li&gt;
&lt;li&gt;reserve the &quot;icon&quot; &lt;code&gt;@resource&lt;/code&gt; name&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In both cases the target file would be downloaded into the
script directory at install time.&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">false</closed>
    <created-at type="datetime">2009-09-12T19:34:42+02:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime" nil="true"></milestone-due-on>
    <milestone-id type="integer" nil="true"></milestone-id>
    <number type="integer">14</number>
    <permalink>object-storage-support-for-gm_setvaluegm_getvalue</permalink>
    <priority type="integer">6</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>new</state>
    <tag>!low #enhancement :small</tag>
    <title>Object storage support for GM_setValue/GM_getValue</title>
    <updated-at type="datetime">2009-09-13T03:16:45+02:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/14</url>
    <original-body>So far `GM_setValue` and `GM_getValue` only support integers, boolean and strings. It would be nice if they supported objects as well, in order to load/save a bunch of values (the object properties) at once.
As i see it, a preferences _branch_ would be named after the key parameter, with object properties saved as `key.propertyName` values of this branch.

Example code:
@@@ javascript
// ==UserScript==
// @name           script
// @namespace      namespace
// ==/UserScript==
var object = {
    aBoolean = true,
    aInt     = 1,
    aString  = &quot;string&quot;
}
GM_setValue(&quot;key&quot;, object);
@@@
`about:config` would thus contain the following:
@@@
webmonkey.scriptvals.namespace/name.key.aBoolean = true
webmonkey.scriptvals.namespace/name.key.aInt     = 1
webmonkey.scriptvals.namespace/name.key.aString  = string
@@@
`GM_getValue(&quot;key&quot;)` would perform the opposite operation.

Notes:
* Such preferences values would also be reachable individually using the standard syntax.
* The mechanism might be extended to support object properties as well, as long as there is no reference loops (same as JSON).</original-body>
    <latest-body>So far `GM_setValue` and `GM_getValue` only support integers, boolean and strings. It would be nice if they supported objects as well, in order to load/save a bunch of values (the object properties) at once.
As i see it, a preferences _branch_ would be named after the key parameter, with object properties saved as `key.propertyName` values of this branch.

Example code:
@@@ javascript
// ==UserScript==
// @name           script
// @namespace      namespace
// ==/UserScript==
var object = {
    aBoolean = true,
    aInt     = 1,
    aString  = &quot;string&quot;
}
GM_setValue(&quot;key&quot;, object);
@@@
`about:config` would thus contain the following:
@@@
webmonkey.scriptvals.namespace/name.key.aBoolean = true
webmonkey.scriptvals.namespace/name.key.aInt     = 1
webmonkey.scriptvals.namespace/name.key.aString  = string
@@@
`GM_getValue(&quot;key&quot;)` would perform the opposite operation.

Notes:
* Such preferences values would also be reachable individually using the standard syntax.
* The mechanism might be extended to support object properties as well, as long as there is no reference loops (same as JSON).</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;So far &lt;code&gt;GM_setValue&lt;/code&gt; and &lt;code&gt;GM_getValue&lt;/code&gt;
only support integers, boolean and strings. It would be nice if
they supported objects as well, in order to load/save a bunch of
values (the object properties) at once.&lt;br&gt;
As i see it, a preferences &lt;em&gt;branch&lt;/em&gt; would be named after the
key parameter, with object properties saved as
&lt;code&gt;key.propertyName&lt;/code&gt; values of this branch.&lt;/p&gt;
&lt;p&gt;Example code:&lt;br&gt;&lt;/p&gt;
&lt;pre&gt;
&lt;code class=&quot;javascript&quot;&gt;// ==UserScript==
// @name           script
// @namespace      namespace
// ==/UserScript==
var object = {&lt;br&gt;
&lt;br&gt;


&lt;/code&gt;
&lt;/pre&gt;
&lt;pre&gt;
&lt;code class=&quot;javascript&quot;&gt;&lt;code&gt;aBoolean = true,
aInt     = 1,
aString  = &amp;amp;quot;string&amp;amp;quot;&lt;/code&gt;&lt;/code&gt;
&lt;/pre&gt;
&lt;pre&gt;


&lt;br&gt;
}
GM_setValue(&quot;key&quot;, object);
&lt;/pre&gt;
&lt;code&gt;about:config&lt;/code&gt; would thus contain the following:
&lt;pre&gt;
&lt;code&gt;webmonkey.scriptvals.namespace/name.key.aBoolean = true
webmonkey.scriptvals.namespace/name.key.aInt     = 1
webmonkey.scriptvals.namespace/name.key.aString  = string&lt;/code&gt;
&lt;/pre&gt;
&lt;code&gt;GM_getValue(&quot;key&quot;)&lt;/code&gt; would perform the opposite
operation.
&lt;p&gt;Notes:&lt;br&gt;
* Such preferences values would also be reachable individually
using the standard syntax. * The mechanism might be extended to
support object properties as well, as long as there is no reference
loops (same as JSON).&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">true</closed>
    <created-at type="datetime">2009-03-15T12:49:36+01:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime" nil="true"></milestone-due-on>
    <milestone-id type="integer" nil="true"></milestone-id>
    <number type="integer">8</number>
    <permalink>api-is-unsafely-added-to-the-sandbox</permalink>
    <priority type="integer">5</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>invalid</state>
    <tag>!high #enhancement :small</tag>
    <title>API is unsafely added to the sandbox</title>
    <updated-at type="datetime">2009-09-02T11:40:48+02:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/8</url>
    <original-body>We protect scripts by wrapping them inside a function (currently, unless `@unwrap` is used).  
We should protect the API similarly, otherwise it is accessible from the hostile environment after `unsafeWindow` usage.

See: [GM#225](http://greasemonkey.devjavu.com/ticket/225)</original-body>
    <latest-body>We protect scripts by wrapping them inside a function (currently, unless `@unwrap` is used).  
We should protect the API similarly, otherwise it is accessible from the hostile environment after `unsafeWindow` usage.

See: [GM#225](http://greasemonkey.devjavu.com/ticket/225)</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;We protect scripts by wrapping them inside a function
(currently, unless &lt;code&gt;@unwrap&lt;/code&gt; is used).&lt;br&gt;
We should protect the API similarly, otherwise it is accessible
from the hostile environment after &lt;code&gt;unsafeWindow&lt;/code&gt;
usage.&lt;/p&gt;
&lt;p&gt;See: &lt;a href=&quot;http://greasemonkey.devjavu.com/ticket/225&quot;&gt;GM#225&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">false</closed>
    <created-at type="datetime">2009-03-23T14:46:25+01:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime" nil="true"></milestone-due-on>
    <milestone-id type="integer">48956</milestone-id>
    <number type="integer">10</number>
    <permalink>gm_-api-functions-should-be-wrapped-into-a-gm-object</permalink>
    <priority type="integer">4</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>open</state>
    <tag>!low #enhancement :trivial</tag>
    <title>GM_* API functions should be wrapped into a GM object</title>
    <updated-at type="datetime">2009-09-02T11:36:25+02:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/10</url>
    <milestone-title>0.1a2</milestone-title>
    <original-body>The `GM_*` functions should be renamed as `*` and wrapped into a `GM` object. For example, `GM_log` would become `GM.log`.

For backward compatibility purpose, legacy naming should be temporarily conserved while being deprecated.</original-body>
    <latest-body>The `GM_*` functions should be renamed as `*` and wrapped into a `GM` object. For example, `GM_log` would become `GM.log`.

For backward compatibility purpose, legacy naming should be temporarily conserved while being deprecated.</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;The &lt;code&gt;GM_*&lt;/code&gt; functions should be renamed as
&lt;code&gt;*&lt;/code&gt; and wrapped into a &lt;code&gt;GM&lt;/code&gt; object. For
example, &lt;code&gt;GM_log&lt;/code&gt; would become &lt;code&gt;GM.log&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For backward compatibility purpose, legacy naming should be
temporarily conserved while being deprecated.&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">false</closed>
    <created-at type="datetime">2009-03-27T15:19:48+01:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime" nil="true"></milestone-due-on>
    <milestone-id type="integer">48956</milestone-id>
    <number type="integer">11</number>
    <permalink>add-proper-code-documentation</permalink>
    <priority type="integer">3</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>open</state>
    <tag>!medium #enhancement :big</tag>
    <title>Add proper code documentation </title>
    <updated-at type="datetime">2009-08-30T20:55:44+02:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/11</url>
    <milestone-title>0.1a2</milestone-title>
    <original-body>The code could use better documentation, preferably in JSDoc format.</original-body>
    <latest-body>The code could use better documentation, preferably in JSDoc format.</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;The code could use better documentation, preferably in JSDoc
format.&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">false</closed>
    <created-at type="datetime">2009-08-24T20:45:48+02:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime" nil="true"></milestone-due-on>
    <milestone-id type="integer">48956</milestone-id>
    <number type="integer">12</number>
    <permalink>refactor-the-code</permalink>
    <priority type="integer">2</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>open</state>
    <tag>!high #enhancement :big</tag>
    <title>Refactor the code</title>
    <updated-at type="datetime">2009-08-29T19:18:50+02:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/12</url>
    <milestone-title>0.1a2</milestone-title>
    <original-body>The code and its structure need some cleanup...</original-body>
    <latest-body>The code and its structure need some cleanup...</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;The code and its structure need some cleanup...&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">true</closed>
    <created-at type="datetime">2009-08-21T13:44:10+02:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime">2009-08-29T00:00:00+02:00</milestone-due-on>
    <milestone-id type="integer">33915</milestone-id>
    <number type="integer">13</number>
    <permalink>firebug-support-for-script-debugging</permalink>
    <priority type="integer">9</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>resolved</state>
    <tag>!high #enhancement :small</tag>
    <title>Firebug support for script debugging</title>
    <updated-at type="datetime">2009-08-22T15:32:15+02:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/13</url>
    <milestone-title>0.1a1</milestone-title>
    <original-body>It currently isn't possible to debug scripts using the great Firebug debugger, although that would be particularly helpful.
Let's fix that!</original-body>
    <latest-body>It currently isn't possible to debug scripts using the great Firebug debugger, although that would be particularly helpful.
Let's fix that!</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;It currently isn't possible to debug scripts using the great
Firebug debugger, although that would be particularly helpful.
Let's fix that!&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">true</closed>
    <created-at type="datetime">2009-03-15T01:18:43+01:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime" nil="true"></milestone-due-on>
    <milestone-id type="integer" nil="true"></milestone-id>
    <number type="integer">5</number>
    <permalink>webmonkey-icon-wastes-horizontal-space</permalink>
    <priority type="integer">2</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>resolved</state>
    <tag>!low #annoyance :small</tag>
    <title>Webmonkey icon wastes horizontal space</title>
    <updated-at type="datetime">2009-06-05T14:28:18+02:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/5</url>
    <original-body>*&quot;Greasemonkey is currently the only icon on my statusbar which wastes an unacceptable amount of space. I'm attaching an image which illustrates how it currently looks (top) and how it should look (bottom).&quot;*

See: [GM#173](http://greasemonkey.devjavu.com/ticket/173)</original-body>
    <latest-body>*&quot;Greasemonkey is currently the only icon on my statusbar which wastes an unacceptable amount of space. I'm attaching an image which illustrates how it currently looks (top) and how it should look (bottom).&quot;*

See: [GM#173](http://greasemonkey.devjavu.com/ticket/173)</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;&lt;em&gt;&quot;Greasemonkey is currently the only icon on my statusbar
which wastes an unacceptable amount of space. I'm attaching an
image which illustrates how it currently looks (top) and how it
should look (bottom).&quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;See: &lt;a href=&quot;http://greasemonkey.devjavu.com/ticket/173&quot;&gt;GM#173&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">true</closed>
    <created-at type="datetime">2009-03-23T14:39:11+01:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime">2009-08-29T00:00:00+02:00</milestone-due-on>
    <milestone-id type="integer">33915</milestone-id>
    <number type="integer">9</number>
    <permalink>failing-unwrapped-scripts-are-executed-twice</permalink>
    <priority type="integer">6</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>resolved</state>
    <tag>!medium #bug :trivial</tag>
    <title>Failing unwrapped scripts are executed twice</title>
    <updated-at type="datetime">2009-03-24T11:36:31+01:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/9</url>
    <milestone-title>0.1a1</milestone-title>
    <original-body>For backward compatibility purposes, following script wrapping mess in previous GM releases, we're left with the following code:
$$$
      if (!script.unwrap)
        scriptSrc = &quot;(function(){&quot;+ scriptSrc +&quot;})()&quot;;
      if (!this.evalInSandbox(scriptSrc, url, sandbox, script) &amp;&amp; script.unwrap)
        this.evalInSandbox(&quot;(function(){&quot;+ scriptSrc +&quot;})()&quot;,
                           url, sandbox, script); // wrap anyway on early return
$$$
In other words, if an unwrapped script fails to execute properly, it is wrapped and executed again. This might result in a page being (at least partly) modified twice.

Scripts failing because of `@unwrap` issues should be fixed, not &quot;hot-patched&quot; like this.</original-body>
    <latest-body>For backward compatibility purposes, following script wrapping mess in previous GM releases, we're left with the following code:
$$$
      if (!script.unwrap)
        scriptSrc = &quot;(function(){&quot;+ scriptSrc +&quot;})()&quot;;
      if (!this.evalInSandbox(scriptSrc, url, sandbox, script) &amp;&amp; script.unwrap)
        this.evalInSandbox(&quot;(function(){&quot;+ scriptSrc +&quot;})()&quot;,
                           url, sandbox, script); // wrap anyway on early return
$$$
In other words, if an unwrapped script fails to execute properly, it is wrapped and executed again. This might result in a page being (at least partly) modified twice.

Scripts failing because of `@unwrap` issues should be fixed, not &quot;hot-patched&quot; like this.</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;For backward compatibility purposes, following script wrapping
mess in previous GM releases, we're left with the following code:
$$$&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;  if (!script.unwrap)
    scriptSrc = &quot;(function(){&quot;+ scriptSrc +&quot;})()&quot;;
  if (!this.evalInSandbox(scriptSrc, url, sandbox, script) &amp;amp;&amp;amp; script.unwrap)
    this.evalInSandbox(&quot;(function(){&quot;+ scriptSrc +&quot;})()&quot;,
                       url, sandbox, script); // wrap anyway on early return
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;$$$ In other words, if an unwrapped script fails to execute
properly, it is wrapped and executed again. This might result in a
page being (at least partly) modified twice.&lt;/p&gt;
&lt;p&gt;Scripts failing because of &lt;code&gt;@unwrap&lt;/code&gt; issues should be
fixed, not &quot;hot-patched&quot; like this.&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">true</closed>
    <created-at type="datetime">2009-03-15T03:08:33+01:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime">2009-08-29T00:00:00+02:00</milestone-due-on>
    <milestone-id type="integer">33915</milestone-id>
    <number type="integer">7</number>
    <permalink>gm_xmlhttprequest-bypass-cache</permalink>
    <priority type="integer">4</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>resolved</state>
    <tag>!medium #enhancement :trivial</tag>
    <title>GM_xmlhttpRequest bypass cache</title>
    <updated-at type="datetime">2009-03-15T03:20:21+01:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/7</url>
    <milestone-title>0.1a1</milestone-title>
    <original-body>[GM#157](http://greasemonkey.devjavu.com/ticket/157):

An extra option could be added to `GM_xmlhttpRequest` to bypass the cache.

Mozilla provides the code:
@@@
  request = new XMLHttpRequest();
  request.channel.loadFlags |= Components.interfaces.nsIRequest.LOAD_BYPASS_CACHE;
@@@
...which will allow privileged callers to bypass the cache.</original-body>
    <latest-body>[GM#157](http://greasemonkey.devjavu.com/ticket/157):

An extra option could be added to `GM_xmlhttpRequest` to bypass the cache.

Mozilla provides the code:
@@@
  request = new XMLHttpRequest();
  request.channel.loadFlags |= Components.interfaces.nsIRequest.LOAD_BYPASS_CACHE;
@@@
...which will allow privileged callers to bypass the cache.</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;&lt;a href=&quot;http://greasemonkey.devjavu.com/ticket/157&quot;&gt;GM#157&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;An extra option could be added to &lt;code&gt;GM_xmlhttpRequest&lt;/code&gt;
to bypass the cache.&lt;/p&gt;
&lt;p&gt;Mozilla provides the code:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  request = new XMLHttpRequest();
  request.channel.loadFlags |= Components.interfaces.nsIRequest.LOAD_BYPASS_CACHE;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;...which will allow privileged callers to bypass the cache.&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">true</closed>
    <created-at type="datetime">2009-03-15T00:54:08+01:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime">2009-08-29T00:00:00+02:00</milestone-due-on>
    <milestone-id type="integer">33915</milestone-id>
    <number type="integer">3</number>
    <permalink>add-binary-support-to-gm_xmlhttprequest</permalink>
    <priority type="integer">3</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>resolved</state>
    <tag>!medium #enhancement :trivial</tag>
    <title>Add binary support to GM_xmlhttpRequest</title>
    <updated-at type="datetime">2009-03-15T02:53:23+01:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/3</url>
    <milestone-title>0.1a1</milestone-title>
    <original-body>Mozilla introduced binary file support in `XMLHttpRequest` starting from Firefox 3.0, through the `sendAsBinary()` method.  
`GM_xmlhttpRequest` should be updated to support it as well. 

See: [GM#228](http://greasemonkey.devjavu.com/ticket/228)</original-body>
    <latest-body>Mozilla introduced binary file support in `XMLHttpRequest` starting from Firefox 3.0, through the `sendAsBinary()` method.  
`GM_xmlhttpRequest` should be updated to support it as well. 

See: [GM#228](http://greasemonkey.devjavu.com/ticket/228)</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;Mozilla introduced binary file support in
&lt;code&gt;XMLHttpRequest&lt;/code&gt; starting from Firefox 3.0, through the
&lt;code&gt;sendAsBinary()&lt;/code&gt; method.&lt;br&gt;
&lt;code&gt;GM_xmlhttpRequest&lt;/code&gt; should be updated to support it as
well.&lt;/p&gt;
&lt;p&gt;See: &lt;a href=&quot;http://greasemonkey.devjavu.com/ticket/228&quot;&gt;GM#228&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">true</closed>
    <created-at type="datetime">2009-03-15T00:46:30+01:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime">2009-08-29T00:00:00+02:00</milestone-due-on>
    <milestone-id type="integer">33915</milestone-id>
    <number type="integer">2</number>
    <permalink>gm_xmlhttprequest-doesnt-report-connection-errors</permalink>
    <priority type="integer">2</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>resolved</state>
    <tag>!medium #bug :trivial</tag>
    <title>GM_xmlhttpRequest doesn't report connection errors</title>
    <updated-at type="datetime">2009-03-15T02:13:36+01:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/2</url>
    <milestone-title>0.1a1</milestone-title>
    <original-body>`GM_xmlhttpRequest` doesn't call `onerror` callback when some connection error occurs (cannot find address in DNS, server refuses connections, timeout, etc).

See: [GM#100](http://greasemonkey.devjavu.com/ticket/100)</original-body>
    <latest-body>`GM_xmlhttpRequest` doesn't call `onerror` callback when some connection error occurs (cannot find address in DNS, server refuses connections, timeout, etc).

See: [GM#100](http://greasemonkey.devjavu.com/ticket/100)</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;&lt;code&gt;GM_xmlhttpRequest&lt;/code&gt; doesn't call &lt;code&gt;onerror&lt;/code&gt;
callback when some connection error occurs (cannot find address in
DNS, server refuses connections, timeout, etc).&lt;/p&gt;
&lt;p&gt;See: &lt;a href=&quot;http://greasemonkey.devjavu.com/ticket/100&quot;&gt;GM#100&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">false</closed>
    <created-at type="datetime">2009-03-15T01:26:24+01:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime" nil="true"></milestone-due-on>
    <milestone-id type="integer" nil="true"></milestone-id>
    <number type="integer">6</number>
    <permalink>cant-scroll-to-the-bottom-of-the-scripts-list</permalink>
    <priority type="integer">3</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>new</state>
    <tag>!high #bug :small</tag>
    <title>Can't scroll to the bottom of the scripts list</title>
    <updated-at type="datetime">2009-03-15T02:03:14+01:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/6</url>
    <original-body>When the list of scripts is longer than the scripts box is high, it is not possible to scroll all the way to the bottom.  
Reproducible by resizing the manage dialog.

See: [GM#24](http://greasemonkey.devjavu.com/ticket/24)</original-body>
    <latest-body>When the list of scripts is longer than the scripts box is high, it is not possible to scroll all the way to the bottom.  
Reproducible by resizing the manage dialog.

See: [GM#24](http://greasemonkey.devjavu.com/ticket/24)</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;When the list of scripts is longer than the scripts box is high,
it is not possible to scroll all the way to the bottom.&lt;br&gt;
Reproducible by resizing the manage dialog.&lt;/p&gt;
&lt;p&gt;See: &lt;a href=&quot;http://greasemonkey.devjavu.com/ticket/24&quot;&gt;GM#24&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
  <ticket>
    <assigned-user-id type="integer">50212</assigned-user-id>
    <attachments-count type="integer">0</attachments-count>
    <closed type="boolean">true</closed>
    <created-at type="datetime">2009-03-14T23:29:04+01:00</created-at>
    <creator-id type="integer">50212</creator-id>
    <milestone-due-on type="datetime">2009-08-29T00:00:00+02:00</milestone-due-on>
    <milestone-id type="integer">33915</milestone-id>
    <number type="integer">1</number>
    <permalink>wm-logs-an-error-if-firebug-is-not-installed</permalink>
    <priority type="integer">1</priority>
    <project-id type="integer">27038</project-id>
    <raw-data type="binary" nil="true" encoding="base64"></raw-data>
    <state>resolved</state>
    <tag>!low #annoyance :trivial</tag>
    <title>WM logs an error if Firebug is not installed</title>
    <updated-at type="datetime">2009-03-15T01:59:14+01:00</updated-at>
    <user-id type="integer">50212</user-id>
    <user-name>Olivier Cornu</user-name>
    <creator-name>Olivier Cornu</creator-name>
    <assigned-user-name>Olivier Cornu</assigned-user-name>
    <url>http://ocornu.lighthouseapp.com/projects/27038/tickets/1</url>
    <milestone-title>0.1a1</milestone-title>
    <original-body>See: http://greasemonkey.devjavu.com/ticket/232</original-body>
    <latest-body>See: http://greasemonkey.devjavu.com/ticket/232</latest-body>
    <original-body-html>&lt;div&gt;&lt;p&gt;See: &lt;a href=&quot;http://greasemonkey.devjavu.com/ticket/232&quot;&gt;http://greasemonkey.devjavu.com/...&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</original-body-html>
  </ticket>
</tickets>
