Commit graph

309 commits

Author SHA1 Message Date
Scott Nonnenberg 688cae6374 Remove empty string class passed to contact template
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 db2620af0a Safety Number screen: make verify button like other buttons
FREEBIE
2017-08-04 12:03:25 -07:00
Scott Nonnenberg 8d29cb9830 Prevent access to Safety Number when talking to yourself
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 2955c36b3e Confirmation dialog: Make keyboard-accessible: escape to cancel
And proper tab order. Then some more work to re-focus on the message
composition field after the dialog shows up and steals focus.

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
Heather Booker 5a3610c8e0 Specify font-family for identicon in notification
Fixes #904, where letters in notification bubbles were being
displayed in serif font on Antergos (Arch) OS.

// FREEBIE
2017-07-12 15:35:53 -07:00
Ikarulus ec3278ca3a add message length warning for android clients 2017-06-07 15:53:14 -07:00
Scott Nonnenberg 0d722a3186 Last seen indicator visual refresh
- Last seen indicator now spans the full conversation, with subtle
shadow highlights above and below
- Scrollbars now overlap the content of the conversation, allowing last
seen indicator to touch the right edge of the window.
- The iOS and Android conversation background is now #eee instead of
white, which meant that the outgoing messages (Android) and incoming
messages (iOS) had to be updated for contrast. They now have white
backgrounds.
- Similarly, the scroll down button needed more contrast, and its
background is now white in light themes.

FREEBIE
2017-06-01 15:19:25 -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 d9851f51fc Enable voice notes again
For reals this time.

// FREEBIE
2017-05-22 10:09:54 -07:00
lilia 2a8ee26372 Disable voice notes again
This feature is still blocked on a corresponding iOS release.

// FREEBIE
2017-05-17 13:27:31 -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 56d1ce75ac Enable voice notes
And fix recorder background color in dark theme

// FREEBIE
2017-05-12 09:55:15 -07:00
lilia aed5735620 Improve keychange notice reliability/perf
Bind a single listener to keychange events from the storage interface,
which then looks up relevant conversations and adds notices to them,
with tests.

Previously we would need to instantiate a conversation model in order to
start listening to its key change events. In practice this usually
happens at startup but we shouldn't rely on it, and it incurs higher
overhead since it creates a different listener for each conversation.

// FREEBIE
2017-05-09 15:41:41 -07:00
Scott Nonnenberg ee00ad0e15 File attachments: show file size, bold filename, make icon bigger
FREEBIE
2017-05-09 15:14:20 -07:00
lilia a27ea20f3e Improve unsupported file type handling
Make arbitrary files look nicer and display the filename.

If an audio or video element fails to load for any reason, timeout after
a few seconds and render it as an arbitrary file. Also short circuit to
this treatment for common audio and video file types that we know are
going to fail, e.g., proprietary formats from apple.

// FREEBIE
2017-04-18 16:27:50 -07:00
lilia 44a4ff3b52 Refactor install view
Let install view manage the connection to the provisioning socket as
well as cleaning up the window on completion, simplifying options.js.
Call `remove` so that the view stops listening when the window closes.
Move view script and template to background page.
Adds ability to hide nav if this isn't our first run.

// FREEBIE
2017-04-13 13:15:42 -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
lilia 5d1e770307 Tweak network status styles
Remove inline styles
Use flexbox in the left pane

// FREEBIE
2017-04-12 13:02:31 -07:00
Sam Vevang ed4991974b set up a new view for displaying the network status
// FREEBIE
2017-04-08 00:10:56 -07:00
lilia 25ee61d3cb Fix timers after suspend/resume/pause
We use timers to decide when to query and delete expired messages or
when to perform signed key rotations.

Internally, timers are counters that get updated when the CPU ticks, so
if the CPU sleeps, the timer will stop counting, and start again after
it wakes up, ignoring the intervening passage of wall clock time.

To fix this, without having to query the database or other potentially
high overhead operations too often, use an interval to frequently check
the wall clock time. If time jumps forward, trigger a global event so
other listeners can update their possibly-inaccurate timers.

https://stackoverflow.com/questions/6346849/what-happens-to-settimeout-when-the-computer-goes-to-sleep
https://stackoverflow.com/questions/4079115/can-any-desktop-browsers-detect-when-the-computer-resumes-from-sleep

// FREEBIE
2017-03-01 14:36:40 -08:00
lilia 536dd7b951 Add signed key rotation scheduler
Rotate signed prekey every 48hrs, waiting for online access if
necessary. After a rotation attempt is made, schedule the next run for
48hrs in the future.

We use a timeout to "wake up" and handle the rotation. This timeout gets
set on startup and whenever the next rotation time is changed. For
paranoia's sake, always clear the current timeout before setting the
next one.

