Buttercup Browser Extension
Buttercup credentials manager extension for the browser.
About
This browser extension allows users to interface with password archives authored by the Buttercup password manager (though it does not require the application to be installed).
The extension can remotely connect to archives via Buttercup's common communication protocols (WebDAV, Dropbox etc.). Vaults are loaded from their remote source and their contents used to assist users with logging in to their recorded services. The extension also periodically updates vaults from their remote source so that the contents are always up to date.
This extension uses Locust to perform login form detection. Issues relating to the detection and operation of login forms should be opened there.
The extension also comes with a full-featured vault editing interface, so you can even use it as a standalone password manager.
Forms & Logins
Buttercup for Browsers auto-detects some login forms and login inputs, allowing the user to auto-fill them at their discretion. This extension uses Locust under the hood to detect forms and inputs (any issues with detecting forms and inputs should be opened there).
Supported browsers
Chrome, Firefox, Edge (version 79+) and Brave are supported.
Some browsers, such as Brave for example, will be able to install Buttercup via the Google Chrome web store.
Other browsers will be supported in order of request/popularity. Issues created for unsupported browsers, or for browsers not on the roadmap, may be closed without warning.
Opera is not supported due to their incredibly slow and unreliable release process. We will not be adding support for Opera.
Integrated platforms
The extension allows for connections to several services where your vaults can be stored:
- My Buttercup
- Dropbox
- Google Drive
- WebDAV (any service supporting WebDAV)
- Local filesystem
Supported platforms
The browsers listed above, running on Windows, Mac or Linux on a desktop platform. This extension is not supported on any mobile or tablet devices.
Usage
The browser extension can be controlled from the popup menu, which is launched by pressing the Buttercup button in the browser menu. This menu displays a list of archives as well as settings and other items.
When viewing pages that contain login forms, Buttercup can assist logging in when you interact with the login buttons (displayed beside detected login inputs).
Buttercup can also remember new logins, which are detected as they occur.
You can block Buttercup from detecting forms and inputs by applying the attribute data-bcupignore=true
:
<input type="email" data-bcupignore="true" />
Development
Development of features and bugfixes is supported in the following environment:
- NodeJS version 12 (latest minor version)
- Linux / Mac
- Tested in at least Chrome / Firefox
To set up your development environment:
- Clone this repo
- Ensure API keys are available (Google Drive)
- Execute
npm install
inside the project directory
Chrome
Run the following to develop the extension:
- Execute
npm run dev
to build and watch the project (to build production code, executenpm run build
) - Go to chrome://extensions and enable "Developer mode"
- Select the new button "Load unpacked", then select the
./dist
directory built on step 1
Firefox
Run the following to develop the extension:
- Execute
npm run dev:firefox
to build and watch the project (to build production code, executenpm run release
)
Releasing
To build release-ready zip archives, run the command npm run release
after having set up the development environment. The archives will be written to release/(browser)
where (browser)
is the browser type. Archives named extension.zip
contain the built extension sourcecode and source.zip
contains the raw source.
Adding to Chrome
You can load an unpacked extension in Chrome by navigating to chrome://extensions/. Simply locate the project's directory and use dist/ as the extension directory.
Adding to Firefox
You can load an unpacked extension in Firefox by navigating to about:debugging. Click "Load Temporary Add-on" and locate the project's directory, using dist/ as the extension directory.