VA.2026.002 · Floor 01 · hall 02
“a browser built to give you ultimate control — not the other way around.”
Yue is a premium Android web browser built on Jetpack Compose and the Android System WebView engine. It was designed around a simple premise: the browser should give you control — over your privacy, your browsing, and your screen — not take it away.
Open source since day one, Yue combines a dozen standout features: universal dark mode, background media playback, anti-app-hijacking, hold-to-speedup video acceleration, biometric private browsing, encrypted backup with AES-256-GCM, multi-threaded downloading, and built-in adblocking with Indonesian gambling (judol) filtering. Each feature is implemented with code kept under a strict 600-line limit for clarity and testability.
The adblock engine was originally embedded directly in the browser. In August 2026, it was extracted into a standalone remote server — Yue AdBlock — built with Elysia on Bun and deployed on Vercel. This separation allows rule updates without app releases, remote policy management, and a cleaner browser codebase. The server exposes a REST API that the browser queries on startup to fetch the latest policy profile and cached filter rules.
Yue AdBlock serves four policy profiles: balanced (default), aggressive, minimal, and anti-judol (Indonesian gambling filter). Each profile defines which categories of elements to block — from third-party cookies and trackers to specific gambling domains prevalent in Indonesia. Rules are sourced from community-maintained lists (EasyList, ABPIndo) and a custom ad_domains list. The browser caches rules locally for offline use and checks for updates periodically.
The server architecture follows a modular design: health checks for uptime monitoring, metadata endpoints for engine versioning and rule hashes, and adblock endpoints for policy profiles and rule file downloads. All responses follow OData conventions for consistency. The entire system is type-safe with Zod-validated environment config and TypeScript throughout.
VA.2026.002
Yue
Android Web Browser · Kotlin · Jetpack Compose · Open Source
Core architecture laid down: Jetpack Compose + WebView engine, modular package structure (data/domain/presentation), strict 600-line per file limit.
Universal dark mode, biometric InPrivate lock, tab grid switcher, password manager, and basic adblock go live.
Background media playback engine (MediaSessionManager), hold-to-speedup 2x video, lock-orientation fullscreen, and offline pages added.
Multi-thread parallel downloader (1–16 threads, configurable), byte-range chunking, SAF folder destination, and pause/resume support.
AES-256-GCM encrypted settings backup & restore with PBKDF2 key derivation (100k iterations). Full browser configuration exportable and portable.
Released on GitHub at github.com/fazza-abiyyu/Yue-Browser. Anti-judol (gambling) domain blocking added for Indonesian users.
Adblock system extracted into a standalone remote server (Yue AdBlock). Deployed on Vercel with Elysia on Bun. Serves policy profiles (balanced, aggressive, minimal, anti-judol) and filter rules (EasyList, ABPIndo, ad_domains) via REST API. The browser fetches policies on startup and caches rule files locally for offline use.
Actively developed. New features in progress: interactive element picker improvements, enhanced tab grouping, expanded cosmetic filtering, and remote rule synchronization.
concepts — kept & discarded
kept — the browser as a tool that serves you, not the other way around
rejected — toolbars and chrome that interrupt intent
held — privacy as a first-class feature, not an afterthought
open — open source from the first commit
archive ref — VA.2026.002/CON
cross ref — timeline fig. 01
curator annotations
the browser should never hijack your intent — not to an app, not to an ad, not to itself.
private browsing should be truly private — biometric lock or it is not private enough.
parallelism is a feature. one thread is a compromise.
dark mode is not a toggle — it is a way of seeing the web at night.
adblocking is not about blocking ads — it is about deciding what loads on your device. remote policy servers make that decision updatable without reinstalling the browser.
| materials | universal dark mode · background playback engine · anti open-in-app hijacking · hold-to-speedup video · lock orientation fullscreen · interactive element picker · remote adblock policy server (Yue AdBlock) · multi-thread downloader · encrypted settings backup (AES-256-GCM) · biometric InPrivate lock · password manager · tab grouping | dimensions | source files — 20+ · features — 12 · threads — 1–16 · encryption — AES-256-GCM · code limit — 600 lines/file · adblock profiles — 4 |
|---|---|---|---|
| condition | active · open source · 20+ source files · remote adblock server | acquired | Jun 2026 |
| revision | in development | archive location | DWG-002 · floor Floor 01 |
| internal reference | VA.2026.002/M | origin | sketched inside a browser, 2026 |
failed experiments
Picture-in-Picture mode cannot be implemented yet — Android WebView has limited support for enterPictureInPictureMode, and system media session integration is still problematic. Pending fix.
2x playback acceleration works on most services, but fails on some video players that use custom players (e.g., custom video players from certain providers). JavaScript DOM injection cannot always override native playbackRate.
reported crashes when: opening external tabs with specific gesture combinations, restoring sessions with too many tabs, and switching from InPrivate to normal tabs while media is still playing. Further investigation needed.
current adblocking is rule-list based (EasyList + ABPIndo) — no machine learning or heuristic yet to distinguish ads from content. Some new ad sites bypass. Needs improvement on cosmetic filtering and element picker integration.
draft concepts
research notes
— forcing dark mode on arbitrary webpages is a nontrivial CSS injection problem — solved via WebView settings.forceDark + dynamic style injection.
— background media playback requires mocking navigator.mediaSession and binding to Android's MediaSessionManager — a bridge between web and native audio lifecycles.
— AES-256-GCM with PBKDF2 at 100k iterations provides a reasonable security ceiling for local backup without making the restore flow unbearably slow.
— anti-judol (gambling) filtering serves a specific geography — Indonesian users need protection that generic adblock does not provide.
— extracting adblock into a remote server solves the version coupling problem: rule lists evolve faster than app releases. The browser fetches policies on startup, caches rules locally, and falls back to cached versions when offline.
— Elysia on Bun was chosen for the adblock server for its type-safe route definitions and native TypeScript performance. Deployed on Vercel with zero-config serverless, the system scales horizontally without infrastructure management.
A browser should give you choices, not make them for you. Anti open-in-app, hold-to-speedup, element picker — all features that put the user back in the driver's seat.
Biometric InPrivate lock, encrypted backup, password manager — privacy is the default, not a toggle. The browser earns trust by protecting it.
Yue is open source because a browser handles your most intimate data. Transparency is not a marketing word — it is a security requirement.
Every file under 600 lines. Modular architecture. Clean separation of data, domain, and presentation layers. Code you can read is code you can trust.
within the collection
future vision
Yue continues active development. Roadmap includes: refined element picker for cosmetic filtering, enhanced tab grouping with automatic organization, translation engine improvements, deeper integration with Material Design 3 dynamics, and expanded remote adblock rule synchronization with community-maintained filter lists. Visit yue.abiyyu.xyz to experience the live build.