Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UX Improvements: Global Menu & Copy Changes #2078

Closed
wants to merge 20 commits into from
Closed

Conversation

gasi
Copy link
Contributor

@gasi gasi commented Feb 27, 2018

  • Removed ‘Restart Signal’ global menu item
  • Change Click to create contact… to Start conversation…
  • Move global menu (top-left kebab) into OS menu bar, i.e. Settings > Preferences…
  • Add tests for OS menu bar templates
  • Fix bug with Window menu on macOS when showing setup options
  • Use Title Case for all OS menu bar menu items for consistency

const windowState = require('./app/window_state');
const { createTemplate } = require('./app/menu');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the reasoning behind these order changes? It wasn't alphabetized before, but doesn't get us any closer.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apologies, old habit of mine. I use Sublime Text’s Sort Lines feature that does this automatically. For destructured imports this means they’ll show up last because of {. Let me know if you want me to revert 👀

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we're making changes, let's sort the right side; the modules we're pulling in.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don’t think that’s a good idea. Preferably one wants to scan the left-hand side using binary search (humans are good at that 😉) for some identifier. In addition, ESLint proposes the same and we can use it once we have import support, see: https://eslint.org/docs/rules/sort-imports

There is also https://github.com/kentor/eslint-plugin-sort-requires for require which seems to sort left-hand side as well. In practice, it won’t be a big change as we should preferably call our left-hand side the same as the module they come from, hence the preference for named imports.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Popping up a level, I like the high-level way the order rule from eslint-plugin-import works. Built-ins first, then third-party node modules, then your stuff, etc.

It's disheartening that destructuring would mess with our small-scale ordering. But I guess I understand what it's doing now.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for doing more research. Will merge for now, but I am open to automating this down the line.

"menuSetupWithImport": {
"message": "Set up with import",
"message": "Set Up with Import",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consistency is good, and I support this change. But it should be noted that on Windows, sentence case is preferred while on OSX capitalization like this is preferred.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for pointing this out. I checked some Windows apps and ones with a classic menu bar like ours (Notepad, Visual Studio, Visual Studio Code, Slack, Sublime Text) use Title Case whereas apps with new style UI (Edge, WordPad, etc.) use Sentence case, although sometimes inconsistently. I just opted for consistency here as the strings above stood out. Hope that’s cool 😄

@scottnonnenberg
Copy link
Contributor

Looks good except for the continued CI difficulty with Electron 1.8.


mainWindow.webContents.send('show-settings');
}

function openReleaseNotes() {
shell.openExternal(`https://github.com/signalapp/Signal-Desktop/releases/tag/v${app.getVersion()}`);
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since you are already working in this file and the community forum has moved to https://community.signalusers.org/ you could also change the link (https://whispersystems.discoursehosting.net/) in line 349. Unfortunately I cannot comment directly there.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, @rainerzufall. I created a separate PR for this change: #2083

@gasi
Copy link
Contributor Author

gasi commented Mar 2, 2018

Rebase; no changes.

@gasi gasi changed the base branch from ux-improvements-lint to development March 2, 2018 20:54
gasi added 18 commits March 2, 2018 15:57
This follows implementation of Android and recommendation from Alissa.
When user a enters a number that is not a contact, we prompt them to start a new
conversation.
Apparently, this is a remnant from the Chrome web application.
This will be replaced by a OS-level ‘Preferences’ menu.
This allows us to run this code in a non-Electron environment, e.g. Node.js
Mocha test suite.
Extracting `options.platform` makes it easier to test without having to
stub `process.platform`.
This reduces our reliance on custom UI until we have more design resources.
gasi added a commit that referenced this pull request Mar 2, 2018
- [x] Removed ‘Restart Signal’ global menu item
- [x] Change _Click to create contact…_ to _Start conversation…_
- [x] Move global menu (top-left kebab) into OS menu bar,
      i.e. **Settings** > **Preferences…**
- [x] Add tests for OS menu bar templates
- [x] Fix bug with **Window** menu on macOS when showing setup options
- [x] Use _Title Case_ for all OS menu bar menu items for consistency

commit dedf7c9
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 16:53:42 2018 -0500

    Use ‘Title Case’ to be consistent with OS menus

    References:
    - Apple:
        - https://developer.apple.com/macos/human-interface-guidelines/menus/menu-anatomy/#menu-and-menu-item-titles
        - https://developer.apple.com/library/content/documentation/FinalCutProX/Conceptual/FxPlugHIG/TextStyleGuidelines/TextStyleGuidelines.html#//apple_ref/doc/uid/TP40013782-CH6-SW1
    - https://titlecaseconverter.com/

commit 3286da2
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 16:36:50 2018 -0500

    Fix bug for macOS ‘Window’ menu with setup options

commit 236a23d
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 16:27:46 2018 -0500

    Test menus with included setup options

commit c5d5f5a
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 16:10:27 2018 -0500

    Move settings (‘Preferences’) into OS-level menu

    This reduces our reliance on custom UI until we have more design resources.

commit 027803f
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 16:02:56 2018 -0500

    Prepare tests for menu with/without included setup

commit 9e2f006
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 15:55:46 2018 -0500

    Destructure `includeSetup`

commit 6b2a1ec
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 15:55:14 2018 -0500

    :abc: `createTemplate` `options`

commit c2fecba
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 12:49:55 2018 -0500

    Test menu for Windows and Linux

commit 60281b1
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 12:40:39 2018 -0500

    Add `yarn run test-app` command

commit 1a04899
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 12:40:29 2018 -0500

    Add test for `SignalMenu.createTemplate` on macOS

commit 9638b86
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 12:34:46 2018 -0500

    Make `createTemplate` pure

    Extracting `options.platform` makes it easier to test without having to
    stub `process.platform`.

commit 9c26404
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 11:47:39 2018 -0500

    Extract `locale.load` `appLocale` & `logger` for testability

    This allows us to run this code in a non-Electron environment, e.g. Node.js
    Mocha test suite.

commit 710b224
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 11:46:13 2018 -0500

    :abc: npm scripts

commit 9ae2293
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 11:45:30 2018 -0500

    Use 2-space indendation for `app` module tests

commit 22c26ba
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 11:22:55 2018 -0500

    Prefer named exports

commit 9c95261
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 11:22:46 2018 -0500

    :abc: Organize `require`s

commit 2f144d2
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Tue Feb 27 11:13:50 2018 -0500

    Remove existing global hamburger menu

    This will be replaced by a OS-level ‘Preferences’ menu.

commit f5adb37
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Mon Feb 26 18:40:54 2018 -0500

    Remove ‘Restart Signal’ menu from settings

    Apparently, this is a remnant from the Chrome web application.

commit d7a206b
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Mon Feb 26 17:16:49 2018 -0500

    Clarify label for starting a new conversation

    When user a enters a number that is not a contact, we prompt them to start a new
    conversation.

commit 715a406
Author: Daniel Gasienica <daniel@gasienica.ch>
Date:   Mon Feb 26 16:46:26 2018 -0500

    Use ‘Enter name or number’ as prompt’

    This follows implementation of Android and recommendation from Alissa.
@gasi
Copy link
Contributor Author

gasi commented Mar 2, 2018

Merged as: 3df2202

@gasi gasi closed this Mar 2, 2018
@gasi gasi deleted the ux-improvements branch March 2, 2018 21:00
scottnonnenberg added a commit that referenced this pull request Mar 6, 2018
Upgrade to the latest version of Electron, 1.8.2 (#2066)

Replace custom notification sound with system sound (#2108)

Update menus (#2078 and #2099)
  - A few copy changes to make things clearer
  - Settings now available via the File (Windows/Linux) or Signal
    Desktop (macOS) OS menu
  - Eliminate the triple-dot menu in the top-center of the screen

Fix: Hitting enter after entering device name on install would not move
to next screen (#2085)

Dev:
  - Ensure consistent builds using `yarn --frozen-lockfile` (#2098)
  - Update code to match eslint-enforced formatting (#2077)
  - Upgrade to latest version of electron-builder and associated
    packages (#2066 and #2097)
scottnonnenberg-signal added a commit that referenced this pull request Mar 13, 2018
v1.6.0-beta.2

Upgrade to the latest version of Electron, 1.8.2 (#2066)

Replace custom notification sound with system sound (#2108)

Update menus (#2078 and #2099)
  - A few copy changes to make things clearer
  - Settings now available via the File (Windows/Linux) or Signal
    Desktop (macOS) OS menu
  - Eliminate the triple-dot menu in the top-center of the screen

Fix: Hitting enter after entering device name on install would not move
to next screen (#2085)

Dev:
  - Ensure consistent builds using `yarn --frozen-lockfile` (#2098)
  - Update code to match eslint-enforced formatting (#2077)
  - Upgrade to latest version of electron-builder and associated
    packages (#2066 and #2097)
scottnonnenberg-signal added a commit that referenced this pull request Mar 13, 2018
_Note: This release is equivalent to v1.6.0-beta.2
(https://github.com/signalapp/Signal-Desktop/releases/tag/v1.6.0-beta.2)_

Upgrade to the latest version of Electron, 1.8.2 (#2066)

Replace custom notification sound with system sound (#2108)

Update menus (#2078 and #2099)
  - A few copy changes to make things clearer
  - Settings now available via the File (Windows/Linux) or Signal Desktop
    (macOS) OS menu
  - Eliminate the triple-dot menu in the top-center of the screen

Fixed: Hitting enter after entering device name on install would not
move to next screen (#2085)

Dev:
  - Ensure consistent builds using yarn --frozen-lockfile (#2098)
  - Update code to match eslint-enforced formatting (#2077)
  - Upgrade to latest version of electron-builder and associated
    packages (#2066 and #2097)
@ghost
Copy link

ghost commented Mar 15, 2018

Because the Settings are now available via the File OS menu in Linux and you eliminated the triple-dot menu in the top-center of the screen, for those of us who had the OS menu hidden, we cannot reveal the OS menu anymore because that was in the Settings of the triple-dot menu. Or at least, it is not obvious how to reveal the OS menu anymore to get to the Settings option or do anything else, like submitting a debug log, etc. Is there a keyboard shortcut that is supposed to hide and reveal these menus? Shouldn't this be possible without a keyboard shortcut?

@scottnonnenberg-signal
Copy link
Contributor

scottnonnenberg-signal commented Mar 16, 2018

@ded5r On windows the alt key brings that menu bar back. Not sure about linux.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

4 participants