Commit Graph

3247 Commits

Author SHA1 Message Date
Daniel Gasienica c285bf5e33 Replace loadImage with autoOrientImage 2018-02-15 15:14:59 -05:00
Daniel Gasienica 4431854923 Add autoOrientImage module
This module exposes `loadImage` with a `Promise` based interface and pre-
populates `orientation: true` option to auto-orient input. Returns data URL
as string.

The module uses a named export as refactoring references of modules with
`default` (`module.exports`) export references can be error-prone.
See: https://basarat.gitbooks.io/typescript/docs/tips/defaultIsBad.html
2018-02-15 15:14:59 -05:00
Daniel Gasienica c77063afc6 Auto-orient preview images
See: #998
2018-02-15 15:14:59 -05:00
Daniel Gasienica 06dba5eb8f TODO: Use native Canvas::toBlob
One challenge is that `Canvas::toBlob` is async whereas `dataURLtoBlob` is sync.
2018-02-15 15:14:59 -05:00
Daniel Gasienica b15c304a31 Make null check strict
Appeases JSHint. ESLint has a nice `smart` option for `eqeqeq` rule:
https://eslint.org/docs/rules/eqeqeq#smart
2018-02-15 15:14:59 -05:00
Daniel Gasienica ea70b92d9b Use Canvas::toDataURL to preserve ImageView logic
This way, all the other code paths remain untouched in case we want to remove
the auto-orient code once Chrome supports the `image-orientation` CSS property.

