Commit graph

3491 commits

Author SHA1 Message Date
Daniel Gasienica
b3a3729261 Fix lint errors 2018-03-08 13:46:51 -05:00
Daniel Gasienica
6f7f55f783 Whitelist globals 2018-03-08 13:46:51 -05:00
Daniel Gasienica
090345523f Disable ESLint strict rule for module
`js/logging.js` acts as a module even though it lives in `js/*`.
2018-03-08 13:46:51 -05:00
Daniel Gasienica
7db44e35bd Allow node environment for js/logging.js 2018-03-08 13:46:51 -05:00
Daniel Gasienica
d4c9422a99 Apply ESLint auto-fixes: debug_log_view.js 2018-03-08 13:46:51 -05:00
Daniel Gasienica
5d6cd0ea39 Apply ESLint auto-fixes: js/logging.js 2018-03-08 13:46:51 -05:00
Daniel Gasienica
9d638797de Whitelist js/views/debug_log_view.js for ESLint 2018-03-08 13:46:51 -05:00
Daniel Gasienica
0f512e3925 Whitelist js/logging.js for ESLint 2018-03-08 13:46:51 -05:00
Scott Nonnenberg
9b25e106dc
v1.6.0-beta.2
Upgrade to the latest version of Electron, 1.8.2 (#2066)

Replace custom notification sound with system sound (#2108)

Update menus (#2078 and #2099)
  - A few copy changes to make things clearer
  - Settings now available via the File (Windows/Linux) or Signal
    Desktop (macOS) OS menu
  - Eliminate the triple-dot menu in the top-center of the screen

Fix: Hitting enter after entering device name on install would not move
to next screen (#2085)

Dev:
  - Ensure consistent builds using `yarn --frozen-lockfile` (#2098)
  - Update code to match eslint-enforced formatting (#2077)
  - Upgrade to latest version of electron-builder and associated
    packages (#2066 and #2097)
2018-03-05 17:10:09 -08:00
Daniel Gasienica
4562de8b24 Replace custom notification sound with system sound (#2108) 2018-03-05 10:55:04 -05:00
Daniel Gasienica
a61f2939fd Make isEnabled an instance variable 2018-03-05 10:29:11 -05:00
Daniel Gasienica
d6ff5af843 🎨 shouldUpdate --> needUpdate 2018-03-05 10:29:11 -05:00
Daniel Gasienica
541e0bfb72 Reduce log noise / size 2018-03-05 10:29:11 -05:00
Daniel Gasienica
a5a4ed7de7 Extract isAudioNotificationEnabled constant 2018-03-05 10:29:11 -05:00
Daniel Gasienica
dc38d40f20 Revert to disabled notification sound on <= Windows 7
We haven’t had the chance to test this using `node-notifier` on Windows 7.
2018-03-05 10:29:11 -05:00
Daniel Gasienica
4e01ca5135 Persist flashing of taskbar on Windows until window is focused
Fixes #1679.
2018-03-05 10:29:11 -05:00
Daniel Gasienica
5a4773fee7 Only play audio notification on supported platforms 2018-03-05 10:29:11 -05:00
Daniel Gasienica
85b121aca4 Rename shouldShowAudioNotificationSetting
Use `isAudioNotificationSupported` to make it less presentation layer specific.
2018-03-05 10:29:11 -05:00
Daniel Gasienica
105eb95391 Add tests for Settings.shouldShowAudioNotificationSetting 2018-03-05 10:29:11 -05:00
Daniel Gasienica
a98a7ba690 Add sinon dev dependency
Useful tool for testing: http://sinonjs.org/
2018-03-05 10:29:11 -05:00
Daniel Gasienica
dcf651fb51 Hide notifications audio setting on Linux 2018-03-05 10:29:11 -05:00
Daniel Gasienica
21339c6866 Add Settings type 2018-03-05 10:29:11 -05:00
Daniel Gasienica
91daedd619 Add OS module 2018-03-05 10:29:11 -05:00
Daniel Gasienica
dbc242c37f Improve debug log for notifications 2018-03-05 10:29:11 -05:00
Daniel Gasienica
b5e7882267 Use system notification sounds
Alternatively, there is per-platform support for specific sounds, but that would
require a larger investment:
- macOS: 9420a38fc3 (all-notification-options-with-their-defaults)
- Windows: https://docs.microsoft.com/en-us/previous-versions/windows/apps/hh761492(v=win.10)
2018-03-05 10:29:11 -05:00
Daniel Gasienica
59e59fb754 Remove new message audio notification
Bye, bye, dear Ka-Klunk!
2018-03-05 10:29:11 -05:00
Daniel Gasienica
8a8972f7ac NOTE: Improve i18n pluralization 2018-03-05 10:29:11 -05:00
Daniel Gasienica
a76b1389e6 Extract hasNotifications 2018-03-05 10:29:11 -05:00
Daniel Gasienica
9516d667da Rename enabled --> isEnabled 2018-03-05 10:29:11 -05:00
Scott Nonnenberg
59bee6690d
Choose device name screen: Finish by pressing enter (#2085) 2018-03-02 15:34:51 -08:00
Daniel Gasienica
40ee88ead3
Remove ‘Ctrl+,’ keyboard shortcut on Windows & Linux (#2099) 2018-03-02 16:46:04 -05: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
3df22026ab UX Improvements: Global Menu & Copy Changes (#2078)
- [x] Removed ‘Restart Signal’ global menu item
- [x] Change _Click to create contact…_ to _Start conversation…_
- [x] Move global menu (top-left kebab) into OS menu bar,
      i.e. **Settings** > **Preferences…**
- [x] Add tests for OS menu bar templates
- [x] Fix bug with **Window** menu on macOS when showing setup options
- [x] Use _Title Case_ for all OS menu bar menu items for consistency

commit dedf7c9af0de90980388559659df0d92a77b864c
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 16:53:42 2018 -0500

    Use ‘Title Case’ to be consistent with OS menus

    References:
    - Apple:
        - https://developer.apple.com/macos/human-interface-guidelines/menus/menu-anatomy/#menu-and-menu-item-titles
        - https://developer.apple.com/library/content/documentation/FinalCutProX/Conceptual/FxPlugHIG/TextStyleGuidelines/TextStyleGuidelines.html#//apple_ref/doc/uid/TP40013782-CH6-SW1
    - https://titlecaseconverter.com/

commit 3286da29b334bd4526c587b17707c2f230cec8f5
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 16:36:50 2018 -0500

    Fix bug for macOS ‘Window’ menu with setup options

commit 236a23d1eafe2a16073394a27b9013298b682a25
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 16:27:46 2018 -0500

    Test menus with included setup options

commit c5d5f5abb8d7f52d6a4aa182a86c92f7ddceade0
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 16:10:27 2018 -0500

    Move settings (‘Preferences’) into OS-level menu

    This reduces our reliance on custom UI until we have more design resources.

commit 027803f8f4983cffa443f0beff1854dcf541689b
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 16:02:56 2018 -0500

    Prepare tests for menu with/without included setup

commit 9e2f006924b85eb249a8a1261c1c4dd1a706afa6
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 15:55:46 2018 -0500

    Destructure `includeSetup`

commit 6b2a1eccdf724fd722e58415d2700da73942d9e8
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 15:55:14 2018 -0500

    🔤 `createTemplate` `options`

commit c2fecba34b153fed106f414ed3347d46299f6fe5
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 12:49:55 2018 -0500

    Test menu for Windows and Linux

commit 60281b1af9ad1f022cdbc40711ebd0b688a7355d
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 12:40:39 2018 -0500

    Add `yarn run test-app` command

commit 1a0489919c0a97b03fe88196260fef894fb3d9e4
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 12:40:29 2018 -0500

    Add test for `SignalMenu.createTemplate` on macOS

commit 9638b86c0f00f231e44562a5aa01626f0e5fdd8b
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 12:34:46 2018 -0500

    Make `createTemplate` pure

    Extracting `options.platform` makes it easier to test without having to
    stub `process.platform`.

commit 9c26404892d7c9a7bd0199a9e8367a165a3b365c
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 11:47:39 2018 -0500

    Extract `locale.load` `appLocale` & `logger` for testability

    This allows us to run this code in a non-Electron environment, e.g. Node.js
    Mocha test suite.

commit 710b22438df25c8d5e8431845a035c55ec8fc0b7
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 11:46:13 2018 -0500

    🔤 npm scripts

commit 9ae22937fbce078f91443023b560b3c0468c1380
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 11:45:30 2018 -0500

    Use 2-space indendation for `app` module tests

commit 22c26baf6159bd2e1f5a787c10e2260f09395329
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 11:22:55 2018 -0500

    Prefer named exports

commit 9c9526195266ac77ac2ca04135a1e675f617dfd2
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 11:22:46 2018 -0500

    🔤 Organize `require`s

commit 2f144d24d9e9a9ef72fe418996e3c911b304b00a
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 11:13:50 2018 -0500

    Remove existing global hamburger menu

    This will be replaced by a OS-level ‘Preferences’ menu.

commit f5adb374cb742e5f319ececda8ab6d8adee88d7e
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Mon Feb 26 18:40:54 2018 -0500

    Remove ‘Restart Signal’ menu from settings

    Apparently, this is a remnant from the Chrome web application.

commit d7a206bc8e67ef44022085e804ca040ed1b219f7
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Mon Feb 26 17:16:49 2018 -0500

    Clarify label for starting a new conversation

    When user a enters a number that is not a contact, we prompt them to start a new
    conversation.

commit 715a4064367fb61d85c1a4f9d48261b2ce002435
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Mon Feb 26 16:46:26 2018 -0500

    Use ‘Enter name or number’ as prompt’

    This follows implementation of Android and recommendation from Alissa.
2018-03-02 15:59:39 -05:00
Daniel Gasienica
3c15e01630
Auto-fixes: UX Improvements (#2077)
* Whitelist `conversation_search_view` for ESLint

* Autofix `conversation_search_view`

* Remove Vim modeline

* Whitelist globals for ESLint

* Ignore unnamed module IIFE

* Whitelist legacy `then` expressions

* Extract `isSearchable`

Fixes line length violations.

* Remove unused constant

* Remove unnecessary escaping for parens

Suggested by ESLint `no-useless-escape` rule.

* 🎨 Organize file list

* Whitelist `inbox_view` for ESLint

* Autofix `inbox_view`

* Remove Vim modeline

* Add function names

* Whitelist globals for ESLint

* Fix lint errors

* 🔤 `options` properties

* 🎨 Improve `then` chain formatting

* Consider `js/*.js` files as scripts not modules

Forces use of 'use strict' directive per ESLint.

* Ignore unnamed module IIFE

* Fix function argument line breaks
2018-03-02 15:54:15 -05:00
Daniel Gasienica
9eb1fed766
Update yarn.lock after manual package.json changes (#2097)
To update the following dependencies…

- electron-updater
- electron-builder
- electron-publisher-s3
- spectron

…`package.json` was mistakenly updated manually which prevented an update
of `yarn.lock`.

This change brings them in sync.
2018-03-02 15:22:22 -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
3a334f3d8d
v1.6.0-beta.1
Note: This release is equivalent to v1.5.2

Fixed: If interrupted in the middle of an import, next registration
would leave that imported data in the database (#2072)

Fixed: In some cases on OSX, View menu would not have Debug Log option
(#2089)

Fixed: In import/registration flow, choosing View -> Debug Log would do
nothing (#2089)

Fixed: In some cases contact/group syncs would turn off disappearing
messages in all conversations (#2086)

Fixed: On initial setup, conversations with disappearing messages
enabled would be at the top of the conversation list (#2084)
2018-03-01 14:56:17 -08:00
Scott Nonnenberg
e40bd8d348
Merge branch 'master' into development 2018-03-01 14:13:00 -08:00
Scott Nonnenberg
fde0b785ae
v1.5.2
Fixed: In some cases on OSX, View menu would not have Debug Log option (#2089)

Fixed: In import/registration flow, choosing View -> Debug Log would do nothing (#2089)
2018-03-01 12:08:21 -08:00
Scott Nonnenberg
c87a035f1a
Show View -> Debug on OSX, ensure Debug Log is visible (#2089)
* Ensure debug log is visible during registration/import

* Restore the proper View menu on MacOSX
2018-03-01 12:04:13 -08:00
Scott Nonnenberg
ed4ef181af
Merge branch 'master' into development 2018-02-28 18:52:22 -08:00
Scott Nonnenberg
e66cdf86e4
v1.5.1
Fixed: In some cases contact/group syncs would turn off disappearing
messages in all conversations (#2086)

Fixed: On initial setup, conversations with disappearing messages
enabled would be at the top of the conversation list (#2084)
2018-02-28 17:38:48 -08:00
Scott Nonnenberg
634f1ae9f4
Don't pop conversations with timer change to top (#2084)
* Don't re-sort conversation list after expiration timer change

Now that we respond to the expiration timer included in contact and
group sync messages, we need to ensure that this doesn't pop
conversations to the top of the list.

* Introduce explaining variable for updateLastMessage filter
2018-02-28 17:26:41 -08:00
Daniel Gasienica
caa579f3b8
Hotfix: Ignore iOS group expire timer sync resets (#2086)
Hotfix: Ignore invalid expire timer sync resets

iOS omits `expireTimer` protobuf property to denote disappearing messages have been turned off. However, that doesn’t allow us to distinguish it from old clients that are not aware of this property. This change ignores these invalid values until we consistently use `0` to denote disabled disappearing messages (as Android does).

- [x] Ignore non-numeric `expireTimer` values during contact sync. Long-term, we’ll use `0` to denote turning off expire timers.
- [x] Log what value `expireTimer` is set to.
- [x] Log changes to `expireTimer` in `handleDataMessage` until it uses `ConversationController::updateExpirationTimer`.
2018-02-28 20:02:17 -05:00
Daniel Gasienica
e64a08657d
Update links to community forum (#2083) 2018-02-28 15:50:56 -05:00
Scott Nonnenberg
65787918bc
v1.5.0
_Note: Includes fixes from 1.4.0-beta.1 (never released to production),
1.5.0-beta.1, and one additional pull request (#2072)_

Update electron to 1.7.12 (#2029)

New design for import and install flows (#2053)

Support for 'light' imports, which bring just messages, contacts and
groups (#2053, #2072)

Set conversation disappearing messages state and contact block state on
initial link (#1980)

'Restart' -> 'Restart Signal' button in update dialog, thanks @StevenXL
(#2024)

Fixed: If app started offline, conversations would not open (#2064)

Fixed: Attached images would sometimes show up rotated improperly (#2040)

Fixed: Uncaught Exception: TypeError; 'getSize' (#2061)

Fixed: File paths with special characters could be shown in misleading
way

Fixed: incoming messages sometimes didn't appear at all (#2050)

Fixed: 'Cannot find module ./app/locale' error popup when attempting to
start another instance of the app on Windows (#2017)

Fixed: Setting NODE_ENV environment variable to 'development' would
point it at staging servers (#2010)

Dev:
  - Move ESLint environment configuration into `.eslintrc` (#2051)
  - Sync Protocol Buffers with `libsignal-service-java` (#2046)
  - Update to libsignal-protocol-javascript v1.3.0 (#2050)
  - Make our binary comparisons constant time (#2047)
  - Fix typo in issue template (#2020)
  - Update to new signal branding (#2018)
2018-02-26 16:11:45 -08:00
Scott Nonnenberg
c0bee47f92
Promote 1.5.0-beta.1 (and a couple bugfixes) to production 2018-02-26 15:54:25 -08:00
Scott Nonnenberg
2a384cef7e
Two fixes for tricky import/register scenarios (#2072)
* Clear data on finish of new install, unless re-link/light import

* Don't show setup options in file menu in middle of light import

* Naming changes to address feedback
2018-02-26 15:45:28 -08:00
Scott Nonnenberg
ae75390acc
v1.5.0-beta.1
New design for import and install flows (#2053)

Support for 'light' imports, which bring just messages, contacts and groups (#2053)

Fix: If app started offline, conversations would not open (#2064)

Fix: Attached images would sometimes show up rotated improperly (#2040)

Fix: Uncaught Exception: TypeError; 'getSize' (#2061)

Fix: File paths with special characters could be shown in misleading way

Dev:
  - Move ESLint environment configuration into `.eslintrc` (#2051)
  - Sync Protocol Buffers with `libsignal-service-java` (#2046)
2018-02-22 11:40:25 -08:00
Scott Nonnenberg
42c24dd098
Enable conversation open when app started offline (#2064)
Turns out textsecure.messaging is only set up on first connection to the
server. When we start up offline, we never do that. And it prevents the
user from opening every conversation.

There's a whole lot more to do to bulletproof ourselves against a
missing textsecure.messaging (and then beyond that, queuing outgoing
messages so they don't get dropped completely when offline).

Hence, it's a band-aid.
2018-02-22 11:14:26 -08:00