Commit graph

27 commits

Author SHA1 Message Date
Scott Nonnenberg
e02887565b
Update to electron v2.0.1 (#2401)
* Remove extra parenthesis causing warnings on latest chromium

* Update to electron 2.0.1

* Move all @types dependencies to devDependencies

* Update electron-builder/electron-updater

* Update to Node.js 8.9.3 to match Electron 2.0.1
2018-05-23 12:17:58 -07:00
Daniel Gasienica
cb09da0f63 Run all build steps in CI 2018-05-07 21:53:40 -04:00
Scott Nonnenberg
fc80a4b350 Stop uploading linux build assets; no longer used in build 2018-04-30 22:34:27 -07:00
Daniel Gasienica
513d9a5d5c Run Node.js tests early 2018-04-11 16:36:42 -04:00
Daniel Gasienica
15d221ae0e Simplify testing and linting
Separate linting from testing as follows:

- `yarn jscs`: Run JSCS.
- `yarn jshint`: Run JSHint.
- `yarn lint`: Run all linters, i.e. ESLint, TSLint, JSHint, and JSHint.

- `yarn test-node`: Run Mocha tests in Node.js environment.
- `yarn test-electron`: Run tests in Electron environment via Grunt.
- `yarn test`: Run all tests.

CI
- Align Travis and AppVeyor scripts as much as possible.
- Run linting before tests to fail fast.
- Run Node.js (headless and fast) tests first.
- Run Electron tests last (Travis seems to require custom setup in `travis.sh`).
2018-04-11 16:36:42 -04:00
Daniel Gasienica
80de7bbd5c Compile TypeScript files on Travis CI 2018-04-11 16:36:42 -04:00
Scott Nonnenberg
fd056e1b4c
Add nsp to dev dependencies and to travis and CI scripts 2018-03-14 14:42:13 -07:00
Daniel Gasienica
3f20feb96d
Ensure consistent builds using yarn --frozen-lockfile (#2098)
As recommended by documentation:
> If you need reproducible dependencies, which is usually the case with the
> continuous integration systems, you should pass `--frozen-lockfile` flag.
-- https://yarnpkg.com/lang/en/docs/cli/install/
2018-03-02 16:01:43 -05:00
Daniel Gasienica
a4c52b8d64
Upgrade to Electron 1.8.2 / Node.js 8.2.1 (#2066)
* Upgrade to Electron 1.8.2 / Node.js 8.2.1

* Update CI Node.js versions

* Make `engines` top-level property

This was accidentally included under `build` which is disallowed
by `electron-builder`.

* Refactor notification updates

Allows easier debugging through variable inspection.

* Use `appId` for Application User Model ID

Recommended in:
https://github.com/electron/electron/issues/10864#issuecomment-346229090

* Update `spectron` to 3.8.0

* Bump `electron-builder` based dependencies

* Use `config.extraMetadata` instead of `em`

Prevents `Unknown argument: em` error.

See: https://github.com/electron-userland/electron-builder/issues/2615

* Revert AUMID to be based on `packageJson.name`

In our build artifact `packageJson.build.appId` causes an NPE.
2018-03-02 14:43:03 -05:00
Scott Nonnenberg
426dab85a2
New design for import/install, 'light' import (#2053)
- A new design for the import flow. It features:
  - Icons at the top of every screen
  - Gray background, blue buttons, thinner text
  - Simpler copy
- A new design for the install flow. It features:
  - Immediate entry into the QR code screen
  - Animated dots to show that we're loading the QR code from the server
  - Fewer screens: 1) QR 2) device name 3) sync-in-progress
- When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow.
- Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow.
- A new design for the (dev-only) standalone registration view
- When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows.
- The device name (chosen on initial setup) is now shown in the settings panel
- At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports.
- `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export.
- `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import.
- On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast.
- Disappearing messages are now excluded when exporting
- Remove some TODOs in the tests
2018-02-22 10:40:32 -08:00
Scott Nonnenberg
d503d1ace3
Remove built assets from repo, updates to docs + GH templates (#1955)
* Revamp issue and pull request templates, other docs tweaks

`yarn test` now runs all of our tests.

* Remove generated files from the repository

* Update to new Signal support URL

* Prevent the 'Test failed 2 == 1' from test-release in CI

* Another attempt to fix grunt test-release on Appveyor

* grunt test-release: Fail build if test fails

* Lint fix, and move jshint earlier in CI process
2018-01-09 15:31:23 -08:00
Scott Nonnenberg
64fe9dbfb2
Clean logs on start - and eslint/mocha with code coverage (#1945)
* Clean logs on startup; install server-side testing/linting

* Add eslint config, make all of app/ conform to its demands

* Add Node.js testing and linting to CI

* Lock project to Node.js 7.9.0, used by Electron 1.7.10

* New eslint error: trailing commas in function argumensts

Node 7.9.0 doesn't like trailing commas, but Electron does

* Move electron to devDependency, tell eslint it's built-in
2018-01-08 13:19:25 -08:00
Scott Nonnenberg
c94d4efd18
Beta versions support: SxS support, in-app env/instance display (#1606)
* Script for beta config; unique data dir, in-app env/type display

To release a beta build, increment the version and add -beta-N to the
end, then go through all the standard release activities.

The prepare-build npm script then updates key bits of the package.json
to ensure that the beta build can be installed alongside a production
build. This includes a new name ('Signal Beta') and a different location
for application data.

Note: Beta builds can be installed alongside production builds.

As part of this, a couple new bits of data are shown across the app:

- Environment (development or test, not shown if production)
- App Instance (disabled in production; used for multiple accounts)

These are shown in:

- The window title - both environment and app instance. You can tell
  beta builds because the app name, preceding these data bits, is
  different.
- The about window - both environment and app instance. You can tell
  beta builds from the version number.
- The header added to the debug log - just environment. The version
  number will tell us if it's a beta build, and app instance isn't
  helpful.

* Turn on single-window mode in non-production modes

Because it's really frightening when you see 'unable to read from db'
errors in the console.

* aply.sh: More instructions for initial setup and testing

* Gruntfile: Get consistent with use of package.json datas

* Linux: manually update desktop keys, since macros not available
2017-10-30 13:57:13 -07:00
Scott Nonnenberg
057c8d49df
Travis: Removing OSX from the platform list for now; long delays!
FREEBIE
2017-09-14 16:53:50 -07:00
Scott Nonnenberg
e1495e779c
Move grunt test to ./travis.sh since it now invokes spectron
FREEBIE
2017-09-14 16:53:47 -07:00
lilia
9a1e0dcdb3
Fix linux
// FREEBIE
2017-09-14 16:53:46 -07:00
lilia
bc71f4aa2b
CI builds and uploads all targets
// FREEBIE
2017-09-14 16:53:45 -07:00
lilia
08b7ce88d9
More release scripting in npm
npm run icon-gen and grunt (run default task) can be grouped into one
operation.

Use SIGNAL_ENV instead of NODE_ENV since Setting NODE_ENV adversely
affects yarn's install behavior, so we had to set it after the install
and before the build. By using a custom variable instead, we can set it
globally and eventually use it in a build matrix.

Move mas build to its own npm script

// FREEBIE
2017-09-14 16:53:45 -07:00
lilia
a2667f784b
CI builds zip for all platforms
// FREEBIE
2017-09-14 16:53:45 -07:00
lilia
aaee025409
Rename script 2017-09-14 16:53:44 -07:00
lilia
693a59809e
Fix setting environment var on windows
Use platform-specific commands to set NODE_ENV after yarn install but
before yarn travis-build.

// FREEBIE
2017-09-14 16:53:44 -07:00
lilia
81d8b78d05
Switch to grunt-sass + node-sass-import-once
These modules together allow us to import css files from third party
components without maintaining symlinks that essentially rename them as
sass partials, which doesn't work on windows.

// FREEBIE
2017-09-14 16:53:44 -07:00
lilia
d6c0fbe9a3
WIP Travis build
// FREEBIE
2017-09-14 16:53:43 -07:00
Scott Nonnenberg
f15bdad4b3 Travis doesn't respect the repo/organization email so turning off
Turning off travis email notifications. Github does a fine job notifying
us about the things we care about, otherwise we can always go there and
see the results.

FREEBIE
2017-08-15 14:08:32 -07:00
lilia
88363daecf Migrate to new travis infrastructure
http://docs.travis-ci.com/user/migrating-from-legacy
2015-07-28 17:19:11 -07:00
lilia
cc28120582 Add secure environment vars for travis 2014-11-24 14:23:51 -08:00
Arlo Breault
8d56a1b248 Run tests on Sauce Labs
* Issue #57
2014-11-22 20:30:57 -08:00