Giter Club home page Giter Club logo

lockwise-addon's Introduction

Archived Repo CircleCI codecov

Firefox Lockwise Browser Extension

The browser add-on repository for Firefox Lockwise prior to being integrated into Firefox 70+ (as about:logins). We may use this repository in the future to bring Lockwise to other browsers via an extension but for now it is unmaintained. Issues with the functionality built-into Firefox should be filed using the links at the top of the Password Manager Wiki. You can use your GitHub account for that.

This is just one component of the Firefox Lockwise product. Please see the Firefox Lockwise website for more context.

For detailed documentation and installation instructions, please see the docs directory.

Contributing

Development Chat

Since this extension's functionality was built into Firefox, it's recommended that you contribute to the Firefox Password Manager code instead. Otherwise, see the guidelines for contributing to this archived project.

This project is governed by a Code Of Conduct.

To disclose potential a security vulnerability please see our security documentation.

This module is licensed under the Mozilla Public License, version 2.0.

Note that some test fixtures use source code from third-party services, and are not subject to this license.

lockwise-addon's People

Contributors

benschumacher avatar dependabot[bot] avatar devinreams avatar enguerran avatar flodolo avatar irrationalagent avatar jaredhirsch avatar linuxwolf avatar lmorchard avatar mnoorenberghe avatar mozilla-github-standards avatar pike avatar relequestual avatar wesleybranton avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lockwise-addon's Issues

Implement Sync/Profile user menu

Child of #38

Acceptance criteria

  • Clicking on display name/email or avatar should open menu
  • Clicking outside of menu should dismiss it
  • ESC key should dismiss it

Visual Design

InVision
Signed In: https://mozilla.invisionapp.com/share/ENOL84959AK#/338158451_Logins_-_Home_-_Menu_-Light-
Not Signed In: https://mozilla.invisionapp.com/share/ENOL84959AK#/339623981_Logins_-_Home_-_Menu_-_Not_Signed_In_-Light-
Hover: https://mozilla.invisionapp.com/share/ENOL84959AK#/344286028_Logins_-_Home_-_Menu_-_Hover_-Light-

Zeplin
Signed In: https://zpl.io/aRWJ48g
Not Signed In: https://zpl.io/a8pvROX
Hover: https://zpl.io/VQKLLYA

Implementation Notes

Sort entries on management interface

When I have several Lockbox entries and I need to access an online account, I need to be able to quickly find an entry by website address, entry name, or username.

Acceptance criteria

  • Should sort alphabetically (default) or by the last used and last changed
  • Should not sort on any additional meta data which includes # of times used and date created
  • Should only be enabled on the management interface and not the doorhanger to prevent user confusion

Visual Design

Zeplin
https://zpl.io/bWgLA9M

Update Management Interface Entry List View

When I come to the management interface, I want to see all my saved logins and know how best to engage with the tools.

Acceptance criteria

  • Should display entries in a new tab with the full editor view to better support management activities
  • Should show up in recently closed tabs
  • Website URLs should be clickable to open in a new tab

Future considerations for easier navigation to this interface, but are not in scope

  • Should be able to be accessed manually such as typing an address like about:logins (known: this can result in multiple views open at the same time) (not in extension)
  • Management interface URL should be clickable to open in new tab or window (not in extension)
  • Should be able to be bookmarked (not in extension)
  • Management tab should be navigable from somewhere else (e.g., clicking a link) and back (not extension)

Visual design

InVision
https://mozilla.invisionapp.com/share/6WNKK56RZCU#/318338543_Saved_Logins_-_Home

Zeplin
https://zpl.io/boK9ggk

Related to #33
Related to #34
Required by #35
Required by #36

Implement Baseline Integration Tests

Update the integration and accessibility tests to properly function for the "nsILogins" addon experience.

The original tests assume the functionality that requires a separate Firefox Accounts login and passwords database (from that built into Firefox).

Assume starting with a clean slate:

  • add a login
  • delete a login
  • modify a login
  • view the list on the management view
  • view the list on the doorhanger

Parent of #54
Parent of #55
Parent of #56

Disable login prompts in Management Interface

Firefox may prompt the user to "save this login" while editing a login in the Lockbox management interface, which is confusing to the user and can present data storage issues (e.g., storing a loging not really intended for the hostname).

Instead, the prompts should be disabled while the management interface is the active tab.

