Offlin33er/nova-browser
OFFDIGITZ ๐ฆโก This project has been renamed OFFDIGITZ. The active repo is Offlin33er/offdigitz-browser (v1.0.0). This repo holds the v0.8.0 rename point and earlier history. Not a conventional browser. OFFDIGITZ is a chrome-less, unrestricted GeckoView browser whose entire interface is a command palette โ with a built-in AI assistant. What makes it different 1. Chrome-less by design No URL bar. No toolbar row. No tab strip. Content is edge-to-edgeโฆ See the full description on the dataset page: https://huggingface.co/datasets/Offlin33er/nova-browser.
OFFDIGITZ ๐ฆโก
This project has been renamed OFFDIGITZ. The active repo is Offlin33er/offdigitz-browser (v1.0.0). This repo holds the v0.8.0 rename point and earlier history.
Not a conventional browser. OFFDIGITZ is a chrome-less, unrestricted GeckoView browser whose entire interface is a command palette โ with a built-in AI assistant.
What makes it different
1. Chrome-less by design
No URL bar. No toolbar row. No tab strip. Content is edge-to-edge, full screen. One floating โ button summons the command palette โ everything routes through it:
- Type anything โ Go to โฆ / ๐ Search DuckDuckGo / ๐ค Ask AI
New tabยทClose current tabยทReload pageยทOpen tab trayยทAdd-ons managerยทDev consoleยทClear consoleยทAsk AIยทAI settings- A thin loading bar hugs the top edge โ that's the only persistent indicator.
2. Unrestricted defaults (deliberately unlike mainstream browsers)
Engine-level limit (not embedder-fixable): Gecko validates add-on signatures at install time โ unsigned .xpi installs are refused by the engine regardless of app settings. Privileged extensions ship inside the APK (OFFDIGITZ's dev console does exactly that).
3. Real WebExtensions
- Bundled
devconsole@offdigitz(privileged,ensureBuiltIn) โ Eruda in every page, console logs bridged to the native screen - AMO installs:
.xpiURL or add-on page URL โWebExtensionController.install()โ Gecko validates Mozilla signature โ permissions auto-granted in unrestricted mode - Add-ons manager: list, enable/disable, uninstall
4. Built-in AI (โ โ Ask AI)
- Full chat screen; anything typed in the palette can be sent straight to the AI via the ๐ค Ask AI row
- Two backends, chosen in AI settings:
- Hugging Face โ models like Llama via
router.huggingface.co/v1+ your HF token - Any OpenAI-compatible API โ OpenAI, Groq, or Ollama on your own PC (base URL + key)
- Keys are stored only on your device (SharedPreferences) and sent only to the endpoint you choose
5. Developer console, three layers
- Eruda in-page inspector (console / DOM / network)
- Native console screen via native messaging (
โ โ Dev console) - Remote debugging: desktop Firefox DevTools (
about:configalso enabled)
Versions
Which APK to install
In `apk/`:
Release builds are debug-signed (installable for testing). The renamed app installs as a new app (com.offdigitz.browser) alongside any earlier Nova install.
Build it
- Android Studio (2024.2+) โ clone this repo โ sync.
curl -L -o app/src/main/assets/devconsole/eruda.min.js https://cdn.jsdelivr.net/npm/eruda/eruda.min.js- Run โถ (minSdk 26).
Dependency pins (cloud-build verified)
Layout
app/src/main/java/dev/nova/browser/ (internal package path; app identity is com.offdigitz.browser)
BrowserActivity.kt โ chrome-less shell, โ FAB, unrestricted runtime config
CommandPalette.kt โ the primary UI: commands, navigate, search, Ask AI
AiChat.kt โ AI settings store, OpenAI-format client (HF router + compatible), chat + settings screens
TabManager.kt โ sessions, persistence/restore, history, extension registry
TabTray.kt โ tab management (via palette)
ExtensionManagerScreen.kt โ add-ons: list, toggle, uninstall, AMO install
ConsoleScreen.kt โ full dev console
app/src/main/assets/devconsole/
manifest.json โ privileged built-in extension (devconsole@offdigitz)
eruda-loader.js โ Eruda injection + console bridge
background.js โ extension background scriptHonest notes
- Auto-granted permissions are a real security trade-off โ that's the point of the product, but it means installed add-ons get what they ask for without a gate. One constant (
AUTO_GRANT_PERMISSIONS) flips prompts back on. - Session restore is URL-level (no scroll/state capture yet).
- Release builds are debug-signed and not R8-minified.
- Eruda exposes page internals โ you chose unrestricted; mainstream browsers deliberately don't.
- The internal Kotlin package path is still
dev.nova.browser(invisible); a cosmetic package-directory rename is a future pass.
License
MPL-2.0.
