- For more: Read [Contributing to kazv](https://kazv.chat/en/contributing/)
# Installation
## GNU/ or musl/Linux
### flatpak
If you have flatpak, you can install kazv via flatpak. Because flatpak currently cannot be built in an unprivileged container, we are unfortunately unable to provide a built image as a part of CI/CD. See [this flatpak bug][flatpak-docker-bug] for more details. It seems that upstream is very uninterested in resolving this security issue, as this bug report has been open for more than five years with zero (0) comment from Collaborators of this repository.
However, we will release *manually-built* flatpak packages from version 0.6.0 onwards. You can also build the flatpak via the instructions specified in the README file in the `packaging/GNU-Linux/flatpak` directory.
### Gentoo
If you are using Gentoo, you can use [tusooa-overlay][tusooa-overlay]
You can build kazv using [Craft][craft]. You will need to use [our Craft blueprints][craft-blueprints-project-kazv]. Follow the instructions in that repository to build and run kazv. We also upload the binaries to the [release page][kazv-release].
- [Qt6](https://doc.qt.io): Core Gui Qml QuickControls2 Svg Concurrent Multimedia Network Widgets HttpServer (ImageFormats is a recommended runtime dependency, without which formats like webp cannot be displayed) (Test and QuickTest if you want to build tests)
Updating external JavaScript libraries (advanced, usually not needed):
You need to first have Node.js available.
```
cd src/js/Intl.js
npm install
cd ..
npm install
./transform.bash
```
Follow the instruction in [emoji.lisp](./tools/emoji.lisp) to update the emoji list (usually not needed)
## Appium tests
Some of the tests use appium. Please refer to the [article on KDE develop site](https://develop.kde.org/docs/apps/tests/appium/) for guides on how to setup appium and selenium-webdriver-at-spi. Once you have them installed, you can pass `-Dkazv_ENABLE_APPIUM_TESTS=ON` to enable them. The tests will run together with other tests when you invoke `ctest` or `make test`.
# Contributing
## Bugs
Report bugs to [our repository on Lily Islands](https://lily-is.land/kazv/kazv) (chances are it is the page you are currently viewing), or email to [project-bugs@kazv.moe](mailto:project-bugs@kazv.moe).
Report security vulnerabilities using a confidential GitLab issue on Lily Islands, or email to [project-security@kazv.moe](mailto:project-security@kazv.moe).
## Write code
To contribute code to the Kazv Project, open a merge request on Lily Islands, or email your patch to [project-patch@kazv.moe](mailto:project-patch@kazv.moe).
## Translations
kazv uses [fluent](https://projectfluent.org) for translations. To add a new language, add it into `src/l10n/translations.qrc`, `src/l10n/config.json`, and populate translations in the files under `src/l10n/<language code>`.
Before a change can be landed, the UI has to be translated into all of the **core languages**. One who submits a patch only needs to do the translations for at **least one** core language. The rest can be translated by others.
The list of **core languages** is defined in `src/js/l10n-config.json`. If you want to add other languages into the list and you have enough commitment to keep the translations up-to-date (refer to the rule before), you can submit a patch to do so.
We have a CI job to validate all the translation files, and ensure translations in all of the core languages are up-to-date.
## Donate
You can now donate to the Kazv Project on Liberapay: <https://liberapay.com/theKazvProject/>.
+Lorem ipsum <p>dolor</p> sit amet, consectetur adipiscing elit. Curabitur augue risus, commodo quis dolor a, ultricies semper turpis. In aliquet finibus nunc at lobortis. Cras porta rutrum <div>elit ac <img alt="dapibus">. Suspendisse <p xxx="yyy">efficitur</p> sit amet enim eget consectetur. Vivamus luctus nisi volutpat lobortis dignissim. Praesent <script lang="text/javascript">nec velit quis sapien fringilla consectetur fringilla et leo. Donec lorem felis, volutpat ut</script> neque at, consequat elementum eros</div>. Praesent pretium <html>enim</html> urna, suscipit venenatis urna bibendum sit amet. Nam tincidunt nibh at purus <strong><strong><strong>egestas</strong> pretium</strong>. Sed</strong> euismod tellus ac ex interdum, id facilisis purus egestas. Cras ut dui ligula. Nunc dapibus auctor rhoncus.
+)xx";
+
+class KazvSanitizerBenchmarkTest : public QObject