801 Commits

Author SHA1 Message Date
Juan Cruz Viotti
69a6674309 v1.0.0-beta.2
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-07 05:28:37 -04:00
Juan Cruz Viotti
77d9fadc83 Codesign OS X app inside the DMG package
This PR fixes a frequent issue users were having where opening

`Etcher.app` would result in:



    "Etcher.app" is damaged and can't be opened. You should move it to

    the trash.



Checking the code-signature of the application returned the following

error message:



    $ spctl -a -v Etcher.app

    Etcher.app: invalid signature (code or signature have been modified)



The solution is based on the following paragraphs from Apple's "OS X

Code Signing in Depth" technical note:



https://developer.apple.com/library/mac/technotes/tn2206/_index.html



> Code signing uses extended attributes to store signatures in non-Mach-O

> executables such as script files. If the extended attributes are lost

> then the program's identity will be broken. Thus, when you ship your

> script, you must use a mechanism that preserves extended attributes.

>

> One way to guarantee preservation of extended attributes is by packing

> up your signed code in a read-write disk image (DMG) file before signing

> and then, after signing, converting to read-only. You probably don't

> need to use a disk image until the final package stage so another less

> heavy-handed method would be to use ZIP or XIP files.



In summary, what we now do is:



- Create a temporal read-write DMG image.

- Perform the code-signing *inside* the DMG image.

- Convert the temporal DMG image into a compressed read-only image.



Sadly, this custom workflow doesn't fit in `electron-packager` nor

`electron-builder`, so we had to re-implement the features those

packages provide us in a nice encapsulated way ourselves.



Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-07 05:20:52 -04:00
Juan Cruz Viotti
3392a5eca1 Implement write validation support
* Extend ProgressButton to support a striped progress bar

This feature will be used to implement the burn validation step.

* Implement alert-ribbon CSS component

This component will be used to inform an error situation to the user
during the burn/check processes.

* Add "Enable write validation on success" setting

* Implement write validation support

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
Fixes: https://github.com/resin-io/etcher/issues/45
2016-04-06 21:53:35 -04:00
Juan Cruz Viotti
e8516b1727 Fix shell.openExternal() freezing GNU/Linux
Electron's `shell.openExternal()` fails on GNU/Linux when Electron is

ran with `sudo`.  The issue was reported, and this is a workaround until

its fixed on the Electron side.



`node-open` is smart enough to check the `$SUDO_USER` environment

variable and to prepend `sudo -u <user>` if needed.



We keep `shell.openExternal()` for OSes other than Linux since we intend

to fully rely on it when the issue is fixed, and since its closer

integration with the operating system might lead to more accurate

results than a third party NPM module.



See https://github.com/electron/electron/issues/5039

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-04-06 11:12:46 -04:00
Juan Cruz Viotti
18a1606988 Implement a drive selector modal
This modal provides a more advanced way to select a drive. It prevents
certain issues the dropdown was having, like the contents overflowing
when there were many connected drives.

Fixes: https://github.com/resin-io/etcher/issues/202
2016-03-31 12:18:23 -04:00
Juan Cruz Viotti
a252b3a7e7 v1.0.0-beta.1 2016-03-28 13:26:24 -04:00
Juan Cruz Viotti
cb8da11b89 Add missing package metadata
- Legal copyright.
- Company name.
- File description.
- Original filename.
- Product name.
- Internal name.
2016-03-25 10:10:07 -04:00
Juan Cruz Viotti
53a026eee0 Upgrade drivelist to v2.0.9
This new version contains various fixes to better detect removable
drives.
2016-03-24 13:36:47 -04:00
Juan Cruz Viotti
9e76193c37 Bump version to v1.0.0-beta.0
This is the correct way of adding a pre-release identifier according to
https://github.com/npm/node-semver.
2016-03-10 12:24:29 -04:00
Juan Cruz Viotti
3d7b9d3a31 Upgrade drivelist to v2.0.8
This version omits DMG mounted images by default.

