RepoPilotOpen in app →

saiwu-bigkoo/Android-ConvenientBanner

Simple and convenient banner, loop viewpager with 3D effects

Concerns

Stale and unlicensed — last commit 3y ago

weakest axis
Use as dependencyConcerns

no license — legally unclear; last commit was 3y ago…

Fork & modifyConcerns

no license — can't legally use code; no tests detected…

Learn fromHealthy

Documented and popular — useful reference codebase to read through.

Deploy as-isConcerns

no license — can't legally use code; last commit was 3y ago…

  • 6 active contributors
  • Stale — last commit 3y ago
  • Single-maintainer risk — top contributor 90% of recent commits
Show all 6 evidence items →
  • No license — legally unclear to depend on
  • No CI workflows detected
  • No test directory detected
What would change the summary?
  • Use as dependency ConcernsMixed if: publish a permissive license (MIT, Apache-2.0, etc.)
  • Fork & modify ConcernsMixed if: add a LICENSE file
  • Deploy as-is ConcernsMixed if: add a LICENSE file

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 "Great to learn from" badge

Paste into your README — live-updates from the latest cached analysis.

RepoPilot: Great to learn from
[![RepoPilot: Great to learn from](https://repopilot.app/api/badge/saiwu-bigkoo/android-convenientbanner?axis=learn)](https://repopilot.app/r/saiwu-bigkoo/android-convenientbanner)

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/saiwu-bigkoo/android-convenientbanner on X, Slack, or LinkedIn.

Onboarding doc

Onboarding: saiwu-bigkoo/Android-ConvenientBanner

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:

  1. 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.
  2. 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.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/saiwu-bigkoo/Android-ConvenientBanner 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

AVOID — Stale and unlicensed — last commit 3y ago

  • 6 active contributors
  • ⚠ Stale — last commit 3y ago
  • ⚠ Single-maintainer risk — top contributor 90% of recent commits
  • ⚠ No license — legally unclear to depend on
  • ⚠ No CI workflows detected
  • ⚠ No test directory 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 saiwu-bigkoo/Android-ConvenientBanner repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale — regenerate it at repopilot.app/r/saiwu-bigkoo/Android-ConvenientBanner.

What it runs against: a local clone of saiwu-bigkoo/Android-ConvenientBanner — 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 saiwu-bigkoo/Android-ConvenientBanner | Confirms the artifact applies here, not a fork | | 2 | Default branch master exists | Catches branch renames | | 3 | 5 critical file paths still exist | Catches refactors that moved load-bearing code | | 4 | Last commit ≤ 971 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> — paste this script from inside your clone of <code>saiwu-bigkoo/Android-ConvenientBanner</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of saiwu-bigkoo/Android-ConvenientBanner. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/saiwu-bigkoo/Android-ConvenientBanner.git
#   cd Android-ConvenientBanner
#
# 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 saiwu-bigkoo/Android-ConvenientBanner and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "saiwu-bigkoo/Android-ConvenientBanner(\\.git)?\\b" \\
  && ok "origin remote is saiwu-bigkoo/Android-ConvenientBanner" \\
  || miss "origin remote is not saiwu-bigkoo/Android-ConvenientBanner (artifact may be from a fork)"

# 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 "convenientbanner/src/main/java/com/bigkoo/convenientbanner/ConvenientBanner.java" \\
  && ok "convenientbanner/src/main/java/com/bigkoo/convenientbanner/ConvenientBanner.java" \\
  || miss "missing critical file: convenientbanner/src/main/java/com/bigkoo/convenientbanner/ConvenientBanner.java"
test -f "convenientbanner/src/main/java/com/bigkoo/convenientbanner/adapter/CBPageAdapter.java" \\
  && ok "convenientbanner/src/main/java/com/bigkoo/convenientbanner/adapter/CBPageAdapter.java" \\
  || miss "missing critical file: convenientbanner/src/main/java/com/bigkoo/convenientbanner/adapter/CBPageAdapter.java"
test -f "convenientbanner/src/main/java/com/bigkoo/convenientbanner/holder/Holder.java" \\
  && ok "convenientbanner/src/main/java/com/bigkoo/convenientbanner/holder/Holder.java" \\
  || miss "missing critical file: convenientbanner/src/main/java/com/bigkoo/convenientbanner/holder/Holder.java"
test -f "convenientbanner/src/main/java/com/bigkoo/convenientbanner/helper/CBLoopScaleHelper.java" \\
  && ok "convenientbanner/src/main/java/com/bigkoo/convenientbanner/helper/CBLoopScaleHelper.java" \\
  || miss "missing critical file: convenientbanner/src/main/java/com/bigkoo/convenientbanner/helper/CBLoopScaleHelper.java"
test -f "convenientbanner/src/main/java/com/bigkoo/convenientbanner/listener/OnItemClickListener.java" \\
  && ok "convenientbanner/src/main/java/com/bigkoo/convenientbanner/listener/OnItemClickListener.java" \\
  || miss "missing critical file: convenientbanner/src/main/java/com/bigkoo/convenientbanner/listener/OnItemClickListener.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 971 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~941d)"
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/saiwu-bigkoo/Android-ConvenientBanner"
  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).

</details>

TL;DR

Android-ConvenientBanner is a reusable banner/carousel widget for Android that implements an infinite looping ViewPager with 3D perspective effects. It abstracts away boilerplate for creating image carousels with automatic scrolling, gesture handling, and customizable page indicators—solving the friction of building ad banners, image galleries, and tutorial screens from scratch. Standard Android library structure: convenientbanner/ module contains the core banner widget and Holder interface system; app/ module is a demonstration app with two sample implementations (LocalImageHolderView in app/src/main/java/com/bigkoo/convenientbannerdemo/LocalImageHolderView.java and NetWorkImageHolderView). The Holder<T> pattern decouples view creation and data binding, allowing users to inject any custom view layout.

👥Who it's for

Android developers (API 15+) who need to quickly add rotating image banners or carousels to apps without writing custom ViewPager adapters. Particularly useful for teams building e-commerce, news, or media apps where ad/featured content sliders are standard UI patterns.

🌱Maturity & risk

Moderately mature and stable. Published to Maven Central (version 2.1.5 visible in build.gradle), with a complete demo app in this repo showing working implementations. However, the codebase shows minimal recent activity; no CI setup (.travis.yml or GitHub Actions) is visible, suggesting community-maintained rather than actively developed status. Production-ready for standard use cases, but maintenance risk exists.

Low-to-moderate risk. Dependency footprint is light (RecyclerView, legacy-support-v4, Fresco for images), but Fresco (Facebook's image library) is a heavyweight optional dependency. The single maintainer (saiwu-bigkoo) model means feature requests and security patches depend on one person's availability. AndroidX migration is done (androidx.* in build.gradle), but the minSdkVersion of 15 (from 2013) may harbor undiscovered API compatibility issues on modern Android.

Active areas of work

No visible active development in this repo data snapshot. No open PRs, milestones, or recent commit timestamps are present. The README mentions version 2.1.5 is available; the demo app depends on it from Maven Central rather than a local :convenientbanner module (line in build.gradle is commented out).

🚀Get running

Clone the repo, then open in Android Studio: git clone https://github.com/saiwu-bigkoo/Android-ConvenientBanner.git && cd Android-ConvenientBanner. Gradle is the build system (build.gradle present). Open app/build.gradle and sync Gradle; the demo app will build and run on API 15+ devices/emulators. No additional setup (API keys, services) is required.

Daily commands: ./gradlew assembleDebug to build, then deploy to emulator/device via Android Studio's Run button (Shift+F10) or adb install app/build/outputs/apk/debug/app-debug.apk. No server required; demo uses local drawable resources.

🗺️Map of the codebase

  • convenientbanner/src/main/java/com/bigkoo/convenientbanner/ConvenientBanner.java — Core banner widget that orchestrates ViewPager lifecycle, looping behavior, and 3D transformations—the primary public API.
  • convenientbanner/src/main/java/com/bigkoo/convenientbanner/adapter/CBPageAdapter.java — Adapter responsible for infinite looping logic and ViewPager item binding—critical for the carousel cycling mechanics.
  • convenientbanner/src/main/java/com/bigkoo/convenientbanner/holder/Holder.java — Abstract base class for banner item view holders—all custom banner content extends this interface.
  • convenientbanner/src/main/java/com/bigkoo/convenientbanner/helper/CBLoopScaleHelper.java — Implements the 3D scale transformation effects for carousel items—handles the visual depth/perspective.
  • convenientbanner/src/main/java/com/bigkoo/convenientbanner/listener/OnItemClickListener.java — Event listener interface for banner item clicks—primary hook for consuming tap events on carousel items.
  • app/src/main/java/com/bigkoo/convenientbannerdemo/MainActivity.java — Demo application entry point showing all major banner usage patterns and configuration options.
  • convenientbanner/build.gradle — Library module build configuration defining AndroidX dependencies and SDK targets.

🛠️How to make changes

Add a Custom Banner Content Type

  1. Create a new class extending Holder<YourDataModel> (app/src/main/java/com/bigkoo/convenientbannerdemo/NetWorkImageHolderView.java)
  2. Implement createView() to inflate your custom layout (convenientbanner/src/main/java/com/bigkoo/convenientbanner/holder/Holder.java)
  3. Implement updateUI() to bind data to views (app/src/main/java/com/bigkoo/convenientbannerdemo/NetWorkImageHolderView.java)
  4. Pass it to ConvenientBanner via setBannerData(data, new YourHolderCreator()) (app/src/main/java/com/bigkoo/convenientbannerdemo/MainActivity.java)

Configure Auto-Scroll & Lifecycle Behavior

  1. Set scroll interval with banner.setPageIndicatorAlign().setAutoPlayAble(true/false) (convenientbanner/src/main/java/com/bigkoo/convenientbanner/ConvenientBanner.java)
  2. In Activity.onPause(), call banner.stopTurning() to stop auto-scroll (app/src/main/java/com/bigkoo/convenientbannerdemo/MainActivity.java)
  3. In Activity.onResume(), call banner.startTurning() to resume auto-scroll (app/src/main/java/com/bigkoo/convenientbannerdemo/MainActivity.java)

Handle Banner Item Clicks & Page Changes

  1. Implement OnItemClickListener and pass to banner.setOnItemClickListener() (convenientbanner/src/main/java/com/bigkoo/convenientbanner/listener/OnItemClickListener.java)
  2. Optionally implement CBPageChangeListener for page scroll events (convenientbanner/src/main/java/com/bigkoo/convenientbanner/listener/CBPageChangeListener.java)
  3. Check demo MainActivity for concrete usage patterns (app/src/main/java/com/bigkoo/convenientbannerdemo/MainActivity.java)

Apply 3D Transformation Effects

  1. Instantiate and configure CBLoopScaleHelper with scale/alpha parameters (convenientbanner/src/main/java/com/bigkoo/convenientbanner/helper/CBLoopScaleHelper.java)
  2. Pass the helper to ConvenientBanner.setPageTransformer() (convenientbanner/src/main/java/com/bigkoo/convenientbanner/ConvenientBanner.java)

🔧Why these technologies

  • ViewPager (AndroidX) — Native Android framework for horizontal scrolling, well-optimized for carousel/banner patterns with built-in page transformers.
  • Holder Pattern (Generic Views) — Decouples banner content rendering from carousel logic; allows reuse of any content type without modifying core banner code.
  • Fresco Image Library — Efficient network image loading with progressive rendering and memory management, common choice for image-heavy Android apps circa 2018.
  • Android Handler/Timer — Simple, lightweight auto-scroll implementation using periodic posting to main thread; no external dependencies.

⚖️Trade-offs already made

  • Infinite loop via 3x data wrapping in CBPageAdapter

    • Why: Creates seamless cycling when user scrolls backward; no jarring snap-back.
    • Consequence: Memory overhead (stores 3x items); position mapping complexity; cannot directly expose real index to callbacks.
  • Custom Holder abstraction instead of standard RecyclerView.ViewHolder

    • Why: Simplified API for users; lighter-weight than full RecyclerView for single-carousel use case.
    • Consequence: Less feature-rich than RecyclerView (no item animation framework, no layout manager flexibility); requires manual lifecycle management.

🪤Traps & gotchas

No explicit AsyncTask/threading; image loading via Fresco happens off main thread, but improper Holder.UpdateUI() implementations may cause ANRs. The minSdkVersion 15 means no native support for ViewPager2 or modern constraint layouts—must use legacy ViewPager. Lifecycle handling is manual (caller must call pause/resume on ConvenientBanner in Activity lifecycle methods); forgetting this breaks auto-scroll. The Holder pattern requires manual memory management (large image caching in UpdateUI can cause OOM on low-end devices).

🏗️Architecture

💡Concepts to learn

  • ViewPager infinite loop via page recycling — ConvenientBanner's core trick for seamless looping; understanding how it duplicates pages at indices to fake infinite scrolling is essential to extending or debugging carousel behavior.
  • Page Transformer pattern — The 3D effects in ConvenientBanner come from ViewPager.PageTransformer callbacks; knowing this pattern lets you customize or add new visual effects (rotation, scale, alpha).
  • Holder/ViewHolder pattern (generic version) — ConvenientBanner's Holder<T> interface is a simplified generic adapter pattern; understanding it is key to writing custom item types and reusing the banner across different data models.
  • Activity lifecycle and auto-play pause/resume — ConvenientBanner requires manual pause()/resume() calls in Activity.onPause() and onResume(); missing this is the #1 bug in apps using this library (battery drain, animation jank on return from background).
  • View recycling in AdapterView-style widgets — The banner reuses Item views as you scroll to save memory; understanding this prevents developers from storing state in views directly or loading huge images in UpdateUI().
  • AndroidX migration and API 15 compatibility — ConvenientBanner targets AndroidX but minSdkVersion 15 (API < 21); this mismatch means some modern features are unavailable—know the constraint before adopting new Jetpack libraries in extensions.
  • aritraroy/Carousel — Direct competitor offering infinite image carousel with auto-scroll and custom indicators for Android; good reference for feature parity discussion.
  • Magnet/GhostViewPager — Alternative ViewPager transformer library providing 3D effects and custom animations; useful for understanding page transformation alternatives.
  • facebook/fresco — The image loading library used in the demo for remote images; essential for understanding ConvenientBanner's optional network image support.
  • material-components/material-components-android — Google's official Material Design carousel/carousel widget; represents the 'official' modern direction for Android carousel UI.
  • chrisbanes/PhotoView — Complementary library for pinch-to-zoom image viewing; commonly paired with ConvenientBanner for detailed image exploration workflows.

🪄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 AndroidX Migration Guide and Update Legacy Dependencies

The project uses mixed androidx and legacy support libraries (androidx.legacy:legacy-support-v4:1.0.0+ and androidx.appcompat). The README is partially encoded and doesn't document AndroidX migration status. A PR should document the migration path, update remaining legacy dependencies, and provide a migration guide for users upgrading to newer Android API levels. This addresses backward compatibility concerns and improves maintenance clarity.

  • [ ] Update app/build.gradle to replace androidx.legacy:legacy-support-v4 with androidx.fragment:fragment or androidx.viewpager2:viewpager2 equivalents
  • [ ] Create MIGRATION.md documenting AndroidX upgrade steps for library users
  • [ ] Test compatibility with targetSdkVersion 31+ (currently 28) by running app through Android Test Lab
  • [ ] Update README.md with clear AndroidX support statement and minimum SDK justification for minSdkVersion 15

Create Unit and Instrumentation Tests for Core Banner Components

The repo has no visible test directory (no app/src/test or app/src/androidTest). Given that ConvenientBanner is a UI component library with 3D transformation effects and auto-scroll behavior, it needs tests to prevent regressions. This would cover ViewPager looping logic, lifecycle management (onPause/onResume auto-scroll toggling), and transformation effects.

  • [ ] Create app/src/androidTest/java/com/bigkoo/convenientbannerdemo/ directory structure
  • [ ] Write instrumentation tests in ConvenientBannerInstrumentedTest.java covering: banner auto-scroll lifecycle binding, page indicator synchronization, and 3D transformer application
  • [ ] Create app/src/test/java/com/bigkoo/convenientbannerdemo/ for unit tests on PagerAdapter logic and data binding
  • [ ] Add gradle dependency for androidx.test:core:1.4.0+ and espresso:espresso-core:3.4.0+
  • [ ] Document test execution in README.md with example commands

Extract and Document 3D Transformation Effects with Example Implementations

The README mentions '3D effects' and 'transformer' support (layout/adapter_transformer.xml exists) but provides no documentation on available transformers or how to create custom ones. Users cannot determine what transformation options exist without reading source code. A PR should document built-in transformers and provide example custom transformer implementations.

  • [ ] Create docs/TRANSFORMERS.md documenting each available PageTransformer (e.g., DepthPageTransformer, RotationPageTransformer if implemented)
  • [ ] Add TRANSFORMERS_EXAMPLES.md with code snippets showing how to implement custom 3D transformers
  • [ ] Create sample transformer implementations in app/src/main/java/com/bigkoo/convenientbannerdemo/ (e.g., CustomRotationTransformer.java, CustomScaleTransformer.java)
  • [ ] Update activity_main.xml or create new activity_transformers_demo.xml to showcase each transformer with visual examples
  • [ ] Reference transformer documentation in main README.md with links

🌿Good first issues

  • Add unit tests for the Holder<T> interface contract and CBViewHolderCreator factory pattern (currently zero test coverage visible in repo structure; start with app/src/test/).
  • Write Javadoc comments for public methods in ConvenientBanner.java, setPages(), setPageIndicator(), and the Holder interface—currently undocumented, making the API hard to follow for newcomers.
  • Create a RecyclerView-backed banner variant (RecyclerViewConvenientBanner) that uses RecyclerView instead of ViewPager, eliminating the need for custom Holder implementations and reducing boilerplate for users.

Top contributors

Click to expand

📝Recent commits

Click to expand

🔒Security observations

The Android-ConvenientBanner codebase has significant security concerns primarily related to outdated dependencies, inadequate obfuscation, and low target/minimum SDK versions. The project appears to be maintaining legacy code without modern security updates. Critical issues include vulnerable Fresco 1.3.0 library (6+ years old), lack of code obfuscation in releases, and compatibility with Android versions from 2012. Immediate actions needed: update all dependencies, enable ProGuard minification, increase target SDK to 34+, and implement explicit network security configurations.

  • High · Outdated and Vulnerable Dependencies — app/build.gradle - dependencies section. The project uses several outdated dependencies with known vulnerabilities: Fresco 1.3.0 (released 2016, deprecated), PhotoDraweeView 1.1.3, and BaseRecyclerViewAdapterHelper 2.9.46. These libraries have not received security updates and may contain exploitable vulnerabilities. Fix: Update all dependencies to their latest stable versions: upgrade Fresco to 3.x, PhotoDraweeView to latest available, and BaseRecyclerViewAdapterHelper to 4.x. Run 'gradle dependencyUpdates' to identify all outdated packages.
  • High · Missing ProGuard Configuration in Library Module — app/build.gradle - buildTypes.release section. The convenientbanner library module has a proguard-rules.pro file, but the main application has minifyEnabled set to false in release builds. This means production code is not obfuscated, making reverse engineering trivial and exposing sensitive logic. Fix: Set minifyEnabled to true for release builds and ensure proper ProGuard rules are configured to retain necessary classes while obfuscating sensitive logic.
  • Medium · Low Target SDK Version — app/build.gradle - targetSdkVersion. The application targets SDK 28 (Android 9.0, released 2018). Modern Google Play Store requires targetSdkVersion 33+ for new apps and 34+ for updates. This indicates the app may not comply with latest Android security requirements and best practices. Fix: Update targetSdkVersion to at least 34. Review and implement necessary changes for Android 12+ compatibility (scoped storage, runtime permissions, etc.).
  • Medium · Vulnerable Minimum SDK Version — app/build.gradle - minSdkVersion. minSdkVersion is set to 15 (Android 4.0.3, released 2012). This exposes the application to numerous security vulnerabilities present in older Android versions and makes it difficult to enforce modern security practices. Fix: Increase minSdkVersion to at least 21 (Android 5.0) or higher. This removes support for outdated and insecure Android versions.
  • Medium · Vague Dependency Versioning — app/build.gradle - implementation lines with '+'. Dependencies use '+' wildcards (androidx.appcompat:appcompat:1.1.0+, androidx.recyclerview:recyclerview:1.0.0+), which allows automatic updates to potentially untested versions. This can introduce breaking changes or security issues without explicit review. Fix: Replace '+' with specific pinned versions (e.g., androidx.appcompat:appcompat:1.6.1). Use 'gradle dependencyUpdates' to check for updates and test thoroughly before updating.
  • Low · Missing Network Security Configuration — app/src/main/AndroidManifest.xml (should reference network security config). No indication of network security configuration file (network_security_config.xml) in the file structure. For apps targeting SDK 28+, explicit network security policies should be defined to prevent cleartext traffic and enforce certificate pinning where needed. Fix: Create res/xml/network_security_config.xml to explicitly define cleartext traffic policies, certificate pins for API endpoints, and domain configurations.
  • Low · No Visible Input Validation in File Structure — convenientbanner library source files. The file structure shows no visible validation utilities or security wrappers. While not definitive without code review, this suggests potential gaps in input validation for image URLs or user data. Fix: Implement input validation for all external inputs (URLs, user data). Validate and sanitize image URLs before loading with Fresco to prevent injection attacks.

LLM-derived; treat as a starting point, not a security audit.


Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.

Concerning signals · saiwu-bigkoo/Android-ConvenientBanner — RepoPilot