<!--
 * weinre is available under *either* the terms of the modified BSD license *or* the
 * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 *
 * Copyright (c) 2011 IBM Corporation
-->

<!-- ======================================================================= -->
<h2>Downloads</h2>

<p><a href="https://github.com/callback/callback-weinre/downloads">https://github.com/callback/callback-weinre/downloads</a>

<!-- ======================================================================= -->
<h2>2011/10/28 - version 1.6.0</h2>

<ul>

<li><p>The Network panel has been added to weinre, which will display information
for any XHRs that you issue.

<li><p>Error handling for some built-in callbacks has been added.  The support
is very similar to what's provided in the
<a href="https://github.com/pmuellr/log-callback-error">log-callback-error project</a>,
though the implementation is different.

<li><p>The element highlighter has been modified to show brighter colors.
The colors also now more closely match the Web Inspector colors.
Currently, there are some artifacts in the corners in some cases, but it's not
clear to me this is a huge problem - in fact, maybe it's a feachur.  ~shrug~
As part of this clean up, I've made the element highlighter pluggable.  If you
think you can do better, it should be pretty straight-forward to code up a
new one.  Bring it on.

<li><p>The JavaScript code for weinre has been converted from the "scoop" DSL
format to CoffeeScript.  You no longer have a valid excuse for not hacking the
code.

<li><p>The "Test Drive" page of the doc has been removed and replaced with
the new "User Interface" page.

<li><p>weinre now adds an "error" listener to window.  For JavaScript engines
that support "window onerror", you will now see a message logged to the console
when an error occurs anywhere in your JavaScript code.  Unfortunately, just
as support for "window onerror" is becoming available in JavaScript, the browsers
are neutering it's support.  Depending on your browser, you may or may not
see these errors reported, and even if you do, they may not give you <b>any</b>
useful information.  Thanks to Ryan Seddon for supplying the following
backgrounder links for your enjoyment:

<ul>
<li><a href="http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-September/033252.html">http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-September/033252.html</a>
<li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=568564">https://bugzilla.mozilla.org/show_bug.cgi?id=568564</a>
<li><a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=14177">http://www.w3.org/Bugs/Public/show_bug.cgi?id=14177</a>
<li><a href="https://bugs.webkit.org/show_bug.cgi?id=70574">https://bugs.webkit.org/show_bug.cgi?id=70574</a>
</ul>

</ul>

<p>issues resolved:
<ul>
<li> <a href="https://issues.apache.org/jira/browse/CB-1">   issue apache/callback issue 1</a> - update the doc
<li> <a href="https://github.com/phonegap/weinre/issues/41"> issue phonegap/weinre 41</a> - add support for XHRs on Network panel
<li> <a href="https://github.com/phonegap/weinre/issues/40"> issue phonegap/weinre 40</a> - clean up spurious messages in the server console
<li> <a href="https://github.com/phonegap/weinre/issues/38"> issue phonegap/weinre 38</a> - cleanup some of the exception handler bits
<li> <a href="https://github.com/phonegap/weinre/issues/37"> issue phonegap/weinre 37</a> - Timeout function does not pass arguments
<li> <a href="https://github.com/phonegap/weinre/issues/35"> issue phonegap/weinre 35</a> - convert JavaScript in weinre from scoop to CoffeeScript
<li> <a href="https://github.com/phonegap/weinre/issues/20"> issue phonegap/weinre 20</a> - add support for window.onerror
<li> <a href="https://github.com/phonegap/weinre/issues/19"> issue phonegap/weinre 19</a> - 404 error on /client/index.html in Mac app (incomplete build?)
<li> <a href="https://github.com/phonegap/weinre/issues/11"> issue phonegap/weinre 11</a> - provide better error handling - by hook or by crook
<li> <a href="https://github.com/phonegap/weinre/issues/10"> issue phonegap/weinre 10</a> - element highlighter code in the target is just awful
</ul>

<!-- ======================================================================= -->
<h2>2011/07/22 - version 1.5.0</h2>

<ul>

<li><p>The Resources panel now includes an active Databases section.  For any WebSQL
database that you open, you should see an entry in the expanded section.  For each database,
you'll see the list of tables owned by the database when the database section
is expanded.  Note that you need to open
the database to see it listed here.  Databases which you have previously created
in other browsing sessions will not be displayed until they are first opened.

<p>Clicking on a database table will dump the database contents to the panel.
Clicking on the database itself will provide a prompter for you to run SQL
commands against that database.  For example, entering
<tt>"select * from YourTableNameHere"</tt>
will dump the table contents to the panel.

<li><p>Some of the console functions, like <tt>console.log()</tt>, were not handling
object arguments correctly.  You should now see a an object display.  For example,
typing <tt>"window"</tt> or <tt>"console.log(window)"</tt> into the console
will show you the same object display for the window.

<li><p>The ant build script did not have the correctly-cased file names for some
of the files, and the build failed.  This has been fixed.  You should be able
to do a build on Linux, and other case-sensitive file systems.

<li><p>While weinre already removes some of the Web Inspector panels wholesale,
there were still a number of meaningless gee-gaws on the panels that we do show.
Those have been surgically removed with CSS.

</ul>

<p>issues closed:
<ul>
<li> <a href="https://github.com/phonegap/weinre/issues/7">issue 7</a> - support for WebSQL
<li> <a href="https://github.com/phonegap/weinre/issues/8">issue 8</a> - console.log() etal don't handle object parameters
<li> <a href="https://github.com/phonegap/weinre/issues/12">issue 12</a> - wrong-cased file names in ant scripts for Linux
<li> <a href="https://github.com/phonegap/weinre/issues/16">issue 16</a> - hide stuff in the Web Inspector UI that's not used
</ul>