Acceptance Critiera

  • User is not prompted to save a login they have added/editd in the management intertface

Notes

  • This may require manual testing

Breach notifications on saved logins

Once I’ve been informed of a breach in the market or via Monitor, I want know what other accounts may be compromised.

Acceptance criteria

  • List of locally saved browser logins should have an indication when one of the email addresses (based on username record) has been discovered in a breach (HaveIBeenPwnd records)
  • Details on a compromised entry should provide information about the breach
  • Should have a way to see all compromised accounts grouped together

This is likely an epic that will require tasks and further breakdown.

Visual Design

Zeplin
Entry Detail w/ Warning: https://zpl.io/a8pGM6w (links to Monitor page)
Monitor: https://zpl.io/2G9WZ44

Promote Sync on mobile Lockbox apps

Child of #38

When I want to get my passwords across my many devices, I want to clearly know how to do that

Acceptance criteria

  • Should indicate in the password management interface that the user can download companion mobile apps
  • Should not be possible (yet?) to dismiss banner
  • Should open the call-to-action in a new tab/window
  • "Learn More" link should be the only clickable area
  • Should always display regardless of the Sync state of the user

Implementation Details

  • Should be prepared to be contextual

Visual Design

Zeplin
https://zpl.io/boK9ggk
(Current approach is to link to lockbox.firefox.com page for both iOS and Android, letting the functionality built on that page handle text/email of app, as well as providing additional information to the user regarding the apps)

Error handling: Web Address must contain "https://" or "http://"

The Web Address must contain a scheme (e.g., "https://") and a host (domain + port), and must not include a path.

If the URI is not well-formed, an error is displayed suggesting the user include "https://".

If the URI is well-formed but includes a path, the path can be stripped.

Implementation Details

  • Start using web URL class for validation.
  • Extra testing to be sure URL class is sufficient.

Visual Design

InVision
Helper: https://mozilla.invisionapp.com/share/ENOL84959AK#/339614514_Logins_-_New_Entry_-_Address_Focused_-Light-
Error: https://mozilla.invisionapp.com/share/ENOL84959AK#/339614519_Logins_-_New_Entry_-_Error_-_Address_-Light-

Zeplin
Helper: https://zpl.io/andLDWA
Error: https://zpl.io/aNKzXWk

Edit Entry Details in Management Interface

I want to be able to easily change my entry details (e.g., username and/or password).

Acceptance Criteria

  • Ability to change username
  • Ability to change password
  • Can see the password value as it's edited
  • Asked to discard changes if any field has changed but not yet saved
    • when clicking "Cancel"
    • when clicking another entry
  • Asked to confirm delete

Visual Design

InVision
https://mozilla.invisionapp.com/share/ENOL84959AK#/338187075_Logins_-_Entry_Detail_-_Edit_-Light-
Long passwords: https://mozilla.invisionapp.com/share/ENOL84959AK#/340867863_Logins_-_Entry_Detail_-_Edit_-_Long_Password_-Light-

Zeplin
https://zpl.io/VkwEO1M
Long passwords: https://zpl.io/adrvOB7

Consistant product branding between mobile apps & extension

This is a placeholder issue as we need to go through and define all the changes to be made across the entire product suite. Once we explore what all those changes need to be, and open associated issues in the various repos, then we can close out this issue.

This may or may not be related to the rebranding efforts happening (ie even if the product line stays Lockbox for the time being, there are some discrepancies that need to be addressed)

Add telemetry events for relevant actions in the extension

As the product owner, I want to know how users engage with the app to help inform decisions for future effort, while making sure users have control over whether or not their usage data is submitted.

Acceptance criteria

  • All events should send Telemetry event data defined by the Mozilla product, data science, and legal teams
  • The user should be able to disable usage data collection (Telemetry) via a setting

Error in build command

ERROR in Cannot read property 'readdir' of undefined is the error I'm seeing after running
npm install and npm run build.

Looks like this error is coming from here. Haven't figured out which directory is undefined though.

