<!--
 * 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
<li><p>lots of other changes

</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-604">CB-604</a>   - weinre doesn't work in strict mode
<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
<li><a href="https://issues.apache.org/jira/browse/CB-1759">CB-1759</a> - doc indicates that you should launch weinre with a command prefix of `node`
<li><a href="https://issues.apache.org/jira/browse/CB-1193">CB-1193</a> - add Windows Phone support
<li><a href="https://issues.apache.org/jira/browse/CB-1800">CB-1800</a> - remove references to "incubator"
<li><a href="https://issues.apache.org/jira/browse/CB-1494">CB-1494</a> - Supports running server behind a proxy, such as Heroku Cedar
<li><a href="https://issues.apache.org/jira/browse/CB-2650">CB-2650</a> - Weinre style inspection breaks with normalize.css    
<li><a href="https://issues.apache.org/jira/browse/CB-3319">CB-3319</a> - Chrome is setting window properties which now breaks Weinre
<li><a href="https://issues.apache.org/jira/browse/CB-3328">CB-3328</a> - chrome version >= 27 breaks flex-box usage
<li><a href="https://issues.apache.org/jira/browse/CB-3378">CB-3378</a> - support for FF and IE10
</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>