<!-- ======================================================================= -->
<h2>2011/05/09 - version 1.4.0</h2>
<ul>
<li> better calculation of object's class name. closes <a href="https://github.com/pmuellr/weinre/issues/41">issue 41</a>.
<li> initial set of changes in for extensions. closes <a href="https://github.com/pmuellr/weinre/issues/8">issue 8</a>.
<li> added json2.js to the mix; part of issue <a href="https://github.com/pmuellr/weinre/issues/45">issue 45</a>.
<li> works with recent scooj release.  closes <a href="https://github.com/pmuellr/weinre/issues/52">issue 52</a>.
<li> add non-authenticated multi-user support.  closes <a href="https://github.com/pmuellr/weinre/issues/50">issue 50</a>.
See <a href="MultiUser.html">the MultiUser doc page</a> for more information.
</ul>

<p>issues closed:
<ul>
<li> <a href="https://github.com/pmuellr/weinre/issues/8">issue 8</a> - enable extensions
<li> <a href="https://github.com/pmuellr/weinre/issues/41">issue 41</a> - in JSC, inspected object's class is always "object"
<li> <a href="https://github.com/pmuellr/weinre/issues/50">issue 50</a> - add non-authenticated multi-user support
<li> <a href="https://github.com/pmuellr/weinre/issues/52">issue 52</a> - react to recent modjewel / scooj changes
</ul>

<!-- ======================================================================= -->
<h2>2011/04/05 - version 1.3.0</h2>
<ul>
<li> style editing now enabled in Elements panel
<li> localStorage and sessionStorage views enabled in Resources panel
<li> URLs to vendor repos updated for the weinre build
<li> check for bad versions of Prototype.js
</ul>

<p>issues closed:
<ul>
<li><a href="https://github.com/pmuellr/weinre/issues/21">issue 21</a> - add support for localStorage
<li><a href="https://github.com/pmuellr/weinre/issues/35">issue 35</a> - testing local files on IOS
<li><a href="https://github.com/pmuellr/weinre/issues/36">issue 36</a> - element.style cannot be edited
<li><a href="https://github.com/pmuellr/weinre/issues/44">issue 44</a> - update vendor repos
</ul>

<!-- ======================================================================= -->
<h2>2011/03/12 - version 1.2.0</h2>
<ul>
<li> DOM elements are now updated live as they change in the target
<li> more console support; sprintf formatting and expandable object logging
</ul>

<p>issues closed:
<ul>
<li><a href="https://github.com/pmuellr/weinre/issues/27">issue 27</a> - edge case where programmatically created DOM is only picked up partially
<li><a href="https://github.com/pmuellr/weinre/issues/37">issue 37</a> - console.log output doesn't do sprintf-style string interpolations
</ul>

<!-- ======================================================================= -->
<h2>2011/03/02 - version 1.1.0</h2>
<ul>
<li>added Timeline panel; tracks timers, intervals, XHRs, some other events, and
    <tt>console.markTimeline(<i>string</i>)</tt>
<li>now showing matching style rules in Elements panel
<li>no more diagnostic messages in the user's console; they are now written
    to the server console
<li>caught up to a more recent version of Web Inspector
<li>refactoring, technical debt paydown
</ul>

<p>issues closed:
<ul>
<li><a href='https://github.com/pmuellr/weinre/issues/10'>issue 10</a> - enable Timeline panel, and provide some events
<li><a href='https://github.com/pmuellr/weinre/issues/20'>issue 20</a> - catch up to latest Web Inspector code base
<li><a href='https://github.com/pmuellr/weinre/issues/23'>issue 23</a> - mac app's web pages can't connect to server
<li><a href='https://github.com/pmuellr/weinre/issues/24'>issue 24</a> - weinre server runs slowly on windows
<li><a href='https://github.com/pmuellr/weinre/issues/25'>issue 25</a> - pay down technical debt
<li><a href='https://github.com/pmuellr/weinre/issues/28'>issue 28</a> - create a standalone Java launch
<li><a href='https://github.com/pmuellr/weinre/issues/29'>issue 29</a> - autoconnect does not always work
<li><a href='https://github.com/pmuellr/weinre/issues/30'>issue 30</a> - all-json-idls.js is a pig
<li><a href='https://github.com/pmuellr/weinre/issues/31'>issue 31</a> - redirect error/warn/info/debug messages from client and target to server
<li><a href='https://github.com/pmuellr/weinre/issues/32'>issue 32</a> - monospace font too small everywhere
<li><a href='https://github.com/pmuellr/weinre/issues/33'>issue 33</a> - update doc
</ul>

<!-- ======================================================================= -->
<h2>2011/01/25 - version 1.0.0</h2>
<ul>
<li> Don't display "not implemented" messages. Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 19</a>.
<li> Remove node highlighting cruft.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 18</a>.
<li> Add meta element to enable GCF for client. Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 17</a>.
<li> Make bookmarklet more portable.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 16</a>.
<li> Enable node highlighting.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 2</a>.
<li> Change copyright statements.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 13</a>.
<li> Change Weinre.Console to Console.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 11</a>.
<li> Add implementation for settings.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 5</a>.
<li> Provide better escape for // comments in minifier.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 6</a>.
<li> Get metrics working in Elements panel.  Closes <a href="https://github.com/pmuellr/weinre/issues/1">issue 1</a>.
</ul>

<!-- ======================================================================= -->
<h2>2010/12/16 - version 0.9.9</h2>

<ul>
<li>initial release
</ul>