Since new registrations necessarily upload new signed keys, we reset the
scheduled time to T+48hrs on `registration_done` events.

// FREEBIE
2017-02-16 18:06:20 -08:00
Asa Ayers bda0430805 Add an option to play audio notifications 2017-02-02 09:00:14 -06: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 e86142d07c Hide verification QR code
The scannable fingerprint format has changed, leaving our qr codes out
of date and thus unscannable.
2016-10-22 02:24:54 +09:00
lilia b4007e58f2 Remove dead code 2016-10-22 02:24:17 +09:00
lilia 19b83931ed Enable disappearing messages 2016-10-11 22:52:40 +09:00
2-4601 669338c717 i18n 'Theme'
// FREEBIE
2016-10-07 19:27:05 +09:00
lilia 790407d42e Add qr codes 2016-10-05 19:11:39 +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 600ac94257 Disable disappearing messages
Pending support on ios
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 e809a0cf8b Breakout timer rendering into its own view
Make width and height constant.
2016-09-28 17:20:03 -07:00
lilia bd713352e3 Hourglass can start at any percentage
This breaks the css-purity of our mixin but is necessary in order to
apply the initial offset of the hourglass animation dynamically, since
jquery can't manipulate arbitrary css on psuedo elements.
2016-09-28 17:20:02 -07:00
lilia 5f92ccd524 Render animated hourglass when messages are expiring 2016-09-28 17:20:02 -07:00
lilia 96fd017890 Support for incoming expiring messages
When initialized, or when expiration-related attributes change, expiring
messages will set timers to self-destruct. On self-destruct they trigger
'expired' events so that frontend listeners can clean up any collections
and views referencing them.

At startup, load all messages pending expiration so they can start their
timers even if they haven't been loaded in the frontend yet.

Todo: Remove expired conversation snippets from the left pane.
2016-09-28 17:20:02 -07:00
lilia 7b3b01bdf6 Refactor registration event
Make AccountManager into an event target for better separation between
app and service-library handling of registration events.
2016-09-20 13:42:33 -07:00
lilia 1afe50b1db Make contact sync button quieter
// FREEBIE
2016-09-08 12:05:48 -07:00
lilia 316110703c Remove title attr from socket status
// FREEBIE
2016-09-08 12:05:48 -07:00
lilia f610233ef6 Add support for syncing blocked numbers
// FREEBIE
2016-09-07 13:04:45 -07:00
lilia 141cdef2a4 Generalize toast view template
// FREEBIE
2016-09-07 13:04:45 -07:00
lilia b5191e78c3 More themeing
Restyle message input and welcome screen
Cleanup search, headers

// FREEBIE
2016-08-30 18:31:03 -07:00
lilia 6c05a71424 Tune up ios bubble style
// FREEBIE
2016-08-30 18:31:02 -07:00
lilia 8fbb0d05f5 Add settings ui for theme
// FREEBIE
2016-08-30 18:31:02 -07:00
lilia 7b9894d688 Refactor css to support theming
Move away from inline style attributes for setting contact colors.
Apply colors by name via css classes instead. Also lays groundwork
for syncing contact colors.

// FREEBIE
2016-08-30 18:31:02 -07:00
lilia 3aa72d2244 Address large font size edge cases
Fix some visual bugs occuring at large font size:
  * Contact names break onto the next line after their avatars in
    message detail screen
  * Settings menu font-size failed to scale
  * Handle Content overflow in modals.

// FREEBIE
2016-08-24 16:47:39 -07:00
lilia 645e05c2b9 Add support for new fingerprint format
This will be ready to roll whenever Android/iOS is.

// FREEBIE
2016-08-24 01:50:46 -07:00
lilia 178917da94 Disable voice notes
// FREEBIE
2016-08-23 16:18:01 -07:00
lilia 4f46a164ba Add voice notes
// FREEBIE
2016-08-23 16:16:31 -07:00
lilia 2c2f9c1ddc Fix dir=auto for convos with blank timestamps
Convos with no last_message_timestamp were being rendered/parsed as
having `data-timestamp="dir='auto'"`.

// FREEBIE
2016-07-14 17:26:16 -07:00
bitim a1eccc2c49 Better RTL languages support:
- Fixed text alignment in RTL messages.
- Added support for search box.
- Added support for conversation name.
- Added support for contact name.
- Added support for last message timestamp and last message preview.

//FREEBIE
2016-07-14 11:13:00 -07:00
lilia 61e7b685e6 Make welcome screen prettier
// FREEBIE
2016-07-14 11:09:08 -07:00
bitim 919f3f6496 Add RTL languages support for messages
// FREEBIE
2016-06-29 17:56:26 -07:00
lilia 9091233950 Open images in a lightbox
Adds file-write permission for saving to disk from lightbox.

