<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>GitHub Kotlin Weekly Trending</title>
    <description>Weekly Trending of Kotlin in GitHub</description>
    <pubDate>Sun, 07 Jun 2026 01:55:16 GMT</pubDate>
    <link>http://mshibanami.github.io/GitHubTrendingRSS</link>
    
    <item>
      <title>HapeLee/legado-with-MD3</title>
      <link>https://github.com/HapeLee/legado-with-MD3</link>
      <description>&lt;p&gt;使用 Material Design 3 全新设计的阅读 3.0&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Legado with MD3&lt;/h1&gt; 
&lt;p align=&quot;left&quot;&gt; &lt;a href=&quot;https://github.com/HapeLee/legado-with-MD3&quot;&gt;简体中文&lt;/a&gt; ｜ &lt;a href=&quot;https://github.com/HapeLee/legado-with-MD3/raw/main/English.md&quot;&gt;English&lt;/a&gt; &lt;/p&gt; 
&lt;h2&gt;📖 介绍&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Legado with MD3&lt;/strong&gt; 是基于开源项目 &lt;a href=&quot;https://github.com/gedoor/legado&quot;&gt;阅读 (Legado)&lt;/a&gt; 开发的 Material Design 3 风格重构版本。&lt;/p&gt; 
&lt;p&gt;本项目在对 UI 进行重绘的基础上，加入了多项分支独有功能，并正在逐步从传统 View 迁移至 Jetpack Compose 框架，目标是提供更加现代、流畅且一致的阅读体验。&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-caution&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-stop mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Caution&lt;/p&gt;
 &lt;p&gt;&lt;strong&gt;注意事项：&lt;/strong&gt; 由于使用 Monet 引擎重构了主题系统，官方版本的主题在此版本中不再可用。&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Android 12 以下设备：&lt;/strong&gt; 暂时无法使用自定义主题与动态取色功能。此限制将在 Jetpack Compose 迁移完成后得到解决（由于开发者精力有限，迁移过程将持续较长时间）。&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;✨ 分支特性&lt;/h2&gt; 
&lt;p&gt;相比于官方版本，本项目具有以下独有特性：&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;全新主题：&lt;/strong&gt; 全新 Material Design 3 设计界面，支持 &lt;strong&gt;预测性返回手势&lt;/strong&gt; 与 &lt;strong&gt;共享元素动画&lt;/strong&gt;。&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;阅读界面：&lt;/strong&gt; 更加个性化的阅读界面与菜单配置。&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;阅读记录：&lt;/strong&gt; 提供详尽的阅读记录，支持 &lt;strong&gt;时间轴&lt;/strong&gt; 与 &lt;strong&gt;章节维度&lt;/strong&gt; 统计。&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;体验增强：&lt;/strong&gt; 更健全的 &lt;strong&gt;漫画阅读&lt;/strong&gt; 、 &lt;strong&gt;有声书&lt;/strong&gt; 与 &lt;strong&gt;发现&lt;/strong&gt; 等界面体验。&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;书架布局：&lt;/strong&gt; 更多的书架布局选择，针对 &lt;strong&gt;平板端&lt;/strong&gt; 进行了专门的界面优化。&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;实用功能：&lt;/strong&gt; 新增书籍备注、智能伴生分组（自动归类已读/未读），支持&lt;strong&gt;手柄&lt;/strong&gt;上下&lt;strong&gt;翻页&lt;/strong&gt;。&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🛠️ 核心功能&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;多格式支持：&lt;/strong&gt; 支持本地 TXT、EPUB 阅读，智能扫描本地文件。&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;高度自定义：&lt;/strong&gt; 切换字体、背景、行距、段距、加粗、简繁转换等。&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;净化替换：&lt;/strong&gt; 强力去除广告，替换正文内容。&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;翻页模式：&lt;/strong&gt; 覆盖、仿真、滑动、滚动等多种模式随心切换。&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;完全开源：&lt;/strong&gt; 无广告，持续迭代优化。&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h2&gt;❤️ 致谢&lt;/h2&gt; 
&lt;p&gt;感谢以下优秀开源项目提供的灵感与技术支持：&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gedoor/legado&quot;&gt;gedoor/legado&lt;/a&gt; (这个项目最吊的老爹)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Luoyacheng/legado&quot;&gt;Luoyacheng/legado&lt;/a&gt; (提供了更多的扩展功能)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/komikku-app/komikku&quot;&gt;komikku-app/komikku&lt;/a&gt; (提供了界面灵感与一些 Compose 的优秀控件)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/FoedusProgramme/Gramophone&quot;&gt;FoedusProgramme/Gramophone&lt;/a&gt; (提供了界面灵感与 View 系统的封面取色方法)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jordond/MaterialKolor&quot;&gt;jordond/MaterialKolor&lt;/a&gt; (基于 Jetpack Compose 优秀的取色实现)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Calvin-LL/Reorderable&quot;&gt;Calvin-LL/Reorderable&lt;/a&gt; (基于 Jetpack Compose 优秀的拖动排序实现)&lt;/li&gt; 
 &lt;li&gt;以及更多开源项目...&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;⚠️ 免责声明&lt;/h2&gt; 
&lt;p&gt;项目内容不代表原作者立场，与原项目作者不存在任何隶属或授权关系。&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/e6e83cfe0972cd64f06f31e359edcd8f305c73351015f3be49a869f1573ec01d/HapeLee/legado-with-MD3" medium="image" />
      
    </item>
    
    <item>
      <title>SukiSU-Ultra/SukiSU-Ultra</title>
      <link>https://github.com/SukiSU-Ultra/SukiSU-Ultra</link>
      <description>&lt;p&gt;Kernel-based Android Root Solution &amp; KPM&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;SukiSU Ultra&lt;/h1&gt; 
&lt;img align=&quot;right&quot; src=&quot;https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/SukiSU-mini.svg?sanitize=true&quot; width=&quot;220px&quot; alt=&quot;sukisu logo&quot; /&gt; 
&lt;p&gt;&lt;strong&gt;English&lt;/strong&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/zh/README.md&quot;&gt;简体中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/ja/README.md&quot;&gt;日本語&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/tr/README.md&quot;&gt;Türkçe&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/ru/README.md&quot;&gt;Русский&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;A kernel-based root solution for Android devices, forked from &lt;a href=&quot;https://github.com/tiann/KernelSU&quot;&gt;&lt;code&gt;tiann/KernelSU&lt;/code&gt;&lt;/a&gt;, and added some interesting changes.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/tiann/KernelSU/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/SukiSU-Ultra/SukiSU-Ultra?label=Release&amp;amp;logo=github&quot; alt=&quot;Latest release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://t.me/Sukiksu&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Follow-Telegram-blue.svg?logo=telegram&quot; alt=&quot;Channel&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-GPL%20v2-orange.svg?logo=gnu&quot; alt=&quot;License: GPL v2&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/tiann/KernelSU?logo=gnu&quot; alt=&quot;GitHub License&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt;Kernel-based &lt;code&gt;su&lt;/code&gt; and root access management&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://kernelsu.org/guide/app-profile.html&quot;&gt;App Profile&lt;/a&gt;: Lock up the root power in a cage&lt;/li&gt; 
 &lt;li&gt;Support non-GKI and GKI 1.0&lt;/li&gt; 
 &lt;li&gt;KPM Support&lt;/li&gt; 
 &lt;li&gt;Tweaks to the manager theme and the built-in susfs management tool.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Compatibility Status&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;KernelSU (before v1.0.0) officially supports Android GKI 2.0 devices (kernel 5.10+).&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Older kernels (4.4+) are also compatible, but the kernel will have to be built manually.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;With more backports, KernelSU can supports 3.x kernel (3.4-3.18).&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Currently, only &lt;code&gt;arm64-v8a&lt;/code&gt;, &lt;code&gt;armeabi-v7a (bare)&lt;/code&gt; and &lt;code&gt;X86_64&lt;/code&gt;(some) are supported.&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/guide/installation.md&quot;&gt;&lt;code&gt;guide/installation.md&lt;/code&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Integration&lt;/h2&gt; 
&lt;p&gt;See &lt;a href=&quot;https://raw.githubusercontent.com/SukiSU-Ultra/SukiSU-Ultra/main/guide/how-to-integrate.md&quot;&gt;&lt;code&gt;guide/how-to-integrate.md&lt;/code&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Translation&lt;/h2&gt; 
&lt;p&gt;If you need to submit a translation for the manager, please go to &lt;a href=&quot;https://crowdin.com/project/SukiSU-Ultra&quot;&gt;Crowdin&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;KPM Support&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Based on KernelPatch, we removed features redundant with KSU and retained only KPM support.&lt;/li&gt; 
 &lt;li&gt;Work in Progress: Expanding APatch compatibility by integrating additional functions to ensure compatibility across different implementations.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Open-source repository&lt;/strong&gt;: &lt;a href=&quot;https://github.com/ShirkNeko/SukiSU_KernelPatch_patch&quot;&gt;https://github.com/ShirkNeko/SukiSU_KernelPatch_patch&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;KPM template&lt;/strong&gt;: &lt;a href=&quot;https://github.com/udochina/KPM-Build-Anywhere&quot;&gt;https://github.com/udochina/KPM-Build-Anywhere&lt;/a&gt;&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Note&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt; 
 &lt;ol&gt; 
  &lt;li&gt;Requires &lt;code&gt;CONFIG_KPM=y&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;Non-GKI devices requires &lt;code&gt;CONFIG_KALLSYMS=y&lt;/code&gt; and &lt;code&gt;CONFIG_KALLSYMS_ALL=y&lt;/code&gt;&lt;/li&gt; 
  &lt;li&gt;For kernels below&amp;nbsp;&lt;code&gt;4.19&lt;/code&gt;, backporting from &lt;code&gt;set_memory.h&lt;/code&gt; from &lt;code&gt;4.19&lt;/code&gt; is required.&lt;/li&gt; 
 &lt;/ol&gt; 
&lt;/div&gt; 
&lt;h2&gt;Troubleshooting&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt;Device stuck upon manager app uninstallation? Uninstall &lt;em&gt;com.sony.playmemories.mobile&lt;/em&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Sponsor&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://afdian.com/a/shirkneko&quot;&gt;ShirkNeko&lt;/a&gt; (maintainer of SukiSU)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sponsors/tiann&quot;&gt;weishu&lt;/a&gt; (author of KernelSU)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;ShirkNeko&#39;s sponsorship list&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Ktouls&quot;&gt;Ktouls&lt;/a&gt; Thanks so much for bringing me support.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/zaoqi123&quot;&gt;zaoqi123&lt;/a&gt; Thanks for the milk tea.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/wswzgdg&quot;&gt;wswzgdg&lt;/a&gt; Many thanks for supporting this project.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/yspbwx2010&quot;&gt;yspbwx2010&lt;/a&gt; Many thanks.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/DARKWWEE&quot;&gt;DARKWWEE&lt;/a&gt; 100 USDT&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/TypeFlu&quot;&gt;Saksham Singla&lt;/a&gt; Provide and maintain the website&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/OukaroMF&quot;&gt;OukaroMF&lt;/a&gt; Donation of website domain name&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;The file in the “kernel” directory is under &lt;a href=&quot;https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html&quot;&gt;GPL-2.0-only&lt;/a&gt; license.&lt;/li&gt; 
 &lt;li&gt;The images of the files &lt;code&gt;ic_launcher(?!.*alt.*).*&lt;/code&gt; with anime character sticker are copyrighted by &lt;a href=&quot;https://space.bilibili.com/10545509&quot;&gt;怡子曰曰&lt;/a&gt;, the Brand Intellectual Property in the images is owned by &lt;a href=&quot;https://space.bilibili.com/274939213&quot;&gt;明风 OuO&lt;/a&gt;, and the vectorization is done by @MiRinChan. Before using these files, in addition to complying with &lt;a href=&quot;https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.txt&quot;&gt;Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International&lt;/a&gt;, you also need to comply with the authorization of the two authors to use these artistic contents.&lt;/li&gt; 
 &lt;li&gt;Except for the files or directories mentioned above, all other parts are under &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0.html&quot;&gt;GPL-3.0 or later&lt;/a&gt; license.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Credit&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tiann/KernelSU&quot;&gt;KernelSU&lt;/a&gt;: upstream&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/5ec1cff/KernelSU&quot;&gt;MKSU&lt;/a&gt;: Magic Mount&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/rsuntk/KernelsU&quot;&gt;RKSU&lt;/a&gt;: support non-GKI&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://gitlab.com/simonpunk/susfs4ksu&quot;&gt;susfs&lt;/a&gt;: An addon root hiding kernel patches and userspace module for KernelSU.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/bmax121/KernelPatch&quot;&gt;KernelPatch&lt;/a&gt;: KernelPatch is a key part of the APatch implementation of the kernel module&lt;/li&gt; 
&lt;/ul&gt; 
&lt;details&gt; 
 &lt;summary&gt;KernelSU&#39;s credit&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;a href=&quot;https://git.zx2c4.com/kernel-assisted-superuser/about/&quot;&gt;Kernel-Assisted Superuser&lt;/a&gt;: The KernelSU idea.&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/topjohnwu/Magisk&quot;&gt;Magisk&lt;/a&gt;: The powerful root tool.&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/brevent/genuine/&quot;&gt;genuine&lt;/a&gt;: APK v2 signature validation.&lt;/li&gt; 
  &lt;li&gt;&lt;a href=&quot;https://github.com/m0nad/Diamorphine&quot;&gt;Diamorphine&lt;/a&gt;: Some rootkit skills.&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/a48f25e0699db342ad799d0b46c5ea51b264ec75023b9917e3eeeba5a94c5d94/SukiSU-Ultra/SukiSU-Ultra" medium="image" />
      
    </item>
    
    <item>
      <title>koiverse/ArchiveTune</title>
      <link>https://github.com/koiverse/ArchiveTune</link>
      <description>&lt;p&gt;The Cutest Material 3 Expressive Music Player With Support Local File and Youtube Music for Android.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://github.com/koiverse/ArchiveTune/raw/main/fastlane/metadata/android/en-US/images/icon.png&quot; width=&quot;160&quot; height=&quot;160&quot; alt=&quot;ArchiveTune Logo&quot; style=&quot;border-radius: 22%&quot; /&gt; 
 &lt;h1&gt;ArchiveTune&lt;/h1&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/koiverse/ArchiveTune/main/README.md&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/🇺🇸%20English-6366f1?style=for-the-badge&amp;amp;labelColor=1e1e2e&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/koiverse/ArchiveTune/main/README_JA.md&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/🇯🇵%20日本語-6366f1?style=for-the-badge&amp;amp;labelColor=1e1e2e&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;strong&gt;Redefining the YouTube Music Experience on Android.&lt;/strong&gt; &lt;br /&gt; &lt;em&gt;It’s high-performance, privacy-focused, and packed with features for people who really care about their experience.&lt;/em&gt; &lt;/p&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://archivetune.koiiverse.cloud&quot;&gt;&lt;b&gt;Official Website&lt;/b&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/koiverse/ArchiveTune/main/#features&quot;&gt;&lt;b&gt;Features&lt;/b&gt;&lt;/a&gt; • &lt;a href=&quot;https://archivetune.koiiverse.cloud/privacy&quot;&gt;&lt;b&gt;Privacy&lt;/b&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/koiverse/ArchiveTune/main/#download-now&quot;&gt;&lt;b&gt;Download&lt;/b&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/koiverse/ArchiveTune/main/#screenshots&quot;&gt;&lt;b&gt;Screenshots&lt;/b&gt;&lt;/a&gt; • &lt;a href=&quot;https://github.com/koiverse/ArchiveTune/issues/new/choose&quot;&gt;&lt;b&gt;Support&lt;/b&gt;&lt;/a&gt; &lt;/p&gt; 
 &lt;div align=&quot;center&quot;&gt; 
  &lt;img src=&quot;https://img.shields.io/github/v/release/koiverse/ArchiveTune?style=for-the-badge&amp;amp;color=6366f1&amp;amp;labelColor=1e1e2e&amp;amp;logo=github&quot; alt=&quot;Latest Version&quot; /&gt; 
  &lt;img src=&quot;https://img.shields.io/github/downloads/koiverse/ArchiveTune/total?style=for-the-badge&amp;amp;color=6366f1&amp;amp;labelColor=1e1e2e&amp;amp;logo=github&quot; alt=&quot;Downloads&quot; /&gt; 
  &lt;img src=&quot;https://img.shields.io/github/stars/koiverse/ArchiveTune?style=for-the-badge&amp;amp;color=6366f1&amp;amp;labelColor=1e1e2e&amp;amp;logo=github&quot; alt=&quot;Stars&quot; /&gt; 
  &lt;img src=&quot;https://img.shields.io/github/license/koiverse/ArchiveTune?style=for-the-badge&amp;amp;color=6366f1&amp;amp;labelColor=1e1e2e&quot; alt=&quot;License&quot; /&gt; 
  &lt;img src=&quot;https://img.shields.io/badge/Architecture-MVVM-6366f1?style=for-the-badge&amp;amp;labelColor=1e1e2e&amp;amp;logo=kotlin&quot; alt=&quot;MVVM Architecture&quot; /&gt; 
  &lt;img src=&quot;https://img.shields.io/badge/Language-Kotlin-7f52ff?style=for-the-badge&amp;amp;logo=kotlin&amp;amp;color=6366f1&amp;amp;labelColor=1e1e2e&quot; alt=&quot;Kotlin Language&quot; /&gt; 
  &lt;img src=&quot;https://img.shields.io/badge/Toolkit-Jetpack_Compose-4285f4?style=for-the-badge&amp;amp;logo=jetpack-compose&amp;amp;color=6366f1&amp;amp;labelColor=1e1e2e&quot; alt=&quot;Jetpack Compose Toolkit&quot; /&gt; 
  &lt;img src=&quot;https://img.shields.io/badge/Design-Material_3-000000?style=for-the-badge&amp;amp;logo=material-design&amp;amp;color=6366f1&amp;amp;labelColor=1e1e2e&quot; alt=&quot;Material Design 3&quot; /&gt; 
  &lt;a href=&quot;https://www.virustotal.com/gui/file/176bea37aff02a606d04ff0a61478fabdb0bd079f9e97319645452af420e5d84/detection/f-176bea37aff02a606d04ff0a61478fabdb0bd079f9e97319645452af420e5d84-1778840479&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/VirusTotal-SAFE-green?style=for-the-badge&amp;amp;logo=virustotal&amp;amp;logoColor=white&amp;amp;labelColor=1e1e2e&amp;amp;color=5865F2&quot; alt=&quot;VirusTotal&quot; /&gt;&lt;/a&gt; 
  &lt;a href=&quot;https://t.me/ArchiveTuneGC&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&amp;amp;logo=telegram&amp;amp;logoColor=white&quot; alt=&quot;Telegram&quot; /&gt;&lt;/a&gt; 
  &lt;a href=&quot;https://discord.gg/XF2fpb9rTq&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&amp;amp;logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; 
 &lt;/div&gt; 
 &lt;br /&gt; 
 &lt;a href=&quot;https://trendshift.io/repositories/17521&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://trendshift.io/api/badge/repositories/17521&quot; alt=&quot;ArchiveTune | Trendshift&quot; style=&quot;width: 250px; height: 55px;&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;p&gt;&lt;strong&gt;ArchiveTune&lt;/strong&gt; isn’t just another generic YouTube Music wrapper. It’s a fully custom-built player made from the ground up, because we think your music should stay private, look clean, and work exactly the way you expect. If you care about sound quality and want something that actually feels good to use, this is it.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-important&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-report mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Important&lt;/p&gt;
 &lt;p&gt;&lt;strong&gt;Geographic Availability:&lt;/strong&gt; If YouTube Music is not supported in your region, a VPN or proxy set to a supported region is required for initial data fetching.&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📸 Showcase&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://github.com/koiverse/ArchiveTune/raw/main/fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot_1.jpg&quot; alt=&quot;Browse&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://github.com/koiverse/ArchiveTune/raw/main/fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot_2.jpg&quot; alt=&quot;Live Lyrics&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://github.com/koiverse/ArchiveTune/raw/main/fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot_3.jpg&quot; alt=&quot;Theme Customization&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://github.com/koiverse/ArchiveTune/raw/main/fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot_4.jpg&quot; alt=&quot;Live Statistics&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://github.com/koiverse/ArchiveTune/raw/main/fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot_5.jpg&quot; alt=&quot;Artist&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://github.com/koiverse/ArchiveTune/raw/main/fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot_6.jpg&quot; alt=&quot;Album&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://github.com/koiverse/ArchiveTune/raw/main/fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot_7.jpg&quot; alt=&quot;Player&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://github.com/koiverse/ArchiveTune/raw/main/fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot_8.jpg&quot; alt=&quot;Settings&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://github.com/koiverse/ArchiveTune/raw/main/fastlane/metadata/android/en-US/images/phoneScreenshots/screenshot_9.jpg&quot; alt=&quot;Settings&quot; width=&quot;30%&quot; /&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;✨ Features&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td width=&quot;50%&quot; valign=&quot;top&quot;&gt; 
     &lt;div align=&quot;left&quot;&gt; 
      &lt;h3&gt;Playback&lt;/h3&gt; 
      &lt;ul&gt; 
       &lt;li&gt;Multiple account support with quick switching&lt;/li&gt; 
       &lt;li&gt;Ad-free playback with background listening&lt;/li&gt; 
       &lt;li&gt;Your playlists, liked songs, and subscriptions appear after sign-in&lt;/li&gt; 
       &lt;li&gt;Support local file and local song playback &lt;/li&gt;
       &lt;li&gt;Fast startup and lightweight performance&lt;/li&gt; 
       &lt;li&gt;Built for a private, uninterrupted listening experience&lt;/li&gt; 
      &lt;/ul&gt; 
     &lt;/div&gt; &lt;/td&gt; 
    &lt;td width=&quot;50%&quot; valign=&quot;top&quot;&gt; 
     &lt;div align=&quot;left&quot;&gt; 
      &lt;h3&gt;Audio&lt;/h3&gt; 
      &lt;ul&gt; 
       &lt;li&gt;EBU R128 loudness normalization&lt;/li&gt; 
       &lt;li&gt;Tempo, pitch, and playback speed controls&lt;/li&gt; 
       &lt;li&gt;Crossfade between tracks&lt;/li&gt; 
       &lt;li&gt;System equalizer and spatial audio integration&lt;/li&gt; 
      &lt;/ul&gt; 
     &lt;/div&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;50%&quot; valign=&quot;top&quot;&gt; 
     &lt;div align=&quot;left&quot;&gt; 
      &lt;h3&gt;Lyrics &amp;amp; Discovery&lt;/h3&gt; 
      &lt;ul&gt; 
       &lt;li&gt;Live synced lyrics&lt;/li&gt; 
       &lt;li&gt;Lyrics translation, AI Lyrics translation and romanization&lt;/li&gt; 
       &lt;li&gt;Music recognition for songs around you&lt;/li&gt; 
       &lt;li&gt;Listening statistics whenever you want them&lt;/li&gt; 
      &lt;/ul&gt; 
     &lt;/div&gt; &lt;/td&gt; 
    &lt;td width=&quot;50%&quot; valign=&quot;top&quot;&gt; 
     &lt;div align=&quot;left&quot;&gt; 
      &lt;h3&gt;Sync &amp;amp; Social&lt;/h3&gt; 
      &lt;ul&gt; 
       &lt;li&gt;Import playlist from spotify&lt;/li&gt; 
       &lt;li&gt;YouTube Music account integration&lt;/li&gt; 
       &lt;li&gt;Last.fm scrobbling&lt;/li&gt; 
       &lt;li&gt;ListenBrainz history sync&lt;/li&gt; 
       &lt;li&gt;Discord rich presence support&lt;/li&gt; 
      &lt;/ul&gt; 
     &lt;/div&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;50%&quot; valign=&quot;top&quot;&gt; 
     &lt;div align=&quot;left&quot;&gt; 
      &lt;h3&gt;Interface&lt;/h3&gt; 
      &lt;ul&gt; 
       &lt;li&gt;Material 3 design language&lt;/li&gt; 
       &lt;li&gt;Album-art powered dynamic colors&lt;/li&gt; 
       &lt;li&gt;Up to 9 different player styles&lt;/li&gt; 
       &lt;li&gt;Up to 8 different player background styles&lt;/li&gt; 
       &lt;li&gt;Responsive layouts for different screen sizes&lt;/li&gt; 
       &lt;li&gt;Clean browsing, player, artist, album, and lyrics views&lt;/li&gt; 
      &lt;/ul&gt; 
     &lt;/div&gt; &lt;/td&gt; 
    &lt;td width=&quot;50%&quot; valign=&quot;top&quot;&gt; 
     &lt;div align=&quot;left&quot;&gt; 
      &lt;h3&gt;Customization&lt;/h3&gt; 
      &lt;ul&gt; 
       &lt;li&gt;Deep playback and interface settings&lt;/li&gt; 
       &lt;li&gt;Dynamic color theming options&lt;/li&gt; 
       &lt;li&gt;Gesture customization&lt;/li&gt; 
       &lt;li&gt;Animation and layout tuning&lt;/li&gt; 
       &lt;li&gt;Flexible controls to shape the app around your workflow&lt;/li&gt; 
      &lt;/ul&gt; 
     &lt;/div&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📥 Download Now&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;Stable Release&lt;/h2&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th align=&quot;center&quot;&gt;Obtainium&lt;/th&gt; 
    &lt;th align=&quot;center&quot;&gt;IzzyOnDroid&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://github.com/koiverse/ArchiveTune/&quot;&gt; &lt;img src=&quot;https://github.com/ImranR98/Obtainium/raw/main/assets/graphics/badge_obtainium.png&quot; height=&quot;50&quot; alt=&quot;Get ArchiveTune on Obtainium&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;https://apt.izzysoft.de/fdroid/index/apk/moe.koiverse.archivetune&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/koiverse/ArchiveTune/757d5932832e1da27ced56de98c5ad1275cf0db1/assets/IzzyOnDroidButtonBorder.svg?sanitize=true&quot; height=&quot;50&quot; alt=&quot;Get ArchiveTune on IzzyOnDroid&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;th align=&quot;center&quot; colspan=&quot;2&quot;&gt;GitHub&lt;/th&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; colspan=&quot;2&quot;&gt; &lt;a href=&quot;https://github.com/koiverse/ArchiveTune/releases/latest&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/koiverse/ArchiveTune/refs/heads/main/assets/badge_github.png&quot; height=&quot;50&quot; alt=&quot;Get ArchiveTune on GitHub&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;th align=&quot;center&quot;&gt;OpenAPK&lt;/th&gt; 
    &lt;th align=&quot;center&quot;&gt;Unclouded&lt;/th&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.openapk.net/archivetune/moe.koiverse.archivetune/&quot;&gt; &lt;img src=&quot;https://www.openapk.net/images/openapk-badge.png&quot; height=&quot;75&quot; alt=&quot;Get ArchiveTune on OpenAPK&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;https://unclouded.app/apps/archivetune/&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/koiverse/ArchiveTune/refs/heads/dev/assets/badge_unclouded.png&quot; height=&quot;50&quot; alt=&quot;Get ArchiveTune on Unclouded&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;h2&gt;Nightly Build&lt;/h2&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th align=&quot;center&quot;&gt;GitHub Actions&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;https://nightly.link/koiverse/ArchiveTune/workflows/build/dev/app-mobile-universal-release&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/koiverse/ArchiveTune/refs/heads/main/assets/badge_github.png&quot; height=&quot;50&quot; alt=&quot;Download the latest ArchiveTune nightly build&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
&lt;/div&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-warning&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-alert mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Warning&lt;/p&gt;
 &lt;p&gt;&lt;strong&gt;Notes:&lt;/strong&gt; The trusted download source is listed above; we are not responsible for any risks you may encounter from downloading from other sources.&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;❓ Need Help or Have Questions?&lt;/h2&gt; 
&lt;p&gt;Join Our Telegram Channels or Discord Servers for Support and Discussion.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://t.me/ArchiveTuneGC&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&amp;amp;logo=telegram&amp;amp;logoColor=white&quot; alt=&quot;Telegram&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/XF2fpb9rTq&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&amp;amp;logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🌍 Globalization&lt;/h2&gt; 
&lt;p&gt;ArchiveTune belongs to everyone. Help us localize the experience for your region.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://translate.codeberg.org/engage/archivetune/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/translate-help?style=for-the-badge&amp;amp;logo=weblate&amp;amp;labelColor=grey&quot; alt=&quot;Static Badge&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://translate.codeberg.org/engage/archivetune/&quot;&gt; &lt;img src=&quot;https://translate.codeberg.org/widget/archivetune/horizontal-blue.svg?sanitize=true&quot; alt=&quot;Translation status&quot; /&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;h3&gt;✨ Project Contributors&lt;/h3&gt; 
&lt;a href=&quot;https://github.com/koiverse/ArchiveTune/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=koiverse/ArchiveTune&amp;amp;columns=6&quot; /&gt; &lt;/a&gt; 
&lt;h3&gt;🛠️ Development &amp;amp; Engineering&lt;/h3&gt; 
&lt;p&gt;Interested in building the project or contributing? ArchiveTune is built on a high-performance Kotlin stack. &lt;a href=&quot;https://raw.githubusercontent.com/koiverse/ArchiveTune/main/CONTRIBUTING.md&quot;&gt;&lt;b&gt;Read the Build &amp;amp; Contribution Guide →&lt;/b&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🤝 Acknowledgments&lt;/h2&gt; 
&lt;p&gt;We stand on the shoulders of open-source giants:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Metrolist&lt;/strong&gt; by &lt;a href=&quot;https://github.com/mostafaalagamy/Metrolist&quot;&gt;Mostafa Alagamy&lt;/a&gt; For Base framework.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;SimpMusic&lt;/strong&gt; by &lt;a href=&quot;https://github.com/maxrave-dev/SimpMusic&quot;&gt;maxrave-dev&lt;/a&gt; For Lyrics API Provider.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://better-lyrics.boidu.dev/&quot;&gt;BetterLyrics&lt;/a&gt; For word-by-word Lyrics API Provider &amp;amp; Artwork Provider.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/material-foundation/material-color-utilities&quot;&gt;Material Color Utilities&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Ashinch/ReadYou&quot;&gt;Read You&lt;/a&gt; and &lt;a href=&quot;https://github.com/JunkFood02/Seal&quot;&gt;Seal&lt;/a&gt; for Ui Components.&lt;/li&gt; 
 &lt;li&gt;The global community of translators and beta testers.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;⚖️ Legal Disclaimer&lt;/h2&gt; 
&lt;p&gt;ArchiveTune is an independent third-party client.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Not affiliated with Google LLC or YouTube.&lt;/li&gt; 
 &lt;li&gt;Does not bypass YouTube&#39;s technical protections.&lt;/li&gt; 
 &lt;li&gt;Users are encouraged to support artists by purchasing music via official channels.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/koiverse/ArchiveTune/refs/heads/dev/fastlane/metadata/android/en-US/images/ArchiveTuneFull.png&quot; alt=&quot;ArchiveTune Banner&quot; style=&quot;width: 100%; max-width: 500px;&quot; /&gt; 
 &lt;p&gt;&lt;b&gt;If ArchiveTune elevated your music experience, please consider giving us a ⭐&lt;/b&gt;&lt;/p&gt; 
 &lt;br /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/koiverse/ArchiveTune/refs/heads/dev/assets/badge_part.png&quot; alt=&quot;ArchiveTune Banner&quot; style=&quot;width: 160px&quot; /&gt; 
&lt;/div&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/6a11266228ee076c7d6addd840e129f8b584d61f23c33bda4bbf6c2072bbda34/koiverse/ArchiveTune" medium="image" />
      
    </item>
    
    <item>
      <title>2dust/v2rayNG</title>
      <link>https://github.com/2dust/v2rayNG</link>
      <description>&lt;p&gt;A V2Ray client for Android, support Xray core and v2fly core&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;v2rayNG&lt;/h1&gt; 
&lt;p&gt;A V2Ray client for Android, support &lt;a href=&quot;https://github.com/XTLS/Xray-core&quot;&gt;Xray core&lt;/a&gt; and &lt;a href=&quot;https://github.com/v2fly/v2ray-core&quot;&gt;v2fly core&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://developer.android.com/about/versions/lollipop&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/API-24%2B-yellow.svg?style=flat&quot; alt=&quot;API&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://kotlinlang.org&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Kotlin-2.3.21-blue.svg?sanitize=true&quot; alt=&quot;Kotlin Version&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/2dust/v2rayNG/commits/master&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/commit-activity/m/2dust/v2rayNG&quot; alt=&quot;GitHub commit activity&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.codefactor.io/repository/github/2dust/v2rayng&quot;&gt;&lt;img src=&quot;https://www.codefactor.io/repository/github/2dust/v2rayng/badge&quot; alt=&quot;CodeFactor&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/2dust/v2rayNG/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/downloads/2dust/v2rayNG/latest/total?logo=github&quot; alt=&quot;GitHub Releases&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://t.me/v2rayn&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Chat%20on-Telegram-brightgreen.svg?sanitize=true&quot; alt=&quot;Chat on Telegram&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Telegram Channel&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://t.me/github_2dust&quot;&gt;github_2dust&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Usage&lt;/h3&gt; 
&lt;h4&gt;Geoip and Geosite&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;geoip.dat and geosite.dat files are in &lt;code&gt;Android/data/com.v2ray.ang/files/assets&lt;/code&gt; (path may differ on some Android device)&lt;/li&gt; 
 &lt;li&gt;download feature will get enhanced version in this &lt;a href=&quot;https://github.com/Loyalsoldier/v2ray-rules-dat&quot;&gt;repo&lt;/a&gt; (Note it need a working proxy)&lt;/li&gt; 
 &lt;li&gt;latest official &lt;a href=&quot;https://github.com/Loyalsoldier/v2ray-rules-dat&quot;&gt;domain list&lt;/a&gt; and &lt;a href=&quot;https://github.com/Loyalsoldier/geoip&quot;&gt;ip list&lt;/a&gt; can be imported manually&lt;/li&gt; 
 &lt;li&gt;possible to use third party dat file in the same folder, like &lt;a href=&quot;https://guide.v2fly.org/routing/sitedata.html#%E5%A4%96%E7%BD%AE%E7%9A%84%E5%9F%9F%E5%90%8D%E6%96%87%E4%BB%B6&quot;&gt;h2y&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;More in our &lt;a href=&quot;https://github.com/2dust/v2rayNG/wiki&quot;&gt;wiki&lt;/a&gt;&lt;/h3&gt; 
