492 Commits

Author SHA1 Message Date
Juan Cruz Viotti
3c5eff3739 upgrade: drivelist to v3.3.1 (#659)
This version contains a fix for the `blkid: command not found` error in
certain GNU/Linux distributions.

- https://github.com/resin-io-modules/drivelist/pull/92

Change-Type: patch
Changelog-Entry: Fix `blkid: command not found` error in certain GNU/Linux distributions.
Fixes: https://github.com/resin-io/etcher/issues/640
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-08-26 10:26:30 -04:00
Juan Cruz Viotti
e91ec71b29 upgrade: etcher-image-stream to v3.1.2 (#658)
- https://github.com/resin-io-modules/etcher-image-stream/pull/27

Change-Type: patch
Changelog-Entry: Fix incorrect estimated entry sizes in certain ZIP archives.
Fixes: https://github.com/resin-io/etcher/issues/644
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-08-24 11:30:57 -04:00
Juan Cruz Viotti
893f42a124 upgrade: etcher-image-write to v7.0.1 (#657)
- https://github.com/resin-io-modules/etcher-image-write/pull/53

Change-Type: patch
Changelog-Entry: Prevent `ENOSPC` if the drive capacity is equal to the image size.
Fixes: https://github.com/resin-io/etcher/issues/629
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-08-24 11:03:30 -04:00
Juan Cruz Viotti
8371757c70 upgrade: etcher-image-write to v7.0.0 (#651)
The change we're interested in is:

- https://github.com/resin-io-modules/etcher-image-write/pull/51

Change-Type: patch
Changelog-Entry: Prevent failed validation due to drive getting auto-mounted in GNU/Linux.
Fixes: https://github.com/resin-io/etcher/issues/574
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-08-23 10:43:05 -04:00
Juan Cruz Viotti
6af74bb9e1 upgrade: drivelist to v3.3.0 (#648)
The changes we're interested in are:

- https://github.com/resin-io-modules/drivelist/pull/89
- https://github.com/resin-io-modules/drivelist/pull/91

Change-Type: patch
Changelog-Entry: Upgrade `drivelist` to v3.3.0.
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-08-22 12:58:45 -04:00
Juan Cruz Viotti
c5af759ccf upgrade: etcher-image-stream to v3.1.1 (#647)
This version contains an optimisation that makes analysing archive
images (e.g: ZIP) for metadata much faster.

Change-Type: patch
Changelog-Entry: Improve speed when retrieving archive image metadata.
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-08-22 12:18:58 -04:00
Juan Cruz Viotti
a5a195e8fb feat: integrate bmap support (#635)
This PR integrates `.bmap` support recently added to
`etcher-image-write` into Etcher itself.

It does it in the following way:

- It adds a `--bmap` option to the Etcher CLI.
- It saves a potential `bmap` file contents to the
  `SelectionStateModel`.
- In the GUI, at the time of writing, if there is a `bmap` file content
  in `SelectionStateModel`, it gets written to a temporary file and such
  path is passed as the `--bmap` option to the CLI.

Since validation checksums don't make sense anymore, the finish screen
doesn't show the checksum box in this case.

Change-Type: minor
Changelog-Entry: Add `.bmap` support.
Fixes: https://github.com/resin-io/etcher/issues/171
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
Signed-off-by: Juan Cruz Viotti <jviotti@openmailbox.org>
2016-08-22 09:50:56 -04:00
Juan Cruz Viotti
b69d03a58b upgrade: etcher-image-stream to v3.1.0 (#633)
This version contains support to extract a bmap file out of an archive
image.

See: https://github.com/resin-io/etcher/issues/171
Change-Type: minor
Changelog-Entry: Upgrade `etcher-image-stream` to v3.1.0.
Link: https://github.com/resin-io-modules/etcher-image-stream/blob/master/CHANGELOG.md
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-08-15 14:24:11 -04:00
Juan Cruz Viotti
e30f8b08b9 v1.0.0-beta.13
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-08-05 14:47:19 -04:00
Juan Cruz Viotti
bdbff0e814 fix(GUI): display an error if no polkit authentication agent was found (#615)
Currently, if no graphical polkit authentication agent is found,
`sudo-prompt` will yield a "User did not grant permission." error, which
gives the impression the user cancelled the dialog (or entered the wrong
password), causing confusion for the user.

Instead, Etcher will now display a nice "No polkit authentication agent
found." error dialog.

Change-Type: patch
Changelog-Entry: Display an error if no graphical polkit authentication agent was found.
See: https://github.com/jorangreef/sudo-prompt/pull/29
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-08-02 21:44:24 -04:00
Juan Cruz Viotti
cc8ba8b6c9 upgrade: drivelist to v3.2.6 (#614)
Change-Type: patch
Changelog-Entry: Fix internal removable drives considered system drives in macOS Sierra.
See: https://github.com/resin-io-modules/drivelist/pull/86
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-08-01 23:45:43 -04:00
Juan Cruz Viotti
3a008bf764 upgrade: etcher-image-write to v6.0.1 (#612)
This version makes sure the device file descriptor is closed right after
validation completes. This fix prevents `RemoveDrive.exe` from throwing
an `EBUSY` error when trying to unmount the drive.

Change-Type: patch
Changelog-Entry: Upgrade `etcher-image-write` to v6.0.1.
Link: https://github.com/resin-io-modules/etcher-image-write/blob/master/CHANGELOG.md
See: https://github.com/resin-io/etcher/issues/573
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-31 22:33:51 -04:00
Juan Cruz Viotti
82cb7ab689 upgrade: removedrive to v1.0.0 (#611)
This version contains the following improvements:

- https://github.com/jviotti/removedrive/pull/3
- https://github.com/jviotti/removedrive/pull/2

We also make sure error descriptions are passed to the dialog service
since this module now sets that property in its error objects.

Change-Type: patch
Changelog-Entry: Upgrade `removedrive` to v1.0.0.
Link: https://github.com/jviotti/removedrive/blob/master/CHANGELOG.md
See: https://github.com/resin-io/etcher/issues/573
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-28 15:53:47 -04:00
Juan Cruz Viotti
2d1b2ccf6e v1.0.0-beta.12
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-26 21:31:18 -04:00
Juan Cruz Viotti
b3f2a73f5d upgrade: drivelist to v3.2.4 (#600)
This version contains the following fixes:

- Correctly handle mount points with spaces in GNU/Linux.
- Correctly report drive sizes in macOS Sierra.

Change-Type: patch
Changelog-Entry: Upgrade `drivelist` to v3.2.4.
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-26 21:04:06 -04:00
Juan Cruz Viotti
7e0f54e7d6 feat(GUI): rich image extensions (#597)
The following PRs add support for a custom `_info` directory containing
metadata such an image URL, display name, logo, etc in
`etcher-image-stream`:

- https://github.com/resin-io-modules/etcher-image-stream/pull/16
- https://github.com/resin-io-modules/etcher-image-stream/pull/14
- https://github.com/resin-io-modules/etcher-image-stream/pull/13

Now that this module supports such metadata, we make use of it in the
GUI as follows:

- The file name is replaced with the display name.
- The file name links to the image URL.
- The "Select Image" logo is replaced with the image logo.

Some miscellaneous changes introduces in this PR to support the changes
described above:

- Implement `SelectionStateModel.getImageUrl()`.
- Implement `SelectionStateModel.getImageLogo()`.
- Implement `SelectionStateModel.getImageName()`.
- Ignore the "logo" image property when displaying the "Select image"
  event, in order to not fill the console with SVG contents.
- Make `svg-icon` understand SVG strings as paths.
- Make `svg-icon` react to changes to the `path` attribute.
- Extract the core functionality of `openExternal` into
  `OSOpenExternalService`.
- Upgrade `etcher-image-stream` to v3.0.1.

Change-Type: minor
Changelog-Entry: Support rich image extensions.
Fixes: https://github.com/resin-io/etcher/issues/470
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-26 08:47:20 -04:00
Juan Cruz Viotti
ce9093625b upgrade: etcher-image-stream to v2.6.1 (#596)
This version fixes an issue were certain malformed Zip files choked
`etcher-image-stream`.

Link: https://github.com/resin-io-modules/etcher-image-stream/blob/master/CHANGELOG.md
Fixes: https://github.com/resin-io/etcher/issues/410
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-25 00:56:36 -04:00
Juan Cruz Viotti
31e02f64b8 chore: integrate versionist (#594)
Versionist is a small utility to automatically generate CHANGELOGs based
on a certain commit convention.

This PR adds a new `changelog` npm script that calls Versionist to
preppend a new CHANGELOG entry based on our current structure.

Dealing with links to changes between versions in GitHub is hard to
automatise with a tool like Versionist. We chose to get rid of such
links since they are a nice to have, but don't provide any meaningful
value to maintainers, since they can manually see the diffs with `git
diff`.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-24 23:09:56 -04:00
Juan Cruz Viotti
f02202c244 chore: get rid of gulp (#593)
The only thing we were still using gulp for was compiling SCSS.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-24 17:32:50 -04:00
Juan Cruz Viotti
604f89a54e feat: add support for raw images (#591)
Change-Type: minor
Changelog-Entry: Add support for `raw` images.
See: https://github.com/resin-io-modules/etcher-image-stream/pull/21
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-24 17:27:42 -04:00
Juan Cruz Viotti
b7d6d3d9a1 feat(GUI): display a nice alert ribbon if drive runs out of space (#588)
We try our best to check that the images the user select are too big for
the selected drive as early as possible, but this probes to be
problematic with certain compressed formats, like bzip2, which doesn't
store any information about the uncompressed size, requiring a ~50s
intensive computation as a minimum to find it out.

For these kinds of formats, we don't perform an early check, but instead
gracefully handle the case where the drive doesn't have any more space.

This PR handles an `ENOSPC` error by displaying the alert orange ribbon,
and prompting the user to retry with a larger drive. This is a huge
improvement over the cryptic `EIO` error what was thrown before, and
over having Etcher freeze at a certain percentage point.

Change-Type: minor
Changelog-Entry: Display a nice alert ribbon if drive runs out of space.
See: https://github.com/resin-io/etcher/issues/571
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-24 15:32:00 -04:00
Juan Cruz Viotti
1762ea629f fix(GUI): check drive size against uncompressed image size (#582)
We were currently checking if a drive was large enough for an image by checking
the image file size, completely ignoring compression. This results on a small
chance of the uncompressed image not actually fitting in the drive, and
throwing more weird errors later on.

In order to mitigate this, we use the new `.getEstimatedFinalSize()` function
from `etcher-image-stream`, which returns the uncompressed size in the case of
compressed images.

We needed to update the build script for OS X to configure NPM correctly,
otherwise `lzma-native` throws some errors due to an ABI V8 incompatibility
issue.

Fixes: #571
See: https://github.com/addaleax/lzma-native/issues/25
Change-Type: patch
Changelog-Entry: Check if drive is large enough using the final uncompressed size of the image.
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-19 23:17:09 -04:00
Juan Cruz Viotti
ef96ae86a0 chore: stop requiring a specific nodejs version to build Etcher (#584)
We were previously requiring users to run the exact same NodeJS version as
Electron bundled in order to avoid native add-on compilation incompatibilities,
however this problem is completely mitigated by configuring NPM to build
against an Electron specific V8.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-19 22:28:41 -04:00
Juan Cruz Viotti
e696d0722d upgrade: drivelist to v3.2.2 (#577)
This version contains a fix to check the removable state of drives without a
file system in Windows.

Link: https://github.com/resin-io-modules/drivelist/blob/master/CHANGELOG.md
Change-Type: patch
Changelog-Entry: Upgrade `drivelist` to v3.2.2.
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-18 10:55:38 -04:00
Juan Cruz Viotti
1308177d54 v1.0.0-beta.11
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-17 21:08:51 -04:00
Juan Cruz Viotti
242c042ae7 upgrade: etcher-image-write to v5.0.2 (#575)
This version contains a fix for a `diskpart` error on Windows.

Change-Type: patch
Changelog-Entry: Upgrade `etcher-image-write` to v5.0.2
Link: https://github.com/resin-io-modules/etcher-image-write/blob/master/CHANGELOG.md
See: https://github.com/resin-io/etcher/issues/552
See: https://github.com/resin-io/etcher/issues/571
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-17 20:59:50 -04:00
Juan Cruz Viotti
fa9966a2b1 upgrade(GUI): electron to v1.2.6 (#561)
This version contains a GNU/Linux fix there the image extension was
changed by the dialog.

Change-Type: patch
Changelog-Entry: Fix `ENOENT` error when selecting certain images with multiple extensions on GNU/Linux.
See: https://github.com/electron/electron/issues/6305
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-07 14:34:27 -04:00
Juan Cruz Viotti
eb3ffbfd30 upgrade: etcher-image-stream to v2.3.0 (#551)
* upgrade: etcher-image-stream to v2.3.0

This version contains support for `hddimg` files.

Changelog-Entry: Add support for `hddimg` images.
Change-Type: minor
Fixes: https://github.com/resin-io/etcher/issues/549
Link: https://github.com/resin-io-modules/etcher-image-stream/blob/master/CHANGELOG.md#v230---2016-07-01
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* minifix(GUI): add a "many more" tooltip in the first step

The amount of image types we support is growing exponentially. Adding
the uncompressed extensions and the compressed ones in a tooltip gave us
room the breathe in the past, but its not enough anymore.

The current approach allows us to scale forever: we list the first three
extensions, and add a "many more" tooltip that shows all the rest.

Change-Type: patch
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-07-01 11:05:57 -04:00
Juan Cruz Viotti
e670b6b493 upgrade: sudo-prompt to v5.1.0 (#547)
This new version contains a huge improvement on how the `kdesudo` dialog
looks.

See: 17f45ebef3
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-30 14:30:47 -04:00
Juan Cruz Viotti
c434746a49 refactor(GUI): make use of etcher-latest-version (#544)
The code that performs an HTTP request to the S3 bucket where released
are stored and determines which is the latest available version was
extracted to a separate module called `etcher-latest-version`, mainly
for the website to be able to re-use this functionality.

See: https://github.com/resin-io-modules/etcher-latest-version
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-30 13:17:03 -04:00
Juan Cruz Viotti
f277724749 fix(GUI): incorrect ETA on certain timezones (#545)
In certain timezones, like India's, the ETA would display very weird
numbers. The problem was that we passed a number of milliseconds to
MomentJS, which created a Date object based on it taking timezones into
consideration.

As a solution, we convert the seconds to a Date object containing the
lowest possible date values, and set its seconds to the ETA, since this
effectively represents just the number of seconds we're interested in.

Changelog-Entry: Fix incorrect ETA numbers in certain timezones.
Change-Type: patch
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-30 12:11:41 -04:00
Juan Cruz Viotti
ea1df5cc11 chore: make use of ESLint (#540)
JSCS has merged with ESLint. This is the perfect excuse to move to
ESLint and unify both JSHint and JSCS hints under ESLint.

This PR also deprecates `gulp lint` in favour of `npm run lint`.

See: https://medium.com/@markelog/jscs-end-of-the-line-bc9bf0b3fdb2#.zbuwvxa5y
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-30 20:09:44 +05:30
Juan Cruz Viotti
c0a21ca203 v1.0.0-beta.10
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-27 19:06:51 -04:00
Juan Cruz Viotti
1c1ec04608 fix(Windows): upgrade etcher-image-stream to v5.0.2 (#537)
This version contains a fix to an `EPERM` issue ocurring on Windows.

See: https://github.com/resin-io-modules/etcher-image-write/pull/45
Fixes: https://github.com/resin-io/etcher/issues/531
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-27 18:24:09 -04:00
Juan Cruz Viotti
1a49b36a14 refactor: store settings in redux store (#530)
* refactor: getter/setter interface for SettingsModel

This PR introduces a getter/setter interface for `SettingsModel`, which
replaces the old way of managing setting values by simply assigning
properties to an object.

This is the first step towards moving the settings functionality to the
Redux store.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* refactor: store settings in redux store

The state data structure now contains a property called `settings`,
which is a map containing all setting values.

The list of supported settings can be calculated by retrieving the keys
from the `settings` object, which means that if we support a setting, we
must include a default.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* feat: store settings in localStorage

This functionality was deleted by acb0de2 when moving the settings
object to the redux store, promising that the feature will be added back
in a future commit.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-24 16:06:27 -04:00
Juan Cruz Viotti
2f3118e4c3 chore(gulp): make linter exit with a non-zero code (#510)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-22 16:36:14 -04:00
Juan Cruz Viotti
c4c8e2c038 refactor: manage application state with redux (#508)
Currently, Etcher's application state is stored among various models,
making it a bit hard to mentually visualise the application state at a
certain point of execution. This also means that some quirky bugs
appear, and we have to take non-elegant measures to mitigate them, for
example:

- The current drive selection might be invalid if the current available
drive list doesn't contain it anymore.

- The progress state might be modified while there is no flashing in
process.

- We have to rely on event emission to propagate the current state to
the application progress bar.

- The validity of a selected drive might depend on the currently
selected image.

While all these issues can be addressed with common programming
techniques, Redux introduces a new way of thinking about the application
state that make the above problems non-existent, or trivial to fix.

This PR creates a Redux store containing the logic used to mutate state
from:

- `SelectionStateModel`.
- `DrivesMode`.
- `ImageWriterService`.

We are also making extra effort to preserve the public APIs from the
models, which we will be simplifying in later commits.

There is still much to be done, but we're happy to be taking the first
steo towards a much cleaner architecture.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-22 16:22:59 -04:00
Juan Cruz Viotti
991b69c17e refactor(DriveScannerService): use RxJS (#505)
The concept of a drive scanner lends itself very well to the concept of
"reactive programming", since the "available drives" make perfect sense
as an "Observable".

For this reason, the module was re-implemented using RxJS, which greatly
simplifies things and erradicates certain edge cases we were protecting
ourselves from automatically.

Other changes made in this PR:

- `DriveScannerService` no longer requires `DrivesModel`. The
`DriveScannerService` is the one in charge of populating the model.

- `DriveScannerService.scan()` no longer returns an `EventEmitter`. The
service itself is now an `EventEmitter`.

- `DriveScannerService` now emits a `drives`, not a `scan` event.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-22 10:41:36 -04:00
Juan Cruz Viotti
b923008f7c refactor: make use of angular-if-state (#506)
We'll use this external module rather than our local `if-state`
implementation.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-22 10:41:02 -04:00
Juan Cruz Viotti
447c67c58f feat: add support for dsk images (#504)
This type of images are distributed by the Ostro Project.

Closes: https://github.com/resin-io/etcher/issues/491
See: https://github.com/resin-io-modules/etcher-image-stream/pull/10
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-22 10:40:38 -04:00
Juan Cruz Viotti
588c510778 chore(shrinkwrap): omit platform-specific deps (#503)
If you run an `npm install` and then run `npm shrinkwrap`, the resulting
shrinkwrap file will contain the installed optional dependencies, making
them "required". If such optional dependency is platform dependent, `npm
install` will fail on different platform.

This is a known `shrinkwrap` limitation whose only workaround seems to
be manually filtering out platform specific dependencies from
`npm-shrinkwrap.json`.

For this purpose, we introduced the following changes:

- A custom `shrinkwrapIgnore` property in `package.json`, where we can
list specific modules that need to be filtered out from
`npm-shrinkwrap.json`.

- A NodeJS script to generate `npm-shrinkwrap.json` and omit modules
specified in `shrinkwrapIgnore` automatically.

- An NPM script called `shrinkwrap`, for convenience.

- Add `macos-alias` and `fs-xattr` to `shrinkwrapIgnore`.

- Regenerate `npm-shrinkwrap.json` based on newer dependencies from PRs
created before we introduced `npm-shrinkwrap.json` but merged after that
file was in place.

See: https://github.com/npm/npm/issues/2679
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-21 15:21:08 -04:00
Juan Cruz Viotti
95deab0b0d Get rid of application-wide elevation (#423)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-20 21:49:16 -04:00
Juan Cruz Viotti
57169b8313 v1.0.0-beta.9
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-20 12:40:52 -04:00
Juan Cruz Viotti
33eb0637b2 chore: configure commitizen (#494)
Etcher will start following Angular's commit guidelines, enforced by a
neat tool called `commitizer`, with the main purpose of being able to
auto-generate the CHANGELOG file.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-20 12:08:29 -04:00
Juan Cruz Viotti
16c3750b15 Don't check extensions before the first non compressed extension (#493)
Currently, we extract all the extensions from an image path and report
back that the image is invalid if *any* of the extensions is not a
valida extension, however this can cause trouble with images including
information between dots that are not strictly extensions.

For example:

```
elementaryos-0.3.2-stable-i386.20151209.iso
```

Etcher will consider `20151209` to be an invalid extension and therefore
will prevent such image from being selected.

As a way to allow these corner cases but will make use of our enforced
check controls, the validation routine will only consider extensions
starting from the first non compressed extension.

This PR also includes logic to show a nice GUI dialog saying that the
image is invalid in order to provide a much better experience than just
silently failing.

Fixes: https://github.com/resin-io/etcher/issues/492
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-20 12:05:33 -04:00
Juan Cruz Viotti
0d2fcac5e4 v1.0.0-beta.8
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-15 11:52:02 -04:00
Juan Cruz Viotti
8aa7bcd952 Prevent a very long image name from breaking the UI (#479)
This PR introduces two changes to mitigate this problem and overall
provide a better UX:

- Show ellipses in the middle of the image name in the first step if
needed.

- Add a tooltip below the image selection label in the first step to
show a little modal displaying the full path to the image.

Fixes: https://github.com/resin-io/etcher/issues/418
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-15 10:31:07 -04:00
Juan Cruz Viotti
3d921f2f86 Upgrade etcher-image-write to v5.0.1 (#469)
* Upgrade etcher-image-write to v5.0.1

The new version contains an important fix to prevent `EPERM` errors on
Windows with certain drives.

Fixes: https://github.com/resin-io/etcher/issues/334
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* Upgrade NPM to fix newer package versions not available in Appveyor

See: https://github.com/npm/npm/issues/4984
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-12 17:56:47 -04:00
Juan Cruz Viotti
fbe6fe1142 Show a "Locked" label if the drive is write-protected (#475)
* Implement SelectionStateModel.isDriveLocked()

Notice we also increase the maximum number of lines JSCS check, since
the `SelectionStateModel` test suite already met that limit.

Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>

* Show a "Locked" label if the drive is write-protected

Fixes: https://github.com/resin-io/etcher/issues/458
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-11 15:45:46 -04:00
Juan Cruz Viotti
f2a8860135 Fix package.json key/property spacing (#461)
Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
2016-06-08 13:36:00 -04:00