[CB-3328] - chrome version >= 27 breaks flex-box usage

drive-by fix:
- excise grunt, replace usage with wr
diff --git a/.wr b/.wr
new file mode 100644
index 0000000..265dd0a
--- /dev/null
+++ b/.wr
@@ -0,0 +1,14 @@
+weinre.build/build-dev.sh
+
+weinre.build/build.properties
+weinre.build/build.xml
+weinre.build/package.json.template
+weinre.build/scripts
+
+weinre.doc
+weinre.server/interfaces
+weinre.server/lib
+weinre.server/package.json
+weinre.server/README.md
+
+weinre.web
diff --git a/README.md b/README.md
index 27d006b..dc45f47 100644
--- a/README.md
+++ b/README.md
@@ -124,8 +124,8 @@
 
 ### other fun development-time hacks ###
 
-If you have the [grunt tool](https://github.com/cowboy/grunt) installed, there is
-a `grunt.js` file available to run the development builds when a source file
+If you have the [wr tool](https://npmjs.org/package/wr) installed, there is
+a `.wr` file available to run the development builds when a source file
 changes.
 
 The build is growl-enabled, so you can see a quick message when the build
@@ -137,7 +137,7 @@
 weinre server generated by the development build, whenever a weinre build
 completes.
 
-Putting this altogether, you can open two terminal windows, run `grunt` in the
+Putting this altogether, you can open two terminal windows, run `wr` in the
 main directory to have a development build run whenever you change
 the source, and then run `weinre-hot` in the `weinre.server` directory to have
 the weinre server restart whenever a build completes, getting a growl
diff --git a/grunt.js b/grunt.js
deleted file mode 100644
index 0876003..0000000
--- a/grunt.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * 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.
- */
-
-// open "http://search.npmjs.org/#/grunt" ; sudo npm -g install grunt
-
-var child_process = require("child_process")
-
-//------------------------------------------------------------------------------
-// list of source files to watch
-//------------------------------------------------------------------------------
-var sourceFiles = [
-    "grunt.js",
-    
-    "weinre.build/*.sh", 
-    "weinre.build/*.properties", 
-    "weinre.build/*.xml", 
-    "weinre.build/*.template", 
-    "weinre.build/scripts/**/*", 
-    
-    "weinre.doc/**/*",
-    
-    "weinre.server/interfaces/**/*",
-    "weinre.server/lib/**/*",
-    "weinre.server/package.json",
-    "weinre.server/README.md",
-
-    "weinre.web/**/*"
-]
-
-//------------------------------------------------------------------------------
-var gruntConfig = {
-    watch: {
-        make: {
-            files: sourceFiles,
-            tasks: ["runAnt"]
-        }
-    }
-}
-
-//------------------------------------------------------------------------------
-module.exports = function(grunt) {
-    grunt.initConfig(gruntConfig)
-    
-    grunt.registerTask("default", "watch")
-    grunt.registerTask("runAnt", "run ant", function(){task_runAnt(this, grunt)})
-}
-
-//------------------------------------------------------------------------------
-// run "make"
-//------------------------------------------------------------------------------
-function task_runAnt(task, grunt) {
-    var done = task.async()
-    var make = child_process.spawn('ant', ['-f', 'weinre.build/build.xml'])
-    
-    make.stdout.on("data", function(data) {
-        grunt.log.write("" + data)
-    })
-    
-    make.stderr.on("data", function(data) {
-        grunt.log.error("" + data)
-    })
-    
-    make.on("exit", function(code) {
-        if (code === 0) return done(true)
-        
-        grunt.log.writeln("error running ant", code)
-        return done(false)
-    })
-}
-
diff --git a/weinre.doc/ChangeLog.body.html b/weinre.doc/ChangeLog.body.html
index 3bbbcf0..1849d5a 100644
--- a/weinre.doc/ChangeLog.body.html
+++ b/weinre.doc/ChangeLog.body.html
@@ -53,6 +53,7 @@
 <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-3328">CB-3328</a> - chrome version >= 27 breaks flex-box usage
 </ul>
 
 <!-- ======================================================================= -->
diff --git a/weinre.web/client/weinre/hacks.js b/weinre.web/client/weinre/hacks.js
index 28b12ad..6f0290b 100644
--- a/weinre.web/client/weinre/hacks.js
+++ b/weinre.web/client/weinre/hacks.js
@@ -18,3 +18,26 @@
  */
 
 // a place for hacks
+
+;(function(){
+
+var version = navigator.appVersion.match(/^.*Chrome\/(\d+)\..*$/)
+if (!version) return
+
+version = parseInt(version[1])
+if (version <= 26) return
+
+setTimeout(fixToolbarItem, 1000)
+
+function fixToolbarItem() {
+    var toolbarItems = document.querySelectorAll(".toolbar-item.toggleable")
+
+    for (var i=0; i<toolbarItems.length; i++) {
+        var style = toolbarItems[i].style
+        if (style.display != "none") {
+            toolbarItems[i].style.display = "inline-block"
+        }
+    }
+}
+
+})();