&lt;h3&gt;Development guide&lt;/h3&gt; 
&lt;p&gt;Android project under V2rayNG folder can be compiled directly in Android Studio, or using Gradle wrapper. But the v2ray core inside the aar is (probably) outdated.&lt;br /&gt; The aar can be compiled from the Golang project &lt;a href=&quot;https://github.com/2dust/AndroidLibV2rayLite&quot;&gt;AndroidLibV2rayLite&lt;/a&gt; or &lt;a href=&quot;https://github.com/2dust/AndroidLibXrayLite&quot;&gt;AndroidLibXrayLite&lt;/a&gt;. For a quick start, read guide for &lt;a href=&quot;https://github.com/golang/go/wiki/Mobile&quot;&gt;Go Mobile&lt;/a&gt; and &lt;a href=&quot;https://tutorialedge.net/golang/makefiles-for-go-developers/&quot;&gt;Makefiles for Go Developers&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;v2rayNG can run on Android Emulators. For WSA, VPN permission need to be granted via &lt;code&gt;appops set [package name] ACTIVATE_VPN allow&lt;/code&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/0f15643988467e6ccabe3bc8128500ee6ea10d6bac64eae1788c3c2741f145d1/2dust/v2rayNG" medium="image" />
      
    </item>
    
    <item>
      <title>wxxsfxyzm/InstallerX-Revived</title>
      <link>https://github.com/wxxsfxyzm/InstallerX-Revived</link>
      <description>&lt;p&gt;More Expressive InstallerX !&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;InstallerX Revived (Community Edition)&lt;/h1&gt; 
&lt;p&gt;&lt;strong&gt;English&lt;/strong&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/wxxsfxyzm/InstallerX-Revived/main/README_CN.md&quot;&gt;简体中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/wxxsfxyzm/InstallerX-Revived/main/README_ES.md&quot;&gt;Español&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/wxxsfxyzm/InstallerX-Revived/main/README_JA.md&quot;&gt;日本語&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/wxxsfxyzm/InstallerX-Revived/main/README_DE.md&quot;&gt;Deutsch&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-GPLv3-blue.svg?sanitize=true&quot; alt=&quot;License: GPL v3&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/wxxsfxyzm/InstallerX/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/wxxsfxyzm/InstallerX?label=Stable&quot; alt=&quot;Latest Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/wxxsfxyzm/InstallerX/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/wxxsfxyzm/InstallerX?include_prereleases&amp;amp;label=Beta&quot; alt=&quot;Prerelease&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://t.me/installerx_revived&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Telegram-2CA5E0?logo=telegram&amp;amp;logoColor=white&quot; alt=&quot;Telegram&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;A modern and functional Android app installer. (You know some birds are not meant to be caged, their feathers are just too bright.)&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Looking for a better app installer? Try &lt;strong&gt;InstallerX&lt;/strong&gt;!&lt;/p&gt; 
&lt;p&gt;InstallerX Revived is a modern Android package installer and the community-maintained continuation of the original &lt;a href=&quot;https://github.com/iamr0s/InstallerX&quot;&gt;InstallerX&lt;/a&gt; project.&lt;/p&gt; 
&lt;p&gt;It is designed to replace limited stock or OEM package installers with a cleaner interface, broader package support, configurable installation profiles, and privileged workflows through Shizuku, Root, Dhizuku, or the system package manager mode.&lt;/p&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;The full user guide, installation instructions, advanced options, system integration notes, and FAQ are maintained on the &lt;a href=&quot;https://wxxsfxyzm.github.io/InstallerX-Revived-Website/&quot;&gt;documentation site&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Highlights&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Package formats:&lt;/strong&gt; APK, APKS, APKM, XAPK, APK files inside ZIP archives, and batch APK installation.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Install flows:&lt;/strong&gt; dialog installation, background notification installation, automatic installation, silent installation when privileges allow it, and Android 16+ Live Activity progress on supported systems.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Authorizers:&lt;/strong&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;strong&gt;Root:&lt;/strong&gt; can perform all privileged operations, but may be slower because of cold &lt;code&gt;app_process&lt;/code&gt; startup.&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Shizuku:&lt;/strong&gt; obtains shell or root capabilities depending on how it is activated, and is usually faster than direct Root.&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;Dhizuku:&lt;/strong&gt; can perform DevicePolicyManager-based operations such as default installer locking and app installation, but is limited for other privileged tasks.&lt;/li&gt; 
   &lt;li&gt;&lt;strong&gt;None:&lt;/strong&gt; is fully limited by the system, but can silently install when InstallerX is running as the system package installer.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Profiles:&lt;/strong&gt; define how installation and uninstallation requests are handled, including install mode, authorizer override, installer/requester metadata, target user, DexOpt, auto-delete behavior, split selection, blacklist policy, and signature gates.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;System integration:&lt;/strong&gt; InstallerX can be locked as the default installer from the Home page status card, used with LSPosed modules such as &lt;a href=&quot;https://github.com/Chimioo/InxLocker&quot;&gt;InxLocker&lt;/a&gt;, or installed as a replacement system package manager by advanced users.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Modern UI:&lt;/strong&gt; Material 3 Expressive and Miuix interface styles, dark mode, dynamic color, advanced palettes, system icon packs, colorful dialogs, standard notifications, Live Activity, and Xiaomi HyperOS-style island notifications on supported Xiaomi devices.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Safety controls:&lt;/strong&gt; package-name and SharedUID blacklists, signature mismatch and unknown-signature policy gates, permission preview, install flags, and one-time smart suggestions for selected blocked cases.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Supported Android Versions&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Full support:&lt;/strong&gt; Android SDK 34 - 37.0&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Limited support:&lt;/strong&gt; Android SDK 26 - 33&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Limited support means InstallerX may work, but some features can be unavailable or behave differently because of Android framework, OEM, or authorizer limitations.&lt;/p&gt; 
&lt;h2&gt;Downloads&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Stable releases:&lt;/strong&gt; &lt;a href=&quot;https://github.com/wxxsfxyzm/InstallerX-Revived/releases/latest&quot;&gt;https://github.com/wxxsfxyzm/InstallerX-Revived/releases/latest&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Alpha builds:&lt;/strong&gt; &lt;a href=&quot;https://github.com/wxxsfxyzm/InstallerX/releases&quot;&gt;https://github.com/wxxsfxyzm/InstallerX/releases&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;CI builds:&lt;/strong&gt; &lt;a href=&quot;https://github.com/wxxsfxyzm/InstallerX-Revived/actions/workflows/auto-preview-dev.yml&quot;&gt;https://github.com/wxxsfxyzm/InstallerX-Revived/actions/workflows/auto-preview-dev.yml&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Telegram channel:&lt;/strong&gt; &lt;a href=&quot;https://t.me/installerx_revived&quot;&gt;https://t.me/installerx_revived&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;When reporting bugs, please reproduce them on the latest Alpha or CI build whenever possible, because issues in Stable may already be fixed.&lt;/p&gt; 
&lt;p&gt;InstallerX is published in two variants:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Online:&lt;/strong&gt; supports direct APK download links and online update features. Network permission is only used for installation-related features.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Offline:&lt;/strong&gt; requests no network permission. Online-only features will show a clear error instead.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Both variants share the same package name, version code, and signature, so they replace each other instead of installing side by side.&lt;/p&gt; 
&lt;h2&gt;Building&lt;/h2&gt; 
&lt;p&gt;InstallerX Revived is an Android Gradle project.&lt;/p&gt; 
&lt;h3&gt;Prerequisites&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;JDK 25&lt;/strong&gt; with &lt;code&gt;JAVA_HOME&lt;/code&gt; configured correctly.&lt;/li&gt; 
 &lt;li&gt;Android SDK / Android Studio with the required platform and build tools installed.&lt;/li&gt; 
 &lt;li&gt;GitHub Packages credentials for the snapshot &lt;code&gt;miuix&lt;/code&gt; dependency.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;GitHub Packages Authentication&lt;/h3&gt; 
&lt;p&gt;GitHub Packages requires authentication even for public packages. Add your GitHub username and a classic personal access token with the &lt;code&gt;read:packages&lt;/code&gt; scope to your global Gradle properties file:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Linux / macOS: &lt;code&gt;~/.gradle/gradle.properties&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Windows: &lt;code&gt;%USERPROFILE%\.gradle\gradle.properties&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-properties&quot;&gt;gpr.user=YOUR_GITHUB_USERNAME
gpr.key=YOUR_PERSONAL_ACCESS_TOKEN
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Do not commit these credentials to this repository.&lt;/p&gt; 
&lt;h3&gt;Build Commands&lt;/h3&gt; 
&lt;p&gt;For a local debug build:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./gradlew assembleOnlineUnstableDebug assembleOfflineUnstableDebug
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For a PR-style test build with a separate application id:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./gradlew assembleOnlinePreviewDebug assembleOfflinePreviewDebug -PAPP_ID=&quot;com.rosan.installer.x.revived.test&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Common Questions&lt;/h2&gt; 
&lt;h3&gt;Where should I report bugs or ask questions?&lt;/h3&gt; 
&lt;p&gt;Use &lt;a href=&quot;https://github.com/wxxsfxyzm/InstallerX-Revived/issues&quot;&gt;GitHub Issues&lt;/a&gt; for reproducible bugs and concrete feature requests. Good suggestions are welcome. Use &lt;a href=&quot;https://github.com/wxxsfxyzm/InstallerX-Revived/discussions&quot;&gt;GitHub Discussions&lt;/a&gt; or the &lt;a href=&quot;https://t.me/installerx_revived&quot;&gt;Telegram channel&lt;/a&gt; for general questions and compatibility discussion.&lt;/p&gt; 
&lt;p&gt;Before opening an issue, please read &lt;a href=&quot;https://raw.githubusercontent.com/wxxsfxyzm/InstallerX-Revived/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for the required logs and reproduction details.&lt;/p&gt; 
&lt;h3&gt;I cannot lock InstallerX as the default installer&lt;/h3&gt; 
&lt;p&gt;Some OEM systems strictly control the default package installer. Open the default installer page from the Home page status card and try locking from there. If the ROM still prevents it, use an LSPosed module such as &lt;a href=&quot;https://github.com/Chimioo/InxLocker&quot;&gt;InxLocker&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;HyperOS says installing system apps requires a valid installer&lt;/h3&gt; 
&lt;p&gt;This is an OEM security restriction. InstallerX can declare installer metadata through profiles, and on HyperOS it uses &lt;code&gt;com.android.shell&lt;/code&gt; as the default compatibility installer package. Shizuku or Root is required for this workflow; Dhizuku is not enough.&lt;/p&gt; 
&lt;h3&gt;Notification installation progress is stuck&lt;/h3&gt; 
&lt;p&gt;Some ROMs restrict background services aggressively. Set InstallerX to unrestricted background/battery mode if notification installation stalls. InstallerX cleans up its foreground service shortly after the installation task finishes.&lt;/p&gt; 
&lt;h3&gt;How do I replace the system package manager?&lt;/h3&gt; 
&lt;p&gt;This is a high-risk advanced workflow. The short version is: use Core Patch to overwrite the APK, flash a matching module, or integrate the matching package into &lt;code&gt;super&lt;/code&gt; / a ROM build. Before flashing or packaging, verify the package name, mount path, and permissions file for your ROM.&lt;/p&gt; 
&lt;p&gt;See the system integration guide for details: &lt;a href=&quot;https://wxxsfxyzm.github.io/InstallerX-Revived-Website/guide/system-integration&quot;&gt;https://wxxsfxyzm.github.io/InstallerX-Revived-Website/guide/system-integration&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Localization&lt;/h2&gt; 
&lt;p&gt;Help translate InstallerX Revived on Weblate:&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://hosted.weblate.org/engage/installerx-revived/&quot;&gt;https://hosted.weblate.org/engage/installerx-revived/&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://hosted.weblate.org/engage/installerx-revived/&quot;&gt;&lt;img src=&quot;https://hosted.weblate.org/widget/installerx-revived/strings/multi-auto.svg?sanitize=true&quot; alt=&quot;Localization Status&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Copyright (C) &lt;a href=&quot;https://github.com/iamr0s&quot;&gt;iamr0s&lt;/a&gt; and &lt;a href=&quot;https://github.com/wxxsfxyzm/InstallerX-Revived/graphs/contributors&quot;&gt;InstallerX Revived Contributors&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;InstallerX Revived is released under the &lt;a href=&quot;http://www.gnu.org/licenses/gpl-3.0&quot;&gt;GNU General Public License v3&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;If you base your work on InstallerX Revived, you must comply with the open-source license terms of the specific source version you use.&lt;/p&gt; 
&lt;h2&gt;Acknowledgements&lt;/h2&gt; 
&lt;p&gt;This project uses code from, or is based on the implementation of, the following projects:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/iamr0s/InstallerX&quot;&gt;iamr0s/InstallerX&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tiann/KernelSU&quot;&gt;tiann/KernelSU&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/RikkaApps/Shizuku&quot;&gt;RikkaApps/Shizuku&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/zacharee/InstallWithOptions&quot;&gt;zacharee/InstallWithOptions&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/vvb2060/PackageInstaller&quot;&gt;vvb2060/PackageInstaller&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/compose-miuix-ui/miuix&quot;&gt;compose-miuix-ui/miuix&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Star History&lt;/h2&gt; 
&lt;a href=&quot;https://www.star-history.com/?repos=wxxsfxyzm%2FInstallerX-Revived&amp;amp;type=date&amp;amp;legend=top-left&quot;&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://api.star-history.com/chart?repos=wxxsfxyzm/InstallerX-Revived&amp;amp;type=date&amp;amp;theme=dark&amp;amp;legend=top-left&quot; /&gt; 
  &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;https://api.star-history.com/chart?repos=wxxsfxyzm/InstallerX-Revived&amp;amp;type=date&amp;amp;legend=top-left&quot; /&gt; 
  &lt;img alt=&quot;Star History Chart&quot; src=&quot;https://api.star-history.com/chart?repos=wxxsfxyzm/InstallerX-Revived&amp;amp;type=date&amp;amp;legend=top-left&quot; /&gt; 
 &lt;/picture&gt; &lt;/a&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/783c35c4292e8c6b271f7a83db93f7d441562353fe9f12f4dff5e567382965e5/wxxsfxyzm/InstallerX-Revived" medium="image" />
      
    </item>
    
    <item>
      <title>AAswordman/Operit</title>
      <link>https://github.com/AAswordman/Operit</link>
      <description>&lt;p&gt;The most powerful AI agent and AI chat software on Android/Operit是一款Android上能力最为强大、发展最久的AI Agent&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;span&gt;中文&lt;/span&gt; | 
 &lt;a href=&quot;https://raw.githubusercontent.com/AAswordman/Operit/main/README(E).md&quot;&gt;English&lt;/a&gt; 
&lt;/div&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://img.shields.io/github/last-commit/AAswordman/Operit&quot; alt=&quot;Last Commit&quot; /&gt; 
 &lt;img src=&quot;https://img.shields.io/badge/Platform-Android_8.0%2B-brightgreen.svg?sanitize=true&quot; alt=&quot;Platform&quot; /&gt; 
 &lt;a href=&quot;https://github.com/AAswordman/Operit/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/AAswordman/Operit&quot; alt=&quot;Latest Release&quot; /&gt;&lt;/a&gt; 
 &lt;br /&gt; 
 &lt;a href=&quot;https://github.com/AAswordman/Operit/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/AAswordman/Operit&quot; alt=&quot;GitHub Stars&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://aaswordman.github.io/OperitWeb&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/📖-用户指南-blue.svg&quot; alt=&quot;User Guide&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://www.patreon.com/c/aaswordsman&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/🌍-Patreon-f96854.svg&quot; alt=&quot;Patreon&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://afdian.com/a/aaswordsman&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/💖-支持开发-ff6b6b.svg&quot; alt=&quot;Support Development&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://raw.githubusercontent.com/AAswordman/Operit/main/docs/CONTRIBUTING.md&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/contributions-welcome-brightgreen.svg?sanitize=true&quot; alt=&quot;Contributions Welcome&quot; /&gt;&lt;/a&gt; 
 &lt;br /&gt; 
 &lt;a href=&quot;mailto:aaswordsman@foxmail.com&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/📧-Email-red.svg&quot; alt=&quot;Email&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://qm.qq.com/q/Sa4fKEH7sO&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/💬-QQ群-blue.svg&quot; alt=&quot;QQ Group&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://discord.gg/YnV9MWurRF&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/🎮-Discord-5865F2.svg&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://github.com/AAswordman/Operit/issues&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/🐛-Issues-orange.svg&quot; alt=&quot;Issues&quot; /&gt;&lt;/a&gt; 
&lt;/div&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/AAswordman/Operit/main/app/src/main/assets/logo.svg?sanitize=true&quot; width=&quot;120&quot; height=&quot;120&quot; alt=&quot;Operit Logo&quot; /&gt; 
 &lt;h1&gt;Operit AI - 智能助手应用&lt;/h1&gt; 
 &lt;p&gt;📱 &lt;b&gt;移动端首个功能完备的AI智能助手应用，完全独立运行，拥有强大的工具调用能力&lt;/b&gt; 📱&lt;/p&gt; 
&lt;/div&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;div style=&quot;padding: 10px 0; text-align: center;&quot;&gt; 
  &lt;img src=&quot;https://raw.githubusercontent.com/AAswordman/Operit/main/docs/assets/9f85b39450c8616909039b66d15a475a.jpg&quot; width=&quot;22%&quot; alt=&quot;Operit预览图1&quot; style=&quot;display: inline-block; border-radius: 8px; box-shadow: 0 5px 15px rgba(0,0,0,0.15); margin: 0 3px; max-width: 220px;&quot; /&gt; 
  &lt;img src=&quot;https://raw.githubusercontent.com/AAswordman/Operit/main/docs/assets/88a7b7520e4628682a849cc00716c8de.jpg&quot; width=&quot;22%&quot; alt=&quot;Operit预览图2&quot; style=&quot;display: inline-block; border-radius: 8px; box-shadow: 0 5px 15px rgba(0,0,0,0.15); margin: 0 3px; max-width: 220px;&quot; /&gt; 
  &lt;img src=&quot;https://raw.githubusercontent.com/AAswordman/Operit/main/docs/assets/9036f349c25888d357de5ce34580176d.jpg&quot; width=&quot;22%&quot; alt=&quot;Operit预览图3&quot; style=&quot;display: inline-block; border-radius: 8px; box-shadow: 0 5px 15px rgba(0,0,0,0.15); margin: 0 3px; max-width: 220px;&quot; /&gt; 
  &lt;img src=&quot;https://raw.githubusercontent.com/AAswordman/Operit/main/docs/assets/d12038f26df3f814b4e3ce967537f039.jpg&quot; width=&quot;22%&quot; alt=&quot;Operit预览图4&quot; style=&quot;display: inline-block; border-radius: 8px; box-shadow: 0 5px 15px rgba(0,0,0,0.15); margin: 0 3px; max-width: 220px;&quot; /&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🌟 项目简介&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Operit AI&lt;/strong&gt; 是移动端首个功能完备的 AI 智能助手应用，完全独立运行于您的 Android 设备上（除API调用），拥有强大的&lt;strong&gt;工具调用能力&lt;/strong&gt;、&lt;strong&gt;深度搜索&lt;/strong&gt;、&lt;strong&gt;工作流与自动化&lt;/strong&gt;、&lt;strong&gt;智能记忆库&lt;/strong&gt;，并支持&lt;strong&gt;人设定制&lt;/strong&gt;与&lt;strong&gt;角色卡&lt;/strong&gt;等高度自定义功能，集成 &lt;strong&gt;MNN/llama.cpp 本地模型&lt;/strong&gt;、&lt;strong&gt;MCP/Skill 生态&lt;/strong&gt;与&lt;strong&gt;多语言界面&lt;/strong&gt;。它不仅仅是聊天界面，更是与Android权限和各种工具深度融合的&lt;strong&gt;全能助手&lt;/strong&gt;，内置&lt;strong&gt;Ubuntu 24 环境&lt;/strong&gt;，提供前所未有的强大功能。&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;⚡ 核心亮点&lt;/h2&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td width=&quot;50%&quot;&gt; &lt;h3&gt;🖥️ Ubuntu 24 环境&lt;/h3&gt; &lt;p&gt;内置完整 Ubuntu 24 系统，支持 vim、MCP、Python等工具，在手机上运行复杂的Linux命令和自动化任务&lt;/p&gt; &lt;h3&gt;🧠 智能记忆系统&lt;/h3&gt; &lt;p&gt;AI自动分类管理记忆，支持时间查询/导入导出/自动总结，智能搜索历史对话，记住您的偏好和习惯，提供个性化服务&lt;/p&gt; &lt;h3&gt;🗣️ 语音交互&lt;/h3&gt; &lt;p&gt;连续自然对话，支持本地/云端 TTS + 本地 STT、自定义音色、语音/特定音频唤醒、自动朗读&lt;/p&gt; &lt;/td&gt; 
   &lt;td width=&quot;50%&quot;&gt; &lt;h3&gt;🤖 本地AI模型&lt;/h3&gt; &lt;p&gt;支持 MNN / llama.cpp 本地模型（GGUF），完全离线运行AI，保护隐私数据&lt;/p&gt; &lt;h3&gt;🎭 人设与角色卡&lt;/h3&gt; &lt;p&gt;自定义AI性格、说话风格，支持角色卡导入导出（酒馆/JSON）/备份/二维码分享，角色卡可互聊并拥有独立对话历史&lt;/p&gt; &lt;h3&gt;🔌 丰富工具生态&lt;/h3&gt; &lt;p&gt;40+ 内置工具 + MCP/Skill 市场插件 + 工具包/工作流，含自动点击 Agent、绘图/图片搜索、AI 互聊/自我认知、定时任务、提示词市场等，覆盖文件操作、网络请求、系统控制、媒体处理&lt;/p&gt; &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🛠️ 功能速览&lt;/h2&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;📦 内置工具系统（点击展开）&lt;/b&gt;&lt;/summary&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;工具类型&lt;/th&gt; 
    &lt;th&gt;功能说明&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;🐧 &lt;strong&gt;Linux环境&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;完整Ubuntu 24，支持apt包管理、Python/Node.js运行环境、自定义软件源&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;📁 &lt;strong&gt;文件系统&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;读写文件、搜索、解压缩、格式转换、Git集成&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;🌐 &lt;strong&gt;网络工具&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;HTTP请求、网页访问、文件上传下载、Web开发与导出&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;⚙️ &lt;strong&gt;系统操作&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;安装应用、权限管理、无障碍 / ADB / Root 三通道自动化（含 AutoGLM 自动点击 Agent，支持 adb root 虚拟屏/多显示器）&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;🎬 &lt;strong&gt;媒体处理&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;视频转换、帧提取、OCR/图像理解、相机拍照、音视频读取&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;🧑‍💻 &lt;strong&gt;开发与终端&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;Web 工作区/一键打包、代码编辑/语法高亮、终端 SSH/Chroot/vim、Ctrl 组合键&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;🎨 &lt;strong&gt;AI 创作&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;绘图工具包（OpenAI/Qwen/NanoBanana）、图片搜索/下载&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;🔍 &lt;strong&gt;搜索引擎&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;深度搜索、DuckDuckGo、Tavily、谷歌学术、Bing、Sogou、Quark、百度地图集成&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;🧩 &lt;strong&gt;工具包 &amp;amp; 工作流&lt;/strong&gt;&lt;/td&gt; 
    &lt;td&gt;工具包生态/包管理、工作流自动化、定时触发、语音唤醒触发&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;🎨 界面定制（点击展开）&lt;/b&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;✨ &lt;strong&gt;主题系统&lt;/strong&gt;：自定义颜色、字体、间距、内边距&lt;/li&gt; 
  &lt;li&gt;🌍 &lt;strong&gt;多语言支持&lt;/strong&gt;：中英覆盖，自动随系统语言切换&lt;/li&gt; 
  &lt;li&gt;🔤 &lt;strong&gt;字体与排版&lt;/strong&gt;：全局字体大小、聊天边距自定义&lt;/li&gt; 
  &lt;li&gt;🎭 &lt;strong&gt;桌宠功能&lt;/strong&gt;：WebP动画支持、自定义表情、悬浮窗显示&lt;/li&gt; 
  &lt;li&gt;📱 &lt;strong&gt;布局优化&lt;/strong&gt;：隐藏状态栏、自定义工具栏、平板适配&lt;/li&gt; 
  &lt;li&gt;🎨 &lt;strong&gt;Markdown渲染&lt;/strong&gt;：LaTeX公式（支持左右滚动）、代码高亮、表格、Mermaid图表&lt;/li&gt; 
  &lt;li&gt;🧾 &lt;strong&gt;信息展示&lt;/strong&gt;：思考链折叠、HTML块预览、代码/思考块高度限制&lt;/li&gt; 
  &lt;li&gt;🪟 &lt;strong&gt;悬浮窗体验&lt;/strong&gt;：悬浮窗/气泡模式头像隐藏、圈选识屏、全屏预览&lt;/li&gt; 
  &lt;li&gt;🧮 &lt;strong&gt;数据统计&lt;/strong&gt;：Token 用量统计、模型饼图&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;🔗 集成能力（点击展开）&lt;/b&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;🤖 &lt;strong&gt;Tasker集成&lt;/strong&gt;：触发自定义AI代理事件，深度自动化&lt;/li&gt; 
  &lt;li&gt;🌐 &lt;strong&gt;MCP/Skill 市场&lt;/strong&gt;：一键安装插件、远程MCP、自动描述、uvx/npx支持&lt;/li&gt; 
  &lt;li&gt;🔌 &lt;strong&gt;多模型支持&lt;/strong&gt;：OpenAI、Claude、Gemini、百灵、OpenRouter、LMStudio&lt;/li&gt; 
  &lt;li&gt;🧪 &lt;strong&gt;模型与提示词管理&lt;/strong&gt;：多配置/参数自定义、提示词市场&lt;/li&gt; 
  &lt;li&gt;🔐 &lt;strong&gt;权限系统&lt;/strong&gt;：工具级权限控制与安全提示&lt;/li&gt; 
  &lt;li&gt;🔑 &lt;strong&gt;密钥池与统计&lt;/strong&gt;：批量测试/导入、Token 统计（模型饼图）&lt;/li&gt; 
  &lt;li&gt;🗂️ &lt;strong&gt;工作区绑定&lt;/strong&gt;：支持 SAF / SFTP / SSH 工作区绑定与文件访问&lt;/li&gt; 
  &lt;li&gt;🖱️ &lt;strong&gt;自动点击 Agent&lt;/strong&gt;：AutoGLM + UI Tree 双通道，支持自动化操作&lt;/li&gt; 
  &lt;li&gt;📊 &lt;strong&gt;工具并行&lt;/strong&gt;：只读工具并行执行，提升响应速度&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;💬 对话与记忆管理（点击展开）&lt;/b&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;🧠 &lt;strong&gt;记忆库&lt;/strong&gt;：自动分类/搜索、时间查询、导入导出、附件记忆&lt;/li&gt; 
  &lt;li&gt;💬 &lt;strong&gt;对话管理&lt;/strong&gt;：自动总结与总结编辑、历史分组/分支/迁移、对话锁定、角色卡独立历史&lt;/li&gt; 
  &lt;li&gt;⚡ &lt;strong&gt;对话并行&lt;/strong&gt;：并行对话处理、工具包 state 决策&lt;/li&gt; 
  &lt;li&gt;🤖 &lt;strong&gt;角色互动&lt;/strong&gt;：角色卡互聊、查看历史、思考链折叠&lt;/li&gt; 
  &lt;li&gt;📦 &lt;strong&gt;聊天记录&lt;/strong&gt;：多格式导入导出、历史备份与恢复&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;💾 数据与备份（点击展开）&lt;/b&gt;&lt;/summary&gt; 
 &lt;ul&gt; 
  &lt;li&gt;🗂️ &lt;strong&gt;全局/自动备份&lt;/strong&gt;：数据库定时备份，支持损坏恢复（排除 MCP/Skill/终端/包）&lt;/li&gt; 
  &lt;li&gt;🎭 &lt;strong&gt;角色卡&lt;/strong&gt;：备份、导出（酒馆/JSON）、二维码分享&lt;/li&gt; 
  &lt;li&gt;🧷 &lt;strong&gt;工作区&lt;/strong&gt;：SAF/SFTP/SSH 绑定、代码编辑/语法高亮、Git ignore&lt;/li&gt; 
  &lt;li&gt;🧰 &lt;strong&gt;Skill 管理&lt;/strong&gt;：Skill 开关、仓库解析与缓存下载&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📸 功能展示&lt;/h2&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td align=&quot;center&quot; width=&quot;33%&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/AAswordman/Operit/main/docs/assets/webdev/c851e530a258bbbbf41f87dcb907b14.png&quot; width=&quot;100%&quot; /&gt;&lt;br /&gt; &lt;b&gt;Web开发&lt;/b&gt;&lt;br /&gt; 在手机上设计网页并导出为独立应用 &lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;33%&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/AAswordman/Operit/main/docs/assets/floating_and_attach.jpg&quot; height=&quot;200px&quot; /&gt;&lt;br /&gt; &lt;b&gt;悬浮窗 &amp;amp; 附件&lt;/b&gt;&lt;br /&gt; 随时调用，便捷分享 &lt;/td&gt; 
   &lt;td align=&quot;center&quot; width=&quot;33%&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/AAswordman/Operit/main/docs/assets/84ea63a7437eae374f53c5b64f52c24d.png&quot; height=&quot;200px&quot; /&gt;&lt;br /&gt; &lt;b&gt;插件市场&lt;/b&gt;&lt;br /&gt; 丰富的MCP生态 &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🚀 快速开始&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;项目&lt;/th&gt; 
   &lt;th&gt;说明&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;📋 &lt;strong&gt;系统要求&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Android 8.0+ (API 26+)，建议 4GB+ 内存，200MB+ 存储&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;📥 &lt;strong&gt;下载安装&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/AAswordman/Operit/releases&quot;&gt;Release页面&lt;/a&gt; 下载最新APK&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;📖 &lt;strong&gt;使用指南&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://aaswordman.github.io/OperitWeb&quot;&gt;完整文档&lt;/a&gt; 包含详细教程和示例&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;安全提示：&lt;/strong&gt; 为确保您的数据安全，请务必从官方 &lt;a href=&quot;https://github.com/AAswordman/Operit/releases&quot;&gt;Release页面&lt;/a&gt; 或 &lt;a href=&quot;https://aaswordman.github.io/OperitWeb/&quot;&gt;官方网站&lt;/a&gt; 下载本应用。通过未知渠道下载的安装包可能被恶意修改，从而导致隐私泄露或设备被监听。&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;strong&gt;安装步骤：&lt;/strong&gt; 下载APK → 安装启动 → 按引导配置 → 开始使用 ✨&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🔮 TODO / 开发计划&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;UI 自动化与截图管线&lt;/strong&gt; 
  &lt;ul&gt; 
   &lt;li&gt;✅ 已支持无障碍 / ADB / Root 三种权限模式的 UI 自动化&lt;/li&gt; 
   &lt;li&gt;✅ 支持 adb root 场景下的虚拟屏幕/多显示器（&lt;code&gt;display&lt;/code&gt; 参数）&lt;/li&gt; 
   &lt;li&gt;✅ UI Tree 支持 AutoGLM + 本地 uiautomator dump 双方案&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📅 版本更新历程&lt;/h2&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt;
   &lt;th&gt;版本&lt;/th&gt;
   &lt;th&gt;发布日期&lt;/th&gt;
   &lt;th&gt;核心更新&lt;/th&gt;
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.10.1&lt;/b&gt;&lt;br /&gt;&lt;sub&gt;最新&lt;/sub&gt;&lt;/td&gt; 
   &lt;td&gt;2026-04-17&lt;/td&gt; 
   &lt;td&gt; • &lt;b&gt;内置浏览器与网页自动化&lt;/b&gt;：大幅增强内置浏览器，支持标签页、历史、书签、权限、多窗口、最小化与视口控制，并补齐浏览器脚本的导入、安装、启停、存储与页面菜单能力&lt;br /&gt; • &lt;b&gt;虚拟形象与界面定制&lt;/b&gt;：支持 FBX 虚拟形象并升级 MMD 预览，新增液态玻璃主题效果，并增强侧边栏、聊天气泡与输入栏的外观自定义&lt;br /&gt; • &lt;b&gt;插件、工作区与上下文增强&lt;/b&gt;：支持通过配置编辑器调试和自动编写 Operit 插件，新增本地 HTTP 对话入口、工作区重命名与规则文件自动读取，并增强历史跳转、双向分页与上下文自动补充能力&lt;br /&gt; • &lt;b&gt;稳定性与性能优化&lt;/b&gt;：修复工具权限、HTTP TTS、SSH/tmux 长输出、历史跳转、GIF/公式/Markdown 渲染、MCP 配置与统计等问题，并持续优化对话链路、深度搜索、记忆系统、浏览器与包管理器 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.10.0&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2026-03-18&lt;/td&gt; 
   &lt;td&gt; • &lt;b&gt;角色卡群聊与 AI 自配置&lt;/b&gt;：支持多个角色卡群聊与 @ 交互，新增 AI 自我设置能力，可辅助配置 MCP、Skill、STT、TTS 与模型参数&lt;br /&gt; • &lt;b&gt;主题与交互升级&lt;/b&gt;：新增分组折叠消息、气泡主题及字体/颜色/背景自定义、更宽气泡、输入框液态玻璃、长按图标直达设置/语音模式，以及助手形象与 MP4 虚拟形象支持&lt;br /&gt; • &lt;b&gt;工具与平台扩展&lt;/b&gt;：新增 Ollama、NVIDIA、OpenAI Response 通用模式，补充独立 SSH 插件工具包、Java Bridge、APKTool 插件、Web 自动化下载、Markdown 音视频渲染、xAI 视频生成、工作流取消、终端自定义按键与消息队列&lt;br /&gt; • &lt;b&gt;修复与性能优化&lt;/b&gt;：修复语音识别、记忆并发、悬浮窗交互、终端显示、Web 自动化全屏、MNN Tool Call 等问题，并优化记忆召回、市场搜索、工作区模板、grep 工具性能与 Agent 重试稳定性 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.9.1&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2026-02-20&lt;/td&gt; 
   &lt;td&gt; • &lt;b&gt;稳定性修复&lt;/b&gt;：集中修复 1.9.0 多项问题，提升整体可用性与流畅性&lt;br /&gt; • &lt;b&gt;终端与工具调用&lt;/b&gt;：增强终端工具，修复交互 UI 卡住、严格工具调用历史工具报错、Windows 控制器 raw 命令执行问题&lt;br /&gt; • &lt;b&gt;MCP 与记忆库&lt;/b&gt;：修复远程 MCP 无法关闭，重做记忆库写入逻辑，支持外接向量模型并新增连接修改工具&lt;br /&gt; • &lt;b&gt;功能补充与界面修复&lt;/b&gt;：新增未绑定角色卡聊天记录删除、工作流批量删除与执行日志查看，修复输入法/暗色输入框/主题透明度/工具箱包管理等问题 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.9.0&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2026-02-17&lt;/td&gt; 
   &lt;td&gt; • &lt;b&gt;移动端网页自动操作&lt;/b&gt;：新增网页操作能力，支持工作区 Web 项目 CORS 绕过访问外部网页&lt;br /&gt; • &lt;b&gt;Windows 终端操作&lt;/b&gt;：支持 Windows 命令操作，可控制 Codex 等 CLI，新增严格工具调用模式补充兼容性&lt;br /&gt; • &lt;b&gt;工具与系统扩展&lt;/b&gt;：新增 SQL 查看器、Android 工作区模板、OpenAI response 兼容供应商、skill 直接输入添加、统计饼图&lt;br /&gt; • &lt;b&gt;修复与优化&lt;/b&gt;：修复图片读取/上下文总结/特殊符号截断/ffmpeg 等问题，增强模型连通性测试输出与 MCP 加载提示 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.8.1&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2026-02-03&lt;/td&gt; 
   &lt;td&gt; • &lt;b&gt;llama.cpp 本地推理&lt;/b&gt;：支持 GGUF 本地模型与相关工具&lt;br /&gt; • &lt;b&gt;工具与界面&lt;/b&gt;：图片搜索/下载、HTML 块预览、代码/思考块高度限制、气泡头像隐藏、Token 饼图、思考链折叠&lt;br /&gt; • &lt;b&gt;数据与备份&lt;/b&gt;：全局备份（排除 MCP/skill/终端/包）+ 角色卡备份/导出/分享、Skill 开关、密钥池导入/批量测试、工作区支持 SAF 绑定&lt;br /&gt; • &lt;b&gt;修复&lt;/b&gt;：AI 朗读回声录制、悬浮窗 Token 统计、角色编辑键盘遮挡、深搜 Token 爆炸、MCP 启动、工作流悬浮窗退出、表格截断、硅基流动语音打断 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.8.0&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2026-01-13&lt;/td&gt; 
   &lt;td&gt; • &lt;b&gt;工作流系统&lt;/b&gt;：支持计算/传入传出/执行等能力，并支持语音唤醒触发&lt;br /&gt; • &lt;b&gt;语音唤醒&lt;/b&gt;：直接进入语音对话模式，支持语音下关键词快速附件附着&lt;br /&gt; • &lt;b&gt;对话并行&lt;/b&gt;：支持对话并行处理，工具包 state 机制可动态决定工具&lt;br /&gt; • &lt;b&gt;新增与优化&lt;/b&gt;：记忆时间查询、自动备份、OpenAI 绘图/语音供应商、MCP 启动优化、终端 chroot、修复多项 BUG &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.7.1&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2025-12-31&lt;/td&gt; 
   &lt;td&gt; • &lt;b&gt;Root 虚拟屏幕自动化&lt;/b&gt;：支持 root 启动虚拟屏幕，AutoGLM 并发多窗口任务&lt;br /&gt; • &lt;b&gt;Skill 生态&lt;/b&gt;：新增 Skill 协议与 Skill 市场，并支持 BETA 计划追踪 nightly&lt;br /&gt; • &lt;b&gt;交互增强&lt;/b&gt;：总结编辑、网页访问改悬浮窗模式、圈选识屏、对话锁定&lt;br /&gt; • &lt;b&gt;修复与优化&lt;/b&gt;：大图崩溃、ToolCall 错误、代码块换行、启动速度与虚拟屏稳定性 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.7.0&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2025-12-19&lt;/td&gt; 
   &lt;td&gt; • &lt;b&gt;GUI 自动化里程碑&lt;/b&gt;：Autoglm + 虚拟屏幕（可在设置中开关虚拟屏幕）&lt;br /&gt; • &lt;b&gt;自动化增强&lt;/b&gt;：一键 Autoglm 配置与单独执行器，虚拟屏开关逻辑与截图质量自定义&lt;br /&gt; • &lt;b&gt;体验优化&lt;/b&gt;：密钥非聚焦显示为星号，强制不允许 Autoglm 设置为主模型&lt;br /&gt; • &lt;b&gt;工具扩展&lt;/b&gt;：NanoBanana 绘图包、apply file 非覆盖支持、MNN STT 等 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.6.3&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2025-12-08&lt;/td&gt; 
   &lt;td&gt; • &lt;b&gt;原生ToolCall支持&lt;/b&gt;：支持原生模型工具调用、DeepSeek思考工具&lt;br /&gt; • &lt;b&gt;工作区与终端增强&lt;/b&gt;：新建时选择项目类型、SSH文件系统连接、终端无障碍支持&lt;br /&gt; • &lt;b&gt;模型与消息显示&lt;/b&gt;：支持模型配置多选、消息显示模型名称与提供者&lt;br /&gt; • &lt;b&gt;优化与修复&lt;/b&gt;：优化悬浮窗、修复终端卡顿、迁移工作区到内部存储 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.6.2&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2025-11-20&lt;/td&gt; 
   &lt;td&gt; • &lt;b&gt;对话管理增强&lt;/b&gt;：长按开分支、历史记录分类显示、批量迁移&lt;br /&gt; • &lt;b&gt;模型配置优化&lt;/b&gt;：配置重命名、上下文绑定、谷歌原生搜索&lt;br /&gt; • &lt;b&gt;Bug修复&lt;/b&gt;：界面切换、粗体换行、气泡模式等问题&lt;br /&gt; • 增加crossref学术论文检索包、升级代码编辑器 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.6.1&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2025-11-05&lt;/td&gt; 
   &lt;td&gt; • &lt;b&gt;性能大优化&lt;/b&gt;：重做UI绘制，大幅提升流畅性&lt;br /&gt; • &lt;b&gt;AI视觉增强&lt;/b&gt;：直接识别图片、间接识别能力&lt;br /&gt; • &lt;b&gt;终端SSH&lt;/b&gt;：支持SSH连接和反向挂载手机文件系统&lt;br /&gt; • 自动总结机制、深度搜索、新授权系统 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.6.0&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2025-10-21&lt;/td&gt; 
   &lt;td&gt; • &lt;b&gt;MNN本地模型&lt;/b&gt;支持&lt;br /&gt; • &lt;b&gt;记忆库大更新&lt;/b&gt;：AI自动分类、智能搜索、导入导出&lt;br /&gt; • &lt;b&gt;终端优化&lt;/b&gt;：vim支持、进度条、自定义软件源&lt;br /&gt; • Tasker集成、桌宠功能、故事线标签 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.5.2&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2025-10-05&lt;/td&gt; 
   &lt;td&gt; • MCP增强：uvx/npx支持、启动加速&lt;br /&gt; • 工作区 Git ignore&lt;br /&gt; • 相机拍照、HTML渲染、正则过滤 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.5.0&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2025-09&lt;/td&gt; 
   &lt;td&gt; • &lt;b&gt;Ubuntu 24终端&lt;/b&gt;完整集成&lt;br /&gt; • MCP市场上线&lt;br /&gt; • 桌宠功能、深度搜索模式 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.4.0&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2025-08&lt;/td&gt; 
   &lt;td&gt; • 多工具并行执行&lt;br /&gt; • 人设卡系统、角色选择器&lt;br /&gt; • PNG角色卡导入 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.3.0&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2025-08&lt;/td&gt; 
   &lt;td&gt; • Web开发功能&lt;br /&gt; • 主题选择器、自定义UI&lt;br /&gt; • Anthropic Claude支持 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.2.x&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2025-07&lt;/td&gt; 
   &lt;td&gt; • 语音对话系统&lt;br /&gt; • 知识库功能&lt;br /&gt; • DragonBones动画支持 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.1.x&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2025-06&lt;/td&gt; 
   &lt;td&gt; • MCP协议支持&lt;br /&gt; • OCR识别、悬浮窗&lt;br /&gt; • Gemini完整支持 &lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;b&gt;v1.0.0&lt;/b&gt;&lt;/td&gt; 
   &lt;td&gt;2025-05&lt;/td&gt; 
   &lt;td&gt; • 首个正式版本&lt;br /&gt; • 基础AI对话、工具调用&lt;br /&gt; • Shizuku/Root集成 &lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;📝 &lt;strong&gt;完整更新日志&lt;/strong&gt;：访问 &lt;a href=&quot;https://github.com/AAswordman/Operit/releases&quot;&gt;Releases 页面&lt;/a&gt; 查看每个版本的详细更新内容&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;hr /&gt; 
