<!--
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
-->

<!-- ======================================================================= -->
<h2>2012/??/?? - version 2.0.0</h2>

<ul>

<li><p>port the server from Java to node.js

</ul>

<p>issues resolved:
<ul>
<li><a href="https://issues.apache.org/jira/browse/CB-10">CB-10</a>  - Apache source headers in callback-weinre
<li><a href="https://issues.apache.org/jira/browse/CB-36">CB-36</a>  - move/delete GitHub issues at phonegap/weinre and callback/callback-weinre into the Apache Callback JIRA
<li><a href="https://issues.apache.org/jira/browse/CB-83">CB-83</a>  - implement the server in node
<li><a href="https://issues.apache.org/jira/browse/CB-100">CB-100</a>  - fix issues regarding pre-req licenses for weinre distribution
<li><a href="https://issues.apache.org/jira/browse/CB-175">CB-175</a>  - error when XHR contentType is null
<li><a href="https://issues.apache.org/jira/browse/CB-176">CB-176</a>  - add vendor files to weinre instead of pulling in at build time
<li><a href="https://issues.apache.org/jira/browse/CB-182">CB-182</a>  - error when XHR contentType is null
<li><a href="https://issues.apache.org/jira/browse/CB-232">CB-232</a>  - rename assets from PhoneGap to Cordova
<li><a href="https://issues.apache.org/jira/browse/CB-257">CB-257</a>  - the README.md in the weinre-node distribution is bogus
<li><a href="https://issues.apache.org/jira/browse/CB-259">CB-259</a>  - create a weinre tarball as a build archive that is npm install-able
<li><a href="https://issues.apache.org/jira/browse/CB-266">CB-266</a>  - weinre runtime error if you don't have a ~/.weinre/server.settings file
<li><a href="https://issues.apache.org/jira/browse/CB-284">CB-284</a>  - invocation exception on WeinreClientEventsImpl.connectionCreated(): TypeError: Cannot read property 'url' of undefined
<li><a href="https://issues.apache.org/jira/browse/CB-288">CB-288</a>  - re-version as 2.0.0
<li><a href="https://issues.apache.org/jira/browse/CB-293">CB-293</a>  - bullet-proof modjewel
<li><a href="https://issues.apache.org/jira/browse/CB-294">CB-294</a>  - various exceptions thrown in the target in WeinreTargetEventsImpl.connectionCreated()
<li><a href="https://issues.apache.org/jira/browse/CB-315">CB-315</a>  - generate valid Apache release artifact names
<li><a href="https://issues.apache.org/jira/browse/CB-540">CB-540</a>  - ability to easily navigate to particular place in DOM via bookmarks/jump to selector
<li><a href="https://issues.apache.org/jira/browse/CB-873">CB-873</a>  - setTimeout() and setInterval() usage with string arguments is busted
<li><a href="https://issues.apache.org/jira/browse/CB-984">CB-984</a>  - cannot install weinre with Node 0.8.0
<li><a href="https://issues.apache.org/jira/browse/CB-1666">CB-1666</a> - "INVALID_STATE_ERR: DOM Exception 11" with chbrody/Cordova-SQLitePlugin
</ul>

<!-- ======================================================================= -->
<h2>2011/12/01 - version 1.6.1</h2>

<ul>

<li><p>Error handling for some built-in callbacks has been removed.  This function
was added in version 1.6.0.  Unfortunately, it had some problems, and it wasn't
clear if the fix was going to make things worse.

</ul>

<p>issues resolved:
<ul>
<li> <a href="https://issues.apache.org/jira/browse/CB-82"> apache/callback issue 82</a> - removeEventListener broken
</uL>

<!-- ======================================================================= -->
<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>