# Sourcegraph: Cody + Code Search

Use Cody, the AI coding assistant, plus Code Search directly from your JetBrains IDE.

- [Cody](https://about.sourcegraph.com/cody?utm_source=plugins.jetbrains.com&utm_medium=referral) is an AI coding assistant that helps you understand, write, and fix code faster. It uses advanced search to pull context from both local and remote codebases so that you can use context about APIs, symbols, and usage patterns from across your entire codebase at any scale, all from within your JetBrains IDE.
- [Code Search](https://about.sourcegraph.com/code-search?utm_source=plugins.jetbrains.com&utm_medium=referral) lets you search code across all your repositories and code hosts—even the code you don’t have locally.

## Cody Features

### Autocomplete: Cody writes code for you

Cody autocompletes single lines or whole functions in any programming language, configuration file, or documentation. It’s powered by the latest instant LLMs for accuracy and performance.

![Example of using code autocomplete](https://storage.googleapis.com/sourcegraph-assets/website/Product%20Animations/AutoCompletion_IntelliJ_SS.jpg)

### Chat: Ask Cody about anything in your codebase

Cody is able to search context from your entire codebase — not just your open files. Cody uses advanced code search to retrieve context from both local and remote repositories.

For example, you can ask Cody:

- "How is our app's secret storage implemented on Linux?"
- "Where is the CI config for the web integration tests?"
- "Write a new GraphQL resolver for the AuditLog"
- "Why is the UserConnectionResolver giving an "unknown user" error, and how do I fix it?"
- "Add helpful debug log statements"
- "Make this work" _(seriously, it often works—try it!)_

![Example of chatting with Cody](https://storage.googleapis.com/sourcegraph-assets/website/Product%20Animations/Chat_IntelliJ_SS.jpg)

### Built-in commands

Cody has quick commands for common actions. Select the commands tab or right-click on a selection of code and choose one of the `Ask Cody > ...` commands, such as:

- Explain code
- Generate unit test
- Smell code

_We also welcome pull request contributions for new, useful commands!_

### Swappable LLMs

Cody supports multiple LLMs including Anthropic Claude 3, OpenAI GPT-4o, and Mixtral models, with more coming soon. Cody Pro users can swap models used for chat on-demand.

### Usage

This plugin works for all Cody plans, including Cody Free, Cody Pro, and Cody Enterprise.

You can find detailed information about Cody's available plans [on our website](https://sourcegraph.com/pricing?utm_source=plugins.jetbrains.com&utm_medium=referral).

### Programming language support

Cody works for any programming language because it uses LLMs trained on broad data. Cody works great with Python, Go, JavaScript, and TypeScript code.

### Code search

Cody is powered by Sourcegraph’s code search and uses context of your codebase to extend its capabilities. By using context from your chosen repositories, Cody is able to give more accurate answers and generate idiomatic code.

For example:

- Ask Cody to generate an API call. Cody can gather context on your API schema to inform the code it writes.
- Ask Cody to find where in your codebase a specific component is defined. Cody can retrieve and describe the exact files where that component is written.
- Ask Cody questions that require an understanding of multiple files. For example, ask Cody how frontend data is populated in a React app; Cody can find the React component definitions to understand what data is being passed and where it originates.

### Cody Enterprise

Cody Enterprise can retrieve context from your entire remote codebase using code search. This allows Cody to understand and answer questions about any of your code, even the repositories that don't live on your local machine.

[Contact us](https://about.sourcegraph.com/contact/request-info?utm_source=plugins.jetbrains.com&utm_medium=referral) to set up a trial of Cody Enterprise. If you’re an existing Sourcegraph Enterprise customer, contact your technical advisor.

## Feedback

- [Issue tracker](https://github.com/sourcegraph/cody/issues)
- [Discord chat](https://discord.gg/s2qDtYGnAE)
- [Twitter (@sourcegraph)](https://twitter.com/sourcegraph)

## License

[Cody's code](https://github.com/sourcegraph/jetbrains) is open source (Apache License 2.0).

## Code Search features

- Search with Sourcegraph directly from inside the IDE
- Instantly search in all open source repos and your private code
- Peek into any remote repo in the IDE, without checking it out locally

## URL sharing features

- Create URLs to specific code blocks to share them with your teammates
- Open your files on Sourcegraph

## Supported IDEs [![JetBrains Plugin](https://img.shields.io/badge/JetBrains-Sourcegraph-green.svg)](https://plugins.jetbrains.com/plugin/9682-sourcegraph)

The plugin works with all JetBrains IDEs, including:

- IntelliJ IDEA
- IntelliJ IDEA Community Edition
- PhpStorm
- WebStorm
- PyCharm
- PyCharm Community Edition
- RubyMine
- AppCode
- CLion
- GoLand
- DataGrip
- Rider
- Android Studio

**Versions 2022+ Recommended**

**Exception:** Due to a Java bug, search doesn't work with IDE versions **2021.1** and **2021.2** for users with **Apple Silicone** CPUs.

## Installation

- Open settings
  - Windows: Go to `File | Settings` (or use Ctrl+Alt+S)
  - Mac: Go to `IntelliJ IDEA | Preferences` (or use ⌘,)
- Click `Plugins` in the left-hand pane, then the `Marketplace` tab at the top
- Search for `Sourcegraph`, then click the `Install` button
- Make sure that the `git` command is available in your PATH. We’re going
  to [get rid of this dependency](https://github.com/sourcegraph/sourcegraph/issues/40452), but for now, the plugin
  relies on it.
- Restart your IDE if needed
- To search with Sourcegraph, press Alt+S (⌥S on Mac).
- To share a link to your code or search through the website, right-click in the editor, and choose an action under
  the `Sourcegraph` context menu item.
- To use your private Sourcegraph instance, open `Settings | Tools | Sourcegraph` and enter your URL and access token.

## Settings

### List of in-app settings and how to use them

- **Authorization**: List of accounts that can be used to interact with the plugin. Each account can be configured with:
  - **Server**: The URL of your Sourcegraph instance. It can be configured with your private instance if you're adding an enterprise account.
  - **Token**: See our [user docs](https://sourcegraph.com/docs/cli/how-tos/creating_an_access_token) for a video guide on how to
    create an access token.
  - **Custom request headers**: Any custom headers to send with every request to Sourcegraph.
    - Use any number of pairs: `header1, value1, header2, value2, ...`.
    - Example: `Authorization, Bearer 1234567890, X-My-Header, My-Value`.
    - Whitespace around commas doesn't matter.
- **Default branch name**: The branch to use if the current branch is not yet pushed to the remote.
  - Usually "main" or "master", but can be any name
- **Remote URL replacements**: You can replace specific strings in your repo's remote URL.
  - Use any number of pairs: `search1, replacement1, search2, replacement2, ...`.
  - Pairs are replaced from left to right. Whitespace around commas doesn't matter.
  - **Important:** The replacements are done on the Git remote-formatted URL, not the URL you see in the browser!
    - Example replacement subject for Git: `git@github.com:sourcegraph/sourcegraph.git`
    - Example replacement subject for Perforce: `perforce@perforce.company.com:depot-name.perforce`
    - Anatomy of the replacement subjects:
      - The username is not used.
      - Between the `@` and the `:` is the hostname
      - After the `:` is the organization/repo name (for Git) or the depot name (for Perforce)
      - The `.git` / `.perforce` extension is not used.
    - When you do the replacements, make sure you **keep the colon**.
    - In the case of a custom `repositoryPathPattern` being set for your code host in your private Sourcegraph instance,
      you may try to set up a pattern that uses the `@`, `:`, and `.git`/`.perforce` boundaries, _or_ specify a
      replacement
      pair for _each repo_ or _each depot_ you may have. If none of these solutions work for you, please raise this
      at [support@sourcegraph.com](mailto:support@sourcegraph.com), and we'll prioritize making this more convenient.
- **Globbing**: Determines whether you can specify sets of filenames with wildcard characters.
- **Cody completions**: Enables/disables Cody completions in the editor.
  - The completions are disabled by default.

### Git remote setting

By default, the plugin will use the git remote called `origin` to determine which repository on Sourcegraph corresponds
to your local repository. If your `origin` remote doesn't match Sourcegraph, you may instead configure a Git remote by
the name of `sourcegraph`. It will take priority when creating Sourcegraph links.

### Setting levels

You can configure the plugin on three levels:

1. **Project-level** On the project level you are able to configure your default account, default branch name and remote url replacements
2. **Application-level** All other settings are stored here

## System Properties

### Autocomplete system properties

In order to disable newly introduced features we are giving an option to disable them via system properties:

1. **Disable formatting autocomplete elements** `cody.autocomplete.enableFormatting=false`

## Managing Custom Keymaps

![A screenshot of the JetBrains preferences panel inside the Keymap tab](docs/keymaps.png)

You can configure JetBrains to set custom keymaps for Sourcegraph actions:

1. Open the JetBrains preferences panel and go to the Keymap page.
2. Filter by "sourcegraph" to see actions supplied by this plugin.
3. Now select an option to overwrite the keymap information and supply the new bindings.

## Questions & Feedback

If you have any questions, feedback, or bug report, we appreciate if you [open an issue on GitHub](https://github.com/sourcegraph/cody/issues/new?labels=question).

## Uninstallation

- Open settings
  - Windows: Go to `File | Settings` (or use Ctrl+Alt+S)
  - Mac: Go to `IntelliJ IDEA | Preferences` (or use ⌘,)
- Click `Plugins` in the left-hand pane, then the `Installed` tab at the top
- Find `Sourcegraph` → Right click → `Uninstall` (or uncheck to disable)


image::https://img.shields.io/maven-metadata/v.svg?label=release&metadataUrl=https%3A%2F%2Frepo1.maven.org%2Fmaven2%2Fcom%2Fautonomousapps%2Fdependency-analysis%2Fcom.autonomousapps.dependency-analysis.gradle.plugin%2Fmaven-metadata.xml[Latest version,link="https://mvnrepository.com/artifact/com.autonomousapps.dependency-analysis/com.autonomousapps.dependency-analysis.gradle.plugin"]
image::https://img.shields.io/nexus/s/com.autonomousapps/dependency-analysis-gradle-plugin?label=snapshot&server=https%3A%2F%2Foss.sonatype.org[Latest snapshot,link="https://oss.sonatype.org/#nexus-search;gav~com.autonomousapps.dependency-analysis~com.autonomousapps.dependency-analysis.gradle.plugin~~~~kw,versionexpand"]
image::https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin/workflows/Main/badge.svg[Build status,link="https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin/actions/workflows/push.yml?query=branch%3Amain"]

== Detect unused and misused dependencies
The Dependency Analysis Gradle Plugin (DAGP, née Dependency Analysis Android Gradle Plugin) detects the following:

1. Unused dependencies.
2. Used transitive dependencies (which you may want to declare directly).
3. Dependencies declared on the wrong configuration (`api` vs `implementation` vs `compileOnly`, etc.).

As a side effect, the plugin can also tell you your project's ABI, and produces graphviz files representing various
views of your dependency graph, among other things. These side effects are currently mostly undocumented internal
behaviors, but they may be interesting for some advanced users.

== Build health

In addition to the dependency-related advice (see above), DAGP provides other advice to help maintain your "build health." This includes the detection of:

1. Unnecessary plugins (currently only `kapt`).
2. Subprojects ("modules") that unnecessarily use the Android plugin, and could instead by "normal" JVM libraries.

== Compatibilities

Please see the https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin/wiki/Compatibilities-&-Limitations[wiki] for information on the versions of Gradle, the Android Gradle Plugin, etc., that this plugin is compatible with.

== Add to your project and use
For detailed instructions, see
https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin/wiki/Adding-to-your-project[the wiki].

The simplest approach is to add the following:

.root build.gradle
[source,groovy]
----
plugins {
  id("com.autonomousapps.dependency-analysis") version "<<latest_version>>"
}
----

For a quick start, just run the following:

----
./gradlew buildHealth
----

You will probably see output like the following:

----
> Task :buildHealth FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':buildHealth'.
> There were dependency violations. See report at file:///path/to/project/build/reports/dependency-analysis/build-health-report.txt
----

If you wish to have this (potentially very long) report printed to console, add this to your `gradle.properties` file:

.gradle.properties
[source]
----
dependency.analysis.print.build.health=true
----

== More advanced usage

=== Project Health

You can also run the analysis against individual modules with the `projectHealth` task. For example:

----
./gradlew app:projectHealth
----

=== Reason

You may be curious why the plugin is emitting (or not emitting) advice regarding some dependency. You can ask it why:

----
./gradlew lib:reason --id com.squareup.okio:okio:2.2.2 <1>
> Task :lib:reason

----------------------------------------
You asked about the dependency 'com.squareup.okio:okio:2.2.2'.
There is no advice regarding this dependency.
----------------------------------------

Shortest path from :lib to com.squareup.okio:okio:2.2.2:
:lib
\--- com.squareup.okio:okio:2.2.2

Source: main
------------
* Exposes class okio.BufferedSource (implies api).
----
<1> The version string is optional.

=== Basic configuration

For detailed information on how to configure the plugin, see https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin/wiki/Customizing-plugin-behavior[the wiki].

To configure the plugin, use the https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin/blob/main/src/main/kotlin/com/autonomousapps/DependencyAnalysisExtension.kt[`dependencyAnalysis`] extension.

.build.gradle
[source,groovy]
----
dependencyAnalysis {
  // configuration goes here
}
----

== Publications
The following is a list of articles / blog posts that have been published discussing this plugin:

1. https://dev.to/autonomousapps/the-proper-care-and-feeding-of-your-gradle-build-d8g[The proper care and feeding of your Gradle build]
2. https://dev.to/autonomousapps/dependency-analysis-gradle-plugin-using-bytecode-analysis-to-find-unused-dependencies-509n[Dependency Analysis Gradle Plugin: Using bytecode analysis to find unused dependencies]
3. https://dev.to/autonomousapps/dependency-analysis-gradle-plugin-what-s-an-abi-3l2h[Dependency Analysis Gradle Plugin: What's an ABI?]
4. https://dev.to/autonomousapps/reducing-my-gradle-plugin-s-impact-on-configuration-time-a-journey-32h2[Reducing my Gradle plugin's impact on configuration time: A journey]

...with more to come :)

This plugin has also been featured in these newsletters:

1. https://newsletter.gradle.com/2022/05[Gradle, May 2022]
2. https://newsletter.gradle.com/2020/09[Gradle, September 2020]
3. https://newsletter.gradle.com/2020/08[Gradle, August 2020]
4. https://androidweekly.net/issues/issue-423[Android Weekly, Issue #423]
5. https://newsletter.gradle.com/2020/07[Gradle, July 2020]
6. https://newsletter.gradle.com/2020/06[Gradle, June 2020]

Podcast episodes about this plugin could be found here:

1. https://thebakery.dev/31/[The Developers' Bakery, Episode #31]

Youtube videos about this plugin:

1. https://youtu.be/Lipf5piizZc[Understanding Gradle #28 – Clean Compile Classpaths with the Dependency Analysis Plugin]


# K-9 Mail

[![Latest release](https://img.shields.io/github/release/thunderbird/thunderbird-android.svg?style=flat-square)](https://github.com/thunderbird/thunderbird-android/releases/latest)
[![Latest beta release](https://img.shields.io/github/v/release/thunderbird/thunderbird-android.svg?include_prereleases&style=flat-square)](https://github.com/thunderbird/thunderbird-android/releases)

K-9 Mail is an open-source email client for Android.

## Download

K-9 Mail can be downloaded from a couple of sources:

- [Google Play](https://play.google.com/store/apps/details?id=com.fsck.k9)
- [F-Droid](https://f-droid.org/repository/browse/?fdid=com.fsck.k9)
- [Github Releases](https://github.com/thunderbird/thunderbird-android/releases)

You might also be interested in becoming a [tester](https://forum.k9mail.app/t/how-do-i-become-a-beta-tester/68) to get an early look at new versions.

## Release Notes

Check out the [Release Notes](https://github.com/thunderbird/thunderbird-android/wiki/ReleaseNotes) to find out what changed
in each version of K-9 Mail.

## Need Help?

If the app is not behaving like it should, you might find these resources helpful:

- [User Manual](https://docs.k9mail.app/)
- [Frequently Asked Questions](https://forum.k9mail.app/c/faq)
- [Support Forum](https://forum.k9mail.app/)

## Translations

Interested in helping to translate K-9 Mail? Contribute here:

- [K-9 Mail localization](https://hosted.weblate.org/projects/tb-android/)

## Contributing

We welcome contributions from everyone. Please see the [CONTRIBUTING](docs/CONTRIBUTING.md) guide for more information.

### Architecture Decision Records (ADR)

We use [Architecture Decision Records](https://adr.github.io/) to document the architectural decisions made in the
development of K-9 Mail. You can find them in the [`docs/architecture/adr`](docs/architecture/adr) directory.

For more information about our ADRs, please see the [ADRs README](docs/architecture/adr/README.md).

We encourage team members and contributors to read through our ADRs to understand the architectural decisions that
have shaped this project so far. Feel free to propose new ADRs or suggest modifications to existing ones as needed.

## Communication

Aside from discussing changes in [pull requests](https://github.com/thunderbird/thunderbird-android/pulls) and
[issues](https://github.com/thunderbird/thunderbird-android/issues) we use the following communication services:

- Matrix: [#tb-android:mozilla.org](https://matrix.to/#/#tb-android:mozilla.org)

## Security

The code in this repository was undergoing an extensive security audit in collaboration with the Open Source Technology
Improvement Fund ([OSTIF](https://ostif.org/)) and [7ASecurity](https://7asecurity.com/) in the first half of 2023. For
more details, see
our [blog post](https://blog.thunderbird.net/2023/07/k-9-mail-collaborates-with-ostif-and-7asecurity-security-audit/).

## License

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.


[![Latest build](https://github.com/element-hq/element-android/actions/workflows/build.yml/badge.svg?query=branch%3Adevelop)](https://github.com/element-hq/element-android/actions/workflows/build.yml?query=branch%3Adevelop)
[![Weblate](https://translate.element.io/widgets/element-android/-/svg-badge.svg)](https://translate.element.io/engage/element-android/?utm_source=widget)
[![Element Android Matrix room #element-android:matrix.org](https://img.shields.io/matrix/element-android:matrix.org.svg?label=%23element-android:matrix.org&logo=matrix&server_fqdn=matrix.org)](https://matrix.to/#/#element-android:matrix.org)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=vector-im_element-android&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=vector-im_element-android)
[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=vector-im_element-android&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=vector-im_element-android)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=vector-im_element-android&metric=bugs)](https://sonarcloud.io/summary/new_code?id=vector-im_element-android)

# Element Android

Element Android is an Android Matrix Client provided by [Element](https://element.io/). The app can be run on every Android devices with Android OS Lollipop and more (API 21).

It is a total rewrite of [Riot-Android](https://github.com/element-hq/riot-android) with a new user experience.

[](https://play.google.com/store/apps/details?id=im.vector.app)
[](https://f-droid.org/app/im.vector.app)

Build of develop branch: [![GitHub Action](https://github.com/element-hq/element-android/actions/workflows/build.yml/badge.svg?query=branch%3Adevelop)](https://github.com/element-hq/element-android/actions/workflows/build.yml?query=branch%3Adevelop) Nightly test status: [![allScreensTest](https://github.com/element-hq/element-android/actions/workflows/nightly.yml/badge.svg)](https://github.com/element-hq/element-android/actions/workflows/nightly.yml)

# New Android SDK

Element is based on a new Android SDK fully written in Kotlin (like Element). In order to make the early development as fast as possible, Element and the new SDK currently share the same git repository.

At each Element release, the SDK module is copied to a dedicated repository: https://github.com/matrix-org/matrix-android-sdk2. That way, third party apps can add a regular gradle dependency to use it. So more details on how to do that here: https://github.com/matrix-org/matrix-android-sdk2.

# Roadmap

The version 1.0.0 of Element still misses some features which was previously included in Riot-Android.
The team will work to add them on a regular basis.

# Releases to app stores

There is some delay between when a release is created and when it appears in the app stores (Google Play Store and F-Droid). Here are some of the reasons:

* Not all versioned releases that appear on GitHub are considered stable. Each release is first considered beta: this continues for at least two days. If the release is stable (no serious issues or crashes are reported), then it is released as a production release in Google Play Store, and a request is sent to F-Droid too.
* Each release on the Google Play Store undergoes review by Google before it comes out. This can take an unpredictable amount of time. In some cases it has taken several weeks.
* In order for F-Droid to guarantee that the app you receive exactly matches the public source code, they build releases themselves. When a release is considered stable, Element staff inform the F-Droid maintainers and it is added to the build queue. Depending on the load on F-Droid's infrastructure, it can take some time for releases to be built. This always takes at least 24 hours, and can take several days.

If you would like to receive releases more quickly (bearing in mind that they may not be stable) you have a number of options:

1. [Sign up to receive beta releases](https://play.google.com/apps/testing/im.vector.app) via the Google Play Store.
2. Install a [release APK](https://github.com/element-hq/element-android/releases) directly - download the relevant .apk file and allow installing from untrusted sources in your device settings.  Note: these releases are the Google Play version, which depend on some Google services.  If you prefer to avoid that, try the latest dev builds, and choose the F-Droid version.
3. If you're really brave, install the [very latest dev build](https://github.com/element-hq/element-android/actions/workflows/build.yml?query=branch%3Adevelop) - pick a build, then click on `Summary` to download the APKs from there: `vector-Fdroid-debug` and `vector-Gplay-debug` contains the APK for the desired store. Each file contains 5 APKs. 4 APKs for every supported specific architecture of device. In doubt you can install the `universal` APK.

## Contributing

Please refer to [CONTRIBUTING.md](./CONTRIBUTING.md) if you want to contribute on Matrix Android projects!

Come chat with the community in the dedicated Matrix [room](https://matrix.to/#/#element-android:matrix.org).

Also [this documentation](./docs/_developer_onboarding.md) can hopefully help developers to start working on the project.

## Triaging issues

Issues are triaged by community members and the Android App Team, following the [triage process](https://github.com/element-hq/element-meta/wiki/Triage-process).

We use [issue labels](https://github.com/element-hq/element-meta/wiki/Issue-labelling) to sort all incoming issues.


[![Latest build](https://github.com/element-hq/element-x-android/actions/workflows/build.yml/badge.svg?query=branch%3Adevelop)](https://github.com/element-hq/element-x-android/actions/workflows/build.yml?query=branch%3Adevelop)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=vector-im_element-x-android&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=vector-im_element-x-android)
[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=vector-im_element-x-android&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=vector-im_element-x-android)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=vector-im_element-x-android&metric=bugs)](https://sonarcloud.io/summary/new_code?id=vector-im_element-x-android)
[![codecov](https://codecov.io/github/element-hq/element-x-android/branch/develop/graph/badge.svg?token=ecwvia7amV)](https://codecov.io/github/vector-im/element-x-android)
[![Element X Android Matrix room #element-x-android:matrix.org](https://img.shields.io/matrix/element-x-android:matrix.org.svg?label=%23element-x-android:matrix.org&logo=matrix&server_fqdn=matrix.org)](https://matrix.to/#/#element-x-android:matrix.org)
[![Localazy](https://img.shields.io/endpoint?url=https%3A%2F%2Fconnect.localazy.com%2Fstatus%2Felement%2Fdata%3Fcontent%3Dall%26title%3Dlocalazy%26logo%3Dtrue)](https://localazy.com/p/element)

# Element X Android

Element X Android is a [Matrix](https://matrix.org/) Android Client provided by [element.io](https://element.io/). This app is currently in a pre-alpha release stage with only basic functionalities.

The application is a total rewrite of [Element-Android](https://github.com/element-hq/element-android) using the [Matrix Rust SDK](https://github.com/matrix-org/matrix-rust-sdk) underneath and targeting devices running Android 7+. The UI layer is written using [Jetpack Compose](https://developer.android.com/jetpack/compose), and the navigation is managed using [Appyx](https://github.com/bumble-tech/appyx).

Learn more about why we are building Element X in our blog post: [https://element.io/blog/element-x-experience-the-future-of-element/](https://element.io/blog/element-x-experience-the-future-of-element/).

[](https://play.google.com/store/apps/details?id=io.element.android.x)[](https://f-droid.org/packages/io.element.android.x)

## Table of contents

* [Screenshots](#screenshots)
* [Translations](#translations)
* [Rust SDK](#rust-sdk)
* [Status](#status)
* [Contributing](#contributing)
* [Build instructions](#build-instructions)
* [Support](#support)
* [Copyright and License](#copyright-and-license)

## Screenshots

Here are some screenshots of the application:

|||||
|-|-|-|-|
|||||

## Translations

Element X Android supports many languages. You can help us to translate the app in your language by joining our [Localazy project](https://localazy.com/p/element). You can also help us to improve the existing translations.

Note that for now, we keep control on the French and German translations.

Translations can be checked screen per screen using our tool Element X Android Gallery, available at https://element-hq.github.io/element-x-android/. Note that this page is updated every Tuesday.

More instructions about translating the application can be found at [CONTRIBUTING.md](CONTRIBUTING.md#strings).

## Rust SDK

Element X leverages the [Matrix Rust SDK](https://github.com/matrix-org/matrix-rust-sdk) through an FFI layer that the final client can directly import and use.

We're doing this as a way to share code between platforms and while we've seen promising results it's still in the experimental stage and bound to change.

## Status

This project is in work in progress. The app does not cover yet all functionalities we expect. The list of supported features can be found in [this issue](https://github.com/element-hq/element-x-android/issues/911).

## Contributing

Want to get actively involved in the project? You're more than welcome! A good way to start is to check the issues that are labelled with the [good first issue](https://github.com/element-hq/element-x-android/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) label. Let us know by commenting the issue that you're starting working on it.

But first make sure to read our [contribution guide](CONTRIBUTING.md) first.

You can also come chat with the community in the Matrix [room](https://matrix.to/#/#element-x-android:matrix.org) dedicated to the project.

## Build instructions

Just clone the project and open it in Android Studio.
Makes sure to select the `app` configuration when building (as we also have sample apps in the project).

## Support

When you are experiencing an issue on Element X Android, please first search in [GitHub issues](https://github.com/element-hq/element-x-android/issues)
and then in [#element-x-android:matrix.org](https://matrix.to/#/#element-x-android:matrix.org).
If after your research you still have a question, ask at [#element-x-android:matrix.org](https://matrix.to/#/#element-x-android:matrix.org). Otherwise feel free to create a GitHub issue if you encounter a bug or a crash, by explaining clearly in detail what happened. You can also perform bug reporting from the application settings. This is especially recommended when you encounter a crash.

## Copyright and License

Copyright © New Vector Ltd

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with the License. You may obtain a copy of the License in the [LICENSE](LICENSE) file, or at:

[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


Identity by walt.id

Multi-Platform libraries, powerful APIs and easy-to-use white label apps to build identity and wallet solutions.

## Getting Started

### Multi-Platform Libraries

Available for Kotlin/Java and JavaScript environments.

- **Crypto** ([Docs](https://docs.oss.walt.id/issuer/sdks/manage-keys/overview) | [GitHub](https://github.com/walt-id/waltid-identity/blob/main/waltid-libraries/waltid-crypto/README.md)) -
  create and use keys based on different algorithms.
- **DID** ([Docs](https://docs.oss.walt.id/issuer/sdks/manage-dids/overview) | [GitHub](https://github.com/walt-id/waltid-identity/blob/main/waltid-libraries/waltid-did/README.md)) -
  create, register, and resolve DIDs on different ecosystems.
- **Verifiable Credentials** ([Docs](https://docs.oss.walt.id/issuer/sdks/manage-credentials/overview) | [GitHub](https://github.com/walt-id/waltid-identity/tree/main/waltid-libraries/waltid-verifiable-credentials)) -
  issue and verify W3C credentials as JWTs and SD-JWTs.
- **mdoc Credentials** ([GitHub](https://github.com/walt-id/waltid-identity/tree/main/waltid-libraries/waltid-mdoc-credentials)) - issue and
  verify mdoc credentials (mDL ISO/IEC 18013-5).
- **OpenID4VC** ([GitHub](https://github.com/walt-id/waltid-identity/blob/main/waltid-libraries/waltid-openid4vc/README.md)) -
  implementation of the OID4VCI and OIDC4VP protocols.
- **SD-JWT** ([GitHub](https://github.com/walt-id/waltid-identity/blob/main/waltid-libraries/waltid-sdjwt/README.md)) - create and verify
  Selective Disclosure JWTs.

### Services

A set of APIs to build issuer, verifier, and wallet capabilities into any app.

- **Issuer API** ([Docs](https://docs.oss.walt.id/issuer/api/getting-started) | [GitHub](https://github.com/walt-id/waltid-identity/tree/main/waltid-services/waltid-issuer-api)) -
  enable apps to issue credentials (W3C JWTs and SD-JWTs) via OID4VC.
- **Verifier API**  ([Docs](https://docs.oss.walt.id/verifier/api/getting-started) | [GitHub](https://github.com/walt-id/waltid-identity/tree/main/waltid-services/waltid-verifier-api)) -
  enable apps to verify credentials (W3C JWTs and SD-JWTs) via OID4VP/SIOPv2.
- **Wallet API** ([Docs](https://docs.oss.walt.id/wallet/api/getting-started) | [GitHub](https://github.com/walt-id/waltid-identity/tree/main/waltid-services/waltid-wallet-api)) -
  extend apps with wallet capabilities to collect, store, manage and share identity credentials and tokens.

### Apps

A set of white-label apps to get started in no time.

- [Web-Wallet](https://github.com/walt-id/waltid-identity/tree/main/waltid-applications/waltid-web-wallet) - A custodial web-wallet (PWA)
  solution for credentials and tokens.
- [Portal](https://github.com/walt-id/waltid-identity/tree/main/waltid-applications/waltid-web-portal) - An issuer and verifier portal for
  credentials, which are managed [here](https://github.com/walt-id/waltid-credentials).

## Use Services And Apps

Use the [walt.id identity package](https://github.com/walt-id/waltid-identity/tree/main/docker-compose) to run all APIs and Apps with
docker:

```bash
cd docker-compose && docker-compose up
```

Learn more about the exposed ports [here](https://github.com/walt-id/waltid-identity/tree/main/docker-compose).

## Architecture

The walt.id identity repo is part of The Community Stack, walt.id's collection of open-source products to build identity and wallet
solutions. Learn more [here](https://walt.id/blog/p/community-stack).

![waltid-identity-architecture](https://github.com/walt-id/waltid-identity/assets/48290617/b7ca5662-53cc-488c-bfe5-a58c89cd2ec0)

## Join the community

* Connect and get the latest updates: Discord |
  Newsletter |
  YouTube | Twitter
* Get help, request features and report bugs: GitHub
  Discussions

## License

**Licensed under the [Apache License, Version 2.0](https://github.com/walt-id/waltid-ssikit/blob/master/LICENSE).**


# Dweb-Browser

<img align="right" src="./assets/browser-icons/web.browser.dweb.svg" height="150px" alt="跨平台分布式应用浏览器">

![stable-release](https://img.shields.io/badge/dweb-browser-success)
![stable-release](https://img.shields.io/badge/dweb-plaoc-orange)
![starts](https://shields.io/github/stars/BioforestChain/dweb_browser)
[![Plaoc Group][plaoc-badge]][plaoc-url]

[plaoc-badge]: https://img.shields.io/badge/plaoc-doc-blue
[plaoc-url]: https://github.com/BioforestChain/dweb_browser-docs

dweb-browser 是一个遵循 Dweb 标准构建起来的浏览器平台，并将浏览器的能力、以及浏览器相关的系统原生系统能力通过各种 dweb 模块暴露出来。目前我们实现了 Android、IOS、MacOS、Windows、Linux 这些主流平台的支持。

- 下载地址： [桌面端](https://docs.dweb-browser.org/downloads.html)，移动端到各大应用商城下载。
- 应用开发者文档：[docs](https://docs.dweb-browser.org/)

[ENGLISH DOC](./README_EN.md)

# Plaoc

plaoc 是基于 dweb-browser 平台的一个对标 Cordova、Capacitor、Tauri 的“跨平台 Web 应用”开发工具包，包含打包工具`@plaoc/cli`，前端插件`@plaoc/plguins`。

## cli

[@plaoc/cli](https://www.npmjs.com/package/@plaoc/cli) 是 plaoc 开发并打包应用到 dweb_browser 的命令行工具。

### 安装打包工具。

```bash
npm i -g @plaoc/cli
```

开发 app 的时候运行` plaoc serve`。

- 第一种方式可以指定您前端工程输出的地址，这样在您代码更新的时候，app 内部的代码也会跟着您的更新而更新。

```bash
plaoc serve http://localhost:8000
```

- 第二种是直接指定编译完的源码目录，这种方式相当于直接安装 app，适用您前端工程断开的时候也能访问。

```bash
plaoc serve ./dist
```

上面的两个命令会输出如下几行：

```bash
using metadata file: /Volumes/developer/waterbang/deno/dweb_browser/npm/@plaoc__examples/html-demo/manifest.json
metadata: 	dweb://install?url=http://127.0.0.1:8097/metadata.json
metadata: 	dweb://install?url=http://172.30.95.93:8097/metadata.json
```

第一行的 `using metadata file`将指定您的 app 配置文件目录，方便直接知晓是哪个 app。

第二行和第三行的`metadata`为 `deeplink` 的形式，在桌面端可以直接粘贴到 dweb-browser 中进行安装。
而移动端可以使用转成二维码，使用扫码的形式进行安装应用。

### 打包成可部署的 app 包

直接使用 `plaoc bundle` 指定源码目录进行打包，命令如下：

```bash
plaoc bundle ./dir
```

会打包并输出一个包含 app ID 和日期组合而成的压缩文件 `.zip` 和一个 `metadata.json`。

这两个文件使用任意的`(http/https)` 服务部署成链接的形式，放于同一文件夹中并且指向`metadata.json` 文件。组成如下形式链接，就可以在的 dweb-browser 中进行安装。

```bash
dweb://install?url=http://app.dweb.中国/metadata.json
```

## plugins

[@plaoc/plugins](https://www.npmjs.com/package/@plaoc/plugins) 能赋予 web 开发者,直接调用各个平台系统 API 的能力。

具体文档查看：[plugins 文档](https://docs.dweb-browser.org/plugins/web-components.html)

## 模块

在 dweb-browser 中，我们强调模块的概念，一个 app 可以小到是一个简单功能模块，去专心为分布式网络提供一些能力，它包含一下这些核心模块：

### `js.browser.dweb`

它是一个 javascript-runtime，使用的是 WebWorker 作为底层实现。因此 WebWorker 中的各种标准都可以开箱即用。

### `jmm.browser.dweb`

它是一个动态 dweb 模块管理器，基于此可以实现类似 PWA 的应用功能

### `mwebview.browser.dweb`

它的全称是 mutil-webview（多 web 视图）的渲染器，可以使用这个渲染器同时渲染多个 Web 视图。比如说可以用它实现一个网页浏览器。

### `desk.browser.dweb`

它是一个 dweb-browser 自己实现的窗口标准 `window.std.dweb`，在跨平台上保持一致性的窗口体验。

### `*.sys.dweb`

和浏览器相关的一些系统标准也在 dweb-browser 上被实现。

### Q&A

mac 桌面端如果出现： “Dweb Browser” 已损坏，无法打开。 你应该将它移到废纸篓。

可以使用下面命令运行。

```bash
sudo xattr -d com.apple.quarantine /Applications/Dweb\ Browser.app
```

更多问题可以查看文档[dweb_browser](https://docs.dweb-browser.org/)，或者在 issuse 中找到问题或者提问。


# CDC Data Exchange HL7

A repository for the CDC data exchange building block HL7.

#### Case-based Surveillance Pipeline
- Code for a case-based surveillance data pipeline proof-of-concept:
[cbs-pipeline](https://github.com/CDCgov/data-exchange-hl7/tree/master/cbs-pipeline#case-based-surveillance-pipeline)

#### Functions Project - HL7 Messages Pipeline
- Pipeline using functions for HL7 Messages (Debatch, Validate, Transform) - proof-of-concept:
[fns-hl7-pipeline](https://github.com/CDCgov/data-exchange-hl7/tree/master/fns-hl7-pipeline)

#### HL7 Messages Structural Validation
- Structural validation of HL7 messages:
[hl7-structural-validator](https://github.com/CDCgov/data-exchange-hl7/tree/master/hl7-structural-validator)

#### DEPRECATED ~Message Mapping Guide (MMG)~
- Code to retrieve and update MMGs from MMGAT API into (project) local storage:
[mmg](https://github.com/CDCgov/data-exchange-hl7/tree/master/mmg)

#### PHIN Vocab
- Code to retrieve and update vocabulary entries into (project) local data store:
[phin-vocab](https://github.com/CDCgov/data-exchange-hl7/tree/master/phin-vocab)

#### Tools
- Various HL7 Dev tools or experiments:
[tools](https://github.com/CDCgov/data-exchange-hl7/tree/master/tools)

## Public Domain Standard Notice
This repository constitutes a work of the United States Government and is not
subject to domestic copyright protection under 17 USC § 105. This repository is in
the public domain within the United States, and copyright and related rights in
the work worldwide are waived through the [CC0 1.0 Universal public domain dedication](https://creativecommons.org/publicdomain/zero/1.0/).
All contributions to this repository will be released under the CC0 dedication. By
submitting a pull request you are agreeing to comply with this waiver of
copyright interest.

## License Standard Notice
The repository utilizes code licensed under the terms of the Apache Software
License and therefore is licensed under ASL v2 or later.

This source code in this repository is free: you can redistribute it and/or modify it under
the terms of the Apache Software License version 2, or (at your option) any
later version.

This source code in this repository is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the Apache Software License for more details.

You should have received a copy of the Apache Software License along with this
program. If not, see http://www.apache.org/licenses/LICENSE-2.0.html

The source code forked from other open source projects will inherit its license.

## Privacy Standard Notice
This repository contains only non-sensitive, publicly available data and
information. All material and community participation is covered by the
[Disclaimer](https://github.com/CDCgov/template/blob/master/DISCLAIMER.md)
and [Code of Conduct](https://github.com/CDCgov/template/blob/master/code-of-conduct.md).
For more information about CDC's privacy policy, please visit [http://www.cdc.gov/other/privacy.html](https://www.cdc.gov/other/privacy.html).

## Contributing Standard Notice
Anyone is encouraged to contribute to the repository by [forking](https://help.github.com/articles/fork-a-repo)
and submitting a pull request. (If you are new to GitHub, you might start with a
[basic tutorial](https://help.github.com/articles/set-up-git).) By contributing
to this project, you grant a world-wide, royalty-free, perpetual, irrevocable,
non-exclusive, transferable license to all users under the terms of the
[Apache Software License v2](http://www.apache.org/licenses/LICENSE-2.0.html) or
later.

All comments, messages, pull requests, and other submissions received through
CDC including this GitHub page may be subject to applicable federal law, including but not limited to the Federal Records Act, and may be archived. Learn more at [http://www.cdc.gov/other/privacy.html](http://www.cdc.gov/other/privacy.html).

## Records Management Standard Notice
This repository is not a source of government records, but is a copy to increase
collaboration and collaborative potential. All government records will be
published through the [CDC web site](http://www.cdc.gov).

## Additional Standard Notices
Please refer to [CDC's Template Repository](https://github.com/CDCgov/template)
for more information about [contributing to this repository](https://github.com/CDCgov/template/blob/master/CONTRIBUTING.md),
[public domain notices and disclaimers](https://github.com/CDCgov/template/blob/master/DISCLAIMER.md),
and [code of conduct](https://github.com/CDCgov/template/blob/master/code-of-conduct.md).


# Neko

A Free, Open source unofficial manga reader for MangaDex

If you got any questions, [join our Discord server](https://discord.gg/4vmK42QuKG).

![](https://img.shields.io/github/downloads/nekomangaorg/neko/total?label=downloads&labelColor=27303D&color=0D1117&logo=github&logoColor=FFFFFF&style=flat)
![](https://img.shields.io/github/actions/workflow/status/nekomangaorg/neko/ci-draft-release.yml?labelColor=27303D&style=flat)
![](https://img.shields.io/github/stars/nekomangaorg/Neko.svg?label=stars&labelColor=27303D&color=0D1117&logo=github&style=flat)

## Download

[![](https://img.shields.io/github/v/release/nekomangaorg/neko.svg?maxAge=3600&label=Stable&labelColor=000000&color=ff124a&style=for-the-badge)](https://github.com/nekomangaorg/Neko/releases/latest)

## Features include

- [MangaDex](https://mangadex.org/) manga reader for Android 7+
- Offline reading Supports native login to MangaDex
- MDList support
- Tracker support: MyAnimeList, AniList,
  Kitsu, MangaUpdates
- Custom computer generated similar manga recommendations, as well as user recommendations from MyAnimeList, MangaUpdates, AniList
- Syncing manga, and read statuses to and from MangaDex and Neko
- Ability to merge missing chapters from MangaDex with other sources including Toonily,
  MangaLife, and Komga
- Plus much more...

## A big thanks to all who have contributed

## Disclaimer

The developer(s) of this application do not have any affiliation with the content providers available, and this application hosts zero content.

## License

Copyright 2015 Javier Tomás
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Modifications copyright (C) 2019 NekoMangaOrg


### Please give the repo a :star:

| Build                                                                                | Support Server                                                                                |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [![CI](https://github.com/keiyoushi/extensions-source/actions/workflows/build_push.yml/badge.svg)](https://github.com/keiyoushi/extensions-source/actions/workflows/build_push.yml) | [![Discord](https://img.shields.io/discord/1193460528052453448.svg?label=discord&labelColor=7289da&color=2c2f33&style=flat)](https://discord.gg/3FbCpdKbdY) |

# Usage

[Getting started](https://keiyoushi.github.io/docs/guides/getting-started#adding-the-extension-repo)

# Requests

To request a new source or bug fix, [create an issue](https://github.com/keiyoushi/extensions-source/issues/new/choose).

Please note that creating an issue does not mean that the source will be added or fixed in a timely
fashion, because the work is volunteer-based. Some sources may also be impossible to do or prohibitively
difficult to maintain.

If you would like to see a request fulfilled and have the necessary skills to do so, consider contributing!
Issues are up-for-grabs for any developer if there is no assigned user already.

# Contributing

Contributions are welcome!

Check out the repo's [issue backlog](https://github.com/keiyoushi/extensions-source/issues) for source requests and bug reports.

## License

    Copyright 2015 Javier Tomás

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

## Disclaimer

This project does not have any affiliation with the content providers available.

This project is not affiliated with Mihon/Tachiyomi. Don't ask for help about these extensions at the
official support means of Mihon/Tachiyomi. All credits to the codebase goes to the original contributors.


# Mihon [App](#)

### Full-featured reader
Discover and read manga, webtoons, comics, and more – easier than ever on your Android device.

[![Discord server](https://img.shields.io/discord/1195734228319617024.svg?label=&labelColor=6A7EC2&color=7389D8&logo=discord&logoColor=FFFFFF)](https://discord.gg/mihon)
[![GitHub downloads](https://img.shields.io/github/downloads/mihonapp/mihon/total?label=downloads&labelColor=27303D&color=0D1117&logo=github&logoColor=FFFFFF&style=flat)](https://github.com/mihonapp/mihon/releases)

[![CI](https://img.shields.io/github/actions/workflow/status/mihonapp/mihon/build_push.yml?labelColor=27303D)](https://github.com/mihonapp/mihon/actions/workflows/build_push.yml)
[![License: Apache-2.0](https://img.shields.io/github/license/mihonapp/mihon?labelColor=27303D&color=0877d2)](/LICENSE)
[![Translation status](https://img.shields.io/weblate/progress/mihon?labelColor=27303D&color=946300)](https://hosted.weblate.org/engage/mihon/)

## Download

[![Mihon Stable](https://img.shields.io/github/release/mihonapp/mihon.svg?maxAge=3600&label=Stable&labelColor=06599d&color=043b69)](https://github.com/mihonapp/mihon/releases)
[![Mihon Beta](https://img.shields.io/github/v/release/mihonapp/mihon-preview.svg?maxAge=3600&label=Beta&labelColor=2c2c47&color=1c1c39)](https://github.com/mihonapp/mihon-preview/releases)

*Requires Android 8.0 or higher.*

## Features

* Local reading of content.
* A configurable reader with multiple viewers, reading directions and other settings.
* Tracker support: [MyAnimeList](https://myanimelist.net/), [AniList](https://anilist.co/), [Kitsu](https://kitsu.io/), [MangaUpdates](https://mangaupdates.com), [Shikimori](https://shikimori.one), and [Bangumi](https://bgm.tv/) support.
* Categories to organize your library.
* Light and dark themes.
* Schedule updating your library for new chapters.
* Create backups locally to read offline or to your desired cloud service.
* Plus much more...

## Contributing

[Code of conduct](./CODE_OF_CONDUCT.md) · [Contributing guide](./CONTRIBUTING.md)

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Before reporting a new issue, take a look at the [FAQ](https://mihon.app/docs/faq/general), the [changelog](https://mihon.app/changelogs/) and the already opened [issues](https://github.com/mihonapp/mihon/issues); if you got any questions, join our [Discord server](https://discord.gg/mihon).

### Repositories

[![mihonapp/website - GitHub](https://github-readme-stats.vercel.app/api/pin/?username=mihonapp&repo=website&bg_color=161B22&text_color=c9d1d9&title_color=0877d2&icon_color=0877d2&border_radius=8&hide_border=true)](https://github.com/mihonapp/website/)
[![mihonapp/bitmap.kt - GitHub](https://github-readme-stats.vercel.app/api/pin/?username=mihonapp&repo=bitmap.kt&bg_color=161B22&text_color=c9d1d9&title_color=0877d2&icon_color=0877d2&border_radius=8&hide_border=true)](https://github.com/mihonapp/bitmap.kt/)

### Credits

Thank you to all the people who have contributed!

### Disclaimer

The developer(s) of this application does not have any affiliation with the content providers available, and this application hosts zero content.

### License

Copyright © 2015 Javier Tomás
Copyright © 2024 The Mihon Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


![Logo](doc/logo.png) intellij-emberjs
===============================================================================

This plugin provides basic [Ember.js](http://emberjs.com/) support to all
[JetBrains](https://www.jetbrains.com/) IDEs that support JavaScript.

fork of https://github.com/Turbo87/intellij-emberjs with additional features

Features
-------------------------------------------------------------------------------

![Navigate → Class...](doc/goto-class.png)
Experimental:
- Handlebars references for tags/mustache paths and tag attributes
- Handlebars autocompletion for tags and mustache paths, also from yields and named yields
- resolves {{or x y z}} to the first resolvable option, this makes {{component (or x y)}} work, e.g in power-select
- Handlebars parameter hints for helpers/modifiers and components
- Handlebars renaming for mustache ids and html tags
- Glint Support
- Gts Support
- Find Usage between Js/Ts and Hbs

Basic:
- Ember.js project discovery when imported from existing sources
- Automatically sets the language level to ES6
- Marks `app`, `public` and `tests` folders as source, resource and test folders
- Marks `node_modules` and `bower_components` as library folders
- Enable JSHint using `.jshintrc`
- Quick navigation via `Navigate → Class...` and `Navigate → Related Symbol...`
  for all major app components
- Generate Ember.js files via `ember generate`
- Basic reference resolving and completion for e.g. `DS.belongsTo('user')`
- Live templates
[more...](doc/features.md)

Installation
-------------------------------------------------------------------------------

This plugin is published on the
[JetBrains Plugin Repository](https://plugins.jetbrains.com/plugin/15499-ember-experimental-js):

    Preferences... → Plugins → Browse Repositories ... → Search for "Ember.js"

### From Source

Clone this repository:

    git clone https://github.com/patricklx/intellij-emberjs-experimental.git
    cd intellij-emberjs-experimental

Build a plugin zip file:

    ./gradlew buildPlugin

Install the plugin from `/build/distributions/Ember.js.zip`:

    Preferences... → Plugins → Install plugin from disk ...

Development
-------------------------------------------------------------------------------

Run IntelliJ IDEA Ultimate with the current plugin pre-installed:

    ./gradlew runIdea

Run the test suite:

    ./gradlew test

Links
-------------------------------------------------------------------------------

- [JetBrains/intellij-community](https://github.com/JetBrains/intellij-community) –
  the IntelliJ community edition source code
- [JetBrains/intellij-plugins](https://github.com/JetBrains/intellij-plugins) –
  a collection of officially supported IntelliJ plugins
- [JetBrains/gradle-intellij-plugin](https://github.com/JetBrains/gradle-intellij-plugin) –
  the official [Gradle](http://gradle.org/) plugin for building IntelliJ plugins
- [kristianmandrup/emberjs-plugin](https://github.com/kristianmandrup/emberjs-plugin) –
  the predecessor and inspiration for this plugin

License
-------------------------------------------------------------------------------

This project is licensed under the [Apache 2.0 License](LICENSE).

- [Font-Awesome-SVG-PNG](https://github.com/encharm/Font-Awesome-SVG-PNG) is licensed under the MIT license
- [Font-Awesome](http://fontawesome.io/) is licensed under the [SIL OFL 1.1](http://scripts.sil.org/OFL)


# TestSpark

![Build](https://github.com/JetBrains-Research/TestSpark/workflows/Build/badge.svg)
[![Version](https://img.shields.io/jetbrains/plugin/v/21024-testspark.svg)](https://plugins.jetbrains.com/plugin/21024-testspark)
[![Downloads](https://img.shields.io/jetbrains/plugin/d/21024-testspark.svg)](https://plugins.jetbrains.com/plugin/21024-testspark)

![TestSpark Logo](readme-images/pngs/logo/TestSparkPluginLogo.png#gh-light-mode-only)
![TestSpark White Logo](readme-images/pngs/logo/TestSparkPluginLogo_dark.png#gh-dark-mode-only)

## Table of contents
- [Description](#description)
- [Installation](#installation)
- [Usage](#usage)
- [TestSpark for JetBrains employees](#testspark-for-jetbrains-employees)
- [Contribution](#contribution)
- [Licence](#licence)

## Description

TestSpark is a plugin for generating unit tests. TestSpark natively integrates different AI-based test generation tools and techniques in the IDE.

TestSpark currently supports two test generation strategies:

LLM-based test generation (using OpenAI and JetBrains internal AI Assistant platform)

Local search-based test generation (using EvoSuite)

LLM-based test generation

For this type of test generation, TestSpark sends request to different Large Language Models. Also, it automatically checks if tests are valid before presenting it to users.

This feature needs a token from OpenAI platform or the AI Assistant platform.

Supports Java (any version).

Generates unit tests for capturing failures.

Generate tests for Java classes, methods, and single lines.

Local search-based test generation

For this type of test generation, TestSpark uses EvoSuite, which is the  most powerful search-based local test generator.

Supports up to Java 11.

Generates tests for different test criteria: line coverage, branch coverage, I/O diversity, exception coverage, mutation score.

Generates unit tests for capturing failures.

Generate tests for Java classes, methods, and single lines.

Initially implemented by CISELab at SERG @ TU Delft, TestSpark is currently developed and maintained by ICTL at JetBrains Research.

##  DISCLAIMER
TestSpark is currently designed to serve as an experimental tool.
Please keep in mind that tests generated by TestSpark are meant to augment your existing test suites. They are not meant to replace writing tests manually.

If you are running the plugin for the first time, checkout the [Settings](#settings) section.

## Installation
- Using IDE built-in plugin system:

  Settings/Preferences > Plugins > Marketplace > Search for "TestSpark" >
  Install Plugin

- Manually:

  Download the [latest release](https://github.com/ciselab/TestSpark/releases/latest) and install it manually using
  Settings/Preferences > Plugins > ⚙ > Install plugin from disk...

## Usage

- [Generating Tests](#generating-tests)
- [Working with Test Cases](#working-with-test-cases)
- [Coverage](#coverage)
- [Integrating tests into the project](#integrating-tests-into-the-project)
- [Settings](#settings)
- [Telemetry](#telemetry-opt-in)

### Generating Tests
To initiate the generation process, right-click on the part of the code for which tests need to be generated and select `TestSpark`.

![TestSpark option](readme-images/pngs/generating-tests/TestSparkOption.png#gh-light-mode-only)
![TestSpark option dark](readme-images/pngs/generating-tests/TestSparkOption_dark.png#gh-dark-mode-only)

#### Main Page
After that, a window will open where users need to configure generation settings.

![Main page](readme-images/pngs/generating-tests/MainPage.png#gh-light-mode-only)
![Main page dark](readme-images/pngs/generating-tests/MainPage_dark.png#gh-dark-mode-only)

Firstly users need to select the test generator (LLM-based test generator or `EvoSuite`, which is a Local search-based test generator).

![Test generator](readme-images/pngs/generating-tests/TestGenerator.png#gh-light-mode-only)
![Test generator dark](readme-images/pngs/generating-tests/TestGenerator_dark.png#gh-dark-mode-only)

Also, in this window, it is necessary to select the part of the code for which tests need to be generated. The selection consists of no more than three items -- `class/interface`, `method/constructor` (if applicable), `line` (if applicable).

![Part of the code](readme-images/pngs/generating-tests/PartOfTheCode.png#gh-light-mode-only)
![Part of the code dark](readme-images/pngs/generating-tests/PartOfTheCode_dark.png#gh-dark-mode-only)

After clicking the `Next` button, the plugin provides the opportunity to configure the basic parameters of the selected generator. Advanced parameter settings can be done in Settings. All settings, both in `Settings` and in this window, are saved, so you can [disable the ability](#llm-settings) to configure generators before each generation process to perform this process more quickly.

#### LLM Setup Page
In the case of LLM, two additional pages are provided for basic settings.\
In the first page, users configure `LLM Platform`, `LLM Token`, `LLM Model`, `LLM JUnit version`, and `Prompt Selection`. More detailed descriptions of each item can be found in `Settings`.

![LLM setup page](readme-images/pngs/generating-tests/LLMSetupPage.png#gh-light-mode-only)
![LLM setup page dark](readme-images/pngs/generating-tests/LLMSetupPage_dark.png#gh-dark-mode-only)

#### LLM Samples Page
After that, in the next page, you can provide some test samples for LLM.\
Tests can be entered manually.

![Manually samples](readme-images/pngs/generating-tests/ManuallySamples.png#gh-light-mode-only)
![Manually samples](readme-images/pngs/generating-tests/ManuallySamples_dark.png#gh-dark-mode-only)

Also, tests can be chosen tests from the current project.

![Chosen samples](readme-images/pngs/generating-tests/ChosenSamples.png#gh-light-mode-only)
![Chosen samples dark](readme-images/pngs/generating-tests/ChosenSamples_dark.png#gh-dark-mode-only)

Test Cases can be modified, reset to their initial state, and deleted.

![Interaction with samples](readme-images/pngs/generating-tests/InteractionWithSamples.png#gh-light-mode-only)
![Interaction with samples dark](readme-images/pngs/generating-tests/InteractionWithSamples_dark.png#gh-dark-mode-only)

#### EvoSuite Setup Page
For `EvoSuite`, you need to enter the local path to Java 11 and select the generation algorithm, after which the generation process will start.

![EvoSuite page](readme-images/pngs/generating-tests/EvoSuitePage.png#gh-light-mode-only)
![EvoSuite page dark](readme-images/pngs/generating-tests/EvoSuitePage_dark.png#gh-dark-mode-only)

#### Generation Process
After configuring the test generators, click the `OK` button, after which the generation process will start, and a list of generated test cases will appear on the right side of the IDE.

![Generated tests](readme-images/pngs/generating-tests/GeneratedTests.png#gh-light-mode-only)
![Generated tests dark](readme-images/pngs/generating-tests/GeneratedTests_dark.png#gh-dark-mode-only)

During the test generation, users can observe the current state of the generation process.

![Generation state](readme-images/pngs/generating-tests/GenerationState.png#gh-light-mode-only)
![Generation state dark](readme-images/pngs/generating-tests/GenerationState_dark.png#gh-dark-mode-only)

### Working with Test Cases
After receiving the results, the user can interact with the test cases in various ways. They can view the result (whether it's passed or failed), also select, delete, modify, reset, like/dislike, fix by LLM and execute the tests to update the results.\
Hitting the "Apply to test suite" button will add the selected tests to a test class of your choice.\
Additionally, the top row of the tool window has buttons for selecting all tests, deselecting all tests, running all tests and removing them. The user also has an overview of how many tests they currently have selected and passed.

![Quick buttons](readme-images/pngs/working-with-test-cases/QuickButtons.png#gh-light-mode-only)
![Quick buttons dark](readme-images/pngs/working-with-test-cases/QuickButtons_dark.png#gh-dark-mode-only)

#### Select Test
Users can select test cases.

![Select test case](readme-images/gifs/SelectTestCase.gif#gh-light-mode-only)
![Select test case dark](readme-images/gifs/SelectTestCase_dark.gif#gh-dark-mode-only)

#### Remove Test
Users can remove test cases.

![Remove test case](readme-images/gifs/DeleteTestCase.gif#gh-light-mode-only)
![Remove test case dark](readme-images/gifs/DeleteTestCase_dark.gif#gh-dark-mode-only)

#### Modify Test
Users can modify the code of test cases.

![Modify test case](readme-images/gifs/ModifyTestCase.gif#gh-light-mode-only)
![Modify test case dark](readme-images/gifs/ModifyTestCase_dark.gif#gh-dark-mode-only)

#### Reset Test
Users can reset the code to its original.

![Reset test case](readme-images/gifs/ResetTestCase.gif#gh-light-mode-only)
![Reset test case dark](readme-images/gifs/ResetTestCase_dark.gif#gh-dark-mode-only)

#### Reset to Last Run
Users can reset the code to the last run.

![Reset to last run](readme-images/gifs/ResetToLastRunTestCase.gif#gh-light-mode-only)
![Reset to last run dark](readme-images/gifs/ResetToLastRunTestCase_dark.gif#gh-dark-mode-only)

#### Run Test
Users can run the test to update the execution result.\
Effortlessly identify passed and failed test cases with green and red color highlights for instant result comprehension is available. In case of failure, it is possible to find out the current error.

![Run test](readme-images/gifs/RunTestCase.gif#gh-light-mode-only)
![Run test dark](readme-images/gifs/RunTestCase_dark.gif#gh-dark-mode-only)

#### Copy Test
Users can copy the test.

![Copy test](readme-images/gifs/CopyTestCase.gif#gh-light-mode-only)
![Copy test dark](readme-images/gifs/CopyTestCase_dark.gif#gh-dark-mode-only)

#### Like/Dislike Test
Users can like/dislike the test for future analysis and improvement of the generation process.

![Like test](readme-images/gifs/LikeTestCase.gif#gh-light-mode-only)
![Like test dark](readme-images/gifs/LikeTestCase_dark.gif#gh-dark-mode-only)

#### Send a Request to LLM
Users can send a request to LLM with modification which users prefer for the test case.
Users can choose a default query, the list of which is set up in the `Settings`.

![Send a template request to LLM](readme-images/gifs/SendTemplateRequest.gif#gh-light-mode-only)
![Send a template request to LLM dark](readme-images/gifs/SendTemplateRequest_dark.gif#gh-dark-mode-only)

Users can also manually punch in a new request.

![Send a request to LLM](readme-images/gifs/SendRequest.gif#gh-light-mode-only)
![Send a request to LLM dark](readme-images/gifs/SendRequest_dark.gif#gh-dark-mode-only)

### Coverage
#### Coverage Table
Once a test suite is generated, basic statistics about it can be seen in the tool window, `coverage` tab. The statistics include line coverage, branch coverage, weak mutation coverage. The table adjusts dynamically - it only calculates the statistics for the selected tests in the test suite.

![Progress bar](readme-images/pngs/coverage/CoverageTable.png#gh-light-mode-only)
![Progress bar dark](readme-images/pngs/coverage/CoverageTable_dark.png#gh-dark-mode-only)

#### Coverage Visualisation
Once test are generated, the lines which are covered by the tests will be highlighted (default color: green). The gutter next to the lines will have a green rectangle as well. If the rectangle is clicked, a popup will show the names of the tests which cover the selected line. If any of the test names are clicked, the corresponding test in the toolwindow will be highlighted with the same accent color. The effect lasts 10 seconds. Coverage visualisation adjusts dynamically - it only shows results for the tests that are selected in the TestSpark tab.

![Test highlight](readme-images/gifs/TestHighlight.gif#gh-light-mode-only)
![Test highlight dark](readme-images/gifs/TestHighlight_dark.gif#gh-dark-mode-only)

### Integrating Tests into the Project
The tests can be added to an existing file:

![Tests adding to an exiting file](readme-images/gifs/AddingToAnExistingFile.gif#gh-light-mode-only)
![Tests adding to an exiting file dark](readme-images/gifs/AddingToAnExistingFile_dark.gif#gh-dark-mode-only)

Or to a new file:

![Tests adding to a new file](readme-images/gifs/AddingToANewFile.gif#gh-light-mode-only)
![Tests adding to a new file_dark](readme-images/gifs/AddingToANewFile_dark.gif#gh-dark-mode-only)

### Settings

The plugin is configured mainly through the Settings menu. The plugin settings can be found under Settings > Tools > TestSpark. Here, the user is able to select options for the plugin:

![Plugin settings](readme-images/pngs/common-settings/PluginSettings.png#gh-light-mode-only)
![Plugin settings dark](readme-images/pngs/common-settings/PluginSettings_dark.png#gh-dark-mode-only)

#### First time configuration
Before running the plugin for the first time, we highly recommend going to the `Environment settings` section of TestSpark settings. The settings include compilation path (path to compiled code) and compilation command. Both commands have defaults. However, we recommend especially that you check compilation command. For this command the user requires maven, gradle or any other builder program which can be accessed via command. Leaving this field with a faulty value may cause unintended behaviour.

![Setup](readme-images/pngs/common-settings/Setup.png#gh-light-mode-only)
![Setup dark](readme-images/pngs/common-settings/Setup_dark.png#gh-dark-mode-only)

#### Accessibility Features
The plugin supports changing the color for [coverage visualisation](#coverage-visualisation-1) and [killed mutants visualisation](#killed-mutants-visualisation-1) (one setting for both). To change the color, go to Settings > Tools > TestSpark and use the color picker under `Accessibility settings`:

![Color picker](readme-images/pngs/common-settings/ColorPicker.png#gh-light-mode-only)
![Color picker dark](readme-images/pngs/common-settings/ColorPicker_dark.png#gh-dark-mode-only)

The plugin has been designed with translation in mind. The vast majority of the plugins labels, tooltips, messages, etc. is stored in .property files. For more information on translation, refer to the contributing readme.

#### EvoSuite Settings

The settings submenu Settings > Tools > TestSpark > EvoSuite allows the user to tweak EvoSuite parameters to their liking.\
At the moment EvoSuite can be executed only with Java 11, so if the user has a more modern version by default, it is necessary to download Java 11 and set the path to the java file.

![Java setup](readme-images/pngs/evosuite-settings/JavaSetup.png#gh-light-mode-only)
![Java setup dark](readme-images/pngs/evosuite-settings/JavaSetup_dark.png#gh-dark-mode-only)

To accelerate the test generation process, users can disable the display of the `EvoSuite Setup Page`.

![EvoSuite setup page](readme-images/pngs/evosuite-settings/EvoSuiteSetupPage.png#gh-light-mode-only)
![EvoSuite setup page dark](readme-images/pngs/evosuite-settings/EvoSuiteSetupPage_dark.png#gh-dark-mode-only)

`EvoSuite` has hundreds of parameters, not all can be packed in a settings menu. However, the most commonly used and rational settings were added here:

![EvoSuite settings](readme-images/pngs/evosuite-settings/EvoSuiteSettings.png#gh-light-mode-only)
![EvoSuite settings dark](readme-images/pngs/evosuite-settings/EvoSuiteSettings_dark.png#gh-dark-mode-only)

#### LLM Settings
The settings submenu Settings > Tools > TestSpark > LLM allows the user to tweak LLM parameters to their liking.

![LLM settings](readme-images/pngs/llm-settings/LLMSettings.png#gh-light-mode-only)
![LLM settings dark](readme-images/pngs/llm-settings/LLMSettings_dark.png#gh-dark-mode-only)

Selecting a platform to interact with the LLM. By default, only OpenAI is available, but for JetBrains employees there is an option to interact via Graize. More details in the [TestSpark for JetBrains employees](#testspark-for-jetbrains-employees) section.

![LLM platform](readme-images/pngs/llm-settings/LLMPlatform.png#gh-light-mode-only)
![LLM platform dark](readme-images/pngs/llm-settings/LLMPlatform_dark.png#gh-dark-mode-only)

Users have to set their own token for LLM, the plugin does not provide a default option.

![LLM token](readme-images/pngs/llm-settings/LLMToken.png#gh-light-mode-only)
![LLM token dark](readme-images/pngs/llm-settings/LLMToken_dark.png#gh-dark-mode-only)

Once the correct token is entered, it will be possible to select an LLM model for test generation.

![LLM model](readme-images/pngs/llm-settings/LLMModel.png#gh-light-mode-only)
![LLM model dark](readme-images/pngs/llm-settings/LLMModel_dark.png#gh-dark-mode-only)

In addition to the token, users are recommended to configure settings for the LLM process.

![LLM parameters](readme-images/pngs/llm-settings/LLMParameters.png#gh-light-mode-only)
![LLM parameters dark](readme-images/pngs/llm-settings/LLMParameters_dark.png#gh-dark-mode-only)

To expedite the test generation process, users can disable the display of the `LLM Setup Page`.

![LLM setup page](readme-images/pngs/llm-settings/LLMSetupPage.png#gh-light-mode-only)
![LLM setup page dark](readme-images/pngs/llm-settings/LLMSetupPage_dark.png#gh-dark-mode-only)

Additionally, they can also disable the display of the `LLM Samples Page`.

![LLM test samples page](readme-images/pngs/llm-settings/LLMTestSamplesPage_dark.png#gh-light-mode-only)
![[LLM test samples page dark](readme-images/pngs/llm-settings/LLMTestSamplesPage_dark.png#gh-dark-mode-only)

Users can customize the list of default requests to the LLM in test cases.

![LLM default requests](readme-images/pngs/llm-settings/LLMDefaultRequests.png#gh-light-mode-only)
![LLM default requests dark](readme-images/pngs/llm-settings/LLMDefaultRequests_dark.png#gh-dark-mode-only)

The plugin uses JUnit to generate tests. It is possible to select the JUnit version and prioritize the versions used by the current project.

![LLM JUnit version](readme-images/pngs/llm-settings/LLMJUnitVersion.png#gh-light-mode-only)
![LLM JUnit version dark](readme-images/pngs/llm-settings/LLMJUnitVersion_dark.png#gh-dark-mode-only)

Users have the opportunity to adjust the prompt that is sent to the LLM platform.

To create a request to the LLM, it is necessary to provide a prompt which contains information about the details of the generation. The most necessary data are located in the mandatory section, without them the prompt is not valid.\
Users can modify, create new templates, delete and use different variants in practice.

![LLM prompt](readme-images/pngs/llm-settings/LLMPrompt.png#gh-light-mode-only)
![LLM prompt dark](readme-images/pngs/llm-settings/LLMPrompt_dark.png#gh-dark-mode-only)

:exclamation: Pro tip: don't forget to hit the "save" button at the bottom. :exclamation:

### Telemetry (opt-in)
One of the biggest future plans of our client is to leverage the data that is gathered by TestSpark’s telemetry. This will help them with future research, including the development of an interactive way of using EvoSuite. The general idea behind this feature is to learn from the stored user corrections in order to improve test generation.\
To opt into telemetry, go to Settings > Tools > TestSpark and tick the `Enable telemetry` checkbox. If you want, change the directory where telemetry is stored.

![Telemetry](readme-images/pngs/common-settings/Telemetry.png#gh-light-mode-only)
![Telemetry dark](readme-images/pngs/common-settings/Telemetry_dark.png#gh-dark-mode-only)

## TestSpark for JetBrains employees
JetBrains employees have the ability to send queries to OpenAI models through the [Grazie platform](https://try.ai.intellij.net/chat).

### Using Grazie platform
#### Pass Space username and token as properties

1) To include test generation using Grazie in the build process, you need to pass Space username and token as properties:\
   `gradle buildPlugin -Dspace.username=<USERNAME> -Dspace.pass=<TOKEN>`.

2) To include test generation using Grazie in the runIdeForUiTests process, you need to pass Space username and token as properties:\
   `gradle runIdeForUiTests -Dspace.username=<USERNAME> -Dspace.pass=<TOKEN>`.

3) `<TOKEN>` is generated by [Space](https://jetbrains.team/), which has access to `Automatically generating unit tests` maven packages.

#### Using `gradle.properties`

Store Space username and token in `~/.gradle/gradle.properties`
```
...
spaceUsername=<USERNAME>
spacePassword=<TOKEN>
...
```

### LLM Settings with Grazie
LLM Settings with Grazie platform option:

![LLM grazie settings](readme-images/pngs/llm-settings/LLMGrazieSettings.png#gh-light-mode-only)
![LLM grazie settings dark](readme-images/pngs/llm-settings/LLMGrazieSettings_dark.png#gh-dark-mode-only)

## Contribution

The plugin is Open-Source and  publicly hosted on github. Anyone can look into the code and suggest changes. You can find the plugin page [here](https://github.com/JetBrains-Research/TestSpark).\
In addition, learn more about the structure of the plugin [here](https://github.com/JetBrains-Research/TestSpark/blob/development/CONTRIBUTING.md).

## Licence

---
Plugin based on the [IntelliJ Platform Plugin Template][template].

[template]: https://github.com/JetBrains/intellij-platform-plugin-template


[![official JetBrains project](https://jb.gg/badges/official.svg)][jb:github]
[![Gradle Plugin Portal](https://img.shields.io/gradle-plugin-portal/v/org.jetbrains.intellij?color=green&label=Gradle%20Plugin%20Portal&logo=gradle)][gradle-plugin-page]
[![Build Status](https://github.com/JetBrains/intellij-platform-gradle-plugin/workflows/Build/badge.svg)][gh:build]
[![TeamCity Build Status](https://teamcity.jetbrains.com/app/rest/builds/buildType:(id:OpenSourceProjects_GradleIntellijPlugin_UnitTests),branch:%3Cdefault%3E/statusIcon)][tc:build]
[![X Follow](https://img.shields.io/badge/follow-%40JBPlatform-1DA1F2?logo=x)][jb:x]
[![Slack](https://img.shields.io/badge/Slack-%23gradle--intellij--plugin-blue?style=flat-square&logo=Slack)][jb:slack]

![IntelliJ Platform Gradle Plugin](.github/readme/intellij-platform-gradle-plugin-dark.svg#gh-dark-mode-only)
![IntelliJ Platform Gradle Plugin](.github/readme/intellij-platform-gradle-plugin-light.svg#gh-light-mode-only)

The IntelliJ Platform Gradle Plugin is a plugin for the Gradle build system to help configure your environment for building, testing, verifying, and publishing plugins for IntelliJ-based IDEs.

## Documentation
The documentation of the IntelliJ Platform Gradle Plugin has moved to the IntelliJ Platform Plugin SDK Documentation:
https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin.html

### Installation
To install the IntelliJ Platform Gradle Plugin in your project, follow the [Usage](https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin.html#usage) section of the plugin documentation.
There's also a [Snapshot Release](https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin.html#snapshot-release) available built nightly from the main branch containing the always-latest version of the plugin.

## Changelog
All releases are available in the [Releases](https://github.com/JetBrains/intellij-platform-gradle-plugin/releases) section.
The latest available version is:

[![Gradle Plugin Portal](https://img.shields.io/gradle-plugin-portal/v/org.jetbrains.intellij?color=green&label=Gradle%20Plugin%20Portal&logo=gradle)](https://plugins.gradle.org/plugin/org.jetbrains.intellij)

## Contributing
Please see [CONTRIBUTING](./CONTRIBUTING.md) on how to submit feedback and contribute to this project.

## License
Licensed under the Apache License, Version 2.0 (the "License"), see [LICENCE](./LICENSE).

[gh:build]: https://github.com/JetBrains/intellij-platform-gradle-plugin/actions/workflows/build.yml
[jb:github]: https://github.com/JetBrains#jetbrains-open-source
[jb:slack]: https://plugins.jetbrains.com/slack
[jb:x]: https://twitter.com/JBPlatform
[tc:build]: https://teamcity.jetbrains.com/project/OpenSourceProjects_GradleIntellijPlugin?mode=builds
[gradle-plugin-page]: https://plugins.gradle.org/plugin/org.jetbrains.intellij


# <img alt="Smithy" src="https://github.com/smithy-lang/smithy/blob/main/docs/_static/favicon.png?raw=true" width="28"> Smithy Kotlin

[Smithy](https://smithy.io/2.0/index.html) code generators for [Kotlin](https://kotlinlang.org/).

## Getting Started
- Get an [introduction to Smithy](https://smithy.io/2.0/index.html)
- Follow [Smithy's quickstart guide](https://smithy.io/2.0/quickstart.html)
- Apply the Smithy Gradle plugin to your project and start generating Kotlin code!

## Development

### Module Structure

* `codegen` - module(s) for generating Kotlin code from Smithy models
    * `protocol-tests` - module for generating Smithy protocol tests
    * `smithy-aws-kotlin-codegen` - module containing AWS-specific codegen, will eventually be refactored to `aws-sdk-kotlin`
    * `smithy-kotlin-codegen` - primary codegen module
    * `smithy-kotlin-codegen-testutils` - utilities for testing generated code (shared with `aws-sdk-kotlin`)

* `runtime` - library code used by generated clients and servers to perform SDK functions
  * `auth` - authentication and signing related modules
  * `crt-util` - utilities for using the AWS Common Runtime (CRT)
  * `observability` - contains various telemetry provider implementations
  * `protocol` - protocol support (including HTTP, application level protocols, test support, etc)
  * `runtime-core` - contains core functionality used by all clients, servers, or other runtime modules
  * `serde` - serialization/deserialization modules
  * `smithy-client` - runtime support for generated service clients
  * `smithy-test` - runtime support for generated tests (e.g. smithy protocol tests)
  * `testing` - internal testing utilities for the runtime

* `tests` - test and benchmark module(s)
    * `benchmarks` - benchmarks for runtime
    * `codegen` - codegen integration tests for various features (e.g. testing waiters, paginators, etc)
    * `compile` - compile tests for generated code
    * `integration` - tests for different versions of our dependencies to ensure compatibility

## Feedback

You can provide feedback or report a bug by submitting an [issue](https://github.com/smithy-lang/smithy-kotlin/issues/new/choose).
This is the preferred mechanism to give feedback so that other users can engage in the conversation, +1 issues, etc.

## Contributing

If you are interested in contributing to Smithy Kotlin, please take a look at [CONTRIBUTING](CONTRIBUTING.md).

## License

This project is licensed under the Apache-2.0 License.

## Security

See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information.


| Releases | Preview | PR builds | Discussions |
|----------|---------|-----------|-------------|
| [![GitHub downloads](https://img.shields.io/github/downloads/komikku-app/komikku/total?label=Downloads&labelColor=27303D&color=0D1117&logo=github&logoColor=FFFFFF&style=flat)](https://github.com/komikku-app/komikku/releases) [![Stable](https://img.shields.io/github/release/komikku-app/komikku.svg?maxAge=3600&label=Stable&labelColor=06599d&color=043b69)](https://github.com/komikku-app/komikku/releases/latest) [![Build](https://img.shields.io/github/actions/workflow/status/komikku-app/komikku/build_release.yml?labelColor=27303D)](https://github.com/komikku-app/komikku/actions/workflows/build_push.yml) | [![GitHub downloads](https://img.shields.io/github/downloads/komikku-app/komikku-preview/total?label=Downloads&labelColor=27303D&color=0D1117&logo=github&logoColor=FFFFFF&style=flat)](https://github.com/komikku-app/komikku-preview/releases) [![Beta](https://img.shields.io/github/v/release/komikku-app/komikku-preview.svg?maxAge=3600&label=Beta&labelColor=2c2c47&color=1c1c39)](https://github.com/komikku-app/komikku-preview/releases/latest) [![Beta build](https://img.shields.io/github/actions/workflow/status/komikku-app/komikku-preview/build_app.yml?labelColor=27303D)](https://github.com/komikku-app/komikku-preview/actions/workflows/build_app.yml) | [![CI](https://img.shields.io/github/actions/workflow/status/komikku-app/komikku/build_check.yml?labelColor=27303D)](https://github.com/komikku-app/komikku/actions/workflows/build_check.yml) | [![Discord](https://img.shields.io/discord/1242381704459452488?label=discord&labelColor=7289da&color=2c2f33&style=flat)](https://discord.gg/85jB7V5AJR) |

# ![app icon](./.github/readme-images/app-icon.png) Komikku
Mihon/Tachiyomi is a free and open source manga reader for Android 8.0 and above. This version of Mihon/Tachiyomi, Komikku was based off TachiyomiSY. This version is meant to push forward in the ways of usability and features. TachiyomiSY tries to push forward where it can, but staying in a place where it can easily grab updates and features from the main app, it tries to make new features, or take features from other forks like SY, J2K and Neko.

![screenshots of app](./.github/readme-images/screens.png)

## Features

Features of Komikku include:
- [x] Built-in & official extensions repository
- [x] Show list of related titles (must enable in Settings/Browse) for all sources.
- [x] Bulk selection to add to library & change categories of multiple entries all at once, everywhere.
It can detect duplication being added and give option to allow/skip one by one or allow/skip all duplication.
Also allow long-click to add/remove single entry to/from library, everywhere.
- [x] Feed now supports all extensions
- [x] More Feed items (20 for now)
- [x] Search for sources in Browse screen when too many sources installed
- [x] Quick NSFW sources filter in both Extensions/Browse screen
- [x] Show which source is NSFW in Browse tab
- [x] Settings button to jump to source's package settings page (to uninstall unwanted sources)
- [ ] Show photo’s size so you can compare which source has better quality
- [ ] Support other sources just like E-Hentai: Lucious...
- [ ] History of searched query

Features of Mihon/Tachiyomi(original) include:
* Online reading from a variety of sources
* Local reading of downloaded content
* A configurable reader with multiple viewers, reading directions and other settings.
* Tracker support: [MyAnimeList](https://myanimelist.net/), [AniList](https://anilist.co/), [Kitsu](https://kitsu.io/), [MangaUpdates](https://mangaupdates.com), [Shikimori](https://shikimori.one), and [Bangumi](https://bgm.tv/) support
* Categories to organize your library
* Light and dark themes
* Schedule updating your library for new chapters
* Create backups locally to read offline or to your desired cloud service

Features of TachiyomiSY include:
* Latest tab, store up to 5 sources where you can easily view the latest manga by viewing the tab
* Automatic webtoon detection, allowing the reader to switch to webtoon mode automatically when viewing one
* Manga recommendations, uses MAL and Anilist, as well as Neko Similar Manga for Mangadex manga(Thanks to Az, She11Shocked, Carlos, and Goldbattle)
* Lewd filter, hide the lewd manga in your library when you want to
* Tracking filter, filter your tracked manga so you can see them or see non-tracked manga, made by She11Shocked
* Search tracking status in library, made by She11Shocked
* Custom categories for sources, liked the pinned sources, but you can make your own versions and put any sources in them
* Manga info edit
* Manga Cover view + share and save
* Dynamic Categories, view the library in multiple ways
* Smart background for reading modes like LTR or Vertical, changes the background based on the page color
* Force disable webtoon zoom
* Continue reading button in library
* Hentai features enable/disable, in advanced settings
* Quick clean titles
* Source migration, migrate all your manga from one source to another
* Saving searches
* Autoscroll
* Page preload customization
* Customize image cache size
* Batch import of custom sources and featured extensions
* Advanced source settings page, searching, enable/disable all
* Click tag for local search, long click tag for global search
* Merge multiple of the same manga from different sources
* Drag and drop library sorting
* Library search engine, includes exclude, quotes as absolute, and a bunch of other ways to search
* New E-Hentai/ExHentai features, such as language settings and watched list settings
* Enhanced views for internal and integrated sources
* Enhanced usability for internal and delegated sources

Custom sources:
* E-Hentai/ExHentai

Additional features for some extensions, features include custom description, opening in app, batch add to library, and a bunch of other things based on the source:
* 8Muses (EroMuse)
* HBrowse
* Mangadex
* NHentai
* Puruin
* Tsumino

## Download
Get the app from our [releases page](https://github.com/komikku-app/komikku/releases/latest).

If you want to try new features before they get to the stable release, you can download the preview version [here](https://github.com/komikku-app/komikku-preview/releases/latest).

## Issues, Feature Requests and Contributing

Please make sure to read the full guidelines. Your issue may be closed without warning if you do not.

Issues

1. **Before reporting a new issue, take a look at the [FAQ](https://tachiyomi.org/docs/faq/general), the [changelog](https://github.com/komikku-app/komikku/releases) and the already opened [issues](https://github.com/komikku-app/komikku/issues).**
2. If you are unsure, ask here: [![Discord](https://img.shields.io/discord/1242381704459452488)](https://discord.gg/85jB7V5AJR)

Bugs

* Include version (More → About → Version)
 * If not latest, try updating, it may have already been solved
 * Preview version is equal to the number of commits as seen on the main page
* Include steps to reproduce (if not obvious from description)
* Include screenshot (if needed)
* If it could be device-dependent, try reproducing on another device (if possible)
* Don't group unrelated requests into one issue

Use the [issue forms](https://github.com/komikku-app/komikku/issues/new/choose) to submit a bug.

Feature Requests

* Write a detailed issue, explaining what it should do or how. Avoid writing just "like X app does"
* Include screenshot (if needed)

Source requests are not accepted.

Contributing

See [CONTRIBUTING.md](./CONTRIBUTING.md).

Code of Conduct

See [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).

## FAQ

[See our website.](https://komikku-app.github.io/)
You can also reach out to us on [Discord](https://discord.gg/85jB7V5AJR).

## License

    Copyright 2015 Javier Tomás

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

## Disclaimer

The developer of this application does not have any affiliation with the content providers available.


| Build | Up to date | Support Server |
|-------|------------|----------------|
| [![Build](https://img.shields.io/github/actions/workflow/status/komikku-app/komikku-extensions/build_push_komikku.yml?labelColor=27303D)](https://github.com/komikku-app/komikku-extensions/actions/workflows/build_push_komikku.yml) | [![Updated](https://img.shields.io/github/actions/workflow/status/komikku-app/komikku-extensions/auto_cherry_pick.yml?label=Updated&labelColor=27303D)](https://github.com/komikku-app/komikku-extensions/actions/workflows/auto_cherry_pick.yml) | [![Discord](https://img.shields.io/discord/1242381704459452488?label=discord&labelColor=7289da&color=2c2f33&style=flat)](https://discord.gg/85jB7V5AJR) |

# Komikku / Mihon / Tachiyomi Extensions
This repository contains the available extension catalogues is built-in with [Komikku](https://github.com/komikku-app/komikku) app while also usable for the Mihon / Tachiyomi app.

This repository automatically merges any updates from [Keiyoushi](https://github.com/keiyoushi/extensions) every 8 hours to have the best of community contributions. Beside from that, it has a few of my developed extensions or some improvements. Enjoy!

Some extensions from this repo provide better support for Komikku's feature showing related titles.

# Recommend App

### [Komikku](https://github.com/komikku-app/komikku) based mostly on TachiyomiSY, features of Komikku include:
- [x] Built-in & official extensions repository
- [x] Show list of related titles (must enable in Settings/Browse) for all sources.
- [x] Bulk selection to add to library & change categories of multiple entries all at once, everywhere.
It can detect duplication being added and give option to allow/skip one by one or allow/skip all duplication.
Also allow long-click to add/remove single entry to/from library, everywhere.
- [x] Feed now supports all extensions
- [x] More Feed items (20 for now)
- [x] Search for sources in Browse screen when too many sources installed
- [x] Quick NSFW sources filter in both Extensions/Browse screen
- [x] Show which source is NSFW in Browse tab
- [x] Settings button to jump to source's package settings page (to uninstall unwanted sources)

### [TachiyomiSY](https://github.com/jobobby04/TachiyomiSY) got all the original Tachiyomi app and more:
* TachiyomiSY will continue! It will basing the fork on a new Tachiyomi spiritual successor called Mihon.
* Cool migrate feature allow to migrate multiple mangas at once, very convenient if source's package changes or dropped.

### [Mihon](https://github.com/mihonapp/mihon) is said to be Tachiyomi's spiritual successor

### [Tachiyomi](https://github.com/tachiyomiorg/TachiyomiSY) the original

# How to add the repo
This repo include all previously existed source from Tachiyomi before the removal.

## One-click installation
One-click installation is only supported by these Tachiyomi versions:
* Komikku
* Tachiyomi v0.15.2+
* Tachiyomi Preview r6404+
* TachiyomiSY v1.10.0+
* TachiyomiSY Preview r539+
* Aniyomi Preview r7443+

Navigate to [the website](https://komikku-app.github.io/) and tap "Add to Tachiyomi", then restart the app.

## TachiyomiAZ
1. Go to Settings → Browse
2. Tap on "Edit repos" and then "+" button at bottom
3. Input keiyoushi/extensions
4. Enjoy!

## Manually
External repositories add additional sources to **Tachiyomi**. You can add external repositories by going to **More** -> **Settings** -> **Browse** and tapping **Extension repos**.

Once there, you can add repositories by inputting this URL: `https://raw.githubusercontent.com/komikku-app/extensions/repo/index.min.json`

Once you've added a repository, go to Browse -> Extensions and refresh the extensions list.

You can now tap the download button next to extensions to install them.

> You may need to [enable third-party installations](https://tachiyomi.org/docs/faq/browse/extensions#enabling-third-party-installations).

## Others
If you're not using any of the above fork then manually download and update extensions from the [listing page](https://komikku-app.github.io/extensions/extensions/)

# Usage

[Getting started](https://komikku-app.github.io/docs/guides/getting-started#adding-the-extension-repo)

Extension sources can be downloaded, installed, and uninstalled via the main Tachiyomi app. They are installed and uninstalled like regular apps, in `.apk` format.

## Downloads

If you prefer to directly download the APK files, they are available via https://tachiyomi.org/extensions/ or directly in this GitHub repository in the [`repo` branch](https://github.com/komikku-app/komikku-extensions/tree/repo/apk).

# Requests

To request a new source or bug fix, [create an issue](https://github.com/komikku-app/komikku-extensions/issues/new/choose).

Please note that creating an issue does not mean that the source will be added or fixed in a timely
fashion, because the work is volunteer-based. Some sources may also be impossible to do or prohibitively
difficult to maintain.

If you would like to see a request fulfilled and have the necessary skills to do so, consider contributing!
Issues are up-for-grabs for any developer if there is no assigned user already.

# Contributing

Contributions are welcome!

Check out the repo's [issue backlog](https://github.com/komikku-app/komikku-extensions/issues) for source requests and bug reports.

To get started with development, see [CONTRIBUTING.md](./CONTRIBUTING.md).

It might also be good to read our [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).

## License

    Copyright 2015 Javier Tomás

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

## Disclaimer

This project does not have any affiliation with the content providers available.

This project is not affiliated with Mihon/Tachiyomi. Don't ask for help about these extensions at the
official support means of Mihon/Tachiyomi. All credits to the codebase goes to the original contributors.

The developer of this application does not have any affiliation with the content providers available.