&lt;h2&gt;👨‍💻 开源共创&lt;/h2&gt; 
&lt;p&gt;欢迎加入 Operit 开源生态！我们欢迎各种贡献：第三方脚本、MCP插件、核心功能开发。&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;开发者须知：&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;📚 &lt;a href=&quot;https://raw.githubusercontent.com/AAswordman/Operit/main/docs/CONTRIBUTING.md&quot;&gt;开源共创指南&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/AAswordman/Operit/main/docs/SCRIPT_DEV_GUIDE.md&quot;&gt;脚本开发指南&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;📦 构建项目需从 &lt;a href=&quot;https://drive.google.com/drive/folders/1g-Q_i7cf6Ua4KX9ZM6V282EEZvTVVfF7?usp=sharing&quot;&gt;Google Drive&lt;/a&gt; 下载依赖库压缩包（&lt;code&gt;models.zip&lt;/code&gt;、&lt;code&gt;subpack.zip&lt;/code&gt;、&lt;code&gt;jniLibs.zip&lt;/code&gt;、&lt;code&gt;libs.zip&lt;/code&gt;）&lt;/li&gt; 
 &lt;li&gt;💬 加入社区讨论：&lt;a href=&quot;https://qm.qq.com/q/Sa4fKEH7sO&quot;&gt;QQ群&lt;/a&gt; | &lt;a href=&quot;https://discord.gg/YnV9MWurRF&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;💖 贡献者&lt;/h3&gt; 
&lt;p&gt;感谢所有为 Operit AI 做出贡献的人！&lt;/p&gt; 
&lt;a href=&quot;https://github.com/AAswordman/Operit/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=AAswordman/Operit&quot; /&gt; &lt;/a&gt; 
&lt;h2&gt;💖 支持开发&lt;/h2&gt; 
&lt;p&gt;如果 Operit AI 对您有帮助，欢迎自愿支持项目持续开发与基础运营：&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;海外支持可使用 &lt;a href=&quot;https://www.patreon.com/c/aaswordsman&quot;&gt;Patreon&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;境内支持可使用 &lt;a href=&quot;https://afdian.com/a/aaswordsman&quot;&gt;爱发电&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;赞助完全自愿，不与任何功能、额度、更新、答疑或其他权益挂钩&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;即使不赞助，也不影响正常使用、获取更新或访问开源代码&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;您也可以直接使用 GitHub 仓库顶部的 &lt;code&gt;Sponsor&lt;/code&gt; 按钮进入赞助页面&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📄 许可证&lt;/h2&gt; 
&lt;p&gt;本项目采用 &lt;a href=&quot;https://www.gnu.org/licenses/lgpl-3.0.html&quot;&gt;GNU LGPLv3&lt;/a&gt; 许可证。&lt;/p&gt; 
&lt;p&gt;简单来说，这意味着：&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;您可以自由地使用、修改和分发本项目的代码。&lt;/li&gt; 
 &lt;li&gt;如果您修改了代码并进行分发，您也必须以 LGPLv3 许可证开源您修改过的部分。&lt;/li&gt; 
 &lt;li&gt;详细信息请参阅 &lt;a href=&quot;https://raw.githubusercontent.com/AAswordman/Operit/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt; 文件。&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📝 问题反馈&lt;/h2&gt; 
&lt;p&gt;遇到问题或有建议？欢迎 &lt;a href=&quot;https://github.com/AAswordman/Operit/issues&quot;&gt;提交 Issue&lt;/a&gt;！&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;提交指南：&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;📝 清晰描述问题/建议，提供复现步骤&lt;/li&gt; 
 &lt;li&gt;📱 附上设备型号、系统版本等信息&lt;/li&gt; 
 &lt;li&gt;📸 如有可能，提供截图或录屏&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;h3&gt;⭐ 如果觉得项目不错，请给我们一个 Star ⭐&lt;/h3&gt; 
 &lt;p&gt;&lt;b&gt;🚀 帮助我们推广，让更多人了解 Operit AI 🚀&lt;/b&gt;&lt;/p&gt; 
 &lt;br /&gt; 
 &lt;p&gt;&lt;sub&gt;Made with ❤️ by the Operit Team&lt;/sub&gt;&lt;/p&gt; 
&lt;/div&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/948839453/15a89769-0c2c-4b5f-a1db-303ce97cfb76" medium="image" />
      
    </item>
    
    <item>
      <title>sameerasw/essentials</title>
      <link>https://github.com/sameerasw/essentials</link>
      <description>&lt;p&gt;Essential tools and mods for Android nerds&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Essentials&lt;/h1&gt; 
&lt;p&gt;Essential tools, mods and workarounds for Pixels and other Androids&lt;/p&gt; 
&lt;h2&gt;&lt;a href=&quot;https://sameerasw.com/essentials&quot;&gt;sameerasw.com/essentials&lt;/a&gt;&lt;/h2&gt; 
&lt;br /&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img width=&quot;99%&quot; src=&quot;https://github.com/user-attachments/assets/c0849951-4cf0-4a91-9964-f7c212977af1&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://www.reddit.com/r/MadebySameerasw&quot;&gt;&lt;img width=&quot;99%&quot; alt=&quot; reddit-banner&quot; src=&quot;https://github.com/user-attachments/assets/a5197458-d64a-4c6a-a6a3-9e1f36030205&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://t.me/tidwib&quot;&gt;&lt;img width=&quot;99%&quot; alt=&quot; telegram-banner&quot; src=&quot;https://github.com/user-attachments/assets/425b3cc1-9ac6-46ec-8f48-71c7af9c9ca2&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;br /&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/sameerasw/essentials/releases/latest&quot;&gt;&lt;img alt=&quot;GitHub Downloads (specific asset, all releases)&quot; src=&quot;https://img.shields.io/github/downloads/sameerasw/essentials/app-release.apk?displayAssetName=false&amp;amp;style=for-the-badge&amp;amp;logo=android&amp;amp;logoColor=%23fff&amp;amp;labelColor=%2348C&amp;amp;color=%2348C&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/sameerasw/essentials/issues/new?template=bug_report.md&quot;&gt;&lt;img alt=&quot;GitHub Issues or Pull Requests by label&quot; src=&quot;https://img.shields.io/github/issues/sameerasw/essentials/bug?style=for-the-badge&amp;amp;logo=openbugbounty&amp;amp;logoColor=%23fff&amp;amp;label=bug%3F&amp;amp;labelColor=%232a6&amp;amp;color=%232a6&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/sameerasw/essentials/issues/new?template=feature_request.md&quot;&gt;&lt;img alt=&quot;GitHub Issues or Pull Requests by label&quot; src=&quot;https://img.shields.io/github/issues/sameerasw/essentials/enhancement?style=for-the-badge&amp;amp;logo=apachespark&amp;amp;logoColor=%23fff&amp;amp;label=Feature%20request&amp;amp;labelColor=%23a26&amp;amp;color=%23a26&quot; /&gt; &lt;/a&gt;  &lt;a href=&quot;https://sameerasw.com&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/My%20website-orange?style=for-the-badge&amp;amp;logo=googlechrome&amp;amp;logoColor=%23000&amp;amp;labelColor=%233AFFB8&amp;amp;color=%233AFFB8&quot; alt=&quot;My website&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://t.me/tidwib&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Community-2CA5E0?style=for-the-badge&amp;amp;logo=telegram&amp;amp;logoColor=white&quot; alt=&quot;Community&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;h3 align=&quot;center&quot;&gt; &lt;strong&gt;Featuring Essentials&lt;/strong&gt; &lt;/h3&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://youtu.be/7favc9MDedQ?si=dduc7452R5Yxj7Aa&amp;amp;t=79&quot;&gt;&lt;img width=&quot;20%&quot; alt=&quot;Frame 6&quot; src=&quot;https://github.com/user-attachments/assets/8bda579e-3ab6-4255-955e-7755598511f2&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://youtu.be/iY3FBMTA15A?si=L2XX4sZQn3iKf2EZ&amp;amp;t=753&quot;&gt;&lt;img width=&quot;20%&quot; alt=&quot;Frame 7&quot; src=&quot;https://github.com/user-attachments/assets/abab16b1-3750-4c0e-8a15-4928cb9253d4&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://youtu.be/HE0s76z4Afs&quot;&gt;&lt;img width=&quot;20%&quot; alt=&quot;Frame 7&quot; src=&quot;https://github.com/user-attachments/assets/02643ad6-e221-4fcc-bd40-e0c100af3d69&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.androidauthority.com/good-lock-for-pixel-essentials-app-hands-on-3670994/&quot;&gt;&lt;img width=&quot;20%&quot; alt=&quot;Frame 7&quot; src=&quot;https://github.com/user-attachments/assets/5469b309-6929-4775-93c5-7ee2f0d57ba1&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;h2&gt;Navigation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sameerasw/essentials/main/#features&quot;&gt;Features&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sameerasw/essentials/main/#requirements&quot;&gt;Requirements&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sameerasw/essentials/main/#screenshots&quot;&gt;Screenshots&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sameerasw/essentials/main/#installation&quot;&gt;Installation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sameerasw/essentials/main/#shell-providers-shizuku--root&quot;&gt;Shell Providers (Shizuku &amp;amp; Root)&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sameerasw/essentials/main/#how-to-grant-accessibility-permissions&quot;&gt;Accessibility Permissions&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sameerasw/essentials/main/#localization&quot;&gt;Localization&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/sameerasw/essentials/main/#contributing&quot;&gt;Contributing&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Extension&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/sameerasw/essentials-wear&quot;&gt;WearOS Companion app&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h1&gt;Features&lt;/h1&gt; 
&lt;h4&gt;Sound and Haptics&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Sound mode switcher&lt;/li&gt; 
 &lt;li&gt;Ambient music glance - Media playback on AOD and screensaver&lt;/li&gt; 
 &lt;li&gt;Call vibrations - For call accept, decline and ending&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Security and Privacy&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Screen locked security - Disable QS tiles while locked&lt;/li&gt; 
 &lt;li&gt;App lock&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Notifications and Alerts&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Notification lighting - Edge lighting and more alerts for notifications&lt;/li&gt; 
 &lt;li&gt;Flashlight pulse - Pulse flashlight for notifications&lt;/li&gt; 
 &lt;li&gt;Snooze system notifications&lt;/li&gt; 
 &lt;li&gt;Battery notification for all your connected devices&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Input and Actions&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Link actions - Intercept and share links from default apps&lt;/li&gt; 
 &lt;li&gt;Button remap&lt;/li&gt; 
 &lt;li&gt;Keyboard&lt;/li&gt; 
 &lt;li&gt;Circle to search automations&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Widgets&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Screen off empty widget&lt;/li&gt; 
 &lt;li&gt;Batteries&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Display&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Customize statusbar icons and modules&lt;/li&gt; 
 &lt;li&gt;Dynamic Always on Display&lt;/li&gt; 
 &lt;li&gt;Caffeinate to keep screen awake&lt;/li&gt; 
 &lt;li&gt;Dynamic night light - App based night light&lt;/li&gt; 
 &lt;li&gt;Scale and animation adjustments&lt;/li&gt; 
 &lt;li&gt;Glove mode&lt;/li&gt; 
 &lt;li&gt;Hide gesture bar&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Watch&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Sync all calendars to your WearOS watch periodically&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Other&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Maps power saving mode - For not just Pixel 10, Any Android device&lt;/li&gt; 
 &lt;li&gt;Are we there yet? - Get reminded when your stop is closeby&lt;/li&gt; 
 &lt;li&gt;Watermark - Add EXIF data and logos to captured photos&lt;/li&gt; 
 &lt;li&gt;Flashlight enhancements - With brightness controls and global fade-in-out effect&lt;/li&gt; 
 &lt;li&gt;Private DNS - Pick your custom DNS or cycle through them easily&lt;/li&gt; 
 &lt;li&gt;Your Android - Everything about your device in one place&lt;/li&gt; 
 &lt;li&gt;Eye dropper - Android 17 color picker&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;DIY&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Automate things yourself and make custom triggers&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;App Freezing&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Save power and less distractions by freezing away rarely used apps&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;App Updater&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Check for sideloaded app updates directly from GitHub&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Quick Settings Tiles&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Toggle UI blur&lt;/li&gt; 
 &lt;li&gt;Toggle chat bubbles&lt;/li&gt; 
 &lt;li&gt;Toggle sensitive content on lock screen&lt;/li&gt; 
 &lt;li&gt;Toggle tap to wake&lt;/li&gt; 
 &lt;li&gt;Toggle AOD&lt;/li&gt; 
 &lt;li&gt;Caffeinate controls&lt;/li&gt; 
 &lt;li&gt;Charging optimization (Pixel)&lt;/li&gt; 
 &lt;li&gt;Sound mode switcher&lt;/li&gt; 
 &lt;li&gt;Mono audio toggle&lt;/li&gt; 
 &lt;li&gt;Flashlight controls and brightness adjustment&lt;/li&gt; 
 &lt;li&gt;Stay awake&lt;/li&gt; 
 &lt;li&gt;NFC toggle&lt;/li&gt; 
 &lt;li&gt;Adaptive brightness toggle&lt;/li&gt; 
 &lt;li&gt;Private DNS toggle&lt;/li&gt; 
 &lt;li&gt;USB debugging toggle&lt;/li&gt; 
 &lt;li&gt;Developer options toggle&lt;/li&gt; 
 &lt;li&gt;Toggle other in-app features&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h1&gt;Requirements&lt;/h1&gt; 
&lt;ul&gt; 
 &lt;li&gt;Android 8.0 or higher (Feature support may vary)&lt;/li&gt; 
 &lt;li&gt;App permissions are optional, Grant necessary permissions for each feature&lt;/li&gt; 
 &lt;li&gt;Targetted for Google Pixel devices extending to other Androids&lt;/li&gt; 
 &lt;li&gt;Tested on Google Pixel 7 (Android 17 beta program).&lt;/li&gt; 
 &lt;li&gt; 
  &lt;blockquote&gt; 
   &lt;p&gt;Some features and functionalities might not work as expected on other OEMs. (Especially NothingOS and OneUI)&lt;/p&gt; 
  &lt;/blockquote&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h1&gt;Screenshots&lt;/h1&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://github.com/user-attachments/assets/a6a574ac-a1cb-44d5-b8c7-4fbca08647f1&quot; width=&quot;19%&quot; /&gt; &lt;img src=&quot;https://github.com/user-attachments/assets/e2b20eff-a232-420c-be90-b1308363f4f7&quot; width=&quot;19%&quot; /&gt; &lt;img src=&quot;https://github.com/user-attachments/assets/7fb98791-e4b4-43f1-98a8-4ab6aeb1d0f0&quot; width=&quot;19%&quot; /&gt; &lt;img src=&quot;https://github.com/user-attachments/assets/f126681d-ba53-4e45-911c-c9cb69350848&quot; width=&quot;19%&quot; /&gt; &lt;img src=&quot;https://github.com/user-attachments/assets/fc1593ec-ebf4-485a-bef4-7dd8ae6edb2a&quot; width=&quot;19%&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://github.com/user-attachments/assets/36dfaed1-89b5-4998-987b-40d5203598a7&quot; width=&quot;19%&quot; /&gt; &lt;img src=&quot;https://github.com/user-attachments/assets/22e9deea-6fb8-43bc-9923-f711f5447c70&quot; width=&quot;19%&quot; /&gt; &lt;img src=&quot;https://github.com/user-attachments/assets/d0eb5302-9432-4618-896b-7d9e5b7cf9cd&quot; width=&quot;19%&quot; /&gt; &lt;img src=&quot;https://github.com/user-attachments/assets/50d762a5-5bc6-46e7-a9ce-9ccfc207957f&quot; width=&quot;19%&quot; /&gt; &lt;img src=&quot;https://github.com/user-attachments/assets/d77c91c0-a1b3-45e4-9123-eee0f09a558f&quot; width=&quot;19%&quot; /&gt; &lt;/p&gt; 
&lt;h1&gt;Installation&lt;/h1&gt; 
&lt;p&gt;During the installation, you probably will see a warning similar to this claiming the app blocked during installation with no way to continue at all.&lt;/p&gt; 
&lt;img width=&quot;25%&quot; alt=&quot;image&quot; src=&quot;https://github.com/user-attachments/assets/d36c5a92-6d28-43c2-8431-92a7ffd7ac61&quot; /&gt; 
&lt;p&gt;This is a new restriction on Android with sideloaded apps that can receive sensitive permissions such as Accessibility or notification listener which both Essentials may utilize.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;You can still proceed avoiding this but you will have to temporarily disable Google Play Protect during the installation.&lt;/li&gt; 
 &lt;li&gt;But then again, you may notice the toggle for play protect in play store is enabled and grayed out not allowing to be disabled. This is due to the &quot;Advanced protection&quot; feature in Pixels that entirely blocks sideloading. So you will have to disable &quot;Advanced Protection&quot; as well.&lt;/li&gt; 
 &lt;li&gt;Follow belwo steps to avoid it during the installation.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/1402a374-3881-4afc-aff0-269517d0e28f&quot; alt=&quot;Screenshot_20260304-184451 Large&quot; /&gt; &lt;img src=&quot;https://github.com/user-attachments/assets/b7bf634a-6ea4-4b22-8ccf-09593bf7bbed&quot; alt=&quot;Screenshot_20260304-184409 Large&quot; /&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;h3&gt;IMPORTANT: Yes, this is very annoying but I understand the need of such prevention to avoid users installing potentially harmful apps from unknown sources. Well I hope you trust me to install my app but anyways, You should always verify the trusted source before installing any APK file from the internet. ʅ(°_°)ʃ&lt;/h3&gt; 
&lt;/blockquote&gt; 
&lt;h1&gt;Shell Providers (Shizuku &amp;amp; Root)&lt;/h1&gt; 
&lt;ul&gt; 
 &lt;li&gt;Essentials supports both &lt;strong&gt;Shizuku&lt;/strong&gt; and &lt;strong&gt;Root&lt;/strong&gt; as shell providers for executing advanced system-level commands.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Shizuku&lt;/strong&gt;: Make sure to get the latest version of Shizuku preferably from a fork such as &lt;a href=&quot;https://github.com/yangFenTuoZi/Shizuku&quot;&gt;yangFenTuoZi/Shizuku&lt;/a&gt; or other not from the Google Play as it is no longer well supported especially with Android 16 QPR1 up.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Root&lt;/strong&gt;: If your device is rooted, Essentials can bypass Shizuku and use root privileges directly for features like Button Remap and App Freezing.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h1&gt;How to grant accessibility permissions&lt;/h1&gt; 
&lt;img width=&quot;1280&quot; height=&quot;696&quot; alt=&quot;image&quot; src=&quot;https://github.com/user-attachments/assets/685115e7-4caa-4add-9196-d2e1e2c126a6&quot; /&gt; 
&lt;h1&gt;Localization&lt;/h1&gt; 
&lt;p&gt;Help us bring Essentials to more people around the world! If you&#39;re fluent in another language, you can contribute by translating the app on Crowdin.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://crowdin.com/project/essentials-android&quot;&gt;&lt;img src=&quot;https://badges.crowdin.net/essentials-android/localized.svg?sanitize=true&quot; alt=&quot;Crowdin&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://crowdin.com/project/essentials-android&quot;&gt;Support translation on Crowdin&lt;/a&gt;&lt;/p&gt; 
&lt;h1&gt;Contributing&lt;/h1&gt; 
&lt;a href=&quot;https://github.com/sameerasw/essentials/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=sameerasw/essentials&quot; /&gt; &lt;/a&gt; 
&lt;p&gt;We welcome contributions from the community! Whether you&#39;re fixing a bug, adding a new feature, or improving documentation, your help is appreciated.&lt;/p&gt; 
&lt;p&gt;Please read our &lt;a href=&quot;https://raw.githubusercontent.com/sameerasw/essentials/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; for details on our code of conduct, and the process for submitting pull requests to us.&lt;/p&gt; 
&lt;h1&gt;Thanks&lt;/h1&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/chalda-pnuzig/emojis.json&quot;&gt;chalda-pnuzig/emojis.json&lt;/a&gt; - Keyboard emojis&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/xav-ie/generate-kaomoji&quot;&gt;xav-ie/generate-kaomoji&lt;/a&gt; - Keyboard kaomojis&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/TebbeUbben/ChargeQuickTile&quot;&gt;TebbeUbben/ChargeQuickTile&lt;/a&gt; - Pixel charging QS&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h1&gt;Stars ❤️&lt;/h1&gt; 
&lt;a href=&quot;https://star-history.com/#sameerasw/essentials&amp;amp;Date&quot;&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://api.star-history.com/svg?repos=sameerasw/essentials&amp;amp;type=Date&amp;amp;theme=dark&quot; /&gt; 
  &lt;source media=&quot;(prefers-color-scheme: light)&quot; srcset=&quot;https://api.star-history.com/svg?repos=sameerasw/essentials&amp;amp;type=Date&quot; /&gt; 
  &lt;img alt=&quot;Star History Chart&quot; src=&quot;https://api.star-history.com/svg?repos=sameerasw/essentials&amp;amp;type=Date&quot; /&gt; 
 &lt;/picture&gt; &lt;/a&gt; 
&lt;hr /&gt; 
&lt;p align=&quot;center&quot;&gt; Last updated: 2026-04-06 &lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/1109834595/1428b353-e1d9-45e1-929d-3a66d4cb8e46" medium="image" />
      
    </item>
    
    <item>
      <title>OuterTune/OuterTune</title>
      <link>https://github.com/OuterTune/OuterTune</link>
      <description>&lt;p&gt;A Material 3 Music Player for Android with local file &amp; YouTube Music support. Forked from InnerTune&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;OuterTune&lt;/h1&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/OuterTune/OuterTune/lite/assets/outertune.webp&quot; height=&quot;88&quot; alt=&quot;OuterTune app icon&quot; /&gt; 
&lt;p&gt;A Material 3 music player for Android&lt;/p&gt; 
&lt;h2&gt;Hey there...&lt;/h2&gt; 
&lt;p&gt;I won&#39;t waste your time:&lt;/p&gt; 
&lt;p&gt;This app is no longer in active development. If you are looking for a replacement YouTube Music client, try &lt;a href=&quot;https://github.com/MetrolistGroup/Metrolist&quot;&gt;Metrolist&lt;/a&gt;, &lt;a href=&quot;https://github.com/koiverse/ArchiveTune&quot;&gt;ArchiveTune&lt;/a&gt;, etc. If you are looking for a local music player (or want to keep with with my antics...), then &lt;a href=&quot;https://github.com/FoedusProgramme/Gramophone&quot;&gt;Gramophone&lt;/a&gt; may just be for you.&lt;/p&gt; 
&lt;p&gt;Should anyone wish to take on the maintainer role and resurrect this app, feel free to contact us 😄&lt;/p&gt; 
&lt;p&gt;However, if you do want me to waste your time: &lt;a href=&quot;https://github.com/OuterTune/OuterTune/discussions/1116&quot;&gt;https://github.com/OuterTune/OuterTune/discussions/1116&lt;/a&gt;&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;Click to show old readme&lt;/summary&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/OuterTune/OuterTune/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/OuterTune/OuterTune?include_prereleases&quot; alt=&quot;Latest release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/OuterTune/OuterTune&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/OuterTune/OuterTune/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/downloads/OuterTune/OuterTune/total&quot; alt=&quot;Downloads&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;!-- use  &quot;⠀⠀&quot; for spacing --&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/OuterTune/OuterTune/releases/latest&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/OuterTune/OuterTune/lite/assets/badge_github.png&quot; alt=&quot;Get it on GitHub&quot; height=&quot;40&quot; /&gt;&lt;/a&gt;⠀⠀ &lt;a href=&quot;https://apt.izzysoft.de/fdroid/index/apk/com.dd3boh.outertune&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/OuterTune/OuterTune/lite/assets/IzzyOnDroidButtonGreyBorder.svg?sanitize=true&quot; alt=&quot;Get it on IzzyOnDroid&quot; height=&quot;40&quot; /&gt;&lt;/a&gt;⠀⠀ &lt;a href=&quot;https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22com.dd3boh.outertune%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2FDD3Boh%2FOuterTune%22%2C%22author%22%3A%22DD3Boh%22%2C%22name%22%3A%22OuterTune%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22dontSortReleasesList%5C%22%3Afalse%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Atrue%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22allowInsecure%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22A%20Material%203%20YouTube%20Music%20client%20%26%20local%20music%20player%20for%20Android%5C%22%7D%22%2C%22overrideSource%22%3A%22GitHub%22%7D&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/OuterTune/OuterTune/lite/assets/badge_obtainium.png&quot; alt=&quot;Get it on Obtainium&quot; height=&quot;40&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;h2&gt;Features&lt;/h2&gt; 
 &lt;p&gt;OuterTune is a supercharged fork of &lt;a href=&quot;https://github.com/z-huang/InnerTune&quot;&gt;InnerTune&lt;/a&gt;. This app is both a local media player, and a YouTube Music client.&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;YouTube Music client features 
   &lt;ul&gt; 
    &lt;li&gt;Song downloading (offline playback)&lt;/li&gt; 
    &lt;li&gt;Seamless playback: no ADs &amp;amp; background playback&lt;/li&gt; 
    &lt;li&gt;Account synchronization 
     &lt;ul&gt; 
      &lt;li&gt;Full playlist sync from the app to the remote account is temporally unavailable&lt;/li&gt; 
     &lt;/ul&gt; &lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Local audio file playback (ex. MP3, OGG, FLAC, etc.) 
   &lt;ul&gt; 
    &lt;li&gt;Play local and Youtube Music songs at the same time&lt;/li&gt; 
    &lt;li&gt;Uses a custom tag extractor instead of MediaStore&#39;s broken metadata extractor! (e.g tags delimited with \ now show up properly)&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;Sleek Material3 design&lt;/li&gt; 
  &lt;li&gt;Multiple queues&lt;/li&gt; 
  &lt;li&gt;Synchronized lyrics, and support for word by word/Karaoke lyrics formats (e.g LRC, TTML)&lt;/li&gt; 
  &lt;li&gt;Audio normalization, tempo/pitch adjustment, and various other audio effects&lt;/li&gt; 
  &lt;li&gt;Android Auto support&lt;/li&gt; 
  &lt;li&gt;Support for Android 8 (Oreo) and higher&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
  &lt;p class=&quot;markdown-alert-title&quot;&gt;
   &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
    &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
   &lt;/svg&gt;Note&lt;/p&gt;
  &lt;p&gt;Android 8 (Oreo) and higher is supported. While the app may work on Android 7.x (Nougat), we do not officially support this version&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;
  &lt;p class=&quot;markdown-alert-title&quot;&gt;
   &lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
    &lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
   &lt;/svg&gt;Note&lt;/p&gt;
  &lt;p&gt;Read our FAQ and guides on our &lt;a href=&quot;https://github.com/OuterTune/OuterTune/wiki/Frequently-Asked-Questions-(FAQ)&quot;&gt;wiki&lt;/a&gt;&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;h2&gt;Screenshots&lt;/h2&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/OuterTune/OuterTune/lite/assets/main-interface.jpg&quot; alt=&quot;Main player interface&quot; /&gt; 
 &lt;br /&gt;
 &lt;br /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/OuterTune/OuterTune/lite/assets/player.jpg&quot; alt=&quot;Player interface&quot; /&gt; 
 &lt;br /&gt;
 &lt;br /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/OuterTune/OuterTune/lite/assets/ytm-sync.jpg&quot; alt=&quot;Sync with YouTube Music&quot; /&gt; 
 &lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/OuterTune/OuterTune/lite/assets/gallery&quot;&gt;Full image gallery&lt;/a&gt;&lt;/p&gt; 
 &lt;div class=&quot;markdown-alert markdown-alert-warning&quot;&gt;
  &lt;p class=&quot;markdown-alert-title&quot;&gt;
   &lt;svg class=&quot;octicon octicon-alert mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
    &lt;path d=&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
   &lt;/svg&gt;Warning&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt; 
  &lt;p&gt;If you&#39;re in a region where YouTube Music is not supported, you won&#39;t be able to use this app &lt;em&gt;&lt;strong&gt;unless&lt;/strong&gt;&lt;/em&gt; you have a proxy or VPN to connect to a YTM supported region.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/details&gt; 
