The "contact" option in the attachments tray now brings you through an
optimized contact sharing flow, allowing you to select specific fields
to share. The contact is then presented as a special message type,
allowing you to interact with the card to add the contact to your system
contacts, invite them to signal, initiate a signal message, etc.
Previously, we were always rendering images as squares. Instead of doing
that, we now render them as close to true-to-size as possible (within
reasonable min/max width/height boundaries).
1. Switch from 300 to 500 colors.
2. Colorize incoming conversation bubbles.
3. Colorize recipeint preference activity toolbar.
4. Support inverted colors in avatars.
5. Make status bar icons tint according to secondary color.
// FREEBIE
1) No more blue/green for outgoing messages. Just lock or no lock.
2) Use 9-patches instead of shapes for better bubble performance.
3) Use tinting rather than different colored assets.
4) Change outgoing status indicators so that they don't change
width of the bubble as they update.
5) Switch to using ..., check, double-check for pending, sent,
delivered rather than using bubble tone to indicate pending.
// FREEBIE
If the contact doesn't have an image, render a color-coded
background and the first letter of the contact's name.
1) Don't display anything during recipient resolution.
2) Display a # icon in material gray for recipients with no name.
3) Display a material group icon in material gray for groups with
no avatar icon set.
Closes#3104
// FREEBIE
1) Migrate from GSON to Jackson everywhere.
2) Add support for storing identity key conflicts on message rows.
3) Add limited support for surfacing identity key conflicts in UI.
1) Broke out the UI elements of the major Activites into stylable
attributes.
2) Created a 'light' and 'dark' theme for the newly stylable attrs.
3) Touched up some of the UI spacing.
4) Implemented dynamic theme switching support.
1) We now delay MMS notifications until a payload is received,
or there's an error downloading the payload. This makes
group messages more consistent.
2) All "text" parts of an MMS are combined into a second text
record, which is stored in the MMS row directly rather than
as a distinct part. This allows for immediate text loading,
which means there's no chance a ConversationItem will resize.
To do this, we need to include MMS in the big DB migration
that's already staged for this application update. It's also
an "application-level" migration, because we need the MasterSecret
to do it.
3) On conversation display, all image-based parts now have their
thumbnails loaded asynchronously. This allows for smooth-scrolling.
The thumbnails are also scaled more accurately.