Fixes: https://github.com/resin-io/etcher/issues/193
2016-03-10 09:59:47 -04:00
Juan Cruz Viotti
95eff44af5 Move package.ignore contents to package.json
This allows `Makefile` to require and join the ignore entries easily
with NodeJS instead of relying on `tr` and `sed`.
2016-03-09 09:04:03 -04:00
Juan Cruz Viotti
728524f6e3 Upgrade resin-image-zip to v1.1.2
This version contains a fix to prevent the test suite from crashing.
2016-03-08 15:43:08 -04:00
Juan Cruz Viotti
a5322950da Add support for zip images in select image dialog
The "Select Image" dialog now permits the user selecting zip files. Once
the zip file is selected, `resin-zip-image` scans the archive to ensure
its validity. If its not valid, an error alert is shown and nothing is
selected.
2016-03-07 12:14:05 -04:00
Juan Cruz Viotti
e5ddb2f2cb Make writer.getImageStream() extract images from zip archives 2016-03-07 09:20:58 -04:00
Juan Cruz Viotti
64c27235bf Make use of UI Router 2016-03-01 19:50:25 -04:00
Juan Cruz Viotti
61a1527c7e Implement settings screen 2016-03-01 12:22:03 -04:00
Juan Cruz Viotti
f59b7ecc04 Reformat package.json
We made some manual changes to `package.json` that were not formatted
correctly.

This PR lets `npm` itself reorganize and format the manifest.
2016-03-01 10:45:50 -04:00
Juan Cruz Viotti
4945ba5ef9 Upgrade angular-ui-bootstrap to v1.2.1
There are no breaking changes in the only widget we're using from this
library, `uib-dropdown.`
2016-03-01 10:37:43 -04:00
Juan Cruz Viotti
52c81a5afc Merge pull request #164 from resin-io/upgrade/gulp-jshint
Upgrade gulp-jshint to v2.0.0
2016-03-01 10:31:35 -04:00
Juan Cruz Viotti
98d1c57f61 Upgrade Lodash to v4.5.1
None of the functions we were using suffered from breaking changes.
2016-03-01 10:23:34 -04:00
Juan Cruz Viotti
55e1c33eb1 Upgrade gulp-jshint to v2.0.0
This new version includes `jshint` as a `peerDependency`, meaning we
must manually install it as well.

See https://github.com/spalger/gulp-jshint/blob/master/CHANGELOG.md#20
2016-03-01 10:20:40 -04:00
Juan Cruz Viotti
1c6675ab4f Integrate Mixpanel 2016-02-29 15:52:00 -04:00
Juan Cruz Viotti
1f85fab840 Move display name setting from Makefile to package.json 2016-02-29 14:20:54 -04:00
Juan Cruz Viotti
f4067bacb0 Upgrade Electron to v0.36.8
This version contains a fix to prevent dropping capabilities in renderer
threads.

See https://github.com/atom/electron/issues/3666
Fixes https://github.com/resin-io/etcher/issues/52
2016-02-19 11:01:16 -04:00
Juan Cruz Viotti
0273a167b5 Merge pull request #152 from resin-io/feat/windows-installers
Implement Windows installers
2016-02-09 09:17:28 -04:00
Juan Cruz Viotti
44ce11b338 Implement Windows installers
Partially Fixes: https://github.com/resin-io/etcher/issues/88
2016-02-09 09:12:35 -04:00
Juan Cruz Viotti
c0e8618813 Upgrade sudo-prompt to v2.2.0
This version contains a fix to allow the module to run on `asar`
packages.
2016-02-09 08:55:16 -04:00
Juan Cruz Viotti
feb04f8773 Downgrade sudo-prompt to v1.1.8
Later versions make use of shell commands over the internal contents of
the module causing errors when the application is packaged as an
`asar`.