&lt;h2&gt;Building &amp;amp; Contributing&lt;/h2&gt; 
&lt;p&gt;We are looking for contributors, translators, and maintainers! If you would like to help out, or just wish to build the app yourself, please see the &lt;a href=&quot;https://raw.githubusercontent.com/OuterTune/OuterTune/lite/CONTRIBUTING.md&quot;&gt;building and contribution notes&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Submitting Translations&lt;/h3&gt; 
&lt;p&gt;We use Weblate to translate OuterTune. For more details or to submit translations, visit our &lt;a href=&quot;https://hosted.weblate.org/projects/outertune/&quot;&gt;Weblate page&lt;/a&gt;.&lt;/p&gt; 
&lt;a href=&quot;https://hosted.weblate.org/projects/outertune/&quot;&gt; &lt;img src=&quot;https://hosted.weblate.org/widget/outertune/multi-auto.svg?sanitize=true&quot; alt=&quot;Translation status&quot; /&gt; &lt;/a&gt; 
&lt;p&gt;Thank you very much for helping to make OuterTune accessible to many people worldwide.&lt;/p&gt; 
&lt;h2&gt;Support us&lt;/h2&gt; 
&lt;p&gt;If you like OuterTune, you&#39;re welcome to send a donation. Donations will support the development, including bug fixes and new features.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://paypal.me/DD3Boh&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/OuterTune/OuterTune/lite/assets/paypal.png&quot; alt=&quot;PayPal&quot; height=&quot;60&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Help &amp;amp; Support&lt;/h2&gt; 
&lt;p&gt;For bug reports and/or feature requests, please create a &lt;a href=&quot;https://github.com/OuterTune/OuterTune/issues&quot;&gt;GitHub issue&lt;/a&gt;. If you have want help with the app, check out the &lt;a href=&quot;https://github.com/OuterTune/OuterTune/discussions&quot;&gt;Discussion Forum&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;For all other inquiries NOT related to the app, you can contact us at &lt;a href=&quot;mailto:outertune@protonmail.com&quot;&gt;outertune@protonmail.com&lt;/a&gt;. &lt;strong&gt;This is NOT a support email!&lt;/strong&gt;&lt;/p&gt; 
&lt;h2&gt;Attribution&lt;/h2&gt; 
&lt;p&gt;Thanks to all our contributors! Check them out &lt;a href=&quot;https://github.com/OuterTune/OuterTune/graphs/contributors&quot;&gt;here&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/z-huang/InnerTune&quot;&gt;z-huang/InnerTune&lt;/a&gt; for providing an awesome base for this fork, none of this would have been possible without it.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=in.krosbits.musicolet&quot;&gt;Musicolet&lt;/a&gt; for inspiration of a local music player experience done right.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/FoedusProgramme/Gramophone&quot;&gt;Gramophone&lt;/a&gt; for emotional support, and a legendary lyrics parser&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.star-history.com/#outertune/outertune&amp;amp;Date&quot;&gt;&lt;img src=&quot;https://api.star-history.com/svg?repos=outertune/outertune&amp;amp;type=Date&quot; alt=&quot;Star History Chart&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Disclaimer&lt;/h2&gt; 
&lt;p&gt;This project and its contents are not affiliated with, funded, authorized, endorsed by, or in any way associated with YouTube, Google LLC or any of its affiliates and subsidiaries.&lt;/p&gt; 
&lt;p&gt;Any trademark, service mark, trade name, or other intellectual property rights used in this project are owned by the respective owners.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/c6d98127fa1023c8bcdfa06ffbc8318d475af4a851b6fbfc9a1e16a9e99cd539/OuterTune/OuterTune" medium="image" />
      
    </item>
    
    <item>
      <title>embabel/embabel-agent</title>
      <link>https://github.com/embabel/embabel-agent</link>
      <description>&lt;p&gt;Agent framework for the JVM. Pronounced Em-BAY-bel /ɛmˈbeɪbəl/&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Embabel Agent Framework&lt;/h1&gt; 
