* [bug] Pull serverUrl directly from stateService for the account switcher Create a small extended Account model for handling the switchers server url, and pull environment urls from disk where they actually live * [refactor] Add a message handler for switching accounts * This allows for logic reuse between manually switching accounts and automatically switching accounts on login * This commit also adds a loading spinner to app root while syncing after a switch * [bug] Remove vertical scrollbar * An old styling fix to add extra height and padding seems to be now creating an unecassary scroll bar. It is likely that since making more use of flexbox for our containers that this issue has been resolved without the manually added extra hight & padding * [refactor] Turn down activity monitoring Saving last activity is a disk call, and we currently do this a lot more than is necassary. For example: * We track mousedown & click, which is redundant * We track every mouse movement regardless of if an action is taken. This seems inappropriate for use in locking behavior. * [bug] Address potential race condition when locking Sometimes when swapping between an unlocked account and a locked account a race condition occurs that swaps the user but doesn't redirect to the lock screen This commit just adds some awaits and restructures lock order of operations to be more in line with other message handlers * [refactor] Change click event to mousedown event for the account switcher This is simply a little snappier, and ensures we stay ahead of change detection and don't get stuck not properly interpreting the action * [chore] Update jslib * [chore] Linter fixes * [chore] Linter fixes * [chore] Update jslib * [chore] Update jslib |
||
---|---|---|
.github | ||
.husky | ||
.vscode | ||
jslib@172392ff3b | ||
resources | ||
scripts | ||
src | ||
stores | ||
.editorconfig | ||
.git-blame-ignore-revs | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.nvmrc | ||
.prettierignore | ||
.prettierrc.json | ||
CONTRIBUTING.md | ||
crowdin.yml | ||
LICENSE.txt | ||
package-lock.json | ||
package.json | ||
README.md | ||
SECURITY.md | ||
sign.js | ||
tsconfig.json | ||
tsconfig.renderer.json | ||
tslint.json | ||
webpack.main.js | ||
webpack.renderer.js |
Bitwarden Desktop Application
The Bitwarden desktop app is written using Electron and Angular. The application installs on Windows, macOS, and Linux distributions.
Build/Run
Requirements
- Node.js v16.13.1 (LTS) or greater
- NPM v8
- Windows users: To compile the native node modules used in the app you will need the Visual C++ toolset, available through the standard Visual Studio installer. You will also need to install the Microsoft Build Tools 2015 and Windows 10 SDK 17134 as additional dependencies in the Visual Studio installer.
Run the app
npm install
npm run electron
Debug Native Messaging
Native Messaging (communication with the browser extension) works by having the browser start a lightweight proxy application baked into our desktop binary. To setup an environment which allows
for easy debugging you will need to build the application for distribution, i.e. npm run dist:<platform>
, start the dist version and enable desktop integration. This will write some manifests
to disk, Consult the native manifests documentation for more details of the manifest
format, and the exact locations for the different platforms. Note that disabling the desktop integration will delete the manifests, and the files will need to be updated again.
The generated manifests are pre-configured with the production ID for the browser extensions. In order to use them with the development builds, the browser extension ID of the development build
needs to be added to the allowed_extensions
section of the manifest. These IDs are generated by the browser, and can be found in the extension settings within the browser.
It will then be possible to run the desktop application as usual using npm run electron
and communicate with the browser.
Contribute
Code contributions are welcome! Please commit any pull requests against the master
branch. Learn more about how to contribute by reading the CONTRIBUTING.md
file.
Security audits and feedback are welcome. Please open an issue or email us privately if the report is sensitive in nature. You can read our security policy in the SECURITY.md
file.
Prettier
We recently migrated to using Prettier as code formatter. All previous branches will need to updated to avoid large merge conflicts using the following steps:
- Check out your local Branch
- Run
git merge b4df834b16d4f5d4162a926a5a308bdb3ebc718b
- Resolve any merge conflicts, commit.
- Run
npm run prettier
- Commit
- Run
git merge -Xours 521feae535d83166e620c3c28dfc3e7b0314a00e
- Push
Git blame
We also recommend that you configure git to ignore the prettier revision using:
git config blame.ignoreRevsFile .git-blame-ignore-revs