* Online/offline: Always stop timer, don't connect if closed
* Sockets: Send our own close event faster, shutdown only on close
Seems that we were too-aggressively disconnecting from all socket
events. Also, we should be able to send our own close event a lot
faster with no ill effects.
* Catch-up libtextsecure changes
Load profiles for a conversation without blocking convo load (#1570)
The About window is no longer blank (#1564)
Add 5s timeout for all requests but attachment up/down, avatar (#1584)
Dev:
- Move to node fetch API for web requests instead of XHR (#1552)
- Log when we've detected a new version (#1567)
- Reduce logging when the window moves (#1568)
- Add GPLv3 LICENSE file (#1309)
- Remove documentation references to BitHub (#1576)
- models/conversation: Refer to proper error variable (#1569)
- Deployment: No longer use CI windows assets (#1564)
- Fix copy pasta of timestamp_m to timestamp_h in locales (#1582)
* Use node-fetch instead of xhr
* Remove XMLHttpRequest.js
// FREEBIE
* Avoid calling json() on non json responses
Previously we would catch and swallow JSON parsing errors resulting from an
empty response, though empty responses are normal from a few endpoints, like
requesting sms or voice registration codes.
Since the JSON parsing call is now handled internally by node-fetch, we have to
keep closer track of our expected response type to avoid throwing an exception.
// FREEBIE
* Include about.html in production Electron build
* Remove windows from fetch-release task, fix permissions
We no longer use the pre-built assets from AppVeyor for our Windows
build.
* AppVeyor: Remove capture/upload of built assets
Improved OS menus (#1563)
- About box now available on all platforms
- The Help menu now has four new items: Go to release notes, Go to forums, Go to support, File a bug
- All menu item labels are now localizable
Add setting to hide menu bar on Windows/Linux - thanks to @connection-reset! (#1551)
Fix flickering offline/disconnected status on Linux (#1561)
Fix slowdowns when composing multiline message (#1560)
Fix intermittent incorrect conversation sort order (#1558)
Dev:
- Improve fixtures, restore `InboxView` rendering on the test page (#1562)
- Bugfix updates to a number of dependencies (#1560)
- .gitignore no longer excludes many files under `components` (#1560)
* Wait to manually disconnect after receiving 'offline' event
We've received Linux logs indicating that we can get offline/online
blips - only 30ms between the two events. The app was never realy
offline. So this change slows the whole disconnect process down.
* Handle offline startup: register for online event, don't connect
* 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
* Update to the latest version of autosize.js
* gitignore: Restrict 'dist' matches to the root dist folder
The global search for 'dist' caused problems when updateing bower
components.
* A couple minor version updates: ByteBuffer, filesize, intlTel
moment-with-localse, ProtoBuf
* 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.
Feature: Blue check marks for read messages if opted in (#1489)
Re-enable import by excluding 'debug' items from export (#1532)
Better handling of network disconnection/reconnection on Linux (#1546)
Load debug log dialog immediately, then populate log data (#1540)
Fix audio notifications on Linux (#1526)
Re-enable fullscreen on OSX (#1525)
Fix vertically-aligned onboarding progress text (#1547)
Fix broken file icon when attaching non-image (#1548)
Deployment:
- Standardize artifact names - include platform name (#1539)
- Update electron-updater and supply it with windows/publisherName
(#1535)
- Use cdn endpoint for auto update (#1538)
Dev:
- Override console.log in main process, handle non-strings (#1536)
- window.onerror: move to proper window.log.error call (#1528)
- Remove duplicate definition of getSyncRequest (#1530)
- Ensure locale is 'en' when NODE_ENV=test (#1527)
FREEBIE
* Ensure that our preload.js setImmediate call finds right function
FREEBIE
* Our own socket close event, better logging, unregistration
FREEBIE
* Return CLOSED for NetworkStatusView if we've fully disconnected
* background.js: Remove messageReceiver = null, log in connect()
A null messageReciever makes the NetworkStatusView think we're online.
FREEBIE
* Refactor delivery receipt event handler
* Rename the delivery receipt event
For less ambiguity with read receipts.
* Rename synced read event
For less ambiguity with read receipts from other Signal users.
* Add support for incoming receipt messages
Handle ReceiptMessages, which may include encrypted delivery receipts or read
receipts from recipients of our sent messages.
// FREEBIE
* Rename ReadReceipts to ReadSyncs
* Render read messages with blue double checks
* Send read receipts to senders of incoming messages
// FREEBIE
* Move ReadSyncs to their own file
// FREEBIE
* Fixup old comments on read receipts (now read syncs)
And some variable renaming for extra clarity.
// FREEBIE
* Add global setting for read receipts
Don't send read receipt messages unless the setting is enabled.
Don't process read receipts if the setting is disabled.
// FREEBIE
* Sync read receipt setting from mobile
Toggling this setting on your mobile device should sync it to Desktop. When
linking, use the setting in the provisioning message.
// FREEBIE
* Send receipt messages silently
Avoid generating phantom messages on ios
// FREEBIE
* Save recipients on the outgoing message models
For accurate tracking and display of sent/delivered/read state, even if group
membership changes later.
// FREEBIE
* Fix conversation type in profile key update handling
// FREEBIE
* Set recipients on synced sent messages
* Render saved recipients in message detail if available
For older messages, where we did not save the intended set of recipients at the
time of sending, fall back to the current group membership.
// FREEBIE
* Record who has been successfully sent to
// FREEBIE
* Record who a message has been delivered to
* Invert the not-clickable class
* Fix readReceipt setting sync when linking
* Render per recipient sent/delivered/read status
In the message detail view for outgoing messages, render each recipient's
individual sent/delivered/read status with respect to this message, as long as
there are no errors associated with the recipient (ie, safety number changes,
user not registered, etc...) since the error icon is displayed in that case.
*Messages sent before this change may not have per-recipient status lists
and will simply show no status icon.
// FREEBIE
* Add configuration sync request
Send these requests in a one-off fashion when:
1. We have just setup from a chrome app import
2. We have just upgraded to read-receipt support
// FREEBIE
* Expose sendRequestConfigurationSyncMessage
// FREEBIE
* Fix handling of incoming delivery receipts - union with array
FREEBIE
An immediate response to the user request to see the log, and then we
show the real data as soon as we've loaded it from disk.
Changes:
- the IPC exchange to get the log data is now async
- the API to fetch the log on the client side now returns a Promise
- in the main process, the only disk access done synchronoously is
reading the contents of the log directory. The JSON parsing of the
resultant log data is now split up into three chunks.
- We only send three keys from each log item to the renderer process:
msg, time, level. Previously we sent the entire log entry with extra
keys: hostname, pid, name.
FREEBIE
This ensures that the signing certificate of any binary pulled down as
part of auto-update on Windows is in the CA chain (not self-signed) and
has the right publisherName. electron-updater also rejects any unsigned
binary when asked to check the publisherName.
FREEBIE
This will make electron-updater use the cdn-fronted updates.signal.org instead
of the s3 endpoint. You can verify it worked by looking at the url generated in
dist/latest-mac.json and dist/win-unpacked/resources/app-update.yml
// FREEBIE
This should allow us to get an insight into auto-update behavior and
other low-level behaviors happening in the Electron process which would
be useful for debugging.
FREEBIE
This partially reverts commit 1b444a5e23.
Because support for system-level notification sound settings is inconsistent
across Win/Linux/OSX, do the simplest thing that will produce consistent
behavior on all platforms: suppress the system sound by always passing the
`silent: true` option, and play our own sound clip (copied from ios).
// FREEBIE
Beacause so many of our tests have hardcoded english strings. We could do
better, but for now anyone running tests locally must simply do so in english,
even if they usually use Signal in another language.
// FREEBIE
* Re-enable fullscreen on OSX
We were inadvertantly disabling the fullscreen button due to a quick of the
BrowserWindow api. Add some guards to make sure we no longer save or use a
previously-stored `fullscreen: false` in our window configs.
// FREEBIE
* Use logger.info instead of console.log
Note the use of stringify to make config object safe for bunyan
https://github.com/trentm/node-bunyan#log-method-api
// FREEBIE
Make long-lived socket connections more reliable (#1511)
Show offline state faster on loss of network access (#1512)
Notifications:
- Only show notifications when a large backlog download is complete
(#1507)
- Ensure final message before 'empty' is ready for notification
(#1522)
Ensure we always replace $name$ variable in strings (#1520)
Update strings for fa, no, pt_BR, pt_PT, ro, zh_CN, zh_TW (#1517)
Update electron to v1.6.14 to get security fix (#1519)
Eliminate warning on Windows installation with code-signing (#1513)
Dev:
- Move logging to disk via bunyan - should make message processing
faster! (#1506)
- Only retry messages on startup, not every reconnect (#1510)
- Log call messages instead of throwing error (#1504)
- Redact group ids in logging
(4c48d12dc3)
- Remove manifest.json from project
(3a3f2495e0)
FREEBIE
Without this change, there's a race condition for the notification we
show when we get the 'empty' event after a large backlog download. Four
messages may have come in, but the last might not be notified. So the
count shown would be three. And then, when the final message's notify()
call finishes, another notification would be shown.
FREEBIE
This prevents the parade of notifications if a machine wakes up from
sleep. Basically covers situations that the loading screen doesn't
already.
When disabled, notifications will be cached until they are subsequently
re-enabled, at which time all the pending notifications will be summarized.
From the background page, notifications are disabled during connection attempts
until an empty event. This means we can always safely call conversation.notify
to queue a notification for the next batch, dropping some options from message
and conversation model methods.
We've also moved the calls to check window focus and draw attention to the
window, which were previously included in the conversation model, but are now
performed by the Notification system, because the time that the notification is
displayed might be some time after the message is added by the conversation, so
decisions about focus and attention should be made in that moment and not
before.
// FREEBIE