Entrypoint list/popup = list/popup.js
[./background/browser-action.js] 804 bytes {background} [built]
[./background/index.js] 493 bytes {background} [built]
[./background/message-ports.js] 2.33 KiB {background} [built]
[./background/telemetry.js] 3.11 KiB {background} [built]
[./l10n.js] 2.94 KiB {list/manage} {list/popup} [built]
[./list/actions.js] 6.6 KiB {list/manage} {list/popup} [built]
[./list/manage/index.js] 1.13 KiB {list/manage} [built]
[./list/manage/reducers.js] 1.59 KiB {list/manage} [built]
[./list/manage/telemetry.js] 2.05 KiB {list/manage} [built]
[./list/message-ports.js] 878 bytes {list/manage} {list/popup} [built]
[./list/popup/containers/current-selection.js] 1.14 KiB {list/popup} [built]
[./list/popup/index.js] 1.51 KiB {list/popup} [built]
[./list/popup/reducers.js] 385 bytes {list/popup} [built]
[./list/popup/telemetry.js] 835 bytes {list/popup} [built]
[./telemetry.js] 361 bytes {list/manage} {list/popup} [built]
    + 192 hidden modules

ERROR in Cannot read property 'readdir' of undefined
Child html-webpack-plugin for "list/manage.html":
     1 asset
    Entrypoint undefined = list/manage.html
    [../node_modules/html-webpack-plugin/lib/loader.js!./template.ejs] 1010 bytes {0} [built]
        + 3 hidden modules