&lt;img align=&quot;left&quot; src=&quot;https://github.com/embabel/embabel-agent/raw/main/embabel-agent-api/images/315px-Meister_der_Weltenchronik_001.jpg?raw=true&quot; width=&quot;180&quot; /&gt; 
&lt;p&gt;&lt;a href=&quot;https://docs.embabel.com/embabel-agent/guide/0.1.2-SNAPSHOT/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/docs-live-brightgreen&quot; alt=&quot;Docs&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://mvnrepository.com/artifact/com.embabel.agent/embabel-agent-api&quot;&gt;&lt;img src=&quot;https://badges.mvnrepository.com/badge/com.embabel.agent/embabel-agent-api/badge.svg?label=MvnRepository&quot; alt=&quot;MvnRepository&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://github.com/embabel/embabel-agent/actions/workflows/maven.yml/badge.svg?sanitize=true&quot; alt=&quot;Build&quot; /&gt; &lt;a href=&quot;https://www.yourkit.com/&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Profiling-YourKit-blue&quot; alt=&quot;YourKit&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.ej-technologies.com/products/jprofiler/overview.html&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Profiled%20with-JProfiler-blue&quot; alt=&quot;JProfiler&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://sonarcloud.io/summary/new_code?id=embabel_embabel-agent&quot;&gt;&lt;img src=&quot;https://sonarcloud.io/api/project_badges/measure?project=embabel_embabel-agent&amp;amp;metric=alert_status&quot; alt=&quot;Quality Gate Status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/t6bjkyj93q&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/1277751399261798401?logo=discord&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/badge/kotlin-%237F52FF.svg?style=for-the-badge&amp;amp;logo=kotlin&amp;amp;logoColor=white&quot; alt=&quot;Kotlin&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/java-%23ED8B00.svg?style=for-the-badge&amp;amp;logo=openjdk&amp;amp;logoColor=white&quot; alt=&quot;Java&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/spring-%236DB33F.svg?style=for-the-badge&amp;amp;logo=spring&amp;amp;logoColor=white&quot; alt=&quot;Spring&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Spring%20Boot-6DB33F.svg?style=for-the-badge&amp;amp;logo=Spring-Boot&amp;amp;logoColor=white&quot; alt=&quot;Spring Boot&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/apache%20tomcat-%23F8DC75.svg?style=for-the-badge&amp;amp;logo=apache-tomcat&amp;amp;logoColor=black&quot; alt=&quot;Apache Tomcat&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Apache%20Maven-C71A36?style=for-the-badge&amp;amp;logo=Apache%20Maven&amp;amp;logoColor=white&quot; alt=&quot;Apache Maven&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/JUnit5-25A162.svg?style=for-the-badge&amp;amp;logo=JUnit5&amp;amp;logoColor=white&quot; alt=&quot;JUnit&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/chatGPT-74aa9c?style=for-the-badge&amp;amp;logo=openai&amp;amp;logoColor=white&quot; alt=&quot;ChatGPT&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/jinja-white.svg?style=for-the-badge&amp;amp;logo=jinja&amp;amp;logoColor=black&quot; alt=&quot;Jinja&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/JSON-000?logo=json&amp;amp;logoColor=fff&quot; alt=&quot;JSON&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/github%20actions-%232671E5.svg?style=for-the-badge&amp;amp;logo=githubactions&amp;amp;logoColor=white&quot; alt=&quot;GitHub Actions&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/SonarQube-black?style=for-the-badge&amp;amp;logo=sonarqube&amp;amp;logoColor=4E9BCD&quot; alt=&quot;SonarQube&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&amp;amp;logo=docker&amp;amp;logoColor=white&quot; alt=&quot;Docker&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/IntelliJIDEA-000000.svg?style=for-the-badge&amp;amp;logo=intellij-idea&amp;amp;logoColor=white&quot; alt=&quot;IntelliJ IDEA&quot; /&gt; &lt;a href=&quot;https://www.apache.org/licenses/LICENSE-2.0&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/embabel/embabel-agent?style=for-the-badge&amp;amp;logo=apache&amp;amp;color=brightgreen&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/embabel/embabel-agent/pulse&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/commit-activity/m/embabel/embabel-agent.svg?label=commits&amp;amp;style=for-the-badge&amp;amp;logo=git&amp;amp;logoColor=white&quot; alt=&quot;Commits&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt; 
&lt;p&gt;Embabel (Em-BAY-bel) is a framework for authoring agentic flows on the JVM that seamlessly mix LLM-prompted interactions with code and domain models. Supports intelligent path finding towards goals. Written in Kotlin but offers a natural usage model from Java. From the creator of Spring.&lt;/p&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt; 
&lt;h2&gt;Key Concepts&lt;/h2&gt; 
&lt;p&gt;Models agentic flows in terms of:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Actions&lt;/strong&gt;: Steps an agent takes&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Goals&lt;/strong&gt;: What an agent is trying to achieve&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Conditions&lt;/strong&gt;: Conditions to assess before executing an action or determining that a goal has been achieved. Conditions are reassessed after each action is executed.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Domain model&lt;/strong&gt;: Objects underpinning the flow and informing Actions, Goals and Conditions.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Plan&lt;/strong&gt;: A sequence of actions to achieve a goal. Plans are dynamically formulated by the system, not the programmer. The system replans after the completion of each action, allowing it to adapt to new information as well as observe the effects of the previous action. This is effectively an &lt;a href=&quot;https://en.wikipedia.org/wiki/OODA_loop&quot;&gt;OODA loop&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Application developers don&#39;t usually have to deal with these concepts directly, as most conditions result from data flow defined in code, allowing the system to infer pre and post conditions.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;These concepts underpin these differentiators versus other agent frameworks:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Sophisticated planning.&lt;/strong&gt; Goes beyond a finite state machine or sequential execution with nesting by introducing a true planning step, using a non-LLM AI algorithm. This enables the system to perform tasks it wasn’t programmed to do by combining known steps in a novel order, as well as make decisions about parallelization and other runtime behavior.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Superior extensibility and reuse&lt;/strong&gt;: Because of dynamic planning, adding more domain objects, actions, goals and conditions can extend the capability of the system, &lt;em&gt;without editing FSM definitions&lt;/em&gt; or existing code.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Strong typing and the benefits of object orientation&lt;/strong&gt;: Actions, goals and conditions are informed by a domain model, which can include behavior. Everything is strongly typed and prompts and manually authored code interact cleanly. No more magic maps. Enjoy full refactoring support.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Other benefits:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Platform abstraction&lt;/strong&gt;: Clean separation between programming model and platform internals allows running locally while potentially offering higher QoS in production without changing application code.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Designed for LLM mixing&lt;/strong&gt;: It is easy to build applications that mix LLMs, ensuring the most cost-effective yet capable solution. This enables the system to leverage the strengths of different models for different tasks. In particular, it facilitates the use of local models for point tasks. This can be important for cost and privacy.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Built on Spring and the JVM,&lt;/strong&gt; making it easy to access existing enterprise functionality and capabilities. For example: 
  &lt;ul&gt; 
   &lt;li&gt;Spring can inject and manage agents, including using Spring AOP to decorate functions.&lt;/li&gt; 
   &lt;li&gt;Robust persistence and transaction management solutions are available.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Designed for testability&lt;/strong&gt; from the ground up. Both unit testing and agent end to end testing are easy.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Flows can be authored in one of two ways:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;An annotation-based model similar to Spring MVC, with types annotated with the Spring stereotype &lt;code&gt;@Agent&lt;/code&gt;, using &lt;code&gt;@Goal&lt;/code&gt;, &lt;code&gt;@Condition&lt;/code&gt; and &lt;code&gt;@Action&lt;/code&gt; methods.&lt;/li&gt; 
 &lt;li&gt;Idiomatic Kotlin DSL with &lt;code&gt;agent {&lt;/code&gt; and &lt;code&gt;action {&lt;/code&gt; blocks.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Either way, flows are backed by a domain model of objects that can have rich behavior.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;We are working toward allowing natural language actions and goals to be deployed.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;The planning step is pluggable.&lt;/p&gt; 
&lt;p&gt;The default planning approach is &lt;a href=&quot;https://medium.com/@vedantchaudhari/goal-oriented-action-planning-34035ed40d0b&quot;&gt;Goal Oriented Action Planning&lt;/a&gt;. GOAP is a popular AI planning algorithm used in gaming. It allows for dynamic decision-making and action selection based on the current state of the world and the goals of the agent.&lt;/p&gt; 
&lt;p&gt;Goals, actions and plans are independent of GOAP. Embabel also supports &lt;a href=&quot;https://en.wikipedia.org/wiki/Utility_system&quot;&gt;Utility AI&lt;/a&gt; out of the box, which can run the same actions but chooses actions based on (potentially dynamic) utility scores rather than strict preconditions and postconditions. This is valuable for exploration and open-ended tasks, when we do not need to achieve a specific goal but want to maximize overall utility.&lt;/p&gt; 
&lt;p&gt;The framework executes via an &lt;code&gt;AgentPlatform&lt;/code&gt; implementation.&lt;/p&gt; 
&lt;p&gt;An agent platform supports the following modes of execution:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Focused&lt;/strong&gt;, where user code requests particular functionality: User code calls a method to run a particular agent, passing in input. This is ideal for code-driven flows such as a flow invoked in response to an incoming event.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Closed&lt;/strong&gt;, where user intent (or another incoming event) is classified to choose an agent. The platform tries to find a suitable agent among all the agents it knows about. Agent choice is dynamic, but only actions defined within the particular agent will run.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Open&lt;/strong&gt;, where the user&#39;s intent is assessed and the platform uses &lt;em&gt;all&lt;/em&gt; its resources to try to achieve it. The platform tries to find a suitable goal among all the goals it knows about and builds a custom agent to achieve it from the start state, including relevant actions and conditions. The platform will not proceed if it is unconvinced as to the applicability of any goal. The &lt;code&gt;GoalChoiceApprover&lt;/code&gt; interface provides developers a way to limit goal choice further.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Open mode is the most powerful, but least deterministic.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;In open mode, the platform is capable of finding novel paths that were not envisioned by developers, and even combining functionality from multiple providers.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Even in open mode, the platform will only perform individual steps that have been specified. (Of course, steps may themselves be LLM transforms, in which case the prompts are controlled by user code but the results are still non-deterministic.)&lt;/p&gt; 
&lt;p&gt;Possible future modes:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Evolving&lt;/strong&gt; mode: Where the platform can work with multiple goals in the same process and modify a running process to add further goals and agents. For example, an action can realize that it has become important to achieve additional goals.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Embabel agent systems will also support federation, both with other Embabel systems (allowing planning to incorporate remote actions and goals) and third party agent frameworks.&lt;/p&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;p&gt;Get an agent running in under 5 minutes.&lt;/p&gt; 
&lt;p&gt;Create your own agent repo from our &lt;a href=&quot;https://github.com/embabel/java-agent-template&quot;&gt;Java&lt;/a&gt; or &lt;a href=&quot;https://github.com/embabel/kotlin-agent-template&quot;&gt;Kotlin&lt;/a&gt; GitHub template by clicking the &quot;Use this template&quot; button.&lt;/p&gt; 
&lt;p&gt;You&#39;ll have an agent running in under a minute if you already have an &lt;code&gt;OPENAI_API_KEY&lt;/code&gt; and have Maven installed.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;📚 For examples and tutorials&lt;/strong&gt;, see the &lt;a href=&quot;https://github.com/embabel/embabel-agent-examples&quot;&gt;Embabel Agent Examples Repository&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;🚗 For a sophisticated, realistic example application&lt;/strong&gt;, see the &lt;a href=&quot;https://github.com/embabel/tripper&quot;&gt;Tripper travel planner agent&lt;/a&gt;&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/embabel/embabel-agent/main/images/tripper_output1.jpg&quot; alt=&quot;Travel Planner Output&quot; width=&quot;600&quot; /&gt; 
&lt;p&gt;&lt;em&gt;AI-generated travel itinerary with detailed recommendations&lt;/em&gt;&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/embabel/embabel-agent/main/images/tripper_map.jpg&quot; alt=&quot;Interactive map&quot; width=&quot;600&quot; /&gt; 
&lt;p&gt;&lt;em&gt;Map link included in output&lt;/em&gt;&lt;/p&gt; 
&lt;h2&gt;Why Is Embabel Needed?&lt;/h2&gt; 
&lt;p&gt;TL;DR Because the evolution of agent frameworks is early and there&#39;s a lot of room for improvement; because an agent framework on the JVM will deliver great business value.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;em&gt;Why do we need an agent framework at all&lt;/em&gt;? We can write code without higher level abstractions, directly invoking LLMs and controlling flow directly in code. However, a higher level agent framework offers compelling benefits. For example: 
  &lt;ul&gt; 
   &lt;li&gt;Breaking up LLM interactions, making them simpler and more focused. This maximizes reuse and minimizes cost and errors. It often allows us to use cheaper models for point interactions.&lt;/li&gt; 
   &lt;li&gt;Facilitating both unit and integration testing, which remain as important with agentic systems as with any other software systems.&lt;/li&gt; 
   &lt;li&gt;Increasing composability where subflows and individual actions can be reused&lt;/li&gt; 
   &lt;li&gt;Making applications more manageable and robust, enabling a workflow manager to control their execution and retry operations while maintaining previous state&lt;/li&gt; 
   &lt;li&gt;Enhancing safety through the ability to apply guardrails in many places&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;em&gt;Why do we need an agent framework for the JVM when solutions exist in Python?&lt;/em&gt;: While agent frameworks initially appeared predominantly Python, it&#39;s early and there&#39;s plenty of room for novel and superior approaches. The key adjacency is not the LLM--which is a simple HTTP call away--but existing code and infrastructure assets that are more valuable on the JVM than in Python.&lt;/li&gt; 
 &lt;li&gt;&lt;em&gt;Why not use just Spring AI?&lt;/em&gt; Spring AI is great. We build on it, and embrace the Spring component model. However, we believe that most applications should work with higher level APIs. An analogy: Spring AI exists at the level of the Servlet API, while Embabel is more like Spring MVC. Complex requirements are much easier to express and test in Embabel than with direct use of Spring AI.&lt;/li&gt; 
 &lt;li&gt;&lt;em&gt;Why not attempt to contribute this project to Spring?&lt;/em&gt; This project requires different governance from Spring, where most projects exist in stable environments and dependability and stability outweighs rapid innovation. Second, the concepts are not JVM-specific. We hope that Embabel will become the leading agent framework across platforms. While the Spring brand is valuable in Java, it is not in TypeScript or Python.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Show Me The Code&lt;/h2&gt; 
&lt;p&gt;In Java or Kotlin, agent implementation code is intuitive and easy to test.&lt;/p&gt; 
&lt;details open&gt; 
 &lt;summary&gt;Java&lt;/summary&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;
@Agent(description = &quot;Find news based on a person&#39;s star sign&quot;)
public class StarNewsFinder {

    private final HoroscopeService horoscopeService;
    private final int storyCount;

    // Services are injected by Spring
    public StarNewsFinder(
            HoroscopeService horoscopeService,
            @Value(&quot;${star-news-finder.story.count:5}&quot;) int storyCount) {
        this.horoscopeService = horoscopeService;
        this.storyCount = storyCount;
    }

    @Action
    public StarPerson extractStarPerson(UserInput userInput, Ai ai) {
        return ai
                .withLlm(OpenAiModels.GPT_41)
                .createObjectIfPossible(
                        &quot;&quot;&quot;
                                Create a person from this user input, extracting their name and star sign:
                                %s&quot;&quot;&quot;.formatted(userInput.getContent()),
                        StarPerson.class
                );
    }

    @Action
    public Horoscope retrieveHoroscope(StarPerson starPerson) {
        return new Horoscope(horoscopeService.dailyHoroscope(starPerson.sign()));
    }

    // toolGroups specifies tools that are required for this action to run
    @Action(toolGroups = {CoreToolGroups.WEB})
    public RelevantNewsStories findNewsStories(
            StarPerson person,
            Horoscope horoscope,
            Ai ai) {
        var prompt = &quot;&quot;&quot;
                %s is an astrology believer with the sign %s.
                Their horoscope for today is:
                    &amp;lt;horoscope&amp;gt;%s&amp;lt;/horoscope&amp;gt;
                Given this, use web tools and generate search queries
                to find %d relevant news stories summarize them in a few sentences.
                Include the URL for each story.
                Do not look for another horoscope reading or return results directly about astrology;
                find stories relevant to the reading above.
                
                For example:
                - If the horoscope says that they may
                want to work on relationships, you could find news stories about
                novel gifts
                - If the horoscope says that they may want to work on their career,
                find news stories about training courses.&quot;&quot;&quot;.formatted(
                person.name(), person.sign(), horoscope.summary(), storyCount);
        return ai
                .withDefaultLlm()
                .createObject(prompt, RelevantNewsStories.class);
    }

    // The @AchievesGoal annotation indicates that completing this action
    // achieves the given goal, so the agent can be complete
    @AchievesGoal(
            description = &quot;Write an amusing writeup for the target person based on their horoscope and current news stories&quot;,
            export = @Export(
                    remote = true,
                    name = &quot;starNewsWriteupJava&quot;,
                    startingInputTypes = {StarPerson.class, UserInput.class})
    )
    @Action
    public Writeup writeup(
            StarPerson person,
            RelevantNewsStories relevantNewsStories,
            Horoscope horoscope,
            Ai ai) {
        var llm = LlmOptions
                .withModel(OpenAiModels.GPT_41_MINI)
                // High temperature for creativity
                .withTemperature(0.9);

        var newsItems = relevantNewsStories.getItems().stream()
                .map(item -&amp;gt; &quot;- &quot; + item.getUrl() + &quot;: &quot; + item.getSummary())
                .collect(Collectors.joining(&quot;\n&quot;));

        var prompt = &quot;&quot;&quot;
                Take the following news stories and write up something
                amusing for the target person.
                
                Begin by summarizing their horoscope in a concise, amusing way, then
                talk about the news. End with a surprising signoff.
                
                %s is an astrology believer with the sign %s.
                Their horoscope for today is:
                    &amp;lt;horoscope&amp;gt;%s&amp;lt;/horoscope&amp;gt;
                Relevant news stories are:
                %s
                
                Format it as Markdown with links.&quot;&quot;&quot;.formatted(
                person.name(), person.sign(), horoscope.summary(), newsItems);
        return ai
                .withLlm(llm)
                .createObject(prompt, Writeup.class);
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;Kotlin&lt;/summary&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-kotlin&quot;&gt;@Agent(description = &quot;Find news based on a person&#39;s star sign&quot;)
class StarNewsFinder(
    // Services such as Horoscope are injected by Spring
    private val horoscopeService: HoroscopeService,
    // Potentially externalized by Spring
    @param:Value(&quot;\${star-news-finder.story.count:5}&quot;)
    private val storyCount: Int = 5,
) {

    @Action
    fun extractPerson(
        userInput: UserInput,
        ai: Ai
    ): StarPerson =
        // All prompts are typesafe
        ai.withDefaultLlm()
            .createObject(&quot;Create a person from this user input, extracting their name and star sign: $userInput&quot;)

    // This action doesn&#39;t use an LLM
    // Embabel makes it easy to mix LLM use with regular code
    @Action
    fun retrieveHoroscope(starPerson: StarPerson) =
        Horoscope(horoscopeService.dailyHoroscope(starPerson.sign))

    // This action uses tools
    // &quot;toolGroups&quot; specifies tools that are required for this action to run
    @Action(toolGroups = [ToolGroup.WEB])
    fun findNewsStories(
        person: StarPerson,
        horoscope: Horoscope,
        ai: Ai,
    ): RelevantNewsStories =
        ai.withDefaultLlm().createObject(
            &quot;&quot;&quot;
            ${person.name} is an astrology believer with the sign ${person.sign}.
            Their horoscope for today is:
                &amp;lt;horoscope&amp;gt;${horoscope.summary}&amp;lt;/horoscope&amp;gt;
            Given this, use web tools and generate search queries
            to find $storyCount relevant news stories summarize them in a few sentences.
            Include the URL for each story.
            Do not look for another horoscope reading or return results directly about astrology;
            find stories relevant to the reading above.

            For example:
            - If the horoscope says that they may
            want to work on relationships, you could find news stories about
            novel gifts
            - If the horoscope says that they may want to work on their career,
            find news stories about training courses.
        &quot;&quot;&quot;.trimIndent()
        )

    // The @AchievesGoal annotation indicates that completing this action
    // achieves the given goal, so the agent run will be complete
    @AchievesGoal(
        description = &quot;Write an amusing writeup for the target person based on their horoscope and current news stories&quot;,
    )
    @Action
    fun writeup(
        person: StarPerson,
        relevantNewsStories: RelevantNewsStories,
        horoscope: Horoscope,
        ai: Ai,
    ): Writeup =
        ai
            .withLlm(
                LlmOptions
                    .withModel(model)
                    .withTemperature(0.9)
            )
            .createObject(
                &quot;&quot;&quot;
            Take the following news stories and write up something
            amusing for the target person.

            Begin by summarizing their horoscope in a concise, amusing way, then
            talk about the news. End with a surprising signoff.

            ${person.name} is an astrology believer with the sign ${person.sign}.
            Their horoscope for today is:
                &amp;lt;horoscope&amp;gt;${horoscope.summary}&amp;lt;/horoscope&amp;gt;
            Relevant news stories are:
            ${relevantNewsStories.items.joinToString(&quot;\n&quot;) { &quot;- ${it.url}: ${it.summary}&quot; }}

            Format it as Markdown with links.
        &quot;&quot;&quot;.trimIndent()
            )

}
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;p&gt;The following domain classes ensure type safety:&lt;/p&gt; 
&lt;details open&gt; 
 &lt;summary&gt;Java&lt;/summary&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;
@JsonClassDescription(&quot;Person with astrology details&quot;)
@JsonDeserialize(as = StarPerson.class)
public record StarPerson(
        String name,
        @JsonPropertyDescription(&quot;Star sign&quot;) String sign
) implements Person {

    @JsonCreator
    public StarPerson(
            @JsonProperty(&quot;name&quot;) String name,
            @JsonProperty(&quot;sign&quot;) String sign
    ) {
        this.name = name;
        this.sign = sign;
    }

    @Override
    public String getName() {
        return name;
    }
}

public record Horoscope(String summary) {
}

@JsonClassDescription(&quot;Writeup relating to a person&#39;s horoscope and relevant news&quot;)
public record Writeup(String text) implements HasContent {

    @JsonCreator
    public Writeup(@JsonProperty(&quot;text&quot;) String text) {
        this.text = text;
    }

    @Override
    public String getContent() {
        return text;
    }
}

&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;Kotlin&lt;/summary&gt; 
 &lt;pre&gt;&lt;code class=&quot;language-kotlin&quot;&gt;data class RelevantNewsStories(
    val items: List&amp;lt;NewsStory&amp;gt;
)

data class NewsStory(
    val url: String,

    val summary: String,
)

data class Subject(
    val name: String,
    val sign: String,
)

data class Horoscope(
    val summary: String,
)

data class FunnyWriteup(
    override val text: String,
) : HasContent
&lt;/code&gt;&lt;/pre&gt; 
&lt;/details&gt; 
&lt;p&gt;It&#39;s easy to unit test your agents to ensure that they correctly execute logic and pass the correct prompts and hyperparameters to LLMs. For example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;public class StarNewsFinderTest {

    @Test
    void writeupPromptMustContainKeyData() {
        HoroscopeService horoscopeService = mock(HoroscopeService.class);
        StarNewsFinder starNewsFinder = new StarNewsFinder(horoscopeService, 5);
        var context = new FakeOperationContext();
        context.expectResponse(new com.embabel.example.horoscope.Writeup(&quot;Gonna be a good day&quot;));

        NewsStory cockatoos = new NewsStory(
                &quot;https://fake.com.au&quot;,
                &quot;Cockatoo behavior&quot;,
                &quot;Cockatoos are eating cabbages&quot;
        );

        NewsStory emus = new NewsStory(
                &quot;https://morefake.com.au&quot;,
                &quot;Emu movements&quot;,
                &quot;Emus are massing&quot;
        );

        StarPerson starPerson = new StarPerson(&quot;Lynda&quot;, &quot;Scorpio&quot;);
        RelevantNewsStories relevantNewsStories = new RelevantNewsStories(Arrays.asList(cockatoos, emus));
        Horoscope horoscope = new Horoscope(&quot;This is a good day for you&quot;);

        starNewsFinder.writeup(starPerson, relevantNewsStories, horoscope, context);

        var prompt = context.getLlmInvocations().getFirst().getPrompt();
        var toolGroups = context.getLlmInvocations().getFirst().getInteraction().getToolGroups();


        assertTrue(prompt.contains(starPerson.getName()));
        assertTrue(prompt.contains(starPerson.sign()));
        assertTrue(prompt.contains(cockatoos.getSummary()));
        assertTrue(prompt.contains(emus.getSummary()));

        assertTrue(toolGroups.isEmpty(), &quot;The LLM should not have been given any tool groups&quot;);
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Dog Food Policy&lt;/h2&gt; 
&lt;p&gt;We believe that all aspects of software development and business can and should be greatly accelerated through the use of AI agents. The ultimate decision makers remain human, but they can and should be greatly augmented.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;This project practices extreme dogfooding.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;!-- TODO photo of Duke with kibble --&gt; 
&lt;p&gt;Our key principles:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;We will use AI agents to help every aspect of the project:&lt;/strong&gt; coding, documentation, community management, producing marketing copy etc. Any human performing a task should ask why it cannot be automated, and strive toward maximum automation.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Developers retain ultimate control.&lt;/strong&gt; Developers are responsible for guiding agents toward the solution and iterating as necessary. A developer who commits or merges an agent contribution is responsible for ensuring that it meets the project coding standards, which are independent of the use of agents. For example, code must be human-readable.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;We will favour open source agents built on the Embabel platform,&lt;/strong&gt; and contribute improvements. While commercial agents may be more advanced in some areas, we believe that our platform is the best general solution for automation and by dogfooding we will improve it fastest. By open sourcing agents used on our open source projects, we will maximize benefit to the community.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;We will prioritize agents that help accelerate our progress.&lt;/strong&gt; Per the flight safety advice to fit your own mask before helping others, we will prioritize agents that help us accelerate our own progress. This will not only produce useful examples, but increase overall project velocity.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Developers must carefully read all code they commit and improve generated code if possible.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Coding agents are a special case. While the &lt;code&gt;embabel-agent-code&lt;/code&gt; submodule offers support for project modification that is useful for project bootstrapping, coding agents are the most mature of commercial agents, and their vendors are heavily subsidising their users, making it economically irrational to insist on our own platform.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;Getting Started&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Get the bits&lt;/li&gt; 
 &lt;li&gt;Set up your environment&lt;/li&gt; 
 &lt;li&gt;Run the application&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Getting the bits&lt;/h3&gt; 
&lt;p&gt;Choose one of the following:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Clone the repository via &lt;code&gt;git clone https://github.com/embabel/embabel-agent&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Create a new Spring Boot project and add the necessary dependencies (see &quot;Using Embabel Agent Framework in Your Project&quot; below)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Environment variables&lt;/h3&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Environment variables are consistent with common usage, rather than Spring AI. For example, we prefer &lt;code&gt;OPENAI_API_KEY&lt;/code&gt; to &lt;code&gt;SPRING_AI_OPENAI_API_KEY&lt;/code&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;Required:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;OPENAI_API_KEY&lt;/code&gt;: For the OpenAI API&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Optional:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;: For the Anthropic API. Necessary for the coding agent.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;MINIMAX_API_KEY&lt;/code&gt;: For the &lt;a href=&quot;https://www.minimax.io&quot;&gt;MiniMax&lt;/a&gt; API. Supports MiniMax-M2.7 and MiniMax-M2.7-highspeed models.&lt;/li&gt; 
 &lt;li&gt;OCI Generative AI uses OCI SDK authentication providers. Add &lt;code&gt;embabel-agent-starter-oci-genai&lt;/code&gt; and set &lt;code&gt;embabel.agent.platform.models.ocigenai.compartment-id&lt;/code&gt;; OCI config file, instance principal, resource principal, workload identity, session token and simple key authentication are supported.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;We strongly recommend providing both an OpenAI and Anthropic key, as some examples require both. And it&#39;s important to try to find the best LLM for a given task, rather than automatically choose a familiar provider.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h3&gt;Services&lt;/h3&gt; 
&lt;p&gt;You will need a Docker Desktop version &lt;a href=&quot;https://docs.docker.com/desktop/release-notes/&quot;&gt;&lt;code&gt;&amp;gt;4.43.2&lt;/code&gt;&lt;/a&gt;. Be sure to activate the following MCP tools from the catalog:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Brave Search&lt;/li&gt; 
 &lt;li&gt;Fetch&lt;/li&gt; 
 &lt;li&gt;Puppeteer&lt;/li&gt; 
 &lt;li&gt;Wikipedia&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;You can also set up your own MCP tools using Spring AI conventions. See the &lt;code&gt;application-docker-desktop.yml&lt;/code&gt; file for an example.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;If you&#39;re running Ollama locally, include the &lt;code&gt;embabel ollama starter&lt;/code&gt; and Embabel will automatically connect to your Ollama endpoint and make all models available.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-xml&quot;&gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;com.embabel.agent&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;embabel-agent-starter-ollama&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Running&lt;/h3&gt; 
&lt;p&gt;Create your own agent project with&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;uvx --from git+https://github.com/embabel/project-creator.git project-creator
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Example Agents&lt;/h3&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;📚 For examples and tutorials&lt;/strong&gt;, see the &lt;a href=&quot;https://github.com/embabel/embabel-agent-examples&quot;&gt;Embabel Agent Examples Repository&lt;/a&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Clone and run examples
git clone https://github.com/embabel/embabel-agent-examples
cd embabel-agent-examples/scripts/kotlin
./shell.sh
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Shell Commands&lt;/h4&gt; 
&lt;p&gt;Spring Shell is an easy way to interact with the Embabel agent framework, especially during development.&lt;/p&gt; 
&lt;p&gt;Type &lt;code&gt;help&lt;/code&gt; to see available commands. Use &lt;code&gt;execute&lt;/code&gt; or &lt;code&gt;x&lt;/code&gt; to run an agent:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;execute &quot;Lynda is a Scorpio, find news for her&quot; -p -r
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This will look for an agent, choose the star finder agent and run the flow. &lt;code&gt;-p&lt;/code&gt; will log prompts &lt;code&gt;-r&lt;/code&gt; will log LLM responses. Omit these for less verbose logging.&lt;/p&gt; 
&lt;p&gt;Options:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;-p&lt;/code&gt; logs prompts&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;-r&lt;/code&gt; logs LLM responses&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Use the &lt;code&gt;chat&lt;/code&gt; command to enter an interactive chat with the agent. It will attempt to run the most appropriate agent for each command.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Spring Shell supports history. Type &lt;code&gt;!!&lt;/code&gt; to repeat the last command. This will survive restarts, so is handy when iterating on an agent.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h4&gt;Further examples&lt;/h4&gt; 
&lt;p&gt;Example commands within the shell:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;# Perplexity style deep research
# Requires both OpenAI and Anthropic keys and Docker Desktop with the MCP extension (or your own web tools)
execute &quot;research the recent australian federal election. what is the position of the greens party?&quot;

# x is a shortcut for execute
x &quot;fact check the following: holden cars are still made in australia; the koel is a bird native only to australia; fidel castro is justin trudeau&#39;s father&quot;

&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Bringing in additional LLMs&lt;/h3&gt; 
&lt;h4&gt;Local models with well-known providers&lt;/h4&gt; 
&lt;p&gt;The Embabel Agent Framework supports local models from:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Ollama: Simply add &lt;code&gt;embabel-agent-starter-ollama&lt;/code&gt; starter to your pom.xml and your local Ollama endpoint will be queries. All local models will be available.&lt;/li&gt; 
 &lt;li&gt;Docker: Add the &lt;code&gt;embabel-agent-starter-dockermodels&lt;/code&gt; starter to your pom.xml and your local Docker endpoint will be queried. All local models will be available.&lt;/li&gt; 
 &lt;li&gt;LMStudio: This uses the openAI compatible client. Just include LMStudio as a dependency and make sure your LMStudio server is running.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;OCI Generative AI&lt;/h4&gt; 
&lt;p&gt;Add &lt;code&gt;embabel-agent-starter-oci-genai&lt;/code&gt; to use OCI Generative AI chat and embedding models.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-xml&quot;&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;com.embabel.agent&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;embabel-agent-starter-oci-genai&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Configure &lt;code&gt;embabel.agent.platform.models.ocigenai.compartment-id&lt;/code&gt; and, if needed, set &lt;code&gt;embabel.agent.platform.models.ocigenai.authentication-type&lt;/code&gt; to &lt;code&gt;FILE&lt;/code&gt;, &lt;code&gt;INSTANCE_PRINCIPAL&lt;/code&gt;, &lt;code&gt;RESOURCE_PRINCIPAL&lt;/code&gt;, &lt;code&gt;WORKLOAD_IDENTITY&lt;/code&gt;, &lt;code&gt;SESSION_TOKEN&lt;/code&gt; or &lt;code&gt;SIMPLE&lt;/code&gt;. When the standard OpenAI provider is not on the classpath, the OCI starter supplies OCI defaults for Embabel&#39;s default LLM and embedding model:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-properties&quot;&gt;embabel.models.default-llm=cohere.command-a-03-2025
embabel.models.default-embedding-model=cohere.embed-v4.0
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Override those values in application configuration if you want another OCI model. Use OCI model ids such as &lt;code&gt;cohere.command-a-03-2025&lt;/code&gt; or &lt;code&gt;meta.llama-3.3-70b-instruct&lt;/code&gt; for Embabel model selection. The Spring bean names registered by the starter are Java-friendly aliases such as &lt;code&gt;cohere_command_a&lt;/code&gt; and &lt;code&gt;llama_33_70b&lt;/code&gt;. If your application exposes Spring Boot Actuator &lt;code&gt;env&lt;/code&gt; or &lt;code&gt;configprops&lt;/code&gt; values, keep those endpoints secured and ensure OCI credential fields such as &lt;code&gt;pass-phrase&lt;/code&gt;, &lt;code&gt;session-token&lt;/code&gt; and &lt;code&gt;private-key&lt;/code&gt; are sanitized.&lt;/p&gt; 
&lt;h4&gt;Custom LLMs&lt;/h4&gt; 
&lt;p&gt;You can define an LLM for any provider for which a Spring AI &lt;code&gt;ChatModel&lt;/code&gt; is available.&lt;/p&gt; 
&lt;p&gt;Simply define Spring beans of type &lt;code&gt;Llm&lt;/code&gt;. See the &lt;code&gt;OpenAiConfiguration&lt;/code&gt; class as an example.&lt;/p&gt; 
&lt;p&gt;Remember:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Provide the knowledge cutoff date if you know it&lt;/li&gt; 
 &lt;li&gt;Make the configuration class conditional on any required API key.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Roadmap&lt;/h2&gt; 
&lt;p&gt;This project is in its early stages, but we have big plans. The milestones and issues in this repository are a good reference. Our key goals:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Become the natural way to Gen AI-enable Java applications&lt;/strong&gt;, and especially those built on Spring.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Prove the power of the approach&lt;/strong&gt;. Demonstrate that this approach is the best way to build safe, dependable, Gen AI applications. In particular: 
  &lt;ul&gt; 
   &lt;li&gt;Demonstrate the power of extensibility without modification, by adding goals and actions&lt;/li&gt; 
   &lt;li&gt;Demonstrate the potential to become the PaaS for natural language&lt;/li&gt; 
   &lt;li&gt;Demonstrate the potential of agent federation within the GOAP model&lt;/li&gt; 
   &lt;li&gt;Demonstrate budget-aware agents, such as &quot;Research the following topic, spending up to 20c if you are still learning&quot;&lt;/li&gt; 
   &lt;li&gt;Integrate with data stores and demonstrate the power of surfacing existing functionality inside an organization&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Take the model to other platforms&lt;/strong&gt;: The conceptual framework is not JVM specific. Once established, we intend to create TypeScript and Python projects.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;There is a lot to do, and you are awesome. We look forward to your contribution!&lt;/p&gt; 
&lt;h2&gt;Application Design&lt;/h2&gt; 
&lt;h3&gt;Domain objects&lt;/h3&gt; 
&lt;p&gt;Applications center around domain objects. These can be instantiated by LLMs or user code, and manipulated by user code.&lt;/p&gt; 
&lt;p&gt;Use Jackson annotations to help LLMs with descriptions as well as mark fields to ignore. For example:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-kotlin&quot;&gt;@JsonClassDescription(&quot;Person with astrology details&quot;)
data class StarPerson(
    override val name: String,
    @get:JsonPropertyDescription(&quot;Star sign&quot;)
    val sign: String,
) : Person
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See &lt;a href=&quot;https://github.com/victools/jsonschema-generator/tree/main/jsonschema-module-jackson&quot;&gt;Java Json Schema Generation - Module Jackson&lt;/a&gt; for documentation of the library used.&lt;/p&gt; 
&lt;p&gt;Domain objects can have behaviors that are automatically exposed to LLMs when they are in scope. Simply annotate methods with the Spring AI &lt;code&gt;@Tool&lt;/code&gt; annotation.&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;When exposing &lt;code&gt;@Tool&lt;/code&gt; methods on domain objects, be sure that the tool is safe to invoke. Even the best LLMs can get trigger-happy. For example, be careful about methods that can mutate or delete data. This is likely better modeled via an explicit call to a non-tool method on the same domain class, in a code action.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;Using Embabel as an MCP server&lt;/h2&gt; 
&lt;p&gt;You can use the Embabel agent platform as an MCP server from a UI like Claude Desktop. The Embabel MCP server is available over SSE.&lt;/p&gt; 
&lt;p&gt;Configure Claude Desktop as follows in your &lt;code&gt;claude_desktop_config.yml&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;mcpServers&quot;: {
    &quot;embabel&quot;: {
      &quot;command&quot;: &quot;npx&quot;,
      &quot;args&quot;: [
        &quot;-y&quot;,
        &quot;mcp-remote&quot;,
        &quot;http://localhost:8080/sse&quot;
      ]
    }
  }
}

&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;See &lt;a href=&quot;https://modelcontextprotocol.io/quickstart/user&quot;&gt;MCP Quickstart for Claude Desktop Users&lt;/a&gt; for how to configure Claude Desktop.&lt;/p&gt; 
&lt;p&gt;The &lt;a href=&quot;https://github.com/modelcontextprotocol/inspector&quot;&gt;MCP Inspector&lt;/a&gt; is a helpful tool for interacting with your Embabel SSE server, manually invoking tools and checking the exposed prompts and resources.&lt;/p&gt; 
&lt;p&gt;Start the MCP Inspector with:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx @modelcontextprotocol/inspector
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Consuming MCP Servers&lt;/h2&gt; 
&lt;p&gt;The Embabel Agent Framework provides built-in support for consuming Model Context Protocol (MCP) servers, allowing you to extend your applications with powerful AI capabilities through standardized interfaces.&lt;/p&gt; 
&lt;h3&gt;What is MCP?&lt;/h3&gt; 
&lt;p&gt;Model Context Protocol (MCP) is an open protocol that standardizes how applications provide context and extra functionality to large language models. Introduced by Anthropic, MCP has emerged as the de facto standard for connecting AI agents to tools, functioning as a client-server protocol where:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Clients&lt;/strong&gt; (like Embabel Agent) send requests to servers&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Servers&lt;/strong&gt; process those requests to deliver necessary context to the AI model&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;MCP simplifies integration between AI applications and external tools, transforming an &quot;M×N problem&quot; into an &quot;M+N problem&quot; through standardization - similar to what USB did for hardware peripherals.&lt;/p&gt; 
&lt;h3&gt;Configuring MCP in Embabel Agent&lt;/h3&gt; 
&lt;p&gt;To configure MCP servers in your Embabel Agent application, add the following to your &lt;code&gt;application.yml&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;spring:
  ai:
    mcp:
      client:
        enabled: true
        name: embabel
        version: 1.0.0
        request-timeout: 30s
        type: SYNC
        stdio:
          connections:
            docker-mcp:
              command: docker
              args:
                - run
                - -i
                - --rm
                - alpine/socat
                - STDIO
                - TCP:host.docker.internal:8811
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This configuration sets up an MCP client that connects to a Docker-based MCP server. The connection uses STDIO transport through Docker&#39;s socat utility to connect to a TCP endpoint.&lt;/p&gt; 
&lt;h3&gt;Docker Desktop MCP Integration&lt;/h3&gt; 
&lt;p&gt;Docker has embraced MCP with their Docker MCP Catalog and Toolkit, which provides:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Centralized Discovery&lt;/strong&gt; - A trusted hub for discovering MCP tools integrated into Docker Hub&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Containerized Deployment&lt;/strong&gt; - Run MCP servers as containers without complex setup&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Secure Credential Management&lt;/strong&gt; - Centralized, encrypted credential handling&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Built-in Security&lt;/strong&gt; - Sandbox isolation and permissions management&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;The Docker MCP ecosystem includes over 100 verified tools from partners like Stripe, Elastic, Neo4j, and more, all accessible through Docker&#39;s infrastructure.&lt;/p&gt; 
&lt;h3&gt;Learn More&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://docs.docker.com/desktop/features/gordon/mcp/&quot;&gt;Docker MCP Documentation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/docker/mcp-servers&quot;&gt;Docker MCP Servers Repository&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.docker.com/blog/introducing-docker-mcp-catalog-and-toolkit/&quot;&gt;Introducing Docker MCP Catalog and Toolkit&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.philschmid.de/mcp-introduction&quot;&gt;MCP Introduction and Overview&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;A2A&lt;/h2&gt; 
&lt;p&gt;Embabel integrates with the &lt;a href=&quot;https://github.com/google-a2a/A2A&quot;&gt;A2A&lt;/a&gt; protocol, allowing you to connect to other A2A-enabled agents and services.&lt;/p&gt; 
&lt;p&gt;Enable the &lt;code&gt;a2a&lt;/code&gt; Spring profile to start the A2A server.&lt;/p&gt; 
&lt;p&gt;You&#39;ll need the following environment variable:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;GOOGLE_STUDIO_API_KEY&lt;/code&gt;: Your Google Studio API key, which is used for Gemini.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Start the Google A2A web interface using the &lt;code&gt;a2a&lt;/code&gt; Docker profile:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker compose --profile a2a up
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Go to the web interface running within the container at &lt;code&gt;http://localhost:12000/&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Connect to your agent at &lt;code&gt;host.docker.internal:8080/a2a&lt;/code&gt;. Note that &lt;code&gt;localhost:8080/a2a&lt;/code&gt; won&#39;t work as the server cannot access it when running in a Docker container.&lt;/p&gt; 
&lt;h2&gt;Running Tests&lt;/h2&gt; 
&lt;h3&gt;Unit tests&lt;/h3&gt; 
&lt;p&gt;Run the unit tests via Maven. This will not require an internet connection or any external services.&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mvn test
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Integration tests&lt;/h3&gt; 
&lt;p&gt;Integration tests (&lt;code&gt;*IT&lt;/code&gt;) hit real provider APIs and are excluded from the default &lt;code&gt;mvn test&lt;/code&gt; run. To run them, ensure the following environment variables are set:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;OPENAI_API_KEY&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;DEEPSEEK_API_KEY&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;MISTRAL_API_KEY&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Then run:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mvn -Dtest=&#39;*IT,!LLMOllama*IT&#39; -Dsurefire.failIfNoSpecifiedTests=false test
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;This runs all integration tests except Ollama (which requires a local Ollama server). To run a specific module&#39;s integration tests, add &lt;code&gt;-pl&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mvn -Dtest=&#39;*IT,!LLMOllama*IT&#39; -Dsurefire.failIfNoSpecifiedTests=false test -pl embabel-agent-openai
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Spring profiles&lt;/h2&gt; 
&lt;p&gt;Spring profiles are used to configure the application for different environments and behaviors.&lt;/p&gt; 
&lt;p&gt;Model profiles:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;docker-desktop&lt;/code&gt;: Talking to Docker Desktop with the MCP extension. &lt;strong&gt;This is recommended for the best experience, with Docker-provided web tools.&lt;/strong&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Logging profiles:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;severance&lt;/code&gt;: &lt;a href=&quot;https://www.youtube.com/watch?v=xEQP4VVuyrY&amp;amp;ab_channel=AppleTV&quot;&gt;Severance&lt;/a&gt; specific logging. Praise Kier!&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;starwars&lt;/code&gt;: Star Wars specific logging. Feel the force&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;colossus&lt;/code&gt;: Colossus specific logging. The Forbin Project.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Testing&lt;/h2&gt; 
&lt;p&gt;A key goal of this framework is ease of testing. Just as Spring eased testing of early enterprise Java applications, this framework facilitates testing of AI applications.&lt;/p&gt; 
&lt;p&gt;Types of testing:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Unit tests: All agents are unit testable, like any Spring-managed beans. Construct them with mock objects; call individual action methods. The testing library facilitates testing prompts.&lt;/li&gt; 
 &lt;li&gt;Integration tests: tbd&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Logging&lt;/h2&gt; 
&lt;p&gt;All logging in this project is either debug logging in the relevant class itself, or results from the stream of events of type &lt;code&gt;AgentEvent&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;Edit &lt;code&gt;application.yml&lt;/code&gt; if you want to see debug logging from the relevant classes and packages.&lt;/p&gt; 
&lt;p&gt;Available logging experiences:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;severance&lt;/code&gt;: Severance logging. Praise Kier&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;starwars&lt;/code&gt;: Star Wars logging. Feel the force. The default as it&#39;s understood throughout the galaxy.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;colossus&lt;/code&gt;: Colossus logging. The Forbin Project.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;montypython&lt;/code&gt;: Monty Python logging. No one expects it.&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;hh&lt;/code&gt;: Hitchhiker&#39;s Guide to the Galaxy logging. The answer is 42.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If none of these profiles is chosen, Embabel will use vanilla logging. This makes me sad.&lt;/p&gt; 
&lt;h2&gt;Adding Embabel Agent Framework to Your Project&lt;/h2&gt; 
&lt;h3&gt;Maven Central Availability&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Since version 0.2.0&lt;/strong&gt;, Embabel Agent Framework is available directly on Maven Central, simplifying dependency management. You no longer need to configure custom repositories for stable releases.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Maven&lt;/h3&gt; 
&lt;h4&gt;For version 0.2.0 and above (Recommended)&lt;/h4&gt; 
&lt;p&gt;Simply add the Embabel Spring Boot starter dependency to your &lt;code&gt;pom.xml&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-xml&quot;&gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;com.embabel.agent&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;embabel-agent-starter&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;${embabel-agent.version}&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;No additional repository configuration is needed! Maven Central is configured by default.&lt;/p&gt; 
&lt;h4&gt;For versions prior to 0.2.0 or for SNAPSHOT versions&lt;/h4&gt; 
&lt;p&gt;You need to add the Embabel repositories to your &lt;code&gt;pom.xml&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-xml&quot;&gt;
&amp;lt;repositories&amp;gt;
    &amp;lt;repository&amp;gt;
        &amp;lt;id&amp;gt;embabel-releases&amp;lt;/id&amp;gt;
        &amp;lt;url&amp;gt;https://repo.embabel.com/artifactory/libs-release&amp;lt;/url&amp;gt;
        &amp;lt;releases&amp;gt;
            &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;
        &amp;lt;/releases&amp;gt;
        &amp;lt;snapshots&amp;gt;
            &amp;lt;enabled&amp;gt;false&amp;lt;/enabled&amp;gt;
        &amp;lt;/snapshots&amp;gt;
    &amp;lt;/repository&amp;gt;
    &amp;lt;repository&amp;gt;
        &amp;lt;id&amp;gt;embabel-snapshots&amp;lt;/id&amp;gt;
        &amp;lt;url&amp;gt;https://repo.embabel.com/artifactory/libs-snapshot&amp;lt;/url&amp;gt;
        &amp;lt;releases&amp;gt;
            &amp;lt;enabled&amp;gt;false&amp;lt;/enabled&amp;gt;
        &amp;lt;/releases&amp;gt;
        &amp;lt;snapshots&amp;gt;
            &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;
        &amp;lt;/snapshots&amp;gt;
    &amp;lt;/repository&amp;gt;
&amp;lt;/repositories&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then add the dependency:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-xml&quot;&gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;com.embabel.agent&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;embabel-agent-starter&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;${embabel-agent.version}&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Gradle (Kotlin DSL)&lt;/h3&gt; 
&lt;h4&gt;For version 0.2.0 and above (Recommended)&lt;/h4&gt; 
&lt;p&gt;Add the required repositories to your &lt;code&gt;build.gradle.kts&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-kotlin&quot;&gt;repositories {
    mavenCentral()
    maven {
        name = &quot;Spring Milestones&quot;
        url = uri(&quot;https://repo.spring.io/milestone&quot;)
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Add the Embabel Agent starter:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-kotlin&quot;&gt;dependencies {
    implementation(&quot;com.embabel.agent:embabel-agent-starter:${embabelAgentVersion}&quot;)
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;For versions prior to 0.2.0 or for SNAPSHOT versions&lt;/h4&gt; 
&lt;p&gt;Add all required repositories to your &lt;code&gt;build.gradle.kts&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-kotlin&quot;&gt;repositories {
    mavenCentral()
    maven {
        name = &quot;embabel-releases&quot;
        url = uri(&quot;https://repo.embabel.com/artifactory/libs-release&quot;)
        mavenContent {
            releasesOnly()
        }
    }
    maven {
        name = &quot;embabel-snapshots&quot;
        url = uri(&quot;https://repo.embabel.com/artifactory/libs-snapshot&quot;)
        mavenContent {
            snapshotsOnly()
        }
    }
    maven {
        name = &quot;Spring Milestones&quot;
        url = uri(&quot;https://repo.spring.io/milestone&quot;)
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Add the Embabel Agent starter:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-kotlin&quot;&gt;dependencies {
    implementation(&quot;com.embabel.agent:embabel-agent-starter:${embabelAgentVersion}&quot;)
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Gradle (Groovy DSL)&lt;/h3&gt; 
&lt;h4&gt;For version 0.2.0 and above (Recommended)&lt;/h4&gt; 
&lt;p&gt;Add the required repositories to your &lt;code&gt;build.gradle&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-groovy&quot;&gt;repositories {
    mavenCentral()
    maven {
        name = &#39;Spring Milestones&#39;
        url = &#39;https://repo.spring.io/milestone&#39;
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Add the Embabel Agent starter:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-groovy&quot;&gt;dependencies {
    implementation &quot;com.embabel.agent:embabel-agent-starter:${embabelAgentVersion}&quot;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;For versions prior to 0.2.0 or for SNAPSHOT versions&lt;/h4&gt; 
&lt;p&gt;Add all required repositories to your &lt;code&gt;build.gradle&lt;/code&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-groovy&quot;&gt;repositories {
    mavenCentral()
    maven {
        name = &#39;embabel-releases&#39;
        url = &#39;https://repo.embabel.com/artifactory/libs-release&#39;
        mavenContent {
            releasesOnly()
        }
    }
    maven {
        name = &#39;embabel-snapshots&#39;
        url = &#39;https://repo.embabel.com/artifactory/libs-snapshot&#39;
        mavenContent {
            snapshotsOnly()
        }
    }
    maven {
        name = &#39;Spring Milestones&#39;
        url = &#39;https://repo.spring.io/milestone&#39;
    }
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Add the Embabel Agent starter:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-groovy&quot;&gt;dependencies {
    implementation &#39;com.embabel.agent:embabel-agent-starter:${embabelAgentVersion}&#39;
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Important Notes&lt;/h3&gt; 
&lt;h4&gt;Spring Milestones Repository&lt;/h4&gt; 
&lt;p&gt;The Spring Milestones repository is required because the Embabel BOM (&lt;code&gt;embabel-agent-dependencies&lt;/code&gt;) has transitive dependencies on experimental Spring components, specifically the &lt;code&gt;mcp-bom&lt;/code&gt;. This BOM is not available on Maven Central and is only published to the Spring milestone repository.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Note for Gradle users:&lt;/strong&gt; Unlike Maven, Gradle does not inherit repository configurations declared in parent POMs or BOMs. Therefore, it is necessary to explicitly declare the Spring milestone repository in your repositories block to ensure proper resolution of all transitive dependencies.&lt;/p&gt; 
&lt;h4&gt;Repository Types&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Maven Central&lt;/strong&gt; (since v0.2.0): For stable releases 0.2.0 and above&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Embabel Releases Repository&lt;/strong&gt;: For stable releases prior to 0.2.0&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Embabel Snapshots Repository&lt;/strong&gt;: For development/snapshot versions (e.g., &lt;code&gt;0.3.0-SNAPSHOT&lt;/code&gt;)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h3&gt;Quick Start Examples&lt;/h3&gt; 
&lt;h4&gt;Maven with latest stable version&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-xml&quot;&gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;com.embabel.agent&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;embabel-agent-starter&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;0.3.0&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Gradle Kotlin DSL with latest stable version&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-kotlin&quot;&gt;implementation(&quot;com.embabel.agent:embabel-agent-starter:0.3.0&quot;)
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;Gradle Groovy DSL with latest stable version&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-groovy&quot;&gt;implementation &#39;com.embabel.agent:embabel-agent-starter:0.3.0&#39;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Getting Started with Observability&lt;/h2&gt; 
&lt;p&gt;Add full tracing and metrics to your Embabel agents with zero code changes.&lt;/p&gt; 
&lt;h3&gt;1. Add the dependency&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-xml&quot;&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;com.embabel.agent&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;embabel-agent-starter-observability&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;${embabel-agent.version}&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;2. Add an exporter&lt;/h3&gt; 
&lt;p&gt;Pick &lt;strong&gt;one&lt;/strong&gt; (or combine multiple):&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Zipkin&lt;/strong&gt; (simplest — no account needed):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-xml&quot;&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;io.opentelemetry&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;opentelemetry-exporter-zipkin&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;Langfuse&lt;/strong&gt; (LLM-focused observability):&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-xml&quot;&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;com.quantpulsar&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;opentelemetry-exporter-langfuse&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;0.4.0&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;3. Configure&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;# Enable observability
embabel:
  observability:
    enabled: true
    service-name: my-agent-app

# Enable Spring Boot tracing
management:
  tracing:
    enabled: true
    sampling:
      probability: 1.0

  # Zipkin exporter
  zipkin:
    tracing:
      endpoint: http://localhost:9411/api/v2/spans
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;To use Langfuse instead of (or alongside) Zipkin:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;management:
  langfuse:
    enabled: true
    endpoint: https://cloud.langfuse.com/api/public/otel  # or your self-hosted URL
    public-key: pk-lf-...
    secret-key: sk-lf-...
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;4. Start Zipkin and run&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -d -p 9411:9411 openzipkin/zipkin
./mvnw spring-boot:run
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Open &lt;a href=&quot;http://localhost:9411&quot;&gt;http://localhost:9411&lt;/a&gt; — run an agent and you will see traces like:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Agent: CustomerServiceAgent
├── Action: AnalyzeRequest
│   └── ChatModel: gpt-4 (Spring AI)
│       └── tool:searchKnowledgeBase
├── Action: GenerateResponse
│   └── ChatModel: gpt-4 (Spring AI)
└── status: completed [duration=2340ms]
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;With Langfuse, you get a rich LLM-focused view of your agent traces:&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/embabel/embabel-agent/main/embabel-agent-observability/docs/langfuse.png&quot; alt=&quot;Langfuse Tracing&quot; width=&quot;800&quot; /&gt; 
&lt;h3&gt;What gets traced automatically&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Agent lifecycle (creation, execution, completion, failures)&lt;/li&gt; 
 &lt;li&gt;Every action as a child span&lt;/li&gt; 
 &lt;li&gt;LLM calls with token usage (via Spring AI)&lt;/li&gt; 
 &lt;li&gt;Tool invocations with input/output&lt;/li&gt; 
 &lt;li&gt;Planning and replanning iterations&lt;/li&gt; 
 &lt;li&gt;State transitions and lifecycle states&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Track custom operations with &lt;code&gt;@Tracked&lt;/code&gt;&lt;/h3&gt; 
&lt;p&gt;Use the &lt;code&gt;@Tracked&lt;/code&gt; annotation to add observability spans to your own methods — inputs, outputs, duration, and errors are captured automatically:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;@Tracked(&quot;enrichCustomer&quot;)
public Customer enrich(Customer input) {
    // Your logic here
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;You can specify a type and description for richer traces:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-java&quot;&gt;@Tracked(value = &quot;callPaymentApi&quot;, type = TrackType.EXTERNAL_CALL, description = &quot;Payment gateway call&quot;)
public PaymentResult processPayment(Order order) {
    // ...
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;When called within an agent execution, &lt;code&gt;@Tracked&lt;/code&gt; spans are automatically nested under the current action:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Agent: CustomerServiceAgent
├── Action: ProcessOrder
│   ├── @Tracked: enrichCustomer (PROCESSING)
│   ├── ChatModel: gpt-4
│   └── @Tracked: callPaymentApi (EXTERNAL_CALL)
└── status: completed
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;For the full configuration reference, MDC log correlation, and advanced options, see the &lt;a href=&quot;https://raw.githubusercontent.com/embabel/embabel-agent/main/embabel-agent-observability/README.md&quot;&gt;Observability Module Documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;We welcome contributions to the Embabel Agent Framework.&lt;/p&gt; 
&lt;p&gt;Look at the &lt;a href=&quot;https://raw.githubusercontent.com/embabel/embabel-agent/main/embabel-agent-api/.embabel/coding-style.md&quot;&gt;coding style guide&lt;/a&gt; for style guidelines. This file also informs coding agent behavior.&lt;/p&gt; 
&lt;h2&gt;Miscellaneous&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;em&gt;Why the name Embabel?&lt;/em&gt; The &quot;babel&quot; part is ultimately inspired by the story of the Tower of Babel, perhaps via Douglas Adams&#39; &lt;a href=&quot;https://www.youtube.com/watch?v=iuumnjJWFO4&amp;amp;ab_channel=BBCStudios&quot;&gt;babelfish&lt;/a&gt;. Per @lasuac: &lt;em&gt;While Adams&#39; fish in the ear enabled universal translation between species, Embabel aims at translating human intent to JVM code, AI models, and enterprise systems.&lt;/em&gt; &quot;embabel&quot; also sounds like &quot;enable.&quot;&lt;/li&gt; 
 &lt;li&gt;Milestone names are Australian animals. Mythical animals such as &quot;bunyip&quot; and &quot;yowie&quot; are used for futures that may or not be implemented.&lt;/li&gt; 
 &lt;li&gt;README badges come from &lt;a href=&quot;https://github.com/Ileriayo/markdown-badges&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;https://home.aveek.io/GitHub-Profile-Badges/&quot;&gt;here&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Don&#39;t forget to join &lt;a href=&quot;https://discord.gg/t6bjkyj93q&quot;&gt;Discord&lt;/a&gt; to collaborate with the Embabel community. It is a good place to receive support, showcase your work, discuss ideas and connect with like-minded people.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Star history&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://star-history.com/#embabel/embabel-agent&amp;amp;Date&quot;&gt;&lt;img src=&quot;https://api.star-history.com/svg?repos=embabel/embabel-agent&amp;amp;type=Date&quot; alt=&quot;Star History Chart&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Contributors&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/embabel/embabel-agent/graphs/contributors&quot;&gt;&lt;img src=&quot;https://contrib.rocks/image?repo=embabel/embabel-agent&quot; alt=&quot;Embabel contributors&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;(c) Embabel Software Inc 2024-2025.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/106248d20117a9cb4247aff2d6361b1fca113aaf995e6f695d880fa48530c4de/embabel/embabel-agent" medium="image" />
      
    </item>
    
    <item>
      <title>EchoMusicApp/Echo-Music</title>
      <link>https://github.com/EchoMusicApp/Echo-Music</link>
      <description>&lt;p&gt;A modern Android music app with ad-free streaming, synced lyrics, offline playback, and an intuitive user experience.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/assets/Echo-new.png&quot; alt=&quot;Echo Music Logo&quot; width=&quot;140&quot; /&gt; 
 &lt;h1&gt;Echo Music&lt;/h1&gt; 
 &lt;p&gt;&lt;strong&gt;A modern Android music app with ad-free streaming, synced lyrics, offline playback, and an intuitive user experience. &lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/iad1tya/Echo-Music/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/iad1tya/Echo-Music?style=for-the-badge&amp;amp;color=6f42c1&quot; alt=&quot;GitHub Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/iad1tya/Echo-Music/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/iad1tya/Echo-Music?style=for-the-badge&amp;amp;color=e3b341&quot; alt=&quot;GitHub Stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/iad1tya/Echo-Music?style=for-the-badge&amp;amp;color=28a745&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://t.me/EchoMusicApp&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Telegram-Join-2CA5E0?style=for-the-badge&amp;amp;logo=telegram&amp;amp;logoColor=white&quot; alt=&quot;Telegram&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/EcfV3AxH5c&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&amp;amp;logo=discord&amp;amp;logoColor=white&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;a href=&quot;https://trendshift.io/repositories/20485&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://trendshift.io/api/badge/repositories/20485&quot; alt=&quot;EchoMusicApp%2FEcho-Music | Trendshift&quot; style=&quot;width: 250px; height: 55px;&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt; &lt;/a&gt; 
 &lt;br /&gt; 
 &lt;a href=&quot;https://echomusic.fun/download&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/assets/download.png&quot; alt=&quot;Download&quot; width=&quot;180&quot; /&gt; &lt;/a&gt; &amp;nbsp; 
 &lt;a href=&quot;https://echomusic.fun/obtainium&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/assets/obtainium.png&quot; alt=&quot;Get it on Obtainium&quot; width=&quot;180&quot; /&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Overview&lt;/h2&gt; 
&lt;p&gt;Echo Music delivers a seamless, premium listening experience by leveraging YouTube Music&#39;s vast library — without the ads. It adds powerful extras including offline downloads, real-time synchronized lyrics, and environment-aware music recognition.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Table of Contents&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#overview&quot;&gt;Overview&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#screenshots&quot;&gt;Screenshots&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#features&quot;&gt;Features&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#whats-new&quot;&gt;What&#39;s New&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#streaming--playback&quot;&gt;Streaming &amp;amp; Playback&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#discovery--echo-find&quot;&gt;Discovery &amp;amp; Echo Find&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#lyrics&quot;&gt;Lyrics&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#integrations&quot;&gt;Integrations&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#smart-playback&quot;&gt;Smart Playback&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#customization&quot;&gt;Customization&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#installation--setup&quot;&gt;Installation &amp;amp; Setup&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#android-installation&quot;&gt;Android Installation&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#building-from-source&quot;&gt;Building from Source&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#community--support&quot;&gt;Community &amp;amp; Support&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#support-the-project&quot;&gt;Support the Project&lt;/a&gt; 
  &lt;ul&gt; 
   &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#cryptocurrency&quot;&gt;Cryptocurrency&lt;/a&gt;&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#special-thanks&quot;&gt;Special Thanks&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/#star-history&quot;&gt;Star History&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Screenshots&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;table style=&quot;margin: 0 auto; border-collapse: collapse;&quot;&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; style=&quot;padding: 10px; border: none;&quot;&gt; &lt;strong&gt;Home Screen&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/Screenshots/sc_1.png&quot; alt=&quot;Home Screen&quot; width=&quot;200&quot; style=&quot;border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.2);&quot; /&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; style=&quot;padding: 10px; border: none;&quot;&gt; &lt;strong&gt;Music Player&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/Screenshots/sc_2.png&quot; alt=&quot;Music Player&quot; width=&quot;200&quot; style=&quot;border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.2);&quot; /&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; style=&quot;padding: 10px; border: none;&quot;&gt; &lt;strong&gt;Synchronized Lyrics&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/Screenshots/sc_3.png&quot; alt=&quot;Synchronized Lyrics&quot; width=&quot;200&quot; style=&quot;border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.2);&quot; /&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; style=&quot;padding: 10px; border: none;&quot;&gt; &lt;strong&gt;Search &amp;amp; Explore&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/Screenshots/sc_4.png&quot; alt=&quot;Search &amp;amp; Explore&quot; width=&quot;200&quot; style=&quot;border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.2);&quot; /&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; style=&quot;padding: 10px; border: none;&quot;&gt; &lt;strong&gt;Music Library&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/Screenshots/sc_5.png&quot; alt=&quot;Music Library&quot; width=&quot;200&quot; style=&quot;border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.2);&quot; /&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot; style=&quot;padding: 10px; border: none;&quot;&gt; &lt;strong&gt;Echo Find (Recognition)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/Screenshots/sc_6.png&quot; alt=&quot;Echo Find&quot; width=&quot;200&quot; style=&quot;border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.2);&quot; /&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;h3&gt;What&#39;s New&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Redesigned UI&lt;/strong&gt; — Cleaner, faster, and more intuitive interface from the ground up.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Import from Spotify&lt;/strong&gt; — Bring your playlists and tracks over with ease.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Listen Together&lt;/strong&gt; — Sync music in real time, similar to Spotify Jam.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Podcast Support&lt;/strong&gt; — Listen to podcasts alongside your music library.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Local Media Support&lt;/strong&gt; — Play music files stored directly on your device.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Dynamic Island Support&lt;/strong&gt; — Enhanced playback notifications on supported Android devices.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Streaming &amp;amp; Playback&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Ad-Free&lt;/strong&gt; — Stream without any interruptions.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Seamless Playback&lt;/strong&gt; — Switch effortlessly between audio-only and video modes.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Background Playback&lt;/strong&gt; — Listen while using other apps or with the screen off.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Offline Mode&lt;/strong&gt; — Download tracks, albums, and playlists via a dedicated download manager.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Crossfade&lt;/strong&gt; — Smooth transitions between tracks.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Canvas Animations&lt;/strong&gt; — Visual animations while playing music.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Discovery &amp;amp; Echo Find&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Echo Find&lt;/strong&gt; — Identify songs playing around you using advanced audio recognition.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Smart Recommendations&lt;/strong&gt; — Personalized suggestions based on your listening history.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Comprehensive Browsing&lt;/strong&gt; — Explore Charts, Podcasts, Moods, and Genres.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Lyrics&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Multiple Lyric Animations&lt;/strong&gt; — Choose from various lyric display styles.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Word-by-Word Lyrics&lt;/strong&gt; — Precise per-word synchronization.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Lyrics+&lt;/strong&gt; — New lyrics provider for improved accuracy and coverage.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;AI Translation&lt;/strong&gt; — Built-in Google Translate integration for lyrics in any language.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Integrations&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Music Sharing via Odesli&lt;/strong&gt; — Share songs as Song.link for cross-platform listening.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Set as Ringtone&lt;/strong&gt; — Directly set any song as your device ringtone.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Smart Playback&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Pause on Mute&lt;/strong&gt; — Auto-pause when your device is muted.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Resume on Bluetooth&lt;/strong&gt; — Playback resumes when headphones or earbuds reconnect.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Customization&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;UI Density Scale&lt;/strong&gt; — Adjust interface spacing to your preference.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;High Refresh Rate Support&lt;/strong&gt; — Smoother UI and animations on supported displays.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Hide Player Thumbnail&lt;/strong&gt; — Keep the player minimal without album art.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Crop Album Art&lt;/strong&gt; — Adjust album art display to fit your style.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Hide Video Songs&lt;/strong&gt; — Filter out video content from your feed.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Hide YouTube Shorts&lt;/strong&gt; — Keep Shorts out of your music browsing.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Installation &amp;amp; Setup&lt;/h2&gt; 
&lt;h3&gt;Android Installation&lt;/h3&gt; 
&lt;p&gt;Download the latest pre-compiled APK from the &lt;a href=&quot;https://github.com/iad1tya/Echo-Music/releases/latest&quot;&gt;Releases Page&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Building from Source&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Clone the Repository&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/iad1tya/Echo-Music.git
cd Echo-Music
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Configure Android SDK&lt;/strong&gt; Create a &lt;code&gt;local.properties&lt;/code&gt; file:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;echo &quot;sdk.dir=/path/to/your/android/sdk&quot; &amp;gt; local.properties
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;em&gt;(For detailed paths on Windows/macOS/Linux, refer to &lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/SETUP.md&quot;&gt;SETUP.md&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Firebase Configuration (Optional)&lt;/strong&gt; Firebase is required for analytics and crash reporting. See the instructions in &lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/SETUP.md#3-configure-firebase-optional&quot;&gt;SETUP.md&lt;/a&gt; for adding your &lt;code&gt;google-services.json&lt;/code&gt;.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Build the Application&lt;/strong&gt; Echo Music has two build variants: &lt;strong&gt;FOSS&lt;/strong&gt; (without Google Play Services / Cast) and &lt;strong&gt;GMS&lt;/strong&gt; (with Cast support).&lt;/p&gt; &lt;p&gt;To build the FOSS Universal Debug variant:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./gradlew assembleUniversalFossDebug
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;To build the GMS Universal Debug variant:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./gradlew assembleUniversalGmsDebug
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;&lt;em&gt;(For optimized ARM64 builds, release builds, or other options, refer to &lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/SETUP.md&quot;&gt;SETUP.md&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Community &amp;amp; Support&lt;/h2&gt; 
&lt;p&gt;Join the community for updates, discussions, and help.&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://discord.gg/EcfV3AxH5c&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/assets/discord.png&quot; alt=&quot;Discord Logo&quot; width=&quot;140&quot; /&gt; &lt;/a&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 &lt;a href=&quot;https://t.me/EchoMusicApp&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/assets/telegram.png&quot; alt=&quot;Telegram Logo&quot; width=&quot;130&quot; /&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Support the Project&lt;/h2&gt; 
&lt;p&gt;If Echo Music has been useful to you, consider supporting its development.&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://buymeacoffee.com/iad1tya&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/assets/bmac.png&quot; alt=&quot;Buy Me A Coffee Logo&quot; width=&quot;140&quot; /&gt; &lt;/a&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 &lt;a href=&quot;https://intradeus.github.io/http-protocol-redirector/?r=upi://pay?pa=iad1tya@upi&amp;amp;pn=Aditya%20Yadav&amp;amp;am=&amp;amp;tn=Thank%20You&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/assets/upi.svg?sanitize=true&quot; alt=&quot;UPI Logo&quot; width=&quot;100&quot; /&gt; &lt;/a&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 &lt;a href=&quot;https://www.patreon.com/cw/iad1tya&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/assets/patreon3.png&quot; alt=&quot;Patreon Logo&quot; width=&quot;100&quot; /&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;h3&gt;Cryptocurrency&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Network&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Address&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Bitcoin&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;bc1qcvyr7eekha8uytmffcvgzf4h7xy7shqzke35fy&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Ethereum&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;0x51bc91022E2dCef9974D5db2A0e22d57B360e700&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Solana&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;code&gt;9wjca3EQnEiqzqgy7N5iqS1JGXJiknMQv6zHgL96t94S&lt;/code&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Special Thanks&lt;/h2&gt; 
&lt;p&gt;Echo Music stands on the shoulders of several excellent open-source projects. Sincere thanks to:&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Project&lt;/th&gt; 
   &lt;th style=&quot;text-align:left&quot;&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/MetrolistGroup/Metrolist&quot;&gt;Metrolist&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://github.com/vivizzz007/vivi-music&quot;&gt;Vivi Music&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Foundational inspiration and architecture reference&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/koiverse/ArchiveTune&quot;&gt;ArchiveTune&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Material You UI inspiration&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://better-lyrics.boidu.dev/&quot;&gt;Better Lyrics&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Lyrics enhancement and synchronization&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/maxrave-dev/SimpMusic&quot;&gt;SimpMusic&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Lyrics implementation reference&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;&lt;a href=&quot;https://github.com/aleksey-saenko/MusicRecognizer&quot;&gt;Music Recognizer&lt;/a&gt;&lt;/td&gt; 
   &lt;td style=&quot;text-align:left&quot;&gt;Audio recognition (Echo Find)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Star History&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.star-history.com/#EchoMusicApp/Echo-Music&amp;amp;type=timeline&amp;amp;legend=top-left&quot;&gt;&lt;img src=&quot;https://api.star-history.com/svg?repos=EchoMusicApp/Echo-Music&amp;amp;type=timeline&amp;amp;legend=top-left&quot; alt=&quot;Star History Chart&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;div align=&quot;center&quot;&gt;
  Licensed under 
 &lt;a href=&quot;https://raw.githubusercontent.com/EchoMusicApp/Echo-Music/main/LICENSE&quot;&gt;GPL-3.0&lt;/a&gt; 
&lt;/div&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/195eaaafcc44e2ca73286851cc69a8248962cd38a9a438e3713c078845e8a3f8/EchoMusicApp/Echo-Music" medium="image" />
      
    </item>
    
    <item>
      <title>tiann/KernelSU</title>
      <link>https://github.com/tiann/KernelSU</link>
      <description>&lt;p&gt;A Kernel based root solution for Android&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;strong&gt;English&lt;/strong&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/README_ES.md&quot;&gt;Español&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/README_CN.md&quot;&gt;简体中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/README_TW.md&quot;&gt;繁體中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/README_JP.md&quot;&gt;日本語&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/README_KR.md&quot;&gt;한국어&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/README_PL.md&quot;&gt;Polski&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/README_PT-BR.md&quot;&gt;Português (Brasil)&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/README_TR.md&quot;&gt;Türkçe&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/README_RU.md&quot;&gt;Русский&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/README_VI.md&quot;&gt;Tiếng Việt&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/README_ID.md&quot;&gt;Indonesia&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/README_IW.md&quot;&gt;עברית&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/README_IN.md&quot;&gt;हिंदी&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/README_IT.md&quot;&gt;Italiano&lt;/a&gt;&lt;/p&gt; 
&lt;h1&gt;KernelSU&lt;/h1&gt; 
&lt;img src=&quot;https://kernelsu.org/logo.png&quot; style=&quot;width: 96px;&quot; alt=&quot;logo&quot; /&gt; 
&lt;p&gt;A kernel-based root solution for Android devices.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/tiann/KernelSU/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/tiann/KernelSU?label=Release&amp;amp;logo=github&quot; alt=&quot;Latest release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://hosted.weblate.org/engage/kernelsu&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Localization-Weblate-teal?logo=weblate&quot; alt=&quot;Weblate&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://t.me/KernelSU&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Follow-Telegram-blue.svg?logo=telegram&quot; alt=&quot;Channel&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-GPL%20v2-orange.svg?logo=gnu&quot; alt=&quot;License: GPL v2&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/tiann/KernelSU?logo=gnu&quot; alt=&quot;GitHub License&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt;Kernel-based &lt;code&gt;su&lt;/code&gt; and root access management.&lt;/li&gt; 
 &lt;li&gt;Module system based on &lt;a href=&quot;https://kernelsu.org/guide/metamodule.html&quot;&gt;metamodules&lt;/a&gt;: Pluggable infrastructure for systemless modifications.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://kernelsu.org/guide/app-profile.html&quot;&gt;App Profile&lt;/a&gt;: Lock up the root power in a cage.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Compatibility state&lt;/h2&gt; 
&lt;p&gt;KernelSU officially supports Android GKI 2.0 devices (kernel 5.10+). Older kernels (4.14+) are also supported, but the kernel will need to be built manually.&lt;/p&gt; 
&lt;p&gt;With this, WSA, ChromeOS, and container-based Android are all supported.&lt;/p&gt; 
&lt;p&gt;Currently, the &lt;code&gt;arm64-v8a&lt;/code&gt; and &lt;code&gt;x86_64&lt;/code&gt; architectures are supported.&lt;/p&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-caution&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-stop mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Caution&lt;/p&gt;
 &lt;p&gt;Recent kernel versions have implemented a breaking change causing KernelSU to fail and potentially trigger a kernel panic on &lt;code&gt;x86_64&lt;/code&gt;! Check the website for more info!&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Usage&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://kernelsu.org/guide/installation.html&quot;&gt;Installation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://kernelsu.org/guide/how-to-build.html&quot;&gt;How to build&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://kernelsu.org/&quot;&gt;Official website&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Translation&lt;/h2&gt; 
&lt;p&gt;To help translate KernelSU, we no longer accept translation contributions via Weblate. All translations are now handled using LLMs.&lt;/p&gt; 
&lt;p&gt;If you would like to add support for a new language, feel free to open a PR. Please note that modifications to existing English and Chinese translations are not accepted.&lt;/p&gt; 
&lt;h2&gt;Discussion&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Telegram: &lt;a href=&quot;https://t.me/KernelSU&quot;&gt;@KernelSU&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Security&lt;/h2&gt; 
&lt;p&gt;For information on reporting security vulnerabilities in KernelSU, see &lt;a href=&quot;https://raw.githubusercontent.com/tiann/KernelSU/main/SECURITY.md&quot;&gt;SECURITY.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Files under the &lt;code&gt;kernel&lt;/code&gt; directory are &lt;a href=&quot;https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html&quot;&gt;GPL-2.0-only&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;All other parts except the &lt;code&gt;kernel&lt;/code&gt; directory are &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0.html&quot;&gt;GPL-3.0-or-later&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Credits&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://git.zx2c4.com/kernel-assisted-superuser/about/&quot;&gt;Kernel-Assisted Superuser&lt;/a&gt;: The KernelSU idea.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/topjohnwu/Magisk&quot;&gt;Magisk&lt;/a&gt;: The powerful root tool.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/brevent/genuine/&quot;&gt;genuine&lt;/a&gt;: APK v2 signature validation.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/m0nad/Diamorphine&quot;&gt;Diamorphine&lt;/a&gt;: Some rootkit skills.&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/73c7d564a4790e4cac266ad37fbc2e6d831454fa2e83f6a2990012bcee930c7d/tiann/KernelSU" medium="image" />
      
    </item>
    
    <item>
      <title>rikkahub/rikkahub</title>
      <link>https://github.com/rikkahub/rikkahub</link>
      <description>&lt;p&gt;RikkaHub is an Android APP that supports for multiple LLM providers.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/rikkahub/rikkahub/master/docs/icon.png&quot; alt=&quot;App Icon&quot; width=&quot;100&quot; /&gt; 
 &lt;h1&gt;RikkaHub&lt;/h1&gt; 
 &lt;p&gt;&lt;a href=&quot;https://deepwiki.com/rikkahub/rikkahub&quot;&gt;&lt;img src=&quot;https://deepwiki.com/badge.svg?sanitize=true&quot; alt=&quot;Ask DeepWiki&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://zread.ai/rikkahub/rikkahub&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/zread.ai-blue?style=flat&amp;amp;logo=readthedocs&quot; alt=&quot;Ask DeepWiki&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;A native Android LLM chat client that supports switching between different providers for conversations 🤖💬&lt;/p&gt; 
 &lt;p&gt;Click to join our Discord server 👉 &lt;a href=&quot;https://discord.gg/9weBqxe5c4&quot;&gt;【RikkaHub】&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/rikkahub/rikkahub/master/README_ZH_CN.md&quot;&gt;简体中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/rikkahub/rikkahub/master/README_ZH_TW.md&quot;&gt;繁體中文&lt;/a&gt; | English&lt;/p&gt; 
&lt;/div&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/rikkahub/rikkahub/master/docs/img/chat.png&quot; alt=&quot;Chat Interface&quot; width=&quot;150&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/rikkahub/rikkahub/master/docs/img/desktop.png&quot; alt=&quot;Models Picker&quot; width=&quot;450&quot; /&gt; 
&lt;/div&gt; 
&lt;h2&gt;🚀 Download&lt;/h2&gt; 
&lt;p&gt;🔗 &lt;a href=&quot;https://rikka-ai.com/download&quot;&gt;Download from Website&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;🔗 &lt;a href=&quot;https://play.google.com/store/apps/details?id=me.rerere.rikkahub&quot;&gt;Download from Google Play&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;💖 Sponsors&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/rikkahub/rikkahub/master/app/src/main/assets/icons/aihubmix-color.svg?sanitize=true&quot; alt=&quot;Aihubmix&quot; width=&quot;50&quot; /&gt; 
 &lt;p style=&quot;font-size: 16px; font-weight: bold;&quot;&gt;Aihubmix&lt;/p&gt; 
 &lt;p style=&quot;font-size: 14px;&quot;&gt;Thanks to &lt;a href=&quot;https://aihubmix.com?aff=pG7r&quot;&gt;aihubmix.com&lt;/a&gt; for their financial support. We recommend using aihubmix as a one-stop shop for mainstream models worldwide. (OpenAI, Claude, Google Gemini, DeepSeek, Qwen, and hundreds more).&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;✨ Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;🎨 Material You Design and 🌙 Dark mode&lt;/li&gt; 
 &lt;li&gt;🔄 Multiple AI Provider Support: custom API / URL / models (all OpenAI, Google, Anthropic compatible api)&lt;/li&gt; 
 &lt;li&gt;🖼️ Multimodal input support (Image, Text Documentation, PDF, Docx)&lt;/li&gt; 
 &lt;li&gt;🖥️ Web access for multi-platform use&lt;/li&gt; 
 &lt;li&gt;🛠️ MCP support&lt;/li&gt; 
 &lt;li&gt;📝 Markdown Rendering (with code highlighting, Latex formulas, tables, Mermaid)&lt;/li&gt; 
 &lt;li&gt;🪾 Message Branching&lt;/li&gt; 
 &lt;li&gt;🔍 Search capabilities (Exa, Tavily, Zhipu, LinkUp, Brave, Perplexity, etc.)&lt;/li&gt; 
 &lt;li&gt;🧩 Prompt variables (model name, time, etc.)&lt;/li&gt; 
 &lt;li&gt;🤳 QR code export and import for providers&lt;/li&gt; 
 &lt;li&gt;🤖 Agent customization&lt;/li&gt; 
 &lt;li&gt;🧠 ChatGPT-like memory feature&lt;/li&gt; 
 &lt;li&gt;📝 AI Translation&lt;/li&gt; 
 &lt;li&gt;🌐 Custom HTTP request headers and request bodies&lt;/li&gt; 
 &lt;li&gt;💌 Silly Tavern character card import&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;✨ Contributing&lt;/h2&gt; 
&lt;p&gt;This project is developed using &lt;a href=&quot;https://developer.android.com/studio&quot;&gt;Android Studio&lt;/a&gt;. PRs are welcome!&lt;/p&gt; 
&lt;p&gt;Technology stack documentation:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://kotlinlang.org/&quot;&gt;Kotlin&lt;/a&gt; (Development language)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://insert-koin.io/&quot;&gt;Koin&lt;/a&gt; (Dependency Injection)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://developer.android.com/jetpack/compose&quot;&gt;Jetpack Compose&lt;/a&gt; (UI framework)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://developer.android.com/topic/libraries/architecture/datastore&quot;&gt;DataStore&lt;/a&gt; (Preference data storage)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://developer.android.com/training/data-storage/room&quot;&gt;Room&lt;/a&gt; (Database)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://coil-kt.github.io/coil/&quot;&gt;Coil&lt;/a&gt; (Image loading)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://m3.material.io/&quot;&gt;Material You&lt;/a&gt; (UI design)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://developer.android.com/develop/ui/compose/navigation&quot;&gt;Navigation Compose&lt;/a&gt; (Navigation)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://square.github.io/okhttp/&quot;&gt;Okhttp&lt;/a&gt; (HTTP client)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/Kotlin/kotlinx.serialization&quot;&gt;kotlinx.serialization&lt;/a&gt; (JSON serialization)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://composeicons.com/icon-libraries/lucide&quot;&gt;compose-icons/lucide&lt;/a&gt; (Icon library)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-light-bulb mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Tip&lt;/p&gt;
 &lt;p&gt;You need a &lt;code&gt;google-services.json&lt;/code&gt; file at &lt;code&gt;app&lt;/code&gt; folder to build the app.&lt;/p&gt; 
&lt;/div&gt; 
&lt;div class=&quot;markdown-alert markdown-alert-important&quot;&gt;
 &lt;p class=&quot;markdown-alert-title&quot;&gt;
  &lt;svg class=&quot;octicon octicon-report mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;
   &lt;path d=&quot;M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;Important&lt;/p&gt;
 &lt;p&gt;The following PRs will be rejected:&lt;/p&gt; 
 &lt;ol&gt; 
  &lt;li&gt;Translation related changes, such as adding new languages or updating existing translations&lt;/li&gt; 
  &lt;li&gt;Adding new features, this project is opinionated and will not accept pull requests for new features&lt;/li&gt; 
  &lt;li&gt;Large-scale refactoring and changes generated by AI&lt;/li&gt; 
 &lt;/ol&gt; 
&lt;/div&gt; 
&lt;h2&gt;💰 Donate&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://patreon.com/rikkahub&quot;&gt;Patreon&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://afdian.com/a/reovo&quot;&gt;爱发电&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;⭐ Star History&lt;/h2&gt; 
&lt;p&gt;If you like this project, please give it a star ⭐&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://star-history.com/#re-ovo/rikkahub&amp;amp;Date&quot;&gt;&lt;img src=&quot;https://api.star-history.com/svg?repos=re-ovo/rikkahub&amp;amp;type=Date&quot; alt=&quot;Star History Chart&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;📄 License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/rikkahub/rikkahub/master/LICENSE&quot;&gt;License&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/59ab9921dab43427e71257a4c34713e58f883c07a30750cd85eb1dd1e938862e/rikkahub/rikkahub" medium="image" />
      
    </item>
    
    <item>
      <title>theovilardo/PixelPlayer</title>
      <link>https://github.com/theovilardo/PixelPlayer</link>
      <description>&lt;p&gt;privacy-first Android music player built with Material 3 Expressive. Play offline, sync lyrics, fine-tune with equalizer presets, and cast to your devices.&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;PixelPlayer 🎵&lt;/h1&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/theovilardo/PixelPlayer/master/assets/icon.png&quot; alt=&quot;App Icon&quot; width=&quot;128&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;strong&gt;A beautiful, feature-rich music player for Android&lt;/strong&gt;&lt;br /&gt; Built with Jetpack Compose and Material Design 3 &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/theovilardo/PixelPlayer/master/assets/screenshot1.jpg&quot; alt=&quot;Screenshot 1&quot; width=&quot;200&quot; style=&quot;border-radius:26px;&quot; /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/theovilardo/PixelPlayer/master/assets/screenshot2.jpg&quot; alt=&quot;Screenshot 2&quot; width=&quot;200&quot; style=&quot;border-radius:26px;&quot; /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/theovilardo/PixelPlayer/master/assets/screenshot3.jpg&quot; alt=&quot;Screenshot 3&quot; width=&quot;200&quot; style=&quot;border-radius:26px;&quot; /&gt; &lt;img src=&quot;https://raw.githubusercontent.com/theovilardo/PixelPlayer/master/assets/screenshot4.jpg&quot; alt=&quot;Screenshot 4&quot; width=&quot;200&quot; style=&quot;border-radius:26px;&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/theovilardo/PixelPlayer/releases/latest&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/v/release/theovilardo/PixelPlayer?include_prereleases&amp;amp;logo=github&amp;amp;style=for-the-badge&amp;amp;label=Latest%20Release&quot; alt=&quot;Latest Release&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/theovilardo/PixelPlayer/releases&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/downloads/theovilardo/PixelPlayer/total?logo=github&amp;amp;style=for-the-badge&quot; alt=&quot;Total Downloads&quot; /&gt; &lt;/a&gt; &lt;img src=&quot;https://img.shields.io/badge/Android-11%2B-green?style=for-the-badge&amp;amp;logo=android&quot; alt=&quot;Android 11+&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/Kotlin-100%25-purple?style=for-the-badge&amp;amp;logo=kotlin&quot; alt=&quot;Kotlin&quot; /&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;‼️ DISCLAIMER&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;No fork of this project will recieve support, if you use a fork, ask the forker to support you.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;✨ Features&lt;/h2&gt; 
&lt;h3&gt;🎨 Modern UI/UX&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Material You&lt;/strong&gt; - Dynamic color theming that adapts to your wallpaper&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Smooth Animations&lt;/strong&gt; - Fluid transitions and micro-interactions&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Customizable UI&lt;/strong&gt; - Adjustable corner radius and navigation bar settings&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Dark/Light Theme&lt;/strong&gt; - Automatic or manual theme switching&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Album Art Colors&lt;/strong&gt; - Dynamic color extraction from album artwork&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🎵 Powerful Playback&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Media3 ExoPlayer&lt;/strong&gt; - Industry-leading audio engine with FFmpeg support&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Background Playback&lt;/strong&gt; - Full media session integration&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Queue Management&lt;/strong&gt; - Drag-and-drop reordering&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Shuffle &amp;amp; Repeat&lt;/strong&gt; - All playback modes supported&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Gapless Playback&lt;/strong&gt; - Seamless transitions between tracks&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Custom Transitions&lt;/strong&gt; - Configure crossfades between songs&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;📚 Library Management&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Multi-format Support&lt;/strong&gt; - MP3, FLAC, AAC, OGG, WAV, and more&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Browse By&lt;/strong&gt; - Songs, Albums, Artists, Genres, Folders&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Smart Artist Parsing&lt;/strong&gt; - Configurable delimiters for multi-artist tracks&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Album Artist Grouping&lt;/strong&gt; - Proper album organization&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Folder Filtering&lt;/strong&gt; - Choose which directories to scan&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🔍 Discovery &amp;amp; Organization&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Full-text Search&lt;/strong&gt; - Search across your entire library&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Daily Mix&lt;/strong&gt; - AI-powered personalized playlist based on listening habits&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Playlists&lt;/strong&gt; - Create and manage custom playlists&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Statistics&lt;/strong&gt; - Track your listening history and habits&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🎤 Lyrics&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Synchronized Lyrics&lt;/strong&gt; - LRC format via LRCLIB API&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Lyrics Editing&lt;/strong&gt; - Modify or add lyrics to your tracks&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Scrolling Display&lt;/strong&gt; - Follow along as you listen&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🖼️ Artist Artwork&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Deezer Integration&lt;/strong&gt; - Automatic artist images from Deezer API&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Smart Caching&lt;/strong&gt; - Memory (LRU) + database caching for offline access&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Fallback Icons&lt;/strong&gt; - Beautiful placeholders when images unavailable&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;📲 Connectivity&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Chromecast&lt;/strong&gt; - Stream to your TV or smart speakers&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Android Auto&lt;/strong&gt; - Full Android Auto support for in-car playback (Soon)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Widgets&lt;/strong&gt; - Home screen control with Glance widgets&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;⚙️ Advanced Features&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Tag Editor&lt;/strong&gt; - Edit metadata with TagLib (MP3, FLAC, M4A support)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;AI Playlists&lt;/strong&gt; - Generate playlists with AI (Supports Gemini, Deepseek, OpenAI, etc.)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🛠️ Tech Stack&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Category&lt;/th&gt; 
   &lt;th&gt;Technology&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Language&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://kotlinlang.org/&quot;&gt;Kotlin&lt;/a&gt; 100%&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;UI Framework&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://developer.android.com/jetpack/compose&quot;&gt;Jetpack Compose&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Design System&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://m3.material.io/&quot;&gt;Material Design 3&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Audio Engine&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://developer.android.com/guide/topics/media/media3&quot;&gt;Media3 ExoPlayer&lt;/a&gt; + FFmpeg&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;MVVM with StateFlow/SharedFlow&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;DI&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://dagger.dev/hilt/&quot;&gt;Hilt&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Database&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://developer.android.com/training/data-storage/room&quot;&gt;Room&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Networking&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://square.github.io/retrofit/&quot;&gt;Retrofit&lt;/a&gt; + OkHttp&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Image Loading&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://coil-kt.github.io/coil/&quot;&gt;Coil&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Async&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Kotlin Coroutines &amp;amp; Flow&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Background Tasks&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;WorkManager&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Metadata&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/nicholaus/taglib-android&quot;&gt;TagLib&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Widgets&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://developer.android.com/jetpack/compose/glance&quot;&gt;Glance&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📱 Requirements&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Android 11&lt;/strong&gt; (API 30) or higher&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;6GB RAM&lt;/strong&gt; recommended for smooth performance&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🚀 Getting Started&lt;/h2&gt; 
&lt;h3&gt;Prerequisites&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Android Studio Ladybug | 2024.2.1 or newer&lt;/li&gt; 
 &lt;li&gt;Android SDK 29+&lt;/li&gt; 
 &lt;li&gt;JDK 11+&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Installation&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Clone the repository&lt;/strong&gt;&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;git clone https://github.com/theovilardo/PixelPlayer.git
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Open in Android Studio&lt;/strong&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Open Android Studio&lt;/li&gt; 
   &lt;li&gt;Select &quot;Open an Existing Project&quot;&lt;/li&gt; 
   &lt;li&gt;Navigate to the cloned directory&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Sync and Build&lt;/strong&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Wait for Gradle to sync dependencies&lt;/li&gt; 
   &lt;li&gt;Build the project (Build → Make Project)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Run&lt;/strong&gt;&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;Connect a device or start an emulator&lt;/li&gt; 
   &lt;li&gt;Click Run (▶️)&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h2&gt;⬇️ Download&lt;/h2&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://github.com/theovilardo/PixelPlayer/releases/latest&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/Kunzisoft/Github-badge/main/get-it-on-github.png&quot; alt=&quot;Get it on GitHub&quot; height=&quot;60&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22com.theveloper.pixelplay%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Ftheovilardo%2FPixelPlayer%22%2C%22author%22%3A%22theovilardo%22%2C%22name%22%3A%22PixelPlayer%22%2C%22supportFixedAPKURL%22%3Afalse%7D&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/ImranR98/Obtainium/main/assets/graphics/badge_obtainium.png&quot; alt=&quot;Get it on Obtainium&quot; height=&quot;50&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📂 Project Structure&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;app/src/main/java/com/theveloper/pixelplay/
├── data/
│   ├── database/       # Room entities, DAOs, migrations
│   ├── model/          # Domain models (Song, Album, Artist, etc.)
│   ├── network/        # API services (LRCLIB, Deezer)
│   ├── preferences/    # DataStore preferences
│   ├── repository/     # Data repositories
│   ├── service/        # MusicService, HTTP server
│   └── worker/         # WorkManager sync workers
├── di/                 # Hilt dependency injection modules
├── presentation/
│   ├── components/     # Reusable Compose components
│   ├── navigation/     # Navigation graph
│   ├── screens/        # Screen composables
│   └── viewmodel/      # ViewModels
├── ui/
│   ├── glancewidget/   # Home screen widgets
│   └── theme/          # Colors, typography, theming
└── utils/              # Extensions and utilities
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🤝 Contributing&lt;/h2&gt; 
&lt;p&gt;Contributions are welcome! Please feel free to submit a Pull Request.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Fork the Project&lt;/li&gt; 
 &lt;li&gt;Create your Feature Branch (&lt;code&gt;git checkout -b feature/AmazingFeature&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;Commit your Changes (&lt;code&gt;git commit -m &#39;Add some AmazingFeature&#39;&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;Push to the Branch (&lt;code&gt;git push origin feature/AmazingFeature&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;Open a Pull Request&lt;/li&gt; 
&lt;/ol&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📄 License&lt;/h2&gt; 
&lt;p&gt;This project is licensed under a Proprietary License - see the &lt;a href=&quot;https://raw.githubusercontent.com/theovilardo/PixelPlayer/master/LICENSE&quot;&gt;LICENSE&lt;/a&gt; file for details.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p align=&quot;center&quot;&gt; Made with ❤️ by &lt;a href=&quot;https://github.com/theovilardo&quot;&gt;theovilardo&lt;/a&gt; &lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/9ac80df2502cc68fd895f0e6bb7f46d4cfc0bf9579841117553e7850b5b8367f/theovilardo/PixelPlayer" medium="image" />
      
    </item>
    
    <item>
      <title>hectorqin/reader</title>
      <link>https://github.com/hectorqin/reader</link>
      <description>&lt;p&gt;阅读3服务器版，桌面端，iOS可用。后端 Kotlin + Spring Boot + Vert.x + Coroutine ；前端 Vue.js + Element。麻烦点点star，关注一下公众号【假装大佬】❗️&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;reader&lt;/h1&gt; 
&lt;p&gt;阅读3服务器版，不需要手机。&lt;/p&gt; 
&lt;p&gt;加入TG群(限时开放) 👉 &lt;a href=&quot;https://t.me/+pQ8HDlANPZ84ZWNl&quot;&gt;https://t.me/+pQ8HDlANPZ84ZWNl&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;关注公众号，查看教程和书源👇&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/hectorqin/reader/master/imgs/mpcode.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;注意❗️&lt;/p&gt; 
 &lt;p&gt;Reader 完整源码仅开放到 v2.5.4，新版本当前仅开放部分开源源码，见 &lt;a href=&quot;https://github.com/hectorqin/reader-legado&quot;&gt;https://github.com/hectorqin/reader-legado&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;details&gt;
 &lt;summary&gt;免责声明（Disclaimer）&lt;/summary&gt; 阅读是一款提供网络文学搜索的工具，为广大网络文学爱好者提供一种方便、快捷舒适的试读体验。 
 &lt;p&gt;当您搜索一本书的时，阅读会将该书的书名以关键词的形式提交到各个第三方网络文学网站。各第三方网站返回的内容与阅读无关，阅读对其概不负责，亦不承担任何法律责任。任何通过使用阅读而链接到的第三方网页均系他人制作或提供，您可能从第三方网页上获得其他服务，阅读对其合法性概不负责，亦不承担任何法律责任。第三方搜索引擎结果根据您提交的书名自动搜索获得并提供试读，不代表阅读赞成或被搜索链接到的第三方网页上的内容或立场。您应该对使用搜索引擎的结果自行承担风险。&lt;/p&gt; 
 &lt;p&gt;阅读不做任何形式的保证：不保证第三方搜索引擎的搜索结果满足您的要求，不保证搜索服务不中断，不保证搜索结果的安全性、正确性、及时性、合法性。因网络状况、通讯线路、第三方网站等任何原因而导致您不能正常使用阅读，阅读不承担任何法律责任。阅读尊重并保护所有使用阅读用户的个人隐私权，您注册的用户名、电子邮件地址等个人资料，非经您亲自许可或根据相关法律、法规的强制性规定，阅读不会主动地泄露给第三方。&lt;/p&gt; 
 &lt;p&gt;阅读致力于最大程度地减少网络文学阅读者在自行搜寻过程中的无意义的时间浪费，通过专业搜索展示不同网站中网络文学的最新章节。阅读在为广大小说爱好者提供方便、快捷舒适的试读体验的同时，也使优秀网络文学得以迅速、更广泛的传播，从而达到了在一定程度促进网络文学充分繁荣发展之目的。阅读鼓励广大小说爱好者通过阅读发现优秀网络小说及其提供商，并建议阅读正版图书。任何单位或个人认为通过阅读搜索链接到的第三方网页内容可能涉嫌侵犯其信息网络传播权，应该及时向阅读提出书面权力通知，并提供身份证明、权属证明及详细侵权情况证明。阅读在收到上述法律文件后，将会依法尽快断开相关链接内容。&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt;
 &lt;summary&gt;功能说明&lt;/summary&gt; 书源管理 
 &lt;br /&gt; - 书架管理 
 &lt;br /&gt; - 书架布局 
 &lt;br /&gt; - 搜索 
 &lt;br /&gt; - 书海 
 &lt;br /&gt; - 看书 
 &lt;br /&gt; - 移动端适配 
 &lt;br /&gt; - 换源 
 &lt;br /&gt; - 翻页方式 
 &lt;br /&gt; - 手势支持 
 &lt;br /&gt; - 自定义主题 
 &lt;br /&gt; - 自定义样式 
 &lt;br /&gt; - WebDAV同步 
 &lt;br /&gt; - 文字替换过滤 
 &lt;br /&gt; - 听书&amp;lt;仅部分浏览器支持，手机端会因为锁屏而失效&amp;gt; 
 &lt;br /&gt; - 用户配置备份恢复 
 &lt;br /&gt; - 支持漫画 
 &lt;br /&gt; - 支持音频 
 &lt;br /&gt; - 书源失效检测 
 &lt;br /&gt; - 导入本地TXT、EPUB、UMD、PDF格式的书籍 
 &lt;br /&gt; - 书籍分组 
 &lt;br /&gt; - RSS订阅 
 &lt;br /&gt; - 定时更新书架 
 &lt;br /&gt; - 并发搜书 
 &lt;br /&gt; - 本地书仓 
 &lt;br /&gt; - 支持kindle阅读 
 &lt;br /&gt; 
&lt;/details&gt; 
&lt;h2&gt;下载与安装&lt;/h2&gt; 
&lt;p&gt;详见&lt;a href=&quot;https://github.com/hectorqin/reader/raw/master/doc.md&quot;&gt;文档&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;问题&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;部分使用了 &lt;code&gt;Javascript&lt;/code&gt; 的书源可能会报错，如调用原生java等高级Javascript功能&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;webview&lt;/code&gt; 功能需要另外部署接口，不支持 &lt;code&gt;sourceRegex&lt;/code&gt; 匹配资源响应&lt;/li&gt; 
 &lt;li&gt;不支持书源登录功能&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;感谢&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;项目初期参考了 &lt;a href=&quot;https://github.com/lightink-qingmo/lightink-server&quot;&gt;lightink-小说API&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gedoor/MyBookshelf&quot;&gt;阅读&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/gedoor/legado&quot;&gt;阅读3.0&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;项目初期参考了 &lt;a href=&quot;https://github.com/celetor/web-yuedu3&quot;&gt;阅读3.0Web端&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;其它&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/hectorqin/reader/raw/master/doc.md&quot;&gt;帮助文档&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/hectorqin/reader/raw/master/preview.md&quot;&gt;界面预览&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/2cdcf47b988b574f6419d41232b190926492e3fd142b4e815d517240b09ef5e5/hectorqin/reader" medium="image" />
      
    </item>
    
    <item>
      <title>dovecoteescapee/ByeDPIAndroid</title>
      <link>https://github.com/dovecoteescapee/ByeDPIAndroid</link>
      <description>&lt;p&gt;App to bypass censorship on Android&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;ByeDPI for Android&lt;/h1&gt; 
&lt;p&gt;&lt;strong&gt;English&lt;/strong&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/dovecoteescapee/ByeDPIAndroid/master/README-ru.md&quot;&gt;Русский&lt;/a&gt;&lt;/p&gt; 
&lt;div style=&quot;text-align: center;&quot;&gt; 
 &lt;img alt=&quot;ByeDPI logo&quot; src=&quot;https://raw.githubusercontent.com/dovecoteescapee/ByeDPIAndroid/master/.github/images/logo.svg?sanitize=true&quot; width=&quot;100%&quot; height=&quot;200px&quot; /&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;p&gt;Android application that runs a local VPN service to bypass DPI (Deep Packet Inspection) and censorship.&lt;/p&gt; 
&lt;p&gt;This application runs a SOCKS5 proxy &lt;a href=&quot;https://github.com/hufrea/byedpi&quot;&gt;ByeDPI&lt;/a&gt; and redirects all traffic through it.&lt;/p&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/dovecoteescapee/ByeDPIAndroid/releases&quot;&gt;&lt;img src=&quot;https://github.com/machiav3lli/oandbackupx/raw/034b226cea5c1b30eb4f6a6f313e4dadcbb0ece4/badge_github.png&quot; alt=&quot;Get it on GitHub&quot; height=&quot;80&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://apt.izzysoft.de/fdroid/index/apk/io.github.dovecoteescapee.byedpi&quot;&gt;&lt;img src=&quot;https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png&quot; alt=&quot;Get it on IzzyOnDroid&quot; height=&quot;80&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;Or use Obtainium&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Install &lt;a href=&quot;https://github.com/ImranR98/Obtainium/raw/main/README.md#installation&quot;&gt;Obtainium&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Add the app by URL:&lt;br /&gt; &lt;code&gt;https://github.com/dovecoteescapee/ByeDPIAndroid&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Settings&lt;/h2&gt; 
&lt;p&gt;To bypass some blocks, you may need to change the settings. More about the various settings can be found in the &lt;a href=&quot;https://github.com/hufrea/byedpi/raw/v0.13/README.md&quot;&gt;ByeDPI documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;FAQ&lt;/h2&gt; 
&lt;h3&gt;I can&#39;t configure it. What to do?&lt;/h3&gt; 
&lt;p&gt;You can ask for help in &lt;a href=&quot;https://github.com/dovecoteescapee/ByeDPIAndroid/discussions&quot;&gt;discussion&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Does the application require root access?&lt;/h3&gt; 
&lt;p&gt;No. All application features work without root.&lt;/p&gt; 
&lt;h3&gt;Is this a VPN?&lt;/h3&gt; 
&lt;p&gt;No. The application uses the VPN mode on Android to redirect traffic, but does not send anything to a remote server. It does not encrypt traffic and does not hide your IP address.&lt;/p&gt; 
&lt;h3&gt;How to use ByeDPI with AdGuard?&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Run ByeDPI in proxy mode.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Add ByeDPI to AdGuard exceptions on the &quot;App management&quot; tab.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;In AdGuard settings, specify the proxy:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;Proxy type: SOCKS5
Proxy host: 127.0.0.1
Proxy port: 1080 (default)
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;What data does the application collect?&lt;/h3&gt; 
&lt;p&gt;None. The application does not send any data to a remote server. All traffic is processed on the device.&lt;/p&gt; 
&lt;h3&gt;Are there any for other platforms?&lt;/h3&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/ValdikSS/GoodbyeDPI/raw/master/README.md#similar-projects&quot;&gt;Similar projects&lt;/a&gt;)&lt;/p&gt; 
&lt;h3&gt;What is DPI?&lt;/h3&gt; 
&lt;p&gt;DPI (Deep Packet Inspection) is a technology for analyzing and filtering traffic. It is used by providers and government agencies to block sites and services.&lt;/p&gt; 
&lt;h2&gt;Dependencies&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/hufrea/byedpi&quot;&gt;ByeDPI&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/heiher/hev-socks5-tunnel&quot;&gt;hev-socks5-tunnel&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Building&lt;/h2&gt; 
&lt;p&gt;For building the application, you need:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;JDK 8 or later&lt;/li&gt; 
 &lt;li&gt;Android SDK&lt;/li&gt; 
 &lt;li&gt;Android NDK&lt;/li&gt; 
 &lt;li&gt;CMake 3.22.1 or later&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;To build the application:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Clone the repository with submodules:&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone --recurse-submodules
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;Run the build script from the root of the repository:&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./gradlew assembleRelease
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;The APK will be in &lt;code&gt;app/build/outputs/apk/release/&lt;/code&gt;&lt;/li&gt; 
&lt;/ol&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/5550c92e9ec927bbb56ed3d32415023a8dfe5f8291fdd33212f0f4269c642e52/dovecoteescapee/ByeDPIAndroid" medium="image" />
      
    </item>
    
    <item>
      <title>open-ani/animeko</title>
      <link>https://github.com/open-ani/animeko</link>
      <description>&lt;p&gt;集找番、追番、看番的一站式弹幕追番平台，云收藏同步 (Bangumi)，离线缓存，BitTorrent，弹幕云过滤。100% Kotlin/Compose Multiplatform&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;p&gt;&lt;img src=&quot;https://socialify.git.ci/open-ani/animeko/image?description=1&amp;amp;descriptionEditable=%E9%9B%86%E6%89%BE%E7%95%AA%E3%80%81%E8%BF%BD%E7%95%AA%E3%80%81%E7%9C%8B%E7%95%AA%E7%9A%84%E4%B8%80%E7%AB%99%E5%BC%8F%E5%BC%B9%E5%B9%95%E8%BF%BD%E7%95%AA%E5%B9%B3%E5%8F%B0&amp;amp;font=Jost&amp;amp;logo=https%3A%2F%2Fraw.githubusercontent.com%2Fopen-ani%2Fanimeko%2Frefs%2Fheads%2Fmain%2F.github%2Fassets%2Flogo.png&amp;amp;name=1&amp;amp;owner=1&amp;amp;pattern=Plus&amp;amp;theme=Light&quot; alt=&quot;Animeko&quot; /&gt;&lt;/p&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;正式版&lt;/th&gt; 
    &lt;th&gt;测试版&lt;/th&gt; 
    &lt;th&gt;讨论群&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/open-ani/ani/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/release/open-ani/ani.svg?maxAge=3600&amp;amp;label=Stable&amp;amp;labelColor=06599d&amp;amp;color=043b69&quot; alt=&quot;Stable&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/open-ani/ani/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/open-ani/ani.svg?maxAge=3600&amp;amp;label=Beta&amp;amp;labelColor=2c2c47&amp;amp;color=1c1c39&amp;amp;include_prereleases&quot; alt=&quot;Beta&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://t.me/openani&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Telegram-2CA5E0?style=flat-squeare&amp;amp;logo=telegram&amp;amp;logoColor=white&quot; alt=&quot;Group&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
&lt;/div&gt; 
&lt;p&gt;Animeko 支持云同步观看记录 (&lt;a href=&quot;http://bangumi.tv&quot;&gt;Bangumi&lt;/a&gt;)、多视频数据源、缓存、弹幕、以及更多功能，提供尽可能简单且舒适的追番体验。&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Animeko 曾用名 Ani，现在也简称 Ani。&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;a href=&quot;https://animeko.org/&quot;&gt;立即下载&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/user-attachments/assets/e63636c9-30b7-411c-aa6b-e5b78b900726&quot;&gt;https://github.com/user-attachments/assets/e63636c9-30b7-411c-aa6b-e5b78b900726&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;主要功能&lt;/h2&gt; 
&lt;h3&gt;浏览来自 &lt;a href=&quot;http://bangumi.tv&quot;&gt;Bangumi&lt;/a&gt; 的番剧信息以及社区评价&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/subject-details.png&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/subject-rating.png&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
&lt;/table&gt; 
&lt;h3&gt;丰富的检索方式：新番时间表、标签搜索&lt;/h3&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;由 Bangumi 和 Animeko 服务端共同提供的精确新番时间表&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/anime-schedule.png&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/search-by-tag.png&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
&lt;/table&gt; 
&lt;h3&gt;云同步追番进度&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;省心的追番进度管理，看完视频自动更新进度&lt;/li&gt; 
 &lt;li&gt;打开 APP 立即继续观看，无需回想上次看到了哪&lt;/li&gt; 
&lt;/ul&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/subject-collection.png&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/home.png&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
&lt;/table&gt; 
&lt;h3&gt;聚合数据源&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;聚合视频数据源，全自动选择 
  &lt;blockquote&gt; 
   &lt;p&gt;还支持 BitTorrent、Jellyfin、Emby、以及自定义源&lt;/p&gt; 
  &lt;/blockquote&gt; &lt;/li&gt; 
 &lt;li&gt;聚合全网弹幕源（&lt;a href=&quot;https://www.dandanplay.com/&quot;&gt;弹弹play&lt;/a&gt;），以及 Animeko 自己的&lt;a href=&quot;https://danmaku-cn.myani.org/swagger/index.html&quot;&gt;弹幕服务&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/mediaselector-simple.png&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/mediaselector-detailed.png&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
&lt;/table&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/episode.png&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/episode-scrolled.png&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
&lt;/table&gt; 
&lt;h3&gt;离线缓存&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;所有数据源都能缓存&lt;/li&gt; 
&lt;/ul&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/cache-episode.png&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/cache-list.png&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
&lt;/table&gt; 
&lt;h3&gt;精美界面&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/player-fullscreen.png&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
&lt;/table&gt; 
&lt;ul&gt; 
 &lt;li&gt;适配平板和大屏设备&lt;/li&gt; 
&lt;/ul&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/pc-home.png&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
&lt;/table&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/pc-search.png&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
&lt;/table&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/pc-search-detail.png&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
&lt;/table&gt; 
&lt;h3&gt;更多个性设置&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/danmaku-settings.png&quot; alt=&quot;&quot; width=&quot;600&quot; /&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
&lt;/table&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/theme-settings.png&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/th&gt; 
   &lt;th style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/.readme/images/features/media-preferences.png&quot; alt=&quot;&quot; width=&quot;200&quot; /&gt;&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
&lt;/table&gt; 
&lt;h2&gt;下载&lt;/h2&gt; 
&lt;p&gt;Animeko 支持所有主流平台：Android、iOS、Windows、macOS、Linux。&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;稳定版本: 每两周更新, 功能稳定&lt;br /&gt; &lt;a href=&quot;https://animeko.org/downloads/&quot;&gt;下载稳定版本&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;通常建议使用稳定版本. 如果你愿意参与测试并拥有一定的对 bug 的处理能力, 也欢迎使用测试版本更快体验新功能. 具体版本类型可查看下方.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;测试版本: 每两天更新, 体验最新功能&lt;br /&gt; &lt;a href=&quot;https://animeko.org/downloads/&quot;&gt;下载测试版本&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;details&gt; 
 &lt;summary&gt; &lt;b&gt;点击查看具体版本类型&lt;/b&gt; &lt;/summary&gt; 
 &lt;p&gt;Animeko 采用语义化版本号, 简单来说就是 &lt;code&gt;4.x.y&lt;/code&gt; 的格式. 有以下几种版本类型:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;稳定版本: 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;新特性发布&lt;/strong&gt;: 当 &lt;code&gt;x&lt;/code&gt; 更新时, 会有新特性的发布. 通常为 2 周一次.&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Bug 修复&lt;/strong&gt;: 当 &lt;code&gt;y&lt;/code&gt; 更新时, 只会有针对前个版本的重要的 bug 修复. 这些 Bug 修复版本穿插在新特性更新的间隔中, 时间不固定.&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
  &lt;li&gt;在稳定版本的发布周期之间, 会发布测试版本: 
   &lt;ul&gt; 
    &lt;li&gt;&lt;strong&gt;Alpha 测试版&lt;/strong&gt;: 所有重大新功能都会首先发布到 &lt;code&gt;alpha&lt;/code&gt; 测试通道, 客户端内可使用 &quot;每日构建&quot; 接收更新. 这些新功能非常不稳定, 适合热情的先锋测试员!&lt;/li&gt; 
    &lt;li&gt;&lt;strong&gt;Beta 测试版&lt;/strong&gt;: 在功能经过 alpha 测试修复重大问题后, 会进入 &lt;code&gt;beta&lt;/code&gt; 测试通道, 在客户端内名称为 &quot;测试版&quot;. 此版本仍然不稳定, 是一个平衡新功能和稳定性的选择&lt;/li&gt; 
   &lt;/ul&gt; &lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;技术总览&lt;/h2&gt; 
&lt;p&gt;如果你是开发者，我们总是欢迎你提交 PR 参与开发！ 以下几点可以给你一个技术上的大概了解。&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://kotlinlang.org/docs/multiplatform.html&quot;&gt;Kotlin 多平台&lt;/a&gt;架构；&lt;/li&gt; 
 &lt;li&gt;使用新一代响应式 UI 框架 &lt;a href=&quot;https://www.jetbrains.com/compose-multiplatform/&quot;&gt;Compose Multiplatform&lt;/a&gt; 构建 UI；&lt;/li&gt; 
 &lt;li&gt;内置专为 Animeko 打造的“基于 &lt;a href=&quot;https://libtorrent.org/&quot;&gt;libtorrent&lt;/a&gt; 的 BitTorrent 引擎，优化边下边播的体验；&lt;/li&gt; 
 &lt;li&gt;高性能弹幕引擎，公益弹幕服务器 + 网络弹幕源；&lt;/li&gt; 
 &lt;li&gt;适配多平台的&lt;a href=&quot;https://github.com/open-ani/mediamp&quot;&gt;视频播放器&lt;/a&gt;，Android 底层为 &lt;a href=&quot;https://developer.android.com/media/media3/exoplayer&quot;&gt;ExoPlayer&lt;/a&gt;，PC 底层为 &lt;a href=&quot;https://www.videolan.org/vlc/&quot;&gt;VLC&lt;/a&gt;；&lt;/li&gt; 
 &lt;li&gt;多类型数据源适配，内置 &lt;a href=&quot;http://www.dmhy.org/&quot;&gt;动漫花园&lt;/a&gt;、&lt;a href=&quot;https://mikanani.me/&quot;&gt;Mikan&lt;/a&gt;，拥有强大的自定义数据源编辑器和自动数据源选择器。&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;参与开发&lt;/h3&gt; 
&lt;p&gt;欢迎你提交 PR 参与开发， 有关项目技术细节请参考 &lt;a href=&quot;https://raw.githubusercontent.com/open-ani/animeko/main/docs/contributing/README.md&quot;&gt;CONTRIBUTING&lt;/a&gt;。&lt;/p&gt; 
&lt;h2&gt;FAQ&lt;/h2&gt; 
&lt;h3&gt;资源来源是什么?&lt;/h3&gt; 
&lt;p&gt;全部视频数据都来自网络, Animeko 本身不存储任何视频数据。 Animeko 支持两大数据源类型：BT 和在线。BT 源即为公共 BitTorrent P2P 网络， 每个在 BT 网络上的人都可分享自己拥有的资源供他人下载。在线源即为其他视频资源网站分享的内容。Animeko 本身并不提供任何视频资源。&lt;/p&gt; 
&lt;p&gt;本着互助精神，使用 BT 源时 Animeko 会自动做种 (分享数据)。 BT 指纹为 &lt;code&gt;-AL4123-&lt;/code&gt;，其中 &lt;code&gt;4123&lt;/code&gt; 为版本号 &lt;code&gt;4.12.3&lt;/code&gt;；UA 为类似 &lt;code&gt;ani_libtorrent/4.12.3&lt;/code&gt;。&lt;/p&gt; 
&lt;h3&gt;弹幕来源是什么?&lt;/h3&gt; 
&lt;p&gt;Animeko 拥有自己的公益弹幕服务器，在 Animeko 应用内发送的弹幕将会发送到弹幕服务器上。每条弹幕都会以 Bangumi 用户名绑定以防滥用（并考虑未来增加举报和屏蔽功能）。&lt;/p&gt; 
&lt;p&gt;Animeko 还会从&lt;a href=&quot;https://www.dandanplay.com/&quot;&gt;弹弹play&lt;/a&gt;获取关联弹幕，弹弹play还会从其他弹幕平台例如哔哩哔哩港澳台和巴哈姆特获取弹幕。 番剧每集可拥有几十到几千条不等的弹幕量。&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/1efb024c3ef3327ee2b4bc24ba2dd497b7d630cc0cfb025567772455087e8f0c/open-ani/animeko" medium="image" />
      
    </item>
    
    <item>
      <title>yairm210/Unciv</title>
      <link>https://github.com/yairm210/Unciv</link>
      <description>&lt;p&gt;Open-source Android/Desktop remake of Civ V&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Unciv - Civ V remake for Android &amp;amp; Desktop&lt;/h1&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/yairm210/Unciv/master/extraImages/GithubPreviewImage.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.unciv.app&quot;&gt;&lt;img src=&quot;https://img.shields.io/static/v1?label=Google&amp;amp;message=Play&amp;amp;logo=google-play&quot; alt=&quot;Google Play&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://f-droid.org/en/packages/com.unciv.app/&quot;&gt;&lt;img src=&quot;https://img.shields.io/f-droid/v/com.unciv.app?logo=f-droid&quot; alt=&quot;F-Droid&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://yairm210.itch.io/unciv&quot;&gt;&lt;img src=&quot;https://img.shields.io/static/v1?label=itch.io&amp;amp;message=Unciv&amp;amp;color=607D8B&amp;amp;logo=itch.io&quot; alt=&quot;itch.io&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://flathub.org/apps/details/io.github.yairm210.unciv&quot;&gt;&lt;img src=&quot;https://img.shields.io/flathub/v/io.github.yairm210.unciv?logo=flathub&quot; alt=&quot;Flathub&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://aur.archlinux.org/packages/unciv-bin&quot;&gt;&lt;img src=&quot;https://img.shields.io/aur/version/unciv-bin?logo=arch-linux&quot; alt=&quot;AUR&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/Botspot/pi-apps&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/dynamic/json?color=c51a4a&amp;amp;label=Pi-Apps&amp;amp;logo=raspberry-pi&amp;amp;query=%24.Unciv.Version&amp;amp;url=https%3A%2F%2Fraw.githubusercontent.com%2FBotspot%2Fpi-apps-analytics%2Fmain%2Fpackage_data_v2.json&quot; alt=&quot;pi-apps&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fformulae.brew.sh%2Fapi%2Fformula%2Funciv.json&amp;amp;query=%24.versions.stable&amp;amp;logo=homebrew&amp;amp;label=Brew&quot; alt=&quot;Brew&quot; /&gt; &lt;a href=&quot;https://community.chocolatey.org/packages/unciv&quot;&gt;&lt;img src=&quot;https://img.shields.io/chocolatey/v/unciv?logo=chocolatey&quot; alt=&quot;Chocolatey&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/Calinou/scoop-games&quot;&gt;&lt;img src=&quot;https://img.shields.io/scoop/v/unciv?bucket=games&quot; alt=&quot;scoop-games&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/yairm210/Unciv/actions/workflows/buildAndTest.yml&quot;&gt;&lt;img src=&quot;https://github.com/yairm210/Unciv/actions/workflows/buildAndTest.yml/badge.svg?sanitize=true&quot; alt=&quot;Build status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/bjrB4Xw&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/586194543280390151?color=%237289DA&amp;amp;logo=discord&amp;amp;logoColor=%23FFFFFF&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;What is this?&lt;/h2&gt; 
&lt;p&gt;An open source, moddability-focused Android and Desktop remake of Civ V, made with LibGDX.&lt;/p&gt; 
&lt;h2&gt;Is this any good?&lt;/h2&gt; 
&lt;p&gt;Depends what you&#39;re looking for. If you&#39;re in the market for high-res graphics, amazing soundtracks, animations etc, I highly recommend Firaxis&#39;s Civ-V-like game, &quot;Civilization V&quot;.&lt;/p&gt; 
&lt;p&gt;If you want a small, fast, moddable, FOSS, in-depth 4X that can still run on a potato, you&#39;ve come to the right place 😃&lt;/p&gt; 
&lt;h2&gt;How do I install?&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Android&lt;/strong&gt; - &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.unciv.app&quot;&gt;Google Play&lt;/a&gt; or &lt;a href=&quot;https://f-droid.org/en/packages/com.unciv.app/&quot;&gt;F-droid&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Linux&lt;/strong&gt; - &lt;a href=&quot;https://yairm210.itch.io/unciv&quot;&gt;itch.io&lt;/a&gt;, Flatpak via &lt;a href=&quot;https://flathub.org/apps/details/io.github.yairm210.unciv&quot;&gt;Flathub&lt;/a&gt;, or &lt;a href=&quot;https://aur.archlinux.org/packages/unciv-bin&quot;&gt;AUR&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt; - &lt;a href=&quot;https://github.com/yairm210/Unciv/releases/latest/download/Unciv.msi&quot;&gt;Grab the MSI&lt;/a&gt;, or get from &lt;a href=&quot;https://yairm210.itch.io/unciv&quot;&gt;itch.io&lt;/a&gt;, &lt;a href=&quot;https://community.chocolatey.org/packages/unciv&quot;&gt;Chocolatey&lt;/a&gt;, or &lt;a href=&quot;https://github.com/Calinou/scoop-games&quot;&gt;Scoop&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Raspberry Pi&lt;/strong&gt; - &lt;a href=&quot;https://github.com/Botspot/pi-apps&quot;&gt;Pi-apps&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;MacOS&lt;/strong&gt; - Via &lt;a href=&quot;https://brew.sh/&quot;&gt;Brew&lt;/a&gt; (&lt;code&gt;brew update &amp;amp;&amp;amp; brew install unciv&lt;/code&gt;) or install &lt;a href=&quot;https://yairm210.github.io/Unciv/Other/Installing-on-macOS/&quot;&gt;with this guide&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Jars, APKs and Windows/Linux builds also available in &lt;a href=&quot;https://github.com/yairm210/Unciv/releases&quot;&gt;Releases&lt;/a&gt; (run jar with &lt;code&gt;java -jar Unciv.jar&lt;/code&gt;) - &lt;em&gt;not recommended&lt;/em&gt; since we update frequently and you will quickly become out-of-date&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://yairm210.github.io/Unciv/Developers/Building-Locally/#without-android-studio&quot;&gt;Build from scratch&lt;/a&gt; if that&#39;s your thing&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;What&#39;s the roadmap?&lt;/h2&gt; 
&lt;p&gt;In this order:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Polish! 
  &lt;ul&gt; 
   &lt;li&gt;UI+UX improvements (&lt;a href=&quot;https://github.com/yairm210/Unciv/issues/new?assignees=&amp;amp;labels=feature&amp;amp;template=feature_request.md&amp;amp;title=Feature+request%3A+&quot;&gt;suggestions welcome!&lt;/a&gt;)&lt;/li&gt; 
   &lt;li&gt;Better automation, AI etc. in-game&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;G&amp;amp;K mechanics - see &lt;a href=&quot;https://www.github.com/yairm210/Unciv/issues/4697&quot;&gt;#4697&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;BNW mechanics - trade routes, world congress, etc.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Programmers start &lt;a href=&quot;https://yairm210.github.io/Unciv/Developers/Building-Locally/&quot;&gt;here&lt;/a&gt;!&lt;/p&gt; 
&lt;p&gt;Translators start &lt;a href=&quot;https://yairm210.github.io/Unciv/Translating/Translating/&quot;&gt;here&lt;/a&gt;! Language completion status &lt;a href=&quot;https://github.com/yairm210/Unciv/raw/master/android/assets/jsons/translations/completionPercentages.properties&quot;&gt;here&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Modders start &lt;a href=&quot;https://yairm210.github.io/Unciv/Modders/Mods/&quot;&gt;here&lt;/a&gt;!&lt;/p&gt; 
&lt;p&gt;You can join us in any of the open issues, or work on improving anything you want - once you&#39;re finished, issue a pull request and it&#39;ll go into the next version!&lt;/p&gt; 
&lt;p&gt;If not, you can help by spreading the word - vote for Unciv where you can, mention it on Reddit or Twitter etc, and help us with new ideas of how to get the word out!&lt;/p&gt; 
&lt;h2&gt;FAQ&lt;/h2&gt; 
&lt;h3&gt;How about iOS?&lt;/h3&gt; 
&lt;p&gt;I&#39;m not planning on it. It means paying money to Apple, yet another release path, and since I don&#39;t have an iOS device it means I can&#39;t test it properly.&lt;/p&gt; 
&lt;h3&gt;Steam release?&lt;/h3&gt; 
&lt;p&gt;Steam has decided that they don&#39;t want to host Unciv, they probably don&#39;t want to risk legal issues with Firaxis (although those should be non-existent, see below).&lt;/p&gt; 
&lt;h3&gt;Will you implement {feature}?&lt;/h3&gt; 
&lt;p&gt;If it&#39;s in the original Civ V, then yes!&lt;/p&gt; 
&lt;p&gt;If not, then the feature won&#39;t be added to the base game - possibly it will be added as a way to mod the game, which is constantly expanding.&lt;/p&gt; 
&lt;h4&gt;Why not? This is its own game, why not add features that weren&#39;t in Civ V?&lt;/h4&gt; 
&lt;p&gt;Having a clear vision is important for actually getting things done.&lt;/p&gt; 
&lt;p&gt;Anyone can make a suggestion. Not all are good, viable, or simple. Not many can actually implement stuff.&lt;/p&gt; 
&lt;p&gt;As an open source project, this stuff is done in our spare time, of which there isn&#39;t much.&lt;/p&gt; 
&lt;p&gt;We need a clear-cut criteria to decide what to work on and what not to work on.&lt;/p&gt; 
&lt;h4&gt;Will you implement Civ VI?&lt;/h4&gt; 
&lt;p&gt;Considering how long it took to get this far, no.&lt;/p&gt; 
&lt;h3&gt;How can I learn to play? Where&#39;s the wiki?&lt;/h3&gt; 
&lt;p&gt;All the tutorial information is available in-game at menu &amp;gt; civilopedia &amp;gt; tutorials&lt;/p&gt; 
&lt;p&gt;All the information is included in the amazing &lt;a href=&quot;https://civilization.fandom.com/wiki/&quot;&gt;Civ V wiki&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Since this is a Civ V clone, you can search Google for how to play Civ V and there are loads of answers =)&lt;/p&gt; 
&lt;p&gt;Alternatively, you could &lt;a href=&quot;https://discord.gg/bjrB4Xw&quot;&gt;join us on Discord&lt;/a&gt; and ask there =D&lt;/p&gt; 
&lt;h3&gt;Aren&#39;t you basically making a Civ V clone? Is that even legal?&lt;/h3&gt; 
&lt;p&gt;According to the &lt;a href=&quot;https://upload.wikimedia.org/wikipedia/commons/9/96/U.S._Copyright_Office_fl108.pdf&quot;&gt;US Copyright Office FL-108&lt;/a&gt;, intellectual property rights &lt;em&gt;do not&lt;/em&gt; apply to mechanics - as I&#39;m sure you know, there are a billion Flappy Bird knockoffs.&lt;/p&gt; 
&lt;p&gt;It is definitely illegal:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;To use any assets from the original game (images, sound etc) - they belong to Firaxis&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;It is probably illegal (no solid sources on this):&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;To use the Civilization name&lt;/li&gt; 
 &lt;li&gt;To impersonate the Civ games (so calling yourself civi|zation with a similar logo, for instance)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Interestingly, &lt;a href=&quot;https://tsdr.uspto.gov/#caseNumber=74166752&amp;amp;caseType=SERIAL_NO&amp;amp;searchType=statusSearch&quot;&gt;Civilization is a registered trademark&lt;/a&gt;, but it looks like it&#39;s only &lt;em&gt;that particular logo&lt;/em&gt; which is trademarked, so technically you could make another game called &quot;Civilization&quot; and it&#39;ll stick. In any case we&#39;re not going there 😃&lt;/p&gt; 
&lt;h2&gt;Run with Docker &lt;a href=&quot;https://github.com/yairm210/Unciv/actions/workflows/dockerPublish.yml&quot;&gt;&lt;img src=&quot;https://github.com/yairm210/Unciv/actions/workflows/dockerPublish.yml/badge.svg?sanitize=true&quot; alt=&quot;Docker&quot; /&gt;&lt;/a&gt;&lt;/h2&gt; 
&lt;p&gt;If you have docker compose installed:&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;$ docker compose build &amp;amp;&amp;amp; docker compose up&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;and then goto &lt;a href=&quot;http://localhost:6901/vnc.html?password=headless&quot;&gt;http://localhost:6901/vnc.html?password=headless&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;If just docker:&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;$ docker build . -t unciv &amp;amp;&amp;amp; docker run -d -p 6901:6901 -p 5901:5901 unciv &lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;Or just use our already built one:&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;$ docker run -d -p 6901:6901 -p 5901:5901 ghcr.io/yairm210/unciv &lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;and then goto &lt;a href=&quot;http://localhost:6901/vnc.html?password=headless&quot;&gt;http://localhost:6901/vnc.html?password=headless&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;&lt;a href=&quot;https://raw.githubusercontent.com/yairm210/Unciv/master/docs/Credits.md&quot;&gt;Credits and 3rd parties&lt;/a&gt;&lt;/h2&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/111605778/4654b5ce-3ecd-4784-a92e-0508978d7207" medium="image" />
      
    </item>
    
    <item>
      <title>PortSwigger/mcp-server</title>
      <link>https://github.com/PortSwigger/mcp-server</link>
      <description>&lt;p&gt;MCP Server for Burp&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Burp Suite MCP Server Extension&lt;/h1&gt; 
&lt;h2&gt;Overview&lt;/h2&gt; 
&lt;p&gt;Integrate Burp Suite with AI Clients using the Model Context Protocol (MCP).&lt;/p&gt; 
&lt;p&gt;For more information about the protocol visit: &lt;a href=&quot;https://modelcontextprotocol.io/&quot;&gt;modelcontextprotocol.io&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Connect Burp Suite to AI clients through MCP&lt;/li&gt; 
 &lt;li&gt;Automatic installation for Claude Desktop&lt;/li&gt; 
 &lt;li&gt;Comes with packaged Stdio MCP proxy server&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Usage&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Install the extension in Burp Suite&lt;/li&gt; 
 &lt;li&gt;Configure your Burp MCP server in the extension settings&lt;/li&gt; 
 &lt;li&gt;Configure your MCP client to use the Burp SSE MCP server or stdio proxy&lt;/li&gt; 
 &lt;li&gt;Interact with Burp through your client!&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Installation&lt;/h2&gt; 
&lt;h3&gt;Prerequisites&lt;/h3&gt; 
&lt;p&gt;Ensure that the following prerequisites are met before building and installing the extension:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Java&lt;/strong&gt;: Java must be installed and available in your system&#39;s PATH. You can verify this by running &lt;code&gt;java --version&lt;/code&gt; in your terminal.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;jar Command&lt;/strong&gt;: The &lt;code&gt;jar&lt;/code&gt; command must be executable and available in your system&#39;s PATH. You can verify this by running &lt;code&gt;jar --version&lt;/code&gt; in your terminal. This is required for building and installing the extension.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Building the Extension&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Clone the Repository&lt;/strong&gt;: Obtain the source code for the MCP Server Extension.&lt;/p&gt; &lt;pre&gt;&lt;code&gt;git clone https://github.com/PortSwigger/mcp-server.git
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Navigate to the Project Directory&lt;/strong&gt;: Move into the project&#39;s root directory.&lt;/p&gt; &lt;pre&gt;&lt;code&gt;cd mcp-server
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Build the JAR File&lt;/strong&gt;: Use Gradle to build the extension.&lt;/p&gt; &lt;pre&gt;&lt;code&gt;./gradlew embedProxyJar
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;This command compiles the source code and packages it into a JAR file located in &lt;code&gt;build/libs/burp-mcp-all.jar&lt;/code&gt;.&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Loading the Extension into Burp Suite&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Open Burp Suite&lt;/strong&gt;: Launch your Burp Suite application.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Access the Extensions Tab&lt;/strong&gt;: Navigate to the &lt;code&gt;Extensions&lt;/code&gt; tab.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Add the Extension&lt;/strong&gt;: 
  &lt;ul&gt; 
   &lt;li&gt;Click on &lt;code&gt;Add&lt;/code&gt;.&lt;/li&gt; 
   &lt;li&gt;Set &lt;code&gt;Extension Type&lt;/code&gt; to &lt;code&gt;Java&lt;/code&gt;.&lt;/li&gt; 
   &lt;li&gt;Click &lt;code&gt;Select file ...&lt;/code&gt; and choose the JAR file built in the previous step.&lt;/li&gt; 
   &lt;li&gt;Click &lt;code&gt;Next&lt;/code&gt; to load the extension.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Upon successful loading, the MCP Server Extension will be active within Burp Suite.&lt;/p&gt; 
&lt;h2&gt;Configuration&lt;/h2&gt; 
&lt;h3&gt;Configuring the Extension&lt;/h3&gt; 
&lt;p&gt;Configuration for the extension is done through the Burp Suite UI in the &lt;code&gt;MCP&lt;/code&gt; tab.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Toggle the MCP Server&lt;/strong&gt;: The &lt;code&gt;Enabled&lt;/code&gt; checkbox controls whether the MCP server is active.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Enable config editing&lt;/strong&gt;: The &lt;code&gt;Enable tools that can edit your config&lt;/code&gt; checkbox allows the MCP server to expose tools which can edit Burp configuration files.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Advanced options&lt;/strong&gt;: You can configure the port and host for the MCP server. By default, it listens on &lt;code&gt;http://127.0.0.1:9876&lt;/code&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Claude Desktop Client&lt;/h3&gt; 
&lt;p&gt;To fully utilize the MCP Server Extension with Claude, you need to configure your Claude client settings appropriately. The extension has an installer which will automatically configure the client settings for you.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt; &lt;p&gt;Currently, Claude Desktop only support STDIO MCP Servers for the service it needs. This approach isn&#39;t ideal for desktop apps like Burp, so instead, Claude will start a proxy server that points to the Burp instance,&lt;br /&gt; which hosts a web server at a known port (&lt;code&gt;localhost:9876&lt;/code&gt;).&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Configure Claude to use the Burp MCP server&lt;/strong&gt;&lt;br /&gt; You can do this in one of two ways:&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt; &lt;p&gt;&lt;strong&gt;Option 1: Run the installer from the extension&lt;/strong&gt; This will add the Burp MCP server to the Claude Desktop config.&lt;/p&gt; &lt;/li&gt; 
   &lt;li&gt; &lt;p&gt;&lt;strong&gt;Option 2: Manually edit the config file&lt;/strong&gt;&lt;br /&gt; Open the file located at &lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt;, and replace or update it with the following:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;mcpServers&quot;: {
    &quot;burp&quot;: {
      &quot;command&quot;: &quot;&amp;lt;path to Java executable packaged with Burp&amp;gt;&quot;,
      &quot;args&quot;: [
          &quot;-jar&quot;,
          &quot;/path/to/mcp/proxy/jar/mcp-proxy-all.jar&quot;,
          &quot;--sse-url&quot;,
          &quot;&amp;lt;your Burp MCP server URL configured in the extension&amp;gt;&quot;
      ]
    }
  }
}
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;Restart Claude Desktop&lt;/strong&gt; - assuming Burp is running with the extension loaded.&lt;/p&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Manual installations&lt;/h2&gt; 
&lt;p&gt;If you want to install the MCP server manually you can either use the extension&#39;s SSE server directly or the packaged Stdio proxy server.&lt;/p&gt; 
&lt;h3&gt;SSE MCP Server&lt;/h3&gt; 
&lt;p&gt;In order to use the SSE server directly you can just provide the url for the server in your client&#39;s configuration. Depending on your client and your configuration in the extension this may be with or without the &lt;code&gt;/sse&lt;/code&gt; path.&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;http://127.0.0.1:9876
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;or&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;http://127.0.0.1:9876/sse
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Stdio MCP Proxy Server&lt;/h3&gt; 
&lt;p&gt;The source code for the proxy server can be found here: &lt;a href=&quot;https://github.com/PortSwigger/mcp-proxy&quot;&gt;MCP Proxy Server&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;In order to support MCP Clients which only support Stdio MCP Servers, the extension comes packaged with a proxy server for passing requests to the SSE MCP server extension.&lt;/p&gt; 
&lt;p&gt;If you want to use the Stdio proxy server you can use the extension&#39;s installer option to extract the proxy server jar. Once you have the jar you can add the following command and args to your client configuration:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;/path/to/packaged/burp/java -jar /path/to/proxy/jar/mcp-proxy-all.jar --sse-url http://127.0.0.1:9876
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Creating / modifying tools&lt;/h3&gt; 
&lt;p&gt;Tools are defined in &lt;code&gt;src/main/kotlin/net/portswigger/mcp/tools/Tools.kt&lt;/code&gt;. To define new tools, create a new serializable data class with the required parameters which will come from the LLM.&lt;/p&gt; 
&lt;p&gt;The tool name is auto-derived from its parameters data class. A description is also needed for the LLM. You can return a string (or richer PromptMessageContents) to provide data back to the LLM.&lt;/p&gt; 
&lt;p&gt;Extend the Paginated interface to add auto-pagination support.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/8739c712b5b880cfa82d7f49f8d69478f079fb3389be596a54f8fdcaf94f176e/PortSwigger/mcp-server" medium="image" />
      
    </item>
    
    <item>
      <title>osfans/trime</title>
      <link>https://github.com/osfans/trime</link>
      <description>&lt;p&gt;同文安卓輸入法平臺3.x/Android-rime/Rime Input Method Engine for Android&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Trime&lt;/h1&gt; 
&lt;p&gt;Rime IME for Android&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://github.com/osfans/trime/actions/workflows/commit-ci.yml/badge.svg?branch=develop&quot; alt=&quot;build&quot; /&gt; &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-GPL%20v3-blue.svg?sanitize=true&quot; alt=&quot;License: GPL v3&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/osfans/trime/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/release/osfans/trime.svg?sanitize=true&quot; alt=&quot;GitHub release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://f-droid.org/packages/com.osfans.trime&quot;&gt;&lt;img src=&quot;https://img.shields.io/f-droid/v/com.osfans.trime.svg?sanitize=true&quot; alt=&quot;F-Droid release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://osfans.github.io/trime/&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/last-commit/osfans/trime.svg?sanitize=true&quot; alt=&quot;Latest build&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;English | &lt;a href=&quot;https://raw.githubusercontent.com/osfans/trime/develop/README_sc.md&quot;&gt;简体中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/osfans/trime/develop/README_tc.md&quot;&gt;繁體中文&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;About&lt;/h2&gt; 
&lt;p&gt;Trime is originally a frontend of open-source &lt;a href=&quot;https://code.google.com/p/android-traditional-chinese-ime/&quot;&gt;Android Traditional Chinese IME&lt;/a&gt;, based on &lt;a href=&quot;http://rime.im&quot;&gt;RIME&lt;/a&gt; input method framework and written in Java/Kotlin with JNI. It is designed to protect the native language of various local dialects of Chinese and is a universal shape-based and phonetic-based input method platform.&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/osfans/trime/wiki&quot;&gt;Documentation&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Download&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;Stable Channel &lt;br /&gt; &lt;a href=&quot;https://f-droid.org/packages/com.osfans.trime&quot;&gt;&lt;img alt=&quot;Get it on F-Droid&quot; src=&quot;https://fdroid.gitlab.io/artwork/badge/get-it-on.png&quot; height=&quot;80px&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.osfans.trime&quot;&gt;&lt;img alt=&quot;Google Play Download Now&quot; src=&quot;https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png&quot; height=&quot;80px&quot; /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Nightly Channel &lt;a href=&quot;https://github.com/osfans/trime/releases/tag/nightly&quot;&gt;Download&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Canary Channel &lt;a href=&quot;https://github.com/osfans/trime/actions&quot;&gt;Download&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Configurations &lt;a href=&quot;https://github.com/Bambooin/rimerc&quot;&gt;rimerc&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;History&lt;/h2&gt; 
&lt;p&gt;TRIME is the abbreviation of &lt;em&gt;Tongwen RIME&lt;/em&gt; or &lt;em&gt;ThaeRv Input Method&lt;/em&gt;.&lt;/p&gt; 
&lt;p&gt;From the beginning, TRIME was written for TaeRv Pinyin, and named &lt;em&gt;TaeRv Input Method (泰如输入法)&lt;/em&gt;.&lt;/p&gt; 
&lt;p&gt;Then, we created an input method platform with some code tables, such as Wu dialect (吴语). We renamed it to &lt;em&gt;Chinese Character Dialect Input Method (汉字方言输入法)&lt;/em&gt;.&lt;/p&gt; 
&lt;p&gt;Later, it supports Wubi and Liangbi and other shape-based input method, we branded it &lt;a href=&quot;https://github.com/osfans/trime-legacy&quot;&gt;&lt;em&gt;Tongwen Input Method Platform 2.0 (同文输入法平台 2.0)&lt;/em&gt;&lt;/a&gt;, which implies that the phonetic-based and shape-based input method on one platform, while dialects and Mandrain share one kind of characters.&lt;/p&gt; 
&lt;p&gt;Benefit from the &lt;a href=&quot;https://github.com/rime/librime&quot;&gt;librime&lt;/a&gt; project by JNI, we are now in version 3.0 of TRIME aka &lt;em&gt;Tongwen Input Method (同文输入法)&lt;/em&gt;.&lt;/p&gt; 
&lt;p&gt;Your are now welcome to &lt;a href=&quot;https://raw.githubusercontent.com/osfans/trime/develop/CONTRIBUTING.md&quot;&gt;contribution&lt;/a&gt; ~ !&lt;/p&gt; 
&lt;h2&gt;Getting Started for developer&lt;/h2&gt; 
&lt;h3&gt;Prepare&lt;/h3&gt; 
&lt;h4&gt;Requirements:&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;Android SDK and Android NDK&lt;/p&gt; 
  &lt;ul&gt; 
   &lt;li&gt;If you are new to Android development, please install &lt;a href=&quot;https://developer.android.com/studio&quot;&gt;Android Studio&lt;/a&gt;.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;JDK (OpenJDK) 17&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Python 3 (required by OpenCC to generate dictionary text files)&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;Prerequisites for Windows&lt;/h4&gt; 
&lt;p&gt;Symbolic links will be created according to current build configurations, developers need:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;Enable &lt;a href=&quot;https://learn.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development&quot;&gt;Developer Mode&lt;/a&gt; so that symlinks can be created without administrator privilege.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;Enable symlink support for &lt;code&gt;git&lt;/code&gt;:&lt;/p&gt; &lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;git config --global core.symlinks true
&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you cannot or wouldn&#39;t like to enable anything, it doesn&#39;t matter. Copying will be used instead when error on creating symbolic links.&lt;/p&gt; 
&lt;h3&gt;Build&lt;/h3&gt; 
&lt;h4&gt;1. Clone this project and fetch all submodules:&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;git clone git@github.com:osfans/trime.git
git submodule update --init --recursive
# use partial clone to save time
git submodule update --init --recursive --filter=blob:none
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;2. Debug version without signature:&lt;/h4&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;# On Linux or macOS
make debug

# On Windows
.\gradlew assembleDebug
&lt;/code&gt;&lt;/pre&gt; 
&lt;h4&gt;3. Release version with signture:&lt;/h4&gt; 
&lt;p&gt;Create &lt;code&gt;keystore.properties&lt;/code&gt; file which contains following contents for &lt;a href=&quot;https://developer.android.com/studio/publish/app-signing.html&quot;&gt;signing information&lt;/a&gt;:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-gradle.properties&quot;&gt;storePassword=myStorePassword
keyPassword=mykeyPassword
keyAlias=myKeyAlias
storeFile=myStoreFileLocation
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Then, you may run:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;# On Linux or macOS
make release

# On Windows
.\gradlew assembleRelease
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Troubleshooting&lt;/h3&gt; 
&lt;pre&gt;&lt;code&gt;Target &quot;boost_log_setup&quot; links to target &quot;Boost::coroutine&quot; but the target was not found.
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Run &lt;code&gt;make clean&lt;/code&gt; on Linux or macOS, or run &lt;code&gt;.\gradlew clean&lt;/code&gt; on Windows.&lt;/p&gt; 
&lt;p&gt;Other issues:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Try &lt;code&gt;make clean&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;Make sure your repo is up-to-date. If one or more submodules are modified, also make sure they are compatible with the current version.&lt;/li&gt; 
 &lt;li&gt;If the problem still exists(very unlikely), try to make a new clone.&lt;/li&gt; 
 &lt;li&gt;Check if this is there is an issue/PR related to your problem. If yes, try their solutions.&lt;/li&gt; 
 &lt;li&gt;If none of them works, you may make an issue to ask for help.(optional)&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Acknowledgments&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Developer: &lt;a href=&quot;https://github.com/osfans&quot;&gt;osfans&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Contributors: &lt;a href=&quot;https://github.com/boboIqiqi&quot;&gt;boboIqiqi&lt;/a&gt;、&lt;a href=&quot;https://github.com/Bambooin&quot;&gt;Bambooin&lt;/a&gt;、&lt;a href=&quot;https://github.com/senchi96&quot;&gt;senchi96&lt;/a&gt;、&lt;a href=&quot;https://github.com/heiher&quot;&gt;heiher&lt;/a&gt;、&lt;a href=&quot;https://github.com/a342191555&quot;&gt;abay&lt;/a&gt;、&lt;a href=&quot;https://github.com/iovxw&quot;&gt;iovxw&lt;/a&gt;、&lt;a href=&quot;https://github.com/huyz-git&quot;&gt;huyz-git&lt;/a&gt;、&lt;a href=&quot;https://github.com/tumuyan&quot;&gt;tumuyan&lt;/a&gt;、&lt;a href=&quot;https://github.com/WhiredPlanck&quot;&gt;WhiredPlanck&lt;/a&gt;、&lt;a href=&quot;https://github.com/nopdan&quot;&gt;nopdan&lt;/a&gt;...&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/osfans/trime/wiki&quot;&gt;Wiki Editors&lt;/a&gt;: &lt;a href=&quot;https://github.com/xiaoqun2016&quot;&gt;xiaoqun2016&lt;/a&gt;、&lt;a href=&quot;https://github.com/boboIqiqi&quot;&gt;boboIqiqi&lt;/a&gt;...&lt;/li&gt; 
 &lt;li&gt;Translators: 天真可爱的满满 (Chinese Traditional), 点解 (English) ...&lt;/li&gt; 
 &lt;li&gt;Keyboard Designers: 天真可爱的满满、皛筱晓小笨鱼、吴琛 11、熊猫阿 Bo、默默ㄇㄛ ˋ...&lt;/li&gt; 
 &lt;li&gt;Donations: See QR Code in &lt;a href=&quot;https://github.com/osfans/trime/releases&quot;&gt;Releases&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Community: Netizens who feedback in &lt;a href=&quot;https://github.com/osfans/trime/issues&quot;&gt;Issues&lt;/a&gt;、&lt;a href=&quot;https://jq.qq.com/?_wv=1027&amp;amp;k=AXdR80HN&quot;&gt;QQ Group (811142286)&lt;/a&gt;、&lt;a href=&quot;http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&amp;amp;k=pg_q7UVumWYLq1Rk8kIAqkK1xGt64VnX&amp;amp;authKey=04m9l7OBO5H5vgrEL8IbpsmtnptWM60xy%2FUwYCfyvw9VcRhe8zRzAS1ezoemZdFr&amp;amp;noverify=0&amp;amp;group_code=224230445&quot;&gt;QQ Group (224230445)&lt;/a&gt;、&lt;a href=&quot;http://tieba.baidu.com/f?kw=rime&quot;&gt;Tieba&lt;/a&gt;、&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.osfans.trime&quot;&gt;Google Play&lt;/a&gt;、&lt;a href=&quot;https://t.me/trime_dev&quot;&gt;Telegram&lt;/a&gt;...&lt;/li&gt; 
 &lt;li&gt;Projects: &lt;a href=&quot;http://rime.im&quot;&gt;RIME&lt;/a&gt;、&lt;a href=&quot;https://github.com/BYVoid/OpenCC&quot;&gt;OpenCC&lt;/a&gt;、&lt;a href=&quot;https://code.google.com/p/android-traditional-chinese-ime/&quot;&gt;Android Traditional Chinese IME&lt;/a&gt; and so on.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Third Party Libraries&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.boost.org/&quot;&gt;Boost C++ Libraries&lt;/a&gt; (Boost Software License)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/s-yata/darts-clone&quot;&gt;darts-clone&lt;/a&gt; (New BSD License)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/google/leveldb&quot;&gt;LevelDB&lt;/a&gt; (New BSD License)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://www.gnu.org/software/libiconv/&quot;&gt;libiconv&lt;/a&gt; (LGPL License)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/s-yata/marisa-trie&quot;&gt;marisa-trie&lt;/a&gt; (BSD License)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/google/glog&quot;&gt;glog&lt;/a&gt; (New BSD License)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/BYVoid/OpenCC&quot;&gt;OpenCC&lt;/a&gt; (Apache License 2.0)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://rime.im&quot;&gt;RIME&lt;/a&gt; (BSD License)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/google/snappy&quot;&gt;snappy&lt;/a&gt;(BSD License)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/nemtrif/utfcpp&quot;&gt;utfcpp&lt;/a&gt; (Boost Software License)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/jbeder/yaml-cpp&quot;&gt;yaml-cpp&lt;/a&gt; (MIT License)&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://code.google.com/p/android-traditional-chinese-ime/&quot;&gt;Android Traditional Chinese IME&lt;/a&gt; (Apache License 2.0)&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/a04e7e617fbdd6c1e637dbd6e1b13c4d4ea85fad50f1c1cd0882c153e425e4d0/osfans/trime" medium="image" />
      
    </item>
    
    <item>
      <title>home-assistant/android</title>
      <link>https://github.com/home-assistant/android</link>
      <description>&lt;p&gt;Home Assistant Companion for Android&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Home Assistant Companion for Android&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/home-assistant/android/actions/workflows/onPush.yml&quot;&gt;&lt;img src=&quot;https://github.com/home-assistant/android/actions/workflows/onPush.yml/badge.svg?sanitize=true&quot; alt=&quot;Build Status&quot; /&gt;&lt;/a&gt;&lt;br /&gt; &lt;a href=&quot;https://play.google.com/store/apps/details?id=io.homeassistant.companion.android&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Play%20Store-Download-blue?logo=google-play&quot; alt=&quot;Play Store&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://play.google.com/apps/testing/io.homeassistant.companion.android&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Play%20Store%20Beta-Download-blue?logo=google-play&quot; alt=&quot;Play Store Beta&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/c5DvZ4e&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/330944238910963714?label=Discord&amp;amp;logo=discord&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/home-assistant/android/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/home-assistant/android?style=social&quot; alt=&quot;Stars&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Welcome to the &lt;strong&gt;Home Assistant Companion for Android&lt;/strong&gt;! This is the official Android app for &lt;a href=&quot;https://www.home-assistant.io/&quot;&gt;Home Assistant&lt;/a&gt;, a powerful open-source home automation platform. Join us in building an app used by millions of users worldwide.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Control Your Smart Home&lt;/strong&gt;: Seamlessly interact with your Home Assistant instance.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Native Android Experience&lt;/strong&gt;: Leverage Android-specific features like widgets, notifications, and location tracking.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Customizable&lt;/strong&gt;: Tailor the app to your needs with themes, dashboards, and more.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Open Source&lt;/strong&gt;: Contribute to a project that empowers users to take control of their smart homes.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Get the app&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=io.homeassistant.companion.android&quot;&gt;Download from the Play Store&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt; Join the &lt;a href=&quot;https://play.google.com/apps/testing/io.homeassistant.companion.android&quot;&gt;Play Store Beta&lt;/a&gt; to test new features early.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Other Stores&lt;/strong&gt;: The app is also available in other app stores.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;p&gt;Looking for help? Check out the &lt;a href=&quot;https://companion.home-assistant.io/&quot;&gt;Home Assistant Companion Documentation&lt;/a&gt; for detailed guides on using the app.&lt;/p&gt; 
&lt;h2&gt;Report a bug or request a feature&lt;/h2&gt; 
&lt;p&gt;Found a bug or have an idea for a new feature? Let us know!&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/home-assistant/android/issues/new?template=Bug_report.md&quot;&gt;Open a Bug Report&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/home-assistant/android/issues/new?template=feature_request.md&quot;&gt;Request a Feature&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;We appreciate your feedback and contributions to make the app even better!&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;We are thrilled to welcome contributions from the community! This app exists thanks to the incredible efforts of the Home Assistant community. Whether you&#39;re fixing bugs, adding new features, or improving documentation, your contributions make a difference.&lt;/p&gt; 
&lt;p&gt;Every contribution, big or small, is greatly appreciated. Together, we can make the Home Assistant Companion for Android even better!&lt;/p&gt; 
&lt;h3&gt;Getting started&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Read the &lt;a href=&quot;https://developers.home-assistant.io/docs/android/&quot;&gt;Developer Guide&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;Fork the repository and create a branch for your changes.&lt;/li&gt; 
 &lt;li&gt;Submit a pull request and join the discussion!&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Join the community&lt;/h2&gt; 
&lt;p&gt;Connect with other contributors and users in our vibrant &lt;strong&gt;&lt;a href=&quot;https://discord.gg/c5DvZ4e&quot;&gt;Discord Community&lt;/a&gt;&lt;/strong&gt;: Join the &lt;strong&gt;&lt;a href=&quot;https://discord.com/channels/330944238910963714/1346948551892009101&quot;&gt;#Android&lt;/a&gt;&lt;/strong&gt; channel to chat with developers and contributors.&lt;/p&gt; 
&lt;h2&gt;Star the repository&lt;/h2&gt; 
&lt;p&gt;If you find this project useful, consider giving it a star on GitHub!&lt;br /&gt; It helps others discover the project and motivates us to keep improving.&lt;/p&gt; 
&lt;a href=&quot;https://next.ossinsight.io/widgets/official/analyze-repo-stars-history?repo_id=179008173&quot; target=&quot;_blank&quot; style=&quot;display: block&quot; align=&quot;center&quot;&gt; 
 &lt;picture&gt; 
  &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://next.ossinsight.io/widgets/official/analyze-repo-stars-history/thumbnail.png?repo_id=179008173&amp;amp;image_size=auto&amp;amp;color_scheme=dark&quot; width=&quot;721&quot; height=&quot;auto&quot; /&gt; 
  &lt;img alt=&quot;Star History of home-assistant/android&quot; src=&quot;https://next.ossinsight.io/widgets/official/analyze-repo-stars-history/thumbnail.png?repo_id=179008173&amp;amp;image_size=auto&amp;amp;color_scheme=light&quot; width=&quot;721&quot; height=&quot;auto&quot; /&gt; 
 &lt;/picture&gt; &lt;/a&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.openhomefoundation.org/&quot;&gt;&lt;img src=&quot;https://www.openhomefoundation.org/badges/home-assistant.png&quot; alt=&quot;Home Assistant - A project from the Open Home Foundation&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/179008173/c5dcd9da-eaec-488b-91db-a9dbfe2f7205" medium="image" />
      
    </item>
    
    <item>
      <title>ReVanced/revanced-manager</title>
      <link>https://github.com/ReVanced/revanced-manager</link>
      <description>&lt;p&gt;💊 Application to use ReVanced on Android&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; 
 &lt;picture&gt; 
  &lt;source width=&quot;256px&quot; media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;assets/revanced-headline/revanced-headline-vertical-dark.svg&quot; /&gt; 
  &lt;img width=&quot;256px&quot; src=&quot;https://raw.githubusercontent.com/ReVanced/revanced-manager/main/assets/revanced-headline/revanced-headline-vertical-light.svg?sanitize=true&quot; /&gt; 
 &lt;/picture&gt; &lt;br /&gt; &lt;a href=&quot;https://revanced.app/&quot;&gt; 
  &lt;picture&gt; 
   &lt;source height=&quot;24px&quot; media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;assets/revanced-logo/revanced-logo.svg&quot; /&gt; 
   &lt;img height=&quot;24px&quot; src=&quot;https://raw.githubusercontent.com/ReVanced/revanced-manager/main/assets/revanced-logo/revanced-logo.svg?sanitize=true&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://github.com/ReVanced&quot;&gt; 
  &lt;picture&gt; 
   &lt;source height=&quot;24px&quot; media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://i.ibb.co/dMMmCrW/Git-Hub-Mark.png&quot; /&gt; 
   &lt;img height=&quot;24px&quot; src=&quot;https://i.ibb.co/9wV3HGF/Git-Hub-Mark-Light.png&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;http://revanced.app/discord&quot;&gt; 
  &lt;picture&gt; 
   &lt;source height=&quot;24px&quot; media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png&quot; /&gt; 
   &lt;img height=&quot;24px&quot; src=&quot;https://user-images.githubusercontent.com/13122796/178032563-d4e084b7-244e-4358-af50-26bde6dd4996.png&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://reddit.com/r/revancedapp&quot;&gt; 
  &lt;picture&gt; 
   &lt;source height=&quot;24px&quot; media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png&quot; /&gt; 
   &lt;img height=&quot;24px&quot; src=&quot;https://user-images.githubusercontent.com/13122796/178032351-9d9d5619-8ef7-470a-9eec-2744ece54553.png&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://t.me/app_revanced&quot;&gt; 
  &lt;picture&gt; 
   &lt;source height=&quot;24px&quot; media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png&quot; /&gt; 
   &lt;img height=&quot;24px&quot; src=&quot;https://user-images.githubusercontent.com/13122796/178032213-faf25ab8-0bc3-4a94-a730-b524c96df124.png&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://x.com/revancedapp&quot;&gt; 
  &lt;picture&gt; 
   &lt;source media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://user-images.githubusercontent.com/93124920/270180600-7c1b38bf-889b-4d68-bd5e-b9d86f91421a.png&quot; /&gt; 
   &lt;img height=&quot;24px&quot; src=&quot;https://user-images.githubusercontent.com/93124920/270108715-d80743fa-b330-4809-b1e6-79fbdc60d09c.png&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://www.youtube.com/@ReVanced&quot;&gt; 
  &lt;picture&gt; 
   &lt;source height=&quot;24px&quot; media=&quot;(prefers-color-scheme: dark)&quot; srcset=&quot;https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png&quot; /&gt; 
   &lt;img height=&quot;24px&quot; src=&quot;https://user-images.githubusercontent.com/13122796/178032714-c51c7492-0666-44ac-99c2-f003a695ab50.png&quot; /&gt; 
  &lt;/picture&gt; &lt;/a&gt; &lt;br /&gt; &lt;br /&gt; Continuing the legacy of Vanced &lt;/p&gt; 
&lt;h1&gt;💊 ReVanced Manager&lt;/h1&gt; 
&lt;p&gt;&lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/ReVanced/revanced-manager/release.yml&quot; alt=&quot;GitHub Workflow Status (with event)&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/License-GPL%20v3-yellow.svg?sanitize=true&quot; alt=&quot;GPLv3 License&quot; /&gt;&lt;/p&gt; 
&lt;p&gt;Application to use ReVanced on Android&lt;/p&gt; 
&lt;h2&gt;❓ About&lt;/h2&gt; 
&lt;p&gt;ReVanced Manager is an application that uses &lt;a href=&quot;https://github.com/revanced/revanced-patcher&quot;&gt;ReVanced Patcher&lt;/a&gt; to patch Android apps.&lt;/p&gt; 
&lt;h2&gt;💪 Features&lt;/h2&gt; 
&lt;p&gt;Some of the features ReVanced Manager provides are:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;⬇️ &lt;strong&gt;Download&lt;/strong&gt;: Automatically download apps using the ReVanced Manager downloader system&lt;/li&gt; 
 &lt;li&gt;💉 &lt;strong&gt;Patch&lt;/strong&gt;: Select and apply patches to any Android app&lt;/li&gt; 
 &lt;li&gt;🛠️ &lt;strong&gt;Customize&lt;/strong&gt;: Manage patches, apps, signing, themes, updates, and many more settings&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;🔽 Download&lt;/h2&gt; 
&lt;p&gt;You can download the most recent version of ReVanced Manager at &lt;a href=&quot;https://revanced.app/download&quot;&gt;revanced.app/download&lt;/a&gt; or from &lt;a href=&quot;https://github.com/ReVanced/revanced-manager/releases/latest&quot;&gt;GitHub releases&lt;/a&gt;.&lt;br /&gt; Learn how to use ReVanced Manager by following the &lt;a href=&quot;https://raw.githubusercontent.com/ReVanced/revanced-manager/main/docs&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;📚 Everything else&lt;/h2&gt; 
&lt;h3&gt;📙 Contributing&lt;/h3&gt; 
&lt;p&gt;Thank you for considering contributing to ReVanced Manager. You can find the contribution guidelines &lt;a href=&quot;https://raw.githubusercontent.com/ReVanced/revanced-manager/main/CONTRIBUTING.md&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;🛠️ Building&lt;/h3&gt; 
&lt;p&gt;To build a ReVanced Manager, you can follow the &lt;a href=&quot;https://raw.githubusercontent.com/ReVanced/revanced-manager/main/docs&quot;&gt;documentation&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;📄 Documentation&lt;/h3&gt; 
&lt;p&gt;You can find the documentation for ReVanced Manager &lt;a href=&quot;https://raw.githubusercontent.com/ReVanced/revanced-manager/main/docs&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;⚖️ License&lt;/h2&gt; 
&lt;p&gt;ReVanced Manager is licensed under the GPLv3 license. Please see the &lt;a href=&quot;https://raw.githubusercontent.com/ReVanced/revanced-manager/main/LICENSE&quot;&gt;license file&lt;/a&gt; for more information. &lt;a href=&quot;https://www.tldrlegal.com/license/gnu-general-public-license-v3-gpl-3&quot;&gt;tl;dr&lt;/a&gt; you may copy, distribute and modify ReVanced Manager as long as you track changes/dates in source files. Any modifications to ReVanced Manager must also be made available under the GPL, along with build &amp;amp; install instructions.&lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/471494981/8e480a04-6474-437c-9560-0e4fe6bdd7b9" medium="image" />
      
    </item>
    
    <item>
      <title>yuzono/anime-extensions</title>
      <link>https://github.com/yuzono/anime-extensions</link>
      <description>&lt;div align=&quot;center&quot;&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th style=&quot;text-align:center&quot;&gt;Install on Aniyomi&lt;/th&gt; 
    &lt;th style=&quot;text-align:center&quot;&gt;Install on Anikku&lt;/th&gt; 
    &lt;th style=&quot;text-align:center&quot;&gt;Build&lt;/th&gt; 
    &lt;th style=&quot;text-align:center&quot;&gt;Discord&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://intradeus.github.io/http-protocol-redirector/?r=aniyomi://add-repo?url=https://raw.githubusercontent.com/yuzono/anime-repo/repo/index.min.json&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Click%20here%20to%20install%20repo-gray?style=flat&amp;amp;labelColor=red&quot; alt=&quot;Install&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://intradeus.github.io/http-protocol-redirector/?r=anikku://add-repo?url=https://raw.githubusercontent.com/yuzono/anime-repo/repo/index.min.json&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Click%20here%20to%20install%20repo-gray?style=flat&amp;amp;labelColor=red&quot; alt=&quot;Install&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
    &lt;td style=&quot;text-align:center&quot;&gt;&lt;img src=&quot;https://github.com/yuzono/anime-extensions/actions/workflows/build_push.yml/badge.svg?sanitize=true&quot; alt=&quot;CI&quot; /&gt;&lt;/td&gt; 
    &lt;td style=&quot;text-align:center&quot;&gt;&lt;a href=&quot;https://discord.gg/85MZhUX688&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/1377136877491982366.svg?label=&amp;amp;labelColor=6A7EC2&amp;amp;color=7389D8&amp;amp;logo=discord&amp;amp;logoColor=FFFFFF&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/sponsors/cuong-tran&quot; title=&quot;Sponsor me on GitHub&quot;&gt;&lt;img src=&quot;https://custom-icon-badges.demolab.com/badge/-Sponsor-ea4aaa?style=for-the-badge&amp;amp;logo=heart&amp;amp;logoColor=white&quot; alt=&quot;Sponsor me on GitHub&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;img src=&quot;https://count.getloli.com/get/@yuzono?theme=capoo-2&quot; alt=&quot;Visitor Count&quot; /&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h1&gt;&lt;img src=&quot;https://raw.githubusercontent.com/yuzono/anime-extensions/master/.github/readme-images/app-icon.png&quot; alt=&quot;app icon&quot; /&gt;Anikku/Aniyomi Extensions&lt;/h1&gt; 
&lt;p&gt;Anikku/Aniyomi is a free and open source anime player for Android 6.0 and above.&lt;/p&gt; 
&lt;p&gt;This repository contains the available extension catalogues for the &lt;a href=&quot;https://github.com/komikku-app/anikku&quot;&gt;Anikku&lt;/a&gt; or &lt;a href=&quot;https://github.com/aniyomiorg/aniyomi&quot;&gt;Aniyomi&lt;/a&gt; forks.&lt;/p&gt; 
&lt;h2&gt;Recommend App&lt;/h2&gt; 
&lt;h3&gt;&lt;a href=&quot;https://github.com/komikku-app/anikku&quot;&gt;Anikku&lt;/a&gt;&lt;/h3&gt; 
&lt;h3&gt;&lt;a href=&quot;https://github.com/aniyomiorg/aniyomi&quot;&gt;Aniyomi&lt;/a&gt;&lt;/h3&gt; 
&lt;h2&gt;How to add the repo&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;If you are new to repository/extensions, please read the &lt;a href=&quot;https://yuzono.github.io/docs/guides/getting-started#adding-the-extension-repo&quot;&gt;Yūzōnō Getting Started guide&lt;/a&gt; first.&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;You can add our repo by visiting the &lt;a href=&quot;https://yuzono.github.io/add-repo-ani&quot;&gt;Yūzōnō Website&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Otherwise, copy &amp;amp; paste the following URL:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;https://raw.githubusercontent.com/yuzono/anime-repo/repo/index.min.json
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Manual downloads&lt;/h3&gt; 
&lt;p&gt;If you prefer to directly download the APK files, they are available via &lt;a href=&quot;https://yuzono.github.io/extensions-aniyomi/&quot;&gt;website&lt;/a&gt; or directly in this GitHub repository in the &lt;a href=&quot;https://github.com/yuzono/anime-repo/tree/repo/apk&quot;&gt;&lt;code&gt;repo&lt;/code&gt; branch&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Requests&lt;/h2&gt; 
&lt;p&gt;To request a new source or bug fix, &lt;a href=&quot;https://github.com/yuzono/aniyomi-extensions/issues/new/choose&quot;&gt;create an issue&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;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.&lt;/p&gt; 
&lt;p&gt;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.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Contributions are welcome!&lt;/p&gt; 
&lt;p&gt;Check out the repo&#39;s &lt;a href=&quot;https://github.com/yuzono/anime-extensions/issues&quot;&gt;issue backlog&lt;/a&gt; for source requests and bug reports.&lt;/p&gt; 
&lt;p&gt;To get started with development, see &lt;a href=&quot;https://raw.githubusercontent.com/yuzono/anime-extensions/master/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;It might also be good to read our &lt;a href=&quot;https://raw.githubusercontent.com/yuzono/anime-extensions/master/CODE_OF_CONDUCT.md&quot;&gt;CODE_OF_CONDUCT.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;Copyright 2015 Javier Tomás

Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
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 &quot;AS IS&quot; 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.
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Disclaimer&lt;/h2&gt; 
&lt;p&gt;This project does not have any affiliation with the content providers available.&lt;/p&gt; 
&lt;p&gt;This project is not affiliated with Anikku/Aniyomi. Don&#39;t ask for help about these extensions at the official support means of Anikku/Aniyomi. All credits to the codebase goes to the original contributors.&lt;/p&gt; 
&lt;p&gt;The developer of this application does not have any affiliation with the content providers available.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/b95ee94892a67c16c585d2afdf1eafe90a0ff007d56c2f0fad9aa033d34df605/yuzono/anime-extensions" medium="image" />
      
    </item>
    
  </channel>
</rss>
