Update to electron 1.8.4 (#2186)
Migrate all attachments from IndexedDB to file system in the background (#2208, #2193, #2165, #2162, #2129)
Save attachments to disk when importing Chrome app export (#2212)
Fixed: Read receipts setting would not be synchronized along with re-link (#2218)
Fixed: Clicking conversation in left pane when already selected would remove focus on message composition field - thanks
@colefranz! (#2032)
Fixed: Searching for the phone number of an existing contact, then selecting 'start conversation' would erase contact details (#2191)
Fixed: Selecting Settings menu option multiple times would open multiple instances of settings view - thanks @navdeepsinghkhalsa (#2167)
Dev:
- Relax Node.js version requirements (#2203)
- Fix a few typos in documentation - thanks @Vinnl (#2171)
- Update issue template to mention that translation should be via Transifex (#2157)
This helps running a Signal Desktop instance from a backup (copy of profile
folder) when testing functionality such as database migrations, import/export,
etc.
Usage:
```
BACKUP=development-backup-2018-04-04 PROFILE=development ./scripts/start-backup
```
WARNING: This deletes the original profile and overwrites it with backup.
Due to a number of hacks, the style guide can be used to show Backbone
views. This will allow a smooth path from the old way of doing things to
the new.
npm run transpile
Works on files under js/react/
Outputs files right next to the .tsx file
This is part of our `grunt dev` task, as well as the default grunt task,
which does everything else necessary to get a raw git checkout ready to
run.
Users lose their read receipt setting after relinking their app.
See: https://github.com/signalapp/Signal-Android/issues/7535
- [x] Request configuration sync after relink, not just on first run.
- [x] Minor: Add `is` dependency as discussed.
- [x] Unit tests!! Started a pattern where functions return their status that
can be logged instead of logging themselves. Makes for great tests and
might also help us debug user logs as the status will always be logged
(with `reason` field) whether it was done or not. Otherwise, we have to
look for the presence or absence of a log line. Of course, we have to be
careful about log noise, but I thought this was a nice fit here.
**Manual Tests**
- Started app and set read receipts on iOS.
- Sent message from another device with read receipts enabled.
- Confirmed messages were marked read on both sides.
- Unlinked primary device.
- Relinked primary device.
- Sent messages between primary and other device.
- Confirmed read receipts are still shown.
- Confirmed logs show configuration sync.
Going through the git history the existing logic of "dont do this if
it's already selected" was just for audio or video QOL enhancements to
not stop playing when the same conversation is selected.
- [x] Implement batch migration of attachments without index, i.e. use default
primary key index on `Message::id`.
- [x] Run attachment in background without index.
- [x] Prepare module for whole database migrations in the future. Once we enable
that, we have to force (remaining) attachment migration upon startup.
- [x] Run migrations explicitly on startup and remove implicit migrations from
Backbone models using a placeholder that throws an error.
- [x] `Signal.Debug`: Add support for generating real-world data for
benchmarking based on contents in `fixtures` folder. Add additional files
to create a larger variety of test cases, e.g. JPEG, PNG, GIF, MP4, TXT,
etc. **Test command:**
```
Signal.Debug.createConversation({
ConversationController,
WhisperMessage: Whisper.Message,
numMessages: 100,
});
```
- [x] Minor: Improve error message for `storage.fetch` failures.
- [x] Minor: Use ISO-8601 timestamp for key rotation (helped me debug an issue).
- [x] Update tests to explicitly run migrations.