Fixes #810

// FREEBIE
2016-06-20 11:55:23 -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 b6f785737c Restyle error icons, move them outside the bubble 2016-05-25 20:32:00 -07:00
lilia b1d370755a Rename AxolotlStore
// FREEBIE
2016-04-21 18:36:17 -07:00
lilia 826d4c4301 Add magnifying glass to search field // Fixes #737
// FREEBIE
2016-04-14 11:57:56 -07:00
lilia 0cd7f84a05 Refactor read state tracking
Adds support for handling early arriving read receipts.

// FREEBIE
2016-04-14 11:57:52 -07:00
lilia d1e9534542 Refactor delivery receipt tracking
Move code for matching receipts to messages (and vice versa) to its own
file.

// FREEBIE
2016-04-13 13:57:56 -07:00
lilia 1f4587795e Add link to github on debug log
// FREEBIE
2016-04-09 20:55:21 -07:00
lilia f3de290f7c Make debug log link focusable/selectable
Add button to open in a new tab. Stye as input group.

// FREEBIE
2016-04-09 20:53:39 -07:00
lilia 28c602ab85 Use button for file input / paperclip
// FREEBIE
2016-04-07 12:26:21 -07:00
lilia 21cb6e0945 Use aria-hidden on avatars
Prevent screen readers from reading the identicons. They will already be
reading the names.

// FREEBIE
2016-04-07 10:57:27 -07:00
lilia f0720776a2 Add alt tags to close buttons
// FREEBIE
2016-04-07 10:56:59 -07:00
lilia 8d800a4862 Make close buttons part of the tab order
// FREEBIE
2016-04-07 10:35:05 -07:00
lilia f9c194f641 Remove commented out button
// FREEBIE
2016-04-07 10:26:47 -07:00
lilia c6f51b190f Add alt tags to menu buttons for screen readers
// FREEBIE
2016-04-07 10:26:40 -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 c442a02cb6 Add build support for expiring old releases
Builds expire after 90 days.
2016-04-03 20:55:53 -07:00
lilia e5748b974f Harmonize x/close buttons
// FREEBIE
2016-04-01 15:15:02 -07:00
lilia 242c05834b Remove unused template
// FREEBIE
2016-04-01 14:58:24 -07:00
lilia 01ca6b7c3a Vertically center contact names
For contacts/conversations without any messages, center their names
vertically in the conversation list element.

// FREEBIE
2016-04-01 11:37:25 -07:00
lilia ab62900e48 Simplify menu markup, tweak styles
// FREEBIE
2016-03-24 13:20:50 -07:00
lilia 76652c2622 Update style and copy on key changes
// FREEBIE
2016-03-24 13:20:50 -07:00
lilia 512c5bf739 Incoming bubbles have sender's color background
// FREEBIE
2016-03-23 17:41:24 -07:00
lilia 1e3e730d88 Consolidate panel container styling
Special case the main panel because it is super speshul.

// FREEBIE
2016-03-23 15:05:38 -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 2e7c7ce0cc Move back button to the left
// FREEBIE
2016-03-22 11:01:04 -07:00
lilia d24eaa655a Tweak styles on key verification view
// FREEBIE
2016-03-21 18:42:05 -07:00
lilia d3b035121d Clean up bottom bar styles
// FREEBIE
2016-03-21 17:17:39 -07:00
lilia 234f937bc7 Conversation subscreens share a header
// FREEBIE
2016-03-21 15:37:53 -07:00
lilia 4358bdfac7 Use url xor color on avatar, never both
Combining them often leaves a crufty colored ring on the outer edge of
the avatar image.

// FREEBIE
2016-03-21 11:07:58 -07:00
lilia 8bb8ed8151 Change left pane header color
// FREEBIE
2016-03-20 21:01:45 -07:00
lilia 7310afd1b4 Replace message list loading spinner with bar
// FREEBIE
2016-03-18 17:59:54 -07:00
lilia 647c2761e0 Move restart button into global menu
// FREEBIE
2016-03-18 16:21:55 -07:00
lilia c16356084d Align header buttons and touch up styles
// FREEBIE
2016-03-18 15:54:40 -07:00
lilia 18a5ce8e54 Restyle conversation panel
// FREEBIE
2016-03-18 13:09:45 -07:00
lilia 043a3f9609 New layout
Move the global header inside the left pane only, expand conversation
panels to full bleed, restyle conversation list items and selected state.

// FREEBIE
2016-03-18 11:30:27 -07:00
lilia 1b72ef6170 Restore notifications heading
// FREEBIE
2016-03-11 11:49:21 -08:00