Commit graph

2801 commits

Author SHA1 Message Date
lilia 7e1bee1082
Configure app/build using node config
Add environment-specific configs under `./config` and integrate with the
build system. Also changes package.json `files` from blacklist to
whitelist.

// FREEBIE
2017-09-14 16:53:36 -07:00
lilia 34042415e9
Database logging cancels persistent debug log storage
Database logging is helpful as a debugging tool, but it creates an
infinite loop with the debug log, which wants to write to the database,
which wants to write to the log, which wants to write to the database,
which wants to write to the log, which wants to write to the database,
which wants to write to the log, which wants to write to the database...

// FREEBIE
2017-09-14 16:53:36 -07:00
lilia 550b926a15
Log on preload 2017-09-14 16:53:36 -07:00
lilia 6a49036da9
Bump to 1.0.1 2017-09-14 16:53:36 -07:00
lilia a381d9c975
Fix focus detection 2017-09-14 16:53:36 -07:00
lilia 81a40bb548
Remove spaces from windows installer name
Spaces in the file name get escaped to %20. Then the percent sign gets
escaped again on the way to s3 upload, such that the object name on s3
ends up as %2520. To fix this, we can simply omit spaces from our
artifact names.

// FREEBIE
2017-09-14 16:53:36 -07:00
lilia 5650748961
Fix pre-populated device name 2017-09-14 16:53:36 -07:00
lilia 32be90c728
Fix missing icons on linux
Move these to where the build expects them to be.

In theory electron-builder should generate these from a build/icon.icns
but that doesn't seem to be working.

// FREEBIE
2017-09-14 16:53:36 -07:00
lilia 9e39442ea8
Setup publishing to s3 2017-09-14 16:53:36 -07:00
lilia 449c3e2428
Don't auto-open devtools in prod 2017-09-14 16:53:36 -07:00
lilia e112217095
Add standard menus 2017-09-14 16:53:36 -07:00
lilia 25b0fbd949
Fix exceptions on window close
The stopListening function was being passed the close event as an
argument, which caused it to throw.

// FREEBIE
2017-09-14 16:53:36 -07:00
lilia 49cdc98386
Fix lightbox 2017-09-14 16:53:35 -07:00
lilia a99890d254
Generate ico and icns from png
`npm run icon-gen` builds icon files from png files in the images
directory, outputting to build/icon.{ico,icns} (the expected location
for electron-builder).

// FREEBIE
2017-09-14 16:53:35 -07:00
lilia 3b287185ef
Fix autoUpdater error in development 2017-09-14 16:53:35 -07:00
lilia acd19fd759
Fix inbox styles 2017-09-14 16:53:35 -07:00
lilia 86d703bc87
Fix debug log 2017-09-14 16:53:35 -07:00
lilia 63657db3be
Quick fix for i18n
Just use the english locale for now. Load locale data from the
filesystem in the main process and pass it to the renderer preload
script via ipc. Note that we need the locale data to be available by the
time view scripts are loaded.

// FREEBIE
2017-09-14 16:53:35 -07:00
lilia 88893079d2
Fix restart 2017-09-14 16:53:35 -07:00
lilia 2bbd0d58c6
Separate development and production environments
Set NODE_ENV at run time or build time to switch the app between dev and
production modes.

At build time, the current NODE_ENV will be included in the packaged
app's package.json file. At runtime we read NODE_ENV from package.json,
but also allow the local environment variable to override. A query
string parsed by a preload script exposes the value to the renderer,
which then determines whether we use the staging or production server.
Additionally, different environments have different user data
directories.

// FREEBIE
2017-09-14 16:53:35 -07:00
lilia 45bf7330ac
Scope install styles to install element 2017-09-14 16:53:35 -07:00
lilia 285b5ce062
Get install flow working in main window
// FREEBIE
2017-09-14 16:53:35 -07:00
lilia beb058aed6
Add productName to package.json
This defines the display name of the packaged app. It can contain
spaces.