Child html-webpack-plugin for "list/popup.html":
     1 asset
    Entrypoint undefined = list/popup.html
    [../node_modules/html-webpack-plugin/lib/loader.js!./template.ejs] 1010 bytes {0} [built]
        + 3 hidden modules
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! [email protected] build: `webpack`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the [email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/meandave/.npm/_logs/2019-01-07T19_35_10_535Z-debug.log

Instruct on How to Add a Login to Management Entry List View

When I don't have any logins saved in Firefox, I want to be informed and given a path to add some.

Acceptance criteria

  • Should inform the user that they do not have any entries saved.
  • Should display instructions for how to add entries to the list.

Visual Design

InVision
Full View
https://mozilla.invisionapp.com/share/ENOL84959AK#/339614512_Logins_-_Home_-_No_Logins_-Light-
Doorhanger
https://mozilla.invisionapp.com/share/ENOL84959AK#/343746149_Doorhanger_-_Empty_State_-Light-

Zeplin
Full View: https://zpl.io/a759P0v
Doorhanger: https://zpl.io/bJ9dX3n

Link in designs would direct to: https://lockbox.firefox.com/faq.html#how-do-i-get-my-saved-logins-into-firefox-lockbox

Implement Logins WebExtension API (Browser.logins API)

A Logins API is necessary to function post Firefox 64 for the Lockbox add-on to access browser saved logins.

Requirements

  • Retrieve all login items
  • Retrieve a specific item by ID
  • Create a new login item
  • Update an existing login item (by ID)
  • Delete an existing login item by ID
  • Notification when a login is changed (added, updated, removed)

Risks

  • Usability concerns
    • Prevent the extension’s web content (e.g., “management UX”) from triggering “save this login?” prompts (i.e., URL from Add extension’s URL to the list of disallowed hosts (for prompting to save logins)
  • Security concerns
    • No permission needed to store extension’s “own” logins (by extension ID?)
    • Privileged addons + “logins” permissions for access to all logins (PII and highly sensitive data!)
    • Including Favicons might be a privacy leak or concern?

Toolbar icon

When I want to access my passwords, I need a quick way from anywhere I am to get to that interface.

Acceptance criteria

  • Should have an icon that persists in the toolbar so I can always access my saved logins
  • Should not have a locked/unlocked state (previous extension) and the icon needs to be persistent no matter if the user is signed in or not
    • this might be introduced again at a later time, but we're intentionally removing for now

Visual Design

InVision
https://mozilla.invisionapp.com/share/ENOL84959AK#/331897167_Lockbox_-_Doorhanger_-_New_Tab

Zeplin
https://zpl.io/boK9ggk

Lockbox.svg.zip

Metrics / data review

Placeholder for discussion with data & legal teams about any changed telemetry probes or telemetry storage timelines for the new addon

Entry favicons

When I want to take inventory of all the accounts I have saved, I want an easy way to scan the list to find the desired account. Favicons can provide easier readability.

Acceptance criteria

  • Should display web property favicon in the list view if one is available
  • Should not expose the user's data to unnecessary risk (must pass thorough security review)

UX team to complete additional acceptance criteria

Visual Design

InVision

Zeplin
Full View: https://zpl.io/agP43dR
Doorhanger: https://zpl.io/2pnBLP8

"Reveal Password" functionality

When I want to access an account on a different device, or copy/paste doesn’t work for me, I want to see the password so I can manually enter it to get into my account.

Acceptance criteria

  • Should be able to view password from detail view

Visual Design

InVision

Zeplin
Password Hidden (default): https://zpl.io/boK9ggk
Password Shown: https://zpl.io/bzARAzX
Password - Long (read version): https://zpl.io/aMKJOzK
Password - Long (edit mode): https://zpl.io/adrvOB7 (field would be scrollable)

Filter out chrome:// logins in Logins API events

When onAdded, onUpdated events fire, the chrome://FirefoxAccounts login isn't properly filtered out as it is when browser.experiments.logins.getAll is called.

I've got a fix for this, working on tests for the event firing code.

View Details of an Entry

When I select an entry -- in either the management interface or the doorhanger -- I want to see its details and understand what actions I can take.

Acceptance Criteria

  • Should be able to view the website address, username, and password for a saved credential
  • Should be able to view meta data from the from management screen: created, last modified, last used
  • Should easily know how to
    • launch the website from the URL saved
    • copy a username or password
    • reveal a password
  • From the doorhanger, should know how to get to the full management interface

Visual Design

InVision
Full View: https://mozilla.invisionapp.com/share/ENOL84959AK#/338158445_Logins_-_Home_-Light-
Full View - Long passwords: https://mozilla.invisionapp.com/share/ENOL84959AK#/340867861_Logins_-_Entry_Detail_-_Long_Password_-Light-
Doorhanger: https://mozilla.invisionapp.com/share/ENOL84959AK#/338166659_Doorhanger_-_Entry_Detail_-Light-

Zeplin
Full View: https://zpl.io/boK9ggk
Full View - Long passwords: https://zpl.io/aMKJOzK
Doorhanger: https://zpl.io/2pnBL78

Inform user of Sync/FxA errors

Child of #38

If the user is logged in to Sync, there are two edge cases we might bump into:

  1. their email is unverified
  2. their password was changed on another device, so the locally-cached password is stale, and they need to sign in again to sync

In both cases, the existing desktop code redirects the user to the sync preferences page (about:preferences#sync) to fix their situation.

Acceptance criteria

  • Should redirect to the same endpoint
  • Should alert the user when the email is unverified
  • Should alert the user when the Account password changed
  • Should define own entrypoint in telemetry

Open questions:

  • Product: Do we want to just redirect to that same endpoint? Assuming yes, more questions:
  • Eng: We should be able to open the correct link via either gSync.openPrefs or gSync.openSignInAgainPage() (usage example) from an embedded API experiment. Need to make sure gSync is available in an API experiment js file (it should be).
  • UX: What kind of UX do we want to offer in Lockbox for those cases? Some kind of info screen and a button to redirect to the preferences page? Show an alert badge over the icon?
  • Telemetry question: The existing desktop hamburger menu item appends a query string when sending users to the sync preferences page: "about:preferences?entrypoint=menupanel#sync". Do we need to register a new entrypoint? (markh's thinking was that this query string is part of fxa server telemetry, ingested via amplitude, so, maybe it's dynamic and "entrypoint=lockbox" doesn't need to be explicitly registered anywhere)

Visual Design

InVision
Full View: https://mozilla.invisionapp.com/share/ENOL84959AK#/343774936_Logins_-_Sync_Issue_-Light-
Full View - User Menu: https://mozilla.invisionapp.com/share/ENOL84959AK#/343989952_Logins_-_Sync_Issue_-_Menu_-Light-
Doorhanger: https://mozilla.invisionapp.com/share/ENOL84959AK#/343777425_Doorhanger_-_Sync_Issue_-Light-

Zeplin
Full View: https://zpl.io/2ZjOwLJ
Full View - User Menu: https://zpl.io/adrod9e
Doorhanger: https://zpl.io/VOKELQl

*Link would direct to sync preferences

Requires #92

Implement Sync WebExtension API (Browser.sync API)

A Sync API to function post Firefox 64 for the Lockbox add-on to access state information related to Firefox Sync.

Requirements

  • Determine if browser-wide sync is available (i.e., signed in to FxA)
  • Determine if syncing of is enabled (i.e., relevant pref is true).
  • Provide sync profile information (i.e., FxA profile), if available
  • Notification when profile information/state changes (in-browser changes)

Risks

  • security concerns
    • Privileged addons + “sync” permission for profile information (contains PII)
    • Sync state (inactive / disabled / enabled) privileged?
  • implementation concerns
    • at least some portions of this are already defined in chrome.identity; marked as "unsupported" within Firefox as of 65

Use Telemetry WebExtension API (privileged)

As the product owner, I want to know how users engage with the extension to help inform decisions for future effort, while making sure users have control over whether or not their usage data is submitted.

Acceptance criteria

  • All events should send Telemetry event data defined by the Mozilla product, data science, and legal teams
  • The user should be able to disable usage data collection (Telemetry) via a setting
  • Should use the new Telemetry API as it's necessary to function post Firefox 64

Integration test startup errors

When running the integration tests locally, I'm getting failures with this error:

JavascriptError: Error: resource://gre/modules/Services.jsm - Couldn't find target object for import.

Looks like the driver setup is tripping on this spot in the script loader. Maybe there's some flag we need to set for it to allow the test to load the script.

Related to #22.

Investigate CI pipeline integrations with autograph service

Determine what it would take to pass through the autograph service and integrate with our build process.

Potentially involves switching from TravisCI to CircleCI.

Acceptance Criteria

  • Approach for automatically publishing a Mozilla-signed addon is documented
  • Follow-up issues to track making the necessary changes are created

Disable browser capture in management interface

When working in the management interface, updating an existing credential or adding a new one, the browser should not try to save passwords the user is manually managing. We want to eliminate that confusion.

Update doorhanger list view

When I want to take inventory of the accounts I have saved for a specific URL, I want an easy way to navigate the list to make decisions around next actions (view details, copy, manage).

Acceptance criteria

  • Should align to photon design standards
  • Should feel native to the Firefox browser

Visual Design

Zeplin
Default (search focused): https://zpl.io/2EPeOpy
Filtered: https://zpl.io/25G8Jln
Entry Hover: https://zpl.io/andg3Rk
Info Button Hover: https://zpl.io/bJ9JDAJ
Bottom Button ("Open Lockbox") Hover: https://zpl.io/V4QNvg4

Derive entry titles from saved login URL

When viewing the entry list, I want to quickly scan the entry list by title (e.g., Facebook instead of https://www.facebook.com or even www.facebook.com), so I can quickly access my username and password for managing that record.

Acceptance criteria

  • Should be able to view the list of entries by the origin
  • Default alphabetical ordering on the origin should make sense (eg facebook comes before twitter)
  • Should not not include the protocol (http://, https://, www.)
  • Should not see anything after the suffix (.com/{*})
  • Should support future goals of editing the entry name

Requires #21

Browser crash after clicking lockbox icon on new tab page

Using Firefox 66, the extension crashes.

Steps to reproduce:

  1. open about:debugging
  2. click "Load Temporary Add-on" button and select built addon from /addons directory in repo
  3. Open new tab and quickly click lockbox icon in toolbar

At this point the browser will crash and lockbox will be uninstalled on restart.

OS: Windows 10
git branch: master
Firefox Version: Nightly 66.0a1 (2019-01-10) (64-bit)

Additional Info:
I had created one entry in the management page and opened and closed the dropdown 1 time before this started happening.

Stable URL for management UI(about:logins)

When I want to access my saved logins, I want to be able to do that similarly to how I already navigate the web, by typing in a url or clicking a saved bookmark.

Acceptance criteria

  • Management tab should be navigable from somewhere else (e.g., clicking a link) and back
  • If linked, Management interface URL should open in new tab or window
  • Should show up in recently closed tabs
  • Should be able to be bookmarked

Display FxA profile (Management UI)

Child of #38

As a user, I want to know that I am signed in with Firefox Account (FxA).

Acceptance Criteria

  • Should keep the "Logins" tab, but not display the "Monitor" tab for now
  • Should render FxA information if we have it, otherwise we need to show a 'guest' state if you're not signed in (need follow up stories for how we promote people to sign in)

Engineering Notes

  • This issue includes updating/modifying the "header" to match the current tabs-like visuals.
  • The avatar image does NOT include the circle border (URL links to a "square" avatar)
  • The avatarURL property is always set (using the default if the user has not uploaded one)
  • Use displayName if set, otherwise email

Visual Design

Zeplin
https://zpl.io/boK9ggk (current, may change depending on experiment)

EPIC: Promote turning on Sync (signing up for FxA)

When using the Lockbox extension, I want to know how to set it up so that I can easily access on mobile.

Acceptance criteria

  • Should include a call to action to sign up for FxA if not already (can we detect #23)
  • Should include a call to action to turn on Sync for logins if not already (can we detect #23)

Visual Design

InVision
User Menu (not signed in)
https://mozilla.invisionapp.com/share/ENOL84959AK#/339623981_Logins_-_Home_-_Menu_-_Not_Signed_In_-Light-

Connect Device Modal - Needs to sign in
https://mozilla.invisionapp.com/share/ENOL84959AK#/342439032_Logins_-_Connect_Device_-_Not_Signed_In_-Light-

Connect Device Modal - Needs to check "logins" in sync pref
https://mozilla.invisionapp.com/share/ENOL84959AK#/342439031_Logins_-_Connect_Device_-_Logins_Not_Checked_-Light-

Connect Device Modal - Steps complete (transitions to instruction screen)
https://mozilla.invisionapp.com/share/ENOL84959AK#/343764712_Logins_-_Connect_Device_-_Steps_Complete_-Light-

Connect Device Modal - Instructions (what a user would see if they were already signed in and selected "Connect a Device" from the user menu)
https://mozilla.invisionapp.com/share/ENOL84959AK#/343764713_Logins_-_Connect_Device_-_Instructions_-Light-

Zeplin
User Menu (not signed in): https://zpl.io/a8pvROX
Connect Device Modal - Needs to sign in: https://zpl.io/aByAXxp
Connect Device Modal - Needs to check "logins" in sync pref: https://zpl.io/a8pqXgw
Connect Device Modal - Steps complete (transitions to instruction screen): https://zpl.io/boKE38E
Connect Device Modal - Instructions: https://zpl.io/VqK43Ym

  • depends on #23

External navigation to management interface

Acceptance criteria

  • Should be able to be accessed manually such as typing an address like about:logins (known: this can result in multiple views open at the same time)
  • Management interface URL should be clickable to open in new tab or window
  • Should be able to be bookmarked
  • Management tab should be navigable from somewhere else (e.g., clicking a link) and back

Search entries in both management interface and doorhanger

When I have several Lockbox entries and I need to access an online account, I need to be able to quickly find an entry by website address, entry name, or username. Both in the doorhanger and the management interface.

Acceptance criteria

  • Should filter results based on characters entered in the search field
  • Should display matching results by: title, URL, username
  • Should provide additional information to the user if no matching entries are found

Visual Design

Full View
Default (focused): https://zpl.io/boK9ggk
Searching: https://zpl.io/bldPRR5
Not Focused: https://zpl.io/am94zze
No Matching Results*: https://zpl.io/bzAOPkE

Doorhanger
Default(focused): https://zpl.io/2EPeOpy
Searching: https://zpl.io/25G8Jln
Not Focused: https://zpl.io/VQK46qW
No Matching Results*: https://zpl.io/agP3rj9

*Link for no matching results directs here: https://lockbox.firefox.com/faq.html#how-do-i-get-my-saved-logins-into-firefox-lockbox

Unable to run codecov command

Was trying to take a look at the current code coverage, but ran into some errors trying to run npm run codecov.

Looks like it just isn't generating any reports. Tried with both 2.7 and 3.5.2 aliased to python

Here is my output:

meandave@LAPTOP-NA0Q0G86:/mnt/c/Users/Dave Justice/Code/lockbox-addon$ npm run codecov

> [email protected] codecov /mnt/c/Users/Dave Justice/Code/lockbox-addon
> codecov

  _____          _
 / ____|        | |
| |     ___   __| | ___  ___ _____   __
| |    / _ \ / _` |/ _ \/ __/ _ \ \ / /
| |___| (_) | (_| |  __/ (_| (_) \ V /
 \_____\___/ \__,_|\___|\___\___/ \_/
                                v3.1.0
==> Detecting CI Provider
    No CI Detected. Using git/mercurial
==> Configuration:
    Endpoint: https://codecov.io
{ commit: '361f902277107c765707e2b9ab1ed873892f1091',
  branch: 'specify-node-version',
  package: 'node-v3.1.0' }
==> Building file structure
==> Generating gcov reports (skip via --disable=gcov)
    $ find /mnt/c/Users/Dave Justice/Code/lockbox-addon -type f -name '*.gcno'  -exec gcov  {} +
find: ‘/mnt/c/Users/Dave’: No such file or directory
find: ‘Justice/Code/lockbox-addon’: No such file or directory
    Failed to run gcov command.
==> Scanning for reports
find: ‘/mnt/c/Users/Dave’: No such file or directory
find: ‘Justice/Code/lockbox-addon’: No such file or directory
child_process.js:662
    throw err;
    ^

Error: Command failed: find /mnt/c/Users/Dave Justice/Code/lockbox-addon -type f \( -name '*coverage.*' -or -name 'nosetests.xml' -or -name 'jacoco*.xml' -or -name 'clover.xml' -or -name 'report.xml' -or -name 'cobertura.xml' -or -name 'luacov.report.out' -or -name 'lcov.info' -or -name '*.lcov' -or -name 'gcov.info' -or -name '*.gcov' -or -name '*.lst' \) -not -name '*.sh' -not -name '*.data' -not -name '*.py' -not -name '*.class' -not -name '*.xcconfig' -not -name 'Coverage.profdata' -not -name 'phpunit-code-coverage.xml' -not -name 'coverage.serialized' -not -name '*.pyc' -not -name '*.cfg' -not -name '*.egg' -not -name '*.whl' -not -name '*.html' -not -name '*.js' -not -name '*.cpp' -not -name 'coverage.jade' -not -name 'include.lst' -not -name 'inputFiles.lst' -not -name 'createdFiles.lst' -not -name 'coverage.html' -not -name 'scoverage.measurements.*' -not -name 'test_*_coverage.txt' -not -path '*/vendor/*' -not -path '*/htmlcov/*' -not -path '*/home/cainus/*' -not -path '*/virtualenv/*' -not -path '*/js/generated/coverage/*' -not -path '*/.virtualenv/*' -not -path '*/virtualenvs/*' -not -path '*/.virtualenvs/*' -not -path '*/.env/*' -not -path '*/.envs/*' -not -path '*/env/*' -not -path '*/envs/*' -not -path '*/.venv/*' -not -path '*/.venvs/*' -not -path '*/venv/*' -not -path '*/venvs/*' -not -path '*/.git/*' -not -path '*/.hg/*' -not -path '*/.tox/*' -not -path '*/__pycache__/*' -not -path '*/.egg-info*' -not -path '*/$bower_components/*' -not -path '*/node_modules/*' -not -path '*/conftest_*.c.gcov'
find: ‘/mnt/c/Users/Dave’: No such file or directory
find: ‘Justice/Code/lockbox-addon’: No such file or directory

    at checkExecSyncError (child_process.js:622:11)
    at execSync (child_process.js:659:13)
    at Object.upload (/mnt/c/Users/Dave Justice/Code/lockbox-addon/node_modules/codecov/lib/codecov.js:471:16)
    at Object.<anonymous> (/mnt/c/Users/Dave Justice/Code/lockbox-addon/node_modules/codecov/bin/codecov:27:9)
    at Module._compile (internal/modules/cjs/loader.js:721:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
    at Function.Module._load (internal/modules/cjs/loader.js:552:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:774:12)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] codecov: `codecov`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] codecov script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/meandave/.npm/_logs/2019-01-08T15_09_10_853Z-debug.log

Use shared Redux store code across background, panel, and full-tab UI

TL;DR: The basic setup could work something like this:

  • Event listeners on the Login API dispatch actions to the background Redux store.
  • UI views request initial local Redux state from background script on init.
  • Middleware installed in the background store relays actions to message ports on open UI views.
  • Relayed actions are dispatched in local UI stores to maintain sync.

More background:

The addon is composed of a background script, a panel UI, and a full-tab management UI. Currently, each of these pieces has its own data management code - the background has a datastore.js, and the two UI views have variant Redux stores.

A single Redux store module could be shared between all parts of the add-on. There, we could define one common set of actions and a data store modeled after the Logins API (ala #21). Redux actions map well to messages, which also reduces complexity between background and UI views.

Override "Saved Logins Form" entrypoints

If I have the Lockbox webextension installed, and I navigate to "saved logins" (currently in about:preferences#logins AND context menu) I want engage the Lockbox management interface and not the browser.*

*If someone goes out of their way to download the extension, we assume they want to use their chosen management interface over the default the browser provides.

Risks

  • Blocked by in-tree design/work (FE prefs) needs bugzilla number

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.