Commit Graph

2794 Commits (32be90c728e8e416d1c0a2ee717d6661a8669021)
 

Author SHA1 Message Date
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
8 years ago
lilia 9e39442ea8
Setup publishing to s3 8 years ago
lilia 449c3e2428
Don't auto-open devtools in prod 8 years ago
lilia e112217095
Add standard menus 8 years ago
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
8 years ago
lilia 49cdc98386
Fix lightbox 8 years ago
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
8 years ago
lilia 3b287185ef
Fix autoUpdater error in development 8 years ago
lilia acd19fd759
Fix inbox styles 8 years ago
lilia 86d703bc87
Fix debug log 8 years ago
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
8 years ago
lilia 88893079d2
Fix restart 8 years ago
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
8 years ago
lilia 45bf7330ac
Scope install styles to install element 8 years ago
lilia 285b5ce062
Get install flow working in main window
// FREEBIE
8 years ago
lilia beb058aed6
Add productName to package.json
This defines the display name of the packaged app. It can contain
spaces.

// FREEBIE
8 years ago
lilia b176bd756c
Ensure app is single-instance
Remove some comments.

// FREEBIE
8 years ago
lilia f4df38735c
Enable sandbox
// FREEBIE
8 years ago
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
8 years ago
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
8 years ago
lilia dcc6f599a2
Auto-update hourly 8 years ago
lilia 6686621b0b
Fix file dialog 8 years ago
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
8 years ago
lilia 859d49b3f4
Use relative paths
// FREEBIE
8 years ago
lilia 95e809636a
Quick fix for undefined references to chrome.* 8 years ago
lilia 83d827c127
Configure electron-builder
// FREEBIE
8 years ago
lilia 995ccda9e4
Add electron and electron-builder dev dependencies
// FREEBIE
8 years ago
lilia e6e8f02fb7
Populate required fields in package.json
// FREEBIE
8 years ago
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
8 years ago
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
8 years ago
Scott Nonnenberg c71b7d7f27
Update localized strings
FREEBIE
8 years ago
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
8 years ago
Lilia 2166e0924a Add transifex config to git (#1477)
So we can pull different translation resources from different branches.

// FREEBIE
8 years ago
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
8 years ago
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
8 years ago
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
8 years ago
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
8 years ago
Scott Nonnenberg e3bada1f4a
MessageView.updateColor: Call getAvatar on convo, not message
FREEBIE
8 years ago
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
8 years ago
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
8 years ago
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
8 years ago
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
8 years ago
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
8 years ago
lilia 8caecd50cd Update swedish translations
// FREEBIE
8 years ago
lilia 8dca9c9b8f Update translations
Fixes #1427

// FREEBIE
8 years ago
Scott Nonnenberg 2adc53a588
v0.43.2
Fix problems with updating contact information (#1419)

Performance/reliability: Fetch conversations from DB only once (#1420)

Export bug-fixes (still behind a flag)
  - Properly generate directory names for nameless groups (#1421)
  - Remove " as one of the allowed characters in filenames

FREEBIE
8 years ago
Scott Nonnenberg d8ce198f55 Fetch conversations once, clean up ConversationController API (#1420)
* Fetch conversations once, clean up ConversationController API

Race conditions around re-fetching have caused some problems recently,
so this removes the need to re-fetch conversations. They are fetched
once or saved once, and that is it. All interaction goes through the
ConversationController, which is the central source of truth.

We have two rules for Conversations:

1. If a conversation is in the ConversationController it doesn't need
   to be fetched, but its initial fetch/save might be in progress. You
   can wait for that fetch/save with conversation.initialPromise.
2. If a conversation is not already in the ConversationController, it's
   not yet in the database. It needs to be added to the
   ConversationController and saved to the database.

FREEBIE

* Remove Conversation.fetch() call in Message.handleDataMessage()

FREEBIE

* ConversationController.API cleanup: Fix two missing spots

FREEBIE
8 years ago
Lilia 51cd28bb4a Fix race handling contact sync with verified info (#1419)
When processing a contact sync with embedded identity key verification info, we
were running overlapping async fetch/save operations on the same conversation
model, causing a race that tends to clobber updates to the contact info.

In this change we extend the application-level contact info handler to block on
a subsequent call to the verification handler, which effectively serializes the
fetch/save calls, and relieves the need for the message receiver to trigger a
seperate event concerning the verification info on contact sync messages.

Fixes #1408

// FREEBIE
8 years ago
Scott Nonnenberg 07abe2639f Export: Properly generate directory names for nameless groups (#1421)
FREEBIE
8 years ago
Scott Nonnenberg 94b63c39fd
Export: Remove " as one of the allowed characters in filenames
Turns out that it's not allowed on windows.

FREEBIE
8 years ago