// FREEBIE
2017-09-14 16:53:35 -07:00
lilia b176bd756c
Ensure app is single-instance
Remove some comments.

// FREEBIE
2017-09-14 16:53:35 -07:00
lilia f4df38735c
Enable sandbox
// FREEBIE
2017-09-14 16:53:35 -07:00
lilia 584d29f4a4
Exclude some files from inclusion in packaged app
This adds and extends the default `files` config from electron-builder
such that it adds all and only the necessary files to our app.asar.

// FREEBIE
2017-09-14 16:53:34 -07:00
lilia 28e5c04633
Set AUMID to appId
It is also important to set the Application User Model ID (AUMID) to the
appId of the application, in order for notifications on Windows 8/8.1 to
function and for Window 10 notifications to display the app icon within
the notifications by default. The AUIMD should be set within the Main
process and before any BrowserWindows have been opened, it is normally
the first piece of code executed.

https://github.com/electron-userland/electron-builder/wiki/NSIS#guid-vs-application-name

// FREEBIE
2017-09-14 16:53:34 -07:00
lilia dcc6f599a2
Auto-update hourly 2017-09-14 16:53:34 -07:00
lilia 6686621b0b
Fix file dialog 2017-09-14 16:53:34 -07:00
lilia 5a6e65d11b
Merge index.html into background.html
Nothing stops us from rendering the inbox in the background page, since
it is no longer a background page at all. TODO: intercept window close
events to hide this window instead of closing it unless the app is quit
explicitly.

// FREEBIE
2017-09-14 16:53:34 -07:00
lilia 859d49b3f4
Use relative paths
// FREEBIE
2017-09-14 16:53:34 -07:00
lilia 95e809636a
Quick fix for undefined references to chrome.* 2017-09-14 16:53:34 -07:00
lilia 83d827c127
Configure electron-builder
// FREEBIE
2017-09-14 16:53:34 -07:00
lilia 995ccda9e4
Add electron and electron-builder dev dependencies
// FREEBIE
2017-09-14 16:53:34 -07:00
lilia e6e8f02fb7
Populate required fields in package.json
// FREEBIE
2017-09-14 16:53:34 -07:00
lilia 2cf7ea0a94
Hello Electron
In package.json, define our main entry point for electron, and add a
node script to start it up.

Add main.js from Electron/electron-quick-start with two modifications.
1. Load background.html instead of index.html
2. Disable node integration in the renderer

At this point we can load the background page in a window
with `npm start`, though it currently breaks on missing chrome app APIs.

