Commit Graph

301 Commits

Author SHA1 Message Date
Josh Perez 91af0dad78
Faster preferences window 2021-08-18 13:08:14 -07:00
Fedor Indutny 61b7eebfcf
Modernize Benchmarks CI 2021-08-11 12:29:07 -07:00
Scott Nonnenberg 7ce89414bf
Support for alpha build channel 2021-08-06 14:21:01 -07:00
Josh Perez 12d2b1bf7c
Avatar defaults and colors 2021-08-05 20:17:05 -04:00
Fedor Indutny c3bdf3d411
Show lightbox for GIFs 2021-07-14 16:39:52 -07:00
Fedor Indutny 759ced3417
Updater debug utility 2021-06-30 14:27:18 -07:00
Evan Hahn 8b30fc17cd
Officially support the system tray on Linux, in beta only 2021-06-29 14:29:40 -05:00
Evan Hahn af1f2ea449
Officially support the system tray on Windows 2021-06-29 12:18:03 -05:00
Scott Nonnenberg 24960d481e
Move all files under /app to typescript 2021-06-18 10:04:27 -07:00
Jordan Rose 0615e5528f
Improve menu bar on macOS 2021-06-14 12:01:49 -07:00
Fedor Indutny 33595646c1
Add user path to logging exceptions 2021-06-01 11:15:23 -07:00
Fedor Indutny 0e19c17160
Initialize IPC channels early 2021-06-01 11:06:38 -07:00
Josh Perez ceffc2380c Add screensharing behind a feature flag 2021-05-20 17:37:19 -07:00
Evan Hahn 18abe93022 Remove many instances of deprecated url.parse 2021-05-20 17:37:07 -07:00
Fedor Indutny 37c8c1727f Types, better-sqlite3, and worker_threads for our sqlite 2021-04-08 23:53:18 -04:00
Alex Hirsch 901a54b149
Tray: Use 32x32 icon on Windows
See [#5072][0].

[0]: https://github.com/signalapp/Signal-Desktop/pull/5072
2021-04-02 15:29:04 -05:00
Fedor Indutny 1934120e46 Disable Dev Tools in production releases
`--enable-dev-tools` will bring it back.
2021-03-19 16:53:51 -04:00
Evan Hahn 3306c82992 Fix "URI malformed" crashes on Windows 2021-02-22 14:01:40 -08:00
Scott Nonnenberg 2f90d6aca9
Manually manage full-text search table 2021-02-04 12:46:55 -08:00
Evan Hahn bc37b5c907
Add an assertion when updating conversations; update cleanData 2021-02-04 11:54:03 -08:00
Evan Hahn a8787e7c9e
Convert logging infrastructure to TypeScript 2021-01-27 13:13:33 -08:00
Evan Hahn f404904a49 Convert dock_icon.js to TypeScript 2021-01-25 18:29:01 -08:00
Evan Hahn a2f285d243
Put group calling behind a remote feature flag 2020-12-07 14:35:14 -06:00
Brandon Outlaw 2013378136
MacOS – Add shortcut for Window -> Show (#4632) 2020-11-10 16:30:56 -08:00
Evan Hahn 8bfaf598af Add license headers across the project 2020-11-04 13:03:13 -06:00
Vin Howe 526ab4fe29
Add menu option for copying supported images in lightbox (#4614) 2020-11-02 16:47:46 -08:00
hashes4merkle b8dbd5970d
Fixing spelling errors (#4615) 2020-11-02 16:46:49 -08:00
jimio-signal 1c057323ba Point to support flow instead of github 2020-10-26 15:48:44 -07:00
Scott Nonnenberg bc3b61db1d Add p-queue timeouts; fix search crash; improve promise rejection logging 2020-09-21 15:42:51 -04:00
Evan Hahn 6d2e994f9f Windows: mark downloads as "from the internet" 2020-09-21 15:42:50 -04:00
Chris Svenningsen 8a2c17f65f Apply new ESLint rules to legacy code 2020-09-09 17:34:57 -07:00
Chris Svenningsen 5b1536cc02 Initial move towards new ESLint config supporting TS
Co-authored-by: Sidney Keese <sidney@carbonfive.com>
2020-09-01 17:11:16 -04:00
Evan Hahn f8fc23a7a3 Improve nested path detection across app 2020-08-28 15:42:25 -04:00
Peter Thatcher d3a27a6442 Calling support 2020-07-30 13:08:47 -07:00
Scott Nonnenberg 2529c7f9e3 Ensure that 'Join the Beta' menu item shows in production 2020-07-27 14:39:19 -07:00
Ken Powers b842b69660 Help Menu changes 2020-06-23 17:30:33 -07:00
Scott Nonnenberg 6b094e1514 Refactor: Move data-access code to Typescript w/ shared interface 2020-04-15 14:45:11 -07:00
Ken Powers 14b11041ea
Spellcheck: Fallback to all xx-YY locales when xx isn't available 2020-04-15 13:44:46 -07:00
Ken Powers 90130e3be0 Don't start Signal if DB version is greater than we expect 2020-04-06 17:12:16 -07:00
Ken Powers 750e50812c Introduce dialog for long database migrations 2020-03-25 16:47:42 -07:00
Ken Powers 4a8f5db0a4 Use Electron Spellchecker 2020-03-24 17:03:22 -07:00
Ken Powers a90246cbe5 Passive UUID support
Co-authored-by: Scott Nonnenberg <scott@signal.org>
2020-03-24 16:59:35 -07:00
Scott Nonnenberg a840e2e5b1 Remove legacy import flow 2020-03-04 17:12:56 -08:00
Scott Nonnenberg 1726e1b77a
Fix windows fast-glob usage in lint-deps test task
* Introduce normalize-path wherever we use fastGlob

* CI: Update yarn version; install yarn via npm on windows

* Add more logging to Grunt file spectron usage

* Lock core.js to what it was resolving to before: 2.4.1

* test/index.html: Remove nonexistent test file

* test/index.html: Remove missing registration.js

* preload.js: Introduce client-side logging for load failures

* Gruntfile: Introduce better debuggability if prod test fails

* Reintroduce glob for searches inside asar
2020-02-26 17:53:39 -08:00
Ken Powers 8d9ccd3c0a
Ensure proper file permissions on startup
Co-authored-by: Scott Nonnenberg <scott@signal.org>
2020-02-21 15:40:04 -08:00
Scott Nonnenberg 68ee557dcf
Update SQLCipher to 4.3.0 2020-02-19 16:11:06 -05:00
Josh Perez afddc852cc
Add interpolation for fallback dialog messages 2020-02-13 10:14:08 -08:00
Scott Nonnenberg 3938eb9801
A set of fixes and upgrades
* writeToDownloads: Add missing await
* Remove window.isFocused() - not used anywhere!
* Update typescript, p-queue, make necessary changes to fix build
* Slow down sender certificate retries with no existing cert
* Slow down signed prekey refreshes when unlinked - 5s -> 5m
* Update protobufjs to 4.1.2
2020-02-07 14:37:04 -05:00
Scott Nonnenberg 55eff02872 Reintroduce file chooser dialog for every attachment save 2020-01-15 17:23:02 -05:00
Scott Nonnenberg 8a51ca9e71 Lint fix 2020-01-14 12:32:49 -08:00
Scott Nonnenberg 11266cb775 Handle both given and family name in decrypted profile name
* Decrypt given and family names from profile name string
* Handle both given and family name from decrypted profile name
* Ensure we properly handle profiles with no family name
2020-01-13 17:28:28 -05:00
Scott Nonnenberg 1bf9ca7233 Save attachments with macOS quarantine attribute
* Attachments: Always save file to downloads directory, show toast
* Add new build:dev command for casual builds
2020-01-09 14:57:43 -05:00
Ken Powers 0d3b390129 Upgrade Prettier 2020-01-08 09:44:54 -08:00
Tim Ruffing 016a0caf17 Improve query performance using explicit INDEXED BY (#3550) 2020-01-06 16:54:58 -08:00
Ken Powers 11d47a8eb9 Sticker Creator 2019-12-17 12:28:46 -08:00
Scott Nonnenberg e9f08c3da9 Bugfixes for v1.29
* If focus was set to document.body during archive, focus left pane
* Shortcut Guide: Add space between text and shortcut highlight
* Ensure that draft attachment can be closed with click on X button
* Move to keyDown event for user idle checking
* Additional resiliency around avatars; check for them on on-disk
* Increase timeouts to preserve websocket connection
* On startup, be resilient to malformed JSON in log files
* Don't crash if shell.openExternal returns an error
* Whenever we request a contact/group sync, also request block list
* Avatar popup: Ensure styling is mouse- and keyboard-appropriate
* MainHeader: Create popperRoot on demand, not on mount
* CompositionInput: Disable default Ctrl-/ shortcut
* Update libphonenumber
2019-12-03 15:02:50 -05:00
Scott Nonnenberg 0876bf7ae7 Visual bug fixes for v1.29 2019-11-21 10:17:55 -08:00
Scott Nonnenberg 8194b2446b Move to CTRL+= for windows, remove the need for the shift 2019-11-15 14:34:24 -08:00
Scott Nonnenberg 927a0677f1 Zoom In: Remove custom accelerator for windows/linux 2019-11-15 14:34:24 -08:00
Scott Nonnenberg 20a892247f Keyboard shortcuts and accessibility 2019-11-13 16:53:42 -08:00
Scott Nonnenberg d9b96a415b Eliminate unnecessary param in getTapToViewMessagesNeedingErase 2019-10-11 16:00:40 -07:00
Scott Nonnenberg c81c25bb85 Update colors, icons, and fonts 2019-10-10 14:56:14 -07:00
Scott Nonnenberg 0c09f9620f Improve message download performance 2019-10-10 14:56:14 -07:00
Scott Nonnenberg 9db42bc4c6 sql_channel: Ensure we save reference to MultipleQueue to start 2019-09-24 13:43:08 -07:00
Scott Nonnenberg 2a7cfd9776 Startup: integrity_check in addition to cipher_integrity_check 2019-09-24 13:43:08 -07:00
Scott Nonnenberg e39c6e5321
Don't search conversations if searching within conversation 2019-09-05 08:59:21 -07:00
Scott Nonnenberg 85e01ad037 SQL channel: Only serialize data access functions which need it 2019-09-03 16:10:32 -04:00
Scott Nonnenberg edf66f7552 Migrate from schema_version to user_version 2019-08-21 14:55:12 -07:00
Scott Nonnenberg d3d2b0ec52 Use curve functions from native module 2019-08-21 14:55:12 -07:00
Scott Nonnenberg e29eee4583 Update Electron to 6.0.1, SQLCipher to 4.2.0 2019-08-21 14:55:12 -07:00
Scott Nonnenberg b6da081d05 Only log to console if we're on a TTY stdout interface 2019-08-21 14:55:12 -07:00
Scott Nonnenberg c39d5a811a Full-text search within conversation 2019-08-21 14:52:30 -07:00
Scott Nonnenberg 6292019d30 Virtualize search results - only render what's visible 2019-08-21 14:52:30 -07:00
Scott Nonnenberg 9d4f2afa5a Persist drafts 2019-08-21 14:52:30 -07:00
Scott Nonnenberg 5ebd8bc690 Virtualize Messages List - only render what's visible 2019-08-21 14:52:30 -07:00
Scott Nonnenberg d42eb2126e Changes to View Once 2019-08-05 16:23:47 -07:00
Scott Nonnenberg cb9ba0fe7f Re-register support for sealed sender when a device is re-linked 2019-08-05 16:23:47 -07:00
Scott Nonnenberg e62a1a7812 Receive support for View Once photos 2019-07-17 11:29:51 -07:00
Scott Nonnenberg 48691a2558 Clean up transaction handling in sql.js 2019-06-24 14:43:45 -04:00
Scott Nonnenberg ca1e6c3ccd To prevent crashes, catch thrown error from tray.setIcon 2019-06-10 17:41:05 -04:00
Scott Nonnenberg 67c4b0885d Move emojis.shortName from STRING to TEXT to avoid coercion 2019-05-30 12:43:18 -07:00
Ken Powers be5d0837f8 Support additional sticker states
Co-authored-by: scott@signal.org
Co-authored-by: ken@signal.org
2019-05-29 11:01:32 -07:00
Ken Powers 0e9d549cf3 Fuzzy-Searchable Emoji Picker 2019-05-24 17:03:13 -07:00
Ken Powers 29de50c12a Stickers
Co-authored-by: scott@signal.org
Co-authored-by: ken@signal.org
2019-05-16 16:10:37 -07:00
Botond Horvath ffb0b5a27b Hide from Dock on macOS when the tray icon is enabled and the window is closed 2019-05-06 12:46:26 -04:00
Scott Nonnenberg 6cf4f19317 Add a new env variable to the hardening list 2019-04-16 14:35:16 -07:00
Scott Nonnenberg f92769db8c Windows: Return real path, not lowercase path 2019-04-10 13:57:27 -07:00
Scott Nonnenberg be86169a8a Windows: Do our file filtration with case-insensitive checks 2019-04-10 12:37:41 -07:00
Jonathan Canfield 97b26778b3 Remap zoom to Command+= on macOS (#3296) 2019-04-08 10:17:35 -07:00
Scott Nonnenberg c8ea2e9463 Download and install updates without the help of electron-updater 2019-04-05 17:18:37 -07:00
Scott Nonnenberg 6ef0eb7284 When closing database, be resilient to null db 2019-03-28 17:23:09 -07:00
Scott Nonnenberg b3ac1373fa Move left pane entirely to React 2019-03-12 17:44:14 -07:00
Scott Nonnenberg ca5132f712 Present 'database error' dialog in more situations 2019-03-12 17:44:14 -07:00
Scott Nonnenberg ae161c6cf6 Update to Electron 4.x 2019-03-12 17:44:14 -07:00
Scott Nonnenberg e4b0901620 If logs are malformed on startup, delete them all and start over 2019-03-12 17:44:14 -07:00
Scott Nonnenberg 6bcd434585 Prevent crash when tray icon no longer available (due to apt) 2019-02-20 16:51:30 -08:00
Scott Nonnenberg 5165eb3bd4 On database error: show popup, allow user to delete and relaunch 2019-02-20 16:51:30 -08:00
Scott Nonnenberg 3fb6ab295f Debug log optimizations and improvements 2019-02-20 16:51:30 -08:00
Scott Nonnenberg 5b54c9554e Remove groups table, conversation is single source of truth 2019-02-13 16:04:58 -08:00
Scott Nonnenberg 041fe4be05 Remove JSON column and Backbone Model for unprocessed 2019-02-13 16:04:58 -08:00
Scott Nonnenberg 9c540ab977 Add cache support to Signal Protocol Store 2019-02-13 16:04:58 -08:00
Scott Nonnenberg 1d2c3ae23c Download attachments in separate queue from message processing 2019-02-12 16:34:21 -08:00
Scott Nonnenberg 462fa712bc Show members: Pull conversation from group table 2019-02-11 18:32:05 -08:00
Scott Nonnenberg 0ec0ae9dac Protect against unhandled promises when calling checkForUpdates 2019-02-08 11:54:22 -08:00
Scott Nonnenberg 813924685e Link Previews 2019-01-29 13:53:14 -08:00
Scott Nonnenberg 92c2a0f996 Data infrastructure work 2019-01-14 17:40:31 -08:00
Scott Nonnenberg e4babdaef0 Updates to backup infrastructure 2019-01-04 12:21:26 -08:00
Scott Nonnenberg 775e31c854 Lint fixes after recent PRs 2019-01-03 13:44:42 -08:00
Herohtar 22ca4f9cc7 Change tray icon click to always show/focus window (#2984)
* Added function to always show the window on tray icon click and reassigned click event

* Refactored the code to force the window on top into its own function
2019-01-02 14:42:31 -08:00
Scott Nonnenberg 68af1ae1ea Show dialog if application fails to start up properly 2018-11-26 15:26:22 -08:00
Scott Nonnenberg 11fdf22881 Change sessions.id to a TEXT field to prevent type coercion 2018-11-26 15:22:55 -08:00
Scott Nonnenberg fb670ad6b9 Remove IndexedDB files after removing IndexedDB database 2018-11-01 17:00:24 -07:00
Scott Nonnenberg 9f647f00d8 A couple fixes for the data layer, legacy message upgrade/migrate 2018-11-01 17:00:24 -07:00
Scott Nonnenberg f11dd18536 Be resilient to malformed ephemeral.json 2018-11-01 09:34:24 -07:00
Scott Nonnenberg 1755e0adfd Move all remaining stores to SQLCipher 2018-10-31 17:36:51 -07:00
Scott Nonnenberg a7d78c0e9b Sealed Sender support
https://signal.org/blog/sealed-sender/
2018-10-29 14:49:18 -07:00
Scott Nonnenberg 2cfbfe477a Better handle large numbers of messages in cache on startup 2018-10-01 18:18:37 -07:00
Scott Nonnenberg cd60bdd08a Move conversations to SQLCipher 2018-10-01 18:18:37 -07:00
Scott Nonnenberg 48d937b66a Follow symlinks on target file path as well as user/config paths 2018-09-20 15:30:26 -07:00
Scott Nonnenberg 998c35dcb3 Split configuration into low and high traffic files
Also, we're now handling config ourselves instead of using
electron-config and config dependencies.
2018-08-29 10:40:16 -07:00
Scott Nonnenberg 496ebf2a47 Store SQLCipher decryption key in separate file
First, we write the key a whole lot less. We write it on creation, then
never again.

Second, it's in a file we control very closely. Instead of blindly
regenerating the key if the target file generates an error on read,
we block startup unless the error is 'ENOENT' - the file isn't there
at all.

This still allows for the key.txt file to be deleted or corrupted
somehow, but it should be a lot less common than the high-traffic
config.json used for window location and media permissions.
2018-08-16 17:01:32 -07:00
Scott Nonnenberg 9f920aa35b Re-enable orphaned attachment cleanup 2018-08-15 17:45:24 -07:00
Scott Nonnenberg a247ffe5cf When iOS device has been linked, use iOS color scheme 2018-08-15 11:22:45 -07:00
Scott Nonnenberg fba8e8d479 Add logging to help diagnose protocol handler false positives 2018-08-14 13:06:59 -07:00
Scott Nonnenberg c88df69094 New SQL indices and query tweaks to eliminate table scans
Also: New logging on client side to track performance of db queries
2018-08-09 10:11:12 -07:00
Scott Nonnenberg 727925a266 Clean up old messages, better handle errors from sending 2018-08-07 18:29:33 -07:00
Scott Nonnenberg 6e193456f9 Eliminate orphaned external message files on startup
Attachments, visual attachment thumbnails, video attachment screenshots
Quote thumbnails
Contact avatars
2018-08-06 18:08:10 -07:00
Scott Nonnenberg c56ea55e36 Fix duplicate message detection 2018-08-02 17:32:51 -07:00
Scott Nonnenberg 4d5894bf04 Ensure that all multi-statement sql functionss are serialized 2018-07-31 19:29:51 -07:00
Scott Nonnenberg 3105b77475 Migrate to SQLCipher for messages/cache
Quite a few other fixes, including:
  - Sending to contact with no avatar yet (not synced from mobile)
  - Left pane doesn't update quickly or at all on new message
  - Left pane doesn't show sent or error status

Also:
 - Contributing.md: Ensure set of linux dev dependencies is complete
2018-07-31 17:08:45 -07:00
Scott Nonnenberg 5933a34a18 Use window.log in browser context, turn on console eslint rule 2018-07-21 14:52:43 -07:00
Scott Nonnenberg 3c69886320 Finish new Message component, integrate into application
Also:
- New schema version 8 with video/image thumbnails, screenshots, sizes
- Upgrade messages not at current schema version when loading messages
  to show in conversation
- New MessageDetail react component
- New ConversationHeader react component
2018-07-17 15:58:07 -07:00
Scott Nonnenberg 3a2582a087 Permissions: 'return callback(true)' instead of 'return true' 2018-07-12 14:52:34 -07:00
Scott Nonnenberg ad4387803b New media permission, show dialog when not enabled for voice msg
UI now in separate renderer:
  - the permissions popup
  - settings dialog
  - debug log dialog
  - about window

Couple bug fixes:
  - About Window: Fix 'escape' to close window
  - Remove outdated dist/copy tasks from Gruntfile

Eslintified settings_view.js
2018-07-03 16:04:21 -07:00
Scott Nonnenberg 4415293100 Make all OS menus localizable
Turns out that Electron is not localizing the 'role' elements like we
expected would happen.
2018-07-03 16:04:21 -07:00
Scott Nonnenberg 7c3325f55e File protocol filter: log when non-absolute path is rejected 2018-05-31 13:25:45 -07:00
Scott Nonnenberg beb65b14c0 Deny all permissions we don't actually need 2018-05-31 13:25:45 -07:00
Scott Nonnenberg eec61f5289 Fine-tune file protocol filter 2018-05-31 13:25:45 -07:00
Scott Nonnenberg 06b0544bbe Hardening: normalize on-disk attachment paths before save/load 2018-05-31 13:25:45 -07:00
Scott Nonnenberg 53a471b2b1 Expand set of blocked URI schemes 2018-05-23 16:26:48 -07:00
Scott Nonnenberg e2d044e02b Filter file scheme; disable http, https and ftp entirely 2018-05-23 16:26:40 -07:00
Scott Nonnenberg 754d65ae2e Let's make it all pretty, shall we?
We missed a couple directories with previous attempts to turn this on
globally: app/ and libtextsecure/

Not to mention files in places we didn't expect: ts files that weren't
in the ts directory!

This turns prettier on for every file we care about (js, ts, tsx, md)
everywhere in the project but for a few key parts.
2018-05-02 13:40:57 -07:00
Daniel Gasienica f56dc09d01 Add `getAbsoluteAttachmentPath` 2018-04-27 16:31:43 -04:00
Daniel Gasienica 394d2f0bff Fix type signature 2018-04-27 16:31:43 -04:00
Daniel Gasienica 24f4ad53bc Use single quotes for identifiers 2018-04-11 15:54:32 -04:00
Daniel Gasienica 5a6668e677 Add `Attachments.createWriteForExisting`
This function lets us choose where to write attachment to instead of picking
random name.
2018-04-04 18:41:50 -04:00
Daniel Gasienica efd673083d Rename `writeAttachmentData` to `writeNewAttachmentData` 2018-04-04 18:41:50 -04:00
Daniel Gasienica 36771a2dab Prefer double quotes over backticks for identifiers 2018-04-04 18:41:50 -04:00
Daniel Gasienica 8474f3cf7f Use `create*` prefix to clarify curried functions 2018-04-03 15:25:24 -04:00
Daniel Gasienica d9be6a0f94 Destructure Lodash `require`s 2018-04-02 15:12:04 -04:00