jpush/aurora-imui
General IM UI components. Android/iOS/RectNative ready. 通用 IM 聊天 UI 组件,已经同时支持 Android/iOS/RN。
Stale — last commit 3y ago
weakest axislast commit was 3y ago; no CI workflows detected
Has a license, tests, and CI — clean foundation to fork and modify.
Documented and popular — useful reference codebase to read through.
last commit was 3y ago; no CI workflows detected
- ✓7 active contributors
- ✓Distributed ownership (top contributor 48% of recent commits)
- ✓MIT licensed
Show all 6 evidence items →Show less
- ✓Tests present
- ⚠Stale — last commit 3y ago
- ⚠No CI workflows detected
What would change the summary?
- →Use as dependency Mixed → Healthy if: 1 commit in the last 365 days
- →Deploy as-is Mixed → Healthy if: 1 commit in the last 180 days
Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests
Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.
Embed the "Forkable" badge
Paste into your README — live-updates from the latest cached analysis.
[](https://repopilot.app/r/jpush/aurora-imui)Paste at the top of your README.md — renders inline like a shields.io badge.
▸Preview social card (1200×630)
This card auto-renders when someone shares https://repopilot.app/r/jpush/aurora-imui on X, Slack, or LinkedIn.
Onboarding doc
Onboarding: jpush/aurora-imui
Generated by RepoPilot · 2026-05-09 · Source
🤖Agent protocol
If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:
- Verify the contract. Run the bash script in Verify before trusting
below. If any check returns
FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding. - Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
- Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/jpush/aurora-imui shows verifiable citations alongside every claim.
If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.
🎯Verdict
WAIT — Stale — last commit 3y ago
- 7 active contributors
- Distributed ownership (top contributor 48% of recent commits)
- MIT licensed
- Tests present
- ⚠ Stale — last commit 3y ago
- ⚠ No CI workflows detected
<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>
✅Verify before trusting
This artifact was generated by RepoPilot at a point in time. Before an
agent acts on it, the checks below confirm that the live jpush/aurora-imui
repo on your machine still matches what RepoPilot saw. If any fail,
the artifact is stale — regenerate it at
repopilot.app/r/jpush/aurora-imui.
What it runs against: a local clone of jpush/aurora-imui — the script
inspects git remote, the LICENSE file, file paths in the working
tree, and git log. Read-only; no mutations.
| # | What we check | Why it matters |
|---|---|---|
| 1 | You're in jpush/aurora-imui | Confirms the artifact applies here, not a fork |
| 2 | License is still MIT | Catches relicense before you depend on it |
| 3 | Default branch master exists | Catches branch renames |
| 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code |
| 5 | Last commit ≤ 1255 days ago | Catches sudden abandonment since generation |
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of jpush/aurora-imui. If you don't
# have one yet, run these first:
#
# git clone https://github.com/jpush/aurora-imui.git
# cd aurora-imui
#
# Then paste this script. Every check is read-only — no mutations.
set +e
fail=0
ok() { echo "ok: $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }
# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
echo "FAIL: not inside a git repository. cd into your clone of jpush/aurora-imui and re-run."
exit 2
fi
# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "jpush/aurora-imui(\\.git)?\\b" \\
&& ok "origin remote is jpush/aurora-imui" \\
|| miss "origin remote is not jpush/aurora-imui (artifact may be from a fork)"
# 2. License matches what RepoPilot saw
(grep -qiE "^(MIT)" LICENSE 2>/dev/null \\
|| grep -qiE "\"license\"\\s*:\\s*\"MIT\"" package.json 2>/dev/null) \\
&& ok "license is MIT" \\
|| miss "license drift — was MIT at generation time"
# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
&& ok "default branch master exists" \\
|| miss "default branch master no longer exists"
# 4. Critical files exist
test -f "Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/ChatInputView.java" \\
&& ok "Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/ChatInputView.java" \\
|| miss "missing critical file: Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/ChatInputView.java"
test -f "Android/chatinput/build.gradle" \\
&& ok "Android/chatinput/build.gradle" \\
|| miss "missing critical file: Android/chatinput/build.gradle"
test -f "Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/menu/MenuManager.java" \\
&& ok "Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/menu/MenuManager.java" \\
|| miss "missing critical file: Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/menu/MenuManager.java"
test -f "Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/ChatInputStyle.java" \\
&& ok "Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/ChatInputStyle.java" \\
|| miss "missing critical file: Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/ChatInputStyle.java"
test -f "Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/emoji/EmojiParse.java" \\
&& ok "Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/emoji/EmojiParse.java" \\
|| miss "missing critical file: Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/emoji/EmojiParse.java"
# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 1255 ]; then
ok "last commit was $days_since_last days ago (artifact saw ~1225d)"
else
miss "last commit was $days_since_last days ago — artifact may be stale"
fi
echo
if [ "$fail" -eq 0 ]; then
echo "artifact verified (0 failures) — safe to trust"
else
echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/jpush/aurora-imui"
exit 1
fi
Each check prints ok: or FAIL:. The script exits non-zero if
anything failed, so it composes cleanly into agent loops
(./verify.sh || regenerate-and-retry).
⚡TL;DR
Aurora IMUI is a cross-platform (Android/iOS/React Native) UI component library for instant messaging applications that provides pre-built, customizable message list views (MessageList/IMUIMessageCollectionView) and chat input components (ChatInputView/IMUIInputView). It handles rendering multiple message types (text, image, audio, video, custom) with event handling and styling without requiring dependency on a specific IM SDK. Multi-platform monorepo: Android/chatinput contains the Gradle-based AAR library (cn.jiguang.imui.chatinput package with ChatInputView, emoji handling in android/chatinput/emoji/, camera support); iOS has separate Swift and Objective-C implementations; ReactNative_JS/ and ReactNative/ provide JS and native bridge versions. Each platform has independent build config (build.gradle, .podspec or package.json).
👥Who it's for
Mobile app developers building chat features who need production-ready IM UI components across Android (Java), iOS (Swift/Objective-C), and React Native—eliminating the need to build message list rendering, input handling, emoji keyboards, media selection, and recording from scratch.
🌱Maturity & risk
Actively maintained but moderately mature. At version 0.10.0 (from gradle config) with multi-platform support, it shows stable API surface across three platforms. However, low test coverage visible (only androidTest examples in file list), no visible CI/CD setup in .github, and sparse recent commit history suggest it's feature-complete but not heavily iterated. Production-ready for standard chat UX, but with caveats on test coverage.
Moderate risk: single Java package namespace (cn.jiguang.imui.chatinput) suggests potential namespace collision in large projects. Android module targets compileSdkVersion 27 (deprecated; current is 34+), creating future compatibility issues. No visible dependency lock files or vulnerability scanning. Limited Objective-C maintenance (107KB vs 368KB Swift) hints at iOS platform drift. Dependency on Glide 4.6.1 and support-v7 27.1.0 are outdated and unmaintained.
Active areas of work
Library appears in maintenance mode: version tag 0.4.7 in README vs 0.10.0 in gradle suggests version inconsistency. No visible active feature branches or PR activity in file list. QQ Group badge (604798367) and link to aurora-imui-examples suggest community support exists but primary development velocity is low. Last significant work appears Android-focused (proguard rules, release AAR pipeline).
🚀Get running
Clone and inspect Android module: git clone https://github.com/jpush/aurora-imui.git && cd Android/chatinput && ./gradlew build. For iOS, navigate to iOS directory and check .podspec; for React Native, cd ReactNative && npm install. No global setup script visible—each platform is independent.
Daily commands:
Android: cd Android/chatinput && ./gradlew assembleDebug (outputs .aar). iOS: check README_EN.md for CocoaPods or Carthage setup (not visible in snippet). React Native: cd ReactNative && npm install && npx react-native run-android or run-ios. No unified dev server; each platform has independent build pipelines.
🗺️Map of the codebase
Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/ChatInputView.java— Core input view component that orchestrates chat input UI; main entry point for Android chat input functionalityAndroid/chatinput/build.gradle— Build configuration defining dependencies, SDK versions, and artifact publishing; essential for reproducible buildsAndroid/chatinput/src/main/java/cn/jiguang/imui/chatinput/menu/MenuManager.java— Central menu management system handling all menu items and interactions in the chat input interfaceAndroid/chatinput/src/main/java/cn/jiguang/imui/chatinput/ChatInputStyle.java— Style configuration class that defines theming and customization for the entire chat input componentAndroid/chatinput/src/main/java/cn/jiguang/imui/chatinput/emoji/EmojiParse.java— Core emoji parsing and rendering engine; handles complex emoji/emoticon display logic throughout the UIAndroid/chatinput/src/main/java/cn/jiguang/imui/chatinput/record/RecordVoiceButton.java— Voice recording UI component; integrates recording lifecycle, permissions, and user feedbackAndroid/chatinput/src/main/AndroidManifest.xml— Android manifest declaring component configuration, permissions (camera, microphone), and library metadata
🛠️How to make changes
Add a Custom Menu Item
- Create a new MenuItem or MenuFeature class extending base menu classes (
Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/menu/view/MenuItem.java) - Register the menu item in MenuCollection or MenuItemCollection (
Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/menu/collection/MenuItemCollection.java) - Implement OnMenuClickListener to handle the menu item click event (
Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/listener/OnMenuClickListener.java) - Call setMenuClickListener on ChatInputView and handle the event in your activity/fragment (
Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/ChatInputView.java)
Customize Emoji & Emoticon Display
- Provide custom emoji/emoticon data by creating an EmoticonPageSetEntity with your assets (
Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/emoji/data/EmoticonPageSetEntity.java) - Implement custom ImageBase listener for loading emoticon images (
Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/emoji/listener/ImageBase.java) - Set the custom emoticon display listener on EmojiView via setEmoticonDisplayListener (
Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/emoji/EmojiView.java) - Customize parsing behavior in EmojiParse to handle custom emoji formats (
Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/emoji/EmojiParse.java)
Integrate Voice Recording
- Ensure voice recording permissions are declared in AndroidManifest.xml (
Android/chatinput/src/main/AndroidManifest.xml) - Set a RecordVoiceListener on ChatInputView to handle recording lifecycle events (
Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/listener/RecordVoiceListener.java) - Override getAudioFilePath() to specify where voice files should be saved (
Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/record/RecordVoiceButton.java) - Customize recording UI appearance via ChatInputStyle (
Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/ChatInputStyle.java)
Add Camera & Photo Support
- Declare CAMERA and file permissions in AndroidManifest.xml (
Android/chatinput/src/main/AndroidManifest.xml) - Implement CameraEventListener to handle camera start/stop/error events (
Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/listener/CameraEventListener.java) - Set the camera event listener on ChatInputView and handle file path results (
Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/ChatInputView.java) - Optionally customize camera behavior by extending CameraNew or CameraOld based on API level (
Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/camera/CameraSupport.java)
🪤Traps & gotchas
No visible Gradle wrapper verification script (gradle-wrapper.jar missing from list), requires .gradle folder on disk to build. compileSdkVersion 27 forces targeting old Android API—projects on API 30+ may encounter compatibility issues. Glide 4.6.1 is EOL; known memory leaks in certain Android versions. No ProGuard/R8 mapping file visible, obfuscation rules in proguard-rules.pro may strip reflection-based emoji loading. Emoji assets likely load from classpath (DefEmoticons.java)—missing or misplaced emoji files cause silent failures. iOS and Android version strings diverge (0.4.7 vs 0.10.0) in docs/gradle—no canonical version source.
🏗️Architecture
💡Concepts to learn
- Emoticon vs Emoji — Codebase uses both terms—emoticons are user-selectable packs (EmoticonEntity, EmoticonsAdapter) while emojis are system Unicode characters (EmojiSpan, EmojiParse). Understanding this distinction prevents confusion in defect triage.
- Camera HAL Abstraction (CameraSupport pattern) — Android's Camera API changed drastically between API 20 and 21. CameraSupport.java delegates to CameraNew or CameraOld—a concrete example of adapter pattern for framework version compatibility that scales across major OS versions.
- RecyclerView Adapter with Pagination (PageSetAdapter) — Emoji keyboards use PageSetAdapter to render emoji packs across swipeable pages. Understanding RecyclerView paging is critical for optimizing large emoji sets and preventing memory leaks in emoji-heavy chats.
- Span (Text Styling in Android) — EmojiSpan extends Android Span to render emoji images inline with text without replacing underlying Unicode. Critical for hybrid text+emoji message rendering and custom message styling.
- Platform Bridge Architecture (React Native) — ReactNative/ and ReactNative_JS/ provide two bridge models—native module bridge vs pure JS. Understanding when to use each (native for performance-critical camera/recording, JS for UI) is essential for RN contributions.
- Message Type Polymorphism — Library supports text, image, audio, video, custom types through a unified message interface. Each type has platform-specific rendering (ChatInputView on Android, IMUIInputView on iOS) requiring careful type dispatch.
- Proguard/R8 Obfuscation Rules — proguard-rules.pro exempts emoji/emoticon reflection-based loading from obfuscation. Incorrect rules cause runtime class-not-found errors in production release builds—critical for AAR distribution.
🔗Related repos
jpush/aurora-imui-examples— Official example apps demonstrating IMUI integration patterns for Android, iOS, and RN—essential reference for onboarding new usersfacebook/react-native— Upstream React Native framework that ReactNative_JS and ReactNative bridge implementations depend ontim-linux/react-native-imui— Alternative RN chat UI with similar feature set; useful for feature comparison and architectural patternsjpush/jpush-android-sdk— Companion JiGuang push SDK often used with IMUI for production chat apps (referenced implicitly by namespace jpush/jiguang)bumptech/glide— Image loading dependency used throughout Android module (Glide 4.6.1); understanding Glide's API and lifecycle is required for image message rendering
🪄PR ideas
To work on one of these in Claude Code or Cursor, paste:
Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.
Add comprehensive unit tests for Android emoji processing pipeline
The Android emoji module (Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/emoji/) has multiple complex components like EmojiParse.java, EmojiFilter.java, EmoticonFilter.java, and EmojiSpan.java that lack test coverage. Currently only ExampleInstrumentedTest.java exists. Adding targeted tests for emoji parsing, filtering, and rendering would catch regressions in this critical feature and improve code reliability.
- [ ] Create Android/chatinput/src/androidTest/java/.../emoji/EmojiParseTest.java to test emoji parsing logic and edge cases
- [ ] Create Android/chatinput/src/androidTest/java/.../emoji/EmojiFilterTest.java to verify filtering behavior with mixed content
- [ ] Create Android/chatinput/src/androidTest/java/.../emoji/EmojiSpanTest.java to test span rendering and display
- [ ] Add tests for DefEmoticons.java to verify default emoticon data loading
- [ ] Run tests via androidTest gradle task and ensure >80% coverage for emoji package
Add GitHub Actions CI workflow for Android library builds and tests
The repo has .github/issue_template.md but no build/test CI pipeline. Android builds are critical since the library publishes to Maven (PUBLISH_GROUP_ID = 'cn.jiguang.imui'). A GitHub Actions workflow would catch compilation errors, dependency issues, and lint violations on every PR before merge.
- [ ] Create .github/workflows/android-build.yml with steps to: setup JDK, run './gradlew build' in Android/chatinput/
- [ ] Add lint check step: './gradlew lint' to catch Android-specific issues
- [ ] Add androidTest execution for instrumented tests: './gradlew connectedAndroidTest'
- [ ] Configure workflow to trigger on push to main and all pull requests
- [ ] Set minifyEnabled: true in release buildType during CI to catch ProGuard rule issues early
Add platform compatibility matrix and API level documentation for Android
The Android/chatinput/build.gradle specifies minSdkVersion 16, compileSdkVersion 27, but there's no documentation explaining which features require which API levels or testing guidance. The emoji module uses reflection and custom renderers that may have compatibility issues. Clear documentation would help contributors understand platform constraints.
- [ ] Create Android/chatinput/COMPATIBILITY.md documenting minSdkVersion 16 support and any API level-specific features
- [ ] Document which emoji features (EmojiDisplay, EmojiSpan rendering) require API level 21+ with fallback behavior
- [ ] List tested device/emulator configurations and Android versions in the documentation
- [ ] Document ProGuard rules in Android/chatinput/proguard-rules.pro with inline comments explaining why specific rules exist
- [ ] Add API level requirements for CameraNew.java vs CameraOld.java in Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/camera/
🌿Good first issues
- Add unit tests for EmojiParse.java and EmojiFilter.java in Android/chatinput/src/androidTest/—currently only instrumentedTest example exists, no logic tests for emoji regex/parsing
- Update Android build config to compileSdkVersion 34 and migrate from deprecated support-v7 (27.1.0) to androidx.appcompat:appcompat:1.6.0—maintain backward compat via minSdkVersion 16
- Document emoji asset loading in Android/chatinput/src/main/java/cn/jiguang/imui/chatinput/emoji/ImageLoader.java—unclear how custom emoji are provided (classpath, assets/, external URL?) with concrete examples
⭐Top contributors
Click to expand
Top contributors
- @huangminlinux — 48 commits
- @JoshLipan — 45 commits
- @KenChoi1992 — 3 commits
- @hyhSuper — 1 commits
- @raoxudong — 1 commits
📝Recent commits
Click to expand
Recent commits
fb74b79— Merge pull request #632 from jpush/dev (JoshLipan)75acede— Update example git ignore (JoshLipan)c66fcbc— Update example git ignore (JoshLipan)6ec62be— remove lock file (JoshLipan)565c15e— Merge pull request #624 from raoxudong/master (hyhSuper)7794feb— fix inputview crash bug (raoxudong)8c0c5e2— Fix send picture bug. (KenChoi1992)38dea7e— Merge branch 'dev' of github.com:jpush/imui into dev (KenChoi1992)bc25bba— Fix switch menu to SoftInput cause MessageList scrolls. (KenChoi1992)1554e04— update to 0.14.0 aurora-imui-react-native (huangminlinux)
🔒Security observations
- High · Outdated Android Dependencies with Known Vulnerabilities —
Android/chatinput/build.gradle - dependencies section. The project uses outdated Android support libraries (27.1.0 from 2018) and Glide 4.6.1. These versions have multiple known CVEs including potential security vulnerabilities in support libraries and image loading components. Android Support Library 27.1.0 is no longer maintained and lacks critical security patches. Fix: Update to AndroidX (androidx.appcompat:appcompat:1.6.x) and latest stable versions. Update com.github.bumptech.glide:glide to 4.15.x or later. Replace com.android.support libraries with androidx equivalents. - High · Outdated Build Tools and Target SDK —
Android/chatinput/build.gradle - android section. The project targets SDK 27 (Android 8.1, released 2018) and uses buildToolsVersion 27.0.3. This is significantly outdated and missing modern security features like scoped storage, permission changes, and other security hardening introduced in Android 10+. Current minimum requirement is Android 12 (API 31). Fix: Update targetSdkVersion to at least 33 or 34. Update compileSdkVersion and buildToolsVersion to latest stable versions (currently 34.x). - Medium · Minify Disabled in Release Build —
Android/chatinput/build.gradle - buildTypes.release section. The release build has minifyEnabled set to false, which means ProGuard/R8 code shrinking and obfuscation is disabled. This exposes sensitive logic, method names, and class structures in the compiled APK, making reverse engineering easier. Fix: Enable minifyEnabled for release builds. Set minifyEnabled true and ensure proper ProGuard rules are configured in proguard-rules.pro to protect sensitive code while maintaining functionality. - Medium · Lint Errors Ignored in Build Configuration —
Android/chatinput/build.gradle - lintOptions section. The lintOptions section has abortOnError set to false, which suppresses lint warnings and errors during the build process. This could hide critical security issues, data flow problems, and potential vulnerabilities that lint tools detect. Fix: Enable lint error reporting by removing abortOnError false or setting it to true. Fix underlying lint issues rather than suppressing them. Use lintOptions to disable only specific non-critical checks if necessary. - Medium · Missing Security-Related Lint Checks Configuration —
Android/chatinput/build.gradle. No explicit configuration for security-related lint checks such as MissingPermission, UnsafeProtectedBroadcastReceiver, or WorldReadableFiles. Given this is a camera/media handling library, security lint checks should be explicitly configured. Fix: Add explicit lint configuration for security checks. Example: lintOptions { enable 'MissingPermission', 'UnsafeProtectedBroadcastReceiver', 'WorldReadableFiles' } - Medium · Gradle Build File Lacks Security Dependency Checks —
Android/chatinput/build.gradle. No dependency management tools configured (like gradle-dependency-check plugin or dependency-verification feature) to automatically detect and report known vulnerabilities in transitive dependencies. Fix: Add dependency vulnerability scanning using: org.owasp:dependency-check-gradle plugin or enable Gradle's built-in dependency verification. Regularly audit dependencies using tools like 'gradle dependencyUpdates'. - Low · Missing Version Lock for Critical Dependencies —
Android/chatinput/build.gradle - dependencies section. Dependencies are specified with exact versions but lack platform BOM or version catalogs for consistent dependency management across the project, potentially leading to transitive dependency version conflicts. Fix: Implement a dependency management strategy using Gradle platform or version catalog (libs.versions.toml) to centralize and lock versions, preventing unexpected transitive updates. - Low · Test Dependency with Known Issues —
Android/chatinput/build.gradle - android. androidTestImplementation uses espresso-core:2.2.2 (from 2016) which is outdated. While test dependencies are less critical, using outdated versions can introduce issues in test coverage and security validation. Fix: undefined
LLM-derived; treat as a starting point, not a security audit.
👉Where to read next
- Open issues — current backlog
- Recent PRs — what's actively shipping
- Source on GitHub
Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.