<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    
    <title>GitHub Kotlin Monthly Trending Repositories</title>
    <description>Monthly Trending Repositories of Kotlin on GitHub</description>
    
    <pubDate>Sun, 11 Oct 2026 06:46:41 GMT</pubDate>
    <link>https://mshibanami.github.io/GitHubTrendingRSS</link>
    
    <item>
      <title>ExTV/Podroid</title>
      <link>https://github.com/ExTV/Podroid</link>
      <description>&lt;p&gt;A rootless Android app that boots Alpine Linux: run containers (Podman/Docker/LXC) and GUI desktop apps.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://mshibanami.github.io/GitHubTrendingRSS/assets/icons/link.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;link&quot; style=&quot;margin: 0 8px 0 0; padding: 0; display: inline-block; vertical-align: middle;&quot; /&gt;&lt;a href=&quot;https://extv.github.io/Podroid/&quot;&gt;https://extv.github.io/Podroid/&lt;/a&gt;&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/ExTV/Podroid/main/docs/logo.png&quot; alt=&quot;Podroid logo&quot; width=&quot;120&quot; /&gt; 
 &lt;h1&gt;Podroid&lt;/h1&gt; 
 &lt;p&gt;&lt;strong&gt;Run Linux containers and a full Linux desktop on your Android phone. No root.&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;A real Alpine Linux VM with its own kernel - not a chroot or proot trick - so &lt;strong&gt;Podman, Docker and LXC&lt;/strong&gt; behave exactly like they do on a server.&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/ExTV/Podroid/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/ExTV/Podroid?include_prereleases&amp;amp;style=flat-square&amp;amp;label=release&amp;amp;color=blue&quot; alt=&quot;Release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/ExTV/Podroid/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/downloads/ExTV/Podroid/total?style=flat-square&amp;amp;color=brightgreen&quot; alt=&quot;Downloads&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/ExTV/Podroid/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/ExTV/Podroid?style=flat-square&amp;amp;color=yellow&quot; alt=&quot;Stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/ExTV/Podroid/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/ExTV/Podroid?style=flat-square&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/badge/Android-8%2B-3DDC84?style=flat-square&amp;amp;logo=android&amp;amp;logoColor=white&quot; alt=&quot;Android 8+&quot; /&gt; &lt;img src=&quot;https://img.shields.io/badge/arch-arm64-orange?style=flat-square&quot; alt=&quot;arm64&quot; /&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://extv.github.io/Podroid/&quot;&gt;&lt;strong&gt;Website&lt;/strong&gt;&lt;/a&gt; · &lt;a href=&quot;https://extv.github.io/Podroid/guide/&quot;&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;/a&gt; · &lt;a href=&quot;https://github.com/ExTV/Podroid/releases/latest&quot;&gt;&lt;strong&gt;Download APK&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ExTV/Podroid/main/docs/screenshots/01-home-idle.png&quot; alt=&quot;Home screen before the VM starts&quot; width=&quot;190&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Home&lt;/b&gt;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ExTV/Podroid/main/docs/screenshots/02-home-running.png&quot; alt=&quot;Home screen with the VM running and network info&quot; width=&quot;190&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Running&lt;/b&gt;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ExTV/Podroid/main/docs/screenshots/03-terminal-fastfetch.png&quot; alt=&quot;Built-in terminal showing Alpine system info&quot; width=&quot;190&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Terminal&lt;/b&gt;&lt;/sub&gt;&lt;/td&gt; 
    &lt;td align=&quot;center&quot; width=&quot;25%&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ExTV/Podroid/main/docs/screenshots/04-quick-settings.png&quot; alt=&quot;Terminal Quick Settings with themes and fonts&quot; width=&quot;190&quot; /&gt;&lt;br /&gt;&lt;sub&gt;&lt;b&gt;Themes &amp;amp; fonts&lt;/b&gt;&lt;/sub&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
&lt;/div&gt; 
&lt;h2&gt;What you get&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Podman, Docker and LXC&lt;/strong&gt; - pre-installed, ready the moment it boots&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;A real VM&lt;/strong&gt; - Alpine Linux on a custom kernel via QEMU, or hardware-accelerated AVF on supported pKVM devices&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;In-app terminal&lt;/strong&gt; - full xterm-256color, 122 color themes, 13 fonts, live resize&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;X11 desktop&lt;/strong&gt; - run GUI Linux apps in a built-in viewer with touch, keyboard, mouse and audio&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;USB passthrough&lt;/strong&gt;, &lt;strong&gt;SSH&lt;/strong&gt;, &lt;strong&gt;port forwarding&lt;/strong&gt; and a &lt;strong&gt;guest-to-Android bridge&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Container backup&lt;/strong&gt;, a &lt;strong&gt;live VM/device status view&lt;/strong&gt; and &lt;strong&gt;Downloads-folder sharing&lt;/strong&gt; with the guest&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;English and 中文&lt;/strong&gt;, no root, any arm64 device on Android 8+&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Quick start&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ExTV/Podroid/releases/latest&quot;&gt;Download the APK&lt;/a&gt; and install it.&lt;/li&gt; 
 &lt;li&gt;Tap &lt;strong&gt;Start VM&lt;/strong&gt;, wait for &lt;strong&gt;Ready!&lt;/strong&gt;, open the terminal.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;# rootless containers, straight away
podman run --rm alpine echo &quot;hello from a container&quot;
docker run -d -p 8080:80 nginx

# expose that container to your phone and LAN, right from the VM shell
podroid-forward add 8080 8080 tcp     # TCP or UDP, on both the QEMU and AVF backends
curl http://&amp;lt;phone-ip&amp;gt;:8080
podroid-forward clean                 # remove every rule you added, in one go

# SSH in from your laptop (enable SSH in the setup wizard or Settings)
ssh root@&amp;lt;phone-ip&amp;gt; -p 9922        # password: podroid
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Setup, the two backends, networking, the X11 viewer and troubleshooting all live in the &lt;strong&gt;&lt;a href=&quot;https://extv.github.io/Podroid/guide/&quot;&gt;documentation&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt; 
&lt;h2&gt;Build&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;git clone https://github.com/ExTV/Podroid.git
cd Podroid
./build-all.sh all     # kernel, rootfs, QEMU and APK (needs Docker + Android SDK/NDK)
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Per-component builds and toolchain details: &lt;a href=&quot;https://raw.githubusercontent.com/ExTV/Podroid/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Contributions of every size are welcome: bug reports, kernel-config tweaks, new themes, UI polish, X11 input fixes, anything.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Pull requests:&lt;/strong&gt; read &lt;a href=&quot;https://raw.githubusercontent.com/ExTV/Podroid/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt; first. Keep changes scoped, run &lt;code&gt;./build-all.sh test&lt;/code&gt; before pushing, and explain &lt;em&gt;why&lt;/em&gt; in the PR description.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Bug reports:&lt;/strong&gt; &lt;a href=&quot;https://github.com/ExTV/Podroid/issues/new&quot;&gt;open an issue&lt;/a&gt; with your device and Android version, a short repro, and the diagnostic log (&lt;strong&gt;Settings → Export Diagnostic Log&lt;/strong&gt; in the app).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Related projects&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/ExTV/rikkahub-agent&quot;&gt;RikkaHub Agent&lt;/a&gt;&lt;/strong&gt; is a fork of &lt;a href=&quot;https://github.com/rikkahub/rikkahub&quot;&gt;RikkaHub&lt;/a&gt;, the native Android LLM chat client, that turns it into a real on-device agent: 80+ device tools, scheduled jobs, an AI-driven browser, a Linux workspace, SSH, screen automation and a remote Telegram bot, all opt-in. Its SSH tool can log into a running Podroid VM (&lt;code&gt;localhost:9922&lt;/code&gt;), so an agent on your phone can build, run and inspect containers without you typing a command.&lt;/p&gt; 
&lt;h2&gt;Credits&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;a href=&quot;https://www.qemu.org&quot;&gt;QEMU&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Machine emulation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://github.com/termux/termux-app&quot;&gt;Termux&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Terminal emulator engine&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;https://alpinelinux.org&quot;&gt;Alpine Linux&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;The guest distribution&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Full list in &lt;a href=&quot;https://raw.githubusercontent.com/ExTV/Podroid/main/CREDITS.md&quot;&gt;CREDITS.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/ExTV/Podroid/main/LICENSE&quot;&gt;GPLv2&lt;/a&gt;. If Podroid is useful to you, a &lt;a href=&quot;https://github.com/ExTV/Podroid/stargazers&quot;&gt;star&lt;/a&gt; helps other people find it.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/b6c8805c808cd7ed54037de9722b9899806ceac809b487cdd66cc4f1fbc4f35a/ExTV/Podroid" medium="image" />
      
    </item>
    
    <item>
      <title>YuKongA/ghostlock-app</title>
      <link>https://github.com/YuKongA/ghostlock-app</link>
      <description>&lt;p&gt;GhostLock One-Tap Execution App (CVE-2026-43499)&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;GhostLock-App&lt;/h1&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;中文: &lt;a href=&quot;https://raw.githubusercontent.com/YuKongA/ghostlock-app/main/README_ZH.md&quot;&gt;README_ZH.md&lt;/a&gt;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/YuKongA/ghostlock-app/main/docs/kernel_profiles/README.md&quot;&gt;Kernel Profile Porting Guide&lt;/a&gt; - add support for a new kernel. GhostLock matches kernels by exact &lt;code&gt;uname -r&lt;/code&gt; and rejects unsupported builds, showing the status at the top. Built-in profiles live in &lt;code&gt;app/src/main/assets/kernel_profiles/&lt;/code&gt;: one HOCON file per release, &lt;code&gt;index.conf&lt;/code&gt; as the runtime index, and &lt;code&gt;&amp;lt;major.minor&amp;gt;-template.conf&lt;/code&gt; version-family templates.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/YuKongA/ghostlock-app/main/docs/kernel_profiles/SUPPORTED_DEVICES.md&quot;&gt;Supported devices&lt;/a&gt; - the built-in kernel list.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/YuKongA/ghostlock-app/main/docs/kernel_profiles/defaults.md&quot;&gt;Shared execution defaults&lt;/a&gt; - every execution-tuning field, its default, and why.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/YuKongA/ghostlock-app/main/docs/kernel_profiles/PROFILE_SCHEMA.md&quot;&gt;Profile schema&lt;/a&gt; - full profile structure and data flow.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/YuKongA/ghostlock-app/main/docs/development/adding-a-component.md&quot;&gt;Adding a component&lt;/a&gt; - developer guide for a new native middleware / backend / frontend (Chinese).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For the complete device-porting workflow, kernel-family template links, and tuning rationale, see the &lt;a href=&quot;https://raw.githubusercontent.com/YuKongA/ghostlock-app/main/docs/kernel_profiles/README.md&quot;&gt;Kernel Profile Porting Guide&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;Rows explicitly marked &lt;strong&gt;Shizuku required&lt;/strong&gt; run through a shell UserService. Start Shizuku with ADB and tap the status card to grant access; all other rows use the app&#39;s normal execution path.&lt;/p&gt; 
&lt;h2&gt;Quick Start&lt;/h2&gt; 
&lt;p&gt;Open &lt;strong&gt;GhostLock&lt;/strong&gt; and tap &lt;strong&gt;Run&lt;/strong&gt;. KernelSU (&lt;code&gt;me.weishu.kernelsu&lt;/code&gt;), ReSukiSU (&lt;code&gt;com.resukisu.resukisu&lt;/code&gt;), or KowSU (&lt;code&gt;com.kowx712.supermanager&lt;/code&gt;) provides &lt;code&gt;ksud&lt;/code&gt; for module loading; without it, W1/W2 still grant uid 0 but no module is loaded.&lt;/p&gt; 
&lt;p&gt;The execution chain is a pipeline of three components: a frontend (&lt;code&gt;root_child&lt;/code&gt; startup/handoff), a backend (the CVE-2026-43499 futex primitive), and a middleware route. The catalogued combinations are instantiated at build time; the resolved profile selects which one runs. The route races two cores: on the 6.6/6.12 tree-waiter kernels the main thread hammers &lt;code&gt;select&lt;/code&gt; while a consumer thread perturbs the waiter&#39;s priority; on the 6.1 compact-waiter kernels it drives &lt;code&gt;getsockopt(TCP_ZEROCOPY_RECEIVE)&lt;/code&gt; through a punched-hole page; the 5.15 kernels use the multicast waiter. The CPU pair also comes from the resolved profile.&lt;/p&gt; 
&lt;h2&gt;Command-Line Debugging&lt;/h2&gt; 
&lt;p&gt;adb/shell has no seccomp filter, so W3 is skipped - handy for quick verification:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;make -C src ghostlock
./gradlew exportKernelProfiles
adb push build/native/ghostlock /data/local/tmp/ghostlock
adb push build/kernel-profiles/&amp;lt;release&amp;gt;.bin /data/local/tmp/profile.bin
adb shell chmod 755 /data/local/tmp/ghostlock
adb shell /data/local/tmp/ghostlock --load-prebuilt-profile /data/local/tmp/profile.bin
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Offset Extraction&lt;/h2&gt; 
&lt;p&gt;&lt;code&gt;tools/extract_rs&lt;/code&gt; derives offsets from a &lt;code&gt;boot.img&lt;/code&gt; (plus optional &lt;code&gt;xbl_config.img&lt;/code&gt;), a full OTA ZIP, or an &lt;code&gt;http(s)&lt;/code&gt; URL pointing at one. kallsyms come from &lt;code&gt;--kallsyms&lt;/code&gt; or are recovered from the image&#39;s embedded table. &lt;code&gt;pselect_waiter_shift&lt;/code&gt; and &lt;code&gt;off_slide_loggers_0_1&lt;/code&gt; are derived by the built-in arm64 disassembler. MediaTek images have no &lt;code&gt;xbl_config.img&lt;/code&gt; and usually no BTF: the physical load address is derived from kallsyms &lt;code&gt;_text&lt;/code&gt; (override with &lt;code&gt;--phys&lt;/code&gt;).&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;Push-Location tools/extract_rs
cargo build --release
Pop-Location
build/extract/release/ghostlock-extract.exe boot.img --xbl-config xbl_config.img --format conf --out profile.conf
build/extract/release/ghostlock-extract.exe OTA.zip --format conf --out profile.conf
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;code&gt;--format conf&lt;/code&gt; is the extractor output: a flattened, self-contained profile (no &lt;code&gt;include&lt;/code&gt; lines, the shared 6.x credential/KernelSnitch constants inlined, the route selected from &lt;code&gt;--analysis&lt;/code&gt; evidence unless &lt;code&gt;--route&lt;/code&gt; overrides it). The extractor emits every field the image actually yields and omits the rest; it never fills gaps from a neighbouring kernel family&#39;s guesses (unverified-family 6.6, the default &lt;code&gt;-2&lt;/code&gt;, the 5.15 multicast constants, or a phys default). Every output is an &lt;strong&gt;unverified candidate&lt;/strong&gt;: importable and parseable, with missing or invalid fields blocked by the app&#39;s pre-execution validation, so a successful run never implies device support. On 5.x it also derives the credential reference repair from &lt;code&gt;init_cred&lt;/code&gt; and the multicast geometry from BTF (see &lt;code&gt;docs/analysis/extractor-5x-derivation-plan.md&lt;/code&gt;). &lt;code&gt;--format json&lt;/code&gt; stays for the v1 import path. To add a built-in profile, complete and validate the matching version-family template, save it as a standalone &lt;code&gt;.conf&lt;/code&gt; profile, and add it to &lt;code&gt;kernel_profiles/index.conf&lt;/code&gt;. The old C &lt;code&gt;offsets.h&lt;/code&gt; registry is deprecated and removed.&lt;/p&gt; 
&lt;h3&gt;MediaTek&lt;/h3&gt; 
&lt;p&gt;MediaTek images have no &lt;code&gt;xbl_config.img&lt;/code&gt; and usually no embedded BTF, so the extractor cannot derive the two physical addresses (&lt;code&gt;kernel_phys_load&lt;/code&gt;, &lt;code&gt;kernel_phys_offset&lt;/code&gt;) from the image and leaves them &lt;code&gt;null&lt;/code&gt;. The runtime then falls back to the SoC formula, which fails at W1 on MediaTek. Fill both by running the separate &lt;code&gt;tools/mtk-phys/&lt;/code&gt; extractor on a rooted device (it reads &lt;code&gt;/proc/iomem&lt;/code&gt;) and pasting the values into the app&#39;s advanced overrides. See &lt;a href=&quot;https://raw.githubusercontent.com/YuKongA/ghostlock-app/main/docs/kernel_profiles/MEDIATEK.md&quot;&gt;MEDIATEK.md&lt;/a&gt;.&lt;/p&gt; 
&lt;h3&gt;Preflight&lt;/h3&gt; 
&lt;p&gt;The extractor disassembles &lt;code&gt;remove_waiter()&lt;/code&gt; before extracting offsets. Kernels with the fix are rejected with exit code &lt;code&gt;6&lt;/code&gt;; only vulnerable kernels continue.&lt;/p&gt; 
&lt;h3&gt;On-device analysis&lt;/h3&gt; 
&lt;p&gt;A full OTA can be analyzed entirely on the phone: &lt;code&gt;boot&lt;/code&gt; plus &lt;code&gt;xbl_config&lt;/code&gt; are extracted automatically. Pass &lt;code&gt;--work-dir&lt;/code&gt; an app-writable dir when running inside the app sandbox. Cross-compile and push:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;rustup target add aarch64-linux-android
$ndk = &quot;$env:ANDROID_HOME\ndk\&amp;lt;version&amp;gt;\toolchains\llvm\prebuilt\windows-x86_64\bin&quot;
$env:CC_aarch64_linux_android = &quot;$ndk\aarch64-linux-android35-clang.cmd&quot;
$env:AR_aarch64_linux_android = &quot;$ndk\llvm-ar.exe&quot;
$env:CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER = $env:CC_aarch64_linux_android
Push-Location tools/extract_rs
cargo build --release --target aarch64-linux-android
Pop-Location
adb push build/extract/aarch64-linux-android/release/ghostlock-extract /data/local/tmp/
adb shell /data/local/tmp/ghostlock-extract /sdcard/OTA.zip
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Importing offsets without rebuilding the app&lt;/h3&gt; 
&lt;p&gt;New kernels no longer need an app rebuild: tap &lt;strong&gt;Import offsets.conf (HOCON)&lt;/strong&gt; and pick the extractor&#39;s flattened &lt;code&gt;.conf&lt;/code&gt;, or use &lt;strong&gt;Import offsets.json (v1)&lt;/strong&gt; for an older JSON report. v1 JSON is converted in-app, so nothing has to be pushed to the device: native always starts from the GLK1 document the app sends on stdin, and matches the current &lt;code&gt;uname -r&lt;/code&gt; against the resolved profile before rejecting the kernel. Imports merge across files; a release already stored prompts before overwrite.&lt;/p&gt; 
&lt;p&gt;The app can also generate the profile itself — &lt;strong&gt;Parse OTA link&lt;/strong&gt; (full OTA ZIP URL) and &lt;strong&gt;Parse image&lt;/strong&gt; (&lt;code&gt;boot.img&lt;/code&gt; + optional &lt;code&gt;xbl_config.img&lt;/code&gt;) run the extractor in-process and write a flattened &lt;code&gt;.conf&lt;/code&gt; into the app data dir on success:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-hocon&quot;&gt;# GhostLock kernel profile: 6.12.38-android16-5-g844001fb8721-ab14552068-4k (HOCON, self-contained).
release = &quot;6.12.38-android16-5-g844001fb8721-ab14552068-4k&quot;
schema_version = 1
kernel_major = 6
recommend_shizuku = 0
kernel_phys_load = 0xC7800000
route {
  select_stack {
    waiter_shift = 0
  }
}
fallback {
  to = &quot;none&quot;
}
kernelsnitch {
  collisions = 4
}
task_struct {
  prio = 148
  cred = 2304
}
cred {
  caps_offset = 48
  copy_size = 136
  usage_value = 1
  caps_count = 5
  caps_value = -1
}
offset {
  init_task = 37801728
  init_cred = 37891184
}
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Credits &amp;amp; License&lt;/h2&gt; 
&lt;p&gt;Based on the following projects, licensed under Apache License 2.0 (see &lt;a href=&quot;https://raw.githubusercontent.com/YuKongA/ghostlock-app/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt;):&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/NebuSec/CyberMeowfia&quot;&gt;NebuSec/CyberMeowfia&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/JoinChang/ghostlock-oneplus&quot;&gt;JoinChang/ghostlock-oneplus&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/x-spy/CVE-2026-43499-popsicle&quot;&gt;x-spy/CVE-2026-43499-popsicle&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/c404a3c7f08036aa1e16155edfbd9b57f0e6eaefb02378a951c112f8a7871c7a/YuKongA/ghostlock-app" 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;p&gt;&lt;img src=&quot;https://mshibanami.github.io/GitHubTrendingRSS/assets/icons/link.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;link&quot; style=&quot;margin: 0 8px 0 0; padding: 0; display: inline-block; vertical-align: middle;&quot; /&gt;&lt;a href=&quot;https://kernelsu.org&quot;&gt;https://kernelsu.org&lt;/a&gt;&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/3f79a0aa47b42deb776bac0f6bdb0842c5a2877d3de3242125f3b23385c67d3f/tiann/KernelSU" medium="image" />
      
    </item>
    
    <item>
      <title>gkd-kit/gkd</title>
      <link>https://github.com/gkd-kit/gkd</link>
      <description>&lt;p&gt;基于无障碍，高级选择器，订阅规则的自定义屏幕点击安卓应用 | An Android APP with custom screen tapping based on Accessibility, Advanced Selectors, and Subscription Rules&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://mshibanami.github.io/GitHubTrendingRSS/assets/icons/link.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;link&quot; style=&quot;margin: 0 8px 0 0; padding: 0; display: inline-block; vertical-align: middle;&quot; /&gt;&lt;a href=&quot;https://gkd.li&quot;&gt;https://gkd.li&lt;/a&gt;&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;gkd&lt;/h1&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://gkd.li/&quot;&gt;&lt;img src=&quot;https://e.gkd.li/2a0a7787-f2dd-4529-a885-93f3b8c857c3&quot; alt=&quot;GKD.LI&quot; width=&quot;40%&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;p&gt;基于 &lt;a href=&quot;https://gkd.li/guide/selector&quot;&gt;高级选择器&lt;/a&gt; + &lt;a href=&quot;https://gkd.li/guide/subscription&quot;&gt;订阅规则&lt;/a&gt; + &lt;a href=&quot;https://github.com/gkd-kit/inspect&quot;&gt;快照审查&lt;/a&gt; 的自定义屏幕点击 Android 应用&lt;/p&gt; 
&lt;p&gt;通过自定义规则，在指定界面，满足指定条件(如屏幕上存在特定文字)时，点击特定的节点或位置或执行其他操作&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;快捷操作&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;帮助你简化一些重复的流程, 如某些软件自动确认电脑登录&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;跳过流程&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;某些软件可能在启动时存在一些烦人的流程, 这个软件可以帮助你点击跳过这个流程&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;免责声明&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;本项目遵循 &lt;a href=&quot;https://raw.githubusercontent.com/gkd-kit/gkd/main/LICENSE&quot;&gt;GPL-3.0-only&lt;/a&gt; 开源，项目仅供学习交流，禁止用于商业或非法用途&lt;/strong&gt;&lt;/p&gt; 
&lt;h2&gt;安装&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://gkd.li/guide/&quot;&gt;&lt;img src=&quot;https://e.gkd.li/f23b704d-d781-494b-9719-393f95683b89&quot; alt=&quot;Download from GKD.LI&quot; width=&quot;32%&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=li.songe.gkd&quot;&gt;&lt;img src=&quot;https://e.gkd.li/f63fabeb-0342-4961-a46d-cac61b0f8856&quot; alt=&quot;Download from Google Play&quot; width=&quot;32%&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/gkd-kit/gkd/releases&quot;&gt;&lt;img src=&quot;https://e.gkd.li/c1ef2bb9-7472-46d5-9806-81b4c37e5b4d&quot; alt=&quot;Download from GitHub releases&quot; width=&quot;32%&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;如遇问题请先查看 &lt;a href=&quot;https://gkd.li/guide/faq&quot;&gt;疑难解答&lt;/a&gt;&lt;/p&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;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;img src=&quot;https://e.gkd.li/1e8934c1-2303-4182-9ef2-ad4c46882570&quot; alt=&quot;img&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://e.gkd.li/01f230d7-9b89-4314-b573-38bd233d22f9&quot; alt=&quot;img&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://e.gkd.li/dfa0a782-b21e-473a-96e4-eef27773b71b&quot; alt=&quot;img&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://e.gkd.li/641decd1-2e60-4e95-b78c-df38d1d98a4d&quot; alt=&quot;img&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://e.gkd.li/b216b703-d3de-4798-81ba-29e0ae63264f&quot; alt=&quot;img&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://e.gkd.li/76c25ac9-4189-47cd-b40b-b9e72c79b584&quot; alt=&quot;img&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://e.gkd.li/7288502e-808b-4d9a-88b5-1085abaa0d46&quot; alt=&quot;img&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://e.gkd.li/aa974940-7773-409a-ae84-3c02fee9c770&quot; alt=&quot;img&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;订阅&lt;/h2&gt; 
&lt;p&gt;GKD &lt;strong&gt;默认不提供规则&lt;/strong&gt;，需自行添加本地规则，或者通过订阅链接的方式获取远程规则&lt;/p&gt; 
&lt;p&gt;也可通过 &lt;a href=&quot;https://github.com/gkd-kit/subscription-template&quot;&gt;subscription-template&lt;/a&gt; 快速构建自己的远程订阅&lt;/p&gt; 
&lt;p&gt;第三方订阅列表可在 &lt;a href=&quot;https://github.com/topics/gkd-subscription&quot;&gt;https://github.com/topics/gkd-subscription&lt;/a&gt; 查看&lt;/p&gt; 
&lt;p&gt;要加入此列表, 需点击仓库主页右上角设置图标后在 Topics 中添加 &lt;code&gt;gkd-subscription&lt;/code&gt;&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;示例图片 - 添加至 Topics (点击展开)&lt;/summary&gt; 
 &lt;p&gt;&lt;img src=&quot;https://e.gkd.li/9e340459-254f-4ca0-8a44-cc823069e5a7&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt; 
&lt;/details&gt; 
&lt;h2&gt;选择器&lt;/h2&gt; 
&lt;p&gt;一个类似 CSS 选择器的选择器, 能联系节点上下文信息, 更容易也更精确找到目标节点&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://gkd.li/guide/selector&quot;&gt;https://gkd.li/guide/selector&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://i.gkd.li/i/14881985?gkd=QFt2aWQ9Im1lbnUiXSA8IFt2aWQ9Im1lbnVfY29udGFpbmVyIl0gLSBbdmlkPSJkb3RfdGV4dF9sYXlvdXQiXSA-IFt0ZXh0Xj0i5bm_5ZGKIl0&quot;&gt;@[vid=&quot;menu&quot;] &amp;lt; [vid=&quot;menu_container&quot;] - [vid=&quot;dot_text_layout&quot;] &amp;gt; [text^=&quot;广告&quot;]&lt;/a&gt;&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;示例图片 - 选择器路径视图 (点击展开)&lt;/summary&gt; 
 &lt;p&gt;&lt;a href=&quot;https://i.gkd.li/i/14881985?gkd=QFt2aWQ9Im1lbnUiXSA8IFt2aWQ9Im1lbnVfY29udGFpbmVyIl0gLSBbdmlkPSJkb3RfdGV4dF9sYXlvdXQiXSA-IFt0ZXh0Xj0i5bm_5ZGKIl0&quot;&gt;&lt;img src=&quot;https://e.gkd.li/a2ae667b-b8c5-4556-a816-37743347b972&quot; alt=&quot;image&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;/details&gt; 
&lt;h2&gt;开发&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/gkd-kit/gkd/main/docs/architecture.md&quot;&gt;应用架构与依赖&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/gkd-kit/gkd/main/gkd-app/README.md&quot;&gt;Desktop 启动与调试&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/gkd-kit/gkd/main/docs/local-development.md&quot;&gt;本地数据与产物&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/gkd-kit/gkd/main/AGENTS.md&quot;&gt;开发约束&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;衍生&lt;/h2&gt; 
&lt;p&gt;开发过程中的衍生项目，它们正在被 gkd 使用，也许对你有帮助&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lisonge/kotlin-json5&quot;&gt;kotlin-json5&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lisonge/kotlin-codeorigin&quot;&gt;kotlin-codeorigin&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/android-cs/android-api-diff&quot;&gt;android-api-diff&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lisonge/remap&quot;&gt;remap&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/priv-kit/priv-kit&quot;&gt;priv-kit&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lisonge/morph-compose&quot;&gt;morph-compose&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/lisonge/compose-webview2&quot;&gt;compose-webview2&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;捐赠&lt;/h2&gt; 
&lt;p&gt;如果 GKD 对你有用, 可以通过以下链接支持该项目&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/lisonge/sponsor&quot;&gt;https://github.com/lisonge/sponsor&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;或前往 &lt;a href=&quot;https://play.google.com/store/apps/details?id=li.songe.gkd&quot;&gt;Google Play&lt;/a&gt; 给个好评&lt;/p&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/661957079/3324f64c-ccd0-4277-9c72-7ae092008acc" medium="image" />
      
    </item>
    
    <item>
      <title>KernelSU-Next/KernelSU-Next</title>
      <link>https://github.com/KernelSU-Next/KernelSU-Next</link>
      <description>&lt;p&gt;An advanced Kernel based root solution for Android&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://mshibanami.github.io/GitHubTrendingRSS/assets/icons/link.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;link&quot; style=&quot;margin: 0 8px 0 0; padding: 0; display: inline-block; vertical-align: middle;&quot; /&gt;&lt;a href=&quot;https://kernelsu-next.github.io/webpage/&quot;&gt;https://kernelsu-next.github.io/webpage/&lt;/a&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;strong&gt;English&lt;/strong&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_CN.md&quot;&gt;简体中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_TW.md&quot;&gt;繁體中文&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_TR.md&quot;&gt;Türkçe&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_PT-BR.md&quot;&gt;Português (Brasil)&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_KO.md&quot;&gt;한국어&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_FR.md&quot;&gt;Français&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_ID.md&quot;&gt;Bahasa Indonesia&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_RU.md&quot;&gt;Русский&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_UA.md&quot;&gt;Українська&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_TH.md&quot;&gt;ภาษาไทย&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_VI.md&quot;&gt;Tiếng Việt&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_IT.md&quot;&gt;Italiano&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_PL.md&quot;&gt;Polski&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_BG.md&quot;&gt;Български&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_JA.md&quot;&gt;日本語&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/README_ES.md&quot;&gt;Español&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/assets/kernelsu_next.png&quot; width=&quot;96&quot; alt=&quot;KernelSU Next Logo&quot; /&gt; 
 &lt;h2&gt;KernelSU Next&lt;/h2&gt; 
 &lt;p&gt;&lt;strong&gt;A kernel-based root solution for Android devices.&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt; &lt;a href=&quot;https://github.com/KernelSU-Next/KernelSU-Next/releases/latest&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/v/release/KernelSU-Next/KernelSU-Next?label=Release&amp;amp;logo=github&quot; alt=&quot;Latest Release&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://nightly.link/KernelSU-Next/KernelSU-Next/workflows/build-manager-ci/next/Manager&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Nightly%20Release-gray?logo=hackthebox&amp;amp;logoColor=fff&quot; alt=&quot;Nightly Build&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/KernelSU-Next/KernelSU-Next/dev/LICENSE&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/license/KernelSU-Next/KernelSU-Next?logo=gnu&quot; alt=&quot;GitHub License&quot; /&gt; &lt;/a&gt; &lt;a title=&quot;Crowdin&quot; target=&quot;_blank&quot; href=&quot;https://crowdin.com/project/kernelsu-next&quot;&gt;&lt;img src=&quot;https://badges.crowdin.net/kernelsu-next/localized.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🚀 Features&lt;/h2&gt; 
&lt;ul&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://topjohnwu.github.io/Magisk/details.html#magic-mount&quot;&gt;Magic Mount&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/OverlayFS&quot;&gt;OverlayFS&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://kernelsu.org/guide/app-profile.html&quot;&gt;App Profile&lt;/a&gt;: Limit root privileges per app.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;✅ Compatibility&lt;/h2&gt; 
&lt;p&gt;KernelSU Next supports Android kernels from &lt;strong&gt;4.4 up to 6.12&lt;/strong&gt;.&lt;/p&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Kernel version&lt;/th&gt; 
   &lt;th&gt;Support notes&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;5.10+ (GKI 2.0)&lt;/td&gt; 
   &lt;td&gt;Supports pre-built images and LKM/KMI&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;4.19 – 5.4 (GKI 1.0)&lt;/td&gt; 
   &lt;td&gt;Requires KernelSU driver built-in&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&amp;lt; 4.14 (EOL)&lt;/td&gt; 
   &lt;td&gt;Requires KernelSU driver (3.18+ is experimental and may need backports)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Supported architectures:&lt;/strong&gt; &lt;code&gt;arm64-v8a&lt;/code&gt;, &lt;code&gt;armeabi-v7a&lt;/code&gt; and &lt;code&gt;x86_64&lt;/code&gt;&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 Next 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;hr /&gt; 
&lt;h2&gt;📦 Installation&lt;/h2&gt; 
&lt;p&gt;Please refer to the &lt;a href=&quot;https://kernelsu-next.github.io/webpage/pages/installation.html&quot;&gt;Installation&lt;/a&gt; guide for setup instructions.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🏅 Contribution&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Go to our &lt;a href=&quot;https://crowdin.com/project/kernelsu-next&quot;&gt;Crowdin&lt;/a&gt; to submit a translation for the manager!&lt;/li&gt; 
 &lt;li&gt;To report security issues, please see &lt;a href=&quot;https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/dev/SECURITY.md&quot;&gt;SECURITY.md&lt;/a&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📜 License&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;code&gt;/kernel&lt;/code&gt; directory:&lt;/strong&gt; &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;&lt;strong&gt;All other files:&lt;/strong&gt; &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;hr /&gt; 
&lt;h2&gt;💸 Donations&lt;/h2&gt; 
&lt;p&gt;If you&#39;d like to support the project:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;USDT (BEP20, ERC20)&lt;/strong&gt;: &lt;code&gt;0x0b269716dc00692676e4217e23c7f67abd5f0f3e&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;USDT (TRC20)&lt;/strong&gt;: &lt;code&gt;TXu6VX8dvJLQPx4WBobjbYT5tefHTDikWo&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;LTC&lt;/strong&gt;: &lt;code&gt;LMYRqRXPKAFpYncBhNS44W1iwFit14LH1u&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&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; – Concept inspiration&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/topjohnwu/Magisk&quot;&gt;Magisk&lt;/a&gt; – Core root implementation&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; – Rootkit techniques&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/tiann/KernelSU&quot;&gt;KernelSU&lt;/a&gt; – The original base that made KernelSU Next possible&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/5ec1cff/KernelSU/raw/main/userspace/ksud/src/magic_mount.rs&quot;&gt;Magic Mount Port&lt;/a&gt; – For Magic Mount support&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/c0df5d3f39cc33e8bb0eb3cf660ad2ffcd08415b9081070cf44adf92be77c51c/KernelSU-Next/KernelSU-Next" 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;p&gt;&lt;img src=&quot;https://mshibanami.github.io/GitHubTrendingRSS/assets/icons/link.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;link&quot; style=&quot;margin: 0 8px 0 0; padding: 0; display: inline-block; vertical-align: middle;&quot; /&gt;&lt;a href=&quot;https://animeko.org&quot;&gt;https://animeko.org&lt;/a&gt;&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;a href=&quot;https://github.com/creamycake-anime/ani-subs&quot;&gt;聚合视频数据源&lt;/a&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;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 网络上的人都可分享自己拥有的资源供他人下载。在线源即为其他视频资源网站分享的内容，目前使用 &lt;a href=&quot;https://github.com/creamycake-anime/ani-subs&quot;&gt;creamycake ani-subs&lt;/a&gt;。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/5f607e8f1378ab0f73d99b0ca6a2db524b699619e66499e73706f13f8619452d/open-ani/animeko" medium="image" />
      
    </item>
    
    <item>
      <title>thejaustin/ShizukuPlus</title>
      <link>https://github.com/thejaustin/ShizukuPlus</link>
      <description>&lt;p&gt;An enhanced fork of Shizuku — adds Root/ADB/Dhizuku unification, a Plus API suite, and OneUI/Android 16+ compatibility fixes, while staying fully compatible with existing Shizuku apps.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://mshibanami.github.io/GitHubTrendingRSS/assets/icons/link.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;link&quot; style=&quot;margin: 0 8px 0 0; padding: 0; display: inline-block; vertical-align: middle;&quot; /&gt;&lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus/wiki&quot;&gt;https://github.com/thejaustin/ShizukuPlus/wiki&lt;/a&gt;&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;h1&gt;Shizuku+&lt;/h1&gt; 
 &lt;p&gt;The advanced privileged-process manager for Android.&lt;/p&gt; 
 &lt;p&gt;An enhanced version of &lt;a href=&quot;https://github.com/RikkaApps/Shizuku&quot;&gt;Shizuku&lt;/a&gt; built on top of &lt;a href=&quot;https://github.com/thedjchi/Shizuku&quot;&gt;thedjchi/Shizuku&lt;/a&gt;, with quality-of-life improvements, backported optimizations, and exclusive Plus APIs.&lt;/p&gt; 
 &lt;p&gt;Shizuku lets normal apps use system-level APIs directly via a privileged process started with adb or root. Shizuku+ keeps full compatibility while adding features for power users and developers.&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/thejaustin/ShizukuPlus?style=for-the-badge&amp;amp;color=bfb330&amp;amp;labelColor=807820&quot; alt=&quot;Stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/downloads/thejaustin/ShizukuPlus/total?style=for-the-badge&amp;amp;color=bf7830&amp;amp;labelColor=805020&quot; alt=&quot;Downloads&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus/releases/latest&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/thejaustin/ShizukuPlus?style=for-the-badge&amp;amp;color=3060bf&amp;amp;labelColor=204080&amp;amp;label=Latest&quot; alt=&quot;Latest Release&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;🌐 Languages:&lt;/strong&gt; &lt;strong&gt;English&lt;/strong&gt; · &lt;a href=&quot;https://raw.githubusercontent.com/thejaustin/ShizukuPlus/master/README.zh-CN.md&quot;&gt;Simplified Chinese&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Contributors welcome!&lt;/strong&gt; If you&#39;ve found a bug or want to improve the codebase, please open an issue or pull request — the project is actively looking for contributors and collaborators.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;⬇️ Download&lt;/h2&gt; 
&lt;p&gt;Get the latest release from &lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus/releases&quot;&gt;GitHub Releases&lt;/a&gt; — see the release notes there for what&#39;s changed recently.&lt;/p&gt; 
&lt;h2&gt;✨ Shizuku+ Core Features&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Universal Privilege Provider&lt;/strong&gt;: One interface for &lt;strong&gt;Root&lt;/strong&gt;, &lt;strong&gt;ADB Shell&lt;/strong&gt;, and &lt;strong&gt;Dhizuku (Device Owner)&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;OneUI 8+ Theming Fix&lt;/strong&gt;: Lets theming engines like Hex Installer or Substratum keep working on Android 16/17 and OneUI 8+.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Dhizuku Mode&lt;/strong&gt;: Share the system Device Owner binder with any app that has Shizuku permissions — set up via ADB, no root needed.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Customizable Gestures&lt;/strong&gt;: Swipe left, swipe right, and long-press actions, configurable per app.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;In-App Changelogs&lt;/strong&gt;: See what&#39;s new after an update without leaving the app.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Bulk Management&lt;/strong&gt;: Multi-select apps to grant/revoke permissions or hide them in one tap.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Activity Log&lt;/strong&gt;: Audit trail of API calls and &lt;code&gt;su&lt;/code&gt; bridge commands, with app icons and real-time updates.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Root Compatibility Hub&lt;/strong&gt;: Dashboard for legacy root apps, with granular module control (Magisk mocking, auto-grant, file interceptor, and more).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Universal SU Automation&lt;/strong&gt;: One-tap &#39;Magic Setup&#39; to point all installed root apps at the Shizuku+ SU Bridge.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Service Doctor&lt;/strong&gt;: Diagnoses and fixes service startup issues (Samsung Auto Blocker included).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Integrated Feature Guides&lt;/strong&gt;: Every Plus feature has an info icon with a plain-language explanation of what it does.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Quick Settings Tile&lt;/strong&gt;: Check and toggle the service status from your notification panel.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;details&gt; 
 &lt;summary&gt;🚀 Plus API Features&lt;/summary&gt; 
 &lt;p&gt;Shizuku+ provides exclusive system interfaces for advanced automation and tools — none of these exist in stock Shizuku:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;AICore+ Automation Bridge&lt;/strong&gt;: Privileged UI automation (hierarchy dumps, tap/swipe) for AI-driven tools — no root needed. (&lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus/commit/e9bd1187&quot;&gt;added&lt;/a&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;AVF (Virtual Machine) Manager&lt;/strong&gt;: Run isolated Linux/Microdroid VMs with GPU acceleration. (&lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus/commit/c8e962f6&quot;&gt;added&lt;/a&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Privileged Storage Proxy&lt;/strong&gt;: Authenticated access to restricted paths for backups and file management. &lt;code&gt;/data/app/&lt;/code&gt; and external &lt;code&gt;/Android/data/&lt;/code&gt; work in ADB mode; &lt;code&gt;/data/data/&lt;/code&gt; requires root (the server must run as UID 0 to cross app-private directory boundaries). (&lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus/commit/c8e962f6&quot;&gt;added&lt;/a&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Device Spoofing&lt;/strong&gt; (&lt;em&gt;Spoof Device Identity&lt;/em&gt; in Settings): Present a different device identity to bypass device-specific restrictions. (&lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus/commit/11867f44&quot;&gt;added&lt;/a&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Intelligence Bridge&lt;/strong&gt; (&lt;em&gt;AI Core Plus&lt;/em&gt;): Privileged NPU scheduling and screen context intelligence. (&lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus/commit/e9bd1187&quot;&gt;added&lt;/a&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Window Manager Plus&lt;/strong&gt;: Force free-form resizing, manage the Bubble Bar, and resilient overlays. (&lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus/commit/e9bd1187&quot;&gt;added&lt;/a&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;System Theming Bridge&lt;/strong&gt; (&lt;em&gt;Overlay Manager Plus&lt;/em&gt;): Privileged overlay management for rootless theming (e.g. Hex Installer). (&lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus/commit/55f6b7c7&quot;&gt;added&lt;/a&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Network &amp;amp; DNS Governor&lt;/strong&gt;: Manage Private DNS and firewall routing for rootless ad-blockers. (&lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus/commit/55f6b7c7&quot;&gt;added&lt;/a&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Deep Process Control&lt;/strong&gt; (&lt;em&gt;Activity Manager Plus&lt;/em&gt;): Lets process managers kill apps and set standby buckets more aggressively. (&lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus/commit/55f6b7c7&quot;&gt;added&lt;/a&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Continuity Bridge&lt;/strong&gt;: Secure state and task handoff between Shizuku+ devices. (&lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus/commit/20cf14f7&quot;&gt;added&lt;/a&gt;)&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;p&gt;See the &lt;a href=&quot;https://github.com/thejaustin/ShizukuPlus-API&quot;&gt;Shizuku+-API&lt;/a&gt; repository for full documentation and client bindings.&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;🛠️ Backporting &amp;amp; Optimizations&lt;/summary&gt; 
 &lt;p&gt;Shizuku+ makes regular Shizuku apps faster and more compatible without any code changes:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Transparent Shell Interceptor&lt;/strong&gt;: Routes common &lt;code&gt;pm&lt;/code&gt;, &lt;code&gt;am&lt;/code&gt;, and &lt;code&gt;settings&lt;/code&gt; commands through faster native APIs.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Local ADB Proxy&lt;/strong&gt;: Emulates an ADB server on port 15555, so legacy apps can use Shizuku without Wireless ADB staying on.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;SU Bridge&lt;/strong&gt;: A Shizuku-backed &lt;code&gt;su&lt;/code&gt; drop-in for non-rooted apps that support a custom root path. Common root commands are translated into real framework operations where shell UID allows it — &lt;code&gt;iptables --uid-owner&lt;/code&gt; per-app blocks become live &lt;code&gt;NetworkPolicy&lt;/code&gt; restrictions, &lt;code&gt;resetprop&lt;/code&gt; reads/writes real system properties, and &lt;code&gt;chmod&lt;/code&gt;/&lt;code&gt;chown&lt;/code&gt; apply for real — falling back to mocked success only when an operation genuinely requires root (e.g. flashing partitions or loading kernel modules).&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;&lt;code&gt;plus&lt;/code&gt; CLI Helper&lt;/strong&gt;: A privileged command-line utility, available inside &lt;code&gt;rish&lt;/code&gt;.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Dynamic App Database&lt;/strong&gt;: Keeps app descriptions and suggestions in the UI up-to-date from GitHub.&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;h2&gt;⚙️ Modular Control&lt;/h2&gt; 
&lt;p&gt;Everything in Shizuku+ is optional. Use the &lt;strong&gt;Plus Features&lt;/strong&gt; category in Settings to toggle:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Transparent Shell Interception&lt;/li&gt; 
 &lt;li&gt;Individual Plus APIs (AVF, Storage, Intelligence, etc.)&lt;/li&gt; 
 &lt;li&gt;Home screen card visibility&lt;/li&gt; 
 &lt;li&gt;Activity Logging&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;🔌 Third-Party App Compatibility&lt;/h2&gt; 
&lt;p&gt;Shizuku+ installs under its own package (&lt;code&gt;af.shizuku.plus.api&lt;/code&gt;) so it can coexist with stock Shizuku. Because most Shizuku-aware apps look specifically for the &lt;code&gt;moe.shizuku.privileged.api&lt;/code&gt; package, Shizuku+ ships a lightweight &lt;strong&gt;Compat Hub&lt;/strong&gt; — a tiny companion app that registers that package name and forwards binder/permission requests to Shizuku+.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;If third-party apps don&#39;t detect Shizuku+:&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Start the Shizuku+ service (ADB or root).&lt;/li&gt; 
 &lt;li&gt;On the home screen, use the &lt;strong&gt;Compat Hub&lt;/strong&gt; card to install the companion (it&#39;s bundled in the app; installation goes through the running service, so start the service first).&lt;/li&gt; 
 &lt;li&gt;Re-open the third-party app — it should now detect Shizuku and receive the service binder.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Alternatively, install the &lt;strong&gt;drop-in&lt;/strong&gt; build, which registers as &lt;code&gt;moe.shizuku.privileged.api&lt;/code&gt; directly (do not install it alongside stock Shizuku).&lt;/p&gt; 
&lt;h2&gt;☑️ Requirements&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Minimum: Android 7+ · Fully supported through Android 17 (SDK 37)&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Root mode:&lt;/strong&gt; Requires a rooted device&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Wireless Debugging mode:&lt;/strong&gt; Android 11+ and all Android TVs&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;PC mode:&lt;/strong&gt; All devices&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Start on boot:&lt;/strong&gt; Available only with Wireless Debugging or Root mode&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;On &lt;strong&gt;Android 16+&lt;/strong&gt;, Shizuku+ requests the new Local Network Protection permissions so wireless-debugging discovery and pairing keep working; on &lt;strong&gt;Android 17&lt;/strong&gt;, it transparently handles the hidden-API &lt;code&gt;deviceId&lt;/code&gt; change so authorized apps still appear and permission grants still apply.&lt;/p&gt; 
&lt;h2&gt;📃 License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/thejaustin/ShizukuPlus/master/LICENSE&quot;&gt;Apache 2.0&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;details&gt; 
 &lt;summary&gt;🙏 Acknowledgements &amp;amp; Upstream Projects&lt;/summary&gt; 
 &lt;p&gt;Shizuku+ is a community-driven enhancement and fork of &lt;a href=&quot;https://github.com/thedjchi/Shizuku&quot;&gt;thedjchi/Shizuku&lt;/a&gt;, which is itself a fork of the original &lt;a href=&quot;https://github.com/RikkaApps/Shizuku&quot;&gt;RikkaApps/Shizuku&lt;/a&gt;. This project is not affiliated with the original RikkaApps team.&lt;/p&gt; 
 &lt;p&gt;Thanks to the following upstream contributors and projects whose work makes Shizuku+ possible:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/RikkaApps&quot;&gt;RikkaApps / Rikka&lt;/a&gt;&lt;/strong&gt; — For the foundational Shizuku project and its elegant API design.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/thedjchi&quot;&gt;thedjchi&lt;/a&gt;&lt;/strong&gt; — For the intermediate fork and quality-of-life improvements, and for carrying the &lt;strong&gt;Android 17 (SDK 37) compatibility&lt;/strong&gt; work that Shizuku+&#39;s A17 support is adapted from.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/kerneldroid/Nightzuku&quot;&gt;kerneldroid / Nightzuku&lt;/a&gt;&lt;/strong&gt; — Origin of the Android 17 hidden-API &lt;code&gt;deviceId&lt;/code&gt; compatibility approach (the &lt;code&gt;Android17Compat&lt;/code&gt; / &lt;code&gt;InstalledPackagesCompat&lt;/code&gt; reflection layer) and Local Network Protection handling that this fork&#39;s A17 support descends from.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/LandonMoran&quot;&gt;LandonMoran&lt;/a&gt;&lt;/strong&gt; — For porting Nightzuku&#39;s Android 17 support into the thedjchi fork and &lt;strong&gt;verifying it end-to-end on a physical Android 17 device&lt;/strong&gt; (pairing, service start, and the authorized-apps list), which is the field validation Shizuku+&#39;s port builds on.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/MuntashirAkon&quot;&gt;Muntashir Akon&lt;/a&gt;&lt;/strong&gt; — For the aShell You codebase, which inspired the terminal and shell automation features.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/iamr0s&quot;&gt;iamr0s&lt;/a&gt;&lt;/strong&gt; — For Dhizuku, enabling the unified Device Owner privilege mode, and AndroidAppProcess for standalone Java process execution.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/pascua28&quot;&gt;pascua28&lt;/a&gt;&lt;/strong&gt; — For native Samsung System UID 1000 escalation integration.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/kerneldroid&quot;&gt;kerneldroid&lt;/a&gt;&lt;/strong&gt; — For the Nightzuku fork, which inspired our Android 16/17 (SDK 37) hidden API resilience (handling &lt;code&gt;deviceId&lt;/code&gt;) and UI modernizations.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/ShizukuExt&quot;&gt;ShizukuExt-SystemUID&lt;/a&gt;&lt;/strong&gt; — For conceptualizing systemic UID 1000 privilege escalation beyond standard limits.&lt;/li&gt; 
 &lt;/ul&gt; 
 &lt;h3&gt;Upstream Projects&lt;/h3&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;Project&lt;/th&gt; 
    &lt;th&gt;Author&lt;/th&gt; 
    &lt;th&gt;License&lt;/th&gt; 
    &lt;th&gt;Role&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/RikkaApps/Shizuku&quot;&gt;Shizuku&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;RikkaApps / Rikka&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
    &lt;td&gt;Foundational privileged-process architecture&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/thedjchi/Shizuku&quot;&gt;Shizuku (fork)&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;thedjchi&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
    &lt;td&gt;Intermediate fork with QoL improvements; carried the Android 17 compat work Shizuku+ adapted&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/kerneldroid/Nightzuku&quot;&gt;Nightzuku&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;kerneldroid&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
    &lt;td&gt;Origin of the Android 17 hidden-API &lt;code&gt;deviceId&lt;/code&gt; + Local Network Protection compatibility approach&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/pascua28/Shizuku&quot;&gt;Shizuku (fork)&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;pascua28&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
    &lt;td&gt;Samsung UID 1000 system execution exploit&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/kerneldroid/Nightzuku&quot;&gt;Nightzuku&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;kerneldroid&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
    &lt;td&gt;Android 16/17 API resilience &amp;amp; UI modernizations&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/ShizukuExt&quot;&gt;ShizukuExt-SystemUID&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;ShizukuExt Team&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
    &lt;td&gt;System UID privilege escalation concepts&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/iamr0s/Dhizuku&quot;&gt;Dhizuku&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;iamr0s&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
    &lt;td&gt;Device Owner binder sharing (Dhizuku Mode)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/iamr0s/AndroidAppProcess&quot;&gt;AndroidAppProcess&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;iamr0s&lt;/td&gt; 
    &lt;td&gt;LGPL-3.0&lt;/td&gt; 
    &lt;td&gt;Standalone high-privileged Java process wrapper&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;h3&gt;Open Source Libraries&lt;/h3&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;Library&lt;/th&gt; 
    &lt;th&gt;Author&lt;/th&gt; 
    &lt;th&gt;License&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://developer.android.com/jetpack&quot;&gt;AndroidX Jetpack&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Google / AOSP&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/material-components/material-components-android&quot;&gt;Material Components&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Google&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://fonts.google.com/icons&quot;&gt;Material Symbols&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Google&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/JetBrains/kotlin&quot;&gt;Kotlin / Coroutines / Serialization&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;JetBrains&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/RikkaApps&quot;&gt;RikkaX Libraries&lt;/a&gt; (appcompat, material, insets, html, recyclerview, preference, lifecycle, parcelablelist)&lt;/td&gt; 
    &lt;td&gt;Rikka&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/RikkaApps/HiddenApiCompat&quot;&gt;Hidden API / Refine&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Rikka&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/airbnb/mavericks&quot;&gt;Mavericks (MvRx)&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Airbnb&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/airbnb/lottie-android&quot;&gt;Lottie&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Airbnb&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/coil-kt/coil&quot;&gt;Coil&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Coil Contributors&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/InsertKoinIO/koin&quot;&gt;Koin&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Koin Contributors&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/JakeWharton/timber&quot;&gt;Timber&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Jake Wharton&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/topjohnwu/libsu&quot;&gt;libsu&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;topjohnwu&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/LSPosed/AndroidHiddenApiBypass&quot;&gt;AndroidHiddenApiBypass&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;LSPosed&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/lsposed/libcxx&quot;&gt;libcxx&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;LSPosed / LLVM&lt;/td&gt; 
    &lt;td&gt;Apache 2.0 + LLVM Exception&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/zhanghai/AppIconLoader&quot;&gt;AppIconLoader&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Zhang Hai&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/vvb2060/ndk-boringssl&quot;&gt;BoringSSL (NDK)&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;vvb2060 / Google&lt;/td&gt; 
    &lt;td&gt;Apache 2.0 / ISC&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/google/gson&quot;&gt;Gson&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Google&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/square/leakcanary&quot;&gt;LeakCanary&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Square&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/mikepenz/AboutLibraries&quot;&gt;AboutLibraries&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Mike Penz&lt;/td&gt; 
    &lt;td&gt;Apache 2.0&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://www.bouncycastle.org/&quot;&gt;Bouncy Castle&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Legion of Bouncy Castle&lt;/td&gt; 
    &lt;td&gt;MIT&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/getsentry/sentry-java&quot;&gt;Sentry Android SDK&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Sentry&lt;/td&gt; 
    &lt;td&gt;MIT&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://sqlite.org/&quot;&gt;SQLite (C Recovery API / CLI)&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;D. Richard Hipp / SQLite Consortium&lt;/td&gt; 
    &lt;td&gt;Public Domain&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;p&gt;Full license texts and per-library details: &lt;a href=&quot;https://raw.githubusercontent.com/thejaustin/ShizukuPlus/master/OPEN_SOURCE_LICENSES.md&quot;&gt;OPEN_SOURCE_LICENSES.md&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/thejaustin/ShizukuPlus/master/NOTICE&quot;&gt;NOTICE&lt;/a&gt;&lt;/p&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;👥 Contributors&lt;/summary&gt; 
 &lt;p&gt;&lt;strong&gt;Code Contributors&lt;/strong&gt;&lt;/p&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;Contributor&lt;/th&gt; 
    &lt;th&gt;Contribution&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/thejaustin&quot;&gt;thejaustin&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Project founder &amp;amp; primary maintainer — all core Plus features, UI/UX, and infrastructure&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/thedjchi&quot;&gt;thedjchi&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Intermediate fork base; Android 17 (SDK 37) compatibility groundwork&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/doremylover&quot;&gt;Kevin Doremy&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Dead code removal, unused import cleanup, layout &amp;amp; class refactoring&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/Ryfter&quot;&gt;Ryfter&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;mDNS timeout improvements, FGS subtype refactoring, notification UX&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/vvb2060&quot;&gt;vvb2060&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;AGP build system updates, LTO optimization, license clarifications&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/haruue&quot;&gt;Haruue Icymoon&lt;/a&gt;&lt;/td&gt; 
    &lt;td&gt;Documentation &amp;amp; README improvements&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;p&gt;&lt;strong&gt;Translation Contributors&lt;/strong&gt;&lt;/p&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th&gt;Language&lt;/th&gt; 
    &lt;th&gt;Contributor&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Brazilian Portuguese&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/odorizzioficial&quot;&gt;odorizzioficial&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;French&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/Ryfter&quot;&gt;Ryfter&lt;/a&gt;, &lt;a href=&quot;https://github.com/thibaultclement&quot;&gt;T. Clement&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Vietnamese&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/ThePrimalPea&quot;&gt;ThePrimalPea&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Filipino&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/IverCoder&quot;&gt;IverCoder&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Italian&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/Dany-coder778&quot;&gt;Dany-coder778&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td&gt;Japanese&lt;/td&gt; 
    &lt;td&gt;&lt;a href=&quot;https://github.com/MES-mitutti&quot;&gt;MES-mitutti&lt;/a&gt;&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;p&gt;&lt;em&gt;Plus many more via community translation through Weblate — thank you to all translators!&lt;/em&gt;&lt;/p&gt; 
 &lt;h3&gt;Acknowledgments&lt;/h3&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Special thanks to &lt;strong&gt;AkayamiShurui42&lt;/strong&gt; for the proactive security research and stability patches (Reference: #239).&lt;/li&gt; 
  &lt;li&gt;Thank you to &lt;strong&gt;AlexeiCrystal&lt;/strong&gt; for identifying MIUI crash bugs and suggesting the Compat Hub workaround for legacy apps (#241, #242).&lt;/li&gt; 
  &lt;li&gt;Thank you to &lt;strong&gt;ddnexus&lt;/strong&gt; and &lt;strong&gt;kai-bash&lt;/strong&gt; for highlighting the Device Owner factory reset trap and Google Backup conflicts (#237).&lt;/li&gt; 
  &lt;li&gt;Thank you to &lt;strong&gt;Kevinco1&lt;/strong&gt; for feedback on root compat app detection issues (#243).&lt;/li&gt; 
  &lt;li&gt;Thank you to &lt;strong&gt;aragortsantiago6-beep&lt;/strong&gt; and &lt;strong&gt;Scoop2389&lt;/strong&gt; (Pixel 9a) and &lt;strong&gt;ConversionRituals&lt;/strong&gt; (Xiaomi) for on-device Android 16/17 testing, crash reports, and logs that drove the SDK 37 hidden-API and Local Network Protection compatibility fixes (#317, #323).&lt;/li&gt; 
  &lt;li&gt;Thank you to &lt;strong&gt;gmm96&lt;/strong&gt; for extensive multi-round logcat debugging across several builds that pinned down the Cached Apps Freezer binder-delivery bug (#371).&lt;/li&gt; 
  &lt;li&gt;Thank you to &lt;strong&gt;&lt;a href=&quot;https://github.com/odorizzioficial&quot;&gt;odorizzioficial&lt;/a&gt;&lt;/strong&gt; for the complete Brazilian Portuguese translation (#409), and for the detailed report on the Samsung &quot;Sleeping apps&quot; Watchdog freeze (#415).&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/ef2687d899c49f7aa6aec6d797fe8cb8ad2a772c379b65d20051c8c8ebed6847/thejaustin/ShizukuPlus" medium="image" />
      
    </item>
    
    <item>
      <title>maxrave-dev/SimpMusic</title>
      <link>https://github.com/maxrave-dev/SimpMusic</link>
      <description>&lt;p&gt;A cross-platform music app using YouTube Music for backend&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://mshibanami.github.io/GitHubTrendingRSS/assets/icons/link.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;link&quot; style=&quot;margin: 0 8px 0 0; padding: 0; display: inline-block; vertical-align: middle;&quot; /&gt;&lt;a href=&quot;https://simpmusic.org/&quot;&gt;https://simpmusic.org/&lt;/a&gt;&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/maxrave-dev/SimpMusic/dev/fastlane/metadata/android/en-US/images/featureGraphic.png&quot; /&gt; 
 &lt;h1&gt;SimpMusic&lt;/h1&gt; A FOSS YouTube Music client for Android and Desktop with many features from
 &lt;br /&gt;Spotify, SponsorBlock, ReturnYouTubeDislike using Compose Multiplatform to develop. 
 &lt;br /&gt; 
 &lt;br /&gt; 
 &lt;a href=&quot;https://github.com/maxrave-dev/SimpMusic/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/maxrave-dev/SimpMusic&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://github.com/maxrave-dev/SimpMusic/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/downloads/maxrave-dev/SimpMusic/total&quot; /&gt;&lt;/a&gt; 
 &lt;br /&gt; 
 &lt;br /&gt; 
 &lt;a href=&quot;https://trendshift.io/repositories/13482&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://trendshift.io/api/badge/repositories/13482&quot; alt=&quot;maxrave-dev%2FSimpMusic | 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;br /&gt; 
 &lt;a href=&quot;https://www.producthunt.com/products/simpmusic/reviews?utm_source=badge-product_rating&amp;amp;utm_medium=badge&amp;amp;utm_source=badge-simpmusic&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://api.producthunt.com/widgets/embed-image/v1/product_rating.svg?product_id=903836&amp;amp;theme=dark&quot; alt=&quot;SimpMusic - A FOSS YouTube Music client for Android with many features | Product Hunt&quot; style=&quot;width: 242px; height: 108px;&quot; width=&quot;242&quot; height=&quot;108&quot; /&gt;&lt;/a&gt; 
 &lt;br /&gt; 
 &lt;h4&gt;Download&lt;/h4&gt; 
 &lt;a href=&quot;https://apt.izzysoft.de/packages/com.maxrave.simpmusic/&quot;&gt;&lt;img src=&quot;https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://f-droid.org/en/packages/com.maxrave.simpmusic/&quot;&gt;&lt;img src=&quot;https://fdroid.gitlab.io/artwork/badge/get-it-on.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://www.openapk.net/simpmusic/com.maxrave.simpmusic/&quot;&gt;&lt;img src=&quot;https://www.openapk.net/images/openapk-badge.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://github.com/maxrave-dev/SimpMusic/releases&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/NeoApplications/Neo-Backup/034b226cea5c1b30eb4f6a6f313e4dadcbb0ece4/badge_github.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt; 
 &lt;br /&gt;
 &lt;sub&gt;On vivo phones, install &lt;code&gt;SimpMusic-full-vivo-*.apk&lt;/code&gt; from &lt;a href=&quot;https://github.com/maxrave-dev/SimpMusic/releases&quot;&gt;Releases&lt;/a&gt; for Origin Island and the music widget. It installs as a separate app and can&#39;t sit next to Spotify.&lt;/sub&gt; 
 &lt;h4&gt;Nightly Build&lt;/h4&gt; 
 &lt;a href=&quot;https://simpmusic.org/nightly-download&quot;&gt;&lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/actions/workflows/android.yml/badge.svg?sanitize=true&quot; /&gt;&lt;/a&gt;
 &lt;br /&gt; 
 &lt;a href=&quot;https://simpmusic.org/nightly-download&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/NeoApplications/Neo-Backup/034b226cea5c1b30eb4f6a6f313e4dadcbb0ece4/badge_github.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt; 
&lt;/div&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;SimpMusic is available on Desktop now!&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/maxrave-dev/kotlin-footguns&quot;&gt;kotlin-footguns&lt;/a&gt; — the Kotlin, Compose Multiplatform and desktop JVM traps this project ran into the hard way. Star it if it saves you a night.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;&lt;a href=&quot;https://readme.cash/c/janwgx1dnp&quot;&gt;&lt;img src=&quot;https://readme.cash/i/janwgx1dnp.svg?sanitize=true&quot; alt=&quot;Sponsor&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Features ✨️&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Play music from YouTube Music or YouTube for free, without ads and in the background&lt;/li&gt; 
 &lt;li&gt;Three Now Playing styles: Classic, Material 3 Expressive and a redesigned Apple Music player with Apple Music-style lyrics (NEW)&lt;/li&gt; 
 &lt;li&gt;Ten-band equalizer with presets and AutoEq headphone profiles, plus Delay and Reverb effects, or your phone&#39;s system equalizer on Android (NEW)&lt;/li&gt; 
 &lt;li&gt;Pick the speaker, headphones or Cast device SimpMusic plays on, without moving other apps&#39; audio (NEW)&lt;/li&gt; 
 &lt;li&gt;SimpMusic Wrapped: your year in music, plus monthly recap playlists (NEW)&lt;/li&gt; 
 &lt;li&gt;On-device listening analytics: charts, period history, listening clock and a shareable listening receipt (NEW)&lt;/li&gt; 
 &lt;li&gt;Word-by-word Apple Music-style lyrics, romanization for 12 languages, share lyrics as an image, landscape fullscreen lyrics and a timing offset (NEW)&lt;/li&gt; 
 &lt;li&gt;Home screen widgets: turntable, playlists and listening insights (NEW)&lt;/li&gt; 
 &lt;li&gt;Send your sign-ins from Android to Desktop by scanning a QR code (NEW)&lt;/li&gt; 
 &lt;li&gt;Preferred audio language for videos with several audio tracks (NEW)&lt;/li&gt; 
 &lt;li&gt;High quality up-to 256kbps stream (Opus or AAC) for YouTube Music Premium users&lt;/li&gt; 
 &lt;li&gt;Browsing Home, Charts, Podcast, Moods &amp;amp; Genre with YouTube Music data at high speed&lt;/li&gt; 
 &lt;li&gt;Search everything on YouTube&lt;/li&gt; 
 &lt;li&gt;Spotify Canvas and Animated Album Art supported (NEW)&lt;/li&gt; 
 &lt;li&gt;Power your experience with SimpMusic Chart (&lt;a href=&quot;https://chart.simpmusic.org/&quot;&gt;https://chart.simpmusic.org/&lt;/a&gt;)&lt;/li&gt; 
 &lt;li&gt;Play 1080p video option with subtitle&lt;/li&gt; 
 &lt;li&gt;Play YouTube Music live stations (NEW)&lt;/li&gt; 
 &lt;li&gt;AI song suggestions and an AI reading of your music taste (NEW)&lt;/li&gt; 
 &lt;li&gt;Import playlists converted from Spotify and other apps&lt;/li&gt; 
 &lt;li&gt;Customize your playlist, synced with YouTube Music&lt;/li&gt; 
 &lt;li&gt;Notifications from followed artists&lt;/li&gt; 
 &lt;li&gt;Caching and offline playback support&lt;/li&gt; 
 &lt;li&gt;Crossfade with DJ-style like Apple Music&lt;/li&gt; 
 &lt;li&gt;Customizing THEME (Light, Dark, Color, etc)&lt;/li&gt; 
 &lt;li&gt;Synced lyrics from SimpMusic Lyrics, LRCLIB, Spotify (require login) and YouTube Transcript - AI lyrics translation (BETA) (*)&lt;/li&gt; 
 &lt;li&gt;Personalize data (**) and multi-YouTube-account support&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;http://Last.fm&quot;&gt;Last.fm&lt;/a&gt; scrobbling (Full version)&lt;/li&gt; 
 &lt;li&gt;Supports SponsorBlock and Return YouTube Dislike&lt;/li&gt; 
 &lt;li&gt;Sleep Timer&lt;/li&gt; 
 &lt;li&gt;Android Auto with online content, feature rich UI/UX&lt;/li&gt; 
 &lt;li&gt;Discord Rich Presence support&lt;/li&gt; 
 &lt;li&gt;Listen Together: shared rooms that play in sync with friends, compatible with Metrolist (NEW)&lt;/li&gt; 
 &lt;li&gt;And many more!&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;(*) Use your OpenAI or Gemini API key&lt;br /&gt; (**) For users who chose &quot;Send back to Google&quot; feature&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;&lt;br /&gt; This app is in the beta stage, so it may have many bugs and make it crash. If you find any bugs,&lt;br /&gt; please create an issue or contact me via email or Discord server.&lt;br /&gt; Because of depending on YouTube Music, the player error will happen and it&#39;s normally, please don&#39;t ask me about the stable state of this app.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;h2&gt;Screenshots&lt;/h2&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/01.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/02.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/03.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/04.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/05.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/06.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/07.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/08.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/09.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/10.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/11.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/12.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/13.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/14.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/15.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/16.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/17.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/18.png?raw=true&quot; width=&quot;200&quot; /&gt; &lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/screenshot/19.png?raw=true&quot; width=&quot;800&quot; /&gt; &lt;/p&gt; 
&lt;h4&gt;More &lt;a href=&quot;https://photos.app.goo.gl/AbieoXG5ctDrpwzp7&quot;&gt;screenshots&lt;/a&gt; here.&lt;/h4&gt; 
&lt;h2&gt;Data&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;This app uses hidden API from YouTube Music with some tricks to get data from YouTube Music.&lt;/li&gt; 
 &lt;li&gt;Use Spotify Web API and some tricks to get Spotify Canvas and Lyrics&lt;/li&gt; 
 &lt;li&gt;Thanks to &lt;a href=&quot;https://github.com/z-huang/InnerTune/&quot;&gt;InnerTune&lt;/a&gt; for the idea to get data from YouTube Music. This repo is my inspiration to create this app.&lt;/li&gt; 
 &lt;li&gt;Special thanks to &lt;a href=&quot;https://github.com/yuliskov/SmartTube&quot;&gt;SmartTube&lt;/a&gt;. This repo help me to extract the streaming URL of YouTube Music.&lt;/li&gt; 
 &lt;li&gt;My app is using &lt;a href=&quot;https://sponsor.ajay.app/&quot;&gt;SponsorBlock&lt;/a&gt; to skip sponsor in YouTube videos.&lt;/li&gt; 
 &lt;li&gt;ReturnYouTubeDislike for getting information on votes&lt;/li&gt; 
 &lt;li&gt;Main lyrics data from SimpMusic Lyrics&lt;/li&gt; 
 &lt;li&gt;Alternative lyrics data from LRCLIB. More information &lt;a href=&quot;https://lrclib.net/&quot;&gt;LRCLIB&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Privacy&lt;/h2&gt; 
&lt;p&gt;SimpMusic doesn&#39;t have any tracker or third-party server for collecting user data in FOSS version. If YouTube&lt;br /&gt; logged-in users enable &quot;Send back to Google&quot; feature, SimpMusic only uses YouTube Music Tracking API to send listening history and listening record of video to Google for better recommendations and&lt;br /&gt; supporting artist or YouTube Creator (For API reference,&lt;br /&gt; see &lt;a href=&quot;https://github.com/maxrave-dev/core/raw/master/service/kotlinYtmusicScraper/src/commonMain/kotlin/com/maxrave/kotlinytmusicscraper/Ytmusic.kt&quot;&gt;this&lt;/a&gt;).&lt;/p&gt; 
&lt;p&gt;We collect crash data in the Full version to improve the app.&lt;/p&gt; 
&lt;h2&gt;Full or FOSS version&lt;/h2&gt; 
&lt;p&gt;I use &lt;a href=&quot;http://sentry.io&quot;&gt;Sentry&lt;/a&gt; crashlytics to catch all crashes in the Full version. &lt;a href=&quot;https://github.com/getsentry/sentry&quot;&gt;Sentry&lt;/a&gt; is the open-source project. If you don&#39;t want to be collected crash data, you must use FOSS version.&lt;/p&gt; 
&lt;h2&gt;Desktop app&lt;/h2&gt; 
&lt;h3&gt;Which file should I download?&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;For Windows: Download &lt;code&gt;SimpMusic-Windows-installer.zip&lt;/code&gt;, unzip it and run &lt;code&gt;install.bat&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;For macOS (macOS 15 or newer): Download the file with extension &lt;code&gt;.dmg&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;For Linux: Download the file with extension &lt;code&gt;.AppImage&lt;/code&gt; (all Linux distributions)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Log in guide: &lt;a href=&quot;https://www.simpmusic.org/blogs/en/how-to-log-in-on-desktop-app&quot;&gt;https://www.simpmusic.org/blogs/en/how-to-log-in-on-desktop-app&lt;/a&gt;&lt;/h3&gt; 
&lt;h4&gt;Discord login guide: &lt;a href=&quot;https://gist.github.com/MarvNC/e601f3603df22f36ebd3102c501116c6&quot;&gt;https://gist.github.com/MarvNC/e601f3603df22f36ebd3102c501116c6&lt;/a&gt;&lt;/h4&gt; 
&lt;h3&gt;Some limitations on Desktop app:&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Some Linux distributions may have stability issues (upstream JetBrains issue).&lt;/li&gt; 
 &lt;li&gt;ARM64 on Windows and Linux: use the x64 build.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Please report issues on our Discord server if you find any bugs.&lt;/p&gt; 
&lt;h2&gt;Translation&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://crowdin.com/project/simpmusic&quot;&gt;&lt;img src=&quot;https://badges.crowdin.net/simpmusic/localized.svg?sanitize=true&quot; alt=&quot;Crowdin&quot; /&gt;&lt;/a&gt; &lt;br /&gt; You can help me translate this app into your language by using Crowdin &lt;a href=&quot;https://crowdin.com/project/simpmusic&quot;&gt;SimpMusic on Crowdin&lt;/a&gt;&lt;/p&gt; 
&lt;h4&gt;Special thanks to all translators on Crowdin ❤️&lt;/h4&gt; 
&lt;h2&gt;FAQ&lt;/h2&gt; 
&lt;h4&gt;1. Wrong Lyrics?&lt;/h4&gt; 
&lt;p&gt;Lyrics are provided by LRCLIB and other sources. Sometimes lyrics may not match perfectly with the YouTube &lt;code&gt;videoId&lt;/code&gt; parameter. So I need to use some &quot;String Matcher&quot; and &quot;Duration&quot; to search lyrics. So sometimes, some songs or videos get the wrong lyrics.&lt;/p&gt; 
&lt;h4&gt;2. Why the name or brand is &quot;SimpMusic&quot;?&lt;/h4&gt; 
&lt;p&gt;Simply, because I love the name. It&#39;s a combination of &#39;Simple&#39; and &#39;Music&#39;. But SimpMusic is not a simple app, it&#39;s all you need for a powerful music streaming app.&lt;/p&gt; 
&lt;h4&gt;More FAQ, join &lt;a href=&quot;https://discord.com/channels/1136988323819298856/1349800418745778196&quot;&gt;my Discord channel&lt;/a&gt;&lt;/h4&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Contributions are welcome — the full guide lives in &lt;a href=&quot;https://raw.githubusercontent.com/maxrave-dev/SimpMusic/dev/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;. The short version:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Start from an issue.&lt;/strong&gt; Every PR needs an accepted issue behind it — open one first so the change is agreed before the code exists.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Fork and branch from &lt;code&gt;dev&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;main&lt;/code&gt; tracks releases), and fill in the whole PR template — one checkbox is machine-checked.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;AI policy.&lt;/strong&gt; AI-&lt;em&gt;assisted&lt;/em&gt; work is welcome; AI-&lt;em&gt;driven&lt;/em&gt; work is not: 
  &lt;ul&gt; 
   &lt;li&gt;A human must have written or personally reviewed &lt;strong&gt;every line&lt;/strong&gt; and be able to answer review comments about it.&lt;/li&gt; 
   &lt;li&gt;Unattended agent submissions (Jules, Devin, and friends) are &lt;strong&gt;closed automatically&lt;/strong&gt; by the triage bot, on sight.&lt;/li&gt; 
   &lt;li&gt;Commits carrying AI co-author trailers (&lt;code&gt;Co-Authored-By: Claude/Copilot/…&lt;/code&gt;) or &quot;Generated with …&quot; markers are rejected the same way — squash them out first.&lt;/li&gt; 
   &lt;li&gt;Repeat offenders are blocked.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Translations&lt;/strong&gt; go through &lt;a href=&quot;https://crowdin.com/project/simpmusic&quot;&gt;Crowdin&lt;/a&gt;, never PRs editing the string files directly.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Legal Disclaimer &amp;amp; Terms of Use&lt;/h2&gt; 
&lt;h3&gt;1. 100% Free, Open-Source &amp;amp; Strictly Non-Commercial&lt;/h3&gt; 
&lt;p&gt;SimpMusic is a fully open-source project (FOSS) created purely for educational purposes and personal use. &lt;strong&gt;We do not sell this application, nor do we monetize it in any way.&lt;/strong&gt; There are no advertisements, no premium features, no subscriptions, and no hidden fees within the app. This project has absolutely no commercial value or financial intent.&lt;/p&gt; 
&lt;h3&gt;2. A Custom Browser with Content Filtering&lt;/h3&gt; 
&lt;p&gt;SimpMusic acts strictly as a specialized, third-party web browser and client. It simply parses the publicly available website content and APIs of YouTube and YouTube Music, rendering them in a custom user interface. The ad-free experience it provides is fundamentally no different from using a standard web browser (like Chrome, Firefox, or Brave) equipped with a common ad-blocking extension (such as uBlock Origin).&lt;/p&gt; 
&lt;h3&gt;3. Support Content Creators&lt;/h3&gt; 
&lt;p&gt;We deeply respect the hard work of artists, musicians, and content creators. &lt;strong&gt;We strongly encourage all users to subscribe to &lt;a href=&quot;https://www.youtube.com/premium&quot;&gt;YouTube Premium&lt;/a&gt;.&lt;/strong&gt; Purchasing a Premium subscription is the best way to financially support the creators you listen to and ensure the continued growth of the platform. SimpMusic is built as a proof-of-concept for developers and enthusiasts, not to harm creators&#39; revenues.&lt;/p&gt; 
&lt;h3&gt;4. No Hosting of Copyrighted Material&lt;/h3&gt; 
&lt;p&gt;We do not host, upload, distribute, or store any audio, video, or copyrighted media files on our own servers. All content accessed through this application is stored entirely on Google&#39;s/YouTube&#39;s servers and remains the property of their respective copyright owners. The app merely acts as a conduit to stream publicly accessible links.&lt;/p&gt; 
&lt;h3&gt;5. User Responsibility &amp;amp; Legal Contact&lt;/h3&gt; 
&lt;p&gt;The software is provided &quot;AS IS&quot;, without warranty of any kind. The developers of SimpMusic do not encourage or condone piracy. Users are solely responsible for ensuring their usage of this app complies with their local copyright laws and the Terms of Service of the platforms they access.&lt;/p&gt; 
&lt;p&gt;Because we do not host any media files, we cannot process DMCA takedown requests for audio or video content. However, if you represent a copyright holder or have legal concerns regarding the open-source code itself, please contact us via email at: &lt;strong&gt;&lt;a href=&quot;mailto:ndtminh2608@gmail.com&quot;&gt;ndtminh2608@gmail.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; 
&lt;h2&gt;Contribute&lt;/h2&gt; 
&lt;p&gt;We&#39;re looking for more contributors, all contributions are welcome! See our &lt;a href=&quot;https://github.com/maxrave-dev/SimpMusic/raw/main/CODE_OF_CONDUCT.md&quot;&gt;CODE OF CONDUCT&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Thanks for all my contributors:&lt;/p&gt; 
&lt;a href=&quot;https://github.com/maxrave-dev/SimpMusic/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=maxrave-dev/SimpMusic&quot; /&gt; &lt;/a&gt; 
&lt;h2&gt;Showcase&lt;/h2&gt; 
&lt;p&gt;This project is following clean architecture and MVVM pattern (in UI, app module).&lt;/p&gt; 
&lt;h3&gt;Dependencies graph&lt;/h3&gt; 
&lt;p float=&quot;left&quot;&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/main/asset/dependencies_graph.svg?raw=true&quot; width=&quot;800&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;Support &amp;amp; Donations&lt;/h2&gt; 
&lt;h4&gt;Special thanks to all supporter ❤️&lt;/h4&gt; 
&lt;div align=&quot;left&quot;&gt; 
 &lt;a href=&quot;https://simpmusic.org/&quot;&gt;&lt;img alt=&quot;Visit the website&quot; height=&quot;50&quot; src=&quot;https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/documentation/website_vector.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &amp;nbsp; 
 &lt;a href=&quot;https://discord.gg/Rq5tWVM9Hg&quot;&gt;&lt;img alt=&quot;Discord Server&quot; height=&quot;50&quot; src=&quot;https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/social/discord-plural_vector.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &amp;nbsp; 
 &lt;br /&gt; 
 &lt;a href=&quot;https://www.buymeacoffee.com/maxrave&quot;&gt;&lt;img alt=&quot;Buy me a Coffee&quot; height=&quot;50&quot; src=&quot;https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/donate/buymeacoffee-singular_vector.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &amp;nbsp; 
 &lt;a href=&quot;https://liberapay.com/maxrave/&quot;&gt;&lt;img alt=&quot;liberapay&quot; height=&quot;50&quot; src=&quot;https://raw.githubusercontent.com/liberapay/liberapay.com/master/www/assets/liberapay/logo-v2_black-on-yellow.svg?sanitize=true&quot; /&gt;&lt;/a&gt; 
&lt;/div&gt; 
&lt;h3&gt;MOMO or Vietnamese banking&lt;/h3&gt; 
&lt;p float=&quot;left&quot;&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/52770992.jpg?raw=true&quot; width=&quot;300&quot; /&gt; &lt;/p&gt; 
&lt;h2&gt;SimpMusic is sponsored by:&lt;/h2&gt; 
&lt;br /&gt; 
&lt;a href=&quot;https://crowdin.com&quot;&gt; &lt;img src=&quot;https://support.crowdin.com/assets/logos/plate/png/crowdin-logo-with-plate.png&quot; width=&quot;300&quot; /&gt; &lt;/a&gt; 
&lt;br /&gt; 
&lt;a href=&quot;https://sentry.io&quot;&gt; &lt;img src=&quot;https://github.com/maxrave-dev/SimpMusic/raw/dev/asset/sentry.svg?raw=true&quot; width=&quot;300&quot; /&gt; &lt;/a&gt; 
&lt;br /&gt; 
&lt;br /&gt; 
&lt;p&gt;Crowdin and Sentry both have a free enterprise plan for Open-source projects. Follow the URLs:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://crowdin.com/page/open-source-project-setup-request&quot;&gt;Open Source License Request Form | Crowdin&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://sentry.io/for/open-source/&quot;&gt;Sentry for Open Source | Sentry&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Past sponsored:&lt;/h2&gt; 
&lt;br /&gt; 
&lt;a href=&quot;https://vercel.com/oss&quot;&gt; &lt;img alt=&quot;Vercel OSS Program&quot; src=&quot;https://vercel.com/oss/program-badge.svg?sanitize=true&quot; /&gt; &lt;/a&gt; 
&lt;br /&gt; 
&lt;br /&gt; 
&lt;p&gt;Check out the Vercel open-source program:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://vercel.com/open-source-program&quot;&gt;https://vercel.com/open-source-program&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;This project is tested with BrowserStack&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Checkout BrowserStack now: &lt;a href=&quot;https://www.browserstack.com/&quot;&gt;https://www.browserstack.com/&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;em&gt;This project is a part of &lt;a href=&quot;http://SimpMusic.org&quot;&gt;SimpMusic.org&lt;/a&gt; Open-source project by me &lt;a href=&quot;https://github.com/maxrave-dev&quot;&gt;maxrave-dev&lt;/a&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;!-- GitAds-Verify: 9788276LHF131ESPL12SWLJ8LACOJE89 --&gt;</description>
      
      <media:content url="https://repository-images.githubusercontent.com/628160489/d1caf378-9996-45bd-aad8-360494ce98be" medium="image" />
      
    </item>
    
    <item>
      <title>deniscerri/ytdlnis</title>
      <link>https://github.com/deniscerri/ytdlnis</link>
      <description>&lt;p&gt;Full-featured audio/video downloader for Android using yt-dlp&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://mshibanami.github.io/GitHubTrendingRSS/assets/icons/link.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;link&quot; style=&quot;margin: 0 8px 0 0; padding: 0; display: inline-block; vertical-align: middle;&quot; /&gt;&lt;a href=&quot;https://ytdlnis.org&quot;&gt;https://ytdlnis.org&lt;/a&gt;&lt;/p&gt;&lt;hr&gt;&lt;h1 align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/deniscerri/ytdlnis/main/fastlane/metadata/android/en-US/images/icon.png&quot; width=&quot;25%&quot; /&gt; &lt;br /&gt; YTDLnis &lt;/h1&gt; 
&lt;div align=&quot;center&quot;&gt;
  English &amp;nbsp;&amp;nbsp;| &amp;nbsp;&amp;nbsp; 
 &lt;a href=&quot;https://github.com/deniscerri/ytdlnis/raw/main/README-sq.md&quot;&gt;Shqip&lt;/a&gt; &amp;nbsp;&amp;nbsp;| &amp;nbsp;&amp;nbsp; 
 &lt;a href=&quot;https://github.com/deniscerri/ytdlnis/raw/main/README-az.md&quot;&gt;Azərbaycanca&lt;/a&gt; &amp;nbsp;&amp;nbsp;| &amp;nbsp;&amp;nbsp; 
 &lt;a href=&quot;https://github.com/deniscerri/ytdlnis/raw/main/README-tr.md&quot;&gt;Türkçe&lt;/a&gt; &amp;nbsp;&amp;nbsp;| &amp;nbsp;&amp;nbsp; 
 &lt;a href=&quot;https://github.com/deniscerri/ytdlnis/raw/main/README-id.md&quot;&gt;Indonesia&lt;/a&gt; &amp;nbsp;&amp;nbsp;| &amp;nbsp;&amp;nbsp; 
 &lt;a href=&quot;https://github.com/deniscerri/ytdlnis/raw/main/README-pt.md&quot;&gt;Português&lt;/a&gt; &amp;nbsp;&amp;nbsp;| &amp;nbsp;&amp;nbsp; 
 &lt;a href=&quot;https://github.com/deniscerri/ytdlnis/raw/main/README-es.md&quot;&gt;Español&lt;/a&gt; &amp;nbsp;&amp;nbsp;| &amp;nbsp;&amp;nbsp; 
 &lt;a href=&quot;https://github.com/deniscerri/ytdlnis/raw/main/README-ja.md&quot;&gt;Japanese&lt;/a&gt; &amp;nbsp;&amp;nbsp;| &amp;nbsp;&amp;nbsp; 
 &lt;a href=&quot;https://github.com/deniscerri/ytdlnis/raw/main/README-zh_CN.md&quot;&gt;简体中文&lt;/a&gt; &amp;nbsp;&amp;nbsp;| &amp;nbsp;&amp;nbsp; 
 &lt;a href=&quot;https://github.com/deniscerri/ytdlnis/raw/main/README-ro.md&quot;&gt;Română&lt;/a&gt; &amp;nbsp;&amp;nbsp;| &amp;nbsp;&amp;nbsp; 
 &lt;a href=&quot;https://github.com/deniscerri/ytdlnis/raw/main/README-ar.md&quot;&gt;العربية&lt;/a&gt; &amp;nbsp;&amp;nbsp;| &amp;nbsp;&amp;nbsp; 
 &lt;a href=&quot;https://github.com/deniscerri/ytdlnis/raw/main/README-ru.md&quot;&gt;Русский&lt;/a&gt; 
&lt;/div&gt; 
&lt;h3 align=&quot;center&quot;&gt; YTDLnis is a free and open source video/audio downloader using yt-dlp for Android 7.0 and above. &lt;/h3&gt; 
&lt;h4 align=&quot;center&quot;&gt; Created by Denis Çerri &lt;/h4&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;p&gt;&lt;a href=&quot;https://github.com/deniscerri/ytdlnis/releases/latest&quot;&gt;&lt;img src=&quot;https://custom-icon-badges.herokuapp.com/badge/Download-blue?style=for-the-badge&amp;amp;logo=download&amp;amp;logoColor=white&quot; alt=&quot;GitHub Releases&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://f-droid.org/en/packages/com.deniscerri.ytdl&quot;&gt;&lt;img src=&quot;https://custom-icon-badges.herokuapp.com/badge/FDroid-violet?style=for-the-badge&amp;amp;logo=download&amp;amp;logoColor=white&quot; alt=&quot;F-Droid&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://apt.izzysoft.de/packages/com.deniscerri.ytdl&quot;&gt;&lt;img src=&quot;https://custom-icon-badges.herokuapp.com/badge/IzzyOnDroid%20Repo-red?style=for-the-badge&amp;amp;logo=download&amp;amp;logoColor=white&quot; alt=&quot;IzzyOnDroid repository&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://ytdlnis.en.uptodown.com/android/download&quot;&gt;&lt;img src=&quot;https://custom-icon-badges.herokuapp.com/badge/UpToDown-green?style=for-the-badge&amp;amp;logo=download&amp;amp;logoColor=white&quot; alt=&quot;Uptodown&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;img src=&quot;https://github.com/deniscerri/ytdlnis/actions/workflows/android.yml/badge.svg?branch=main&amp;amp;event=pull&quot; alt=&quot;CI&quot; /&gt; &lt;a href=&quot;https://github.com/deniscerri/ytdlnis/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/release/deniscerri/ytdlnis.svg?maxAge=3600&amp;amp;include_prereleases&amp;amp;label=preview&quot; alt=&quot;Preview release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/deniscerri/ytdlnis/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/downloads/deniscerri/ytdlnis/total?style=flat-square&quot; alt=&quot;Downloads&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://hosted.weblate.org/engage/ytdlnis/?utm_source=widget&quot;&gt;&lt;img src=&quot;https://hosted.weblate.org/widgets/ytdlnis/-/svg-badge.svg?sanitize=true&quot; alt=&quot;Translation status&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/WW3KYWxAPm&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Discord-YTDLnis-blueviolet?style=flat-square&amp;amp;logo=discord&quot; alt=&quot;community&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://t.me/ytdlnis&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Telegram-YTDLnis-blue?style=flat-square&amp;amp;logo=telegram&quot; alt=&quot;community&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://t.me/ytdlnis_updates&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Telegram-Updates-red?style=flat-square&amp;amp;logo=telegram&quot; alt=&quot;community&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://ytdlnis.org&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Website-orange?style=flat-square&amp;amp;logo=youtube&quot; alt=&quot;website&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;https://img.shields.io/github/sponsors/deniscerri?label=Sponsor&amp;amp;logo=GitHub&quot; alt=&quot;GitHub Sponsor&quot; /&gt;&lt;/p&gt; 
 &lt;h3&gt;Only the links above are the only trusted sources of YTDLnis. Everything else is not related to me.&lt;/h3&gt; 
&lt;/div&gt; 
&lt;h2&gt;💡 Features:&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;Download audio/video files from more than &lt;a href=&quot;https://github.com/yt-dlp/yt-dlp/raw/master/supportedsites.md&quot;&gt;1000 websites&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Process playlists 
  &lt;ul&gt; 
   &lt;li&gt;Edit every playlist item separately just like in a normal download item&lt;/li&gt; 
   &lt;li&gt;Select a common format for all items and/or select multiple audio formats in case you are downloading them as a video&lt;/li&gt; 
   &lt;li&gt;Select a download path for all items&lt;/li&gt; 
   &lt;li&gt;Select a filename template for all items&lt;/li&gt; 
   &lt;li&gt;Batch update download type to audio/video/custom command in one click&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Queue downloads and schedule them by date and time 
  &lt;ul&gt; 
   &lt;li&gt;You can also schedule multiple items at the same time&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Download multiple items at the same time&lt;/li&gt; 
 &lt;li&gt;Use custom commands and templates or use yt-dlp with the built-in terminal 
  &lt;ul&gt; 
   &lt;li&gt;You can backup and restore templates so you can share them with your buddies&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Supports cookies. Log in with your accounts and download private/unavailable videos, unlock premium formats etc.&lt;/li&gt; 
 &lt;li&gt;Cut videos based on timestamps and video chapters (experimental yt-dlp feature) 
  &lt;ul&gt; 
   &lt;li&gt;You can make unlimited cuts&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Remove SponsorBlock elements from downloaded items 
  &lt;ul&gt; 
   &lt;li&gt;Embed them as a chapters in your video&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Embed subtitles/metadata/chapters etc&lt;/li&gt; 
 &lt;li&gt;Modify metadata such as title and author&lt;/li&gt; 
 &lt;li&gt;Split item into separate files depending on its chapters&lt;/li&gt; 
 &lt;li&gt;Select different download formats&lt;/li&gt; 
 &lt;li&gt;Bottom card right from the share menu, no need to open the app 
  &lt;ul&gt; 
   &lt;li&gt;You can create a txt file and fill it with links/playlists/search queries separate by a new line and the app will process them&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Search or insert a link from the app 
  &lt;ul&gt; 
   &lt;li&gt;You can stack searches so you can process them at the same time&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Log downloads in case of problems&lt;/li&gt; 
 &lt;li&gt;Re-download cancelled or failed downloads 
  &lt;ul&gt; 
   &lt;li&gt;You can use gestures to swipe left to redownload and right to delete&lt;/li&gt; 
   &lt;li&gt;You can long click the redownload button in the details sheet to show the download card for more functionality&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Incognito mode when you don&#39;t want to save a download history or logs&lt;/li&gt; 
 &lt;li&gt;Quick download mode 
  &lt;ul&gt; 
   &lt;li&gt;Download immediately without having to wait for data to process. Turn off the bottom card and it will instantly start&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Open / share downloaded files right from the finished notification&lt;/li&gt; 
 &lt;li&gt;Most yt-dlp features are implemented, suggestions are welcome&lt;/li&gt; 
 &lt;li&gt;Material You interface&lt;/li&gt; 
 &lt;li&gt;Theming options&lt;/li&gt; 
 &lt;li&gt;Backup and restore features&lt;/li&gt; 
 &lt;li&gt;MVVM architecture with WorkManager&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;🧩 Plugin Support&lt;/h2&gt; 
&lt;p&gt;YTDLnis orchestrates plugins so users can freely upgrade and downgrade components such as:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Python&lt;/li&gt; 
 &lt;li&gt;JS Runtimes (NodeJS, Deno)&lt;/li&gt; 
 &lt;li&gt;FFmpeg&lt;/li&gt; 
 &lt;li&gt;Aria2c&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;You can install ytdlnis packages from this repository &lt;a href=&quot;https://github.com/deniscerri/ytdlnis-packages/&quot;&gt;ytdlnis-packages&lt;/a&gt; or through the updating section in the application. &lt;br /&gt;For more information refer to the repo&#39;s README.&lt;/p&gt; 
&lt;h2&gt;📲 Screenshots&lt;/h2&gt; 
&lt;div&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/deniscerri/ytdlnis/main/fastlane/metadata/android/en-US/images/phoneScreenshots/01.png&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/deniscerri/ytdlnis/main/fastlane/metadata/android/en-US/images/phoneScreenshots/02.png&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/deniscerri/ytdlnis/main/fastlane/metadata/android/en-US/images/phoneScreenshots/03.png&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/deniscerri/ytdlnis/main/fastlane/metadata/android/en-US/images/phoneScreenshots/04.png&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/deniscerri/ytdlnis/main/fastlane/metadata/android/en-US/images/phoneScreenshots/05.png&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/deniscerri/ytdlnis/main/fastlane/metadata/android/en-US/images/phoneScreenshots/06.png&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/deniscerri/ytdlnis/main/fastlane/metadata/android/en-US/images/phoneScreenshots/07.png&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/deniscerri/ytdlnis/main/fastlane/metadata/android/en-US/images/phoneScreenshots/08.png&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/deniscerri/ytdlnis/main/fastlane/metadata/android/en-US/images/phoneScreenshots/09.png&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/deniscerri/ytdlnis/main/fastlane/metadata/android/en-US/images/phoneScreenshots/10.png&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/deniscerri/ytdlnis/main/fastlane/metadata/android/en-US/images/phoneScreenshots/11.png&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/deniscerri/ytdlnis/main/fastlane/metadata/android/en-US/images/phoneScreenshots/12.png&quot; width=&quot;30%&quot; /&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/deniscerri/ytdlnis/main/fastlane/metadata/android/en-US/images/phoneScreenshots/13.png&quot; width=&quot;90%&quot; /&gt; 
&lt;/div&gt; 
&lt;h2&gt;💬 Contact&lt;/h2&gt; 
&lt;p&gt;Join our &lt;a href=&quot;https://discord.gg/WW3KYWxAPm&quot;&gt;Discord&lt;/a&gt; or &lt;a href=&quot;https://t.me/ytdlnis&quot;&gt;Telegram channel&lt;/a&gt; for announcements, discussion and releases.&lt;/p&gt; 
&lt;h2&gt;😇 Contributing&lt;/h2&gt; 
&lt;p&gt;Please read the &lt;a href=&quot;https://raw.githubusercontent.com/deniscerri/ytdlnis/main/CONTRIBUTING.MD&quot;&gt;contributing&lt;/a&gt; section if you would like to contribute.&lt;/p&gt; 
&lt;h2&gt;📝 Help translate on Weblate&lt;/h2&gt; 
&lt;a href=&quot;https://hosted.weblate.org/engage/ytdlnis/&quot;&gt; &lt;img src=&quot;https://hosted.weblate.org/widgets/ytdlnis/-/strings/open-graph.png&quot; alt=&quot;Translation status&quot; /&gt; &lt;/a&gt; 
&lt;a href=&quot;https://hosted.weblate.org/engage/ytdlnis/&quot;&gt; &lt;img src=&quot;https://hosted.weblate.org/widgets/ytdlnis/-/multi-auto.svg?sanitize=true&quot; alt=&quot;Translation status&quot; /&gt; &lt;/a&gt; 
&lt;h2&gt;🔑 Connect with third-party apps using the package name&lt;/h2&gt; 
&lt;p&gt;The app&#39;s package name is &quot;com.deniscerri.ytdl&quot;.&lt;/p&gt; 
&lt;h2&gt;🔍 Verify application signature&lt;/h2&gt; 
&lt;p&gt;The app should contain the signature below. The github workflow action uses it, and the releases are based on it to make it a reproducible build. If the signature is different, your third party distributor has modified the application. Please use the app with the original signature.&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;Signer #1 certificate DN: CN=Denis Cerri, OU=Personal, O=Personal, L=Albania, ST=Albania, C=AL
Signer #1 certificate SHA-256 digest: 263645cb5272eb290759fe1f59149ae24df6ce171e9f6666eead981d3fc64c95
Signer #1 certificate SHA-1 digest: 2fec9c2fcef68d29a60857e185c795fec5f56fb6
Signer #1 certificate MD5 digest: 429d0c6315d2f99650f66cc44cf5a794
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;🤖 Connect with third-party apps using intents&lt;/h2&gt; 
&lt;p&gt;You can use intents to push commands to the app to run downloads without user interaction. Accepted variables:&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;TYPE&lt;/b&gt; -&amp;gt; it can be: audio,video,command &lt;br /&gt; &lt;b&gt;BACKGROUND&lt;/b&gt; -&amp;gt; it can be: true,false. If its true the app won&#39;t show the download card no matter what and run the download in the background &lt;br /&gt;&lt;/p&gt; 
&lt;h3&gt;An example of downloading an audio item in the background with Tasker&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Create Send Intent task&lt;/li&gt; 
 &lt;li&gt;Action: android.intent.action.SEND&lt;/li&gt; 
 &lt;li&gt;Cat: Default&lt;/li&gt; 
 &lt;li&gt;Mime Type: text/*&lt;/li&gt; 
 &lt;li&gt;Extra: android.intent.extra.TEXT:url (instead of &quot;url&quot; write the URL of the video you want to download)&lt;/li&gt; 
 &lt;li&gt;Extra: TYPE:audio&lt;/li&gt; 
 &lt;li&gt;Extra: BACKGROUND:true&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;📄 License&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/deniscerri/ytdlnis/raw/main/LICENSE&quot;&gt;GNU GPL v3.0&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Except for the source code licensed under the GPLv3 license, all other parties are prohibited from using the &quot;YTDLnis&quot; name as a downloader app, and the same is true for its derivatives. Derivatives include but are not limited to forks and unofficial builds.&lt;/p&gt; 
&lt;h2&gt;😁 Donate&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://www.buymeacoffee.com/deniscerri&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/WSTxda/WSTxda/main/images/BMC.svg?sanitize=true&quot; alt=&quot;Donate with BMC&quot; height=&quot;80&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;🙏 Thanks&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/decipher3114&quot;&gt;decipher3114&lt;/a&gt; for the app&#39;s icon&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/yausername/dvd&quot;&gt;dvd&lt;/a&gt; for being an example youtubedl-android implementation&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/JunkFood02/Seal&quot;&gt;seal&lt;/a&gt; for certain design elements and features I wanted to have in this app when I started developing it&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/yausername/youtubedl-android&quot;&gt;youtubedl-android&lt;/a&gt; for porting yt-dlp to Android&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/yt-dlp/yt-dlp&quot;&gt;yt-dlp&lt;/a&gt; and its contributors for making this tool possible. Without it this app wouldn&#39;t exist&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;and to a lot of other people, such as contributors.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/82c319e442fba29423ce4151a1b70530ea59b179545f964c07d54478d77671cb/deniscerri/ytdlnis" medium="image" />
      
    </item>
    
    <item>
      <title>wangzhishou/OneBox</title>
      <link>https://github.com/wangzhishou/OneBox</link>
      <description>&lt;p&gt;A free AI agent &amp; toolbox for Android | 一站式安卓 AI 智能体 &amp; 工具箱&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://mshibanami.github.io/GitHubTrendingRSS/assets/icons/link.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;link&quot; style=&quot;margin: 0 8px 0 0; padding: 0; display: inline-block; vertical-align: middle;&quot; /&gt;&lt;a href=&quot;https://www.oneboxable.com&quot;&gt;https://www.oneboxable.com&lt;/a&gt;&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/icon.webp&quot; width=&quot;96&quot; alt=&quot;OneBox icon&quot; /&gt; 
 &lt;h1&gt;OneBox (万宝盒)&lt;/h1&gt; 
 &lt;p&gt;&lt;strong&gt;English&lt;/strong&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/README.zh-CN.md&quot;&gt;简体中文&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;A free AI agent &amp;amp; toolbox for Android: say what you need and the built-in agent drives 90+ in-app tools to get it done — plus image &amp;amp; document tools, productivity and daily utilities.&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-Apache%202.0-blue.svg?sanitize=true&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.shifenmiao.app&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Google%20Play-OneBox-green?logo=google-play&quot; alt=&quot;Google Play&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://f-droid.org/packages/com.shifenmiao.app&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/F--Droid-in%20review-blue?logo=f-droid&quot; alt=&quot;F-Droid&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://ko-fi.com/wangzhishou&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Ko--fi-donate-ff5e5b?logo=ko-fi&amp;amp;logoColor=white&quot; alt=&quot;Ko-fi&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;h2&gt;Screenshots&lt;/h2&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/en/01.webp?v=3&quot; width=&quot;180&quot; alt=&quot;90+ tools in one app&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/en/02.webp?v=3&quot; width=&quot;180&quot; alt=&quot;Say the word, AI does it&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/en/03.webp?v=3&quot; width=&quot;180&quot; alt=&quot;Bookkeeping by voice&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;https://youtube.com/shorts/eGkwoe3puSw&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/intro-en.jpg?v=2&quot; width=&quot;180&quot; alt=&quot;Intro video (YouTube Shorts)&quot; /&gt;&lt;/a&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt; 
&lt;h2&gt;Download&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;International&lt;/strong&gt;: &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.shifenmiao.app&quot;&gt;Google Play&lt;/a&gt; · &lt;a href=&quot;https://www.oneboxable.com&quot;&gt;Official site&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;中国&lt;/strong&gt;: &lt;a href=&quot;https://www.wanbaohe.com&quot;&gt;万宝盒官网&lt;/a&gt; · 小米 / 应用宝 / OPPO / vivo / 华为应用商店搜索「万宝盒」&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;AI Assistant: More Than Just Feature Count&lt;/h2&gt; 
&lt;p&gt;Plenty of toolbox apps are long on features. OneBox&#39;s built-in AI assistant saves you from hunting for tools and memorizing steps — just say what you want:&lt;/p&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&quot;Turn these images into a PDF.&quot; &quot;Log this bill screenshot into my ledger.&quot; &quot;Make me a to-do list.&quot; &quot;Look up today&#39;s stock prices online.&quot;&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;p&gt;It understands, acts, and reports back — in one flow.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Bounded by its own permissions&lt;/strong&gt;: everything the agent does stays inside the app&#39;s own Android sandbox and declared permission set — it never touches contacts, SMS or call logs; local tools run entirely on-device, and only the conversation with your chosen model goes online.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;An agent that drives the tools&lt;/strong&gt;: the AI agent can invoke 90+ in-app local tools (PDF processing, image editing, file management, bookkeeping…), chaining multi-step tasks across tools — executed locally with per-tool timeouts and iteration limits.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Picture-in-picture robot, no more waiting around&lt;/strong&gt;: long agent task? Just leave the app — with an active AI session it drops into system picture-in-picture, where the mini-window robot keeps you posted on progress and one tap brings you back to the result. Native PiP, zero permissions required.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;One chat, many models&lt;/strong&gt;: talk to multiple mainstream LLMs from a single entry, with custom AI engines and prompt management.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Bring your own key — use it for free&lt;/strong&gt;: drop in any OpenAI-compatible API key (including free tiers like Gemini or OpenRouter&#39;s free models) and the full assistant + agent is yours at zero cost. Custom engines, endpoints and tokens are fully open in the Google Play build and in builds from this repo.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Transparent by source&lt;/strong&gt;: every line is public — how data is processed locally and what never leaves the device is something you can verify, not a promise you have to trust.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Features&lt;/h2&gt; 
&lt;p&gt;OneBox ships &lt;strong&gt;104 feature modules&lt;/strong&gt;. Local tools run entirely on-device; only the conversation with your chosen AI model goes online. The tables below list every module — names refer to the &lt;code&gt;feature/*&lt;/code&gt; directories in this repo.&lt;/p&gt; 
&lt;h3&gt;AI &amp;amp; Assistant&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/ai&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;AI Chat &amp;amp; Agent&lt;/td&gt; 
   &lt;td&gt;Multi-model chat, dual-model duels, prompt execution, and an agent that invokes in-app tools, with token stats&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/ai-image&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;AI Image&lt;/td&gt; 
   &lt;td&gt;Text-to-image generation, with share / copy / edit&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/ai-detect&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;AI Detector&lt;/td&gt; 
   &lt;td&gt;Check whether a text or an image is AI-generated&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/dsh-client&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;DSH Client&lt;/td&gt; 
   &lt;td&gt;Drive a &lt;a href=&quot;https://github.com/deepseek-ai/deepseek-harness&quot;&gt;DeepSeek Harness&lt;/a&gt; agent on your computer — scan-to-pair, end-to-end encrypted, LAN or cloud relay (computer side: &lt;a href=&quot;https://github.com/wangzhishou/onebox-dsh-bridge&quot;&gt;&lt;code&gt;onebox-dsh-bridge&lt;/code&gt;&lt;/a&gt;)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/visual-automation&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Visual Automation&lt;/td&gt; 
   &lt;td&gt;Feed screenshots to a multimodal model for screenshot-based UI automation&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Image Viewing &amp;amp; Editing&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/image-viewer&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Image Viewer&lt;/td&gt; 
   &lt;td&gt;Immersive viewer with swipe browsing, double-tap / pinch zoom (up to 5×), online image download&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/image-preview&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Image Preview&lt;/td&gt; 
   &lt;td&gt;Preview and manage images; the entry point to edit / crop / filter flows&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/single-edit&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Single Edit&lt;/td&gt; 
   &lt;td&gt;All-in-one editor: crop, filters, draw, curves, resize, format &amp;amp; quality, before/after compare&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/draw&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Draw&lt;/td&gt; 
   &lt;td&gt;Free-form canvas: pen / neon / highlighter / blur / pixelate / text / stickers / healing, shapes and flood fill&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/markup-layers&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Layers&lt;/td&gt; 
   &lt;td&gt;Layer-based creation: add / order / merge / blend / opacity, brushes, text, shapes, export settings&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/crop&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Crop&lt;/td&gt; 
   &lt;td&gt;Crop with rotation, free-corner crop, shaped outlines and aspect ratios&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/image-stitch&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Image Stitch&lt;/td&gt; 
   &lt;td&gt;Horizontal / vertical / grid stitching with alignment, spacing and fading edges&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/image-splitting&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Image Split&lt;/td&gt; 
   &lt;td&gt;Split one image into a rows × columns grid of tiles&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/image-stacking&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Image Stacking&lt;/td&gt; 
   &lt;td&gt;Overlay multiple images into a single composite&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/image-cutting&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Image Cut&lt;/td&gt; 
   &lt;td&gt;Precise cut by horizontal / vertical start–end percentages, with invert&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/compare&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Compare&lt;/td&gt; 
   &lt;td&gt;Side-by-side or overlay diff of two images, slider and pixel-level highlight&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/load-net-image&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Net Image Loader&lt;/td&gt; 
   &lt;td&gt;Paste a URL to parse, preview and download images from the page&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/pick-color&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Color Picker&lt;/td&gt; 
   &lt;td&gt;Tap / drag to pick pixel colors, with pan and zoom modes&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/collage-maker&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Collage Maker&lt;/td&gt; 
   &lt;td&gt;Collages of up to 10 photos with templates, spacing, rounded corners, backgrounds&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/text-card&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Text Cards&lt;/td&gt; 
   &lt;td&gt;Turn quotes into beautiful cards with paper backgrounds, layers and AI illustrations&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Filters &amp;amp; Effects&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/filters&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Filters&lt;/td&gt; 
   &lt;td&gt;100+ filters (blur, color, artistic, edge, warp) with mask-based partial application&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/gradient-maker&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Gradient Maker&lt;/td&gt; 
   &lt;td&gt;Pure / overlay / mesh gradients with configurable color stops&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/mesh-gradients&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Mesh Gradients&lt;/td&gt; 
   &lt;td&gt;Browse and download mesh-gradient packs, jump into the editor&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/noise-generation&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Noise Textures&lt;/td&gt; 
   &lt;td&gt;Procedural noise via FastNoiseLite (OpenSimplex2 / Perlin / Value…)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/ascii-art&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;ASCII Art&lt;/td&gt; 
   &lt;td&gt;Convert images into character-based text art&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/color-tools&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Color Tools&lt;/td&gt; 
   &lt;td&gt;Color info (HEX / RGB / HSL), harmonies, shades / gradients, histogram analysis&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/palette-tools&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Palette Extract&lt;/td&gt; 
   &lt;td&gt;Extract palettes from images, Material You style, custom palette export&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Conversion &amp;amp; Compression&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/format-conversion&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Format Convert&lt;/td&gt; 
   &lt;td&gt;JPEG / PNG / WebP conversion with quality control, EXIF retention, batch processing&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/resize-convert&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Resize &amp;amp; Convert&lt;/td&gt; 
   &lt;td&gt;Resize + convert in one pass: width / height / preset / scale modes, batch&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/weight-resize&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Compress by Size&lt;/td&gt; 
   &lt;td&gt;Compress to a target file size, with before/after size comparison&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/limits-resize&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Limit Resize&lt;/td&gt; 
   &lt;td&gt;Scale within max width / height; skip / re-encode / scale modes&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/gif-tools&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;GIF Tools&lt;/td&gt; 
   &lt;td&gt;Multi-image GIFs with frame rate, repeat count, size and per-frame preview&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/apng-tools&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;APNG Tools&lt;/td&gt; 
   &lt;td&gt;Multi-image APNGs with frame delay and repeat count&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/webp-tools&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;WebP Tools&lt;/td&gt; 
   &lt;td&gt;Multi-image animated WebP with frame delay and repeat count&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/svg-maker&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;SVG Maker&lt;/td&gt; 
   &lt;td&gt;Convert bitmaps into SVG vector graphics&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/zip&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;ZIP Archive&lt;/td&gt; 
   &lt;td&gt;Pack images into a ZIP archive&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Metadata &amp;amp; Encoding&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/edit-exif&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Edit EXIF&lt;/td&gt; 
   &lt;td&gt;View and modify camera model, capture time, GPS, copyright…&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/delete-exif&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Delete EXIF&lt;/td&gt; 
   &lt;td&gt;Batch-strip EXIF for privacy, or add new EXIF data&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/base64-tools&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Base64 Tools&lt;/td&gt; 
   &lt;td&gt;Two-way image ↔ Base64 conversion&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/checksum-tools&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Checksum Tools&lt;/td&gt; 
   &lt;td&gt;Compute and compare file / text hashes with multiple algorithms&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Documents &amp;amp; Text&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/pdf-tools&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;PDF Toolbox&lt;/td&gt; 
   &lt;td&gt;Preview, image → PDF, PDF → image, merge, split, compress, rotate, page management&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/ocr-document&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;OCR&lt;/td&gt; 
   &lt;td&gt;OCR recognition and format conversion with task tracking, preview and export&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/document-scanner&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Document Scanner&lt;/td&gt; 
   &lt;td&gt;Scan paper documents into images / PDF&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/markdown-edit&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Markdown Editor&lt;/td&gt; 
   &lt;td&gt;WYSIWYG Markdown editing, export to PDF&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/code-editor&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Code Editor&lt;/td&gt; 
   &lt;td&gt;Syntax highlighting, file I/O and history&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Watermark &amp;amp; ID Photo&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/watermarking&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Watermark&lt;/td&gt; 
   &lt;td&gt;Text / image / steganographic / stamp watermarks with position, rotation, opacity, tiling&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/camera-watermark&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Camera Watermark&lt;/td&gt; 
   &lt;td&gt;Stamp photos with time / location / device watermarks&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/id-photo&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;ID Photo&lt;/td&gt; 
   &lt;td&gt;Standard ID-photo sizes, background replacement, batch export&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/wallpapers-export&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Wallpaper Export&lt;/td&gt; 
   &lt;td&gt;Read and save the system and lock-screen wallpapers&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Scanning &amp;amp; QR&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/scan-qr-code&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;QR Tools&lt;/td&gt; 
   &lt;td&gt;Scan (camera / image) and generate QR &amp;amp; barcodes: text, URL, WiFi, contacts…&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Measurement &amp;amp; Utilities&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/unit-converter&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Unit Converter&lt;/td&gt; 
   &lt;td&gt;Length, weight, temperature, area, volume, speed, time and more&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/compass&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Compass&lt;/td&gt; 
   &lt;td&gt;Compass &amp;amp; luopan dials with bearings, magnetic declination and calibration hints&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/measurement&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Ruler&lt;/td&gt; 
   &lt;td&gt;On-screen ruler and protractor, cm / inch&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/altitude&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Altitude&lt;/td&gt; 
   &lt;td&gt;GPS altitude with history&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/speed-test&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Speed Test&lt;/td&gt; 
   &lt;td&gt;Download / upload speed with a gauge animation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/calendar&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Calendar&lt;/td&gt; 
   &lt;td&gt;Calendar with Chinese almanac, bazi chart and lunar conversion&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/schedule&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Schedule&lt;/td&gt; 
   &lt;td&gt;Events with system-calendar sync and reminders&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/teleprompter&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Teleprompter&lt;/td&gt; 
   &lt;td&gt;Script editing + fullscreen playback with speed / font / color controls&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/dead-pixel-test&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Dead Pixel Test&lt;/td&gt; 
   &lt;td&gt;Fullscreen solid colors with color switching and grid overlay&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/marquee&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Marquee&lt;/td&gt; 
   &lt;td&gt;Fullscreen scrolling text, LED style and subtitle modes&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/audio-cover-extractor&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Cover Extractor&lt;/td&gt; 
   &lt;td&gt;Extract album covers from audio files&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Security &amp;amp; Encryption&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/cipher&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Image Cipher&lt;/td&gt; 
   &lt;td&gt;Encrypt / decrypt images with passwords&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/password-vault&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Password Vault&lt;/td&gt; 
   &lt;td&gt;Local encrypted account &amp;amp; password storage with categories and search&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Life &amp;amp; Productivity&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/bookkeeping&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Bookkeeping&lt;/td&gt; 
   &lt;td&gt;Income / expense tracking with charts — the AI can log bills for you&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/marktodo&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;To-do&lt;/td&gt; 
   &lt;td&gt;Topic-based tasks with tags, priorities, due dates and filters&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/habit-tracker&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Habit Tracker&lt;/td&gt; 
   &lt;td&gt;Daily check-ins with reminders, streaks and completion stats&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/household-items&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Item Tracker&lt;/td&gt; 
   &lt;td&gt;Track where things are stored, expiry dates and notes; AI can log &amp;amp; query&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/period&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Period Tracker&lt;/td&gt; 
   &lt;td&gt;Log periods, flow, symptoms and mood; predicts the next cycle&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/record-center&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Health Records&lt;/td&gt; 
   &lt;td&gt;12 metric types (blood pressure, weight, glucose…), trends and AI insights&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/loan-calculator&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Loan Calculator&lt;/td&gt; 
   &lt;td&gt;Equal-payment / equal-principal loans: monthly payment, total interest, schedule&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/lifetime&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Lifetime&lt;/td&gt; 
   &lt;td&gt;A timeline of life events and milestones&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/decision-wheel&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Decision Wheel&lt;/td&gt; 
   &lt;td&gt;Custom random spinner to help you choose&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/blessing-wall&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Blessing Wall&lt;/td&gt; 
   &lt;td&gt;Greeting cards with background music and sharing&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/poem&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Chinese Poetry&lt;/td&gt; 
   &lt;td&gt;Random poems, keyword search, AI interpretation, history &amp;amp; favorites&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/iching-divination&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;I Ching&lt;/td&gt; 
   &lt;td&gt;Shake to cast a hexagram, with changing lines and AI interpretation&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Games&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/game2048&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;2048&lt;/td&gt; 
   &lt;td&gt;The classic sliding-tile merge game&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/xiangqi&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Chinese Chess&lt;/td&gt; 
   &lt;td&gt;Vs AI, online play, game library, endgame analysis&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/gomoku&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Gomoku&lt;/td&gt; 
   &lt;td&gt;15×15 board, vs LLM, AI battles, game library, review&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/chess&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Chess&lt;/td&gt; 
   &lt;td&gt;Full rules (castling / en passant / promotion), vs LLM, game library, review&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/minesweeper&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Minesweeper&lt;/td&gt; 
   &lt;td&gt;Multiple difficulties, timer, flags&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/sudoku&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Sudoku&lt;/td&gt; 
   &lt;td&gt;Three difficulties, hints, undo, timer, stats&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/survive30s&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Survive 30s&lt;/td&gt; 
   &lt;td&gt;Dodge obstacles for 30 seconds&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/dice-roller&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Dice Roller&lt;/td&gt; 
   &lt;td&gt;D4 / D6 / D8 / D10 / D12 / D20 dice&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Content &amp;amp; Community&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/online&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Discover&lt;/td&gt; 
   &lt;td&gt;Content square aggregating recommended apps, notes and mini-programs&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/blog&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Blog &amp;amp; Feedback&lt;/td&gt; 
   &lt;td&gt;Read articles and send feedback&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/profile&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Profile&lt;/td&gt; 
   &lt;td&gt;VIP level, data backup &amp;amp; restore, about&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/notification&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Notifications&lt;/td&gt; 
   &lt;td&gt;Message center with unread badges&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/ad-watch&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Watch &amp;amp; Earn&lt;/td&gt; 
   &lt;td&gt;Watch rewarded ads to earn points, with a daily cap&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Files &amp;amp; Transfer&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/file-browser&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;File Browser&lt;/td&gt; 
   &lt;td&gt;Directory navigation, search, sort, multi-select operations&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/file-transfer&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;File Transfer&lt;/td&gt; 
   &lt;td&gt;LAN file transfer with QR pairing and encryption&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/cloud-storage&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Cloud Storage&lt;/td&gt; 
   &lt;td&gt;Browse, upload, download and delete cloud files&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/media-picker&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Media Picker&lt;/td&gt; 
   &lt;td&gt;Image / video picking shared by the other tools&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;App Shell &amp;amp; System&lt;/h3&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Module&lt;/th&gt; 
   &lt;th&gt;Feature&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/app&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;App Shell&lt;/td&gt; 
   &lt;td&gt;Entry navigation with adaptive layout: drawer + bottom bar in portrait, navigation rail in landscape&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/settings&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Settings&lt;/td&gt; 
   &lt;td&gt;AI engines, themes, display, TTS, system prompts and more&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/common&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Common&lt;/td&gt; 
   &lt;td&gt;Shared UI base, data sync and category management&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/search&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Global Search&lt;/td&gt; 
   &lt;td&gt;Search features, content and messages, with quick navigation&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/quick-tiles&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Quick Tiles&lt;/td&gt; 
   &lt;td&gt;Quick-settings tiles: screenshot, color picker, scan…&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/webview&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Web Browser&lt;/td&gt; 
   &lt;td&gt;Built-in browser with tabs, bookmarks and history&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/login&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Sign In&lt;/td&gt; 
   &lt;td&gt;Auth flows and user agreement&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/wechat&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;WeChat Integration&lt;/td&gt; 
   &lt;td&gt;WeChat SDK sign-in and payment callbacks&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/demo&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Demo&lt;/td&gt; 
   &lt;td&gt;Developer component showcase grid&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/libraries-info&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Open-source Licenses&lt;/td&gt; 
   &lt;td&gt;License list of all third-party libraries&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/library-details&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;License Details&lt;/td&gt; 
   &lt;td&gt;Per-library license details&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/boardgame&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Board Game UI Kit&lt;/td&gt; 
   &lt;td&gt;Shared board-game UI scaffolding reused by gomoku / chess&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Tech Stack&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;UI&lt;/strong&gt;: Jetpack Compose, Material 3&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Navigation / components&lt;/strong&gt;: Decompose (&lt;code&gt;StackNavigation&lt;/code&gt;, &lt;code&gt;childStack&lt;/code&gt;, retained components)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;DI&lt;/strong&gt;: Hilt&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Code generation&lt;/strong&gt;: KSP&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Build conventions&lt;/strong&gt;: custom Gradle convention plugins in &lt;code&gt;build-logic/convention&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Persistence&lt;/strong&gt;: SQLite / Room (&lt;code&gt;AppDatabase&lt;/code&gt;), MMKV (per-module)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Network &amp;amp; images&lt;/strong&gt;: Retrofit / OkHttp, Coil&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Repository Structure&lt;/h2&gt; 
&lt;table&gt; 
 &lt;thead&gt; 
  &lt;tr&gt; 
   &lt;th&gt;Path&lt;/th&gt; 
   &lt;th&gt;Description&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;app/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Application shell and packaging entry; &lt;code&gt;AppActivity.kt&lt;/code&gt; is the main Activity&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/app/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Top-level shell, root navigation, global CompositionLocals, screen wiring, adaptive layout&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/*&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Business / tool feature modules&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/ai/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;AI chat, agent, tool-calling chain, AI image features&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/common/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Shared business logic, AI engine catalog/sync&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;feature/settings/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Settings, themes, AI engine &amp;amp; working-model configuration&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;core/*&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Foundation layers: UI, domain, data, database, theme, settings, etc.&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;libs/*&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;In-project reusable libraries&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;build-logic/convention/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Custom Gradle convention plugins&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;web/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Web frontend source of the file-transfer module (esbuild project)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;code&gt;fastlane/&lt;/code&gt;&lt;/td&gt; 
   &lt;td&gt;Google Play listing copy &amp;amp; assets (fastlane supply format)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;Architecture Entry Points&lt;/h2&gt; 
&lt;p&gt;Paths beginning with &lt;code&gt;com.t8rin.*&lt;/code&gt; are inherited from upstream ImageToolbox and left unchanged on purpose, so the diff against upstream stays reviewable. Everything written for this project lives under &lt;code&gt;com.wanbaohe.*&lt;/code&gt; / &lt;code&gt;com.shifenmiao.*&lt;/code&gt;.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;App entry&lt;/strong&gt;: &lt;code&gt;app/src/main/java/com/shifenmiao/app/AppActivity.kt&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Runtime navigation root&lt;/strong&gt;: &lt;code&gt;feature/app/src/main/java/com/t8rin/imagetoolbox/feature/root/presentation/screenLogic/RootComponent.kt&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Route definitions&lt;/strong&gt;: &lt;code&gt;core/ui/src/main/kotlin/com/t8rin/imagetoolbox/core/ui/utils/navigation/Screen.kt&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Child factory wiring&lt;/strong&gt;: &lt;code&gt;feature/app/.../navigation/ChildProvider.kt&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Child composable wrappers&lt;/strong&gt;: &lt;code&gt;feature/app/.../navigation/NavigationChild.kt&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Top-level shell selector&lt;/strong&gt;: &lt;code&gt;feature/app/src/main/java/com/wanbaohe/app/screen/ScreenSelector.kt&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Adaptive navigation layout&lt;/strong&gt;: &lt;code&gt;feature/app/src/main/java/com/wanbaohe/app/navigation/AdaptiveNavigationLayout.kt&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Building from Source&lt;/h2&gt; 
&lt;h3&gt;Requirements&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Use the bundled &lt;strong&gt;Gradle Wrapper 9.7.0&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;JDK 17&lt;/strong&gt; (build-logic and CI target it)&lt;/li&gt; 
 &lt;li&gt;Android targets: &lt;strong&gt;Compile SDK 37 / Target SDK 37 / Min SDK 24&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;Toolchain: &lt;strong&gt;Kotlin 2.4.0 / AGP 9.3.1&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;When in doubt, &lt;code&gt;gradle/libs.versions.toml&lt;/code&gt; and &lt;code&gt;gradle/wrapper/gradle-wrapper.properties&lt;/code&gt; are the source of truth&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Clone&lt;/h3&gt; 
&lt;p&gt;The repository carries a lot of binary assets, so a full clone is large. For building, a shallow clone is enough:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone --depth=1 https://github.com/wangzhishou/OneBox.git
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Common Commands&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./gradlew :app:assembleGoogleArm64Debug       # single-variant debug APK (google = default channel)
./gradlew tasks --group=assemble              # list all assemble tasks
./gradlew :app:tasks
&lt;/code&gt;&lt;/pre&gt; 
&lt;h3&gt;Variants&lt;/h3&gt; 
&lt;p&gt;The &lt;code&gt;app&lt;/code&gt; module uses two flavor dimensions:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;app&lt;/code&gt;: &lt;code&gt;xiaomi&lt;/code&gt; / &lt;code&gt;yyb&lt;/code&gt; / &lt;code&gt;oppo&lt;/code&gt; / &lt;code&gt;vivo&lt;/code&gt; / &lt;code&gt;huawei&lt;/code&gt; / &lt;code&gt;onebox&lt;/code&gt; / &lt;code&gt;google&lt;/code&gt; / &lt;code&gt;foss&lt;/code&gt; (&lt;code&gt;foss&lt;/code&gt; is the fully-FOSS build: no GMS, Firebase, WeChat or Alipay SDKs; this is the variant CI verifies)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;abi&lt;/code&gt;: &lt;code&gt;arm64&lt;/code&gt; (64-bit only)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Build and verify with the &lt;code&gt;google&lt;/code&gt; (overseas / Play) flavor by default&lt;/strong&gt;; pick a domestic flavor only when it is actually needed. Task names combine the two dimensions, e.g.:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;:app:assembleGoogleArm64Debug&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;:app:assembleGoogleArm64Release&lt;/code&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;:app:assembleHuaweiArm64Debug&lt;/code&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;See &lt;code&gt;run.md&lt;/code&gt; for more command examples.&lt;/p&gt; 
&lt;h3&gt;Signing &amp;amp; API Keys (Optional)&lt;/h3&gt; 
&lt;p&gt;The project syncs and builds &lt;strong&gt;without any key files&lt;/strong&gt;:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;release signing falls back to placeholder values (not for production use)&lt;/li&gt; 
 &lt;li&gt;debug builds fall back to AGP&#39;s default debug signing&lt;/li&gt; 
 &lt;li&gt;third-party service keys (AI providers, Google Places, etc.) are empty and the corresponding features stay disabled&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;To customize, copy the root templates and fill in real values:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;keystore.properties.template&lt;/code&gt; → &lt;code&gt;keystore.properties&lt;/code&gt;: release signing + service keys&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;keystore-google.properties.template&lt;/code&gt; → &lt;code&gt;keystore-google.properties&lt;/code&gt;: dedicated signing for the google flavor&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Both target files are git-ignored; never commit real values.&lt;/p&gt; 
&lt;h3&gt;Multi-channel Release Builds&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;build_release.sh&lt;/code&gt; builds &lt;strong&gt;7 channels × 1 ABI (arm64, 64-bit only) = 7 release APKs&lt;/strong&gt; into &lt;code&gt;release/&lt;/code&gt; with a &lt;code&gt;release/manifest.txt&lt;/code&gt; summary. Examples:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./build_release.sh                                # all 7
./build_release.sh --channel xiaomi huawei        # selected channels
./build_release.sh --abi arm64                    # 64-bit only
./build_release.sh --no-offline --clean           # fetch deps online + clean first
./build_release.sh --skip-build                   # re-collect artifacts only
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;A real &lt;code&gt;keystore.properties&lt;/code&gt; is required for release packaging (the script exits early without it).&lt;/p&gt; 
&lt;h3&gt;CI Releases&lt;/h3&gt; 
&lt;p&gt;&lt;code&gt;.github/workflows/android.yml&lt;/code&gt; defines the tag-based release pipeline: Ubuntu runner, JDK 17, &lt;code&gt;assembleRelease&lt;/code&gt;, then APK signing and release upload.&lt;/p&gt; 
&lt;h3&gt;Update reminders &amp;amp; domestic distribution&lt;/h3&gt; 
&lt;p&gt;The &quot;Open Source Project&quot; row under &lt;em&gt;Profile → About&lt;/em&gt; shows the latest release (plus a tab badge on &lt;em&gt;Profile&lt;/em&gt; when a newer version exists). A startup dialog can be enabled from the remote config:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;&quot;appUpdate&quot;: { &quot;dialogEnabled&quot;: true, &quot;dialogForVersionBelow&quot;: 150, &quot;dialogCooldownHours&quot;: 24 }
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;The version source depends on the flavor: overseas (google / foss) reads GitHub Releases, the six domestic channels read the GitCode OpenAPI. GitCode mirrors only branches/tags/commits — &lt;strong&gt;not&lt;/strong&gt; releases — so domestic builds need an extra publish step:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export GITCODE_TOKEN=xxx          # https://gitcode.com/setting/token-classic
git push gitcode --tags           # the tag must exist: it is used as target_commitish
./scripts/publish_gitcode_release.py --tag 1.4.0 --dir release --abi arm64
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Tag pushes do this automatically: CI additionally builds the six domestic channels (arm64, appended via &lt;code&gt;matrix.include&lt;/code&gt;) and publishes them to GitCode — requires the &lt;code&gt;GITCODE_TOKEN&lt;/code&gt; secret and the tag being pushed to GitCode (the script uses the tag as &lt;code&gt;target_commitish&lt;/code&gt;). The GitHub Release keeps the overseas packages only. The GitCode repository has to be public, otherwise the anonymous API returns 403.&lt;/p&gt; 
&lt;h2&gt;AI / Agent Capabilities&lt;/h2&gt; 
&lt;p&gt;AI features are composed from several modules:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;feature/ai/&lt;/code&gt;: AI chat, agent loop, tool-call execution, interactive tool bridging&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;feature/common/&lt;/code&gt;: AI engine catalog, engine sync, shared managers&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;feature/settings/&lt;/code&gt;: AI engine, model and working-mode configuration UI&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The tool-calling chain is built on &lt;code&gt;ToolCallTaskManager&lt;/code&gt;, &lt;code&gt;AgentLoopExecutor&lt;/code&gt; and &lt;code&gt;AppDatabase&lt;/code&gt;.&lt;/p&gt; 
&lt;h2&gt;Security &amp;amp; Third-party Services&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;No production secrets in this repo&lt;/strong&gt;: payment (WeChat Pay / Alipay), AI provider and Google Places keys are injected via the optional &lt;code&gt;keystore.properties&lt;/code&gt; or kept server-side.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Backend domains and guest tokens are not in source&lt;/strong&gt;: API base URLs and read-only guest tokens are injected from &lt;code&gt;keystore.properties&lt;/code&gt; at build time, so builds from this repository never contact the production servers and hosted content stays empty. To enable connected features, point the app to your own backend (&lt;code&gt;core/r/**/UrlConstantsFlavor.kt&lt;/code&gt;).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;WeChat appId / WeCom corpId&lt;/strong&gt; are public identifiers; the WeChat platform verifies callers by package name + signature, so third-party builds cannot impersonate the official app.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Forks &amp;amp; redistribution&lt;/strong&gt;: change the &lt;code&gt;applicationId&lt;/code&gt; (&lt;code&gt;com.shifenmiao.app&lt;/code&gt; is taken), replace &lt;code&gt;app/src/google/assets/google-services.json&lt;/code&gt; with your own Firebase configuration, and point the app to your own backend (API domains in &lt;code&gt;core/r/**/UrlConstantsFlavor.kt&lt;/code&gt;).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Documentation&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;code&gt;run.md&lt;/code&gt;: build / install / lint commands&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;docs/modules.md&lt;/code&gt;: module catalog (Chinese)&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;CONTRIBUTING.md&lt;/code&gt;: setup, conventions, and what will not be merged&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;SECURITY.md&lt;/code&gt;: how to report a vulnerability privately, and what is deliberately public&lt;/li&gt; 
 &lt;li&gt;&lt;code&gt;docs/database-migrations.en.md&lt;/code&gt;: database migration rules (&lt;a href=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/docs/database-migrations.md&quot;&gt;中文&lt;/a&gt;)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Support the Project&lt;/h2&gt; 
&lt;p&gt;OneBox is built and maintained by a one-person company (OPC), with a limited budget for servers and AI resources. If it helps you:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;In-app donation&lt;/strong&gt;: in the app, go to Profile → Buy Me a Coffee (points-based)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Partnership &amp;amp; sponsorship&lt;/strong&gt;: AI providers, cloud vendors and partners willing to sponsor tokens or resources are very welcome — reach us at &lt;a href=&quot;mailto:support@oneboxable.com&quot;&gt;support@oneboxable.com&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Every bit of support turns directly into better features and a more stable service.&lt;/p&gt; 
&lt;h2&gt;Community &amp;amp; Feedback&lt;/h2&gt; 
&lt;p&gt;The same links are in the app under &lt;strong&gt;Profile → Join Community&lt;/strong&gt; (overseas builds show Discord / X / YouTube, domestic builds show the QQ and WeChat groups):&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Discord&lt;/strong&gt;: &lt;a href=&quot;https://discord.gg/7j4hEBYGWv&quot;&gt;discord.gg/7j4hEBYGWv&lt;/a&gt; — chat, show &amp;amp; tell, early builds&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;X (Twitter)&lt;/strong&gt;: &lt;a href=&quot;https://x.com/OneBoxAndroid&quot;&gt;@OneBoxAndroid&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;YouTube&lt;/strong&gt;: &lt;a href=&quot;https://www.youtube.com/@OneBoxAndroid&quot;&gt;@OneBoxAndroid&lt;/a&gt; — intro videos and feature demos&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Bug reports &amp;amp; feature requests&lt;/strong&gt;: &lt;a href=&quot;https://github.com/wangzhishou/OneBox/issues&quot;&gt;GitHub Issues&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Questions, ideas, show &amp;amp; tell&lt;/strong&gt;: &lt;a href=&quot;https://github.com/wangzhishou/OneBox/discussions&quot;&gt;GitHub Discussions&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Security problems&lt;/strong&gt;: report them privately, see &lt;a href=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/SECURITY.md&quot;&gt;SECURITY.md&lt;/a&gt; — please do not open a public issue&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;中文用户&lt;/strong&gt;:QQ 群 / 微信群见&lt;a href=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/README.zh-CN.md#%E4%BA%A4%E6%B5%81%E4%B8%8E%E5%8F%8D%E9%A6%88&quot;&gt;中文版 README&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributors Wanted&lt;/h2&gt; 
&lt;p&gt;OneBox is a one-person project and its surface area is now much larger than one person can cover. Help here is genuinely welcome, not a polite formality.&lt;/p&gt; 
&lt;p&gt;The most useful contributions right now, roughly in order:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Translations.&lt;/strong&gt; The app and the Play listing ship in 13 locales. If your language reads wrong, only you can tell us. See &lt;code&gt;fastlane/metadata/android/&amp;lt;locale&amp;gt;/&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Device testing.&lt;/strong&gt; Confirm a build actually works on your OEM ROM, and report what broke.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;The open &lt;code&gt;good first issue&lt;/code&gt; and &lt;code&gt;help wanted&lt;/code&gt; list&lt;/strong&gt; — &lt;a href=&quot;https://github.com/wangzhishou/OneBox/contribute&quot;&gt;start here&lt;/a&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;The agent&#39;s tool choices.&lt;/strong&gt; 90+ tools are exposed to the agent; telling us which tool it picks badly, and what it should have picked instead, is real feedback.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Start with &lt;a href=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/CONTRIBUTING.md&quot;&gt;CONTRIBUTING.md&lt;/a&gt;. No keystores, API keys or backend access are needed to build.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;p&gt;Apache-2.0, see &lt;code&gt;LICENSE&lt;/code&gt;. The project is a fork of &lt;a href=&quot;https://github.com/T8RIN/ImageToolbox&quot;&gt;ImageToolbox&lt;/a&gt; (T8RIN, Apache-2.0): the image-processing core deliberately stays close to upstream so the diff stays reviewable, and upstream copyright notices are preserved in the files they came from.&lt;/p&gt; 
&lt;h2&gt;Feature Gallery&lt;/h2&gt; 
&lt;p&gt;One box, everything AI. Fully open source, free to use, and your data stays on-device — 18 cards to see what OneBox can do:&lt;/p&gt; 
&lt;table&gt; 
 &lt;tbody&gt;
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/01.webp&quot; width=&quot;240&quot; alt=&quot;AI bookkeeping&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/02.webp&quot; width=&quot;240&quot; alt=&quot;Item tracker with dedupe&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/03.webp&quot; width=&quot;240&quot; alt=&quot;Period tracker&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/04.webp&quot; width=&quot;240&quot; alt=&quot;Health records&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/05.webp&quot; width=&quot;240&quot; alt=&quot;Habit tracker&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/06.webp&quot; width=&quot;240&quot; alt=&quot;Teleprompter&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/07.webp&quot; width=&quot;240&quot; alt=&quot;Notes&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/08.webp&quot; width=&quot;240&quot; alt=&quot;AI activity log&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/09.webp&quot; width=&quot;240&quot; alt=&quot;Search and format conversion&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/10.webp&quot; width=&quot;240&quot; alt=&quot;Customize your home&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/11.webp&quot; width=&quot;240&quot; alt=&quot;Picture-in-picture agent&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/12.webp&quot; width=&quot;240&quot; alt=&quot;Permission before execution&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/13.webp&quot; width=&quot;240&quot; alt=&quot;Life tools&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/14.webp&quot; width=&quot;240&quot; alt=&quot;Scrolling marquee&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/15.webp&quot; width=&quot;240&quot; alt=&quot;Mini games&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/16.webp&quot; width=&quot;240&quot; alt=&quot;Dev tools&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/17.webp&quot; width=&quot;240&quot; alt=&quot;Handy tools&quot; /&gt;&lt;/td&gt; 
   &lt;td&gt;&lt;img src=&quot;https://raw.githubusercontent.com/wangzhishou/OneBox/main/.github/readme/cards/en/18.webp&quot; width=&quot;240&quot; alt=&quot;Agents, prompts and sites&quot; /&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt;
&lt;/table&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/e4bfaac22ce4cf24aa9d5e03ce6f8f7c165ee052bbf0a1defcc93f660743febe/wangzhishou/OneBox" medium="image" />
      
    </item>
    
    <item>
      <title>MuwMx/YumaPlayer</title>
      <link>https://github.com/MuwMx/YumaPlayer</link>
      <description>&lt;p&gt;🎵 Hybrid music client for Android: Spotify discovery &amp; UI + YouTube Music library + Hi-Res Lossless (FLAC) streaming with fluid Glassmorphism💫&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/assets/yuma_logo.png&quot; width=&quot;240&quot; height=&quot;240&quot; alt=&quot;YumaPlayer Icon&quot; style=&quot;border-radius: 28px; box-shadow: 0 8px 24px rgba(0,0,0,0.3);&quot; /&gt; 
 &lt;h1&gt;YumaPlayer (Yuma)&lt;/h1&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/README.md&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/%F0%9F%87%BA%F0%9F%87%B8%2520English-6366f1?style=for-the-badge&amp;amp;labelColor=1e1e2e&quot; alt=&quot;English&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/README_RU.md&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/%F0%9F%87%B7%F0%9F%87%BA%2520%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9-6366f1?style=for-the-badge&amp;amp;labelColor=1e1e2e&quot; alt=&quot;Russian&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;strong&gt;A hybrid music client for Android focused on usability, clean aesthetics, and audiophile-grade sound.&lt;/strong&gt; &lt;br /&gt; &lt;em&gt;Spotify UI + Discovery Algorithms + YouTube Music Library + Hi-Res Lossless (FLAC).&lt;/em&gt; &lt;/p&gt; 
 &lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/#-showcase&quot;&gt;&lt;b&gt;Showcase&lt;/b&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/#-key-features&quot;&gt;&lt;b&gt;Features&lt;/b&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/#%EF%B8%8F-architecture--documentation&quot;&gt;&lt;b&gt;Architecture&lt;/b&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/#-download--installation&quot;&gt;&lt;b&gt;Download&lt;/b&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/#-contributing&quot;&gt;&lt;b&gt;Contributing&lt;/b&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/#-support-the-project&quot;&gt;&lt;b&gt;Support&lt;/b&gt;&lt;/a&gt; &lt;/p&gt; 
 &lt;div&gt; 
  &lt;img src=&quot;https://img.shields.io/github/v/release/MuwMx/YumaPlayer?style=for-the-badge&amp;amp;color=6366f1&amp;amp;labelColor=1e1e2e&amp;amp;logo=github&quot; alt=&quot;Latest Release&quot; /&gt; 
  &lt;img src=&quot;https://img.shields.io/github/stars/MuwMx/YumaPlayer?style=for-the-badge&amp;amp;color=6366f1&amp;amp;labelColor=1e1e2e&amp;amp;logo=github&quot; alt=&quot;GitHub Stars&quot; /&gt; 
  &lt;img src=&quot;https://img.shields.io/github/downloads/MuwMx/YumaPlayer/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/badge/License-GPLv3-6366f1?style=for-the-badge&amp;amp;logo=gnu&amp;amp;logoColor=white&amp;amp;labelColor=1e1e2e&quot; alt=&quot;License: GPLv3&quot; /&gt; 
  &lt;img src=&quot;https://img.shields.io/badge/Platform-Android%208.0%2B-3DDC84?style=for-the-badge&amp;amp;logo=android&amp;amp;logoColor=white&amp;amp;labelColor=1e1e2e&quot; alt=&quot;Android 8.0+&quot; /&gt; 
  &lt;a href=&quot;https://t.me/yumaplayer&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Telegram-Community-2CA5E0?style=for-the-badge&amp;amp;logo=telegram&amp;amp;logoColor=white&amp;amp;labelColor=1e1e2e&quot; alt=&quot;Telegram&quot; /&gt;&lt;/a&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://trendshift.io/repositories/202305?utm_source=trendshift-badge&amp;amp;utm_medium=badge&amp;amp;utm_campaign=badge-trendshift-202305&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt; &lt;img src=&quot;https://trendshift.io/api/badge/trendshift/repositories/202305/daily?language=Kotlin&quot; alt=&quot;MuwMx%2FYumaPlayer | Trendshift&quot; width=&quot;250&quot; height=&quot;55&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🌟 About the Project&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;YumaPlayer&lt;/strong&gt; is an independent, open-source Android music player that unites the libraries and recommendation features of two leading streaming services alongside standalone local playback in Hi-Res quality.&lt;/p&gt; 
&lt;p&gt;The project evolved as a comprehensive rebuild of &lt;strong&gt;ArchiveTune&lt;/strong&gt; (with foundations from &lt;strong&gt;Metrolist&lt;/strong&gt; and &lt;strong&gt;SimpMusic&lt;/strong&gt;), inspired by &lt;strong&gt;PixelPlayer&#39;s&lt;/strong&gt; queue mechanics, &lt;strong&gt;Meld&#39;s&lt;/strong&gt; Spotify integration pipeline, and &lt;strong&gt;Stash&#39;s&lt;/strong&gt; FLAC architecture. On top of this base, YumaPlayer implements a modular 18-module architecture, the custom &lt;strong&gt;YDS 2.1&lt;/strong&gt; design system, and hardware-accelerated fluid gesture physics.&lt;/p&gt; 
&lt;p&gt;No subscriptions. No advertisements. Zero telemetry, crash reporters, or third-party trackers. All credentials live exclusively on your device, encrypted with AES-256-GCM via Google Tink, and the codebase is completely open under the GNU General Public License v3.0.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📸 Showcase&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;table&gt; 
  &lt;tbody&gt;
   &lt;tr&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/assets/screenshots/fullplayer.png&quot; alt=&quot;Full Player&quot; width=&quot;100%&quot; style=&quot;border-radius: 16px;&quot; /&gt;&lt;br /&gt; &lt;sub&gt;&lt;b&gt;Main Player (FLAC &amp;amp; Glass)&lt;/b&gt;&lt;/sub&gt; &lt;/td&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/assets/screenshots/lyrics_screen.png&quot; alt=&quot;3-Tier Lyrics&quot; width=&quot;100%&quot; style=&quot;border-radius: 16px;&quot; /&gt;&lt;br /&gt; &lt;sub&gt;&lt;b&gt;3-Tier Synced Lyrics&lt;/b&gt;&lt;/sub&gt; &lt;/td&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/assets/screenshots/queue.png&quot; alt=&quot;Queue Management&quot; width=&quot;100%&quot; style=&quot;border-radius: 16px;&quot; /&gt;&lt;br /&gt; &lt;sub&gt;&lt;b&gt;Queue (Dual-Sheet &amp;amp; Haptic)&lt;/b&gt;&lt;/sub&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/assets/screenshots/artist_screen.png&quot; alt=&quot;Artist Header&quot; width=&quot;100%&quot; style=&quot;border-radius: 16px;&quot; /&gt;&lt;br /&gt; &lt;sub&gt;&lt;b&gt;Immersive Artist Poster&lt;/b&gt;&lt;/sub&gt; &lt;/td&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/assets/screenshots/artist_screen2.png&quot; alt=&quot;Morphing Collapse&quot; width=&quot;100%&quot; style=&quot;border-radius: 16px;&quot; /&gt;&lt;br /&gt; &lt;sub&gt;&lt;b&gt;Telegram-Style Morphing&lt;/b&gt;&lt;/sub&gt; &lt;/td&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/assets/screenshots/main_screen.png&quot; alt=&quot;Home Screen&quot; width=&quot;100%&quot; style=&quot;border-radius: 16px;&quot; /&gt;&lt;br /&gt; &lt;sub&gt;&lt;b&gt;Home (Quick Picks &amp;amp; YDS)&lt;/b&gt;&lt;/sub&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/assets/screenshots/spotify.png&quot; alt=&quot;Spotify Screen&quot; width=&quot;100%&quot; style=&quot;border-radius: 16px;&quot; /&gt;&lt;br /&gt; &lt;sub&gt;&lt;b&gt;Spotify Feed &amp;amp; Recommendations&lt;/b&gt;&lt;/sub&gt; &lt;/td&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/assets/screenshots/spotify_radio.png&quot; alt=&quot;Spotify Radio&quot; width=&quot;100%&quot; style=&quot;border-radius: 16px;&quot; /&gt;&lt;br /&gt; &lt;sub&gt;&lt;b&gt;Spotify Radio &amp;amp; Mixes&lt;/b&gt;&lt;/sub&gt; &lt;/td&gt; 
    &lt;td width=&quot;33%&quot; align=&quot;center&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/assets/screenshots/spotify_dailymix.png&quot; alt=&quot;Spotify Daily&quot; width=&quot;100%&quot; style=&quot;border-radius: 16px;&quot; /&gt;&lt;br /&gt; &lt;sub&gt;&lt;b&gt;Spotify Daily Mixes&lt;/b&gt;&lt;/sub&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt;
 &lt;/table&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;✨ Key Features&lt;/h2&gt; 
&lt;h3&gt;🔄 Dual Mode (Spotify + YouTube Music)&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Spotify Home:&lt;/strong&gt; Personalized recommendation feeds, Daily Mixes, Discover Weekly, favorite artist shelves, and direct import of your Spotify playlists and liked songs.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;YouTube Music Home:&lt;/strong&gt; Full-catalog search across YouTube Music, charts, mood &amp;amp; genre categories, radio stations, and fast channel switching.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🎧 Audiophile Playback &amp;amp; Lossless FLAC&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Lossless FLAC:&lt;/strong&gt; Stream and download true lossless FLAC tracks (via Qobuz / QBDLX backbone integration) using your own credentials or open community resolvers.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Seamless Fallback:&lt;/strong&gt; If a track is unavailable in lossless catalogs, playback instantly and silently routes through YouTube Music&#39;s high-bitrate stream (Opus / AAC).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Local Audio Engine:&lt;/strong&gt; Built-in player for standalone files stored on your device (FLAC, MP3, AAC, OGG, WAV).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Offline &amp;amp; Caching:&lt;/strong&gt; Automatic caching of played YouTube Music tracks for offline listening without recurring data usage &lt;em&gt;(FLAC offline caching in active development)&lt;/em&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Audio Tuning:&lt;/strong&gt; Built-in 5-band equalizer with system audio effects support, EBU R128 loudness normalization, smooth crossfading, tempo and pitch adjustment, and a sleep timer.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🎤 Synchronized Lyrics &amp;amp; AI Translation&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;3-Tier Synchronized Display:&lt;/strong&gt; Simultaneous live display of original lyrics (Kanji / Hangul), pronunciation guide (Romaji), and translated lines.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Live Karaoke Scrolling:&lt;/strong&gt; Word-by-word and line-by-line sync pulled from 6+ providers (LRCLIB, Kugou, BetterLyrics, SimpMusic, Unison, YouLyPlus).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;On-the-Fly AI Translation:&lt;/strong&gt; Instant translation of lyrics into your preferred language right inside the player.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Lyrics Card Sharing:&lt;/strong&gt; Export and share formatted lyrics quote cards as clean images.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🎨 Yuma Design System (YDS 2.1) &amp;amp; Fluid Motion&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Real Glassmorphism:&lt;/strong&gt; Translucent glass cards (&lt;code&gt;GlassScaffold&lt;/code&gt;, 0.5dp hairline borders, composite 22dp / 5dp corner geometry).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Dual-Sheet Gesture Engine:&lt;/strong&gt; Independent, conflict-free player sheets (swipe up on the left for Lyrics, swipe up on the right for Queue).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Telegram-Style Morphing Header:&lt;/strong&gt; Smooth, scroll-linked transformation of artist posters into a status-bar drop using custom 3-point &lt;code&gt;lerp3&lt;/code&gt; without image distortion.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Smart Freeze &amp;amp; Pre-warming:&lt;/strong&gt; Instant sheet expansion with 0-frame startup latency, while off-screen physics loops and background tasks suspend automatically (&lt;code&gt;snapshotFlow&lt;/code&gt;) to preserve battery life and keep the device cool.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Dynamic Monet Theming:&lt;/strong&gt; Adaptive palette extraction powered by the currently playing track&#39;s artwork, tuned for strict WCAG contrast compliance.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;🌐 Integrations &amp;amp; Convenience&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Spotify Canvas &amp;amp; Apple Motion:&lt;/strong&gt; Looping video backgrounds during playback &lt;em&gt;(In development)&lt;/em&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Music Recognition (Shazam):&lt;/strong&gt; Acoustic fingerprint search for songs playing around you &lt;em&gt;(In development)&lt;/em&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Together (Listen Together):&lt;/strong&gt; Synchronized playback with friends over WebSockets.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Scrobbling:&lt;/strong&gt; Native &lt;a href=&quot;http://Last.fm&quot;&gt;Last.fm&lt;/a&gt; and ListenBrainz integration.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Discord Rich Presence:&lt;/strong&gt; Real-time presence status showing your current track and album art on Discord.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Android Auto &amp;amp; Widgets:&lt;/strong&gt; In-car playback support and home screen Glance widgets.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🌍 Globalization &amp;amp; Localization&lt;/h2&gt; 
&lt;p&gt;YumaPlayer is localized into multiple languages thanks to our amazing community translators. The localization pipeline is continuously synchronized with the codebase via &lt;a href=&quot;https://hosted.weblate.org/&quot;&gt;Hosted Weblate&lt;/a&gt;.&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://hosted.weblate.org/engage/yumaplayer/&quot;&gt; &lt;img src=&quot;https://hosted.weblate.org/widgets/yumaplayer/-/svg-badge.svg?sanitize=true&quot; alt=&quot;Translation Status&quot; /&gt; &lt;/a&gt; 
 &lt;br /&gt;
 &lt;br /&gt; 
 &lt;a href=&quot;https://hosted.weblate.org/engage/yumaplayer/&quot;&gt; &lt;img src=&quot;https://hosted.weblate.org/widgets/yumaplayer/-/multi-auto.svg?sanitize=true&quot; alt=&quot;Detailed Translation Progress&quot; /&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;br /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://hosted.weblate.org/engage/yumaplayer/&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Help_Translate-Weblate-00875A?style=for-the-badge&amp;amp;logo=weblate&amp;amp;logoColor=white&quot; alt=&quot;Contribute via Weblate&quot; /&gt; &lt;/a&gt; 
&lt;/div&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;&lt;strong&gt;Want to help translate Yuma?&lt;/strong&gt; No coding or Git knowledge required. Just open our &lt;a href=&quot;https://hosted.weblate.org/engage/yumaplayer/&quot;&gt;Weblate translation dashboard&lt;/a&gt;, choose your language, and start contributing directly through your browser.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🏛️ Architecture &amp;amp; Tech Stack&lt;/h2&gt; 
&lt;p&gt;YumaPlayer is built as a multi-module Android project following Clean Architecture and Unidirectional Data Flow (UDF) principles:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;UI &amp;amp; Design:&lt;/strong&gt; Jetpack Compose, YDS 2.1 design tokens, Hardware-accelerated Haze overlays, fluid gesture physics.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Audio Engine:&lt;/strong&gt; Media3 (ExoPlayer), standalone local audio pipeline, Qobuz/FLAC resolver backbone.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Data &amp;amp; Storage:&lt;/strong&gt; Room ORM, encrypted secure preferences (AES-256-GCM via Google Tink).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Network &amp;amp; Ingestion:&lt;/strong&gt; Ktor/Retrofit, InnerTube (YouTube Music engine), custom multi-source lyrics scrapers.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;📖 &lt;strong&gt;Detailed Developer Documentation:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/docs/architecture/ARCHITECTURE.md&quot;&gt;Architecture Overview &amp;amp; Module Graph&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/docs/architecture/DECISIONS.md&quot;&gt;Architectural Decision Records (ADRs)&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/docs/design/YDS.md&quot;&gt;Yuma Design System Specification (YDS 2.1)&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/docs/development/YUMA_RULES.md&quot;&gt;Coding Standards &amp;amp; Rules&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📥 Download &amp;amp; Installation&lt;/h2&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;table&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th align=&quot;center&quot;&gt;GitHub Releases&lt;/th&gt; 
    &lt;th align=&quot;center&quot;&gt;Telegram Channel&lt;/th&gt; 
    &lt;th align=&quot;center&quot;&gt;Obtainium&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://github.com/MuwMx/YumaPlayer/releases/latest&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/assets/badge_github.png&quot; height=&quot;50&quot; alt=&quot;Download on GitHub&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;https://t.me/yumaplayer&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Telegram-Channel-2CA5E0?style=for-the-badge&amp;amp;logo=telegram&amp;amp;logoColor=white&quot; height=&quot;40&quot; alt=&quot;Get on Telegram&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
    &lt;td align=&quot;center&quot;&gt; &lt;a href=&quot;https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://github.com/MuwMx/YumaPlayer&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Obtainium-Auto_Updates-purple?style=for-the-badge&quot; height=&quot;40&quot; alt=&quot;Add to Obtainium&quot; /&gt; &lt;/a&gt; &lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
&lt;/div&gt; 
&lt;h3&gt;Building from Source&lt;/h3&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/MuwMx/YumaPlayer.git
cd YumaPlayer
./gradlew assembleRelease
# Built APK will be located at: app/build/outputs/apk/release/
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;em&gt;Prerequisites:&lt;/em&gt; A recent Android Studio version with AGP 9.x support, JDK 21, Android SDK 37 (compileSdk/targetSdk 37, minSdk 26).&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;⚙️ Account Setup&lt;/h2&gt; 
&lt;p&gt;YumaPlayer is fully functional out of the box without signing in. Logging in is optional and only required to sync personal playlists, likes, and recommendations:&lt;/p&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;🎵 Connecting Spotify&lt;/b&gt;&lt;/summary&gt; 
 &lt;ol&gt; 
  &lt;li&gt;Open &lt;strong&gt;Settings&lt;/strong&gt; → &lt;strong&gt;Account&lt;/strong&gt; → &lt;strong&gt;Spotify&lt;/strong&gt; → Tap &lt;strong&gt;Log In&lt;/strong&gt;.&lt;/li&gt; 
  &lt;li&gt;Sign in with your standard Spotify credentials in the secure in-app browser window.&lt;/li&gt; 
  &lt;li&gt;Your session cookie (&lt;code&gt;sp_dc&lt;/code&gt;) will be automatically captured and encrypted on your device.&lt;/li&gt; 
 &lt;/ol&gt; 
&lt;/details&gt; 
&lt;details&gt; 
 &lt;summary&gt;&lt;b&gt;📺 Connecting YouTube Music&lt;/b&gt;&lt;/summary&gt; 
 &lt;p&gt;Two convenient login methods are supported:&lt;/p&gt; 
 &lt;ul&gt; 
  &lt;li&gt;&lt;strong&gt;Method 1 (Google Account):&lt;/strong&gt; Open &lt;strong&gt;Settings&lt;/strong&gt; → &lt;strong&gt;Account&lt;/strong&gt; → &lt;strong&gt;YouTube&lt;/strong&gt; → Sign in using the secure in-app authentication sheet.&lt;/li&gt; 
  &lt;li&gt;&lt;strong&gt;Method 2 (Token / Cookie Input):&lt;/strong&gt; If you use two-factor authentication or prefer manual setup, navigate to &lt;strong&gt;Settings&lt;/strong&gt; → &lt;strong&gt;Account&lt;/strong&gt; → &lt;strong&gt;Token Editor&lt;/strong&gt; and paste your session cookies directly.&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/details&gt; 
&lt;hr /&gt; 
&lt;h2&gt;☕ Support the Project&lt;/h2&gt; 
&lt;p&gt;YumaPlayer is free, open source, and has no ads or subscriptions. If you enjoy using the player and wish to support ongoing development:&lt;/p&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;a href=&quot;https://ko-fi.com/muwmix&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/assets/buymeacoffee.png&quot; height=&quot;45&quot; alt=&quot;Support on Ko-fi&quot; /&gt; &lt;/a&gt; &amp;nbsp;&amp;nbsp; 
 &lt;a href=&quot;https://patreon.com/MuwMix&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Patreon-Support_on_Patreon-FF424D?style=for-the-badge&amp;amp;logo=patreon&amp;amp;logoColor=white&quot; height=&quot;45&quot; alt=&quot;Support on Patreon&quot; /&gt; &lt;/a&gt; 
 &lt;br /&gt;
 &lt;br /&gt; 
 &lt;p&gt; &lt;b&gt;Solana (SOL, USDT, USDC):&lt;/b&gt;&lt;br /&gt; &lt;code&gt;DT3ckdbNuiQMR1mrCpBXCMrhLB19GckVv3YfxsLLiF8z&lt;/code&gt; &lt;/p&gt; 
 &lt;p&gt; &lt;b&gt;PayPal / Email Transfer:&lt;/b&gt;&lt;br /&gt; &lt;code&gt;muwmix.coffee@gmail.com&lt;/code&gt; &lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;📈 Star History&lt;/h2&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;a href=&quot;https://star-history.com/#MuwMx/YumaPlayer&amp;amp;Date&quot;&gt; &lt;img src=&quot;https://api.star-history.com/svg?repos=MuwMx/YumaPlayer&amp;amp;type=Date&amp;amp;theme=dark&quot; alt=&quot;Star History Chart&quot; width=&quot;100%&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;💡 Contributing&lt;/h2&gt; 
&lt;p&gt;Contributions make open-source projects thrive! Whether you are fixing bugs, proposing new features, or improving docs:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Read our &lt;strong&gt;&lt;a href=&quot;https://raw.githubusercontent.com/MuwMx/YumaPlayer/main/CONTRIBUTING.md&quot;&gt;Contribution Guidelines&lt;/a&gt;&lt;/strong&gt; before submitting code or PRs.&lt;/li&gt; 
 &lt;li&gt;Want to translate? Head over to our &lt;strong&gt;&lt;a href=&quot;https://hosted.weblate.org/engage/yumaplayer/&quot;&gt;Hosted Weblate&lt;/a&gt;&lt;/strong&gt; — no coding required.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;👥 Contributors&lt;/h3&gt; 
&lt;a href=&quot;https://github.com/MuwMx/YumaPlayer/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=MuwMx/YumaPlayer&quot; alt=&quot;Contributors&quot; /&gt; &lt;/a&gt; 
&lt;hr /&gt; 
&lt;h2&gt;🤝 Acknowledgments (Open-Source Credits)&lt;/h2&gt; 
&lt;p&gt;YumaPlayer is built on the shoulders of the open-source community:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/rukamori/ArchiveTune&quot;&gt;ArchiveTune&lt;/a&gt;&lt;/strong&gt; — for the solid playback foundations, rich settings base, and core architecture.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/FrancescoGrazioso/Meld&quot;&gt;Meld&lt;/a&gt;&lt;/strong&gt; — for the conceptual breakthrough and implementation of the Spotify hybrid integration.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/rawnaldclark/Stash&quot;&gt;Stash&lt;/a&gt;&lt;/strong&gt; — for inspiration in organizing lossless FLAC streaming and download pipelines.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/mostafaalagamy/Metrolist&quot;&gt;Metrolist&lt;/a&gt;&lt;/strong&gt; &amp;amp; &lt;strong&gt;&lt;a href=&quot;https://github.com/maxrave-dev/SimpMusic&quot;&gt;SimpMusic&lt;/a&gt;&lt;/strong&gt; — for early lyrics parsing and interface inspirations.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/theovilardo/PixelPlayer&quot;&gt;PixelPlayer&lt;/a&gt;&lt;/strong&gt; — for swipe kinematics ideas and queue structure.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/ImAiiR/QobuzDownloaderX&quot;&gt;QBDLX&lt;/a&gt;&lt;/strong&gt; — for the lossless audio streaming infrastructure.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://lrclib.net/&quot;&gt;LRCLIB&lt;/a&gt;&lt;/strong&gt; &amp;amp; &lt;strong&gt;&lt;a href=&quot;https://better-lyrics.boidu.dev/&quot;&gt;BetterLyrics&lt;/a&gt;&lt;/strong&gt; — for the open synchronized lyrics databases.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;⚖️ License &amp;amp; Legal Disclaimer&lt;/h2&gt; 
&lt;h3&gt;License&lt;/h3&gt; 
&lt;p&gt;YumaPlayer is free software licensed under the &lt;strong&gt;GNU General Public License v3.0 (GPLv3)&lt;/strong&gt;.&lt;br /&gt; You may freely copy, modify, and redistribute the source code provided you preserve copyright notices and distribute derivative works under the same GPL-3.0 license.&lt;/p&gt; 
&lt;h3&gt;Disclaimer&lt;/h3&gt; 
&lt;p&gt;YumaPlayer is an independent third-party client. It is &lt;strong&gt;not affiliated with, endorsed by, or sponsored by Google LLC, YouTube Music, or Spotify AB&lt;/strong&gt;. The application is provided for personal use only as a tool for managing your own library.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p align=&quot;center&quot;&gt; Crafted with ❤️ and attention to every frame. Enjoy the music! 🎵 &lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/2aefb5905617f6b066f12e980959fd47d874e30055e68673004eb0fa92a3727c/MuwMx/YumaPlayer" medium="image" />
      
    </item>
    
    <item>
      <title>frknkrc44/HMA-OSS</title>
      <link>https://github.com/frknkrc44/HMA-OSS</link>
      <description>&lt;p&gt;A Zygisk module to hide your app list, settings, package installers and more. It is a fork of Hide My Applist project, but LSPosed dependency is replaced with Zygisk.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;h2&gt;HMA-OSS&lt;/h2&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/frknkrc44/HMA-OSS/master/HideMyAss-OSS.svg?sanitize=true&quot; alt=&quot;HMA-OSS Logo&quot; style=&quot;max-width:360px;width:60%;height:auto;&quot; /&gt; 
 &lt;p&gt; &lt;a href=&quot;https://github.com/frknkrc44/HMA-OSS&quot; style=&quot;text-decoration:none&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/stars/frknkrc44/HMA-OSS?label=Stars&amp;amp;logo=github&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/frknkrc44/HMA-OSS/actions&quot; style=&quot;text-decoration:none&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/actions/workflow/status/frknkrc44/HMA-OSS/main.yml?branch=master&amp;amp;logo=github&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/frknkrc44/HMA-OSS/releases/latest&quot; style=&quot;text-decoration:none&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/v/release/frknkrc44/HMA-OSS?label=Release&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://github.com/frknkrc44/HMA-OSS/releases/latest&quot; style=&quot;text-decoration:none&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/downloads/frknkrc44/HMA-OSS/total&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://t.me/aerathfuns&quot; style=&quot;text-decoration:none&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/Telegram-Channel-blue.svg?logo=telegram&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://choosealicense.com/licenses/gpl-3.0/&quot; style=&quot;text-decoration:none&quot;&gt; &lt;img src=&quot;https://img.shields.io/github/license/frknkrc44/HMA-OSS?label=License&quot; /&gt; &lt;/a&gt; &lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;English&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/frknkrc44/HMA-OSS/master/README_zh_CN.md&quot;&gt;中文（简体）&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/frknkrc44/HMA-OSS/master/README_tr.md&quot;&gt;Türkçe&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/frknkrc44/HMA-OSS/master/README_ja.md&quot;&gt;日本語&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/frknkrc44/HMA-OSS/master/README_id.md&quot;&gt;Indonesia&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/frknkrc44/HMA-OSS/master/README_pt.md&quot;&gt;Português&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://raw.githubusercontent.com/frknkrc44/HMA-OSS/master/README_fr.md&quot;&gt;Français&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;About this module&lt;/h2&gt; 
&lt;p&gt;Although it&#39;s bad practice to detect the installation of specific apps, not every app using root provides random package name support. In this case, if apps related to root (such as Fake Location and Storage Isolation) are detected, it is tantamount to detecting that the device is rooted.&lt;/p&gt; 
&lt;p&gt;Additionally, some apps use various loopholes to acquire your app list, in order to use it as fingerprinting data or for other nefarious purposes.&lt;/p&gt; 
&lt;p&gt;This module can work as an Zygisk module to hide apps or reject app list requests.&lt;/p&gt; 
&lt;h2&gt;About HMA-OSS&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/frknkrc44/HMA-OSS/wiki&quot;&gt;https://github.com/frknkrc44/HMA-OSS/wiki&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;I want to contribute translation&lt;/h2&gt; 
&lt;p&gt;You can contribute translation &lt;a href=&quot;https://crowdin.com/project/frknkrc44-hma-oss&quot;&gt;here&lt;/a&gt;.&lt;/p&gt; 
&lt;h2&gt;Update log&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/frknkrc44/HMA-OSS/commits&quot;&gt;Reference to the commits page&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/34b91eb26c2551f49f2739c5b677619d5fd4f0f7afbb4b45792dd2f965a6a300/frknkrc44/HMA-OSS" medium="image" />
      
    </item>
    
    <item>
      <title>AndyShaman/BYDMate</title>
      <link>https://github.com/AndyShaman/BYDMate</link>
      <description>&lt;p&gt;BYD DiLink app (3.0/5.0/5.1, UI7): split screen 1/3+2/3, navigation on instrument cluster, Yandex Navigator on HUD, blind-spot cameras on turn signal, Russian voice AI agent, real BMS consumption, trips/charges journal, automation, ABRP + webhook telemetry. Leopard 3 / Bao 3, Sea Lion 07, Song, Atto 3.&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png&quot; width=&quot;120&quot; alt=&quot;BYDMate icon&quot; /&gt; 
 &lt;h1&gt;BYDMate&lt;/h1&gt; 
 &lt;h3&gt;Trip Logger &amp;amp; Energy Analytics for BYD DiLink 5.0&lt;/h3&gt; 
 &lt;p&gt;&lt;a href=&quot;https://developer.android.com&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Android-10%2B-3DDC84?style=flat-square&amp;amp;logo=android&amp;amp;logoColor=white&quot; alt=&quot;Android&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.1-7F52FF?style=flat-square&amp;amp;logo=kotlin&amp;amp;logoColor=white&quot; alt=&quot;Kotlin&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://developer.android.com/jetpack/compose&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/Jetpack_Compose-Material3-4285F4?style=flat-square&amp;amp;logo=jetpackcompose&amp;amp;logoColor=white&quot; alt=&quot;Jetpack Compose&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/LICENSE&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/License-PolyForm_Noncommercial-blue?style=flat-square&quot; alt=&quot;License&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/AndyShaman/BYDMate/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/AndyShaman/BYDMate?style=flat-square&quot; alt=&quot;GitHub release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/SUPPORT.md&quot;&gt;&lt;img src=&quot;https://img.shields.io/badge/%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D1%82%D1%8C-FF69B4?style=flat-square&amp;amp;logo=githubsponsors&amp;amp;logoColor=white&quot; alt=&quot;Sponsor&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/README.en.md&quot;&gt;English&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/README.zh.md&quot;&gt;中文&lt;/a&gt; | &lt;strong&gt;Русский&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;&lt;strong&gt;Реальный расход, GPS-маршруты, автоматизация, локальная AI-аналитика.&lt;/strong&gt;&lt;/p&gt; 
 &lt;p&gt;Разделение экрана 1/3 и 2/3, навигация на приборной панели, подсказки Яндекс Навигатора на лобовом стекле, камеры слепых зон по поворотнику, голосовой помощник по-русски, телеметрия в ABRP.&lt;/p&gt; 
 &lt;p&gt;Проверено на Leopard 3 (方程豹豹3), есть поддержка Sea Lion 07, Song, Atto 3, Seal, Han. DiLink 3.0, 4.0, 5.0, 5.1 и прошивки с новым интерфейсом UI7 (OTA V1.6).&lt;/p&gt; 
 &lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/#%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8&quot;&gt;Возможности&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/#%D1%81%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%D1%8B&quot;&gt;Скриншоты&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/#%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F&quot;&gt;Автоматизация&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/#%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4-%D0%BD%D0%B0-%D0%BF%D1%80%D0%B8%D0%B1%D0%BE%D1%80%D0%BA%D1%83&quot;&gt;Вывод на приборку&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/#hud&quot;&gt;HUD&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/#%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0&quot;&gt;Разделение экрана&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/#%D0%B3%D0%BE%D0%BB%D0%BE%D1%81%D0%BE%D0%B2%D0%BE%D0%B9-ai-%D0%B0%D0%B3%D0%B5%D0%BD%D1%82&quot;&gt;Голосовой агент&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/#ai-%D0%B8%D0%BD%D1%81%D0%B0%D0%B9%D1%82%D1%8B&quot;&gt;AI Инсайты&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/#abrp--live-%D1%82%D0%B5%D0%BB%D0%B5%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%8F&quot;&gt;ABRP&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/#%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0&quot;&gt;Установка&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/#%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B0-%D0%B8%D0%B7-%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2&quot;&gt;Сборка&lt;/a&gt; | &lt;a href=&quot;https://github.com/AndyShaman/BYDMate/releases&quot;&gt;Релизы&lt;/a&gt; | &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/SUPPORT.md&quot;&gt;Поддержать&lt;/a&gt;&lt;/p&gt; 
&lt;/div&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Зачем это нужно&lt;/h2&gt; 
&lt;p&gt;Штатный бортовой компьютер BYD &lt;strong&gt;занижает расход на 10-30%&lt;/strong&gt;. BYDMate берёт данные напрямую из BMS (energydata) и показывает реальное потребление. Плюс данные, которых нет в штатной системе: расход на стоянке, баланс ячеек, стоимость поездок, AI-аналитика.&lt;/p&gt; 
&lt;p&gt;Все основные функции (поездки, зарядки, автоматизации, локальные инсайты, офлайн голосовой агент) работают локально на DiLink и не требуют интернета. Облачные функции выключены по умолчанию и включаются только вручную вводом ключа. Что именно и когда уходит в сеть, описано в разделе &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/#%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D0%B8-%D1%81%D0%B5%D1%82%D1%8C&quot;&gt;«Данные и сеть»&lt;/a&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Что нового&lt;/h2&gt; 
&lt;p&gt;Главное в версии 3.19.6.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Трек Яндекса на приборке.&lt;/strong&gt; Название трека и исполнитель из Яндекс Музыки и из музыки в Яндекс Навигаторе (Алиса) показываются в карточке музыки на приборке, раньше машина оставляла её пустой. Включается переключателем «Трек Яндекса на приборке» в &lt;strong&gt;Настройки → Дисплей&lt;/strong&gt;, по умолчанию выключен. Спасибо @vladh91 за эту доработку. В итоговом виде на машинах пока не проверено.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;HUD, способ 3 передаёт машине больше.&lt;/strong&gt; Кроме стрелки, метров и улицы он сообщает оставшееся время и расстояние до конца маршрута и время прибытия, а стрелку, метры и улицу отправляет ещё и вторым путём. Если в способе 2 на стекле видны метры и улица, а стрелки нет, попробуйте способ 3. Способы 1 и 2 не изменились. На машинах пока не проверено.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;HUD понимает больше манёвров.&lt;/strong&gt; Подсказки Навигатора на английском, номер съезда с кольца словами («второй съезд»), «круто влево», «плавно вправо» и другие. Манёвры, которые приложение понимало раньше, читаются так же.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;HUD дольше держит подсказку.&lt;/strong&gt; Если приложение на время перестало видеть подсказку в окне Навигатора, стекло больше не гаснет через 10 секунд: оно ждёт до полутора минут. После отмены маршрута последнее расстояние и улица могут оставаться на стекле столько же. На машинах без сервисов Google уведомление «Установите сервисы Google Play» больше не включает HUD без маршрута.&lt;/p&gt; 
&lt;p&gt;Главное в версии 3.19.5.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Новые действия в автоматизации.&lt;/strong&gt; «Закрыть приложение» полностью закрывает выбранное приложение, маршрут или музыка, которые в нём не сохранены, пропадут. «Медиа: играть» и «Медиа: пауза» продолжают или ставят на паузу то, что играет в уже запущенном плеере. Если плеер не запущен, поставьте перед этим шагом «Запуск приложения». В одно правило теперь помещается до 20 действий.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;TRIP 1 и TRIP 2 в отчёте в Telegram.&lt;/strong&gt; В настройках отчёта появились две галочки: каждый счётчик с Главной добавляется в отчёт отдельно.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Вывод на приборку на Han и Tang 2024.&lt;/strong&gt; На машинах с Android 12, где приложение само не видит экран приборки, вывод сразу прерывался. Теперь этот экран находится. На машинах пока не проверено.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;HUD, способы 2 и 3.&lt;/strong&gt; Манёвр «плавно направо» показывается стрелкой направо, раньше машина рисовала его как «плавно налево». Если приложение закрылось посреди маршрута, при следующем запуске оно убирает карточку навигации с приборки.&lt;/p&gt; 
&lt;p&gt;Главное в версии 3.19.4.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Три способа вывода на стекло.&lt;/strong&gt; В настройках HUD вместо двух режимов теперь три способа. Способ 1 стоит по умолчанию и работает как раньше: подсказки идут на стекло, приборку приложение не трогает. Способ 2 переводит машину в режим навигации и передаёт стрелку, метры и улицу в карточку навигации на приборке, улица там пишется латиницей. Способ 3 пробный: всё как в способе 2, и ещё одним путём, которым пользуется OpenBYD. Способы 2 и 3 новые и на машинах пока не проверены. Когда маршрут закончен, способ сменён или HUD выключен, приложение убирает со стекла и приборки всё, что выводило.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Проверка HUD сама выбирает способ.&lt;/strong&gt; Проверка показывает на стекле по очереди числа 111, 222, 333 и 444, каждое своим способом, а в конце спрашивает, какое число вы увидели, и ставит нужный способ. Если стекло ничего не показало, приложение попросит прислать лог. Тестовое расстояние 333 м после проверки стирается.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Окно не опускается само.&lt;/strong&gt; После стоянки окно больше не открывается само при включении машины, а повторные «проветрить» и «половина» срабатывают с первого раза: после каждой команды окну на часть приложение снимает её с машины так же, как штатный голосовой помощник BYD.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Яндекс Музыка без интернета.&lt;/strong&gt; Фразы «включи Яндекс Музыку», «запусти Яндекс Мьюзик» и просто «Яндекс Музыка» включают «Мою волну» сразу, без облачного помощника.&lt;/p&gt; 
&lt;p&gt;Главное в версии 3.19.3.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Агент закрывается сам.&lt;/strong&gt; В настройках голосового агента появился переключатель «Закрывать агента после выполненной команды», по умолчанию выключен. Когда он включён, после выполненной команды или ответа агент закрывается сам. Если агент задал вам вопрос, он дождётся ответа.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Закрыть агента можно словами.&lt;/strong&gt; Скажите «закрой агента», «выключись» или «всё, спасибо, отдыхай», и агент закроется. Это работает через модель, поэтому нужен интернет.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Два режима HUD.&lt;/strong&gt; В карточке HUD появился выбор режима. Режим 1 стоит по умолчанию: подсказки идут на стекло, приборку приложение не трогает. Режим 2 на время маршрута переводит машину в режим навигации, его стоит попробовать, если в режиме 1 стекло пустое. Вывод приложений и камер на приборку снова работает во время маршрута. Тестовая надпись после «Проверки HUD» стирается со стекла.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;«Климат авто».&lt;/strong&gt; Фразы «климат авто» и «климат в автомате» переключают климат в автоматический режим, а не только включают его.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Окна на часть.&lt;/strong&gt; Повторная команда открыть окно на часть, например проветривание или наполовину, срабатывает и там, где машина раньше её пропускала.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Магнитолы с Android 10.&lt;/strong&gt; Кнопка руля, назначенная в автоматизации, работает после выключения и включения машины. Виджет после включения машины больше не пропадает на полминуты. Запись логов теперь сохраняет и работу камер слепых зон.&lt;/p&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;th&gt;Описание&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;BMS&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Реальный расход&lt;/td&gt; 
   &lt;td&gt;Данные BMS (energydata), не бортовой компьютер. Тренд по скользящему окну 25 км&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;GPS&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Трекинг поездок&lt;/td&gt; 
   &lt;td&gt;GPS-маршруты, дистанция, скорость&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Charge&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Зарядки&lt;/td&gt; 
   &lt;td&gt;Автоматическая запись AC/DC, статистика за период и за всё время, ручное добавление и редактирование&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;Инсайты&lt;/td&gt; 
   &lt;td&gt;Анализ вождения: локальные правила на устройстве, без интернета&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;TRIP&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Счётчики TRIP 1/2&lt;/td&gt; 
   &lt;td&gt;Пробег, расход, время и стоимость с момента сброса (как в машине); сброс долгим нажатием, подробности по касанию&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Bat&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Здоровье батареи и «Техника»&lt;/td&gt; 
   &lt;td&gt;Карточка: SoH (Leopard 3, DiLink 3.0), температура, 12V, разброс ячеек, изоляция. Тап открывает экран «Техника» с живыми параметрами батареи, моторов, климата и шин, включая долю мощности перед/зад в процентах&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Map&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Карта маршрута&lt;/td&gt; 
   &lt;td&gt;osmdroid (OpenStreetMap) в деталях поездки&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Rules&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Автоматизация&lt;/td&gt; 
   &lt;td&gt;Правила WHEN→THEN: триггеры по параметрам → команды управления машиной&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Cluster&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Вывод на приборку&lt;/td&gt; 
   &lt;td&gt;Вывод выбранного приложения на приборную панель кнопкой руля (по умолчанию правая звезда)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;HUD&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Проекция на лобовое&lt;/td&gt; 
   &lt;td&gt;Манёвры, дистанция и знак ограничения скорости из Яндекс Навигатора на заводском проекционном дисплее&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Split&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Разделение экрана&lt;/td&gt; 
   &lt;td&gt;Два приложения сразу: окнами BYDMate в пропорции 1/3 и 2/3 либо штатным разделением прошивки&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Cam&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Камеры слепых зон&lt;/td&gt; 
   &lt;td&gt;Камера нужной стороны по включённому поворотнику: на приборке или в окошке на экране&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Voice&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Голосовой агент&lt;/td&gt; 
   &lt;td&gt;Русский офлайн-ассистент: распознавание речи на устройстве, AI-агент (32 инструмента), нейросетевая озвучка&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Widget&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Плавающий виджет&lt;/td&gt; 
   &lt;td&gt;7 полей поверх других приложений: SOC, запас хода, расход + тренд, время, t° салона, t° батареи, 12V&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Auto&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Автозапуск&lt;/td&gt; 
   &lt;td&gt;WorkManager, запускается при включении&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Backup&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Сохранение конфигурации&lt;/td&gt; 
   &lt;td&gt;Поездки, зарядки, настройки и ключи в одном архиве в Download, восстановление по частям, автосохранение по расписанию с копией в ваш Telegram-бот&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Share&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Обмен автоматизациями&lt;/td&gt; 
   &lt;td&gt;Правило в файл без номеров, контактов и ваших мест; импорт чужого правила с предпросмотром&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Aa&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Размер текста&lt;/td&gt; 
   &lt;td&gt;Обычный, крупный или очень крупный текст на экранах приложения и в окнах голосового агента&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Скриншоты&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Dashboard&lt;/strong&gt;&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/dashboard.jpg&quot; alt=&quot;Dashboard&quot; width=&quot;800&quot; /&gt; 
&lt;p&gt;Вокруг SOC-кольца расположены четыре значения в стиле плавающего виджета: сверху длительность поездки, одометр и температура - в салоне и за бортом в одном слоте (если машина не сообщает наружную температуру, слот показывает только температуру в салоне, как раньше); снизу пробег текущей поездки, расчётный запас хода и расход текущей поездки со стрелкой тренда. Цвета и логика тренда такие же, как в плавающем виджете, поэтому информация читается одинаково и на главном экране, и поверх других приложений.&lt;/p&gt; 
&lt;p&gt;Ниже кольца: AI-инсайт, малая карточка здоровья батареи (SoH на Leopard 3 и DiLink 3.0, температура, 12V), два счётчика TRIP 1 и TRIP 2, последние поездки, фильтр периода. Каждый счётчик показывает пробег, расход в кВт·ч (включая стоянку), время в пути и стоимость с момента сброса. Долгое нажатие сбрасывает счётчик, касание открывает детали. В окне счётчика можно включить сброс после зарядки: после любой, только AC, только DC или только после зарядки до 100%.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;AI Инсайты&lt;/strong&gt;&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/dashboard-insight-expanded.jpg&quot; alt=&quot;AI Insight expanded&quot; width=&quot;800&quot; /&gt; 
&lt;p&gt;&lt;em&gt;Анализ эффективности вождения — расход, тренды, батарея, рекомендации (считается на устройстве)&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Здоровье батареи&lt;/strong&gt;&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/dashboard-battery.jpg&quot; alt=&quot;Battery health&quot; width=&quot;800&quot; /&gt; 
&lt;p&gt;&lt;em&gt;Температура, SoH (Leopard 3, DiLink 3.0), 12V аккумулятор, баланс ячеек, напряжение&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Поездки&lt;/strong&gt;&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/trips.jpg&quot; alt=&quot;Trips accordion&quot; width=&quot;800&quot; /&gt; 
&lt;p&gt;&lt;em&gt;Аккордеон Месяц &amp;gt; День &amp;gt; Поездка с фильтрами и цветовой индикацией расхода&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;Чип &lt;strong&gt;«Температура»&lt;/strong&gt; над списком открывает экран «Расход и температура»: точка на каждую поездку длиннее 5 км, линия медиан по 5-градусным полосам, медианы по холоду (ниже 0 °C), межсезонью (0…15 °C) и теплу (выше 15 °C) и вывод, на сколько процентов расход в холод выше. Поездки короче 5 км в график не попадают: там всё съедает прогрев. Нужно 8 поездок с температурой и разброс хотя бы в 15 °C, иначе экран честно скажет, чего не хватает.&lt;/p&gt; 
&lt;p&gt;В окне поездки видно одометр на старте и на финише, время в движении, стоимость на 100 км, изменение заряда в процентах и температуру за бортом в начале и в конце. Одометр пишется только для поездок после обновления.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Автоматизация&lt;/strong&gt;&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/automation.jpg&quot; alt=&quot;Automation&quot; width=&quot;800&quot; /&gt; 
&lt;p&gt;&lt;em&gt;Правила КОГДА→ТОГДА, редактор условий и действий, настройки срабатывания&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Настройки&lt;/strong&gt;&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/settings.jpg&quot; alt=&quot;Settings&quot; width=&quot;800&quot; /&gt; 
&lt;p&gt;&lt;em&gt;Разделы: Голос-агент, Виджет, Дисплей, Разделение экрана, Авто и батарея, Интеграции, Сервис и данные, Приложение&lt;/em&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Разделение экрана&lt;/strong&gt;&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/split-screen.jpg&quot; alt=&quot;Разделение экрана: Яндекс Музыка слева, Яндекс Навигатор справа&quot; width=&quot;800&quot; /&gt; 
&lt;p&gt;&lt;em&gt;Две панели 1/3 и 2/3, виджет BYDMate поверх&lt;/em&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Автоматизация&lt;/h2&gt; 
&lt;p&gt;Вкладка &lt;strong&gt;Автоматизация&lt;/strong&gt; позволяет создавать правила для автоматического управления автомобилем напрямую через системный интерфейс машины.&lt;/p&gt; 
&lt;h3&gt;Принцип работы&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;КОГДА&lt;/strong&gt; условие выполняется &lt;strong&gt;→ ТОГДА&lt;/strong&gt; выполнить команду.&lt;/p&gt; 
&lt;p&gt;Примеры:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;SOC &amp;lt; 20% → включить внутреннюю циркуляцию&lt;/li&gt; 
 &lt;li&gt;Скорость &amp;gt; 0 → закрыть шторку&lt;/li&gt; 
 &lt;li&gt;Температура за бортом &amp;lt; 0 → включить подогрев зеркал&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Возможности&lt;/h3&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;SOC, скорость, температура, поворотник, передача, двери, окна, люк, багажники, давление шин, режим езды, точки-геозоны, время суток, точное время и промежуток с днями недели, клавиша руля, тап по виджету, голосовая фраза, запуск сервиса, появление интернета и др. Поворотники, передача, двери, окна, багажники и датчики слепых зон приходят в приложение в момент события, а не по опросу&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;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;17 видов действий&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Команда автомобилю, уведомление, запуск приложения, звонок, маршрут в Я.Навигаторе, открыть URL, Яндекс.Музыка, запуск ролика на YouTube, пауза, громкость медиа, охранный режим, точка доступа Wi-Fi, озвучить текст, запрос агенту, главный экран BYDMate, вывод на приборку, разделение экрана (запуск, закрытие, переключение). У команд машины, охранного режима и вывода на приборку есть вариант «Переключить»&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Edge trigger&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Срабатывает только при переходе false→true (не повторяется каждые 3 сек)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Cooldown&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Настраиваемая пауза между срабатываниями&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Overlay-подтверждение&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Всплывающее окно «Отмена / Выполнить» перед действием. Таймаут 15 с → автоотмена&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Безопасность&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Окна не открываются на скорости &amp;gt; 120 км/ч, люк &amp;gt; 80 км/ч, двери не отпираются &amp;gt; 30 км/ч, CAN/SHELL команды заблокированы&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;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Шаблоны&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;6 готовых правил для быстрого старта&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;Выполнить сейчас&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;Ручной запуск правила из редактора, мимо триггеров и cooldown&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;«Переключить» — это третий вариант рядом с самим действием, а не отдельный пункт.&lt;/strong&gt; В списке команд под парой «открыть / закрыть» стоит строка вида «Багажник: переключить», а у охранного режима и вывода на приборку к кнопкам «Включить» и «Выключить» добавилась кнопка «Переключить».&lt;/p&gt; 
&lt;p&gt;Переключать умеют: багажник, передний багажник, люк, замки, аварийку, климат, подогрев и обдув сидений водителя и пассажира, подогрев руля, вывод на приборку и режим охраны. Состояние берётся из машины: что открыто — закроется, что выключено — включится. Сиденье, которое сейчас работает, выключится, а выключенное вернётся на ту ступень, которую вы задавали последней (по умолчанию третью). Если машина не сообщает состояние, действие честно откажется и напишет об этом, а не будет угадывать.&lt;/p&gt; 
&lt;p&gt;Правила, созданные в прошлых версиях, продолжают работать и открываются на редактирование как раньше — менять ничего не нужно.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Списки команд и параметров свёрнуты по разделам.&lt;/strong&gt; Открыт только раздел с текущим выбором, остальные разворачиваются тапом по заголовку.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Тестовый запуск.&lt;/strong&gt; В редакторе правила кнопка «Тестовый запуск» сразу выполняет все действия, как будто сработало условие. Срабатывание при этом не засчитывается. Открытие окон, люка и переднего багажника и отпирание дверей пропускаются, если нет свежих данных о скорости: не старше 10 секунд при работающем сервисе. Нераспознанная команда тоже пропускается, с пояснением. Закрыли редактор, и запуск останавливается.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Списком или карточками.&lt;/strong&gt; Переключатель в шапке вкладки показывает правила компактным списком или карточками в три колонки, выбор запоминается. У каждого правила видно, сколько раз и когда оно срабатывало.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Места.&lt;/strong&gt; Кнопка «Места» переехала из Настроек в шапку вкладки «Автоматизация», рядом с «Журналом». Добавлять и править точки можно прямо там.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Подогрев руля.&lt;/strong&gt; Действие «Подогрев руля» включает, выключает и переключает подогрев. Результат проверяется по состоянию машины, а на машине без подогрева руля действие честно сообщит, что его нет. На машине с подогревом руля команда пока не проверена, ждём отзывов.&lt;/p&gt; 
&lt;h3&gt;Логика&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;AND&lt;/strong&gt; — все условия должны выполняться&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;OR&lt;/strong&gt; — достаточно одного условия&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Только на P&lt;/strong&gt; — правило срабатывает только когда авто на паркинге&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Проверка условия при каждом включении&lt;/h3&gt; 
&lt;p&gt;Правило срабатывает в момент, когда значение переходит через порог, пока приложение работает. Если вы сели в машину, где в салоне уже 32 градуса, а порог 29, перехода не было, и правило не сработает. Чтобы условие проверялось при каждом включении, сделайте рядом с первым правилом второе:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Первое условие: &lt;strong&gt;«Запуск BYDMate»&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;Второе условие: &lt;strong&gt;«Темп. салона»&lt;/strong&gt; больше 29.&lt;/li&gt; 
 &lt;li&gt;Выберите &lt;strong&gt;«Все условия»&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;Действия те же, что в первом правиле.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;«Любое условие»&lt;/strong&gt; не ставьте: правило будет срабатывать при каждом запуске, какая бы температура ни была.&lt;/p&gt; 
&lt;h3&gt;Поделиться автоматизацией и импорт&lt;/h3&gt; 
&lt;p&gt;Готовое правило можно отдать другому владельцу, а чужое добавить себе.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Как поделиться&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Нажмите &lt;strong&gt;«Поделиться»&lt;/strong&gt; на карточке правила или в редакторе.&lt;/li&gt; 
 &lt;li&gt;Посмотрите, что попадёт в файл: окно показывает это до сохранения.&lt;/li&gt; 
 &lt;li&gt;Нажмите &lt;strong&gt;«Продолжить»&lt;/strong&gt;. Правило сохранится в папку Download в файл &lt;code&gt;bydmate_rule_&amp;lt;имя&amp;gt;.json&lt;/code&gt;, имя файла покажется во всплывающем сообщении, и откроется системное окно «Поделиться».&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Что приложение убирает из файла:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;номера телефонов и имена контактов;&lt;/li&gt; 
 &lt;li&gt;привязки к вашим местам;&lt;/li&gt; 
 &lt;li&gt;логин и пароль из ссылок и параметры ссылок, похожие на ключи (token, api_key и подобные). Обычные параметры остаются.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Что остаётся в файле: адрес ссылки, тексты уведомлений и фраз, запросы агенту и точки маршрутов. Проверьте их перед отправкой.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Как добавить чужое правило&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Положите файл &lt;code&gt;bydmate_rule_*.json&lt;/code&gt; в папку Download на DiLink.&lt;/li&gt; 
 &lt;li&gt;На вкладке «Автоматизация» нажмите &lt;strong&gt;«Импорт»&lt;/strong&gt; в шапке и выберите файл из списка.&lt;/li&gt; 
 &lt;li&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;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Правило со ссылкой, адрес которой нужно ввести заново, добавляется только выключенным. Если из ссылки удалены параметры, похожие на ключи, окно попросит проверить адрес. Файлы с чрезмерной вложенностью или слишком длинными строками приложение не принимает.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Вывод на приборку&lt;/h2&gt; 
&lt;p&gt;BYDMate умеет выводить выбранное приложение (по умолчанию навигацию) на приборную панель за рулём, чтобы карта и манёвры были перед глазами, а центральный экран оставался свободным.&lt;/p&gt; 
&lt;h3&gt;Управление кнопкой руля&lt;/h3&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; работает штатно (меню машины), BYDMate его не перехватывает.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;По умолчанию проекцию включает правая звезда. Кнопку можно переназначить, см. «Выбор кнопки» ниже.&lt;/p&gt; 
&lt;h3&gt;Включение&lt;/h3&gt; 
&lt;p&gt;Откройте &lt;strong&gt;Настройки → Дисплей&lt;/strong&gt; и включите тумблер «Проекция на приборку». Приложение само активирует нужный сервис (нужна выполненная активация ADB при установке, см. «Установка») и само переводит приборку в режим проекции: за это отвечает тумблер «Сразу показывать на приборке», он включён по умолчанию. На головном устройстве вручную ничего настраивать не нужно.&lt;/p&gt; 
&lt;p&gt;После этого короткое нажатие выбранной кнопки руля (по умолчанию правая звезда) переносит выбранное приложение на приборку и обратно.&lt;/p&gt; 
&lt;p&gt;Если «Сразу показывать на приборке» выключить, приборку придётся один раз перевести в режим проекции самому: иконка проекции на главном экране головного устройства, затем кнопка &lt;strong&gt;IPC&lt;/strong&gt; на появившейся карте. Выключать стоит, если после вывода на приборку с неё пропадает ADAS или штатный виджет и не возвращается сам (на части прошивок DiLink 5.0 экран проекции живёт внутри штатной мини-карты): с выключенным тумблером приложение не трогает режим приборки, это касается и камер слепых зон, а картинка видна в мини-карте.&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/settings-display.jpg&quot; alt=&quot;Настройки → Дисплей: проекция на приборку, что за что отвечает&quot; width=&quot;800&quot; /&gt; 
&lt;h3&gt;Режимы проекции: «Заводской» и «Расширенный»&lt;/h3&gt; 
&lt;p&gt;В &lt;strong&gt;Настройки → Дисплей&lt;/strong&gt;, рядом с тумблером проекции, выбирается режим вывода на приборку. Их два, и отличаются они тем, трогает ли приложение системные настройки машины.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;«Заводской» (по умолчанию).&lt;/strong&gt; Приложение не меняет ни одной системной настройки: проекция работает через виртуальный дисплей (картинка зеркалится на приборку), ползунки подстройки окна работают точнее. Ставится и удаляется бесследно. Ограничение: голосовой агент и HUD не видят экран навигатора во время проекции, подсказки о манёврах агент берёт только из уведомления Навигатора.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;«Расширенный».&lt;/strong&gt; Навигатор запускается отдельным окном прямо на дисплее приборки, поэтому голосовой агент и HUD видят маршрут во время проекции. Для этого приложение включает системную настройку оконного режима (enable_freeform_support). Режим включается только через диалог с объяснением, после включения нужна однократная перезагрузка головного устройства (долгое зажатие колёсика громкости). Новый режим применяется при следующем выводе на приборку.&lt;/p&gt; 
&lt;p&gt;На части прошивок (DiLink 4.0, Song Plus 2021 и похожие) экран приборки скрыт от приложений, и «Заводской» режим там работать не может: приложение само находит приборку через служебный канал и выводит навигатор «Расширенным» режимом, независимо от выбранного. На DiLink 4.0 это проверено на машине. В этом режиме не работает ползунок «Масштаб» в настройке «Размер окна на приборке».&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Как вернуть заводские настройки.&lt;/strong&gt; Переключите режим обратно на «Заводской»: приложение сразу вернёт системную настройку к заводскому значению, а перезагрузка ДиЛинка полностью завершит возврат. После этого система в том же состоянии, что и до установки BYDMate.&lt;/p&gt; 
&lt;p&gt;Там же, под выбором режима, есть тумблер «Полный экран приборки». По умолчанию карта занимает верх приборки, а внизу остаётся штатная полоса со скоростью и основными показателями. Включите тумблер, если хотите карту на всю приборку без этой полосы. Работает только на прошивках с новым интерфейсом, на остальных ничего не меняет; применяется при следующем выводе на приборку.&lt;/p&gt; 
&lt;p&gt;Если вы пользовались проекцией в версиях до 3.7, при обновлении прежнее поведение сохранится автоматически: режим останется «Расширенный». У тех, кто проекцию не включал, приложение системные настройки не трогает вообще.&lt;/p&gt; 
&lt;h3&gt;Выбор кнопки&lt;/h3&gt; 
&lt;p&gt;По умолчанию проекцию включает правая звезда руля. Если этой кнопки нет или удобнее другая, под тумблером нажмите «Изменить» и нажмите нужную кнопку на руле, приложение её запомнит. Назначить можно любую кнопку руля, которую видит система. Системные кнопки (громкость, питание и т.п.), обзор 360 и карусель приборки назначить нельзя.&lt;/p&gt; 
&lt;h3&gt;Какое приложение проецировать&lt;/h3&gt; 
&lt;p&gt;По умолчанию на приборку выводится Яндекс.Навигатор. Под тумблером включения есть выбор приложения: можно указать любое установленное (другой навигатор, медиаплеер и т.д.). Новый выбор применяется при следующем нажатии кнопки.&lt;/p&gt; 
&lt;h3&gt;Размер и положение окна&lt;/h3&gt; 
&lt;p&gt;В разделе &lt;strong&gt;Настройки → Дисплей → «Размер окна на приборке»&lt;/strong&gt; пять ползунков. Если на вашей машине проекция и так занимает всю приборку (например, Leopard 3), настраивать ничего не нужно: значения по умолчанию дают прежний полноэкранный режим.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Ширина&lt;/strong&gt; и &lt;strong&gt;Высота&lt;/strong&gt; (20-100%) - размер окна в процентах от приборки. Уменьшенное окно освобождает место, штатная приборка просвечивает вокруг.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Сдвиг по горизонтали&lt;/strong&gt; (0-100%) - положение окна: 0 - левый край, 50 - центр, 100 - правый край. Действует, только когда ширина меньше 100%.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Сдвиг по вертикали&lt;/strong&gt; (0-100%) - то же по вертикали: 0 - верх, 50 - центр, 100 - низ.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Масштаб&lt;/strong&gt; (50-150%) - крупность интерфейса проецируемого приложения: чем меньше значение, тем мельче надписи и тем больше карты помещается в окне.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Изменения применяются сразу, прямо во время проекции - двигайте ползунок и смотрите на приборку.&lt;/p&gt; 
&lt;h3&gt;Машины с мини-окном на приборке (Sea Lion 07 и похожие)&lt;/h3&gt; 
&lt;p&gt;На части моделей штатная приборка показывает проекцию не на весь экран, а в фиксированной зоне (на Sea Lion 07 - правая треть). Полноэкранное окно там обрезается. Решение: уменьшить окно и сдвинуть его в видимую зону ползунками выше.&lt;/p&gt; 
&lt;p&gt;Проверенные владельцем Sea Lion 07 значения: &lt;strong&gt;ширина 32%, высота 92%, сдвиг по горизонтали 100%, сдвиг по вертикали 6%, масштаб 90%&lt;/strong&gt;.&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/cluster-mini-settings.jpg&quot; alt=&quot;Настройки окна для Sea Lion 07&quot; width=&quot;800&quot; /&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/cluster-mini-view.jpg&quot; alt=&quot;Яндекс.Навигатор в мини-зоне приборки Sea Lion 07&quot; width=&quot;800&quot; /&gt; 
&lt;p&gt;Вывести окно на весь экран приборки на таких машинах не получится: зону показа задаёт прошивка панели, и она не управляется.&lt;/p&gt; 
&lt;h3&gt;Как это устроено&lt;/h3&gt; 
&lt;p&gt;Проекция работает в одном из двух режимов, описанных выше. В «Заводском» BYDMate создаёт виртуальный дисплей и зеркалит в него выбранное приложение, не меняя настроек системы. В «Расширенном» приложение запускается отдельным окном прямо на дисплее приборной панели, поэтому голосовой агент и HUD видят маршрут во время проекции. Чтобы перехватывать кнопки руля, приложение включает собственный сервис специальных возможностей (accessibility). Он работает только при включённом тумблере и нужен исключительно для выбранной кнопки. Прошивку и саму машину это не меняет, всё обратимо.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;HUD&lt;/h2&gt; 
&lt;p&gt;Если в машине есть заводской проекционный дисплей, BYDMate выводит на лобовое стекло подсказки Яндекс Навигатора: значок манёвра, дистанцию до него, название улицы и время прибытия. Отдельным тумблером включается знак ограничения скорости, он передаётся числом. Пока Навигатор предупреждает о камере, вместо стрелки манёвра показывается значок камеры и расстояние до неё. Ведение продолжается, даже когда Навигатор свёрнут или выведен на приборку; Яндекс Карты работают источником подсказок наравне с Навигатором.&lt;/p&gt; 
&lt;p&gt;Включается в &lt;strong&gt;Настройки → Дисплей&lt;/strong&gt;, раздел «HUD (проекционный дисплей)»: тумблер «Навигация на HUD» и отдельно «Знак скорости под стрелкой». Там же выбирается способ вывода на стекло: способ 1 по умолчанию, способы 2 и 3 для машин, у которых в способе 1 стекло пустое. Подсказки идут по штатному каналу самого HUD, поэтому нужна комплектация с проекционным дисплеем. Если такого канала на машине нет, приложение честно пишет об этом в настройках и функцию не включает.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Что приложение меняет в машине.&lt;/strong&gt; В способе 1 ничего: подсказки идут по каналу самого HUD. В способах 2 и 3, пока «Навигация на HUD» включена и навигатор ведёт по маршруту, BYDMate включает в машине режим навигации и пишет стрелку, метры и улицу в карточку навигации на приборке. В способе 3 туда же передаются оставшееся время и расстояние до конца маршрута и время прибытия. Когда маршрут закончен, способ сменён или тумблер выключен, всё возвращается в прежнее состояние. При выключенном тумблере приложение ничего в машине не трогает.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Если на стекле ничего не появляется.&lt;/strong&gt; Откройте &lt;strong&gt;Настройки → Сервис и данные&lt;/strong&gt;, раздел «Данные», и нажмите &lt;strong&gt;«Запустить»&lt;/strong&gt; рядом со строкой «Проверка HUD». Машина должна стоять, маршрут в навигаторе не запущен. Проверка идёт около двух минут и по очереди показывает на стекле числа 111, 222, 333 и 444, каждое своим способом. В конце она спросит, какое число вы увидели, и сама поставит нужный способ. Если стекло ничего не показало, запишите лог кнопкой записи логов и пришлите его в issue на GitHub вместе с моделью машины.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Камеры слепых зон&lt;/h2&gt; 
&lt;p&gt;При включённом поворотнике BYDMate сам показывает картинку с боковой камеры: левый поворотник выводит левую камеру на приборку, правый показывает окошко на главном экране. Если датчик видит машину сзади-сбоку, окно подсвечивается оранжевой рамкой.&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/settings-blindspot.jpg&quot; alt=&quot;Настройки → Дисплей → Слепые зоны&quot; width=&quot;800&quot; /&gt; 
&lt;p&gt;Включается в &lt;strong&gt;Настройки → Дисплей&lt;/strong&gt;, раздел «Слепые зоны» (по умолчанию выключено). Там же настраиваются порог скорости, ниже которого камера не показывается, ширина окошка и его положение: кнопка «Настроить положение» показывает пустое окошко, которое перетаскивается пальцем туда, где будет камера. Если левая камера на приборке мешает, включите там же «Обе камеры на главный экран»: обе картинки будут показываться на планшете, приборка не трогается. Левое окошко по умолчанию стоит зеркально правому, а кнопка «Положение левой камеры» под тумблером задаёт ему своё место. Тумблер «Окно камеры вертикально» ставит окошко вертикально и поворачивает картинку на 90 градусов, как в зеркале: если после включения картинка повёрнута не в ту сторону, напишите в issue. Нужна комплектация с круговым обзором. На некоторых машинах с DiLink 4.0 прошивка не даёт приложениям доступ к камерам, там функция не работает.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Голосовой AI-агент&lt;/h2&gt; 
&lt;p&gt;Полноценный русский голосовой помощник внутри BYDMate. Речь распознаётся прямо на головном устройстве, без интернета: нейросеть GigaAM v3 слушает и понимает по-русски. Простые команды исполняются мгновенно локальным разбором, всё остальное решает AI-агент: языковая модель с 32 инструментами, которая сама читает данные машины, управляет функциями кузова, строит маршруты, запускает сценарии и отвечает голосом.&lt;/p&gt; 
&lt;h3&gt;Почему русский, и только русский&lt;/h3&gt; 
&lt;p&gt;Штатный голосовой помощник BYD уже нативно работает с английским и китайским. Делать ещё один английский помощник бессмысленно. BYDMate закрывает то, чего в машине нет вообще: русский язык. Поэтому распознавание речи, разбор команд и голоса озвучки заточены именно под русский, английская версия агента не планируется.&lt;/p&gt; 
&lt;h3&gt;Как включить&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Настройки → Голос-агент&lt;/strong&gt;: включите тумблер &lt;strong&gt;«Голосовой AI-агент»&lt;/strong&gt;. &lt;em&gt;Что должно произойти:&lt;/em&gt; ниже появятся поля имени, характера и рода агента.&lt;/li&gt; 
 &lt;li&gt;Задайте ключ языковой модели: &lt;strong&gt;Настройки → Интеграции → AI подключения&lt;/strong&gt;. Рекомендуем OpenRouter (регистрация на &lt;a href=&quot;http://openrouter.ai&quot;&gt;openrouter.ai&lt;/a&gt;, платно, доли цента за вопрос) и быструю модель, например Gemini Flash. Есть бесплатный вариант &lt;a href=&quot;http://z.ai&quot;&gt;z.ai&lt;/a&gt; с моделью glm-4.7-flash, но он отвечает заметно медленнее. Третий вариант: свой OpenAI-совместимый сервер. &lt;em&gt;Что должно произойти:&lt;/em&gt; у подключения появится отметка, что ключ задан. Можно указать и два подключения: при сбое основного агент сам переключится на второе.&lt;/li&gt; 
 &lt;li&gt;Вернитесь в &lt;strong&gt;Голос-агент&lt;/strong&gt;, раздел «Агент», и нажмите &lt;strong&gt;«Тест модели»&lt;/strong&gt;. &lt;em&gt;Что должно произойти:&lt;/em&gt; под кнопкой появится название модели, время ответа и короткая фраза от агента. Если кнопка серая, ключ не сохранён: проверьте его в Интеграциях. Кнопка &lt;strong&gt;«Чат с агентом (отладка)»&lt;/strong&gt; рядом позволяет проверить ответы текстом ещё до микрофона.&lt;/li&gt; 
 &lt;li&gt;В разделе &lt;strong&gt;«Распознавание речи»&lt;/strong&gt; нажмите &lt;strong&gt;«Скачать (226 МБ)»&lt;/strong&gt;, лучше по Wi-Fi. &lt;em&gt;Что должно произойти:&lt;/em&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;em&gt;Что должно произойти:&lt;/em&gt; ниже покажется текущая кнопка руля. На Leopard 3 она уже назначена, на других машинах нажмите &lt;strong&gt;«Назначить кнопку»&lt;/strong&gt; и один раз нажмите кнопку на руле.&lt;/li&gt; 
 &lt;li&gt;Нажмите кнопку руля и скажите «Сколько заряда?». &lt;em&gt;Что должно произойти:&lt;/em&gt; появится пилюля «Слушаю», после фразы короткий сигнал, через секунду-две ответ.&lt;/li&gt; 
 &lt;li&gt;По желанию озвучка: раздел &lt;strong&gt;«Ответы агента»&lt;/strong&gt;, включите тумблер и скачайте голос (обычный 18-21 МБ, либо улучшенный Марк или Софья 145 МБ на двоих). &lt;em&gt;Что должно произойти:&lt;/em&gt; агент начнёт отвечать вслух, без озвучки ответ остаётся текстом на экране.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/settings-voice.jpg&quot; alt=&quot;Настройки → Голос-агент: агент, имя, характер, голос&quot; width=&quot;800&quot; /&gt; 
&lt;h3&gt;Как разговаривать&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Нажмите голосовую кнопку на руле. На Leopard 3 она распознаётся из коробки, на других моделях любую кнопку можно обучить в настройках (перехват кнопки требует службы специальных возможностей, она включается автоматически).&lt;/li&gt; 
 &lt;li&gt;На экране появляется пилюля-индикатор «Слушаю». Её можно перетащить в любое место экрана, позиция запоминается. В пилюле видны последние реплики: «Ты:» и «Агент:».&lt;/li&gt; 
 &lt;li&gt;Говорите обычными фразами. Сессия непрерывная: после ответа агента можно сразу говорить дальше, кнопку повторно нажимать не нужно.&lt;/li&gt; 
 &lt;li&gt;Сессия завершается сама после 30 секунд тишины, с отдельным звуковым сигналом. Ограничения на длительность разговора нет: пока идёт диалог, агент слушает. Короткие сигналы подтверждают приём команды и сообщают об ошибке.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Перебивание по имени.&lt;/strong&gt; Если задать агенту имя (поле «Имя агента» в настройках), то во время его ответа достаточно произнести это имя: агент замолчит и снова слушает. Имя в начале фразы отбрасывается («Штурман, открой окна» понимается как «открой окна»). Важно: это не «горячее слово» как у Алисы, без нажатия кнопки агент микрофон не слушает. По умолчанию имя пустое и перебивание неактивно.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Что умеет агент&lt;/h3&gt; 
&lt;p&gt;У агента 32 инструмента. Примеры фраз:&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;«Открой окна», «Включи подогрев сиденья», «Поставь климат на 22» (полный каталог из 97 команд, см. ниже)&lt;/li&gt; 
 &lt;li&gt;«Сделай музыку громче», «Потише» (громкость медиа)&lt;/li&gt; 
&lt;/ul&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;«Запиши зарядку на 30 киловатт-часов за 200 рублей» (ручная запись в журнал зарядок)&lt;/li&gt; 
 &lt;li&gt;«Какой у меня средний расход?»&lt;/li&gt; 
&lt;/ul&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;При включённом разделении экрана ассистент сначала свернёт его, построит маршрут и вернёт панели на место: иначе прошивка пересоздаёт Навигатор и маршрут теряется. Нужен включённый сервис специальных возможностей BYDMate&lt;/li&gt; 
 &lt;li&gt;Скажите «в картах»: «поехали домой в картах», «найди заправку в яндекс картах» — маршрут, поиск и показ точки уйдут в Яндекс Карты, без этих слов маршрут идёт в навигатор, выбранный в настройке «Навигатор для маршрутов» (Настройки → Голос-агент → Агент), по умолчанию это Яндекс Навигатор, на выбор также 2ГИС, Яндекс Карты и Waze&lt;/li&gt; 
 &lt;li&gt;«Найди зарядки рядом»&lt;/li&gt; 
 &lt;li&gt;«Хватит ли заряда до Казани?», «Сколько ехать до аэропорта?»&lt;/li&gt; 
 &lt;li&gt;«Запомни это место как дача», «Какие места сохранены?»&lt;/li&gt; 
 &lt;li&gt;«Выведи навигацию на приборку», «Убери с приборки» (проекция Яндекс Навигатора)&lt;/li&gt; 
&lt;/ul&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;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;p&gt;&lt;strong&gt;Интернет&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;«Какая погода?», «Какая погода в Москве завтра?»&lt;/li&gt; 
 &lt;li&gt;«Поищи в интернете, когда выйдет обновление DiLink»&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Управление машиной: каталог из 97 команд&lt;/h3&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;/td&gt; 
   &lt;td&gt;все, передние, задние, водителя, пассажира, задние левое и правое; открыть, закрыть, наполовину, проветривание, для группы и для каждого окна по отдельности&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Климат&lt;/td&gt; 
   &lt;td&gt;включить, выключить, температура от 16 до 33&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Подогрев сидений&lt;/td&gt; 
   &lt;td&gt;водитель и пассажир, уровни 1-5 и выключение&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Вентиляция сидений&lt;/td&gt; 
   &lt;td&gt;водитель и пассажир, уровни 1-5 и выключение&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Зеркала&lt;/td&gt; 
   &lt;td&gt;обогрев вкл/выкл&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Руль&lt;/td&gt; 
   &lt;td&gt;подогрев вкл/выкл, на машинах с подогревом руля&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Свет&lt;/td&gt; 
   &lt;td&gt;салон, подсветка и другие режимы (6 команд)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Замки&lt;/td&gt; 
   &lt;td&gt;запереть, отпереть&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Люк и шторка&lt;/td&gt; 
   &lt;td&gt;открыть, закрыть, промежуточные положения&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Багажник&lt;/td&gt; 
   &lt;td&gt;открыть, закрыть&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Передний багажник&lt;/td&gt; 
   &lt;td&gt;открыть, закрыть&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Холодильник&lt;/td&gt; 
   &lt;td&gt;охлаждение от -6 до +6, нагрев от 35 до 50, выключение&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Аварийка&lt;/td&gt; 
   &lt;td&gt;включить, выключить&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Безопасность: открытие окон блокируется на скорости выше 120 км/ч, люка выше 80 км/ч, отпирание дверей выше 30 км/ч; передний багажник открывается только на стоящей машине.&lt;/p&gt; 
&lt;h3&gt;Быстрые команды без агента и без интернета&lt;/h3&gt; 
&lt;p&gt;Частые команды исполняются мгновенно, без языковой модели и без сети. Для этого в приложении есть закреплённый список русских фраз: окна и люк, подогрев и вентиляция сидений, подогрев руля, зеркала, климат, вентилятор, громкость, замки, багажник и свет.&lt;/p&gt; 
&lt;p&gt;Как это работает:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Фраза выполняется офлайн, только если сказана целиком и так, как в списке. Другая формулировка того же уходит агенту.&lt;/li&gt; 
 &lt;li&gt;Вежливые слова не мешают: «пожалуйста», «можешь», «слушай», «спасибо» просто отбрасываются.&lt;/li&gt; 
 &lt;li&gt;«A и B» выполняет обе команды, если каждая из них есть в списке: «открой окно водителя и закрой люк».&lt;/li&gt; 
 &lt;li&gt;Окна и люк открываются на долю: «наполовину», «на 50 процентов», «чуть-чуть», «полностью», «на треть». Процент приводится к ближайшему поддерживаемому положению вниз, окно никогда не откроется шире названного.&lt;/li&gt; 
 &lt;li&gt;Всё остальное уходит облачному AI-агенту, если он включён. Без агента такая фраза получает ответ «не понял», а фразы из списка продолжают работать.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Примеры фраз из списка. Полный список с вариантами формулировок: &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/VOICE_COMMANDS.md&quot;&gt;docs/VOICE_COMMANDS.md&lt;/a&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;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;«Открой окна»&lt;/td&gt; 
   &lt;td&gt;все окна откроются полностью&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;«Открой окно на 50 процентов»&lt;/td&gt; 
   &lt;td&gt;окно водителя наполовину&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;«Приоткрой окно водителя»&lt;/td&gt; 
   &lt;td&gt;окно водителя на проветривание&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;«Режим проветривания»&lt;/td&gt; 
   &lt;td&gt;все окна на проветривание, люк приподнимется&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;«Выключи режим проветривания»&lt;/td&gt; 
   &lt;td&gt;окна и люк закроются&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;«Открой люк наполовину»&lt;/td&gt; 
   &lt;td&gt;люк откроется наполовину&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;«Включи подогрев сиденья пассажира на второй уровень»&lt;/td&gt; 
   &lt;td&gt;подогрев сиденья пассажира, уровень 2&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;«Включи подогрев руля»&lt;/td&gt; 
   &lt;td&gt;подогрев руля&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;«Поставь температуру 22»&lt;/td&gt; 
   &lt;td&gt;климат на 22 градуса&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;«Громкость 20»&lt;/td&gt; 
   &lt;td&gt;громкость музыки 20&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;«Включи Яндекс Музыку», «Яндекс Музыка»&lt;/td&gt; 
   &lt;td&gt;включает «Мою волну» в Яндекс Музыке&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;«Запри машину»&lt;/td&gt; 
   &lt;td&gt;двери заперты&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Английские офлайн-команды убраны, список только русский. Язык интерфейса на это не влияет: офлайн-команды и агент работают при любом языке приложения.&lt;/p&gt; 
&lt;h3&gt;Ключи: что вводить, а что не обязательно&lt;/h3&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;OpenRouter&lt;/td&gt; 
   &lt;td&gt;Достаточно одного любого LLM-ключа; для скорости рекомендуется OpenRouter&lt;/td&gt; 
   &lt;td&gt;Мозг агента. Быстрые модели (например, Gemini Flash) отвечают почти мгновенно, цена: доли цента за запрос&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;a href=&quot;http://z.ai&quot;&gt;z.ai&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;Бесплатная альтернатива&lt;/td&gt; 
   &lt;td&gt;Мозг агента, модель glm-4.7-flash, бесплатно, но отвечает заметно медленнее&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Свой сервер&lt;/td&gt; 
   &lt;td&gt;Альтернатива&lt;/td&gt; 
   &lt;td&gt;Любой OpenAI-совместимый эндпоинт: URL, ключ, модель&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Exa&lt;/td&gt; 
   &lt;td&gt;Нет&lt;/td&gt; 
   &lt;td&gt;Улучшенный веб-поиск. Без него «поищи в интернете» работает через нативный поиск LLM-провайдера&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;MiniMax&lt;/td&gt; 
   &lt;td&gt;Нет&lt;/td&gt; 
   &lt;td&gt;Только для онлайн-голоса MiniMax, на работу агента не влияет&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Все ключи вводятся в приложении и хранятся локально, в коде и в репозитории секретов нет.&lt;/p&gt; 
&lt;h3&gt;Голоса&lt;/h3&gt; 
&lt;p&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;th&gt;Качество&lt;/th&gt; 
  &lt;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Дмитрий (по умолчанию)&lt;/td&gt; 
   &lt;td&gt;мужской&lt;/td&gt; 
   &lt;td&gt;21 МБ&lt;/td&gt; 
   &lt;td&gt;обычное&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Алёна&lt;/td&gt; 
   &lt;td&gt;женский&lt;/td&gt; 
   &lt;td&gt;18 МБ&lt;/td&gt; 
   &lt;td&gt;обычное&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Руслан&lt;/td&gt; 
   &lt;td&gt;мужской&lt;/td&gt; 
   &lt;td&gt;21 МБ&lt;/td&gt; 
   &lt;td&gt;обычное&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Ирина&lt;/td&gt; 
   &lt;td&gt;женский&lt;/td&gt; 
   &lt;td&gt;21 МБ&lt;/td&gt; 
   &lt;td&gt;обычное&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Марк&lt;/td&gt; 
   &lt;td&gt;мужской&lt;/td&gt; 
   &lt;td&gt;145 МБ&lt;/td&gt; 
   &lt;td&gt;улучшенное&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Софья&lt;/td&gt; 
   &lt;td&gt;женский&lt;/td&gt; 
   &lt;td&gt;145 МБ&lt;/td&gt; 
   &lt;td&gt;улучшенное&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Марк и Софья (движок Supertonic) звучат заметно естественнее обычных, но весят больше и делят один архив: скачав любого, второго уже не докачиваете. Скорость и живость интонации настраиваются слайдерами, рядом кнопка «Прослушать пример».&lt;/p&gt; 
&lt;p&gt;Онлайн-голоса (опционально, звучат естественнее): Gemini и OpenAI через ключ OpenRouter, MiniMax через свой ключ (три способа подключения: официальный API, fal.run, replicate). Офлайн-подмены нет: если онлайн-голос не отвечает или падает, реплика остаётся текстом в пилюле-орбе, но не проговаривается.&lt;/p&gt; 
&lt;p&gt;Про громкость: ответы агента идут через голосовой канал BYD (тот же, что у штатных подсказок), его громкость регулируется системной настройкой голоса. Команда «сделай громче» меняет громкость музыки, а не голоса агента. Если агент кажется тихим или громким, крутите системную громкость голоса.&lt;/p&gt; 
&lt;h3&gt;От чего зависит скорость ответа&lt;/h3&gt; 
&lt;p&gt;Агент работает в три шага, и задержка копится на каждом.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Речь в текст.&lt;/strong&gt; Целиком на устройстве, без сети. Скорость упирается в процессор головы.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Понимание фразы.&lt;/strong&gt; Фразы из встроенного списка исполняются почти мгновенно. Всё остальное уходит в языковую модель: сколько она думает плюс пинг до провайдера. Это и есть основная задержка. Gemini Flash через OpenRouter отвечает за доли секунды, бесплатная glm-4.7-flash заметно медленнее.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Озвучка ответа.&lt;/strong&gt; Офлайн-голоса лёгкие и быстрые, но время всё равно занимают. Онлайн-голоса медленнее: они тоже зависят от пинга.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Нужна максимальная скорость: выключите тумблер «Ответы агента». Озвучки не будет, реплика останется текстом на экране, а работать будут только первые два шага. Быстрые команды при этом исполняются вообще без интернета.&lt;/p&gt; 
&lt;h3&gt;Характер агента&lt;/h3&gt; 
&lt;p&gt;В настройках выбирается один из трёх характеров ответов (по умолчанию «Штурман») и род агента (мужской или женский), от этого зависят формулировки и устные реплики. Там же задаётся имя для перебивания.&lt;/p&gt; 
&lt;h3&gt;Приватность&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Звук с микрофона не покидает машину: распознавание речи полностью офлайн.&lt;/li&gt; 
 &lt;li&gt;В облако (к LLM-провайдеру) уходит только текст: ваша фраза и данные, которые агент достал инструментами для ответа.&lt;/li&gt; 
 &lt;li&gt;Голосовой журнал (последние 50 распознаваний с результатами, для самодиагностики) хранится только на головном устройстве и сохраняется между перезапусками. Он попадает в файл записи логов: что услышала магнитола, какой командой это стало и почему отказано. Экран журнала: Настройки → Голос-агент → «Журнал голоса», там видно, как фраза была распознана, куда ушла и чем закончилась.&lt;/li&gt; 
 &lt;li&gt;Для проверки агента без микрофона есть текстовый чат (отладочный экран в настройках).&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Отключение штатного помощника BYD&lt;/h3&gt; 
&lt;p&gt;Внизу раздела «Голос-агент» есть тумблер, который отключает штатный голосовой помощник BYD, чтобы он не просыпался параллельно с агентом. Полностью обратимо, применяется после перезагрузки машины (и включение, и выключение). По умолчанию выключено.&lt;/p&gt; 
&lt;p&gt;Штатный помощник отключается в системе машины, поэтому перед удалением BYDMate выключите этот тумблер, иначе штатный помощник останется отключённым. Как вернуть штатного помощника, если BYDMate уже удалён: установите BYDMate снова, выключите тумблер и перезагрузите мультимедиа.&lt;/p&gt; 
&lt;h3&gt;Требования&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Место на диске: модель распознавания 226 МБ плюс голос озвучки (обычный 18-21 МБ, либо улучшенный Марк/Софья 145 МБ на двоих). Итого примерно от 245 до 370 МБ.&lt;/li&gt; 
 &lt;li&gt;Интернет: нужен только AI-агенту (языковая модель), погоде, поиску и онлайн-голосам. Распознавание речи, быстрые команды и офлайн-голоса работают без сети.&lt;/li&gt; 
 &lt;li&gt;Разрешения: микрофон (запрашивается при включении) и служба специальных возможностей для кнопки руля (включается автоматически).&lt;/li&gt; 
 &lt;li&gt;Проверено на Leopard 3 (DiLink 5.0). Голосовая кнопка руля из коробки настроена под Leopard 3, на других моделях обучите свою кнопку в настройках.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Память о водителе&lt;/h3&gt; 
&lt;p&gt;Скажите агенту, как вас зовут или что вы обычно предпочитаете, и он будет помнить это между разговорами. «Забудь …» убирает один факт. Список фактов и кнопка «Забыть всё»: Настройки → Голос-агент → Агент. Факты хранятся только на головном устройстве и уходят лишь в запрос к выбранной вами языковой модели.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Плавающий виджет&lt;/h2&gt; 
&lt;p&gt;Компактный overlay 260×108 dp поверх других приложений — видно на карте, в медиа, в BYD-приложениях.&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/widget-infographic.jpg&quot; alt=&quot;Расшифровка виджета: что где показано&quot; width=&quot;900&quot; /&gt; 
&lt;h3&gt;Что показано&lt;/h3&gt; 
&lt;p&gt;Семь полей в 3 строки. Цвета: иконки серые, значения белые. Рамка и SOC% подсвечиваются цветом статуса (SOC или 12V — что хуже).&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Верхняя строка&lt;/strong&gt; (мелким, 13sp):&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;⏱ &lt;strong&gt;Длительность текущей поездки&lt;/strong&gt; — &lt;code&gt;N мин&lt;/code&gt; или &lt;code&gt;X ч Y мин&lt;/code&gt; (напр. &lt;code&gt;47 мин&lt;/code&gt;, &lt;code&gt;1 ч 12 мин&lt;/code&gt;). Старт — момент включения зажигания, конец — выключение. Простои с включённой машиной (стоишь с кондиционером, пассажир вышел купить воды, светофор) входят в поездку — пока электрика жива, счётчик не сбрасывается&lt;/li&gt; 
 &lt;li&gt;🚗 &lt;strong&gt;Температура в салоне&lt;/strong&gt; — °C&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Центральная строка&lt;/strong&gt; (крупно, главные значения):&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;SOC %&lt;/strong&gt; (18sp bold, цветной) — заряд тяговой батареи. Зелёный &amp;gt; 50%, жёлтый 20–50%, красный &amp;lt; 20%&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;~N км&lt;/strong&gt; (28sp белым) — расчётный запас хода: &lt;code&gt;SOC × ёмкость батареи ÷ baseline-расход × 100&lt;/code&gt;. Тильда подчёркивает что это оценка, не показания БК. Подробнее про то, как считается baseline-расход, ниже в разделе «Запас хода»&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;X.X ↓&lt;/strong&gt; (18sp, цветной по тренду) — &lt;strong&gt;расход текущей поездки&lt;/strong&gt;, кВт·ч/100км, со стрелкой тренда (см. ниже)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Нижняя строка&lt;/strong&gt; (мелким, 13sp):&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;🔋 &lt;strong&gt;Температура батареи&lt;/strong&gt; — °C&lt;/li&gt; 
 &lt;li&gt;⚡ &lt;strong&gt;12V&lt;/strong&gt; — напряжение бортовой сети, В. Норма 12.5–14.7 В, &amp;lt; 12.0 В = жёлтый, &amp;lt; 11.7 В = красный&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Расход и стрелка тренда (правый блок)&lt;/h3&gt; 
&lt;p&gt;Цифра справа — расход текущей поездки в кВт·ч/100км. Считается как энергия, потраченная с момента включения зажигания, делённая на пройденные с того же момента километры. По мере движения цифра сходится к тому значению, которое в итоге запишется в историю поездок: что видно в виджете в момент остановки, то и попадёт в карточку поездки.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Первые 2 километра&lt;/strong&gt; виджет плавно переходит со среднего расхода прошлой поездки на расход текущей: до 300 м показывает прошлое значение, с 300 м до 2 км линейно подмешивает текущее, после 2 км показывает только текущее. Так не пугают резкие 50–60 кВт·ч/100км из холодного старта и разгона: пока поездка короткая, за основу берётся уже устоявшийся средний расход прошлой поездки, и только когда дистанция становится представительной, цифра уходит на собственный расход.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;На стоянке&lt;/strong&gt; (зажигание выключено) показывается средний расход прошлой завершённой поездки — то же значение, что было видно в её последний момент.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Запас хода&lt;/strong&gt; &lt;code&gt;~N км&lt;/code&gt; считается по смеси: 50% веса берётся от последней завершённой поездки, 30% от предпоследней и 20% от той, что была до неё (короткие поездки до 3 км в расчёт не идут — это не репрезентативный пробег). Когда едешь длинную дорогу, к этой смеси добавляется ещё расход за последние 10 км текущей поездки: его доля растёт от нуля на первых трёх километрах до половины к 25 километрам. Так прогноз быстро подхватывает смену стиля (городской хвост перед трассой, обратно с трассы в город), но не дёргается на коротких заездах и стоянках с климатом.&lt;/p&gt; 
&lt;p&gt;Это автоматический расчёт. Если он вам не подходит, в &lt;strong&gt;Настройки → Авто и батарея → «Способ расчёта запаса хода»&lt;/strong&gt; есть метод «Ручной»: своя таблица из 5 точек, температура батареи от +20 до -20 °C и расход при ней, опционально с запасом хода на 100% заряда.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Стрелка тренда&lt;/strong&gt; появляется после 2 км пробега и сравнивает скользящее 25-километровое среднее с твоим обычным стилем (среднее по последним 10 поездкам):&lt;/p&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;/ul&gt; 
&lt;p&gt;Стрелка не дёргается от каждой остановки на светофоре — есть небольшая инерция: чтобы стрелка сменила цвет, расход должен заметно отличаться от обычного и держаться так минимум минуту.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Что такое «поездка»&lt;/strong&gt; для этой цифры. Один цикл зажигания: включил → выключил. Стоянка с включённым кондиционером внутри поездки учитывается естественно — лишние кВт·ч попадают в общий знаменатель. Короткие блипы (светофор, переподключение) не раскалывают поездку на две. Если DiLink прибьёт приложение посреди трассы — после рестарта счёт продолжается с реального момента включения зажигания, а не с нуля.&lt;/p&gt; 
&lt;h3&gt;Управление&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Обычный тап&lt;/strong&gt; — открыть BYDMate&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Долгий тап (1.5 сек)&lt;/strong&gt; — скрыть до следующего открытия BYDMate&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;hr /&gt; 
&lt;h2&gt;Разделение экрана&lt;/h2&gt; 
&lt;p&gt;Два приложения на экране одновременно: одно занимает две трети, второе треть. Типичная пара - навигатор пошире, музыка или мессенджер поуже. Стороны меняются местами, приложения - на ходу, выбранная пара запоминается.&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/split-screen.jpg&quot; alt=&quot;Разделение экрана 1/3 + 2/3&quot; width=&quot;800&quot; /&gt; 
&lt;h3&gt;Включение&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Откройте &lt;strong&gt;Настройки → Разделение экрана&lt;/strong&gt; и включите тумблер «Разделение экрана 1/3 + 2/3».&lt;/li&gt; 
 &lt;li&gt;Если под тумблером появилась надпись про перезагрузку - один раз перезагрузите головное устройство (долгое зажатие колёсика громкости). А если у вас уже включён режим проекции «Расширенный», перезагрузка не нужна: всё необходимое уже работает.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Пока функция выключена, приложение системных настроек машины не трогает. Выключение тумблера возвращает настройку к заводскому значению - если только оконный режим не нужен ещё и проекции «Расширенный»: тогда настройка вернётся к заводской, когда выключите и её.&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/settings-split.jpg&quot; alt=&quot;Настройки → Разделение экрана&quot; width=&quot;800&quot; /&gt; 
&lt;h3&gt;Механизм разделения&lt;/h3&gt; 
&lt;p&gt;В настройках, под тумблером, выбирается, чем делить экран: «Окна BYDMate» (по умолчанию) или «Родное разделение».&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Окна BYDMate&lt;/strong&gt; - те самые 1/3 и 2/3 с пилюлей управления, описанные ниже.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Родное разделение&lt;/strong&gt; - делит экран сама прошивка машины. Этот вариант работает и там, где окна BYDMate недоступны (DiLink 5.1). Вид зависит от прошивки: где поддерживаются трети, открываются панели 1/3 и 2/3, на остальных экран делится пополам, а второе приложение выбирается системным окном.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;На прошивках с новым интерфейсом UI7 выбор механизма не появляется: там разделение выполняет сама машина, панели 1/3 и 2/3 родные, перезагрузка головного устройства для включения не нужна.&lt;/p&gt; 
&lt;h3&gt;Запуск&lt;/h3&gt; 
&lt;p&gt;Три способа. Значок «?» рядом с заголовком секции в настройках напоминает о них прямо в машине.&lt;/p&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;/ul&gt; 
&lt;h3&gt;Первый запуск и выбор приложений&lt;/h3&gt; 
&lt;p&gt;При первом запуске приложение спросит, что показывать: сначала выбирается приложение для широкой части (2/3), затем для узкой (1/3). Пара запоминается, следующий запуск открывает её сразу. Сменить приложения можно через пилюлю или в настройках; там же есть «Сбросить последнюю пару».&lt;/p&gt; 
&lt;h3&gt;Пилюля управления&lt;/h3&gt; 
&lt;p&gt;Пока разделение активно, внизу экрана висит маленькая пилюля. Тап по ней открывает меню: поменять стороны, поменять приложения, выбрать другое приложение для левой или правой панели, выход в обычный полный экран. Когда разделение закрывается, пилюля исчезает сама.&lt;/p&gt; 
&lt;h3&gt;Как это уживается с остальным&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Если поверх разворачивается что-то полноэкранное (задний ход, камеры, видео), разделение закрывается само. Вернуть его можно любым обычным способом - тапом по виджету или голосом.&lt;/li&gt; 
 &lt;li&gt;Кнопка «Назад» из BYDMate возвращает к разделению.&lt;/li&gt; 
 &lt;li&gt;Если запустить штатное разделение экрана DiLink, наше корректно завершится - два разделения одновременно не работают.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Зарядки&lt;/h2&gt; 
&lt;p&gt;Вкладка &lt;strong&gt;Зарядки&lt;/strong&gt; автоматически ведёт журнал реальных пополнений заряда: список зарядок по месяцам, статистика за период и за всё время, фильтры AC и DC. Не каждое подключение пистолета становится записью: запись создаётся только если SoC реально вырос. Если кто-то ткнул пистолет и вынул через минуту, в журнал ничего не попадёт.&lt;/p&gt; 
&lt;h3&gt;Что засчитывается как зарядка&lt;/h3&gt; 
&lt;p&gt;Запись пишется, если за время сессии у машины выросла либо ёмкость батареи, либо SoC. BYDMate пробует три источника данных по очереди и берёт первое пригодное значение:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Прирост ёмкости&lt;/strong&gt; в кВт·ч, если бортовая система сообщила обновлённое значение.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Прирост SoC&lt;/strong&gt; за активную сессию, переведённый в кВт·ч по текущей ёмкости батареи.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Грубая оценка&lt;/strong&gt; по дельте SoC от полной номинальной ёмкости, если первые два варианта пустые.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Если BYDMate работает в момент зарядки, запись появляется сразу. Если подключение случилось до запуска приложения или машина уехала в глубокий сон, BYDMate догоняет запись на следующем старте, как только увидит, что SoC прыгнул вверх по сравнению с тем, что было до зарядки. Поэтому даже offline-зарядки в гараже попадают в журнал.&lt;/p&gt; 
&lt;h3&gt;Как определяется AC или DC&lt;/h3&gt; 
&lt;p&gt;Тип зарядки определяется по двум сигналам, по приоритету:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Тип разъёма&lt;/strong&gt; от бортовой системы: gun-state 2 = AC, 3 или 4 = DC. На некоторых моделях BYD значение приходит не всегда, тогда работает следующий пункт.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Средняя мощность сессии&lt;/strong&gt;: больше 15 кВт = DC, иначе AC. AC-зарядка физически не выдаёт больше 11 кВт, DC-станции стартуют от 22 кВт (CCS slow), поэтому порог 15 кВт уверенно разделяет два режима.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;На вкладке Зарядки три фильтра: «Все», «AC», «DC».&lt;/p&gt; 
&lt;h3&gt;Ручное добавление и редактирование&lt;/h3&gt; 
&lt;p&gt;Если запись не появилась автоматически или цифры выглядят странно:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Кнопка &lt;code&gt;+ зарядка&lt;/code&gt;&lt;/strong&gt; в шапке вкладки: добавить сессию вручную с указанием даты, длительности, кВт·ч, тарифа.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Долгое нажатие на запись&lt;/strong&gt;: открывается меню «Изменить» / «Удалить». В режиме редактирования можно поправить любое поле уже сохранённой зарядки.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;Функция в активном тестировании. На Leopard 3 пишется стабильно. На других моделях BYD автоматика может сработать неточно: например, бортовая система не сообщит мощность или тип разъёма, тогда AC и DC может определиться неправильно. В таких случаях правьте записи вручную и при возможности присылайте логи в &lt;a href=&quot;https://github.com/AndyShaman/BYDMate/issues&quot;&gt;Issues&lt;/a&gt;.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Тарифы и стоимость&lt;/h2&gt; 
&lt;p&gt;Стоимость каждой зарядки и каждой поездки BYDMate считает сам. Чтобы цифры были честными, ему нужны две вещи: ваша цена киловатт-часа и дата, с которой эта цена действует.&lt;/p&gt; 
&lt;h3&gt;Где задать тариф&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Настройки → Авто и батарея → «Тарифы и периоды» → «Открыть»&lt;/strong&gt;. Откроется отдельное окно со списком периодов, настройки им не забиваются.&lt;/p&gt; 
&lt;p&gt;Период — это «с какой даты действует цена». У периода есть дата начала, цена дома (AC), цена на быстрых зарядках (DC), потери и правило расчёта поездок. Конца у периода нет: он действует до следующего периода или до сегодня, если следующего нет. Самый первый период покрывает всю историю до себя, поэтому старые поездки не остаются без цены.&lt;/p&gt; 
&lt;p&gt;Когда вы ставите тариф в первый раз (или обновляетесь со старой версии), BYDMate заводит один период «с начала истории» с вашими текущими цифрами. Пока вы не добавите второй период, всё работает как раньше.&lt;/p&gt; 
&lt;h3&gt;Как поменять тариф задним числом&lt;/h3&gt; 
&lt;p&gt;Цена выросла с 1 сентября, а вспомнили вы об этом 16-го? Ничего страшного.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Откройте «Тарифы и периоды» и нажмите &lt;strong&gt;«Добавить период»&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;В поле &lt;strong&gt;«Действует с»&lt;/strong&gt; выберите 1 сентября.&lt;/li&gt; 
 &lt;li&gt;Впишите новые цены и сохраните.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Всё, что произошло 1 сентября и позже, пересчитается автоматически: и зарядки, и поездки. Август останется по старой цене. Отдельной кнопки «пересчитать» нет и не нужно, пересчёт запускается сам при сохранении периода.&lt;/p&gt; 
&lt;p&gt;Так же работает и правка: если поменять цену в уже существующем периоде, пересчитается всё от его даты и до конца истории.&lt;/p&gt; 
&lt;h3&gt;Потери на зарядке&lt;/h3&gt; 
&lt;p&gt;В машину влилось 50 кВт·ч, а счётчик дома намотал 55. Разница уходит в зарядное устройство и нагрев: часть энергии до батареи просто не доезжает. Платите вы за 55, а BYDMate видит только 50, поэтому без поправки стоимость получается заниженной.&lt;/p&gt; 
&lt;p&gt;В каждом периоде есть два поля: &lt;strong&gt;потери AC&lt;/strong&gt; и &lt;strong&gt;потери DC&lt;/strong&gt;. По умолчанию 10% для домашней (AC) и 5% для быстрой (DC) зарядки — это типичные значения из замеров ADAC и исследований DLR: на медленной зарядке через бортовое зарядное устройство теряется порядка 10%, на быстрой постоянным током меньше, порядка 5%. Ток в машину идёт напрямую, поэтому и потерь меньше.&lt;/p&gt; 
&lt;p&gt;Стоимость считается так: сколько влилось в батарею, делим на (1 − потери) и умножаем на цену киловатт-часа. 50 кВт·ч при потерях 10% — это 55,6 кВт·ч оплаченных.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Как уточнить под себя.&lt;/strong&gt; Запишите показания домашнего счётчика до и после зарядки, откройте карточку этой зарядки (долгое нажатие на запись → «Изменить») и впишите разницу в поле &lt;strong&gt;«Счётчик»&lt;/strong&gt;. Для этой зарядки BYDMate возьмёт вашу цифру вместо оценки. Когда таких зарядок наберётся несколько, в окне тарифов появится строка «Ваши потери по счётчику: AC …% , DC …%» — это средний процент по вашим замерам. Впишите его в поля потерь, и дальше все зарядки будут считаться по вашей реальной цифре.&lt;/p&gt; 
&lt;h3&gt;Как считается стоимость поездки&lt;/h3&gt; 
&lt;p&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;strong&gt;Дом&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;По домашней цене периода&lt;/td&gt; 
   &lt;td&gt;Заряжаетесь в основном дома. Это значение по умолчанию&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;&lt;strong&gt;DC&lt;/strong&gt;&lt;/td&gt; 
   &lt;td&gt;По цене быстрой зарядки периода&lt;/td&gt; 
   &lt;td&gt;Дома не заряжаетесь вообще&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;/td&gt; 
   &lt;td&gt;Знаете свою среднюю цену и хотите зафиксировать её&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;/td&gt; 
   &lt;td&gt;Заряжаетесь и дома, и на трассе, и хотите точности&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Правило «По зарядкам» ведёт цену энергии в батарее: после каждой зарядки новая энергия смешивается с остатком, и цена становится средневзвешенной. Дешёвая ночная зарядка удешевляет киловатт-час, дорогая быстрая делает его дороже. Если перед поездкой зарядок ещё не было или последняя была больше 60 дней назад, BYDMate берёт домашнюю цену периода, чтобы поездка не осталась без стоимости.&lt;/p&gt; 
&lt;h3&gt;Что не пересчитывается&lt;/h3&gt; 
&lt;p&gt;Пересчёт никогда не трогает зарядки, где цену вы задали руками:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;зарядка, добавленная кнопкой &lt;strong&gt;«+ зарядка»&lt;/strong&gt; с указанием тарифа;&lt;/li&gt; 
 &lt;li&gt;зарядка, у которой вы в карточке поправили тариф вручную;&lt;/li&gt; 
 &lt;li&gt;зарядка, где вы вписали показание счётчика.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Это сделано специально: вы видели чек и счётчик, приложение нет. Такие записи остаются как есть при любой смене тарифов.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Как вернуть запись в общий расчёт.&lt;/strong&gt; Откройте её карточку и нажмите &lt;strong&gt;«Считать по периоду»&lt;/strong&gt;. Показание счётчика и ручная пометка снимутся, стоимость пересчитается по тарифу и потерям периода, и дальше запись будет меняться вместе с остальными.&lt;/p&gt; 
&lt;h2&gt;Сохранение конфигурации и Telegram-бот&lt;/h2&gt; 
&lt;p&gt;Всё, что вы настроили и накопили, сохраняется одним архивом. Им можно вернуть данные после переустановки, перенести BYDMate на другую магнитолу или просто держать копию в Telegram.&lt;/p&gt; 
&lt;p&gt;Всё находится в &lt;strong&gt;Настройки → Сервис и данные → Данные → «Конфигурация»&lt;/strong&gt;.&lt;/p&gt; 
&lt;h3&gt;Сохранить конфигурацию&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;В строке «Сохранить конфигурацию» нажмите &lt;strong&gt;«Сохранить»&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&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;: OpenRouter, ABRP, Telegram-бот и другие. По умолчанию не отмечены. Не отмечайте их, если отдаёте файл другому человеку.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;Нажмите &lt;strong&gt;«Сохранить»&lt;/strong&gt;. Архив &lt;code&gt;bydmate_backup_&amp;lt;дата&amp;gt;.zip&lt;/code&gt; появится в папке Download. Если подключён Telegram-бот, копия уйдёт и туда.&lt;/li&gt; 
 &lt;li&gt;В окне «Сохранено» можно сразу нажать &lt;strong&gt;«Поделиться»&lt;/strong&gt;. В архиве история поездок, поэтому делитесь только с тем, кому доверяете.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Восстановить конфигурацию&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;В строке «Восстановить конфигурацию» нажмите &lt;strong&gt;«Выбрать файл»&lt;/strong&gt;. Откроется список архивов &lt;code&gt;bydmate_backup_*.zip&lt;/code&gt; из папки Download, автоматические копии тоже там. Это свой список приложения, а не системный выбор файла, поэтому он работает и на прошивках, где системный выбор не даёт доступа к файлу.&lt;/li&gt; 
 &lt;li&gt;Выберите архив.&lt;/li&gt; 
 &lt;li&gt;В окне «Что восстановить» отметьте нужные части. Части, которых в архиве нет, выбрать нельзя. Неотмеченные части останутся как есть.&lt;/li&gt; 
 &lt;li&gt;Нажмите &lt;strong&gt;«Восстановить»&lt;/strong&gt;. Выбранные данные заменятся содержимым архива, приложение перезапустится.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;На чистой установке&lt;/strong&gt; всё так же: поставьте BYDMate, положите архив в Download и восстановите его. Право показывать виджет поверх других приложений приложение вернёт само, если работает ADB. Что осталось сделать вручную, оно покажет в одном окне «После восстановления»: микрофон, контакты, модель распознавания речи, голос озвучки, перезагрузка магнитолы. Рядом с пунктами есть кнопки «Разрешить» и «Скачать».&lt;/p&gt; 
&lt;h3&gt;Автосохранение&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;В строке &lt;strong&gt;«Автосохранение»&lt;/strong&gt; выберите частоту: «Ежедневно», «Еженедельно» или «Ежемесячно». «Выкл» отключает автосохранение.&lt;/li&gt; 
 &lt;li&gt;Чипами «Таблицы», «Настройки» и «Ключи» выберите, что попадёт в копию. По умолчанию таблицы и настройки, без ключей.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Копия делается при запуске машины, если с прошлой прошло больше выбранного срока. «Ежедневно» значит: при первом запуске машины, когда с прошлой копии прошли сутки. В Download хранятся 5 последних автоматических копий, более старые удаляются. Архивы, сохранённые кнопкой вручную, не трогаются.&lt;/p&gt; 
&lt;p&gt;Если подключён Telegram-бот, каждая копия приходит в ваш чат с ботом. Не получилось отправить из-за сети, приложение повторит отправку позже. Под строкой видно время последней копии и результат: отправлено в Telegram, сохранено локально или ошибка.&lt;/p&gt; 
&lt;h3&gt;Как подключить Telegram-бот&lt;/h3&gt; 
&lt;p&gt;Бот нужен свой: копии приходят только в ваш чат с ботом или в вашу группу, куда вы его добавили.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;В Telegram откройте &lt;strong&gt;@BotFather&lt;/strong&gt;, отправьте ему &lt;code&gt;/newbot&lt;/code&gt;, придумайте имя и адрес бота. BotFather пришлёт токен: длинную строку вида &lt;code&gt;123456789:AA…&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;В BYDMate откройте &lt;strong&gt;Настройки → Сервис и данные → Данные&lt;/strong&gt;, блок &lt;strong&gt;«Telegram-бот»&lt;/strong&gt;. Вставьте токен в поле «Токен бота» и нажмите &lt;strong&gt;«Проверить»&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;Приложение покажет короткий код из цифр. Откройте в Telegram чат со своим ботом и отправьте ему этот код. Код можно скопировать кнопкой «Скопировать код». Чтобы отчёты и копии приходили в общий чат, например всем, кто ездит на машине, добавьте бота в свою закрытую группу и отправьте там &lt;code&gt;/start@имя_бота КОД&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;Вернитесь в BYDMate и снова нажмите &lt;strong&gt;«Проверить»&lt;/strong&gt;. Бот пришлёт в чат сообщение «BYDMate подключён. Сюда будут приходить бэкапы.», а в блоке появится отметка «Подключён» с именем бота и чата.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Ошибки видны сразу под кнопкой: неверный токен, нет сети, код ещё не пришёл, файл больше 50 МБ и другие. Кнопка «Назад» на шаге с кодом возвращает к токену, «Отключить» забывает бота, и копии остаются только в Download.&lt;/p&gt; 
&lt;p&gt;Архив не зашифрован. Бот и чат должны быть только вашими. Если бот уже подключён к вебхуку или другой программе, Telegram не отдаст приложению сообщения с кодом: отключите вебхук.&lt;/p&gt; 
&lt;h3&gt;Отчёт в Telegram при выключении машины&lt;/h3&gt; 
&lt;p&gt;Тот же бот может присылать короткий отчёт каждый раз, когда вы выключаете машину. Удобно, чтобы видеть, где она стоит, сколько заряда осталось и всё ли закрыто.&lt;/p&gt; 
&lt;p&gt;Включается там же, в блоке &lt;strong&gt;«Telegram-бот»&lt;/strong&gt;: переключатель &lt;strong&gt;«Отчёт при выключении машины»&lt;/strong&gt;. Ниже галочками выбираете, что попадёт в отчёт:&lt;/p&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;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;TRIP 1&lt;/strong&gt; и &lt;strong&gt;TRIP 2&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;/ul&gt; 
&lt;p&gt;Отчёт уходит в первые секунды после выключения через мобильный интернет машины. Если связи нет, он придёт при следующем включении, с пометкой, когда данные записаны.&lt;/p&gt; 
&lt;p&gt;Тот же отчёт можно отправлять из автоматизации: действие &lt;strong&gt;«Отчёт в Telegram»&lt;/strong&gt;. В нём свой набор пунктов и, по желанию, свой текст под заголовком. Например, правило «въезд в зону Дом» может присылать заряд и что открыто.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Здоровье батареи (SoH)&lt;/h2&gt; 
&lt;p&gt;SoH (State of Health) — это процент «здоровья» тяговой батареи, который рассчитывает сама бортовая система автомобиля по своим внутренним алгоритмам.&lt;/p&gt; 
&lt;p&gt;На &lt;strong&gt;BYD Leopard 3 (Fangchengbao Bao 3)&lt;/strong&gt; BYDMate берёт это значение напрямую из бортовой системы и показывает в карточке батареи на Главной. Это &lt;strong&gt;реальный SoH от машины&lt;/strong&gt;, а не оценка по разнице SoC: BYDMate просто читает то, что пишет себе сама машина.&lt;/p&gt; 
&lt;p&gt;На других моделях BYD доступ к этому значению пока не подтверждён, поэтому SoH там не отображается. Остальные ячейки карточки (температура батареи, 12V, разброс ячеек, сопротивление изоляции) работают на всех поддерживаемых моделях.&lt;/p&gt; 
&lt;p&gt;Тап по карточке открывает экран &lt;strong&gt;«Техника»&lt;/strong&gt;: напряжение и ток тяговой батареи, остаток энергии батареи в кВт·ч по данным BMS, доступная мощность батареи, лимиты BMS на заряд и разряд, разброс ячеек, температуры моторов и инверторов, доля мощности перед/зад в процентах, климат, давление и температура шин, история SoH и пробега, число полных циклов заряда батареи с подписью, из какой суммы кВт·ч оно посчитано. У каждого параметра есть значок «?» с подсказкой простым языком. Если машина не отдаёт параметр, строка показывает «-», пустые карточки скрываются.&lt;/p&gt; 
&lt;p&gt;Если в вашей машине SoH доступен и вы хотите помочь добавить поддержку, заведите &lt;a href=&quot;https://github.com/AndyShaman/BYDMate/issues&quot;&gt;Issue&lt;/a&gt; с указанием модели и года выпуска.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;SoH и автоматическая запись зарядок (Leopard 3)&lt;/h2&gt; 
&lt;p&gt;SoH и автоматическая запись зарядок на Leopard 3 работают автоматически, отдельно ничего включать не нужно. BYDMate читает значения напрямую от бортовой системы автомобиля, как только активна беспроводная ADB-отладка.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Убедитесь, что ADB-отладка активна (см. раздел «Установка»).&lt;/li&gt; 
 &lt;li&gt;SoH появится в карточке батареи на Главной, а зарядки начнут записываться автоматически с реальными значениями кВт·ч.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;blockquote&gt; 
 &lt;p&gt;На Leopard 3 эти функции протестированы. На других моделях BYD доступ к этим данным не подтверждён, тогда SoH и точная мощность зарядок могут не появиться, но остальные функции BYDMate работают как обычно.&lt;/p&gt; 
&lt;/blockquote&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Если у вас не Leopard 3&lt;/h2&gt; 
&lt;p&gt;BYDMate разрабатывается и тестируется на BYD Leopard 3 (Fangchengbao Bao 3). На других моделях BYD большинство функций тоже работает, но есть отличия. Перед первым запуском проверьте:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;История поездок&lt;/strong&gt;: на Leopard 3 (Fangchengbao Bao 3) BYDMate читает поездки из встроенной BMS-базы &lt;code&gt;energydata&lt;/code&gt;. На моделях без этой базы (Song, Yuan и аналоги) поездки теперь записываются нативно, фоновым опросом параметров машины (источник NATIVE_POLLING), так что список больше не пустой. Расход в таких поездках считается по дельте SoC, поэтому он чуть грубее, чем на Leopard 3, где данные берутся из BMS.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Ёмкость батареи&lt;/strong&gt;: по умолчанию 72.9 кВт·ч под Leopard 3. Зайдите в &lt;strong&gt;Настройки → Авто и батарея&lt;/strong&gt; и поставьте свою ёмкость. Например, Atto 3 = 60.5 кВт·ч, Seal AWD = 82.5 кВт·ч, Han EV = 85.4 кВт·ч. Без этого расчёт запаса хода и стоимости поездок будет неточным.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;SoH&lt;/strong&gt;: подтверждён на Leopard 3 и на DiLink 3.0 (Yuan UP). На остальных моделях карточка «Здоровье батареи» работает без поля SoH.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Зарядки&lt;/strong&gt;: алгоритм AC и DC проектировался под Leopard 3. На других моделях запись может появиться с задержкой или с неточной мощностью, особенно для DC. Используйте ручное добавление и редактирование, если автоматика промахнулась.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Автоматизация и плавающий виджет&lt;/strong&gt;: работают одинаково на любой модели, потому что используют системный интерфейс машины.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Если что-то не работает или показывает странное, заведите &lt;a href=&quot;https://github.com/AndyShaman/BYDMate/issues&quot;&gt;Issue&lt;/a&gt; с указанием модели машины и версии прошивки DiLink - и приложите каталог параметров вашей машины: &lt;strong&gt;Настройки → Сервис и данные → «Сохранить каталог fid&#39;ов»&lt;/strong&gt;. Файл &lt;code&gt;fid-dump-….txt&lt;/code&gt; появится в папке Download. Внутри только технические идентификаторы параметров - без VIN, без геолокации, без личных данных.&lt;/p&gt; 
&lt;p&gt;Зачем это нужно. У разных моделей BYD наборы параметров различаются: команда, которая на Leopard 3 включает обдув сиденья, на Song может иметь другой номер или отсутствовать. Именно поэтому часть функций на других машинах не срабатывает. Каталог с вашей машины показывает, как параметры называются и нумеруются именно на вашей прошивке - и мы чиним по этим данным, а не вслепую.&lt;/p&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;/td&gt; 
   &lt;td&gt;DiLink 5.0 (Android 12, API 32)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Процессор&lt;/td&gt; 
   &lt;td&gt;Snapdragon 780G&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Экран&lt;/td&gt; 
   &lt;td&gt;15.6&quot; landscape, 1920x1200&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;GMS&lt;/td&gt; 
   &lt;td&gt;Нет (AOSP без Google Play Services)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Протестировано&lt;/td&gt; 
   &lt;td&gt;BYD Leopard 3 (Fangchengbao Bao 3)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Как работает&lt;/h2&gt; 
&lt;pre&gt;&lt;code&gt;BYD energydata (BMS SQLite)  →  HistoryImporter    →  Room DB  →  Compose UI
autoservice (системный Binder) →  TrackingService   ↗     ↓
Android LocationManager     →  TripTracker (GPS)    ↗   LocalInsightEngine
autoservice (запись команд)  ←  AutomationEngine   ←  Rules (Room DB)
&lt;/code&gt;&lt;/pre&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;/td&gt; 
   &lt;td&gt;BYD energydata (BMS)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;SOC, скорость, температуры&lt;/td&gt; 
   &lt;td&gt;Системный сервис машины (autoservice Binder)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Напряжение ячеек, 12V, SoH&lt;/td&gt; 
   &lt;td&gt;Системный сервис машины (autoservice Binder)&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;GPS координаты&lt;/td&gt; 
   &lt;td&gt;Android LocationManager&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;AI-аналитика&lt;/td&gt; 
   &lt;td&gt;Локальные правила на устройстве, без интернета&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Управление авто&lt;/td&gt; 
   &lt;td&gt;Системный сервис машины (запись команд)&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;&lt;strong&gt;Без OBD-адаптера&lt;/strong&gt; и &lt;strong&gt;без стороннего D+&lt;/strong&gt;. BYDMate читает данные и управляет машиной напрямую через системный сервис autoservice (тот же, что использует штатная система BYD) под shell-доступом по беспроводной ADB.&lt;/p&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;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;Голосовой агент (LLM)&lt;/td&gt; 
   &lt;td&gt;OpenRouter / &lt;a href=&quot;http://z.ai&quot;&gt;z.ai&lt;/a&gt; / свой сервер&lt;/td&gt; 
   &lt;td&gt;текст команды, состояние автомобиля (SOC, климат и т.п.), при навигационных запросах GPS-координаты&lt;/td&gt; 
   &lt;td&gt;только после настройки провайдера&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Веб-поиск агента&lt;/td&gt; 
   &lt;td&gt;Exa / &lt;a href=&quot;http://z.ai&quot;&gt;z.ai&lt;/a&gt; / OpenRouter&lt;/td&gt; 
   &lt;td&gt;текст поискового запроса&lt;/td&gt; 
   &lt;td&gt;ключ введён и агент вызвал инструмент&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Погода (агент)&lt;/td&gt; 
   &lt;td&gt;Open-Meteo&lt;/td&gt; 
   &lt;td&gt;GPS-координаты или название места (геокодинг)&lt;/td&gt; 
   &lt;td&gt;агент вызвал инструмент&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Зарядные станции (агент)&lt;/td&gt; 
   &lt;td&gt;Overpass (&lt;a href=&quot;http://overpass-api.de&quot;&gt;overpass-api.de&lt;/a&gt; / &lt;a href=&quot;http://maps.mail.ru&quot;&gt;maps.mail.ru&lt;/a&gt;)&lt;/td&gt; 
   &lt;td&gt;GPS-координаты&lt;/td&gt; 
   &lt;td&gt;агент вызвал инструмент&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Онлайн-голоса озвучки&lt;/td&gt; 
   &lt;td&gt;MiniMax / &lt;a href=&quot;http://fal.ai&quot;&gt;fal.ai&lt;/a&gt; / Replicate / OpenRouter&lt;/td&gt; 
   &lt;td&gt;текст озвучиваемого ответа&lt;/td&gt; 
   &lt;td&gt;только если выбран онлайн-голос&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Карта в деталях поездки&lt;/td&gt; 
   &lt;td&gt;тайл-серверы OpenStreetMap (или Amap, если выбран в настройках)&lt;/td&gt; 
   &lt;td&gt;координаты видимой области карты&lt;/td&gt; 
   &lt;td&gt;при открытии карты поездки или редактора мест&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Проверка обновлений&lt;/td&gt; 
   &lt;td&gt;GitHub API&lt;/td&gt; 
   &lt;td&gt;ничего (запрос списка релизов, сравнение версий локально)&lt;/td&gt; 
   &lt;td&gt;автоматически&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;ABRP live-телеметрия&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;http://abetterrouteplanner.com&quot;&gt;abetterrouteplanner.com&lt;/a&gt;&lt;/td&gt; 
   &lt;td&gt;SOC, мощность, скорость, температуры, одометр, давление шин, статус зарядки, ёмкость батареи, SoH, кВт·ч текущей сессии зарядки, модель автомобиля (GPS намеренно не отправляется)&lt;/td&gt; 
   &lt;td&gt;только после ввода токена&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Копии конфигурации в Telegram&lt;/td&gt; 
   &lt;td&gt;&lt;a href=&quot;http://api.telegram.org&quot;&gt;api.telegram.org&lt;/a&gt;, ваш бот&lt;/td&gt; 
   &lt;td&gt;архив конфигурации выбранного состава и сообщение при подключении бота&lt;/td&gt; 
   &lt;td&gt;только после подключения бота&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Вебхук телеметрии&lt;/td&gt; 
   &lt;td&gt;Настройки → Интеграции → Вебхук&lt;/td&gt; 
   &lt;td&gt;тот же JSON, что в ABRP, POST на ваш URL раз в 1/8/30 с (движение/зарядка/стоянка); координаты только по отдельному тумблеру&lt;/td&gt; 
   &lt;td&gt;выключен по умолчанию&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Без введённых ключей наружу уходят только проверка обновлений (GitHub) и тайлы карты при просмотре маршрута поездки, а также скачивание голосовых моделей по явному запросу пользователя (&lt;a href=&quot;http://github.com&quot;&gt;github.com&lt;/a&gt;). API-ключи хранятся локально в базе приложения и никуда не передаются, кроме самого провайдера.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Установка&lt;/h2&gt; 
&lt;h3&gt;1. Активация ADB&lt;/h3&gt; 
&lt;p&gt;Без ADB BYDMate работает как офлайн-журнал поездок: история из штатной базы, карта маршрута, сохранение конфигурации, AI-инсайты по уже накопленным данным.&lt;/p&gt; 
&lt;p&gt;Включённая ADB-отладка нужна для всего, что читает или пишет параметры машины: живые показатели в виджете и на дашборде (SOC, запас хода, температуры, 12V), SoH, автоматический журнал зарядок, автоматизация, вывод на приборку, разделение экрана, подсказки на HUD, камеры слепых зон, управление машиной голосом и запись логов.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Строка состояния ADB.&lt;/strong&gt; На Главной и в Настройках строка состояния показывает, почему не работает управление машиной: ADB не включён, ADB выключился после перезагрузки, нет доступа к ADB или не запустился помощник. По нажатию открывается подсказка с действием. В мастере первого запуска есть шаг «ADB» с кнопкой «Проверить».&lt;/p&gt; 
&lt;p&gt;Эти фичи включаются автоматически, отдельный переключатель не нужен. При первом запуске BYDMate DiLink один раз покажет диалог «Allow ADB debugging» — нажмите &lt;strong&gt;Allow&lt;/strong&gt; и поставьте галочку &lt;strong&gt;«Always allow from this computer»&lt;/strong&gt;, чтобы он не спрашивал заново.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;DiLink 3 / 4&lt;/strong&gt; — ADB можно активировать самостоятельно: установите &lt;a href=&quot;https://disk.yandex.by/d/e3gEnY9P2Y9_fQ&quot;&gt;BydDevelopmentTools&lt;/a&gt;, зайдите в &lt;em&gt;Настройки → Version Management&lt;/em&gt;, 10 раз тапните по тексту &lt;em&gt;Reset to factory default&lt;/em&gt;, активируйте &lt;em&gt;Debug Mode when USB is Connected&lt;/em&gt; и &lt;em&gt;Wireless adb debug switch&lt;/em&gt;. На обновлённых прошивках DiLink 3/4 ADB может быть так же закрыт, как на DiLink 5 — тогда придётся идти по пути ниже.&lt;/p&gt; &lt;/li&gt; 
 &lt;li&gt; &lt;p&gt;&lt;strong&gt;DiLink 5.0&lt;/strong&gt; — ADB-отладка &lt;strong&gt;заблокирована&lt;/strong&gt; и открывается только удалённо из Китая. Сделать это можно через продавцов на &lt;strong&gt;TaoBao&lt;/strong&gt; (поиск по &lt;code&gt;DiLink 5.0&lt;/code&gt;, ~40 ¥ внутри Китая / ~80 ¥ извне, оплата через AliPay). Продавец удалённо открывает инженерное меню по присланному QR-коду, после чего ADB включается штатно.&lt;/p&gt; &lt;p&gt;Пошаговая инструкция: &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/guides/dilink5-adb-activation-ru.pdf&quot;&gt;PDF-гайд (русский)&lt;/a&gt; — приложен в репозитории.&lt;/p&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;ADB отключается после каждой перезагрузки&lt;/h4&gt; 
&lt;p&gt;На прошивках DiLink с лета 2026 (сборки «2606») порт ADB закрывается при каждой перезагрузке головного устройства, и все функции управления машиной перестают работать до ручного включения ADB. Для таких машин в &lt;strong&gt;Настройках → Система машины&lt;/strong&gt; есть тумблер &lt;strong&gt;«Восстанавливать ADB после перезагрузки»&lt;/strong&gt; (по умолчанию выключен): приложение поднимает ADB заново через встроенную в Android беспроводную отладку. Рядом с тумблером есть значок «?» с подробным объяснением, а под ним строка состояния.&lt;/p&gt; 
&lt;p&gt;Что нужно знать:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Wi-Fi в машине должен быть включён и подключён к сети&lt;/strong&gt; (домашней, к раздаче с телефона, любой). Без Wi-Fi Android не даёт включить беспроводную отладку, обойти это нельзя.&lt;/li&gt; 
 &lt;li&gt;При первом включении &lt;strong&gt;на каждой новой сети&lt;/strong&gt; на экране появится системный диалог «Allow wireless debugging on this network?». Когда тумблер восстановления включён, приложение подтверждает его само через свою службу специальных возможностей: на раздаче с телефона сеть меняется при каждом включении, и «Always allow on this network» там не помогает. Если служба специальных возможностей BYDMate выключена, отметьте «Always allow on this network» и нажмите ALLOW.&lt;/li&gt; 
 &lt;li&gt;Один раз, пока ADB ещё работает, приложение выдаёт себе системное разрешение &lt;code&gt;WRITE_SECURE_SETTINGS&lt;/code&gt; (одной командой через ADB). Без него включить беспроводную отладку нельзя: строка состояния покажет «Нужна активация».&lt;/li&gt; 
 &lt;li&gt;После загрузки приложение само повторяет попытки, пока Wi-Fi подключён, и реагирует на разблокировку экрана. Обычно ADB возвращается через 10–30 секунд после того, как машина подключилась к Wi-Fi. Удобнее всего, если раздача с телефона уже включена к моменту запуска машины.&lt;/li&gt; 
 &lt;li&gt;Если на вашей прошивке ADB и так переживает перезагрузку, включать тумблер не нужно: строка состояния покажет «Не требуется».&lt;/li&gt; 
 &lt;li&gt;Проверено на DiLink 5.0 (Song L) с прошивкой августа 2026.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;2. DiPlus (D+) больше не нужен&lt;/h3&gt; 
&lt;p&gt;Начиная с версии 3.0.0 BYDMate работает напрямую с системой машины и &lt;strong&gt;не требует&lt;/strong&gt; стороннего приложения D+ (迪加). Все данные читаются и команды отправляются через системный сервис автомобиля.&lt;/p&gt; 
&lt;p&gt;Если вы пользовались прежними версиями и устанавливали D+, после проверки работы BYDMate его можно удалить с DiLink.&lt;/p&gt; 
&lt;h3&gt;3. Установка BYDMate&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Скачайте BYDMate APK из &lt;a href=&quot;https://github.com/AndyShaman/BYDMate/releases&quot;&gt;&lt;strong&gt;Releases&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;Перенесите на DiLink: через USB-флешку, по сети, или через ADB (&lt;code&gt;adb install BYDMate.apk&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;Разрешите установку из неизвестных источников, если потребуется&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;4. Первый запуск&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;Откройте BYDMate — появится мастер настройки&lt;/li&gt; 
 &lt;li&gt;Выдайте разрешения на &lt;strong&gt;локацию&lt;/strong&gt; и &lt;strong&gt;хранилище&lt;/strong&gt;. По мере включения функций приложение попросит ещё: микрофон для голосового агента, камеру для камер слепых зон, контакты для звонков по имени, показ поверх других приложений для виджета и уведомлений, доступ к статистике использования для определения активного приложения Постоянное уведомление BYDMate в шторке убрать нельзя (Android требует его для работы в фоне), но его можно сделать тихим: Настройки → Сервис и данные → «Тихое уведомление в шторке».&lt;/li&gt; 
 &lt;li&gt;Укажите &lt;strong&gt;тарифы&lt;/strong&gt; на электроэнергию (для расчёта стоимости поездок). Позже их можно поменять задним числом, см. раздел &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/#%D1%82%D0%B0%D1%80%D0%B8%D1%84%D1%8B-%D0%B8-%D1%81%D1%82%D0%BE%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&quot;&gt;«Тарифы и стоимость»&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;В Автоматизации доступен вид действия &quot;Охранный режим&quot;: включает или отключает охранный режим BYD (Centuri/Sentry) напрямую через системную настройку, минуя диалог подтверждения штатного приложения&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;5. Фоновая работа&lt;/h3&gt; 
&lt;p&gt;&lt;strong&gt;Важно:&lt;/strong&gt; отключите &quot;Disable background Apps&quot; для BYDMate, иначе DiLink будет убивать приложение:&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/dilink-whitelist.jpg&quot; alt=&quot;Disable background apps — toggle OFF for BYDMate&quot; width=&quot;600&quot; /&gt; 
&lt;p&gt;&lt;em&gt;DiLink &amp;gt; Settings &amp;gt; General &amp;gt; Disable background Apps &amp;gt; BYDMate = &lt;strong&gt;OFF&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; 
&lt;h3&gt;6. Настройка (опционально)&lt;/h3&gt; 
&lt;p&gt;В &lt;strong&gt;Настройках&lt;/strong&gt; можно изменить:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Ёмкость батареи&lt;/strong&gt; — по умолчанию 72.9 кВт·ч (Leopard 3)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Тарифы и периоды&lt;/strong&gt; — цена дома (AC) и на быстрых зарядках (DC), потери, правило расчёта поездок и валюта. Подробно в разделе &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/#%D1%82%D0%B0%D1%80%D0%B8%D1%84%D1%8B-%D0%B8-%D1%81%D1%82%D0%BE%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C&quot;&gt;«Тарифы и стоимость»&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Пороги расхода&lt;/strong&gt; — границы для цветовой индикации (зелёный/жёлтый/красный)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Система машины&lt;/h2&gt; 
&lt;p&gt;В &lt;strong&gt;Настройки → Сервис и данные → Система машины&lt;/strong&gt; два пункта, которые меняют поведение самой машины, а не приложения.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Колёсико громкости на руле.&lt;/strong&gt; Тумблер, при котором нажатие ставит воспроизведение на паузу и продолжает его, а не переключает источник звука. Нужен после обновления прошивки, где нажатие стало менять источник. По умолчанию выключено.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Язык интерфейса машины.&lt;/strong&gt; Только на прошивках UI7. Кнопка открывает скрытый штатный диалог BYD с полным списком языков, включая русский, украинский и польский. Язык меняет сама прошивка, приложение ничего не записывает. У части владельцев на русском перестаёт работать автопарковка, тогда верните English той же кнопкой.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;AI Инсайты&lt;/h2&gt; 
&lt;p&gt;Карточка на дашборде анализирует вашу статистику за последние 7 дней (сравнение с предыдущими 7) и показывает заголовок, краткий вывод, таблицу метрик и до &lt;strong&gt;5 рекомендаций&lt;/strong&gt;. Работает &lt;strong&gt;без интернета&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;Всё считается прямо на устройстве по данным поездок и батареи. Обновляется сама раз в день, результат кэшируется. В развёрнутом окне карточки период переключается между неделей и месяцем.&lt;/p&gt; 
&lt;h3&gt;Откуда берутся данные&lt;/h3&gt; 
&lt;p&gt;Всё считается из локальной базы Room — &lt;strong&gt;без GPS, маршрутов и персональных идентификаторов&lt;/strong&gt;:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Поездки&lt;/strong&gt; — км, кВт·ч, средний расход, скорость, короткие поездки (&amp;lt; 5 км), лучшая/худшая по расходу, стоимость&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Простой с мотором&lt;/strong&gt; — кВт·ч и часы (&lt;code&gt;idle_drains&lt;/code&gt;)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Ночной простой&lt;/strong&gt; — сессии, начавшиеся в &lt;strong&gt;22:00–06:00&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Зарядки&lt;/strong&gt; — AC/DC кВт·ч, число сессий, цена за кВт·ч, общая стоимость за неделю&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;12V&lt;/strong&gt; — текущее напряжение и тренд за неделю (история до 7 дней)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Ячейки&lt;/strong&gt; — разброс max−min в мВ из live-данных машины&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Температура&lt;/strong&gt; — средняя наружная по поездкам&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;strong&gt;Минимум для анализа:&lt;/strong&gt; не менее &lt;strong&gt;5 поездок&lt;/strong&gt; за последние 7 дней. Иначе карточка покажет «Мало данных для анализа».&lt;/p&gt; 
&lt;h3&gt;Как устроена карточка&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Заголовок и summary&lt;/strong&gt; — одно главное сообщение недели. Выбирается правилом с наивысшим приоритетом (см. ниже).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Dynamics&lt;/strong&gt; — таблица «неделя к неделе»: расход, поездки, % коротких поездок, средняя дистанция, простой с мотором, ночной простой.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Рекомендации&lt;/strong&gt; — до 5 bullets из подходящих правил, отсортированных по важности.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Логика движка — &lt;code&gt;LocalInsightEngine.kt&lt;/code&gt;: детерминированные пороги + шаблоны строк (&lt;code&gt;local_insight_*&lt;/code&gt; в &lt;code&gt;strings.xml&lt;/code&gt;). Тексты локализованы на 6 языков (ru / en / zh / pt / pl / be).&lt;/p&gt; 
&lt;h3&gt;Приоритет заголовка&lt;/h3&gt; 
&lt;p&gt;Что важнее — то и в заголовке. Первое сработавшее правило с большим priority:&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;90&lt;/td&gt; 
   &lt;td&gt;12V &amp;lt; 11.8 В&lt;/td&gt; 
   &lt;td&gt;«12V критично низкий»&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;85&lt;/td&gt; 
   &lt;td&gt;Разброс ячеек &amp;gt; 50 мВ&lt;/td&gt; 
   &lt;td&gt;«Большой разброс банок»&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;80&lt;/td&gt; 
   &lt;td&gt;Расход ↑ &amp;gt; 15% к прошлой неделе&lt;/td&gt; 
   &lt;td&gt;«Расход ▲15% за неделю»&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;78&lt;/td&gt; 
   &lt;td&gt;Ночной drain ≥ 4 кВт·ч и ≥ 35% простоя&lt;/td&gt; 
   &lt;td&gt;«Ночной расход на стоянке»&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;70&lt;/td&gt; 
   &lt;td&gt;Расход ↑ &amp;gt; 5%&lt;/td&gt; 
   &lt;td&gt;«Расход ▲8% за неделю»&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;60&lt;/td&gt; 
   &lt;td&gt;Расход ↓ &amp;gt; 5%&lt;/td&gt; 
   &lt;td&gt;«Расход ▼10%»&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;10&lt;/td&gt; 
   &lt;td&gt;Иначе&lt;/td&gt; 
   &lt;td&gt;«Расход стабилен»&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h3&gt;Рекомендации (bullets)&lt;/h3&gt; 
&lt;p&gt;Параллельно проверяется набор правил; в карточку попадают &lt;strong&gt;до 5&lt;/strong&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;/tr&gt; 
 &lt;/thead&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Ночной простой&lt;/td&gt; 
   &lt;td&gt;Ночью ушло ≥ 0.3 кВт·ч с мотором&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;DC дороже AC&lt;/td&gt; 
   &lt;td&gt;Оба типа зарядки ≥ 3 кВт·ч, DC на 15%+ дороже&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Много DC&lt;/td&gt; 
   &lt;td&gt;≥ 2 DC-сессий, DC &amp;gt; AC×1.5&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Короткие поездки&lt;/td&gt; 
   &lt;td&gt;≥ 40% поездок короче 5 км&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Простой с мотором&lt;/td&gt; 
   &lt;td&gt;≥ 2 кВт·ч на стоянке&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;12V низкий / падает&lt;/td&gt; 
   &lt;td&gt;11.8–12.4 В или тренд вниз за неделю&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Разброс ячеек&lt;/td&gt; 
   &lt;td&gt;31–50 мВ&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Зима + рост расхода&lt;/td&gt; 
   &lt;td&gt;≤ 5°C и расход вырос&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Лучшая / худшая поездка&lt;/td&gt; 
   &lt;td&gt;Разброс ≥ 5 кВт·ч/100&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Снижение расхода&lt;/td&gt; 
   &lt;td&gt;↓ &amp;gt; 5% к прошлой неделе&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Трасса&lt;/td&gt; 
   &lt;td&gt;Средняя скорость ≥ 75 км/ч&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Высокий / низкий расход&lt;/td&gt; 
   &lt;td&gt;≥ 28 или ≤ 16 кВт·ч/100&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Рост пробега / поездок&lt;/td&gt; 
   &lt;td&gt;+20% к прошлой неделе&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Жара + кондиционер&lt;/td&gt; 
   &lt;td&gt;≥ 25°C, расход ≥ 22&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Смешанная зарядка&lt;/td&gt; 
   &lt;td&gt;AC и DC в одну неделю&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Стоимость&lt;/td&gt; 
   &lt;td&gt;Руб/100 км или зарядки за неделю&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td&gt;Хорошие привычки&lt;/td&gt; 
   &lt;td&gt;Мало ночного или дневного простоя, 12V/баланс в норме&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Полный список правил и порогов — в &lt;code&gt;LocalInsightEngine.kt&lt;/code&gt; и тестах &lt;code&gt;LocalInsightEngineTest.kt&lt;/code&gt;.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;ABRP — Live телеметрия&lt;/h2&gt; 
&lt;p&gt;BYDMate может отправлять живые показатели машины в &lt;a href=&quot;https://abetterrouteplanner.com/&quot;&gt;A Better Route Planner&lt;/a&gt; (ABRP) через официальный Iternio Telemetry API. ABRP использует эти данные, чтобы план маршрута и оценка остатка хода обновлялись по реальному состоянию батареи, а не по средним табличным значениям.&lt;/p&gt; 
&lt;img src=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/docs/screenshots/settings-integrations.jpg&quot; alt=&quot;Настройки → Интеграции: ABRP&quot; width=&quot;800&quot; /&gt; 
&lt;p&gt;Функция &lt;strong&gt;опциональная&lt;/strong&gt;, выключена по умолчанию и включается вручную в Настройках.&lt;/p&gt; 
&lt;h3&gt;Как получить токен&lt;/h3&gt; 
&lt;p&gt;ABRP использует «Generic Live Data Token» — отдельный токен на каждую машину в гараже:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Откройте &lt;a href=&quot;https://abetterrouteplanner.com/&quot;&gt;abetterrouteplanner.com&lt;/a&gt; и войдите в аккаунт.&lt;/li&gt; 
 &lt;li&gt;Перейдите в гараж и откройте машину, на которой хотите видеть live-данные. Машина должна быть &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;«Generic»&lt;/strong&gt; и нажмите &lt;strong&gt;«Привязать»&lt;/strong&gt;. Появится длинная строка-токен — это и есть &lt;code&gt;User Token&lt;/code&gt;.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;Если в списке нет «Generic»&lt;/strong&gt;: смените код модели машины в гараже ABRP на любую популярную модель BYD (например, BYD Atto 3 или BYD Seal), сохраните, и Generic появится. После привязки токена код модели можно вернуть обратно.&lt;/p&gt; 
&lt;h3&gt;Настройка в BYDMate&lt;/h3&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;Настройки → Интеграции&lt;/strong&gt; → раздел &lt;strong&gt;«ABRP — телеметрия»&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;Вставьте полученный токен в поле &lt;strong&gt;«Токен живых данных из ABRP»&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;Больше ничего настраивать не нужно: интервал отправки подбирается сам, секунда в движении, 8 секунд на зарядке, 30 секунд на стоянке. Полей «интервал» и «код модели» из старых версий больше нет.&lt;/li&gt; 
 &lt;li&gt;Нажмите &lt;strong&gt;«Сохранить ABRP»&lt;/strong&gt;, затем включите переключатель &lt;strong&gt;«Живые данные → A Better Route Planner»&lt;/strong&gt;. Без сохранённого токена переключатель остаётся неактивным.&lt;/li&gt; 
 &lt;li&gt;ABRP-приложение на DiLink (или браузер на телефоне) теперь будет видеть актуальный SOC, мощность, температуры, заряд.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h3&gt;Что отправляется&lt;/h3&gt; 
&lt;p&gt;Только агрегированные показатели машины, без идентификаторов:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;SOC&lt;/strong&gt; — текущий процент заряда тяговой батареи&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Speed&lt;/strong&gt; — скорость, км/ч&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Power&lt;/strong&gt; — текущая мощность тяги; на зарядке — мощность зарядки по напряжению и току со знаком минус, как требует Iternio&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Voltage / current&lt;/strong&gt; — напряжение и ток тяговой батареи&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;HVAC setpoint&lt;/strong&gt; — заданная температура климата&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Battery / cabin / exterior temp&lt;/strong&gt; — температуры батареи, салона и за бортом&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Capacity&lt;/strong&gt; — номинальная ёмкость батареи&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Odometer&lt;/strong&gt; — пробег, км&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Tire pressures&lt;/strong&gt; — давление в шинах (4 колеса)&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;is_charging / is_parked&lt;/strong&gt; — флаги состояния&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;is_dcfc / kwh_charged&lt;/strong&gt; — тип зарядной станции (DC vs AC) и количество кВт·ч в текущей сессии&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;soh&lt;/strong&gt; — реальный SoH батареи (Leopard 3)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Что НЕ отправляется&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;GPS-координаты не передаются.&lt;/strong&gt; ABRP запускается как отдельное приложение Android прямо на DiLink и читает геопозицию из ОС сам. Когда координаты приходили ещё и от BYDMate, машина на карте ABRP прыгала между двумя источниками, поэтому с версии 3.16 их отправка убрана совсем, вместе с настройкой. Для вебхука тумблер координат остался.&lt;/li&gt; 
 &lt;li&gt;Не отправляются: VIN, идентификатор устройства, история поездок, маршруты, пользовательские настройки.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Как ABRP считает остаток хода&lt;/h3&gt; 
&lt;p&gt;ABRP подбирает прогноз на основе модели машины из своей библиотеки + телеметрии: текущий SOC, температура батареи, скорость движения, ветер, профиль дороги, перепады высот. Свой собственный «расчётный остаток хода» BYDMate в ABRP не передаёт — у ABRP есть собственный, более точный расчёт под конкретный маршрут, в котором учитывается погода и рельеф.&lt;/p&gt; 
&lt;h3&gt;Вебхук: те же данные на свой сервер&lt;/h3&gt; 
&lt;p&gt;Тот же JSON, что уходит в ABRP, можно отправлять POST-запросом на свой адрес: Home Assistant, Node-RED, свой скрипт на VPS. Ничего не хранится в очереди: если сервер недоступен, точка теряется, следующая попытка через минуту.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Настройка&lt;/strong&gt;&lt;/p&gt; 
&lt;ol&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;URL&lt;/strong&gt;: только &lt;code&gt;https://&lt;/code&gt;. Обычный &lt;code&gt;http://&lt;/code&gt; не пройдёт (Android блокирует незашифрованный трафик, разрешён он только для &lt;code&gt;localhost&lt;/code&gt;). Если сервер без сертификата, поставьте перед ним Caddy или nginx с Let&#39;s Encrypt, либо туннель вроде Cloudflare Tunnel.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Секрет&lt;/strong&gt; (необязательно): строка, которая уйдёт в заголовке &lt;code&gt;Authorization: Bearer &amp;lt;секрет&amp;gt;&lt;/code&gt;. По нему сервер отличает вашу машину от чужих запросов.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;«Отправлять координаты на вебхук»&lt;/strong&gt;: по умолчанию выключено. Включайте только если сервер ваш: в JSON добавятся &lt;code&gt;lat&lt;/code&gt;, &lt;code&gt;lon&lt;/code&gt;, &lt;code&gt;heading&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;Нажмите &lt;strong&gt;«Сохранить вебхук»&lt;/strong&gt;, затем включите переключатель &lt;strong&gt;«Живые данные → свой сервер»&lt;/strong&gt;.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;Что приходит&lt;/strong&gt;&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;POST &amp;lt;ваш URL&amp;gt;&lt;/code&gt;, &lt;code&gt;Content-Type: application/json&lt;/code&gt;, одна точка в теле:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{&quot;utc&quot;:1756040000,&quot;soc&quot;:67,&quot;speed&quot;:52.0,&quot;power&quot;:18.4,&quot;batt_temp&quot;:29.0,&quot;ext_temp&quot;:24.5,
 &quot;capacity&quot;:72.9,&quot;odometer&quot;:12345.6,&quot;cabin_temp&quot;:22.0,
 &quot;tire_pressure_fl&quot;:2.5,&quot;tire_pressure_fr&quot;:2.5,&quot;tire_pressure_rl&quot;:2.4,&quot;tire_pressure_rr&quot;:2.4,
 &quot;is_charging&quot;:0,&quot;is_parked&quot;:0,&quot;soh&quot;:98.5,&quot;car_model&quot;:&quot;byd:leopard3&quot;}
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Поля и единицы те же, что в Iternio Telemetry API: &lt;code&gt;utc&lt;/code&gt; в секундах, &lt;code&gt;power&lt;/code&gt; в кВт (как отдаёт машина), температуры в °C, давление шин в бар, &lt;code&gt;odometer&lt;/code&gt; в км. Поля без данных (например, &lt;code&gt;speed&lt;/code&gt; на стоянке или &lt;code&gt;kwh_charged&lt;/code&gt; вне зарядки) просто отсутствуют. Ритм: раз в секунду в движении, раз в 8 секунд на зарядке, раз в 30 секунд на стоянке. Ответ сервера не разбирается, важен только статус 2xx; после ошибки следующая попытка через 60 секунд.&lt;/p&gt; 
&lt;p&gt;Вебхук работает независимо от ABRP: можно включить только его, только ABRP или оба.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Сборка из исходников&lt;/h2&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Требуется: JDK 17, Android SDK 34
git clone https://github.com/AndyShaman/BYDMate.git
cd BYDMate
./gradlew assembleDebug
&lt;/code&gt;&lt;/pre&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Стек технологий&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Kotlin&lt;/strong&gt; 2.1 + &lt;strong&gt;Jetpack Compose&lt;/strong&gt; + Material 3&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Room&lt;/strong&gt; (SQLite) + &lt;strong&gt;Hilt&lt;/strong&gt; (DI) + &lt;strong&gt;OkHttp&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;osmdroid&lt;/strong&gt; (OpenStreetMap) + &lt;strong&gt;Coroutines/Flow&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;Min SDK 29 / Target SDK 29 / Compile SDK 34&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Что делать при ошибках&lt;/h2&gt; 
&lt;p&gt;Если что-то не работает, действуйте по шагам — в большинстве случаев проблема решается первым же пунктом, а если нет, вы поможете нам быстро её найти.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;1. Перезагрузите головное устройство.&lt;/strong&gt; Зажмите колёсико громкости и держите, пока экран не уйдёт в перезагрузку. Часть функций (например, разделение экрана) включает системный флаг, который применяется только при загрузке — без перезагрузки функция выглядит «сломанной», хотя всё в порядке.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2. Запишите логи.&lt;/strong&gt; Настройки → раздел «Сервис и данные» → кнопка &lt;strong&gt;«Запись логов»&lt;/strong&gt;. Воспроизведите проблему (нажмите то, что не работает), затем нажмите &lt;strong&gt;«Остановить запись»&lt;/strong&gt;. Файл &lt;code&gt;bydmate_logs_&amp;lt;дата&amp;gt;.txt&lt;/code&gt; появится в папке &lt;code&gt;Download&lt;/code&gt; (запись останавливается сама через 2 часа, если забыли).&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;3. Сохраните каталог fid&#39;ов.&lt;/strong&gt; Настройки → раздел «Сервис и данные» → кнопка &lt;strong&gt;«Сохранить каталог fid&#39;ов»&lt;/strong&gt;. Файл &lt;code&gt;fid-dump-&amp;lt;дата&amp;gt;.txt&lt;/code&gt; появится в &lt;code&gt;Download&lt;/code&gt;. У разных моделей BYD разные каталоги команд — по этому файлу мы адаптируем приложение под вашу машину.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;4. Отправьте нам.&lt;/strong&gt; Создайте задачу в &lt;a href=&quot;https://github.com/AndyShaman/BYDMate/issues&quot;&gt;GitHub Issues&lt;/a&gt; и приложите: модель машины и поколение DiLink, версию BYDMate, что нажимали и что ожидали увидеть, файлы из шагов 2–3.&lt;/p&gt; 
&lt;p&gt;Типовые случаи:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Не работает разделение экрана или проекция на приборку&lt;/strong&gt; — перезагрузите головное устройство (шаг 1).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Команда выполняется, но машина не реагирует&lt;/strong&gt; (окна, люк, климат) — скорее всего, у вашей модели другой каталог команд: пришлите логи и каталог fid&#39;ов (шаги 2–4).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;После обновления что-то сломалось&lt;/strong&gt; — перезагрузите головное устройство; если не помогло, пришлите логи.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Кнопка «Тест модели» серая или в ответе ошибка&lt;/strong&gt; — ключ языковой модели не сохранён или сервер не отвечает: проверьте его в Настройки → Интеграции → AI подключения.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Кнопка руля не реагирует&lt;/strong&gt; — назначьте её заново (Настройки → Голос-агент → «Назначить кнопку») и проверьте, что службе специальных возможностей BYDMate выдано разрешение.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Агент отвечает текстом, а не голосом&lt;/strong&gt; — включите тумблер «Озвучивать ответы агента» и скачайте голос (раздел «Ответы агента»).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Голос агента еле слышно&lt;/strong&gt; — он идёт по системному каналу Voice, его громкость крутится отдельно от музыки: кнопками громкости во время ответа или в настройках звука машины.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;«Тест модели» проходит, а в разговоре агент отказывает&lt;/strong&gt; — пришлите логи в Issue и укажите, какое подключение и какая модель выбраны.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Благодарности&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.byd-seal-forum.de/forum/thread/1811-byd-trip-info-app/&quot;&gt;BYD Trip Info&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;org.jayb.bydapp&lt;/code&gt;) by jayb — оригинальное приложение для DiLink, вдохновение для BYDMate&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.dilink.cn/&quot;&gt;DiPlus&lt;/a&gt;&lt;/strong&gt; (迪加) by Van Design — приложение-мост к данным автомобиля, использовалось в ранних версиях BYDMate (с 3.0.0 больше не требуется)&lt;/li&gt; 
 &lt;li&gt;Weather data by &lt;a href=&quot;https://open-meteo.com/&quot;&gt;Open-Meteo.com&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/klimuts&quot;&gt;@klimuts&lt;/a&gt;&lt;/strong&gt; - подсказал механизм auto_container для вывода навигатора на приборку&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;@RBGboost&lt;/strong&gt; - реверс протокола SOME/IP заводского HUD и исходная реализация YandexHUD. Вывод подсказок Яндекс Навигатора на проекционный дисплей в BYDMate - его код и его заслуга. Поблагодарить можно в Telegram: &lt;a href=&quot;https://t.me/RBGboost&quot;&gt;@RBGboost&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/sunlixWhyNotAvailable/byd-turnsignal-cameraview&quot;&gt;byd-turnsignal-cameraview&lt;/a&gt;&lt;/strong&gt; by sunlixWhyNotAvailable — открытое исследование интерфейсов камер и окон DiLink, на котором основана функция камер слепых зон при поворотнике. Реализация в BYDMate написана с нуля, но его разбор сэкономил недели реверс-инжиниринга — спасибо!&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/danijar2000&quot;&gt;danijar2000&lt;/a&gt;&lt;/strong&gt; — фикс проекции 2GIS на приборку (2GIS завершался при переносе на дисплей приборки)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Поддержать проект&lt;/h2&gt; 
&lt;p&gt;Проект некоммерческий, делаю как хобби. Если захочется поблагодарить, реквизиты в &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/SUPPORT.md&quot;&gt;SUPPORT.md&lt;/a&gt;. Если нет, всё равно спасибо за доверие.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;h2&gt;Лицензия&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;PolyForm Noncommercial 1.0.0&lt;/strong&gt; — исходный код открыт, только некоммерческое использование. См. &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/LICENSE&quot;&gt;LICENSE&lt;/a&gt; для деталей.&lt;/p&gt; 
&lt;p&gt;Copyright (C) 2026 &lt;a href=&quot;https://github.com/AndyShaman&quot;&gt;AndyShaman&lt;/a&gt;&lt;/p&gt; 
&lt;hr /&gt; 
&lt;p&gt;English version: &lt;a href=&quot;https://raw.githubusercontent.com/AndyShaman/BYDMate/main/README.en.md&quot;&gt;README.en.md&lt;/a&gt;&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/dc98d01899cd8f7d8d2a84690498a7687b15831ed71491b6f01798ab9212f30f/AndyShaman/BYDMate" medium="image" />
      
    </item>
    
    <item>
      <title>rukamori/ArchiveTune</title>
      <link>https://github.com/rukamori/ArchiveTune</link>
      <description>&lt;p&gt;🌸 The Cutest Music Player With Support Local File and Youtube Music for Android!&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://mshibanami.github.io/GitHubTrendingRSS/assets/icons/link.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;link&quot; style=&quot;margin: 0 8px 0 0; padding: 0; display: inline-block; vertical-align: middle;&quot; /&gt;&lt;a href=&quot;https://archivetune.koiiverse.cloud&quot;&gt;https://archivetune.koiiverse.cloud&lt;/a&gt;&lt;/p&gt;&lt;hr&gt;&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://github.com/rukamori/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/rukamori/ArchiveTune/main/README.md&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/%F0%9F%87%BA%F0%9F%87%B8%2520English-6366f1?style=for-the-badge&amp;amp;labelColor=1e1e2e&quot; /&gt; &lt;/a&gt; &lt;a href=&quot;https://raw.githubusercontent.com/rukamori/ArchiveTune/main/README_JA.md&quot;&gt; &lt;img src=&quot;https://img.shields.io/badge/%F0%9F%87%AF%F0%9F%87%B5%2520%E6%97%A5%E6%9C%AC%E8%AA%9E-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/rukamori/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/rukamori/ArchiveTune/main/#download-now&quot;&gt;&lt;b&gt;Download&lt;/b&gt;&lt;/a&gt; • &lt;a href=&quot;https://raw.githubusercontent.com/rukamori/ArchiveTune/main/#screenshots&quot;&gt;&lt;b&gt;Screenshots&lt;/b&gt;&lt;/a&gt; • &lt;a href=&quot;https://github.com/rukamori/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/rukamori/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/rukamori/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/rukamori/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/rukamori/ArchiveTune?style=for-the-badge&amp;amp;color=6366f1&amp;amp;labelColor=1e1e2e&quot; alt=&quot;License&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/discord/1498315636714115224?style=for-the-badge&amp;amp;logo=discord&amp;amp;logoColor=ffffff&amp;amp;label=Discord&amp;amp;labelColor=6366f1&amp;amp;color=6366f1&quot; alt=&quot;Discord&quot; /&gt;&lt;/a&gt; 
 &lt;/div&gt; 
 &lt;br /&gt; 
 &lt;div align=&quot;center&gt;
  &lt;a href=&quot; https: fmhy.net mobile#youtube-music&quot; target=&quot;_blank&quot;&gt; 
  &lt;img src=&quot;https://cdn.jsdelivr.net/gh/JMcrafter26/badges@main/src/assets/available/fmhy/cozy.svg?sanitize=true&quot; alt=&quot;ArchiveTune | FMHY&quot; /&gt;  
  &lt;a href=&quot;https://kotlinlang.org&quot; target=&quot;_blank&quot;&gt; &lt;img src=&quot;https://cdn.jsdelivr.net/gh/JMcrafter26/badges@main/src/assets/built-with/kotlin/cozy.svg?sanitize=true&quot; alt=&quot;ArchiveTune | FMHY&quot; /&gt; &lt;/a&gt; 
 &lt;/div&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;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;Forks are not supported in any way.&lt;/strong&gt;&lt;br /&gt; We do not provide support, maintenance, troubleshooting, or assistance for any forked version of this project. If you choose to use a fork, you do so at your own risk.&lt;/p&gt; 
&lt;/div&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 with kotlin and jetpack compose, because we think your music should stay private, look clean, and work exactly the way you expect.&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; id=&quot;screenshots&quot;&gt; 
 &lt;img src=&quot;https://github.com/rukamori/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/rukamori/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/rukamori/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/rukamori/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/rukamori/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/rukamori/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/rukamori/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/rukamori/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/rukamori/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; id=&quot;features&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; id=&quot;download-now&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/rukamori/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.rukamori.archivetune&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/rukamori/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/rukamori/ArchiveTune/releases/latest&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/rukamori/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.rukamori.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/rukamori/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;Development 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/rukamori/ArchiveTune/workflows/build/dev/app-gms-mobile-universal-release&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/rukamori/ArchiveTune/refs/heads/main/assets/badge_github.png&quot; height=&quot;50&quot; alt=&quot;Download the latest ArchiveTune development build&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 Releases&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://github.com/rukamori/Nightly/releases/latest&quot;&gt; &lt;img src=&quot;https://raw.githubusercontent.com/rukamori/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/rukamori/ArchiveTune/graphs/contributors&quot;&gt; &lt;img src=&quot;https://contrib.rocks/image?repo=rukamori/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/rukamori/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;h3&gt;Open-Source Acknowledgments&lt;/h3&gt; 
&lt;p&gt;ArchiveTune is made possible by the work of many open-source projects and communities:&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 the 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 the 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, unison and artwork provider support.&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 component inspiration.&lt;/li&gt; 
 &lt;li&gt;Translators, beta testers, contributors, and community members who continue to support the project.&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;h2&gt;⚖️ License, Copyright, and Trademark Notice&lt;/h2&gt; 
&lt;p&gt;ArchiveTune is licensed under the &lt;strong&gt;GNU General Public License v3.0 (GPLv3)&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;You may copy, modify, and redistribute the source code, including commercially, provided that you comply with the GPLv3. This includes preserving applicable copyright and license notices, clearly identifying modified versions, and providing the corresponding source code when required.&lt;/p&gt; 
&lt;p&gt;Copyright © Rukamori and the ArchiveTune contributors for their respective original contributions.&lt;/p&gt; 
&lt;p&gt;The &lt;strong&gt;ArchiveTune™&lt;/strong&gt; name, logo, application icon, and official branding are not licensed under the GPLv3. Unofficial forks must not present themselves as official ArchiveTune releases or imply endorsement by the ArchiveTune maintainers.&lt;/p&gt; 
&lt;p&gt;See the &lt;a href=&quot;https://raw.githubusercontent.com/rukamori/ArchiveTune/main/LICENSE&quot;&gt;&lt;code&gt;LICENSE&lt;/code&gt;&lt;/a&gt; file for the complete GPLv3 terms.&lt;/p&gt; 
&lt;hr /&gt; 
&lt;div align=&quot;center&quot;&gt; 
 &lt;img src=&quot;https://raw.githubusercontent.com/rukamori/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/rukamori/ArchiveTune/refs/heads/dev/assets/badge_part.png&quot; alt=&quot;ArchiveTune Banner&quot; style=&quot;width: 180px&quot; /&gt; 
&lt;/div&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/ed08a20a4e7a4e322487c3b48d743f23d361730676e1ac708866a71d256eae31/rukamori/ArchiveTune" medium="image" />
      
    </item>
    
    <item>
      <title>andreknieriem/open-headunit</title>
      <link>https://github.com/andreknieriem/open-headunit</link>
      <description>&lt;p&gt;Headunit App for displaying Android Auto&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://mshibanami.github.io/GitHubTrendingRSS/assets/icons/link.png&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;link&quot; style=&quot;margin: 0 8px 0 0; padding: 0; display: inline-block; vertical-align: middle;&quot; /&gt;&lt;a href=&quot;https://headunit.andrerinas.com/&quot;&gt;https://headunit.andrerinas.com/&lt;/a&gt;&lt;/p&gt;&lt;hr&gt;&lt;h1&gt;Open Headunit&lt;/h1&gt; 
&lt;p&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.andrerinas.headunitrevived&quot;&gt;&lt;img alt=&quot;Get it on Google Play&quot; src=&quot;https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.amazon.com/gp/mas/dl/android?p=com.andrerinas.headunitrevived&quot;&gt;&lt;img alt=&quot;Available at Amazon Appstore&quot; src=&quot;https://images-na.ssl-images-amazon.com/images/G/01/mobile-apps/devportal2/res/images/amazon-appstore-badge-english-black.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p align=&quot;center&quot;&gt; &lt;img src=&quot;https://github.com/user-attachments/assets/579b7b03-23e0-4eda-a05d-c51d28a72113&quot; alt=&quot;Headunit Logo&quot; height=&quot;200&quot; /&gt; &lt;/p&gt; 
&lt;p&gt;Open Headunit is an Android app that allows you to turn your Android tablet or phone into an Android Auto receiver. This project is a revived version of the original headunit project by the great Michael Reid. The original project can be found here: &lt;a href=&quot;https://github.com/mikereidis/headunit&quot;&gt;https://github.com/mikereidis/headunit&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;NOTE!&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Android Auto 17.4 and newer can prevent legacy wireless triggers from launching projection, including Self-Mode and automated startup via Wireless Helper. Rooted devices have a workaround: re-enable Android Auto&#39;s wireless startup receiver.&lt;/strong&gt; Choose from the five options below according to your Android Auto version and setup:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;strong&gt;USB Wireless Android Auto Dongle (Recommended):&lt;/strong&gt; Hardware dongles provide seamless, hardware-level plug-and-play.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Native Mode:&lt;/strong&gt; Direct Wi-Fi Direct or Headunit Hotspot handshake.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Headunit Server (Developer Mode):&lt;/strong&gt; An option for wireless projection and Self-Mode without root. On the device running Android Auto, open its developer settings and tap &quot;Start Headunit Server&quot;.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Wireless Helper:&lt;/strong&gt; The legacy startup flow works with Android Auto up to &lt;strong&gt;17.3&lt;/strong&gt;; for &lt;strong&gt;17.4+&lt;/strong&gt; on rooted devices, see option 5.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Root workaround (AA 17.4+):&lt;/strong&gt; Re-enable &lt;code&gt;WirelessStartupReceiver&lt;/code&gt; with one root command to restore the previous wireless startup flow, including Wireless Helper, without starting the developer headunit server. See &lt;a href=&quot;https://raw.githubusercontent.com/andreknieriem/open-headunit/main/#5-root-workaround-for-android-auto-174&quot;&gt;the command and setup below&lt;/a&gt;.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;h2&gt;Screenshots&lt;/h2&gt; 
&lt;img width=&quot;1280&quot; height=&quot;800&quot; alt=&quot;image&quot; src=&quot;https://github.com/user-attachments/assets/22abbc13-75d5-436f-b0ae-2e92b7648d50&quot; /&gt; 
&lt;img width=&quot;1280&quot; height=&quot;800&quot; alt=&quot;image&quot; src=&quot;https://github.com/user-attachments/assets/f81149b3-a844-4657-87d2-a2867a5eb030&quot; /&gt; 
&lt;img width=&quot;1280&quot; height=&quot;800&quot; alt=&quot;image&quot; src=&quot;https://github.com/user-attachments/assets/140bbfdb-5b4f-4d49-a419-85aa91b48371&quot; /&gt; 
&lt;h2&gt;How to use&lt;/h2&gt; 
&lt;p&gt;&lt;strong&gt;Check out the &lt;a href=&quot;https://github.com/andreknieriem/open-headunit/wiki&quot;&gt;Wiki&lt;/a&gt; for detailed documentation, setup guides and troubleshooting!&lt;/strong&gt;&lt;/p&gt; 
&lt;h3&gt;Wired USB Connection&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Connect your Android device (phone) to the tablet running Open Headunit via USB cable.&lt;/li&gt; 
 &lt;li&gt;Make sure that Android Auto is installed on your phone.&lt;/li&gt; 
 &lt;li&gt;Set your phone to Host-Mode if nescessary and select Android Auto&lt;/li&gt; 
 &lt;li&gt;Click the USB Button in Open Headunit, find your phone and click the right button to allow connection&lt;/li&gt; 
 &lt;li&gt;Click on your phone in the list and wait for Android Auto to start&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Wireless Connection Options&lt;/h3&gt; 
&lt;p&gt;Choose from the five options below depending on your Android Auto version and setup:&lt;/p&gt; 
&lt;h4&gt;1. USB Wireless Android Auto Dongle (Most Reliable)&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;A standard hardware USB Wireless Android Auto Dongle (plugged into the headunit) handles the entire wireless negotiation independently.&lt;/li&gt; 
 &lt;li&gt;Provides seamless plug-and-play connection regardless of phone Android Auto version.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;2. Native Mode (Wi-Fi Direct / Headunit Hotspot)&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Directly communicates with Android Auto&#39;s native wireless protocol without helper apps.&lt;/li&gt; 
 &lt;li&gt;Supports &lt;strong&gt;Wi-Fi Direct (P2P)&lt;/strong&gt; or the &lt;strong&gt;Headunit Hotspot&lt;/strong&gt; transport.&lt;/li&gt; 
 &lt;li&gt;Configure under Open Headunit Settings -&amp;gt; &lt;strong&gt;Android Auto Mode&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Native Mode&lt;/strong&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;FYT external Bluetooth module transport (experimental)&lt;/h4&gt; 
&lt;p&gt;On FYT units where the phone pairs for calls with a separate Bluetooth module (for example &lt;strong&gt;DUDUAUTO&lt;/strong&gt; on DUDUOS), Native Mode can carry its Android Auto Bluetooth handshake through &lt;code&gt;/dev/auto_serial&lt;/code&gt;, the relay the stock Car Link app (&lt;code&gt;com.syu.carlink&lt;/code&gt;) uses, while calls remain on the module and the vehicle microphone/speakers. Tested so far only on DUDUOS with a BLINK module.&lt;/p&gt; 
&lt;p&gt;Requirements:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;An FYT unit that exposes &lt;code&gt;/dev/auto_serial&lt;/code&gt; (Car Link&#39;s external-module backend, &lt;code&gt;sys.fyt.bluetooth_type&lt;/code&gt; above zero).&lt;/li&gt; 
 &lt;li&gt;Nothing extra where the node is app-openable, as it is for the stock Car Link. Where it is not (node mode or SELinux), root access for Open Headunit, used as a fallback.&lt;/li&gt; 
 &lt;li&gt;The stock &lt;code&gt;com.syu.carlink&lt;/code&gt; package disabled, because two readers on the same terminal split protocol messages.&lt;/li&gt; 
 &lt;li&gt;The phone paired with the module; pairing and phone priority remain managed by the module.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Setup:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Disable the stock client: &lt;code&gt;adb shell pm disable-user --user 0 com.syu.carlink&lt;/code&gt; (prefix with &lt;code&gt;su -c&lt;/code&gt; if the shell refuses).&lt;/li&gt; 
 &lt;li&gt;In Open Headunit, select &lt;strong&gt;Native Mode&lt;/strong&gt; and enable &lt;strong&gt;Connect through the FYT external Bluetooth module&lt;/strong&gt;.&lt;/li&gt; 
 &lt;li&gt;Keep the phone paired with the module and connect normally.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;On a detected FYT module unit with this transport off, Native Mode refuses to start and names this setting, instead of listening on a radio the phone is not paired with. If the channel cannot be opened (Car Link still enabled or running, or the node not app-openable and root denied), the reason is shown on screen and retried with a growing delay.&lt;/p&gt; 
&lt;p&gt;Android Bluetooth driver selection, preferred-phone and wake-list controls are intentionally hidden on this route because Android cannot see or dial phones bonded to the external module. To roll back, turn this transport off and re-enable the stock client with &lt;code&gt;adb shell pm enable com.syu.carlink&lt;/code&gt; (prefix with &lt;code&gt;su -c&lt;/code&gt; if needed).&lt;/p&gt; 
&lt;h4&gt;3. Headunit Server (No-Root Option for Self-Mode on AA 17.4+)&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Starts the native Android Auto developer server directly on your phone or on the same device (Self-Mode).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Setup:&lt;/strong&gt; 
  &lt;ol&gt; 
   &lt;li&gt;Open Android Auto settings on your phone (or tablet in Self-Mode).&lt;/li&gt; 
   &lt;li&gt;Scroll down and tap &lt;strong&gt;Version&lt;/strong&gt; 10 times to unlock Developer settings.&lt;/li&gt; 
   &lt;li&gt;Tap the three-dot menu in the top right corner and choose &lt;strong&gt;Start headunit server&lt;/strong&gt;.&lt;/li&gt; 
   &lt;li&gt;In Open Headunit, tap the &lt;strong&gt;WiFi&lt;/strong&gt; button to connect (or use Self-Mode).&lt;/li&gt; 
  &lt;/ol&gt; &lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;4. Wireless Helper&lt;/h4&gt; 
&lt;ul&gt; 
 &lt;li&gt;Our companion app triggers the wireless connection automatically in the background.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Compatibility:&lt;/strong&gt; Android Auto &lt;strong&gt;v17.3 and below&lt;/strong&gt;, or &lt;strong&gt;v17.4+&lt;/strong&gt; with the root workaround in option 5.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Download:&lt;/strong&gt; &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.andrerinas.wirelesshelper&quot;&gt;Wireless Helper on Google Play Store&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Setup:&lt;/strong&gt; Set Open Headunit Wireless Mode to &lt;strong&gt;Helper Mode&lt;/strong&gt;, ensure both devices are in the same network or Wi-Fi Direct group, and start the service in the Wireless Helper app.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h4&gt;5. Root Workaround for Android Auto 17.4+&lt;/h4&gt; 
&lt;p&gt;On the device running Android Auto (normally the phone), open a &lt;strong&gt;root shell&lt;/strong&gt;, for example by running &lt;code&gt;su&lt;/code&gt; in a terminal and granting root access. Then run:&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-sh&quot;&gt;pm enable --user 0 \
com.google.android.projection.gearhead/com.google.android.apps.auto.wireless.setup.receiver.WirelessStartupReceiver
&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Re-enabling this receiver restores the previous wireless startup flow on affected Android Auto versions. Keep using the same Wireless Helper / Helper Mode setup as before; the developer headunit server is not required for this workaround. Root is needed on the device running Android Auto, not on a separate head unit.&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;--user 0&lt;/code&gt; targets the primary Android user. This is an internal Android Auto component: the workaround requires it to exist in the installed version, and future updates may change its name or behavior.&lt;/p&gt; 
&lt;h3&gt;Connect Wirelessly via Intent (Power Users)&lt;/h3&gt; 
&lt;p&gt;You can trigger a wireless connection attempt using an Android Intent. This is useful for automation tools like &lt;strong&gt;Tasker&lt;/strong&gt;, &lt;strong&gt;MacroDroid&lt;/strong&gt;, or via &lt;strong&gt;ADB&lt;/strong&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;URI Scheme:&lt;/strong&gt; &lt;code&gt;headunit://connect?ip=&amp;lt;PHONE_IP&amp;gt;&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Example ADB Command:&lt;/strong&gt;&lt;/p&gt; 
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;adb shell am start -a android.intent.action.VIEW -d &quot;headunit://connect?ip=192.168.1.25&quot;
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Known Issues&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Google Maps in Portrait Mode:&lt;/strong&gt; Touch interactions (searching, scrolling) within Google Maps may not work as expected when using Portrait Mode on some devices. &lt;strong&gt;Fix:&lt;/strong&gt; Try reducing the &lt;strong&gt;Pixel density (DPI)&lt;/strong&gt; setting to &lt;strong&gt;below 200&lt;/strong&gt; (e.g., 190) in the app settings. This often restores full functionality.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Wireless Connection Drops:&lt;/strong&gt; If the connection drops frequently, disable &lt;strong&gt;&quot;WiFi Assistant&quot;&lt;/strong&gt; or &lt;strong&gt;&quot;Switch between networks&quot;&lt;/strong&gt; in your phone&#39;s WiFi settings to prevent it from killing the connection due to &quot;no internet.&quot; Check battery saving options.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Self-mode on Android 10 (Q) and below:&lt;/strong&gt; Google has disabled the automatic wireless projection startup for Android 10 and below in Android Auto versions 16.4 and higher. While Self-mode still works on newer Android versions, it is normally impossible to trigger projection on Android 10 and below directly with recent Google app updates. &lt;strong&gt;Workaround:&lt;/strong&gt; You can still use Self-mode on these devices by starting the built-in Android Auto Headunit Server and connecting via Wi-Fi mode (loopback). See the &lt;a href=&quot;https://github.com/andreknieriem/open-headunit/wiki/Troubleshooting#self-mode-on-android-10-q-and-below&quot;&gt;Troubleshooting Guide&lt;/a&gt; for step-by-step instructions.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;WiFi-Direct needs long to connect:&lt;/strong&gt; A user finds that this is related to Google Assistant instead of Gemini for AA. If you use Gemini on newer AA versions it just runs smooth again. No idea why this happens.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Stuck on Android is starting&lt;/strong&gt; Check your video codec in the settings and set it to h264 if you have a device which does not support h265. Some devices have a broken h265 decoder and this will cause the app to stuck on &quot;Android is starting&quot; and never start the projection.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Planned&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;more customization options for the UI and the app itself&lt;/li&gt; 
 &lt;li&gt;Info/Help descriptions to the settings for better understanding&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Changelog&lt;/h2&gt; 
&lt;h3&gt;v.3.5.0-beta4&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Native AA: reconnect to a network that is still there, instead of rebuilding it every time&lt;/li&gt; 
 &lt;li&gt;Native AA: wake the phone over the Bluetooth module on a cold start, and from the WiFi button&lt;/li&gt; 
 &lt;li&gt;Native AA over hotspot: stop advertising an endpoint that moves, bring the hotspot back after a boot or ACC wake- #1014&lt;/li&gt; 
 &lt;li&gt;Native AA: recover when the platform deletes the group mid-join, bring the hotspot back after sleep, log the Bluetooth link, and stop a QR crash below Android 4.4&lt;/li&gt; 
 &lt;li&gt;Added: Option to use Open Headunit as a launcher, thanks to @amp3r1 for some improvements&lt;/li&gt; 
 &lt;li&gt;External Bluetooth module: make the WiFi button work, find the module after a boot, and keep a Bluetooth auto-start from being lost behind the settings screen&lt;/li&gt; 
 &lt;li&gt;Added: Simplified Chinese 🇨🇳, Indonesian 🇮🇩, Hindi 🇮🇳, Thai 🇹🇭, European Portuguese 🇵🇹&lt;/li&gt; 
 &lt;li&gt;Connection: one attempt at a time, hold auto-connect behind settings and the pill&#39;s X, and fix the dongle&#39;s TLS handshake- #1015&lt;/li&gt; 
 &lt;li&gt;Request low-latency Wi-Fi during wireless projection, thanks to @emotionbug&lt;/li&gt; 
 &lt;li&gt;Add on-demand &quot;Check for Updates&quot; button&lt;/li&gt; 
 &lt;li&gt;Add FYT BLINK/DUDUAUTO module transport for Native AA thanks to @dohun0310&lt;/li&gt; 
 &lt;li&gt;Added: BSSID recovery via IPv6 EUI-64&lt;/li&gt; 
 &lt;li&gt;Mic: isolate capture sessions and bound uplink flow control, thanks to @emotionbug&lt;/li&gt; 
 &lt;li&gt;Audio: stabilize playback and AAC recovery with opt-in AAudio, thanks to @emotionbug&lt;/li&gt; 
 &lt;li&gt;WPP: retain active control connections and isolate listener generations, thanks to @emotionbug&lt;/li&gt; 
 &lt;li&gt;Added: Apps drawer, thanks to @amp3r1&lt;/li&gt; 
 &lt;li&gt;Navigation: stop the road name from sticking after the road changes&lt;/li&gt; 
 &lt;li&gt;Self Mode: release the dummy VPN once the session is up, and start none for Android Auto 17.4 and later&lt;/li&gt; 
 &lt;li&gt;Wireless: hold every automatic bring-up while the unit is asleep, and replay it once when the screen comes on&lt;/li&gt; 
 &lt;li&gt;WiFi Direct: stand the station down again when the platform rejoins it mid-session&lt;/li&gt; 
 &lt;li&gt;Native AA: ride out a ZLink daemon restart at cold start, and confirm a restarted hotspot stays up&lt;/li&gt; 
 &lt;li&gt;Video: no codec on a dying surface, and a picture after a screen-off return in Texture mode&lt;/li&gt; 
 &lt;li&gt;Automation: restore the three dropped automation commands, and stop Headunit Server connects preempting each other&lt;/li&gt; 
 &lt;li&gt;Fix: crash when the USB service is missing, thanks to @muayyad-alsadi - #1057&lt;/li&gt; 
 &lt;li&gt;Added: Performance overlay with its own settings screen, choose which lines it shows&lt;/li&gt; 
 &lt;li&gt;Added: Root workaround for Android Auto 17.4+ wireless startup in the README, thanks to @mixalbl4-127&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.3.4.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;USB: connect non-Pixel phones without fighting a fast-reverting dongle&lt;/li&gt; 
 &lt;li&gt;Feat/automation command surface&lt;/li&gt; 
 &lt;li&gt;Video-Fit and ultrawide touch enhancements with dynamic scaling and rework all the options, thanks to @o-jardenass and @Sesam17&lt;/li&gt; 
 &lt;li&gt;Several enhancements for native mode, thanks to @o-jardenass&lt;/li&gt; 
 &lt;li&gt;Added darkmode for splashscreen&lt;/li&gt; 
 &lt;li&gt;Added ADB-Server to disable/close OEM apps like Zlink, Autokit etc. to reduce conflicts with OpenHU&lt;/li&gt; 
 &lt;li&gt;Added Support for BYD Steering wheel keys, thanks to @nicoruy&lt;/li&gt; 
 &lt;li&gt;Added floating Exit Button, thanks to @Sesan17&lt;/li&gt; 
 &lt;li&gt;Added Log to clipboard, thanks to @peter9811&lt;/li&gt; 
 &lt;li&gt;Native for External BT&#39;s + Connection Status pill + AAC improvements to @o-jardenass&lt;/li&gt; 
 &lt;li&gt;Moved Ui-Scale to theming&lt;/li&gt; 
 &lt;li&gt;Native AA: say when the unit&#39;s WiFi radio is off instead of retrying in silence&lt;/li&gt; 
 &lt;li&gt;Fix: Endless Loop in Permission Requests.&lt;/li&gt; 
 &lt;li&gt;Give Video its own transport thread&lt;/li&gt; 
 &lt;li&gt;Stop old Android promising what it cannot do&lt;/li&gt; 
 &lt;li&gt;Measure and size the audio sink&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.3.3.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added: Option to auto-resume media playback on quick reconnect if music was playing before disconnect&lt;/li&gt; 
 &lt;li&gt;Fixed: Errors shown in playconsole&lt;/li&gt; 
 &lt;li&gt;Big Improvements to native mode. Huge Thanks to @o-jcardenass for this!&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.3.3.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Begin for theming of the App.&lt;/li&gt; 
 &lt;li&gt;Refactor WiFi-Code from AapService into their own classes for better maintenance, thanks to @MrEAlderson&lt;/li&gt; 
 &lt;li&gt;Refactor Self-Mode and USB-Mode from AapService into their own classes for better maintenance, thanks to @MrEAlderson&lt;/li&gt; 
 &lt;li&gt;Refactor Audio and Video Code from AapService into their own classes for better maintenance, thanks to @o-jcardenass&lt;/li&gt; 
 &lt;li&gt;USB-Blacklist Filter to prevent the app from asking for non Android phones&lt;/li&gt; 
 &lt;li&gt;Added: Option to disable the clock, thanks to @MrEAlderson&lt;/li&gt; 
 &lt;li&gt;Added: French translation 🇫🇷 thanks to @phiDu-fr&lt;/li&gt; 
 &lt;li&gt;Fix/session lifecycle and video concealment&lt;/li&gt; 
 &lt;li&gt;Video: pace the transport thread instead of shedding reference frames&lt;/li&gt; 
 &lt;li&gt;UI: a destroyed activity stops listening, and a recycled row keeps its subtitle&lt;/li&gt; 
 &lt;li&gt;Fix Android 4 Problems&lt;/li&gt; 
 &lt;li&gt;Fix Orientation issues&lt;/li&gt; 
 &lt;li&gt;Several Native Mode fixes and enhancements&lt;/li&gt; 
 &lt;li&gt;Mic: fix the uplink, and let the phone keep the microphone&lt;/li&gt; 
 &lt;li&gt;Fix: Close keyboard that stays open on older Android versions to prevent layout issues&lt;/li&gt; 
 &lt;li&gt;Per-channel audio stream selection, thanks to @nicoruy&lt;/li&gt; 
 &lt;li&gt;Added Android Auto 17.4 Notice for users, who don&#39;t know why their wireless setup broke&lt;/li&gt; 
 &lt;li&gt;Clean Up Dark Mode and Theming Option confusions&lt;/li&gt; 
 &lt;li&gt;Fix: Projection dies when a Bluetooth keyboard connects or disconnects&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.3.2.6&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fix settings UI crash and dpi input on older Android devices&lt;/li&gt; 
 &lt;li&gt;Fix video artifacts&lt;/li&gt; 
 &lt;li&gt;Fixing wireless stack where failures stay broken until restart&lt;/li&gt; 
 &lt;li&gt;Bringing back old style USB List&lt;/li&gt; 
 &lt;li&gt;Fix broken theme after import: Reapply Theme selection after Settings import&lt;/li&gt; 
 &lt;li&gt;Make HUD Mode for apply for the whole app&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.3.2.5&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fix black screen after backgrounding, and the washed-out picture a dropped frame leaves&lt;/li&gt; 
 &lt;li&gt;Fix headunit server socket leak&lt;/li&gt; 
 &lt;li&gt;Car GPS: deliver the head unit&#39;s fix when the phone asks, and keep it flowing&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.3.2.4&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fix: Video and audio never catch up after a wireless link stall, thanks to @o-jcardenass&lt;/li&gt; 
 &lt;li&gt;Fix: Native AA wake poke takes down the head unit&#39;s own hands-free link, thanks to @o-jcardenass&lt;/li&gt; 
 &lt;li&gt;Stop the setup wizard from overwriting the reported manufacturer, thanks to @o-jcardenass&lt;/li&gt; 
 &lt;li&gt;Added: Let the Bluetooth side keep the media buttons, thanks to @o-jcardenass&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.3.2.3&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Adding custom log location (App folder or Download folder)&lt;/li&gt; 
 &lt;li&gt;additional fixing for the fps/freeze problems. Thanks to @o-jcardenass and @andrecuellar for helping&lt;/li&gt; 
 &lt;li&gt;Fix/hotspot unreadable config&lt;/li&gt; 
 &lt;li&gt;NativeAA: show when a P2P group that lands on channel 12 or 13&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.3.2.2&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixing location jumping, especially on lower speeds&lt;/li&gt; 
 &lt;li&gt;Fixing screen flicker again in video decoder&lt;/li&gt; 
 &lt;li&gt;Fix/video throughput telemetry and keyframe lockout, thanks to @o-jcardenass&lt;/li&gt; 
 &lt;li&gt;Fix Steering Wheel Buttons not working anymore&lt;/li&gt; 
 &lt;li&gt;added new native mode without WiFi-Direct creation, thanks to @o-jcardenass&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.3.2.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixing new welcome screen reappears, thanks to @andrecuellar&lt;/li&gt; 
 &lt;li&gt;Fixing screen flicker every 10s thanks to @o-jcardenass&lt;/li&gt; 
 &lt;li&gt;Fixing HW decoding on kitkat thanks to @o-jcardenass&lt;/li&gt; 
 &lt;li&gt;Fixing 2 Fatal errors shown in play console&lt;/li&gt; 
 &lt;li&gt;fix: move mic timestamp inside encrypted payload (byte 4), thanks to @bruno303&lt;/li&gt; 
 &lt;li&gt;making native mode work better and on more devices, thanks to @o-jcardenass&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.3.2.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Don&#39;t grab audio focus on connect in dynamic mode, thanks to @bnayahu&lt;/li&gt; 
 &lt;li&gt;Acquire transient audio focus while AA audio plays, thanks to @bnayahu&lt;/li&gt; 
 &lt;li&gt;Add GitHub Actions CI (build + unit tests), thanks to @bnayahu&lt;/li&gt; 
 &lt;li&gt;Fix picture stuck if used within DUDU&#39;s PiP, thanks to @MrEAlderson&lt;/li&gt; 
 &lt;li&gt;Fix(wifi): use public API for frequency, thanks to @DerTeufel&lt;/li&gt; 
 &lt;li&gt;Added pixel aspect ratio setting, thanks to @axel92b&lt;/li&gt; 
 &lt;li&gt;Added more audio features to gain audio focus and work with dsp headunits as setting&lt;/li&gt; 
 &lt;li&gt;Added display over other apps permission for better compatibility with some headunits, espacially with self mode&lt;/li&gt; 
 &lt;li&gt;Fix transport get stucked on multiple reconnects, thanks to @notathf&lt;/li&gt; 
 &lt;li&gt;Add car keys support for FYT headunits, thanks to @MrEAlderson&lt;/li&gt; 
 &lt;li&gt;Added Option to flip projection horizontal for Headup-Displays&lt;/li&gt; 
 &lt;li&gt;Recover automatically from post-first-frame video display stalls, thanks to @andrecuellar&lt;/li&gt; 
 &lt;li&gt;Settings and Onboarding Wizard redesign for better usability, thanks to @andrecuellar&lt;/li&gt; 
 &lt;li&gt;Fixing mulitiple WiFi-Direct and Native AA connection issues, thanks to @o-jcardenass, @andrecuellar and @notathf&lt;/li&gt; 
 &lt;li&gt;Various fixes PR, thanks to @MrEAlderson&lt;/li&gt; 
 &lt;li&gt;Selfmode on AA 17.4 now connects to the headunit dev server or opens the AA settings to start it&lt;/li&gt; 
 &lt;li&gt;Rename the app to Open Headunit because of confusion with Headunit Reloaded (HUR)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.3.1.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Reduce pressure on sensor events like night and gps and start/stop these events in onConnected, onDisconnect and onDestroy&lt;/li&gt; 
 &lt;li&gt;Merged ffmpeg PR #625 by @mmwtl. This added ffmpeg software decoder for h265, which old devives could benefit a lot. Thank you!&lt;/li&gt; 
 &lt;li&gt;Wi-Fi Direct changes. Prevent duplicate start, graceful resets, cleaned up stale groups&lt;/li&gt; 
 &lt;li&gt;Remove Automatic Play Integrity Checks, so Playstore won&#39;t check the license and link to the playstore in headunits&lt;/li&gt; 
 &lt;li&gt;Added manual bssid for native Mode. This should help for users where the bssid is hidden for the app, thanks to @rakshan-kumr&lt;/li&gt; 
 &lt;li&gt;Added immediately network scan with wifi connection, thanks to @MrEAlderson for the PR&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.3.1.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added libusb as alternative to the native usb stack for better compatibility with some devices&lt;/li&gt; 
 &lt;li&gt;Fixed Layout in Portrait Mode in nearly square devices&lt;/li&gt; 
 &lt;li&gt;Added Scale Slider for loading screen media&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.3.0.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed: App Exit on Disconnect&lt;/li&gt; 
 &lt;li&gt;Enhanced: USB Workflow. This will hopefully eliminate some random usb disconnects&lt;/li&gt; 
 &lt;li&gt;Fixed keyboard input on Android &amp;lt; 6 Devices&lt;/li&gt; 
 &lt;li&gt;Enhanced WiFi Direct-Mode&lt;/li&gt; 
 &lt;li&gt;Enhanced File Selector for some devices&lt;/li&gt; 
 &lt;li&gt;Fixed some fatal errors, showing in play console&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.3.0.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added: Custom loading screen (image/GIF/video), thanks to @andrecuellar&lt;/li&gt; 
 &lt;li&gt;Added: Settings-Reset Button, if you mess up something in the settings, you can now reset them to default&lt;/li&gt; 
 &lt;li&gt;Removed: Old deprecated ssl library written in C-Code for better maintenance, stability and smaller file sizes&lt;/li&gt; 
 &lt;li&gt;Added: Direct Logging to file without logcat, thanks to @Anton111111&lt;/li&gt; 
 &lt;li&gt;try to fix connection lost on carrier lost again&lt;/li&gt; 
 &lt;li&gt;keep usb disconnection for 8s alive, for maybe restarts of usb dongles&lt;/li&gt; 
 &lt;li&gt;Implement car headlight signal mode (ILL+) for night theme management, thanks to @minhtuanact&lt;/li&gt; 
 &lt;li&gt;Added settings export and import functionality with backup options, thanks to @JanRi3D&lt;/li&gt; 
 &lt;li&gt;Added whitelist to usb connection for not interrupting with iPhones and other usb devices&lt;/li&gt; 
 &lt;li&gt;Added QR Code for easy connection with wireless helper&lt;/li&gt; 
 &lt;li&gt;Fixed: BT auto-connect dragging phone into wireless flow during USB session, thanks to @andrecuellar&lt;/li&gt; 
 &lt;li&gt;Persist Auto-Optimize wizard settings synchronously, thanks to @andrecuellar&lt;/li&gt; 
 &lt;li&gt;Added ability to swipe with two fingers from the right side to switch fullscreen mode and Normal (all bars) mode, thanks to @Anton111111&lt;/li&gt; 
 &lt;li&gt;Improved: usb button auto connect, thanks to @bezprobeloff&lt;/li&gt; 
 &lt;li&gt;Catched an fatal error listed in the play console&lt;/li&gt; 
 &lt;li&gt;Fixed: Audio Stutter on some devices since 2.1.1&lt;/li&gt; 
 &lt;li&gt;Fixed: USB device list duplicates and Android Auto projection launch on Android 10+, thanks to @jeancarloscc&lt;/li&gt; 
 &lt;li&gt;Enhanced: Google Nearby. It was buggy with 2 FPS video&lt;/li&gt; 
 &lt;li&gt;Fixed: Navigation Button mapping now working&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.2.3.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed a connection lost on for example borders&lt;/li&gt; 
 &lt;li&gt;Binding socket to wifi network if available to prevent connection drops on carrier lost&lt;/li&gt; 
 &lt;li&gt;Added Static Audio Focus Toggle to prevent audio focus loss on some devices&lt;/li&gt; 
 &lt;li&gt;Fixing samsung routines and modes&lt;/li&gt; 
 &lt;li&gt;Fixing wrong orientation on start if holding the phone wrong. Now uses the orientation from settings&lt;/li&gt; 
 &lt;li&gt;Try to fix usb errors with AAwireless Dongles&lt;/li&gt; 
 &lt;li&gt;Added Audio Mixer to mix different audio tracks, thanks to @jeffdapaz for the idea&lt;/li&gt; 
 &lt;li&gt;Added Autostart on BT for multiple devices&lt;/li&gt; 
 &lt;li&gt;Fixed Microphone input source was wrong mapped&lt;/li&gt; 
 &lt;li&gt;Added Vietnamese translation 🇻🇳 thanks to @minhtuanact&lt;/li&gt; 
 &lt;li&gt;Merged PR #549 - implement back key routing and add keymap for back key, thanks to @JanRi3D&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.2.3.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added some new buttons for keymap&lt;/li&gt; 
 &lt;li&gt;Fixed 3 Fatal errors&lt;/li&gt; 
 &lt;li&gt;Fixed video decoder settings for allwinner devices&lt;/li&gt; 
 &lt;li&gt;Added new navigation intents&lt;/li&gt; 
 &lt;li&gt;Included PR #456&lt;/li&gt; 
 &lt;li&gt;Added new &quot;Autostart on WiFi&quot; Setting #324&lt;/li&gt; 
 &lt;li&gt;Fixed empty bssid on native AA. Should now work on more devices&lt;/li&gt; 
 &lt;li&gt;Fixed a new fatal with media sessions&lt;/li&gt; 
 &lt;li&gt;Readded fullscreen overlays system icons #351&lt;/li&gt; 
 &lt;li&gt;Remap Enter (66) to Dpad Center (23) for Rotary Knob #459&lt;/li&gt; 
 &lt;li&gt;Debounce multiple key events if key event is the same in 100ms #465&lt;/li&gt; 
 &lt;li&gt;Moved Mic settings to own fragment and added 3 new options for the new mic enhancement from version 2.2.2, which defaults to off for better compatibility&lt;/li&gt; 
 &lt;li&gt;Merged PR #481 - Apply MediaTek 60fps and audio optimizations, thanks to @mrkontrast-coder&lt;/li&gt; 
 &lt;li&gt;Some rewrite of the AudioTrackWrapper, to enhance stability and minimize stutters&lt;/li&gt; 
 &lt;li&gt;Merged PR #490 - Add UI scale settings, thanks to @Anton11111&lt;/li&gt; 
 &lt;li&gt;Merged PR #502 - Navigation Broadcast Updates. Thanks to @Bastel2020&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.2.2.2&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed: Exit on disconnect now stops the carmode too&lt;/li&gt; 
 &lt;li&gt;Fixed: Exit intent not closing the app&lt;/li&gt; 
 &lt;li&gt;Fixed: Orientation not working great on app switch, if you have &quot;auto or sensor&quot; enabled&lt;/li&gt; 
 &lt;li&gt;Again: Steering Wheel and Keymapping got some changes, maybe this will work on more devices&lt;/li&gt; 
 &lt;li&gt;Extend mic debugging and add NoiseSuppressor, AutomaticGainControl and AcousticEchoCanceler for better voice quality&lt;/li&gt; 
 &lt;li&gt;Fixed an issue where the Android USB system prompt wouldn&#39;t appear for phones. The prompt is now enabled by default and can be separately disabled for USB thumb drives. It calls &quot;Listen for USB Devices&quot; setting and it decouples the system USB prompt from the Auto-Start behavior. This will bring back the old functionality for all and can be disabled for those who are annoyed of the popup for non Android Auto devices&lt;/li&gt; 
 &lt;li&gt;Fixed: Rescale and UpdateUI if the useable area differs from the one negiotated. This happens on devices which lie about their navbars.&lt;/li&gt; 
 &lt;li&gt;Fixed: Fatal Crash on devices below lollipop on disconnection&lt;/li&gt; 
 &lt;li&gt;Fixed: Auto-Night mode over 3 hours of in the UK and other countries, thanks to @BinarySimple17&lt;/li&gt; 
 &lt;li&gt;Add separate audio streams setting and update related functionality thanks to @Anton111111&lt;/li&gt; 
 &lt;li&gt;Enhanced: When audio sink is off, the app no longer tries to get media focus at all&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.2.2.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Fixed a fatal error in UBS conncetions since 2.2.0. This is important so releasing this version while not fixing all planned issues&lt;/strong&gt;&lt;/li&gt; 
 &lt;li&gt;Google Nearby Connection is now auto connecting if auto connect is enabled&lt;/li&gt; 
 &lt;li&gt;UI: Added Error Message for Android 10 and below for selfmode&lt;/li&gt; 
 &lt;li&gt;New Approach for scaling and touch to prevent offset&lt;/li&gt; 
 &lt;li&gt;Fixing App appears multiple times in App-Drawer&lt;/li&gt; 
 &lt;li&gt;Fixing Routines and intents not working&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.2.2.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added: Native AA. 🎉 Warning! This will only work on a limited amount of headunits! Most Android devices do not support connecting 2 Android devices via Bluetooth which is essential for this to work.&lt;/li&gt; 
 &lt;li&gt;Added: Google Nearby Support as connection method. Needs Wireless Helper 1.6.0 or later&lt;/li&gt; 
 &lt;li&gt;Added: Pip-Support&lt;/li&gt; 
 &lt;li&gt;Added: 4K in select&lt;/li&gt; 
 &lt;li&gt;Try to fix connection problems on WiFi&lt;/li&gt; 
 &lt;li&gt;Added: Intent and routine for starting the app directly to self mode&lt;/li&gt; 
 &lt;li&gt;Added: Force Scale Option for older devices on surface view&lt;/li&gt; 
 &lt;li&gt;Added: New Immersive Fullscreen with avoided notch area. This should fix problems for eg. Pixel Phones&lt;/li&gt; 
 &lt;li&gt;Enhanced: Video Decoder Error Handling&lt;/li&gt; 
 &lt;li&gt;Added: 2 new WiFi-Options for a WiFi-Direct. Thanks to @andrecuellar&lt;/li&gt; 
 &lt;li&gt;Added Japanese language 🇯🇵 thanks to @mattyann87&lt;/li&gt; 
 &lt;li&gt;Enhanced: Media Session Announcement. Thanks to @irwanrhmn&lt;/li&gt; 
 &lt;li&gt;New App-Icon without text for better visibility&lt;/li&gt; 
 &lt;li&gt;Fixed: USB modal appearing for non-Android Auto devices thanks to @andrecuellar&lt;/li&gt; 
 &lt;li&gt;Added: Create configurable audio queue and audio buffer in settings thanks to @irwanrhmn&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.2.1.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed: Layout crash on Android 4.2&lt;/li&gt; 
 &lt;li&gt;Added: Enable Hotspot option. Note: This will not work on every device. Especially after Android 13!&lt;/li&gt; 
 &lt;li&gt;Added: Fake VPN Handler for new Android Auto in offline mode. It is no longer possible to send a network to AA, so we need this hack, if your device is offline&lt;/li&gt; 
 &lt;li&gt;Enhanced: Audio-Focus is now more aggressive to hopefully fix the audio is not coming from my tablet/headunit errors&lt;/li&gt; 
 &lt;li&gt;Added: Auto-Boot Functionality. Thanks to @andrecuellar&lt;/li&gt; 
 &lt;li&gt;Attention: Needed to split Github and Playstore Release. Google does not allow using Fake VPN for offline selfmode. This is now not included in the playstore release!&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.2.1.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed: Exit Intent not working. Thanks to benyjr&lt;/li&gt; 
 &lt;li&gt;Added: Rotary Support&lt;/li&gt; 
 &lt;li&gt;Fixed: Crash in Android &amp;lt; 5&lt;/li&gt; 
 &lt;li&gt;Fixed: Double Button fire and enter/knob click as dpad center mapping&lt;/li&gt; 
 &lt;li&gt;Enhanced: Android Auto start for selfmode now tries all methods always and catches errors&lt;/li&gt; 
 &lt;li&gt;Fixed: Auto start, connection lost overlay, toasts and API17 Bluetooth crash. thanks to @andrecuellar&lt;/li&gt; 
 &lt;li&gt;Added: Exit App on disconnect feature/setting thanks to @Tilak-03 and @andrecuellar&lt;/li&gt; 
 &lt;li&gt;Enhanced: Wi-Fi Setting redirect is gone. Now only a toast message&lt;/li&gt; 
 &lt;li&gt;Fixed: styling errors&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.2.0.2&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed: 60FPS never applied&lt;/li&gt; 
 &lt;li&gt;Fixed: SSL Handshake fix for truncated messages&lt;/li&gt; 
 &lt;li&gt;Added: dark mode and xtreme dark mode setting for the app itself thanks to @andrecuellar!&lt;/li&gt; 
 &lt;li&gt;Removed: App category=&quot;maps&quot; so nav buttons recognize the app again&lt;/li&gt; 
 &lt;li&gt;Fixed: Multiple Button Events and double/tripple skips&lt;/li&gt; 
 &lt;li&gt;Fixed: USB Permission Request thanks to @Bastel2020&lt;/li&gt; 
 &lt;li&gt;Added: Setting for Disable stretch to fit. This will fix wrong rendering on some devices @thanks to tsabaia&lt;/li&gt; 
 &lt;li&gt;Fixed: Touch screen accuracy when not in full screen mode for older devices&lt;/li&gt; 
 &lt;li&gt;Fixed: Big Icon-Button on main screen when the dpi is small and the screen is wide&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.2.0.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed: Multiple volume sliders appearing on modern devices (Pixel 9 fix)&lt;/li&gt; 
 &lt;li&gt;Added: Support for Media Button emulation (SWC improvement for MacroDroid etc.)&lt;/li&gt; 
 &lt;li&gt;Added: App shortcut and deep link for full app exit (headunit://exit)&lt;/li&gt; 
 &lt;li&gt;Added: Improved Wi-Fi Direct reliability with recursive discovery and ping handoff&lt;/li&gt; 
 &lt;li&gt;Added: Romanian translation 🇷🇴, thanks to @LeeWiu&lt;/li&gt; 
 &lt;li&gt;Merged PR #189: Adding navigation message handling, thanks to @Bastel2020&lt;/li&gt; 
 &lt;li&gt;Merged PR #215: Fix USB reconnect race and stale dongle data after AA exit, thanks to @andrecuellar&lt;/li&gt; 
 &lt;li&gt;Merged PR #205: Fix wireless dongle disconnect on network changes, thanks to @andrecuellar&lt;/li&gt; 
 &lt;li&gt;Merged PR #216: Add Bluetooth SCO microphone support, thanks to tgigli&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.2.0.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added Wi-Fi Direct (P2P): Support. Connect your phone to the headunit without a shared network or hotspot. The headunit now automatically becomes visible as a P2P peer.&lt;/li&gt; 
 &lt;li&gt;Refactored Connection Core: Complete rewrite of the internal connection handling using the new &lt;strong&gt;CommManager&lt;/strong&gt;. Improved stability, faster handshakes, and better coroutine integration.&lt;/li&gt; 
 &lt;li&gt;Enhanced Fullscreen Logic: Choose between &quot;Immersive&quot; (hide all), &quot;Status Only&quot; (keep navigation bars), or &quot;None&quot;. Improved compatibility for devices where buttons were previously obscured.&lt;/li&gt; 
 &lt;li&gt;Added Auto-Optimization Wizard: Automatically recommends the best Resolution, DPI, and Codec for your specific hardware.&lt;/li&gt; 
 &lt;li&gt;Added Early MediaSession Initialization: Fixes audio routing issues where the phone would sometimes play sound through its own speakers instead of the headunit.&lt;/li&gt; 
 &lt;li&gt;Added New Logging System: Integrated log level control and file capture for easier debugging.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt; Fixing Android Auto 16.4 intents for selfmode. In Wireless Helper too. Please update to 1.2.0&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.15.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;New Feature: Added Auto-Optimization Wizard to automatically find the best Resolution, DPI, and Codec settings for your hardware.&lt;/li&gt; 
 &lt;li&gt;Bugfix: Fixed Self Mode failing to start in offline/hotspot scenarios (Network ID 0 fix).&lt;/li&gt; 
 &lt;li&gt;Bugfix: Improved Audio Routing. The phone is now more likely to route audio to the headunit immediately upon connection by using an early-initialized MediaSession with remote playback metadata.&lt;/li&gt; 
 &lt;li&gt;Bugfix: Fixed GPS Speed calculation. Speeds were previously doubled due to an incorrect unit conversion (knots instead of mm/s).&lt;/li&gt; 
 &lt;li&gt;UI: Improved Settings readability on small screens by allowing multi-line descriptions.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.15.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added arabic language thanks to A5H0&lt;/li&gt; 
 &lt;li&gt;Added new intent for setting day/night mode for maps&lt;/li&gt; 
 &lt;li&gt;Added new window flags for older devices to finally fix fullscreen issues&lt;/li&gt; 
 &lt;li&gt;Added new intents to make the headunit recognize the app as navigation app&lt;/li&gt; 
 &lt;li&gt;Added LegacyOptimizer which will handle things directly and faster for single core cpus. Should improve the performance on Android 4.1 - 4.4 Devices&lt;/li&gt; 
 &lt;li&gt;Fixed BT Permission Bug&lt;/li&gt; 
 &lt;li&gt;Changed the Twilight-Calculator for better switch to day/night on auto mode to prevent to bright display&lt;/li&gt; 
 &lt;li&gt;Added more mediasession logic to gain audio focus and audio routing&lt;/li&gt; 
 &lt;li&gt;Merged Retry Button on connect screen, thanks to @andrecuellar&lt;/li&gt; 
 &lt;li&gt;Merged auto connect usb feature, thanks to @andrecuellar&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.14.3&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Automation:&lt;/strong&gt; Added App Shortcuts for Samsung Modes &amp;amp; Routines support.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Navigation:&lt;/strong&gt; Officially registered as a navigation provider (compatible with NAV buttons).&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Stability:&lt;/strong&gt; Fixed rare app freezes by improving internal data handling and memory hygiene.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Compatibility:&lt;/strong&gt; Improved hardware support for Amazon Fire Tablets and GPS-less devices.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.14.2&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Bugfix: Notification and Exit Button do not close the app&lt;/li&gt; 
 &lt;li&gt;Improvement: Removed old legacy Invisible Bluetooth Setting to prevent Bluetooth from start on the whole time&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.14.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Improvement: Integrated USB Auto-Connect into &quot;Auto-Connect Last Session&quot;. App now behaves like a native headunit and connects automatically on startup or USB plug-in.&lt;/li&gt; 
 &lt;li&gt;New Feature: Added USB Soft-Reset logic. Automatic recovery from USB &quot;stalls&quot; without needing to replug the cable.&lt;/li&gt; 
 &lt;li&gt;Major Improvement: Audio focus and routing overhaul. Added &lt;code&gt;MediaSession&lt;/code&gt; support and immediate focus response to phone. Fixes issues where background apps on the tablet would block Android Auto audio.&lt;/li&gt; 
 &lt;li&gt;Improvement: Robust Task Switching. Leaving the app via Home button or clicking the Launcher icon no longer breaks the connection. Music continues in background, and clicking the icon/notification correctly returns to the projection.&lt;/li&gt; 
 &lt;li&gt;New Feature: Enhanced Key Debugger (&quot;Key-Sniffer&quot;). Prominent display of all key events, including special characters (ö, ü, ß) and proprietary steering wheel intents (MTC, FYT).&lt;/li&gt; 
 &lt;li&gt;New Feature: Official Navigation App Registration. OpenHU is now recognized as a navigation provider (&lt;code&gt;geo:&lt;/code&gt;, &lt;code&gt;google.navigation:&lt;/code&gt;, &lt;code&gt;android.intent.action.NAVIGATE&lt;/code&gt;). Compatible with hardware &quot;NAV&quot; buttons.&lt;/li&gt; 
 &lt;li&gt;Bugfix: Removed redundant &quot;Already connected&quot; and &quot;Reconnection required&quot; alerts for a smoother user experience.&lt;/li&gt; 
 &lt;li&gt;Localization: All new strings translated into 10 languages.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.14.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added Separate volume setting #91&lt;/li&gt; 
 &lt;li&gt;Added Auto-Start on Bluetooth Option&lt;/li&gt; 
 &lt;li&gt;Merged PR #134 - Fixing Connection on Mediathek Headunits&lt;/li&gt; 
 &lt;li&gt;Merged PR #131 - Fixes SystemUI on &amp;lt; Android 6 Devices&lt;/li&gt; 
 &lt;li&gt;Merged PR #127 - Fixing Audio Truncation&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.13.3&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed Screen Issues on Android 4 with header and navigations #114&lt;/li&gt; 
 &lt;li&gt;Fixed Night-Mode Bug #116&lt;/li&gt; 
 &lt;li&gt;Merged several PR for better Language Handling with a new language selector. Thanks to @andrecuellar&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.13.2&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed margins now working for devices prior Android 5 Lollipop&lt;/li&gt; 
 &lt;li&gt;Fixing warnings&lt;/li&gt; 
 &lt;li&gt;Fixing broken colors on mixed daynight values&lt;/li&gt; 
 &lt;li&gt;Fixed a bug where a message is bigger than thought after about 20 minutes and connections closes&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.13.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed Custom Insets Dialog with a Scrollview&lt;/li&gt; 
 &lt;li&gt;Fixed 4 app crashes listed in play console&lt;/li&gt; 
 &lt;li&gt;Fixed 2 warnings in play console for edge-to-edge display&lt;/li&gt; 
 &lt;li&gt;Fixed a race condition in ssl read/write&lt;/li&gt; 
 &lt;li&gt;Preventing disconnect if just one package was broken/corrupt in ssl transfer&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.13.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Improvement: USB stability overhaul (implemented 16KB internal buffer)&lt;/li&gt; 
 &lt;li&gt;New Feature: Custom Insets (Margins) setting with live preview&lt;/li&gt; 
 &lt;li&gt;Fixed: Video decoder blackscreen on some AI-Boxes (H.264 NAL padding)&lt;/li&gt; 
 &lt;li&gt;Fixed: UI focus issues in Settings causing system bars to reappear&lt;/li&gt; 
 &lt;li&gt;Fixed: Native SIGABRT crashes during reconnection&lt;/li&gt; 
 &lt;li&gt;Cleaned up Debug settings&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.12.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Major Improvement: Wireless Connectivity overhaul (Socket Reuse, better Handshake)&lt;/li&gt; 
 &lt;li&gt;New Feature: Wireless Mode Switch (Manual, Auto-Scan, Wireless Helper Support)&lt;/li&gt; 
 &lt;li&gt;Added: Support for Wireless Helper companion app&lt;/li&gt; 
 &lt;li&gt;Fixed: Android 15 (16KB page size) compatibility for native libraries&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.11.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Improvement: 1440p and h265 are now checked both. Some old devices have more than 1080p but no h265 support and android auto crashes with Error 11&lt;/li&gt; 
 &lt;li&gt;Fixed bug in Kitkat Devices on search for wireless devices&lt;/li&gt; 
 &lt;li&gt;Merged PR #94 - Fixed blurry icon. Thanks to @nicoruy&lt;/li&gt; 
 &lt;li&gt;Merged PR #95 - Make Settings own View to apply directly. Thanks to @nicoruy&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.11.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;New Feature: Advanced Night Mode (Light Sensor, Screen Brightness, separate thresholds, manual time)&lt;/li&gt; 
 &lt;li&gt;Improvement: Audio Stuttering fixed (Optimized ACK handling)&lt;/li&gt; 
 &lt;li&gt;Improvement: USB Reconnection stability (Added &quot;Reconnection Required&quot; dialog for stuck sessions)&lt;/li&gt; 
 &lt;li&gt;Improvement: WiFi Discovery (Added Multi-Interface Scan and NSD/mDNS support)&lt;/li&gt; 
 &lt;li&gt;New Feature: Enhanced Service Notification (Reduced noise, added Exit button)&lt;/li&gt; 
 &lt;li&gt;Added: Spanish translation 🇪🇸 thanks to @andrecuellar&lt;/li&gt; 
 &lt;li&gt;Added: Ukraine translation 🇺🇦 thanks to welshi32&lt;/li&gt; 
 &lt;li&gt;Bugfix: Non-Fullscreen View was stretched, touch could be off&lt;/li&gt; 
 &lt;li&gt;Bugfix: Wifi with Headunit Server now works with hotspot&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.10.4&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added: Dutch translation 🇳🇱 thanks to safariking&lt;/li&gt; 
 &lt;li&gt;Several black screen and connection error enhancements&lt;/li&gt; 
 &lt;li&gt;Bugfix: Crash in Background if not started as foreground service&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.10.3&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Bugfix: Force Software Decoder wasn&#39;t getting always the sw decoder&lt;/li&gt; 
 &lt;li&gt;Added: Russian translation 🇷🇺 thanks to @prostozema&lt;/li&gt; 
 &lt;li&gt;Enhancement: Fixing small issues in the video-decoder which should help lower spec devices to render properly (but act a little bit slower perhaps)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.10.2&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Bugfix - Button Mapping ignored #71&lt;/li&gt; 
 &lt;li&gt;New Feature: Screen-Orientation Feature to lock to a certain orientation (Landscape/Portrait) #69 thanks to @JanRi3D&lt;/li&gt; 
 &lt;li&gt;Enhancement: SSL will now attempt multiple times and not break instantly thanks to @MicaelJarniac&lt;/li&gt; 
 &lt;li&gt;Added: Chinese(Traditional) translation 🇹🇼 thanks to @GazCore&lt;/li&gt; 
 &lt;li&gt;Added: Czech translation 🇨🇿 thanks to @teodortomas #75&lt;/li&gt; 
 &lt;li&gt;Fixed brazilian portuguese folder name&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.10.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Bugfix: Added missing 3 Byte startcode which stops some devices to start the projection&lt;/li&gt; 
 &lt;li&gt;Added PR #68 - Fix Wifi Direct detection thanks to @rakshan-kumr&lt;/li&gt; 
 &lt;li&gt;Added PR #67 - Brazilian Portuguese translation 🇧🇷 thanks to @MicaelJarniac&lt;/li&gt; 
 &lt;li&gt;Added PR #66 - Add conscrypt to fix error 7 on lower Android versions 🚀, thanks to @JanRi3D&lt;/li&gt; 
 &lt;li&gt;The old jni files and c code can maybe be removed when PR #66 is performing great. So we can get rid of that again 😃&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.10.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;New Feature: Portrait Mode Support (Dashboard &amp;amp; Projection) with smart resolution scaling Known Bug is, that map is unresponsive to touch. That is in all HU apps&lt;/li&gt; 
 &lt;li&gt;New Feature: Redesigned Keymap Screen (easier configuration)&lt;/li&gt; 
 &lt;li&gt;New Feature: Right Hand side driving setting (#63)&lt;/li&gt; 
 &lt;li&gt;New Feature: Auto-Connect last session (Thanks to @JanRi3D) (#21)&lt;/li&gt; 
 &lt;li&gt;New Feature: Auto-Selfmode if enabled in settings&lt;/li&gt; 
 &lt;li&gt;New Feature: Allow sideloaded apps (#57)&lt;/li&gt; 
 &lt;li&gt;Localization: Added German Translation 🇩🇪 Other translations are highly appreciated&lt;/li&gt; 
 &lt;li&gt;Improvement: TextureView is now the default renderer (better compatibility for most devices)&lt;/li&gt; 
 &lt;li&gt;Improvement: Fixed Dashboard layout rotation&lt;/li&gt; 
 &lt;li&gt;Rewrite: Completly Rewrite the Video-Decoder as it was undebuggable. Removed the async mode and more&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.9.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;New Feature: GLES20 Video Renderer (Fixes black screen/artifacts/scaling on older Head Units)&lt;/li&gt; 
 &lt;li&gt;New Feature: In-App Log Export (Save to file/Share) for easier debugging&lt;/li&gt; 
 &lt;li&gt;Improvement: Audio Sink Logic fixed (System Audio always advertised) -&amp;gt; Fixes black screen when Audio Sink is disabled&lt;/li&gt; 
 &lt;li&gt;Improvement: Video Decoder optimized for legacy devices (Buffer size adjustments, Overflow handling)&lt;/li&gt; 
 &lt;li&gt;Hopefully Fix: Audio Stuttering resolved (Buffer/Queue logic reverted to stable state)&lt;/li&gt; 
 &lt;li&gt;Fix: Video Fragmentation on some devices (Support for split frames/Offset 2 headers)&lt;/li&gt; 
 &lt;li&gt;Fix: Crash on Android 5.1 (NoSuchMethodError)&lt;/li&gt; 
 &lt;li&gt;Fix: Audio-Sink disable not working&lt;/li&gt; 
 &lt;li&gt;UI: Consistent Dialog Theme (Teal/Rounded) and improved list buttons&lt;/li&gt; 
 &lt;li&gt;Compatibility: Verified support for Android 4.1+ (minSdk 16)&lt;/li&gt; 
 &lt;li&gt;Compatibility: Bring back native SSL Support (JNI) for better performance on older devices (Toggle in Debug Settings)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.8.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed Fullscreen/Non-Fullscreen layout issues (black bars, overlapping)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.8.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added Audio Sink Setting (Enable/Disable routing audio to HU)&lt;/li&gt; 
 &lt;li&gt;Added AAC Audio Support Setting (Experimental)&lt;/li&gt; 
 &lt;li&gt;Fixed audio stuttering issues by reverting buffering logic to v.1.4.1 defaults&lt;/li&gt; 
 &lt;li&gt;Restored robust video decoder logic (SPS Parsing) to fix black screen/crashes on Mediatek devices&lt;/li&gt; 
 &lt;li&gt;Fixed visual glitches on navigation bar and fullscreen transitions&lt;/li&gt; 
 &lt;li&gt;Improved list item UI with better click feedback&lt;/li&gt; 
 &lt;li&gt;Fixed SSL decryption crash (ArrayIndexOutOfBoundsException)&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.7.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added WiFi Network Discovery (Port Scan) with Auto-Connect&lt;/li&gt; 
 &lt;li&gt;Added Intent Support (&lt;code&gt;headunit://connect?ip=...&lt;/code&gt;) for automation&lt;/li&gt; 
 &lt;li&gt;Added Wifi-Launcher Support with new setting&lt;/li&gt; 
 &lt;li&gt;Updated README&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.6.3&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added mandatory Safety Disclaimer on first start&lt;/li&gt; 
 &lt;li&gt;Improved audio stability and fixed stuttering issues&lt;/li&gt; 
 &lt;li&gt;Enhanced full-screen stability with transparent system bars&lt;/li&gt; 
 &lt;li&gt;Fixed WiFi disconnection synchronization issues (ByeBye request)&lt;/li&gt; 
 &lt;li&gt;General UI and stability improvements&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.6.2&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed critical screen flickering during startup and fullscreen transitions&lt;/li&gt; 
 &lt;li&gt;Resolved video decoder freezing issues on tablets and older devices&lt;/li&gt; 
 &lt;li&gt;Improved system bar handling for a more stable projection experience&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.6.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added &quot;About&quot; page with version info, changelog, and license&lt;/li&gt; 
 &lt;li&gt;Added &quot;Force Legacy Decoder&quot; (synchronous mode) setting to fix issues on some devices (e.g., Mediatek)&lt;/li&gt; 
 &lt;li&gt;Improved surface handling to prevent crashes on decoder reconfiguration&lt;/li&gt; 
 &lt;li&gt;Fixed &quot;Unsaved changes&quot; dialog in settings&lt;/li&gt; 
 &lt;li&gt;Updated UI with consistent back arrows and theming&lt;/li&gt; 
 &lt;li&gt;Fixed black screen issues on some devices by optimizing decoder initialization&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.6.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixed the selfmode not working outside the wifi bug&lt;/li&gt; 
 &lt;li&gt;Redesign of App, Look and feel with modern Material 3&lt;/li&gt; 
 &lt;li&gt;Better Settings&lt;/li&gt; 
 &lt;li&gt;Huge Android Auto Protocol Updates&lt;/li&gt; 
 &lt;li&gt;Clicking Exit in Android Auto now closes the projection&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.5.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Complete Rewrite of the Video decoder for better Video-Performance&lt;/li&gt; 
 &lt;li&gt;Updated Android-Auto Protocol with the latest available codecs (h265 for example)&lt;/li&gt; 
 &lt;li&gt;Added 1440p Video-Option(Note this only works with h265!)&lt;/li&gt; 
 &lt;li&gt;Added FPS-Setting&lt;/li&gt; 
 &lt;li&gt;Added Codec-Setting&lt;/li&gt; 
 &lt;li&gt;Added Force to Use Software decoder Setting&lt;/li&gt; 
 &lt;li&gt;Merged the Android Native SSL Library and get rid of the old jni files&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.4.1&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Fixing Touch-Events for devices with higher resolutions&lt;/li&gt; 
 &lt;li&gt;Removing file-log and logging is only enabled if debug is on&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.4.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added Selfmode&lt;/li&gt; 
 &lt;li&gt;Better Close App&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.3.0&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Changed the Settings Layout Look and feel&lt;/li&gt; 
 &lt;li&gt;Added DPI Option&lt;/li&gt; 
 &lt;li&gt;Added full screen option&lt;/li&gt; 
 &lt;li&gt;Fixing Keymap Changes and button recognition&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.2.1 - Resolution enhancement&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Just a minor enhancement for the resolution. Not yet perfect in my opinion but better than before&lt;/li&gt; 
 &lt;li&gt;The is the last release for this year. Happy Holidays to all and a happy new year&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v.1.2.0 - Bugfix Release&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Added Exit button to app&lt;/li&gt; 
 &lt;li&gt;Added resolution settings back for better compatibility with different screen sizes&lt;/li&gt; 
 &lt;li&gt;Added Option for which texture to use. Some devices perform better on SurfaceView, some on TextureView&lt;/li&gt; 
 &lt;li&gt;Fixed keymapping&lt;/li&gt; 
 &lt;li&gt;Fixed a lot of color issues&lt;/li&gt; 
 &lt;li&gt;Fixed a bug where the app crashed on startup on some devices&lt;/li&gt; 
 &lt;li&gt;Fixed Layout on wider screens&lt;/li&gt; 
 &lt;li&gt;Some rewrite, and small bugfixes&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v1.1.0 - New Design&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Changed the basic design to a modern look and bigger buttons&lt;/li&gt; 
 &lt;li&gt;Hopefully fixed audio-stutters with audio thread and some logs&lt;/li&gt; 
 &lt;li&gt;Removed some deprecations&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;v1.0.0 - Initial Revived Release&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;Updated dependencies to latest versions.&lt;/li&gt; 
 &lt;li&gt;Improved compatibility with newer Android versions.&lt;/li&gt; 
 &lt;li&gt;Added Multitouch-Support&lt;/li&gt; 
 &lt;li&gt;Some sort of wireless support with Headunit-Server on Phone&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Contributing&lt;/h2&gt; 
&lt;p&gt;Creating release apk needs a keystore file. You can create your own keystore file using the following command in root folder: &lt;code&gt;keytool -genkey -v -keystore headunit-release-key.jks -alias headunit-revived -keyalg RSA -keysize 2048 -validity 10000&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;After that you need to set the env variables depending on your OS: MAC: open ~/.zshrc or ~/.bashrc&lt;/p&gt; 
&lt;p&gt;&lt;code&gt;sudo nano ~/.zshrc or sudo nano ~/.bashrc&lt;/code&gt; &lt;code&gt;export HEADUNIT_KEYSTORE_PASSWORD=&quot;YOUR_KEYSTORE_PASSWORD&quot; export HEADUNIT_KEY_PASSWORD=&quot;YOUR_KEY_PASSWORD&quot;&lt;/code&gt;&lt;/p&gt; 
&lt;h2&gt;Original Headunit&lt;/h2&gt; 
&lt;p&gt;Headunit for Android Auto (tm)&lt;/p&gt; 
&lt;p&gt;A new car or a $600+ headunit is NOT required to enjoy the integration and distraction reduced environment of Android Auto.&lt;/p&gt; 
&lt;p&gt;This headunit app can turn a Android 4.1+ tablet supporting USB Host mode into a basic Android Auto compatible headunit.&lt;/p&gt; 
&lt;p&gt;Android, Google Play, Google Maps, Google Play Music and Android Auto are trademarks of Google Inc.&lt;/p&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/c66190ea672f36dce4f1a2bd8f0c7e7464f00064e5a0c8532b9dcfd7577427c8/andreknieriem/open-headunit" medium="image" />
      
    </item>
    
    <item>
      <title>ankidroid/Anki-Android</title>
      <link>https://github.com/ankidroid/Anki-Android</link>
      <description>&lt;p&gt;AnkiDroid: Anki flashcards on Android. Your secret trick to achieve superhuman information retention.&lt;/p&gt;&lt;hr&gt;&lt;p align=&quot;center&quot;&gt; &lt;img alt=&quot;&quot; src=&quot;https://raw.githubusercontent.com/ankidroid/Anki-Android/main/docs/graphics/logos/banner_readme.png&quot; /&gt; &lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/ankidroid/Anki-Android/releases&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/v/release/ankidroid/Anki-Android&quot; alt=&quot;release&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/ankidroid/Anki-Android/actions&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/checks-status/ankidroid/Anki-Android/main?label=build&quot; alt=&quot;build&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://opencollective.com/ankidroid&quot;&gt;&lt;img src=&quot;https://img.shields.io/opencollective/all/ankidroid&quot; alt=&quot;Open Collective backers and sponsors&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/ankidroid/Anki-Android/issues&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/commit-activity/m/ankidroid/Anki-Android&quot; alt=&quot;commit-activity&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/ankidroid/Anki-Android/network/members&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/forks/ankidroid/Anki-Android&quot; alt=&quot;forks&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/ankidroid/Anki-Android/stargazers&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/stars/ankidroid/Anki-Android&quot; alt=&quot;stars&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://crowdin.com/project/ankidroid&quot;&gt;&lt;img src=&quot;https://badges.crowdin.net/ankidroid/localized.svg?sanitize=true&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/ankidroid/Anki-Android/graphs/contributors&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/contributors/ankidroid/Anki-Android&quot; alt=&quot;contributors&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://discord.gg/qjzcRTx&quot;&gt;&lt;img src=&quot;https://img.shields.io/discord/368267295601983490&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://github.com/ankidroid/Anki-Android/raw/main/COPYING&quot;&gt;&lt;img src=&quot;https://img.shields.io/github/license/ankidroid/Anki-Android&quot; alt=&quot;license&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h1&gt;AnkiDroid&lt;/h1&gt; 
&lt;p&gt;A semi-official port of the open source &lt;a href=&quot;https://apps.ankiweb.net/index.html&quot;&gt;Anki&lt;/a&gt; spaced repetition flashcard system to Android. Memorize anything with AnkiDroid!&lt;/p&gt; 
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ankidroid/Anki-Android/main/docs/graphics/logos/ankidroid_logo.png&quot; align=&quot;right&quot; width=&quot;40%&quot; height=&quot;100%&quot; /&gt;&lt;/p&gt; 
&lt;h3&gt;Features&lt;/h3&gt; 
&lt;div style=&quot;display:flex;&quot;&gt; 
 &lt;ul&gt; 
  &lt;li&gt;Night mode&lt;/li&gt; 
  &lt;li&gt;Whiteboard&lt;/li&gt; 
  &lt;li&gt;Progress widget&lt;/li&gt; 
  &lt;li&gt;Detailed statistics&lt;/li&gt; 
  &lt;li&gt;Syncing with AnkiWeb&lt;/li&gt; 
  &lt;li&gt;Write answers (optional)&lt;/li&gt; 
  &lt;li&gt;Text-to-speech integration&lt;/li&gt; 
  &lt;li&gt;More than 10,000 premade decks&lt;/li&gt; 
  &lt;li&gt;Spaced repetition (AI-optimized &lt;a href=&quot;https://github.com/open-spaced-repetition&quot;&gt;FSRS algorithm&lt;/a&gt;)&lt;/li&gt; 
  &lt;li&gt;Supported contents: text, images, sounds, MathJax&lt;/li&gt; 
  &lt;li&gt;Add cards by intent from other applications like dictionaries&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/div&gt; 
&lt;h2&gt;Install&lt;/h2&gt; 
&lt;div style=&quot;display:flex;&quot;&gt; 
 &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.ichi2.anki&amp;amp;utm_source=global_co&amp;amp;utm_medium=prtnr&amp;amp;utm_content=Mar2515&amp;amp;utm_campaign=PartBadge&amp;amp;pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1&quot;&gt; &lt;img alt=&quot;Get it on Google Play&quot; height=&quot;80&quot; src=&quot;https://raw.githubusercontent.com/ankidroid/Anki-Android/main/docs/graphics/logos/google-badge.png&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;https://f-droid.org/repository/browse/?fdid=com.ichi2.anki&quot;&gt; &lt;img alt=&quot;Get it on F-Droid&quot; height=&quot;80&quot; src=&quot;https://raw.githubusercontent.com/ankidroid/Anki-Android/main/docs/graphics/logos/f-droid-badge.png&quot; /&gt;&lt;/a&gt; 
 &lt;a href=&quot;http://apps.obtainium.imranr.dev/redirect.html?r=obtainium://add/https://github.com/ankidroid/Anki-Android&quot;&gt; &lt;img alt=&quot;Get it on Obtainium&quot; height=&quot;80&quot; src=&quot;https://github.com/user-attachments/assets/713d71c5-3dec-4ec4-a3f2-8d28d025a9c6&quot; /&gt;&lt;/a&gt; 
&lt;/div&gt; 
&lt;p&gt;Signing certificate fingerprint to &lt;a href=&quot;https://developer.android.com/studio/command-line/apksigner#usage-verify&quot;&gt;verify&lt;/a&gt; the APK:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;SHA-256: 2071534f0f4b5e54ae952dd275d70da6e3459ee69909d2ab1b4843c4c5b21a45 
SHA-1: f24e06a3657b190a12671100402df32d7b9b3d36
&lt;/code&gt;&lt;/pre&gt; 
&lt;h2&gt;Wiki&lt;/h2&gt; 
&lt;p&gt;View &lt;a href=&quot;https://github.com/ankidroid/Anki-Android/wiki&quot;&gt;Wiki&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Help&lt;/h2&gt; 
&lt;p&gt;Check the &lt;a href=&quot;https://docs.ankidroid.org/&quot;&gt;user manual&lt;/a&gt; and the wiki for usage instructions. See the &lt;a href=&quot;https://docs.ankidroid.org/help.html&quot;&gt;help page&lt;/a&gt; for how to submit a bug report or contact a project member, etc.&lt;/p&gt; 
&lt;h2&gt;Contribute&lt;/h2&gt; 
&lt;p&gt;You can contribute to AnkiDroid by beta testing, translating, or submitting code. See the &lt;a href=&quot;https://github.com/ankidroid/Anki-Android/wiki/Contributing&quot;&gt;contribution wiki page&lt;/a&gt; for more info.&lt;/p&gt; 
&lt;h2&gt;Join Us On&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;https://discord.gg/qjzcRTx&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ankidroid/Anki-Android/main/docs/graphics/logos/discord_logo_color.svg?sanitize=true&quot; height=&quot;46px&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.reddit.com/r/Anki&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ankidroid/Anki-Android/main/docs/graphics/logos/reddit_logo_color.png&quot; height=&quot;50px&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://www.facebook.com/AnkiDroid/&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ankidroid/Anki-Android/main/docs/graphics/logos/facebook_logo_color.png&quot; height=&quot;50px&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://x.com/ankidroid&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ankidroid/Anki-Android/main/docs/graphics/logos/twitter_logo.png&quot; height=&quot;50px&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;https://forums.ankiweb.net/&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/ankidroid/Anki-Android/main/docs/graphics/logos/anki_forums_logo.png&quot; height=&quot;50px&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h2&gt;Credits&lt;/h2&gt; 
&lt;!-- Do not rename this section. AnkiDroid contains a deep link to the section
header - see https://github.com/ankidroid/Anki-Android/pull/11803 ---&gt; 
&lt;h3&gt;Code Contributors&lt;/h3&gt; 
&lt;p&gt;Thanks to these awesome code contributors who keep this project going&lt;/p&gt; 
&lt;p&gt;&lt;a href=&quot;https://github.com/ankidroid/Anki-Android/graphs/contributors&quot;&gt;&lt;img src=&quot;https://opencollective.com/ankidroid/contributors.svg?width=890&amp;amp;button=false&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;h3&gt;&lt;a href=&quot;https://opencollective.com/ankidroid#sponsor&quot;&gt;Sponsors&lt;/a&gt;&lt;/h3&gt; 
&lt;a href=&quot;https://opencollective.com/ankidroid#sponsor&quot; target=&quot;_blank&quot;&gt; &lt;img alt=&quot;AnkiDroid Sponsors&quot; src=&quot;https://opencollective.com/Ankidroid/sponsors.svg?width=890&quot; /&gt; &lt;/a&gt; 
&lt;h3&gt;&lt;a href=&quot;https://opencollective.com/ankidroid#backer&quot;&gt;Backers&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;A big thank you to each of our backers 🙏 &lt;a href=&quot;https://opencollective.com/Ankidroid#backers&quot; target=&quot;_blank&quot;&gt;&lt;img width=&quot;110&quot; src=&quot;https://opencollective.com/Ankidroid/backers/badge.svg?&quot; /&gt;&lt;/a&gt;&lt;/p&gt; 
&lt;p&gt;Your generous donations mean the world to us, and we can&#39;t express our gratitude enough. Your support fuels our mission and helps us make a real difference&lt;/p&gt; 
&lt;a href=&quot;https://opencollective.com/Ankidroid/donate&quot; target=&quot;_blank&quot;&gt; &lt;img alt=&quot;Donate to AnkiDroid&quot; src=&quot;https://opencollective.com/Ankidroid/donate/button@2x.png?color=blue&quot; width=&quot;200&quot; /&gt; &lt;/a&gt; 
&lt;h3&gt;&lt;a href=&quot;https://crowdin.com/project/ankidroid/activity-stream&quot;&gt;Translators&lt;/a&gt;&lt;/h3&gt; 
&lt;p&gt;Thanks to our 1400 translators, for allowing us to be available, partially or totally, in 99 languages as of July 2022.&lt;/p&gt; 
&lt;h2&gt;License&lt;/h2&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ankidroid/Anki-Android/raw/main/COPYING&quot;&gt;GPL-3.0 License&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ankitects/anki/raw/main/LICENSE&quot;&gt;AGPL-3.0 License&lt;/a&gt; for some part of the back-end&lt;/li&gt; 
 &lt;li&gt;&lt;a href=&quot;https://github.com/ankidroid/Anki-Android/raw/main/api/COPYING.LESSER&quot;&gt;LGPL-3.0 License&lt;/a&gt; for the AnkiDroid API&lt;/li&gt; 
&lt;/ul&gt;</description>
      
      <media:content url="https://opengraph.githubassets.com/173d9c4da663c45040867bd4b4770d5abccdcdf9f3ad0ec878c38cc2ec2d5cb9/ankidroid/Anki-Android" medium="image" />
      
    </item>
    
  </channel>
</rss>
