Skip to content

Latest commit

 

History

History
105 lines (77 loc) · 4.45 KB

File metadata and controls

105 lines (77 loc) · 4.45 KB

Cobrow

Cobrow is a native Android WebView browser focused on fast local browsing, bundled ad blocking, and practical privacy controls. It stores browsing data on the device and does not include analytics or tracking SDKs.

Features

  • Tabbed browsing with a responsive grid overview, tab thumbnails, drag-to-reorder, swipe-to-close, clone actions, and optional tab groups.
  • Chromium-style bottom tab counter with a dedicated tab overview.
  • Built-in ad and tracker blocking using bundled EasyList, EasyPrivacy, Peter Lowe, uBlock filters, uBlock badware, cookie notice filters, supplemental tracker rules, and optimized request-decision caching.
  • JavaScript-aware adblock handling for sites that test blocked fetch()/XHR failures, plus cosmetic hiding for common ad placeholders.
  • YouTube and YouTube Music improvements: YouTube ad-host blocking, YouTube player-response ad key stripping, skip-ad helper, background playback support, fullscreen video handling, and Picture-in-Picture support.
  • Privacy dashboard with session and lifetime blocked-request counts plus an estimated data-saved total.
  • Local bookmarks, bookmark folders, browsing history, downloads, and saved credentials using Room.
  • Incognito mode with cookies disabled, cache bypassed, and history saving skipped.
  • Custom cobrow://newtab start page bundled in app assets.
  • Search suggestions from local history/bookmarks and selectable search engines.
  • Reader mode with configurable serif, sans-serif, or monospace font.
  • System, light, and dark theme modes with selectable accent colors.
  • Per-site JavaScript, camera/microphone, and location preferences.
  • Custom page-load and certificate warning handling.
  • Floating scroll-to-top control for long pages.
  • Find in page, text size controls, page info, view source, desktop mode, share, screenshot, save page as MHTML, and print/PDF export.
  • Backup and restore for bookmarks and history through JSON import/export.
  • App shortcuts for New Tab, New Incognito, and Bookmarks.

Tech Stack

  • Java 17
  • Android Gradle Plugin 8.2.2
  • Gradle 8.2 wrapper
  • AndroidX AppCompat, Material Components, ConstraintLayout, SwipeRefreshLayout, WebKit
  • Room persistence library
  • Android WebView

Requirements

  • Android Studio with Android SDK 36 installed
  • JDK 17
  • An Android device or emulator running Android 5.0 or newer

Android 17 Readiness

Cobrow is prepared for Android 17 compatibility testing:

  • The project targets the latest SDK installed in this workspace, API 36.
  • Android 17 local-network and loopback permissions are declared for API 37 readiness.
  • Local router/NAS/self-hosted addresses request local-network access at runtime on Android 17+.
  • The app is resizable and does not lock orientation, matching Android 17 large-screen behavior.
  • No native dynamic code loading is used by the app.

Build

Clone the repository and build with the Gradle wrapper:

./gradlew assembleDebug

Install the debug build on a connected device:

./gradlew installDebug

The generated debug APK is written to:

app/build/outputs/apk/debug/app-debug.apk

Project Structure

app/src/main/java/com/cobrow/browser/
  activities/   UI screens and browser actions
  adapters/     RecyclerView and URL suggestion adapters
  data/         Room entities, DAOs, and tab persistence
  engine/       Ad blocker and credential manager
  utils/        URL normalization helpers
  views/        Custom WebView behavior

app/src/main/assets/
  new_tab.html  Built-in new tab page
  filters/      Bundled ad-block filter lists

Privacy

Cobrow is designed to keep user data local:

  • History, bookmarks, downloads, tabs, and credentials are stored on the device.
  • Third-party cookies are disabled by default in the browser WebView.
  • Ad-block filters are bundled with the app.
  • No analytics SDKs are included.

Saved credentials are stored in the app database. Treat debug builds and local device data accordingly.

Credits

  • YouTube ad-response stripping, playback keepalive, and Android WebView background playback/PiP ideas were adapted from NouTube.
  • Ad-blocking uses public filter list formats and bundled filter data from EasyList, EasyPrivacy, Peter Lowe, and uBlock Origin filter sources.

Notes

The repository intentionally keeps generated or local agent/tool files out of source control. Files such as .agents/, .gemini/, package-lock.json, and skills-lock.json are not required to build the Android app.