This issue is being fixed here: https://github.com/jorangreef/sudo-prompt/issues/10
2016-02-08 14:28:49 -04:00
Juan Cruz Viotti
d73700cdd1 Implement OS X installer 2016-02-08 12:38:10 -04:00
Juan Cruz Viotti
f88bb3a31a Rename project to Etcher 2016-01-24 17:40:45 -04:00
Juan Cruz Viotti
d2e3c3106e Install TrackJS from NPM
See https://www.npmjs.com/package/trackjs
2016-01-22 10:48:02 -04:00
Juan Cruz Viotti
7b14b1b4a2 Merge pull request #107 from resin-io/feat/jscs
Integrate JSCS
2016-01-22 10:35:01 -04:00
Juan Cruz Viotti
14c0a60cbc Run jscs as part of gulp lint 2016-01-22 10:25:33 -04:00
Juan Cruz Viotti
dbdbde5b99 Make use of "progress" mocha reporter 2016-01-22 10:19:04 -04:00
Juan Cruz Viotti
efb055eb89 Upgrade Electron to v0.36.4 2016-01-22 09:37:57 -04:00
Juan Cruz Viotti
96bf7f3624 Get rid of Browserify
Electron already exposes `require()` in the renderer process.
2016-01-21 23:57:04 -04:00
Juan Cruz Viotti
5af3cf3fb9 Simplify drive letter / device conditional
The `drivelist` module includes a new property called `name` in `2.0.7`
that resolves to the drive letter (mount point) on Windows, and to the
drive otherwise.
2016-01-11 01:24:52 -04:00
Juan Cruz Viotti
35c3351533 Change license to Apache 2.0 2016-01-03 22:42:44 -04:00
Juan Cruz Viotti
408a3096fc Rename Herostratus to Resin Etcher 2016-01-01 18:07:45 -04:00
Juan Cruz Viotti
328adfe60b Replace windosu with elevator
For some reason, when using `windosu`, the app is elevated three times.
However this only happens when the application is packaged for
distribution.

After a couple of days debugging this issue, we have no clue about
what's going on, but `elevator` seems to work fine.

Fixes: https://github.com/resin-io/herostratus/issues/29
2015-12-17 14:12:59 -04:00
Juan Cruz Viotti
fce58a3ad0 Fix drivelist spawn issues inside asar package
The following libraries were upgraded to versions that include this fix:

- electron-prebuilt
- drivelist

Fixes: https://github.com/resin-io/herostratus/issues/35
Fixes: https://github.com/resin-io/herostratus/issues/18
2015-12-14 16:29:08 -04:00
Juan Cruz Viotti
c166ff2bb8 Upgrade windosu to v0.2.0
This version contains a fix for a cmd.exe window popping in for a
fraction of a second when elevating Herostratus on Windows.

Fixes: https://github.com/resin-io/herostratus/issues/39
2015-11-29 20:23:55 -04:00
Juan Cruz Viotti
da279820dc Eject Windows drives after successful burning
Use the `removedrive` for this task:

https://github.com/jviotti/removedrive

Fixes: https://github.com/resin-io/herostratus/issues/40
2015-11-23 13:40:32 -04:00
Juan Cruz Viotti
479205c2c6 osx: Fix first time elevation failure
Currently we fire and forget `sudoPrompt.exec()` and run a timeout for
`process.exit(0)` right away, however this means that the timeout will
start as soon as the elevation dialog is shown when no sudo cache exists
and therefore the timeout will finish before the user can type his
password and submit.

The fix is to keep the parent alive until the children dies, but call
`app.dock.hide()` to make the parent completely invisible to the
operating system.

Fixes: https://github.com/resin-io/herostratus/issues/31
2015-11-19 13:31:45 -04:00
Juan Cruz Viotti
f55400ec98 Use Bluebird instead of native promises
Native promises showed strange behaviour from time to time.
2015-11-13 14:43:42 -04:00
Juan Cruz Viotti
c5418e7cde Remove window.mocha stub
The real issue was fixed in
https://github.com/jprichardson/electron-mocha/pull/20
2015-11-09 10:42:23 -04:00
Juan Cruz Viotti
ee3c7d4e33 Downgrade to Electron v0.31.2
This version is the last one that works on GNU/Linux.
2015-11-09 10:08:28 -04:00
Juan Cruz Viotti
657e7818d7 Merge pull request #5 from resin-io/jviotti/build/packaging
Package application for all supported oses
2015-10-30 15:28:39 -04:00
Juan Cruz Viotti
e793927e5a Package application for all supported oses 2015-10-30 15:11:48 -04:00
Juan Cruz Viotti
84ae209f14 Upgrade sudo-prompt to v1.1.8
This version contains a fix that allows Herostratus to be correctly
elevated when running with `npm start`.

See fix here:
344da8f7b2
2015-10-30 11:33:38 -04:00