Commit graph

186 commits

Author SHA1 Message Date
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
Martino Pilia
cd50fe3123 Add a tray icon to the application (#1676)
This commit adds a tray icon to the application, shown in the system
tray bar, that can be used to minimise the application window.  This
is a common feature on most desktop messaging apps (e.g. Telegram
Desktop or Slack) and allows to save space in the system task bar.

The tray icon provides a context menu that contains a button to
show/hide the application window, and a button to quit the
application. When the tray icon is clicked, the visibility of the
window is toggled.  When the close (x) button of the window is
pressed, the application is not terminated but minimised to the tray
icon instead (it can be terminated by using the "Quit" entry in the
File menu or in the context menu of the tray icon).

The tray icon is disabled by default, and two command line arguments
are available to enable it:
  --use-tray-icon: enables the tray icon
  --start-in-tray: enables the tray icon and the application starts
                   minimised in the tray bar

Resolves: #1480
2017-11-27 14:48:09 -08:00
Scott Nonnenberg
0a4f984cf5
Properly localize group changes (#1802)
* Properly localize group updates

* Remove phone number in display name if contact in address book

* New string for multiple new group members
2017-11-21 16:38:13 -08:00
Scott Nonnenberg
f07302c2cd
Add some copy clarifying the import process (#1803) 2017-11-21 14:51:58 -08:00
Vangelis
c0c4730bad Added top level menu shortcuts, pull labels from messages.json (#1702)
* Added top level menu shortcuts (Fixes #1688 and #1695).

The ampersand (&) character in front of a letter in a menu label
indicates that the letter that follows '&' will be used as a keyboard
shortcut letter to access this menu. In Windows/Linux, the default
shortcut combination is Alt+<letter>.

* Use non-hardcoded menu labels.

The menu labels were hardcoded in English.
We should not be using plain strings right in the source code, but
pulling them from the `messages.json` files instead.
2017-11-07 15:14:20 -08:00
Scott Nonnenberg
845291c51e
Wait for IndexedDB transactions to complete for import scale (#1698)
* No longer reference 'Chrome App' on the start screen

* Imports are only complete when IndexedDB transaction is complete
2017-11-07 10:19:18 -08:00
Heather Booker
0d3c70151d Fix copy pasta of timestamp_m to timestamp_h in locales (#1582) 2017-10-20 15:51:28 -07:00
Scott Nonnenberg
75cece3358 Improve OS menu (#1563)
* Remove reload options, new file/help menus, tools/log at bottom

* Further menus refactor: install handlers at template creation

* WIP: Further tune menus, add custom about window

* New About window, new help menu items, menu labels now i18n

* Default device name on registration is now computer hostname

The OS of the device makes sense for those of us testing across a lot of
different OSes. And maybe for a user with just one desktop device. But
most users with multiple desktop devices are using the same OS for both.

* About window: Only show window when content is ready

* Fix typo in app/menu.js
2017-10-13 16:49:16 -07:00
Axel
3dc3667b45 Add setting to hide menu bar (#1551)
* Add setting to hide menu bar

Add a setting in the themes section to hide the menu bar.
The menu bar is not needed in everyday use and might not fit in with
signals dark theme. The hidden menu bar can still be shown by pressing
alt.
autoHideMenuBar is added to windowConfig and saved and restored on
startup to prevent flickering.

* Trigger events only when related setting changes

Set the event to trigger on instanciation of the view.
Notification settings no longer reapply the theme or menu bar settings.

* Save window state when closing the window

When not moving or resizing the window, no BrowserWindow config would be
created and saved.
2017-10-13 11:39:18 -07:00
Lilia
24f3763836 i18n group updates (#1549)
// FREEBIE
2017-10-10 08:49:12 -07:00
Scott Nonnenberg
8b60212c12 Update strings for fa, no, pt_BR, pt_PT, ro, zh_CN, zh_TW (#1517)
Also, remove unneeded (and potentially brittle) title from support link
in importError string.

FREEBIE
2017-09-28 17:44:41 -07:00
Scott Nonnenberg
0416d2162c
Tune the import error message: suggest re-export, debug log link
FREEBIE
2017-09-14 17:03:16 -07:00
Scott Nonnenberg
7f8ade7747
Remove migration-related functionality, leaving export stuff
FREEBIE
2017-09-14 17:03:14 -07:00
Scott Nonnenberg
413fba80af
Separate dir selection from import, better import button text
This allows us to show the 'import in progress' screen only when the
user has successfully selected a directory.

FREEBIE
2017-09-14 17:02:46 -07:00
Scott Nonnenberg
ba347744ff
Import: choice on first startup, workflow, ported to Node.js fs API
FREEBIE
2017-09-14 17:02:43 -07:00
David Balatero
9a7f4ae41c
Show dialog box when there's an update for download 2017-09-14 16:53:50 -07:00
lilia
2528acc717
Remove platform-specific links from install flow
Mostly to satisfy the mac app store.

// FREEBIE
2017-09-14 16:53:43 -07:00
Scott Nonnenberg
00e1a6a36a Export: Improve usability - timing expectations, install button (#1474)
Because export might take a couple minutes, we now set expectations
that it might take 'several minutes' instead of just 'please wait.'

We also promote 'Install new Signal Desktop' from a text link in the
instructions to a button. This is important on the 'Completed' screen
because it is bigger and to the left of the 'Export Again' button, which
previously drew primary focus on that screen.

Lastly, we also remove the title-specific element of the support link,
so we're resilient to title changes in the future.

FREEBIE
2017-09-13 13:33:40 -07:00
Scott Nonnenberg
c0cd733139 Full export, migration banner, and full migration workflow - behind flag (#1342)
* Add support for backup and restore

This first pass works for all stores except messages, pending some scaling
improvements.

// FREEBIE

* Import of messages and attachments

Properly sanitize filenames. Logging information that will help with
debugging but won't threaten privacy (no contact or group names),
where the on-disk directories have this information to make things
human-readable

FREEBIE

* First fully operational single-action export and import!

FREEBIE

* Add migration export flow

A banner alert leads to a blocking ui for the migration. We close the socket and
wait for incoming messages to drain before starting the export.

FREEBIE

* A number of updates for the export flow

1. We don't immediately pop the directory selection dialog box, instead
  showing an explicit 'choose directory' button after explaining what is
  about to happen
2. We show a 'submit debug log' button on most steps of the process
3. We handle export errors and encourage the user to double-check their
  filesystem then submit their log
4. We are resilient to restarts during the process
5. We handle the user cancelling out of the directory selection dialog
  differently from other errors.
6. The export process is now serialized: non-messages, then messages.
7. After successful export, show where the data is on disk

FREEBUE

* Put migration behind a flag

FREEBIE

* Shut down websocket before proceeding with export

FREEBIE

* Add MigrationView to test/index.html to fix test

FREEBIE

* Remove 'Submit Debug Log' button when the export process is complete

FREEBIE

* Create a 'Signal Export' directory below user-chosen dir

This cleans things up a bit so we don't litter the user's target
directory with lots of stuff.

FREEBIE

* Clarify MessageReceiver.drain() method comments

FREEBIE

* A couple updates for clarity - event names, else handling

Also the removal of wait(), which wasn't used anywhere.

FREEBIE

* A number of wording updates for the export flow

FREEBIE

* Export complete: put dir on its own line, make text selectable

FREEBIE
2017-08-28 13:06:10 -07:00
Scott Nonnenberg
b2690afa32 Clarify someRecipientsFailed string via description
FREEBIE
2017-08-08 11:22:41 -07:00
Scott Nonnenberg
305bd6b3b8 App loading screen: show messages processed so far
Also, show the same loading screen on index.js before we've bootstrapped
the app.

FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
14765599f3 Delete individual message
FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
782b8c7640 someRecipientsFailed string: Add period for consistency
... with messageNotSent.

FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
08ecb5f3d2 Improve wording on the 'SN changed' popup after verification
FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
8112cd220a Show warning when we discover key change on verify
FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
86b1aafe0c "Clear verification" -> "Mark as not verified"
We lose consistency with iOS, but it is more consisent with the other
phrasing used throughout the app.

FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
ff4fde651c Make it clear in conversation just some recipients failed
FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
12914307f1 Improve experience when discovering identity key error on send
New experience in the Message Detail view when outgoing identity key
errors happen, matching the Android View.

'View' button is only shown on outgoing key errors right now.

When a contact with an outgoing identity key error is clicked, they are
taken to a view like the popup that comes up on Android: an explanation
of what happened and three options: 'Show Safety Number', 'Send Anyway',
and 'Cancel'

Contacts are now sorted alphabetically, with the set of contacts with
errors coming before the rest.

FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
b6cca41a0c Update verification-related strings to better match mobile app
FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
1e8ae774a2 Differentiate between local and remote trust decisions
FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
2778148179 Move unverified banner text to match Android
Longer, so it will wrap more often. We have the right alignment and
padding in place, though, so it looks pretty reasonable.

FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
12d7fb3b74 Left-align confirmation dialog text, explain more on 'send anyway'
FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
16433d661a Show call to action on group member list when verifying
FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
31bf05e14a Add verified state summary to top of safety number screen
FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
1cf9289b1a Add items to conversation history when user verifies/unverifies
FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
02973372aa Update strings to use 'Click to show' not 'Click to verify'
'Click to verify' suggests immediate action. We don't want that.

FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
a827334c3e Allow re-send of messages in msg detail view on OutgoingKeyError
We also show more errors than we used to in the MessageDetail screen
to help make it clear what is happening, and why the user would need to
re-send.

FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
8264f3ba33 Make the term 'Verified' fully localizable
FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
3d61f87d86 Remove isVerified string from messages.json - don't use
We don't need this extra string for the safety number screen, since the
header includes the user's verified status.

FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
c7e385eb38 Remove 'safety number approval' option from settings dialog
Also sync templates in test/index.html and background.html

FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
243cbd8123 Confirmaton on send, banner when 'unverified'
Not yet using the new APIs, but ready to. Still to do:
- Send sync messages on trust decisions
- Respond to received trust decision sync messages
- Show trust decisions in the conversation history
- In that rare situation where a sent message ends up with a key error
  make it easy to retry the send.

FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
bedf10056b Support for group-member verifications via second-level panel
Also:
- All the necessary wire-up to update things in real time. If you have
a safety number page up via a group member view as well as via a 1:1
conversation with that contact, they'll both be updated as the
underlying model changes. Similarly, the overall group will update
in real-time as members change.
- A bit of special-casing for yourself in a group conversation - you're
shown as 'me' and are not clickable, where normally that would take you
to the Safety Number screen for that contact. You are also not included
in the trust calculations for a given group.

FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
ae3587f05e Move all instances of 'verify identity' to 'show identity'
As discussed in standup this morning - only the act of verifying or a
statement about current status should use that word 'verify.'

FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg
ee0b0f5ffb Remove all concept of 'key conflict' from the app 2017-08-04 12:03:25 -07:00
Ikarulus
ec3278ca3a add message length warning for android clients 2017-06-07 15:53:14 -07:00
Scott Nonnenberg
d294cc96a5 A few tweaks to safety number-related UI
* Show a pointer cursor on safety number change notification
* Add 'click to verify' to the text shown there
* Add ':' to the text shown on the safety number screen
* Limit the width of the safety number box, to force 3x4 layout
* Center the safety number box

FREEBIE
2017-05-23 15:50:22 -07:00
lilia
681418cf6b Restyle last seen indicator
Add horizontal line behind text.

// FREEBIE
2017-05-23 11:08:23 -07:00
Scott Nonnenberg
4c7bfbe9ff Scroll down button: when scrolled up, or new non-visible message
FREEBIE
2017-05-23 11:08:23 -07:00
Scott Nonnenberg
fed26c36ca Add new Last Seen Indicator with unread count, scroll to it
This is to ensure that when there are a lot of unread messages, the user
is given the chance to see all of them by being scrolled to the oldest
new message.

When a new message comes in, the indicator will be incremented.

When the user sends a message or switches away from the conversation,
the last seen indicator will be removed.

FREEBIE
2017-05-23 11:08:23 -07:00
lilia
bec69826ae Add descriptions to i18n messages about network status
A transifx translator requested some clarity around one of these strings, so
I've added brief descriptions for each of them.

// FREEBIE
2017-05-22 12:16:25 -07:00
lilia
cfe0c77243 Conversation view blocks sending to left groups
Instead of attempting to send, which will throw an 'Unknown group' exception,
show a toast.

// FREEBIE
2017-05-16 12:10:29 -07:00
lilia
3ea5c0435b Update attachment style
Add names and sizes for all attachments except images, and (as with
arbitrary attachments), clicking on the text will open a save dialog.
In the absence of a filename, choose something that makes sense.

Display different icons for different media types, including distinct icons
for voice notes and audio files.

In iOS theme, audio, video, voice, and files are all encapsulated in bubbles.

Closes #804
Closes #842
Closes #836

// FREEBIE
2017-05-12 15:27:45 -07:00
lilia
d3492960a6 Display info in network status when unlinked
When we can't connect due to being unlinked, network status indicator
will show an appropriate informational message and a button to open the
installer window to relink.

// FREEBIE
2017-04-12 20:43:16 -07:00
Sam Vevang
ed4991974b set up a new view for displaying the network status
// FREEBIE
2017-04-08 00:10:56 -07:00
karissa
eb5c95e287 Add a few missing translatable strings to conversation search view 2017-02-03 20:48:05 -08:00
Asa Ayers
bda0430805 Add an option to play audio notifications 2017-02-02 09:00:14 -06:00
RiseT
96252a7ee6 Use singular form for per-conversation safety numbers
// FREEBIE
2016-12-03 20:58:33 +01:00
Ikarulus
53cd3af78b Added a dark theme
I added a dark theme in order to solve #328.
This may fix #328 at least partially.
2016-12-02 00:41:42 +01:00
lilia
c0a160b1dd Yet more identity key -> safety numbers changes 2016-10-28 16:53:18 +09:00
lilia
74883ccd3c More identity key -> safety numbers changes 2016-10-28 16:47:45 +09:00
lilia
a67bd75484 Update verification screen copy 2016-10-28 15:13:22 +09:00
lilia
635178b06f Fix string 2016-10-10 09:59:40 +09:00
lilia
6162f22766 Fix some localization descriptions 2016-10-08 11:24:19 +09:00
lilia
d6f714defc Improve capitalization consistency in menus
Android uses sentence case. iOS uses title case.
2016-10-08 11:17:08 +09:00
lilia
15a9423a17 Change Identity to Safety Numbers in conversation menu
Fixes #935
2016-10-08 11:06:20 +09:00
2-4601
669338c717 i18n 'Theme'
// FREEBIE
2016-10-07 19:27:05 +09:00
2-4601
81e1b84129 Fix 2nd person conjugation in exp. timer messages
// FREEBIE
2016-10-07 09:25:19 +09:00
lilia
f05d693994 Switch from fingerprints to safety numbers 2016-10-05 19:11:39 +09:00
lilia
7fe708d195 Insert keychange advisories
On click, these open a verification panel for the relevant contact,
within this conversation.

// FREEBIE
2016-10-05 19:11:39 +09:00
lilia
1fe90ecdcb Add frontend for safety numbers approval setting
Adds the checkbox under settings.

// FREEBIE
2016-10-05 19:10:20 +09:00
lilia
0bba096510 Use 'You' instead of your own phone number 2016-10-05 19:09:20 +09:00
lilia
2bbee2d72d Fix truncated text in conversation list on timer update 2016-10-05 19:09:20 +09:00
lilia
8d16bfb65e Populate conversation snippet for timer updates 2016-09-29 16:17:01 -07:00
lilia
2b2c6ab040 Frontend for timer updates and timer indicator 2016-09-29 16:17:01 -07:00
lilia
4cd2c03687 Add clock svg style 2016-09-28 17:20:03 -07:00
lilia
fd08297cc2 Fix wrong link to app store on install flow
Fixes #913
2016-09-27 11:54:07 -07:00
lilia
9b645f90c8 Remove Android requirement from install flow
// FREEBIE
2016-09-26 10:43:51 -07:00
lilia
f610233ef6 Add support for syncing blocked numbers
// FREEBIE
2016-09-07 13:04:45 -07:00
lilia
baff77c509 Revert "Remove Android requirement from install flow"
This reverts commit 4b9f7d518e.
Put this back when iOS desktop support is ready for general release.
2016-09-01 14:04:46 -07:00
lilia
4b9f7d518e Remove Android requirement from install flow
// FREEBIE
2016-08-31 15:04:01 -07:00
lilia
9ab64ec44d Allow localization of month-day format string
The short month-day format ex: 'Aug 8', is not built-in to momentjs, so
we need to localize it.

// FREEBIE
2016-08-18 10:41:05 -07:00
lilia
67c7a06c28 Use momentjs for timestamp localization
Let momentjs handle proper pluralization of relative times. This comes
at the sacrifice of displaying 'minutes' in the conversation list
timestamp rather than 'min'. Note that we don't use moment's fromNow
instance method so as to preserve the rounding logic that matches the
Android client.

// FREEBIE
2016-08-11 12:22:32 -07:00
lilia
a9562b23b6 Remove duplicate description field
// FREEBIE
2016-08-05 16:54:24 -07:00
lilia
85cf719fb1 Add descriptions to timestamp i18n strings
// FREEBIE
2016-08-05 13:53:48 -07:00
lilia
fed8f62617 Remove untranslatable strings from locale file
// FREEBIE
2016-08-05 13:41:23 -07:00
lilia
bf3f5040aa Pluralize minute in localized timestamp strings
// FREEBIE
2016-08-05 13:20:39 -07:00
Benedikt Radtke
e836bfd3f7 Added basic localization for timestamps
This commit implements basic localization for the timestamps in conversations and the conversation list.

// FREEBIE
2016-08-04 17:40:13 -07:00
lilia
8e1d884a10 Add button for re-importing contacts from phone
Add a section under settings for performing a contact sync from your
mobile device. This just re-runs the same import operation that occurs
at install/link time.

// FREEBIE
2016-06-16 16:43:07 -07:00
lilia
b2f07984df i18n unregistered user errors
// FREEBIE
2016-05-25 20:33:14 -07:00
2-4601
d861797d66 i18n 'Permanently delete this conversation?'
// FREEBIE
2016-05-05 12:54:15 -07:00
2-4601
b9ecdbf402 i18n 'Error handling incoming message'
// FREEBIE
2016-05-05 12:54:15 -07:00
lilia
dd7d72a77d i18n 'Media message'
Fixes #736

// FREEBIE
2016-04-18 19:15:36 -07:00
lilia
1f4587795e Add link to github on debug log
// FREEBIE
2016-04-09 20:55:21 -07:00
lilia
1a06ac6ead Update install copy
// FREEBIE
2016-04-08 15:41:34 -07:00
lilia
9aa429e18a Add frontend support for expiring releases
When a release expires, it gets a persistent banner notification to
upgrade, and an ephemeral toast warning when trying to send a message.

// FREEBIE
2016-04-03 21:11:50 -07:00
lilia
c3a7766dd4 Use normal font size in search bar
Also update placeholder copy to be consistent with Android.

// FREEBIE
2016-04-01 10:37:50 -07:00
lilia
76652c2622 Update style and copy on key changes
// FREEBIE
2016-03-24 13:20:50 -07:00
lilia
6fe9c3f964 Nest key verification inside conflict dialogs
// FREEBIE
2016-03-23 15:04:42 -07:00
lilia
3901bcb8df Style resend button as an inline link
For messages that failed to send due to network errors, this change
allows retrying them directly from the main conversation view rather
than only from the message detail view.

// FREEBIE
2016-03-22 15:38:22 -07:00
lilia
647c2761e0 Move restart button into global menu
// FREEBIE
2016-03-18 16:21:55 -07:00