docs: update readme, contributing guide

This commit is contained in:
Aetherinox 2024-04-22 07:21:10 -07:00
parent aadb0d98bb
commit 77b1ef88f0
No known key found for this signature in database
GPG Key ID: CB5C4C30CD0D4028
2 changed files with 562 additions and 63 deletions

View File

@ -1,51 +1,328 @@
# Contributing to KeeWeb
Thanks for taking the time to contribute! :gift:
Thank you for your interest in contributing to KeeWeb! :gift:
There are different ways to help the project, you will find a summary here.
Below are a list of ways that you can help contribute to this project, as well as policies and guides that explain how to get started.
## Code of conduct
Please review everything on this page before you submit your contribution.
<br />
- [Contributing to KeeWeb](#contributing-to-keeweb)
- [Code of Conduct](#code-of-conduct)
- [Issues, Bugs, Ideas](#issues-bugs-ideas)
- [Vulnerabilities](#vulnerabilities)
- [Development](#development)
- [Before Submitting Pull Requests](#before-submitting-pull-requests)
- [Conventional Commit Specification](#conventional-commit-specification)
- [Types](#types)
- [Example 1:](#example-1)
- [Example 2:](#example-2)
- [Referencing Issues](#referencing-issues)
- [Commenting](#commenting)
- [Variable \& Method Casing](#variable--method-casing)
- [ESLint \& Prettier](#eslint--prettier)
- [Spaces Instead Of Tabs](#spaces-instead-of-tabs)
- [Documentation / Wiki](#documentation--wiki)
- [Donations](#donations)
- [Translations](#translations)
- [Public Relations](#public-relations)
<br />
---
<br />
## Code of Conduct
This project and everyone participating in it is governed by the [KeeWeb Code of Conduct](https://github.com/keeweb/keeweb/blob/master/.github/CODE_OF_CONDUCT.md#readme).
By participating, you are expected to uphold this code. Please report unacceptable behavior to antelle.net@gmail.com.
## Issues
<br />
First, let's check if it's [already there](https://github.com/keeweb/keeweb/issues).
Perhaps, someone has already reported it?
<div align="center">
[Click here](https://github.com/keeweb/keeweb/issues/new/choose) to create a new issue.
When creating issues, please answer some questions asked on that page.
They will help to understand, reproduce, and fix your issue.
**[`^ back to top ^`](#contributing-to-keeweb)**
</div>
<br />
---
<br />
## Issues, Bugs, Ideas
Stuff happens, and sometimes as best as we try, there may be issues with KeeWeb that we are unaware of. That is the great thing about open-source; anyone can use the program and contribute to making it better.
<br />
If you have found a bug, have an issue with KeeWeb, or maybe even a cool idea; you can let us know by [submitting it](https://github.com/keeweb/keeweb/issues). However, before you submit your new issue, bug report, or feature request; head over to the [Issues Section](https://github.com/keeweb/keeweb/issues) and ensure nobody else has already submitted it.
<br />
Once you are sure that your issue is not already being dealt with; you may submit it by clicking [here](https://github.com/keeweb/keeweb/issues/new/choose). You'll be asked to specify exactly what your new submission targets, such as:
- Bug report
- Feature Suggestion
<br />
When submitting your new report, ensure you fill out any of the questions asked of you. If you do not provide enough information, we cannot help. Be as detailed as possible, and provide any logs or screenshots you may have to help us better understand what you mean. Failure to fill out the submission properly may result in it being closed without a response.
<br />
If you are submitting a bug report:
- Explain the issue in detail
- Describe how you expect for a feature to work, and what you're seeing instead of what you expected.
- Provide screenshots, logs, or anything else that can visually help track down the issue.
<br />
If you have a generic question which isn't a bug or feature; you may want to submit it as a [Discussion](https://github.com/keeweb/keeweb/discussions) so that others in the community can respond.
<br />
<div align="center">
[![Submit Issue](https://img.shields.io/badge/submit%20new%20issue-de1f5c?style=for-the-badge&logo=github&logoColor=FFFFFF&link=mailto%3Aantelle.net%40gmail.com)](https://github.com/keeweb/keeweb/issues) [![Create Discussion](https://img.shields.io/badge/create%20discussion-1e5c92?style=for-the-badge&logo=github&logoColor=FFFFFF&link=mailto%3Aantelle.net%40gmail.com)](https://github.com/keeweb/keeweb/discussions)
</div>
<br />
<div align="center">
**[`^ back to top ^`](#contributing-to-keeweb)**
</div>
<br />
---
<br />
## Vulnerabilities
We would appreciate [responsible disclosure](https://en.wikipedia.org/wiki/Responsible_disclosure).
If you would like to report a vulnerability, the preferred way to do so is [contacting the developer directly](mailto:antelle.net@gmail.com).
If you believe that you have found a vulnerability, we would appreciate [responsible disclosure](https://en.wikipedia.org/wiki/Responsible_disclosure) from you. Since vulnerabilities can be sensitive, we ask that you email all reports to the following address:
## Questions, great ideas, etc...
<br />
You can [create an issue](https://github.com/keeweb/keeweb/issues/new/choose) to discuss any topic.
Indeed, questions on that page are not applicable in this case.
<div align="center">
[![View](https://img.shields.io/badge/antelle.net%40gmail.com-de1f5c?style=for-the-badge&logo=gmail&logoColor=FFFFFF&link=mailto%3Aantelle.net%40gmail.com)](mailto:antelle.net@gmail.com)
</div>
<br />
<div align="center">
**[`^ back to top ^`](#contributing-to-keeweb)**
</div>
<br />
---
<br />
## Development
If you are looking to contribute to KeeWeb by actually submitting your own code; please review this section completely. There is important information and policies provided below that you must follow for your pull request to get accepted.
We don't accept (and in foreseeable future, we won't accept) anyone as a project collaborator directly.
Instead, the code should be contributed via pull requests. To get started with development, take a look at these pages:
The source is here for everyone to collectively share and colaborate on. If you think you have a possible solution to a problem; don't be afraid to get your hands dirty.
Unless you are fixing a known bug, we strongly recommend discussing it with the team by opening a [GitHub Discussion](https://github.com/keeweb/keeweb/discussions) you start in order to ensure your work does not conflict with future plans.
All contributions are made via **Pull Requests**. To make a pull request, you will need a GitHub account; if you are unclear on this process, see GitHub's documentation on forking and pull requests.
<br />
### Before Submitting Pull Requests
- Follow the repository's code formatting conventions (see below);
- Include tests that prove that the change works as intended and does not add regressions;
- Document the changes in the code and/or the project's documentation;
- Your PR must pass the CI pipeline;
- When submitting your Pull Request, use one of the following branches:
- For bug fixes: `main` branch
- For features & functionality: `development` branch
- Include a proper git commit message following the [Conventional Commit Specification](https://www.conventionalcommits.org/en/v1.0.0/#specification).
<br />
If all of these items are checked, the pull request is ready to be reviewed and your pull request's label will be changed to "Ready for Review". At this point, a human will need to step in and manually verify your submission.
Once your submission has been tested and verified; it will be merged.
<br />
Before submitting your pull request, please review the following resources:
- [Architecture](https://github.com/keeweb/keeweb/wiki/Architecture)
- [Engineering](https://github.com/keeweb/keeweb/wiki/Engineering)
- [Unsupported Features](https://github.com/keeweb/keeweb/wiki/Unsupported%20Features)
- [Pull Request Guidelines](https://github.com/keeweb/keeweb/blob/master/.github/PULL_REQUEST_TEMPLATE.md#readme)
## Pull requests
<br />
Please follow [this guide](https://github.com/keeweb/keeweb/blob/master/.github/PULL_REQUEST_TEMPLATE.md#readme).
### Conventional Commit Specification
## Docs (Wiki pages)
When commiting your changes, we require you to follow the Conventional Commit Specification, described below.
**The Conventional Commits** is a specification for the format and content of a commit message. The concept behind Conventional Commits is to provide a rich commit history that can be read and understood by both humans and automated tools. Conventional Commits have the following format:
<br />
```
<type>[(optional <scope>)]: <description>
[optional <body>]
[optional <footer(s)>]
```
#### Types
| Type | Description |
| --- | --- |
| `feat` | Introduces a new feature |
| `fix` | Bug fix for the end-user |
| `deps` | Specifically targets adding new or updating existing dependencies |
| `docs` | Change to the website or Markdown documents |
| `build` | Alters the build process. E.g: creating a new build task, updating the release script, etc. |
| `test` | Adds or refactors tests, no production code change. Usually changes the suite of automated tests for the app. |
| `perf` | Improves performance of algorithms or general execution time of the app, but does not fundamentally change an existing feature. |
| `style` | Updates or reformats the style of the source code, but does not otherwise change the way the app is implemented. Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) |
| `refactor` | Change to production code that leads to no behavior difference, E.g. splitting files, renaming internal variables, improving code style, etc. |
| `change` | Changes to an existing feature. |
| `chore` | Includes a technical or preventative maintenance task that is necessary for managing the app or the repo, such as updating grunt tasks, but is not tied to any specific feature. Usually done for maintanence purposes. |
| `ci` | Changes related to Continuous Integration (usually `yml` and other configuration files). |
| `misc` | Anything else that doesn't fit into another commit type. Usually doesn't change production code; yet is not ci, test or chore. |
| `revert` | Revert a previous commit |
| `remove` | Removes a feature from the app. Typically features are deprecated first for a period of time before being removed. Removing a feature from the app may be considered a breaking change that will require a major version number increment. |
| `deprecate` | Deprecates existing functionality, but does not remove it from the app. |
<br />
##### Example 1:
```
feat(core): allow overriding of webpack config
^───^────^ ^────────────────────────────────^
│ │ │
│ │ └───⫸ (DESC): Summary in present tense. Use lower case not title case!
│ │
│ └───────────⫸ (SCOPE): The package(s) that this change affects
└───────────────⫸ (TYPE): See list above
```
<br />
##### Example 2:
```
<type>(<scope>): <short summary>
│ │ │
│ │ └─⫸ Summary in present tense. Not capitalized. No period at the end.
│ │
│ └─⫸ Commit Scope: animations|bazel|benchpress|common|compiler|compiler-cli|core|
│ elements|forms|http|language-service|localize|platform-browser|
│ platform-browser-dynamic|platform-server|router|service-worker|
│ upgrade|zone.js|packaging|changelog|docs-infra|migrations|ngcc|ve|
│ devtools....
└─⫸ Commit Type: build|ci|doc|docs|feat|fix|perf|refactor|test
website|chore|style|type|revert|deprecate
```
<br />
### Referencing Issues
If you are pushing a commit which addresses a submitted issue, reference your issue at the end of the commit message. You may also optionally add the major issue to the end of your commit body.
References should be on their own line, following the word `Ref` or `Refs`
```
Title: fix(onedrive): could not properly sync password vault [#2002]
Description: The description of your commit
Ref: #2002, #3004, #3007
```
<br />
### Commenting
Comment your code. If someone else comes along, they should be able to do a quick glance and have an idea of what is going on. Plus it helps novice readers to better understand the process.
<br />
### Variable & Method Casing
When writing your code, ensure you utilize `camelCase` when naming variables and methods.
<br />
### ESLint & Prettier
This app is developed with the following packages installed:
- [eslint](https://www.npmjs.com/package/eslint)
- [eslint-plugin-prettier](https://www.npmjs.com/package/eslint-plugin-prettier)
- [eslint-plugin-babel](https://www.npmjs.com/package/eslint-plugin-babel)
- [eslint-plugin-n](https://www.npmjs.com/package/eslint-plugin-n)
<br />
Within the root folder of the repo, there are several configuration files which you should be using within the project. These files dictate how prettier and eslint will behave and what is acceptable / not acceptable.
- [.eslintrc](https://github.com/keeweb/keeweb/blob/master/.eslintrc) - ESLint < v9 config
- [eslint.config.mjs](https://github.com/keeweb/keeweb/blob/master/eslint.config.mjs) - ESLint >= v9 config
- [.prettierrc](https://github.com/Aetherinox/kwdev/blob/main/.prettierrc) - prettier rules
<br />
When submitting your pull request, these linting and style rules will be verified with all of your files. If you did not follow these rules; the linter tests on your pull request will fail; and you'll be expected to correct these issues before your submission will be transferred over for human review.
<br />
### Spaces Instead Of Tabs
When writing your code, set your IDE to utilize **spaces**, with a configured size of `4 characters`. Our repo provides a `.editorconfig` file which defines how the file should be formatted. Load that file into programs like Visual Studio code.
<br />
<br />
<div align="center">
**[`^ back to top ^`](#contributing-to-keeweb)**
</div>
<br />
---
<br />
## Documentation / Wiki
KeeWeb has [Wiki pages](https://github.com/keeweb/keeweb/wiki), however it's not possible to contribute with pull requests.
If you would like to improve it, please [open an issue](https://github.com/keeweb/keeweb/issues/new/choose) and submit your changes in Markdown format.
<br />
<div align="center">
**[`^ back to top ^`](#contributing-to-keeweb)**
</div>
<br />
---
<br />
## Donations
There are two ways of donating:
@ -54,12 +331,40 @@ There are two ways of donating:
Please note: donation does not imply any type of service contract.
<br />
<div align="center">
**[`^ back to top ^`](#contributing-to-keeweb)**
</div>
<br />
---
<br />
## Translations
All KeeWeb translations are contributed by the community. To improve a translation or add a missing one,
join us on [OneSky](https://keeweb.oneskyapp.com).
## PR
<br />
<div align="center">
**[`^ back to top ^`](#contributing-to-keeweb)**
</div>
<br />
---
<br />
## Public Relations
We would be happy to support you if you decide to post, blog, or review the project,
or provide any other kind of PR. Please [contact the developer](mailto:antelle.net@gmail.com)

280
README.md
View File

@ -1,11 +1,67 @@
# Free cross-platform password manager compatible with KeePass
This webapp is a browser and desktop password manager compatible with KeePass databases. It doesn't require any server or additional resources.
The app can run either in browser, or as a desktop app.
<div align="center">
<h1>KeeWeb Password Manager🔑</h1>
<br />
<p>KeeWeb is a browser and desktop password manager which is capable of opening up existing KeePass database `kdbx` files, or creating new vaults to store your important credentials in. </p>
![screenshot](img/screenshot.png)
## Quick Links
<br />
<!-- prettier-ignore-start -->
[![Test Status][badge-test]][link-build]
[![Code Coverage][badge-coverage]][link-coverage]
[![Last Commit][badge-commit]][badge-commit]
[![Size][badge-size]][badge-size]
[![All Contributors][all-contributors-badge]](#contributors-)
<!-- prettier-ignore-end -->
</div>
---
<br />
- [About](#about)
- [Quick Links](#quick-links)
- [Self-hosting](#self-hosting)
- [Docker Users:](#docker-users)
- [Build From Source](#build-from-source)
- [Platform: Windows](#platform-windows)
- [Using Grunt](#using-grunt)
- [Using NPM](#using-npm)
- [Platform: Linux](#platform-linux)
- [Using Grunt](#using-grunt-1)
- [Using NPM](#using-npm-1)
- [Platform: MacOS](#platform-macos)
- [Using Grunt](#using-grunt-2)
- [Using NPM](#using-npm-2)
- [Donations](#donations)
- [Contributors ✨](#contributors-)
<br />
---
<br />
## About
**KeeWeb** is a password manager which supports managing `kdbx` files created by other applications such as KeePass, KeePassXC, etc. You choose the platform you wish to run; as KeeWeb supports being installed and ran as either a Desktop application, or in your web-browser.
<br />
With support for Linux, Windows, and MacOS, we give you the tools to seamlessly manage your most important credentials across multiple applications and platforms.
<br />
Decide how you want to save your credential vault, KeeWeb supports saving your database as a local file, or you can store your password vault with some of the most popular cloud services such as Dropbox, Google Drive, and Microsoft OneDrive.
<br />
### Quick Links
Review some of our most important links below to learn more about KeeWeb and who we are:
<br />
Apps: [Web](https://app.keeweb.info/), [Desktop](https://github.com/keeweb/keeweb/releases/latest)
Timeline: [Release Notes](release-notes.md), [TODO](https://github.com/keeweb/keeweb/wiki/TODO)
@ -14,67 +70,128 @@ Website: [keeweb.info](https://keeweb.info)
Twitter: [kee_web](https://twitter.com/kee_web)
Donate: [OpenCollective](https://opencollective.com/keeweb#support), [GitHub](https://github.com/sponsors/antelle)
## Status
<br />
The app is quite stable now. Basic stuff, as well as more advanced operations, should be rather reliable.
---
<br />
## Self-hosting
Everything you need to host this app on your server is any static file server. The app is a single HTML file + a service worker (optionally; for offline access).
Want to self-host your copy of KeeWeb? Everything you need to host this app on your server is provided within the package. KeeWeb itself is a single HTML file combined with a service worker (optionally; for offline access).
<br />
You can download the latest distribution files from [gh-pages](https://github.com/keeweb/keeweb/archive/gh-pages.zip) branch.
If you are using Docker:
<br />
### Docker Users:
1. Place your `dh.pem`, `cert.pem`, `key.pem` to `/etc/nginx/external/`
2. Then execute the command below:
<br />
1. put your dh.pem, cert.pem, key.pem to /etc/nginx/external/
2. run this script:
```bash
docker run --name keeweb -d -p 443:443 -p 80:80 -v $EXT_DIR:/etc/nginx/external/ antelle/keeweb
```
To make Dropbox work in your self-hosted app, [go to this Wiki page](https://github.com/keeweb/keeweb/wiki/Dropbox-and-GDrive).
<br />
## Building
To configure Dropbox support on your self-hosted setup [view our Wiki page](https://github.com/keeweb/keeweb/wiki/Dropbox-and-GDrive).
<br />
---
<br />
## Build From Source
The easiest way to clone all KeeWeb repos is:
```bash
curl https://raw.githubusercontent.com/keeweb/keeweb/develop/dev-env.sh | bash -
```
The app can be built with grunt: `grunt` (html files will be in `dist/`).
Desktop apps are built with `grunt desktop`. This requires some magic and currently works only on CI,
you can find more details in [the GitHub Actions workflow](.github/workflows/build.yaml).
<br />
KeeWeb can be built utilizing the **grunt commandline**. Each platform has multiple commands you can use; pick one:
<br />
### Platform: Windows
You may build KeeWeb for `Windows` by executing ONE of the following two commands provided:
#### Using Grunt
```shell
grunt dev-desktop-win32 --skip-sign
```
#### Using NPM
```shell
npm run dev-desktop-windows
```
<br />
### Platform: Linux
You may build KeeWeb for `Linux` by executing ONE of the following two commands provided:
#### Using Grunt
```shell
grunt dev-desktop-linux --skip-sign
```
#### Using NPM
```shell
npm run dev-desktop-linux
```
<br />
### Platform: MacOS
You may build KeeWeb for `MacOS` by executing ONE of the following two commands provided:
#### Using Grunt
```shell
grunt dev-desktop-darwin --skip-sign
```
#### Using NPM
```shell
npm run dev-desktop-macos
```
<br />
Once the build is complete, all (html files will be in `dist/` folder. To build KeeWeb, utilize the following commands below.
<br />
To run the desktop (electron) app without building an installer, build the app with `grunt` and then launch KeeWeb with one of the following commands:
<br />
To run the desktop (electron) app without building an installer, build the app with `grunt` and start it this way:
```bash
npm run dev
npm run electron
```
For debug build:
<br />
To debug your build:
1. run `npm run dev`
2. open `http://localhost:8085`
To build desktop apps, use these goals, the result can be found in `tmp`:
Once built, the output files will be generated in `tmp`:
```
npm run dev-desktop-macos
npm run dev-desktop-windows
npm run dev-desktop-linux
```
<br />
## Contributing
---
Please read contribution guidelines [for pull requests](.github/PULL_REQUEST_TEMPLATE.md).
Here's a [list of issues](https://github.com/keeweb/keeweb/labels/help%20wanted) where your help would be very welcome.
Also you can help by [translating KeeWeb](https://keeweb.oneskyapp.com) to your language.
Other ways of contribution can be found [on this page](CONTRIBUTING.md).
#### Important notes for pull requests
- please branch from `develop`, not `master`
- don't edit translation files except base.json, they will be replaced
<br />
## Donations
@ -82,19 +199,96 @@ KeeWeb is not free to develop. It takes time, requires paid code signing certifi
You can help the project or say "thank you" with this button:
[<img src="https://opencollective.com/keeweb/tiers/backer.svg?avatarHeight=42&width=880" alt="OpenCollective">](https://opencollective.com/keeweb#support)
<br />
You can also sponsor the developer directly [on GitHub](https://github.com/sponsors/antelle).
<br />
Please note: donation does not imply any type of service contract.
## Thank you
<br />
Notable contributions to KeeWeb:
---
- Florian Reuschel ([@Loilo](https://github.com/Loilo)): [German translation](https://keeweb.oneskyapp.com/collaboration/translate/project/project/173183/language/550)
- Dennis Ploeger ([@dploeger](https://github.com/dploeger)): [auto-type improvements](https://github.com/keeweb/keeweb/pulls?q=is%3Apr+is%3Aclosed+author%3Adploeger)
- Hackmanit ([hackmanit.de](https://www.hackmanit.de)): [penetration test](https://www.hackmanit.de/en/blog-en/104-pro-bono-penetration-test-keeweb)
- Peter Bittner ([@bittner](https://github.com/bittner)): [Wikipedia article](https://en.wikipedia.org/wiki/KeeWeb)
<br />
## License
## Contributors ✨
We are always looking for contributors. If you feel that you can provide something useful to KeeWeb, then we'd love to review your suggestion. Before submitting your contribution, please review the following resources:
[MIT](https://github.com/keeweb/keeweb/blob/master/LICENSE)
- [Pull Request Procedure](.github/PULL_REQUEST_TEMPLATE.md)
- [Contributor Policy](CONTRIBUTING.md)
<br />
Want to help but can't write code?
- Review [active questions by our community](https://github.com/keeweb/keeweb/labels/help%20wanted) and answer the ones you know.
- Help [translating KeeWeb](https://keeweb.oneskyapp.com)
<br />
The following people have helped get this project going:
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-3-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END -->
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tbody>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://gitlab.com/antelle"><img src="https://avatars.githubusercontent.com/u/633557?v=4?s=40" width="40px;" alt="Antelle"/><br /><sub><b>Antelle</b></sub></a><br /><a href="https://github.com/KeeWeb/KeeWeb/commits?author=antelle" title="Code">💻</a> <a href="#projectManagement-antelle" title="Project Management">📆</a> <a href="#fundingFinding-antelle" title="Funding Finding">🔍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://gitlab.com/Aetherinox"><img src="https://avatars.githubusercontent.com/u/118329232?v=4?s=40" width="40px;" alt="Aetherinox"/><br /><sub><b>Aetherinox</b></sub></a><br /><a href="https://github.com/KeeWeb/KeeWeb/commits?author=Aetherinox" title="Code">💻</a> <a href="#projectManagement-Aetherinox" title="Project Management">📆</a> <a href="#fundingFinding-Aetherinox" title="Funding Finding">🔍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://gitlab.com/HarlemSquirrel"><img src="https://avatars.githubusercontent.com/u/6445815?v=4?s=40" width="40px;" alt="HarlemSquirrel"/><br /><sub><b>HarlemSquirrel</b></sub></a><br /><a href="https://github.com/KeeWeb/KeeWeb/commits?author=HarlemSquirrel" title="Code">💻</a> <a href="#projectManagement-HarlemSquirrel" title="Project Management">📆</a></td>
</tr>
</tbody>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
<br />
---
<br />
<!-- prettier-ignore-start -->
[link-npm]: https://npmjs.com
[link-node]: https://nodejs.org
[link-npmtrends]: http://npmtrends.com/keeweb
[link-license]: https://github.com/Aetherinox/keeweb/blob/master/LICENSE
[link-package]: https://npmjs.com/package/Aetherinox/keeweb
[link-coverage]: https://codecov.io/github/Aetherinox/keeweb
[link-build]: https://github.com/Aetherinox/keeweb/actions/workflows/build.yml?query=workflow%3Abuild.yml
[link-tests]: https://github.com/Aetherinox/keeweb/actions/workflows/tests.yml?query=workflow%3Atests.yml
[badge-commit]: https://img.shields.io/github/last-commit/Aetherinox/keeweb?color=b43bcc
[badge-size]: https://img.shields.io/github/repo-size/Aetherinox/keeweb?label=size&color=59702a
[badge-build]: https://img.shields.io/github/actions/workflow/status/Aetherinox/keeweb/build.yml?logo=github&label=Build&color=%23278b30
[badge-test]: https://img.shields.io/github/actions/workflow/status/Aetherinox/keeweb/tests.yml?logo=github&label=Tests&color=%23278b30
[badge-coverage]: https://img.shields.io/codecov/c/github/Aetherinox/keeweb?token=MPAVASGIOG&logo=codecov&logoColor=FFFFFF&label=Coverage&color=354b9e
[badge-version]: https://img.shields.io/npm/v/keeweb/keeweb
[badge-downloads]: https://img.shields.io/npm/dm/keeweb.svg
[badge-license]: https://img.shields.io/npm/l/keeweb.svg
[all-contributors]: https://github.com/all-contributors/all-contributors
[all-contributors-badge]: https://img.shields.io/github/all-contributors/Aetherinox/keeweb?color=de1f6f&label=contributors
<!-- prettier-ignore-end -->