See:
- #998
- https://developer.mozilla.org/en-US/docs/Web/CSS/image-orientation
2018-02-15 15:14:59 -05:00
Daniel Gasienica 62fd744f9f Use CSS to constrain auto-oriented images 2018-02-15 15:14:59 -05:00
Daniel Gasienica f4d3392687 Replace ImageView el with auto-oriented canvas
See: #998
2018-02-15 15:14:59 -05:00
Daniel Gasienica 1602d7f610 Pass Blob to View (for ImageView)
This allows us to do JPEG auto-orientation based on EXIF metadata.
2018-02-15 15:14:59 -05:00
Daniel Gasienica e6a414f2b2 🔪 Remove newline 2018-02-15 15:14:59 -05:00
Daniel Gasienica 5f0d9570d7 Expose blueimp-load-image as window.loadImage 2018-02-15 15:14:59 -05:00
Daniel Gasienica 1e1c62fe2f Add blueimp-load-image npm dependency 2018-02-15 15:14:59 -05:00
Daniel Gasienica ad17fa8a68 Remove blueimp-load-image Bower dependency 2018-02-15 15:14:59 -05:00
Daniel Gasienica be5cbc9d2b Move ESLint environment configuration into .eslintrc (#2051) 2018-02-15 15:12:20 -05:00
Daniel Gasienica b6ef67c402 Sync Protocol Buffers with libsignal-service-java (#2046)
Synchronizes our protocol buffers with `libsignal-service-java` project.

**Changes**
- [x] **BREAKING:** Rename `package` from `textsecure` to `signalservice`.
      ⚠️~~Workaround: Rename back to `textsecure`.~~
      Changed all protobuf `package` names across our project.
- [x] Rename `java_` metadata.
- [x] Move `NullMessage`, `ReceiptMessage`, and `Verified`.
- [x] Rename `Contacts.isComplete` to `Contacts.complete`. Confirmed to be
      unreferenced in our project.
- [x] Rename `Settings` to `Configuration` (`textsecure.protobuf.Settings` seems
      to be unused)
  - [x] Rename `libtextsecure` `MessageReceiver` `settings` event to
        `configuration`.
- [x] Rename `ReceiptMessage.timestamps` to `ReceiptMessage.timestamp`.
- [x] Add `AttachmentPointer` `width` and `height`.
- [x] Renamed `IncomingPushMessageSignal.proto` to `SignalService.proto` to
      match server.

---

commit 2b6aa19bf9
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Wed Feb 14 19:41:24 2018 -0500

    Rename protobuf `package`: `textsecure` --> `signalservice`

    Brings us closer to `libsignal-service-java`.

commit 91612880a5
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Wed Feb 14 19:19:35 2018 -0500

    Rename `SyncMessage.Settings` to `SyncMessage.Configuration`

commit 848eb95599
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 13 20:16:43 2018 -0500

    Rename `ReadReceipt` `timestamps` --> `timestamp`

commit 39859e64b4
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Wed Feb 14 18:43:42 2018 -0500

    Rename `IncomingPushMessageSignal.proto` to `SignalService.proto`

    This matches the `libsignal-service-java` filename.

commit fd4bfd76af
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 13 16:24:36 2018 -0500

    Revert protobuf `package` to `textsecure`

    This was a breaking change and would need to be introduced with additional
    changes.

commit 9f618fa917
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 13 16:09:55 2018 -0500

    Sync service protocol buffers with Java project

    Snapshot: https://github.com/signalapp/libsignal-service-java/blob/4684a49b2ed8f32be619e0d0eea423626b6cb2cb/protobuf/SignalService.proto
2018-02-15 15:06:14 -05:00
Scott Nonnenberg 3a159d5cb8 v1.4.0-beta.1
Update electron to 1.7.12 (#2029)

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)

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

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

Dev:
  - 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)
v1.4.0-beta.1
2018-02-14 12:38:37 -08:00
Scott Nonnenberg 391ec29f8d Update to libsignal-protocol-javascript v1.3.0 (#2050) 2018-02-14 12:24:17 -08:00
Scott Nonnenberg 2cfdaca3c1 Make our binary comparisons constant time (#2047) 2018-02-14 12:15:26 -08:00
Scott Nonnenberg 4033a9f813 Fix typo in issue template (#2020) 2018-02-02 10:43:48 -08:00
Scott Nonnenberg 7ceeb8bac4 Update electron to 1.7.12 (#2029) 2018-02-02 10:04:38 -08:00
Steven Leiva 742fe73d34 'Restart' -> 'Restart Signal' button in update dialog (#2024) 2018-02-01 11:35:15 -08:00
Scott Nonnenberg 7b49180bc0 Big update to new signal branding (#2018) 2018-01-30 14:22:51 -08:00
Scott Nonnenberg c64f0fc75e app.quit() -> app.exit(), immediate app close on second instance (#2017) 2018-01-30 10:55:49 -08:00
Scott Nonnenberg 72b7e4ec34 Process expireTimer and block status along with contact/group sync (#1980)
* Mark group as left = false if it is active in contact sync

* Handle expireTimer + blocked state along with contact/group sync
2018-01-29 18:14:39 -08:00
Scott Nonnenberg 3f0354f09e Harden production against NODE_ENV environment variable (#2010)
Fixes #1999
2018-01-29 16:57:49 -08:00
Scott Nonnenberg 9d9991e0f3 v1.3.0-beta.1
Update to Electron 1.7.11 (#1996)

Fixed: Crash during input via Chinese IME on Mac (#1996)

Fixed: Expired disappearing messages would sometimes remain in
conversation (#1983)
v1.3.0-beta.1
2018-01-25 10:57:41 -08:00
Scott Nonnenberg 5bb6b2f77f Update to latest Electron 1.7.x (#1996)
Fixes #1991, related to IME input on Mac.
2018-01-23 13:48:30 -08:00
Scott Nonnenberg fb2ebddaa3 Remove expired message if it expired during database fetch (#1983)
* Log SyncMessage destination, even if it's a group

* Remove disappearing message even if deleted during fetch

This change fixes a potential race condition with disappearing message
removal from the UI. If the UI is in the middle of making a database
request for messages to display, then we need to wait for that to
complete before removing the newly-deleted expired message.
2018-01-23 12:27:34 -08:00
Scott Nonnenberg b2a3a0e679 v1.2.0-beta.2
Fixed: forwarded video would not play (#1977)

Fixed: conversation was inaccessible if group member had invalid phone
number (#1968)

Fixed: powershell warning caused cert validation of downloaded update to
fail on windows (#1976)

Fixed: 'Missing signed prekey' errors after re-link (#1979)

Add badge with unread count to the tray icon - thanks @m-pilia (#1934)
  Note: to try this test feature out, use the
   `--use-tray-icon` and `--start-in-tray` command-line arguments

Dev:
- Additional logging for sort of conversation list (#1969)
- Dependency updates, fixes required for successful release
  (#1966 and #1976)
- Log more info along with http errors (#1968)

Note: 1.2.0-beta.1 was never released - changes here:
  https://github.com/WhisperSystems/Signal-Desktop/releases/tag/v1.2.0-beta.1
v1.2.0-beta.2
2018-01-17 16:10:52 -08:00
Scott Nonnenberg 33fd9c5dd4 Account setup: confirm first signed prekey, clear prekeys (#1979) 2018-01-17 15:28:32 -08:00
Scott Nonnenberg c70fb3a254 Video/audio: rely on the browser to detect content type (#1977) 2018-01-17 15:28:12 -08:00
Martino Pilia 7034d8759d Add badge for unread messages to the tray icon (#1934)
This commit adds a badge to the tray icon that displays the number of
unread messages, if there is any. It is implemented by providing
alternative versions of the icon, that replace the default image when a
message is received.

The badge is rendered graphically as a red circle containing the number
of unread messages. Since a different icon file is needed for each
possible number of unread messages, but this number is clearly
unbounded, only the numbers from 1 to 9 are provided. If there are 10 or
more unread messages, a single badge (depicted as "9+") is used.

Resolves #1917
2018-01-17 15:27:58 -08:00
Scott Nonnenberg 9ef8228ff8 Update electron-builder to latest, with .ico fix (#1976) 2018-01-17 15:27:18 -08:00
Scott Nonnenberg 743e897541 Left pane: small sorting fix, logging for error cases (#1969) 2018-01-12 16:22:00 -08:00
Scott Nonnenberg ce01eb7913 Log more info w/http errors, resilient to invalid group members (#1968)
* api.js: HttpError now preserves more of original error info

* Allow invalid conversation to be added to ConversationController

If a number we don't believe is valid comes in as part of a group, we
fall apart. We event prevent display of that conversation. Because we
have 'isValid()' protections in place for the places we create contacts
from user input in desktop (the search bar), we can temporarily add an
invalid contact to our collection (not saving it to the database) to
unblock this group scenario.

Still investigating what kind of phone number is valid in a mobile app
but not valid for us.

* Finish the debuggable error support

* Fix logging in the case of an invalid number
2018-01-12 16:19:26 -08:00
Scott Nonnenberg 177dfb3220 Dependency updates, fixes required for successful release (#1966)
* A number of fixes required for successful build after upgrades

- extract now takes an absolute directory only
- something changed, so we now need to force NODE_ENV=production; we use
  electron-is-dev for this
- electron-builder, electron-publisher-s3, and electron-updater are now
  updated to their latest available versions

* Add direct dependency on extract-zip, since we use it directly

* Load 'config' module after we've modified NODE_ENV

* Downgrade electron-builder due to bug, downgrade icon-maker too

The latest electron-builder came with a fix for one of our bugs as well
as a new bug that blocks builds on Windows: https://github.com/electron-userland/electron-builder/issues/2462

There's no good reason to upgrade icon-maker. And a good reason to keep at the version on github: https://github.com/jaretburkett/electron-icon-maker/issues/7
2018-01-12 16:14:45 -08:00
Scott Nonnenberg d81943cf20 v1.2.0-beta.1
Update to Electron 1.7.10 (#1919)

Fix issue where clicking Windows notification breaks window out of
aero-snap location (#1918)

Fix issue where old log data would persist in logs dir (#1945)

Fix issue where disabled send field (in the middle of send) could be
edited after click (#1937)

Update strings (#1921)

Dev:
  - Fix error to console when verifying contact in standalone mode
    (#1961)
  - Remove all built assets from repo (#1955)
  - Log out information from DOMException when import fails (#1923)
  - Log clearer messages regarding prekey/signed prekey fetches (#1961)
  - Make errors more debuggable; capture correct stack, include name
    (#1944)
  - Add eslint/mocha with code coverage for non-browser code (#1945)
  - Revamped github issue and pull request templates, updates to
    contributing.md/readme.md (#1955 and #1956)
  - Document building/testing releases in Contributing.md,
    thanks @veggiedefender (#1867)
  - Update a number of dependencies to the latest: builder, websocket,
    spellcheck (#1920)
v1.2.0-beta.1
2018-01-10 18:17:09 -08:00
Scott Nonnenberg bbab4bba10 Fix device ID check, clean up prekey fetch logging (#1961)
* DeviceId is a string, so we use the less-strict comparison

* Clean up prekey fetch logging
2018-01-10 18:12:24 -08:00
Scott Nonnenberg 9b2e2a4605 Readme: big install, Contributing: mention Next Steps project (#1956) 2018-01-10 17:47:22 -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
Jesse Li 752ef40d47 Document building/testing releases in Contributing.md (#1867)
* Document building/testing releases

* move instructions for testing releases to bottom
2018-01-08 13:56:30 -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 6464d0a5fa Make errors more debuggable; capture correct stack, include name (#1944)
No more errors like this in the logs!

```
INFO  2018-01-05T18:33:15.942Z Message.saveErrors: null Error
    at file:///C:/Users/Test/AppData/Local/Programs/signal-desktop/resources/app.asar/js/libtextsecure.js:30:33
    at file:///C:/Users/Test/AppData/Local/Programs/signal-desktop/resources/app.asar/js/libtextsecure.js:138:3
    at file:///C:/Users/Test/AppData/Local/Programs/signal-desktop/resources/app.asar/js/libtextsecure.js:40718:3
```

It has no information in the title, and then the callstack points to
the `new Error()` line in the old `errors.js`.

This change will include the actual error name and message details in
the stack, and will include the original http error stack as well if
provided.
2018-01-08 11:08:25 -08:00
Scott Nonnenberg 94a8c7e524 Update a number of dependencies to the latest: builder, websocket, spellcheck (#1920)
* Update builder to the latest

* Upgrade a number of dependencies
2018-01-08 10:48:15 -08:00
Scott Nonnenberg e999473f19 Preserve disabled state in the middle of sending message (#1937)
* Preserve disabled state in send-message field on click

Also: get consistent in treatment of 'disabled' property.

* Add some comments explaining how audio recording dismissal works
2018-01-04 16:51:00 -08:00
Scott Nonnenberg 98d3a5e607 Update strings for just about all supported languages (#1921) 2018-01-04 16:28:53 -08:00
Scott Nonnenberg 66aa76e501 Log out information from DOMException when import fails (#1923)
This should give us the information we're looking for when imports fail
mysteriously!

https://developer.mozilla.org/en-US/docs/Web/API/DOMException
2018-01-04 16:26:41 -08:00
Scott Nonnenberg 8fd0adc486 Update to Electron 1.7.10 (#1919) 2018-01-04 16:20:41 -08:00
Scott Nonnenberg deb9bab086 Remove duplicate showWindow method (#1918) 2018-01-03 18:18:13 -08:00
Scott Nonnenberg 2bd27941c0 v1.1.0
Note: This release is the same thing as https://github.com/WhisperSystems/Signal-Desktop/releases/tag/v1.1.0-beta.6

Listed below are the changes from the previous production release: https://github.com/WhisperSystems/Signal-Desktop/releases/tag/v1.0.41

Update to electron 1.7.9 (#1736)

Support the latest phone number formats via libphonenumber update (#1899)

Reduce download size by ~25MB over the previous production build (#1869)

Emoji - thanks @liliakai:
  - Emoji picker (#1608)
  - Add support for Emoji 5 (#1797)

Notifications:
  - Windows 7: Use an alternate mechanism for notifications (#1812)
  - Prevent drawAttention() when notifications are turned off - thanks @canerelci! (#1612)

Linux:
  - Support for current (artful) and previous (xenial) ubuntu versions (#1856)
  - Fix missing application icon on some Linux distributions (#1735)
  - Fix issue where window would not show new message alerts on some Linux systems - thanks @cornerman (#1820)
  - Add .deb specific dependencies - thanks @veggiedefender (#1858)

The default button is now 'later', not 'restart' in the 'update available' dialog (#1894)

Make the window minimum width a little smaller - thanks @emptyflask (#1863)

Intl-friendly sort order for contact lists (#1900)

Fix issue where update would restore deleted windows shortcut (#1804)

Fix issue where .tif file attachments could not be sent or received (#1901)

(in testing) Add a tray icon to the application behind command-line argument - thanks @m-pilia (#1676)
  --use-tray-icon enables the tray icon
  --start-in-tray enables the tray icon and the application starts minimized in the tray bar

(in testing) Support pass-through proxies with HTTPS_PROXY environment variable (#1878)

Dev:
  - Display of environment and app instance in title bar/about window (#1606)
  - Support for beta releases installed beside production versions (#1606)
  - Fix json parsing exceptions obscuring server errors (#1605)
  - Be resilient to thrown non-errors in import process (#1737)
v1.1.0
2017-12-20 10:47:21 -08:00