I always keep writing up this same announcement message whenever I publish a new version.
I've now written a script to automate my announcement formatting, it looks like this:
```
**MetaMask 2.13.2** now published to the Chrome Store! It should be available over the next hour!
2016-10-4
- Fix bug where chosen FIAT exchange rate does no persist when switching networks
- Fix additional parameters that made MetaMask sometimes receive errors from Parity.
- Fix bug where invalid transactions would still open the MetaMask popup.
```
The new lightweight svg logo was not following text quite right.
The new `lookAt` method was not using the same logic the module was using internally on mouse movement.
I simply used that logic and exposed it via the old (expected) API, and got it behaving the way I like.
Fixed logo deallocation related bugs, had to patch the logo repo itself to add a stopAnimating method.
Also tuned up the logo to more closely resemble the old behavior.
- Overlaps the title text
- Points nose at cursor, not just front of eyes
- Cursor is more "distant" from fox, to avoid extreme angles on edges.
- No longer need to check for webGL compliance (svg rendered!)
- logo.canvas has been replaced with logo.container, since svg doesn't render to canvas but to an element.
Otherwise, worked with very little effort!!
Fixes#624
* Add platform specific folders to dist folder
* Remove gulp hacks
* Add platform specific bundling
dev and dist tasks now build into platform-specific folders within the `dist` folder.
Added tasks `gulp zip` and `gulp dist`.
`zip` builds the platform-specific folders into platform-specific bundles within the `dist` folder.
`dist` builds and then zips all at once.
* Fix chrome bundle zipping
* Fix broken reference in eth warning
* Fix but where web3.eth.accounts are not available in firefox.
* Bump changelog
* Add UI Testing Framework and Simple UI Test
Added a Testem configuration that launches a Qunit page with an iFrame that builds and loads our mock-dev page and can interact with it and run tests on it.
Wrote a simple test that accepts the terms and conditions and transitions to the next page.
I am not doing any fancy redux-hooks for the async waiting, I've simply added a `tests/integration/helpers.js` file with a `wait()` function that returns a promise that should wait long enough.
Long term we should hook into the app lifecycle by some means for testing, so we only wait the right amount of time, and wait long enough for slower processes to complete, but this may work for the time being, just enough to run some basic automated browser tests.
* Separate UI tests from normal unit test suite
* Add UI tests to CI test script
* Add testem and phantom to circleCI pre-script
* Fix circle pre script
* Move pre scripts to dependencies key
* Remove phantom from build deps
* Fix testem runner page
* Add promise polyfill for PhantomJS
* Skip PhantomJS in testem
* Run browser tests in parallel
* Fix promise usage?
* Correct skip usage
Huge thanks to the Firefox team, for their help on the issue of our long-standing inpage script race condition.
http://stackoverflow.com/questions/38577656/how-can-i-make-a-firefox-add-on-contentscript-inject-and-run-a-script-before-oth
The problem is that we were injecting a `script` tag and assigning its `src` attribute, which triggers an asynchronous fetch request, and does not guarantee execution order! (That was news to me!)
Instead, I'm now assigning the `script` tag a `textContent` value of the script to inject, and it seems to fix the problem!
There is also a Firefox-only API that could solve this whole problem in an even more elegant way, so we might want to expose a code path for that solution later on:
https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.exportFunction
Allows you to expose an object from one scope to another. There was even talk of creating a polyfill for it that does virtually what we do, message passing between contexts.