// FREEBIE
2017-09-14 16:53:28 -07:00
Scott Nonnenberg 6b7edc2df3
v0.43.4
Force full contact/group import on next launch if not first run (#1476)

Performance: Log entry max to 2k, less logging in hot codepaths (#1459)

Don't show notification for verified state change with yourself (#1454)

Export: Improve usability - timing expectations, install button (#1474)

Add Transifex config to git to unblock Electron localization (#1477)

Large localization update

FREEBIE
2017-09-14 16:41:17 -07:00
Scott Nonnenberg c71b7d7f27
Update localized strings
FREEBIE
2017-09-14 16:34:13 -07:00
Scott Nonnenberg ff6dc786f9 Force full contact/group import on next launch if not first run (#1476)
* Force full contact/group import on next launch (if not first run)

FREEBIE

* Don't update contact sync key in storage on every reconnect

FREEBIE
2017-09-14 12:08:10 -07:00
Lilia 2166e0924a Add transifex config to git (#1477)
So we can pull different translation resources from different branches.

// FREEBIE
2017-09-14 09:45:34 -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 1e694fe8d7 Log entry max to 2k, remove logging in hot codepaths (#1459)
On a recent trip through a CPU profile taken while Signal Desktop
churned through a large backlog of messages, it was clear that
console.log was a major source of time spent, primarily the sort
operation required after every new entry is added to the Backbone
collection. So, three different techniques to combat this:

1) Reduce the maximum number of entries in the collection from 5k to 2k
2) No more logging of add/update/remove queue in MessageReceiver
3) No more log entries in Message.handleDataMessage main codepath

FREEBIE
2017-09-12 09:34:49 -07:00
Scott Nonnenberg 69af8d2651 Don't show notification for verified state change with yourself (#1454)
* Don't show notifications for verified state change with yourself

It's confusing to users, and it really doesn't mean anything anyway.

FREEBIE

* Add log statement that we've suppressed a verified notification

FREEBIE
2017-09-08 11:14:01 -07:00
Scott Nonnenberg 3a733ea10a
v0.43.3
Fix bug causing contact and group names/colors to be lost (#1437)

Fix broken Swedish translation preventing new installs
(8caecd50cd)

Fix clear message bubbles when adding contact with previous messages
in iOS (#1438)

Fix message bubble widths on horizontal resizes (#1447)

Remove horizontal scrolling in convo/message lists (#1448)

Update translations for hr, pt_BR and sv
(8dca9c9b8f)

Export (still behind a flag):
  - Limit attachment filename length for Windows path limits (#1439)
  - Reintroduce conversation last-contact date in directory name (#1439)

Add tests for export utility functions (#1439)

FREEBIE
2017-09-07 10:41:09 -07:00
Scott Nonnenberg e3bada1f4a
MessageView.updateColor: Call getAvatar on convo, not message
FREEBIE
2017-09-07 10:38:00 -07:00
Lilia 71036e31ab Fix horizontal scrolling in convo/message lists (#1448)
This removes some errant horizontal scrollability from the conversation list and
the message list.

// FREEBIE
2017-09-07 09:57:47 -07:00
Lilia 5d8e8459b3 Fix bouncy bubble widths (#1447)
Max-width on a message bubble should be about 30em for the good readability.
However, when the window isn't wide enough, bubbles must be further limited.

The transition should happen around the point that these two rules intersect,
but it was kicking in a little late, which caused the bubbles to jump from wider
to shorter as you widened the window past a certain point. This change adjusts
the threshold for smoother and more consistent bubble resizing.

The variable name $big-avatar-min-width is an artifact of a past design and was
previously used in multiple places, but it no longer makes sense in this context
so it has been discarded.

// FREEBIE
2017-09-07 09:57:33 -07:00
Scott Nonnenberg cc6dcf67b7 Export: Limit attachment filename length, + convo date, + tests (#1439)
* Export: limit attachment names to 30 chars, tests for helper fns

Also, reintroduce last contact date in conversation dir name

FREEBIE

* MessageView tests: Fix failures during blanket coverage run

FREEBIE
2017-09-06 18:20:42 -07:00
Scott Nonnenberg 4009a0119e MessageView: Handle change of color to null, call getColor() (#1438)
When we relied on the actual value of the color property to be supplied
to the updateColor change event listener, sometimes it would be null.
Then the conversation bubbles would have no color at all, making the
text hard to read.

FREEBIE
2017-09-06 18:19:11 -07:00
Scott Nonnenberg 4cba16cb61 Fetch all conversations on startup of app, not on inbox load (#1437)
* Fetch all conversations on startup of app, not on inbox load

A recent change to fetch conversations less didn't take into account all
that can happen in the app without the inbox loaded. That only happens
when the window is shown, and messages can come in with the app in the
background. In that case, the conversation wouldn't have been loaded
from the database, but would be saved to the database anyway, losing
data.

This change fetches all conversations as soon as the the data store is
ready for a fetch. It also introduces failsafe throws to ensure that
synchronous ConversationController accesses don't happen until the
initial fetch is complete. A new getUnsafe() method was required to
account for some of the model setup that happens during that initial
conversation fetch.

Fixes #1428

FREEBIE

* Fix tests: ConversationController.load() required before get()

FREEBIE
2017-09-06 18:18:46 -07:00