Commit Graph

521 Commits

Author SHA1 Message Date
Jonas Hermsmeier
abf2dc3efc fix(image-writer): Don't inherit environment on Windows
Due to improper command escaping, cmd metacharacters lead to failure
in spawning the child writer process on Windows when the entire environment
is passed through the command line. The user's environment will still
be inherited by default on Windows.

Change-Type: patch
2018-04-04 20:23:33 +02:00
Benedict Aas
99f819dfbf minifix: add spacing to drive warning icon (#2169)
Change-Type: patch
Changelog-Entry: Add spacing to the drive warning icon.
2018-04-04 14:53:20 +01:00
Benedict Aas
f97b439bc0 minifix: use multi-drive methods with drive-list warning button (#2170)
Change-Type: patch
Changelog-Entry: Use multi-drive methods with drive-list warning button.
2018-04-03 20:33:20 +01:00
Benedict Aas
65a4a959bb feat: expose all flash state fields to the store (#2153)
We expose all the flash state fields to the store, and mirror
`speed`'s format with `totalSpeed` with MB as the size unit.
We also format the progress state messages to use information
available with multiwrites.

Change-Type: patch
Changelog-Entry: Expose all flash state fields to the store.
2018-04-03 20:32:38 +01:00
Jonas Hermsmeier
73155cca66 Merge pull request #2159 from resin-io/hide-size-multiple-devices
fix(GUI): hide the size label given multiple devices
2018-03-29 22:55:03 +02:00
Jonas Hermsmeier
267ccf6f97 Merge pull request #2160 from resin-io/wrap-button-sizes-cleanly
fix(GUI): line wrap selector size subtitles wholly
2018-03-29 22:53:55 +02:00
Benedict Aas
3498d59258 fix(GUI): line wrap selector size subtitles wholly
We line wrap the main-page image and drive size labels as a whole
instead of partially, if the drive or image title is long enough for a
line wrap.

Change-Type: patch
Changelog-Entry: Line wrap selector size subtitles wholly
2018-03-29 15:45:38 +01:00
Benedict Aas
f8accd62ed fix(GUI): hide the size label given multiple devices
We hide the size label when there are multiple selected devices, as this
doesn't make sense because you could only logically show the sum size,
which isn't very helpful on its own.

Change-Type: patch
Changelog-Entry: Hide the size label given multiple devices.
2018-03-29 15:36:18 +01:00
Benedict Aas
57c4a285d8 refactor: inline middle-ellipsis package as util
We remove our dependency on the `middle-ellipses` package and include
and expose the function in `lib/shared/utils`, alongside the regular
Angular filter it exposes. This allows use of the middle ellipsis
method in React.

Change-Type: patch
Changelog-Entry: Inline middle-ellipsis package as util.
2018-03-29 15:25:55 +01:00
Jonas Hermsmeier
ce71b81dbe Merge pull request #2140 from resin-io/fix-usbboot-appimages
fix: use correct usbbot blob path in appimages
2018-03-27 19:48:36 +02:00
Benedict Aas
cd697d7205 fix: use correct usbbot blob path in appimages
We use the `app.asar` relative path to read the usbboot blob files
instead of relative to the normal project root.

Change-Type: patch
Changelog-Entry: Use correct usbboot blob path in AppImages.
2018-03-26 18:18:05 +01:00
Benedict Aas
cf340f48c3 fix(GUI): fix status dots to their position
We ensure the status dots don't move about and stick to their position
by using absolute positioning relative to its parent element.

Change-Type: patch
Changelog-Entry: Fix status dots to their position.
2018-03-23 17:33:32 +00:00
Benedict Aas
4140d49db3 refactor: multi-writes preparatory changes (#2124)
We add some preparatory changes including new utility functions, as well
as changes throughout the codebase that reflect the change from single
drives to a list of drives, given multi-writes is coming.

Change-Type: patch
Changelog-Entry: Various preparatory changes to account for
multi-writes.
2018-03-23 14:36:39 +00:00
Jonas Hermsmeier
fecccb0b28 fix(gui): Fix devices passed to writer
Change-Type: patch
2018-03-22 16:52:01 +01:00
Jonas Hermsmeier
43d79ebd05 Merge pull request #2084 from resin-io/sdk-multiwrite
feat(writer): Impl multi-writes in writer modules
2018-03-22 00:12:02 +01:00
Jonas Hermsmeier
22f6cc1c6f Merge pull request #2118 from resin-io/fix-linux-usbboot
fix(scanner): Enable usbboot on Linux if run as root
2018-03-21 22:56:15 +01:00
Jonas Hermsmeier
e01aec7b52 Merge pull request #2100 from resin-io/disable-timer-throttle
fix(gui): Disable throttling timers when in background
2018-03-21 20:34:31 +01:00
Jonas Hermsmeier
69c35f7f79 fix(drive-scanner): Warn on usbboot load error on Linux
Change-Type: patch
2018-03-21 20:21:24 +01:00
Jonas Hermsmeier
c724e4cb20 feat(writer): Impl multi-writes in writer modules
Implement writing to multiple destinations simultaneously

Change-Type: minor
Changelog-Entry: Implement writing to multiple destinations simultaneously
2018-03-20 22:21:01 +01:00
Jonas Hermsmeier
936142cf7e fix(gui): Fix usbboot blob dir path
Change-Type: patch
2018-03-15 16:42:34 +01:00
Jonas Hermsmeier
2aa37571f0 fix(gui): Fix usbboot drive icon path
Change-Type: patch
2018-03-15 16:41:38 +01:00
Jonas Hermsmeier
9b42960b2f fix(scanner): Enable usbboot on Linux if run as root
This re-enables the usbboot scanner dynamically if Etcher
is run as root on Linux.

Change-Type: patch
2018-03-15 14:45:04 +01:00
Benedict Aas
835f2cf769 feat(GUI): add colorised multi-writes progress status dots (#2115)
We add colorised progress status dots with quantities of `flashing`,
`validating`, `succeeded`, and `failed` devices.

Change-Type: patch
Changelog-Entry: Add colorised multi-writes progress status dots.
2018-03-14 17:05:01 +00:00
Benedict Aas
3fe5d7711f minifix: use svg contents list in main template (#2113)
We use a list instead of element with `svg-icon` in `main.tpl.html`, as
required by the `svg-icon` component and will return an error
otherwise.

Fixes: https://github.com/resin-io/etcher/issues/2078
Change-Type: patch
Changelog-Entry: Use SVG contents list in main template.
2018-03-14 17:03:31 +00:00
Benedict Aas
faf9b113a9 feat(CSS): use roboto font instead of helvetica (#2114)
We replace Helvetica with Roboto as the main font.

Change-Type: patch
Changelog-Entry: Replace Helvetica as the main font with Roboto.
2018-03-12 16:38:01 +00:00
Benedict Aas
a83e397643 refactor: move memoize function to shared utils (#2090)
We move the memoize function to `lib/shared/utils.js` and expose it to
modules across the project.

Change-Type: patch
Changelog-Entry: Move memoize function to shared utils.
2018-03-09 12:12:34 +00:00
Jonas Hermsmeier
d91d957777 fix(gui): Disable throttling timers when in background
This disables Electron throttling timers when not in the foreground.

Change-Type: patch
2018-03-01 20:04:34 +01:00
Benedict Aas
207c2ef5b6 feat: add drive multi-selection in store (#1736)
We lay the foundation for multi-selecting drives by implementing it into
the `store` and relevant modules interacting with the `store`.

Change-Type: patch
Changelog-Entry: Add drive multi-selection to the store.
2018-02-23 17:45:49 +00:00
Benedict Aas
2c0cdcf947 refactor(GUI): remove selection-state clear options to simplify (#2043)
We refactor and simplify the selection-state `.clear()` by removing the
options argument.

Change-Type: patch
Changelog-Entry: Remove `selectionState.clear()` options argument to
simplify.
2018-02-21 15:56:42 +00:00
Benedict Aas
a56755e2c6 feat(GUI): add spacing to drive-selector labels (#2059)
We add a right margin to the drive-selector labels so they look nicer
when there are multiple.

Change-Type: patch
Changelog-Entry: Add spacing to the drive-selector warning/error labels.
2018-02-20 21:07:13 +00:00
Jonas Hermsmeier
f70df03b1a Merge pull request #2056 from resin-io/fix-debug-enable
fix(app): Fix enabling debug output
2018-02-20 03:35:08 -08:00
Benedict Aas
8b577ca12f feat(GUI): separate svg path and content attributes (#1677)
We separate the SVG component path and content into attributes
`paths` and `contents` which take lists of strings that are
tried until one succeeds. `contents` takes precedence over `paths`,
i.e. it is tried first.

Change-Type: patch
Changelog-Entry: Separate SVG component's path and content attributes.
2018-02-20 09:51:13 +00:00
Benedict Aas
91719435d9 feat(GUI): warn the user on large drive selection (#2045)
We warn the user when they select a large drive to confirm they want to
flash in case the device is important.

Fixes: https://github.com/resin-io/etcher/issues/1916
Change-Type: patch
Changelog-Entry: Warn the user on selection of large drives.
2018-02-19 19:12:48 +00:00
Benedict Aas
b1b82301d9 fix(GUI): make all class label text bold (#2060)
We make all tags with `.label` have bold text and remove the need for
`<b>` tags.

Change-Type: patch
Changelog-Entry: Make all `.label` tags' text bold and remove need for `<b>` tags.
2018-02-19 18:38:03 +00:00
Benedict Aas
fdf15f53d7 feat(GUI): warning makes drive-selector button orange (#2044)
We make the drive-selector button orange when there is a warning attached
to the image-drive pair.

Change-Type: patch
Changelog-Entry: Make the drive-selector button orange on warnings.
2018-02-19 11:27:30 +00:00
Jonas Hermsmeier
2b66762dec fix(app): Fix enabling debug output
This fixes enabling debug output via the DEBUG env var

Change-Type: patch
2018-02-16 18:21:17 +01:00
Jonas Hermsmeier
7c9f15d8a9 feat(sdk): Consolidate low-level components into SDK
Changes:

- Split out scanner into own file
- Move `lib/shared/sdk` -> `lib/sdk`
- Move `lib/image-stream` -> `lib/sdk/image-stream`
- Move `lib/writer` -> `lib/sdk/writer`
- Rename `sdk/standard` -> `sdk/blockdevice`
- Move adapters into `sdk/adapters` subdirectory

Change-Type: minor
Changelog-Entry: Consolidate low-level components into Etcher SDK
2018-02-16 17:15:28 +01:00
Juan Cruz Viotti
4fa0f990e5 feat(GUI): bundle the GUI code with Webpack (#1943)
This commit introduces a Webpack configuration file that bundles the GUI
code along with its dependencies (except the Etcher SDK and its own
dependencies), and uses Babel to add support for JSX (required by the
Rendition library).

The GUI code that goes into the bundle was moved to `lib/gui/app` so we
can easily ignore the whole subdirectory when creating production
distributable packages.

We now have a new make target called `webpack` that can be used to
create the GUI bundle. Such target will be called everytime a package is
generated.

Change-Type: patch
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
2018-02-15 17:39:15 +00:00
Jonas Hermsmeier
1e65a09e8e Merge pull request #2012 from resin-io/use-template-contents
feat: replace template paths with contents
2018-02-14 06:54:54 -08:00
Benedict Aas
34b4f65c20 feat: log the event status of the banner (#2013)
We add log the banner HTTP load event object to the analytics.

Change-Type: patch
Changelog-Entry: Log the banner load event to analytics.
2018-02-14 12:03:40 +00:00
Jonas Hermsmeier
fbb175608d feat(writer): Increase UV_THREADPOOL_SIZE
This increases the UV_THREADPOOL_SIZE to CPUs * 4 to
facilitate full write speeds when writing to multiple destinations,
in preparation for integrating multi-writes.

Change-Type: patch
Changelog-Entry: Increase UV_THREADPOOL_SIZE to allocate 4 threads per CPU
2018-02-13 17:31:59 +01:00
Benedict Aas
db2bed896a feat: replace template paths with contents
We replace the `templateUrl` fields with `template` fields and thus
switch from template paths to template contents in preparation for the
Webpack PR.

Changelog-Entry: Replace template paths with template contents.
Change-Type: patch
2018-02-13 11:19:59 +00:00
Benedict Aas
c3600ee8fc refactor: rename selection state and store functions (#2037)
We rename functions in `selection-state` and the `store`.

Change-Type: patch
Changelog-Entry: Rename selection-state and store functions.
2018-02-13 11:15:22 +00:00
Benedict Aas
bb5efb3450 feat(GUI): add descriptive name to modals (#2036)
We add a descriptive name to modals for analytics and debugging.

Change-Type: patch
Changelog-Entry: Add descriptive name to modals for analytics and
debugging.
2018-02-13 11:13:48 +00:00
Jonas Hermsmeier
fdd0d781ca refactor(lib): Remove unused robot protocol
This removes the remnants of the unused "robot protocol",
which was previously used by the CLI, but has been superseded by IPC.

Change-Type: minor
Changelog-Entry: Remove unused robot protocol
2018-02-09 19:25:36 +01:00
Benedict Aas
47338cf07b upgrade(package): Update eslint 3.19.0 -> 4.17.0 (#2026)
We upgrade eslint for better support of the object-curly-newline
options, and change the quantity of elements required before the linter
enforces newlines on objects, in addition we apply `consistent` to avoid
errors when there are newlines in objects with less than 2 elements.

```
const { field } = object

const {
  field
} = object

const {
  field1,
  field2
} = object
````

Change-Type: patch
Changelog-Entry: Upgrade eslint to use object-curly-newline options.
2018-02-09 15:30:43 +00:00
Jonas Hermsmeier
c2ba053737 Merge pull request #2021 from resin-io/use-ng-if
feat(GUI): replace ng-show and ng-hide with ng-if
2018-02-09 03:41:53 -08:00
Jonas Hermsmeier
0038c6c65a Merge pull request #2010 from resin-io/menu-link-ref
feat(gui): Add ref params to homepage links in menu
2018-02-09 03:39:22 -08:00
Benedict Aas
dab1eece4c feat: add icon next to drive on warnings (#2014)
We add an icon next to the drive size that is displayed when there is a
drive-image compatibility status message available. We display the first
one in the list and importance is then enforced by the order they are
added to the list in `drive-constraints`.

Change-Type: patch
Changelog-Entry: Add icon next to drive size when compatibility warnings exist.
2018-02-08 16:43:34 +00:00
Jonas Hermsmeier
5754b4c6af feat(gui): Add ref params to homepage links in menu
This adds a `ref` param to the URLs in the menu,
in order to see where page views are coming from.

Change-Type: patch
2018-02-08 13:42:53 +01:00