Releases: FaFre/WebLibre
Release list
v0.30.0-alpha-9
WebLibre v0.30.0-alpha-9 focuses on smoother tab management, clearer safety prompts, and several privacy/UI refinements.
Highlights
-
Added two-finger gestures in the tab tray:
- Swipe with two fingers to move between containers.
- Pinch with two fingers to switch between tab tray layouts.
- Single-finger scrolling and swipe-to-close still work as before.
-
Improved next/previous tab behavior:
- Tab switching now follows the visible tab bar/switcher order.
- Temporary tab tray filters, sorting, or collapsed groups no longer cause tab gestures to skip visible tabs or jump unexpectedly.
-
Added more control over tab close buttons:
- Show close buttons only on the active tab, on all tab chips, or never.
- Useful if close buttons in the quick switcher/tab bar were too easy to tap accidentally.
-
Added new custom gesture actions:
- Switch to next container.
- Switch to previous container.
- Open the container list.
Privacy & Safety
-
Added a new setting to allow screenshots in private tabs.
- Private tabs still block screenshots by default.
- Full screenshot protection still overrides this and blocks capture everywhere.
-
Profile backup, restore, and delete actions now explain restart effects more clearly.
- Backup now asks for confirmation before restarting.
- Restore-over-profile now has a clearer confirmation before replacing data.
- WebLibre now warns when the required restart will close private tabs or clear containers set to clear on exit.
- Regular tabs are clarified as reopening afterwards.
Home & Search UI
- The home screen now centers its content when only a few sections are enabled, instead of leaving everything stuck at the top.
- The daily quote module has been redesigned as a proper card with a clearer refresh button.
- Search/filter controls in History, Downloads, and Bookmarks are cleaner and more stable:
- Search opens from a consistent toolbar button.
- The same button clears or closes search.
- Filter controls no longer crowd selection mode.
Android Widget & Native Fixes
- The WebLibre home screen search widget now follows the system light/dark theme more reliably.
- On Android 12+, the widget can use the device’s dynamic Material You colors.
- Fixed a native theme issue that could affect Mozilla/Gecko permission UI, such as add-on permission prompts.
Polish & Reliability
- Improved tab tray gesture handling so two-finger gestures do not accidentally close tabs.
- Improved internal handling around browser/profile startup and proxy routing during app restarts.
- Added test coverage for tab ordering, tab tray gestures, container switching, home layout centering, and profile startup handling.
v0.30.0-alpha-8
This alpha focuses on safer proxy startup, home screen personalization, better search shortcuts, account recovery fixes, and smoother favicon/icon performance.
Highlights
- Added home page wallpapers with image selection, preview, blur, and dim controls.
- Containers can now have their own home wallpaper override.
- Proxied Custom Tab and PWA launches now show clear “Connecting privately” progress instead of failing silently or opening the browser without explanation.
- Search bangs are easier to use, pin, customize, and rank more predictably.
- Proxy logs are now easier to read, filter, copy, share, and configure.
New
- Added
Home & New Tab > Wallpapersettings. - Added wallpaper controls for blur and dim so text remains readable in light and dark themes.
- Added per-container wallpaper settings in the container editor.
- Added pinned search bangs so favorite search providers can stay in the quick provider strip.
- Added a long-press menu for bang chips with Pin, Unpin, Reset frequency, Edit bang, and Customize as your own bang.
- Added “Additional triggers” for custom bangs, allowing aliases such as multiple shortcut names for the same provider.
- Added a Proxy Logs entry under Proxy settings.
- Added proxy log level controls directly inside the Proxy Logs screen.
Improved
- Bang shortcuts now work directly in the address/search field, including forms like
!g catsandcats !g. - When a bang is typed into the search field, the provider icon updates while typing.
- Search suggestions, tabs, bookmarks, history, and feeds now search using the cleaned query instead of including the bang shortcut.
- Explicitly choosing or typing a bang now wins over URL autocomplete when pressing enter.
- Bang search results now rank exact and prefix trigger matches more reliably.
- User-created bangs now take priority over synced bangs with the same trigger.
- Frequent and pinned bang chips are now deduplicated and ordered more predictably.
- Proxy logs now use severity chips such as All, Errors, Warnings, Info, Debug, and Trace.
- Copy and share actions on the Proxy Logs screen now use the currently visible filtered lines.
- The log view now follows new lines more reliably and shows a “Latest” button when scrolled away.
- WireGuard imports now accept bare tunnel addresses and normalize them to
/32or/128. - WireGuard defaults were adjusted for mobile reliability, including MTU
1280and Persistent Keepalive25. - Favicon and site-icon loading should use less work while scrolling and flicker less when sites repeat the same icon.
- The browser now avoids unnecessary favicon refreshes for local,
.onion, IP, and internal URLs.
Fixed
- Restoring an older backup with an expired account session no longer discards the sync key. WebLibre now keeps the account identity and sync key, then asks you to sign in again.
- Fixed cases where a successful WebLibre Account sign-in could be lost after restarting the app.
- Revoked or expired account sessions are now handled differently from manually signing out, so recovery data is preserved when appropriate.
- Older “unclaimed” sign-ins are now explained more clearly and can be adopted or removed more reliably.
- Damaged old account records no longer break the account screen.
- Backup and restore handling for secure account, sync, and proxy credentials is safer and avoids leaving temporary credential data behind.
- Proxied containers, PWAs, and Custom Tabs now fail closed when routing is not ready, reducing the chance of accidentally opening something directly when it should use a proxy.
- Proxy and Tor startup handling is more reliable when launched from outside the main browser window.
- Cold starts now keep the needed background services active for routing, sync state, intent handling, icon cache updates, and settings replication.
- Custom Tab and PWA launches now offer clear actions such as Try again, Open in browser, Cancel, or Close when private/proxy routing cannot be prepared.
Updated
- Browser engine stack updated to Mozilla Android Components / Gecko
154.0, bringing upstream web compatibility, stability, and security improvements. - Several Flutter, Android, JavaScript, database, image, routing, and file-picker dependencies were updated.
Notes For Alpha Users
- Proxied PWA or Custom Tab launches may now visibly wait while WebLibre starts the needed proxy. This is intentional privacy-first behavior.
- Verbose proxy logging can slow browsing. Raise the log level only while diagnosing a problem, then set it back afterwards.
- Changing the proxy log level may restart a running proxy.
v0.30.0-alpha-7
Fixed: links and shares could silently fail to open on a cold start
If WebLibre wasn't already running and you tapped a link in another app, shared something into WebLibre, or used a home-screen shortcut, that action could get lost while the app was still starting up — nothing would happen, with no error. This is now fixed: those launches are reliably held and delivered once the app is ready.
Fixed: dismissing the "Open in another app?" prompt
When a link could open in another app, WebLibre asks whether to open it there or stay in the browser. Previously, closing that prompt without making a choice (tapping outside it or pressing Back) was quietly treated the same as tapping "No" — it could still change what page you saw, and in some cases your dismissal got remembered as a permanent decision for that site. Now, closing the prompt without answering truly does nothing: no page changes, and nothing is remembered for next time.
New: choose where the Home page search bar sits
You can now control where the search bar appears on the Home page, in Settings → Home:
- Follow the tab bar (default) – automatically sits on the same edge as your tab bar, so it stays within thumb's reach
- Top of the home page – a search bar pinned above your home sections
- In the tab bar – uses the tab bar's own address field instead of showing a separate bar
When the search bar is placed in the tab bar, it now also gets the QR-code scan and voice-search buttons that were previously only available on the Home page's search bar.
New: QR scan and voice search as customizable toolbar buttons
The QR-code scanner and voice search can now be added to your browser toolbar (via toolbar customization) so they're available even while a page is open, not just from the Home page.
Changed: default rendering engine reverted to the classic (Skia) renderer
The previous alpha briefly made the newer "Impeller" graphics engine the default. After further testing turned up issues, both the stable and alpha builds are back to the classic renderer by default. A separate Impeller comparison build remains available for anyone who wants to help test it side-by-side.
v0.30.0-alpha-6
This release overhauls profile backup and restore with clearer screens and safer flows, fixes several Firefox Account sync display bugs, makes crashed or memory-reclaimed tabs recover automatically, and adds a new setting to control how the "open in another app" prompt behaves.
Profiles, Backup & Restore
Backing up and restoring now restarts the app to do the work safely — Previously this happened while WebLibre kept running in the background, which could be fragile. Now the app closes and reopens to perform the backup or restore, with clear on-screen messages like "Closing WebLibre to take the backup…" instead of a "Creating Backup" message that implied it was already in progress. You'll also notice the backup password is now entered after the restart — the screen explains this upfront.
New one-tap "Back up this profile" shortcut in Settings — no need to go through the profile list to find and back up the profile you're currently using.
Simpler backup options — The "Skip Password Confirmation" and "Skip Cache Directories" toggles have been removed. Temporary/cache data is now always excluded automatically, and you no longer have to retype your password to confirm before backing up.
Firefox Account Sync
- Fixed the sync screen sometimes incorrectly showing "Not signed in" for a moment right after opening it, even though you were signed in.
- Fixed the "syncing…" indicator getting stuck or flickering unreliably — it now accurately reflects whether a sync is actually happening.
- Renaming this device (or seeing another of your devices get renamed) now updates the device list immediately, without needing to restart the app.
Reliability
Fewer tabs getting wiped in the background — Android can silently kill a background tab's page to save memory, forcing a full reload (losing scroll position, unsaved form text, playing video, etc.) when you return to it. WebLibre now more consistently marks your current tab as high-priority every time you background the app, closing a gap where that protection could previously be lost after certain page navigations. This addresses long-standing issue #495 and should make it noticeably less likely you'll come back to a blank, reloading tab.
Crashed pages now recover automatically — If a web page itself crashes (rather than just being reclaimed for memory), the tab is now automatically reloaded instead of staying stuck on a blank white screen. For links opened via another app (custom tabs / "add to home screen" shortcuts), this happens immediately; for regular tabs it happens the next time you switch to that tab. A page that keeps crashing repeatedly won't be reload-looped.
Privacy & Memory
Every website now gets its own isolated process by default — Previously only sites the browser judged especially important were fully isolated from each other. Now all sites are, which strengthens the separation between the different websites you have open at once. Idle memory use has also been trimmed by turning off the pre-launching of spare background processes that weren't yet needed.
App Links
New setting: "Wait for your answer" (Settings → Browsing → App Links, off by default) — Normally, when a link could open in another app, the page underneath keeps loading in the background while you're asked which app to use — so the website gets contacted even if you end up picking the other app. Turn this on and the page will wait until you've answered the prompt (or it times out after 90 seconds) before loading anything.
Tab Groups & Gestures
Long-pressing a tab group now opens a proper menu instead of jumping straight into the full-screen group editor. From the tab bar, the group header, or the "⋮" button, you'll now get the same consistent menu: open a new tab in the group, pin, close tabs, bookmark all tabs, view assigned sites, clear the group's browsing data, edit, or delete.
Fixed accidental drag-and-reorder — Long-pressing a tab group chip near the edge of the screen (or in some scrollable lists) could unintentionally start a drag and send it flying to the start or end of the list instead of opening the menu. Holding still now reliably opens the menu; moving your finger now reliably starts a drag.
Also in this release
Updated the underlying app framework (Flutter) and several supporting libraries — routine maintenance with no specific user-facing changes called out.
v0.30.0-alpha-5
This release fixes two cases where pages wouldn't load, makes custom DNS-over-HTTPS resolvers reusable, and fixes tab-reordering gestures that ran away to the end of the list.
Proxy & Connections
Cold-started Custom Tabs and PWAs now load with proxy routing intact — Opening a link in a Custom Tab or PWA while the app wasn't already running could fail to load anything, because the proxy extension blocks every request until it's told the routing and nothing was there to tell it. The last-known routing for each profile is now saved and restored before the engine starts, so proxied cold starts load from the first request. Profiles that ask for a proxy still fail closed rather than leaking over your real connection; direct-routed contexts work immediately.
Smoother recovery from cold-start load errors — When a tab's first navigation lands in the brief window where routing is still being installed, the browser now waits it out and reloads automatically instead of leaving a broken page for you to retry. It checks whether you've already moved on or started loading again, so it won't throw away a page and scroll position you've since gotten back.
Safer profile switching — A routing update in flight when you switched profiles can no longer be filed under the incoming profile and come up on it next time.
DNS over HTTPS
Saved custom DoH resolvers — Custom DNS-over-HTTPS resolvers are now kept in a list next to the built-in providers, so picking one is a single tap instead of retyping the URL each time. Add one via "Add custom resolver", give it an optional name, and edit or remove it later. Up to 16 can be stored. Selecting a built-in provider no longer discards your custom one, and any custom resolver you'd already chosen before this release is carried over automatically. Deleting the resolver you're currently using safely falls back to the default, so name resolution never stops entirely under max protection.
Tabs
Following a link into a container no longer strands you there — When a link took you into a site assigned to a different container, the reopened tab used to lose its connection to the tab that opened it — so once it ran out of history, you had no way back. The opener link is now preserved across the container boundary: closing the reopened tab returns you to the opener, even when it lives in another container. Container-scoped views, reordering, and bulk-close still behave correctly around these cross-container links.
Smarter next-tab selection when closing — Closing a tab now climbs the opener chain to the nearest still-open ancestor (across containers if needed) instead of only checking the immediate parent, falling back to the previous tab by time as before.
Gestures
Reordering tabs no longer runs away to the end of the list — Starting a drag on a tab that was partially scrolled out of view could send the list auto-scrolling all the way to its top or bottom, dragging the tab along. Edge items are now nudged fully into view before the drag can start, so they stay where you put them.
Long-press stays available for the context menu while reordering — In reorderable tab lists and the tab strip, a plain long press now reliably opens the context menu, and the reorder drag only begins once you actually move your finger after holding. The two gestures no longer fight over the same long-press timeout.
v0.30.0-alpha-4
This release overhauls proxy connections and private browsing, makes "Exclude from History" more reliable, adds new tab and gesture settings, and fixes a reload loop on certain app-promotion pages.
Proxy & Connections
Redesigned "Connection" card — The "Connections" card is now showing where the current tab's traffic goes at a glance: a colored shield plus a one-line summary like "This tab: Tor", "This tab: direct connection", or "Blocked — is not running". When a tab is blocked because its proxy is off, a Start button appears at the top to fix it in one tap. Pick the route for regular tabs, private tabs, the current isolated tab, and the current container from one shared picker — including a deliberate Direct/bypass choice.
Per-profile usage labels and less clutter — Each connection row shows what it's used for (e.g. "Regular tabs · 2 containers · 1 isolated tab"); a connection off while routes need it shows "Blocked" in red. Profiles no route uses are hidden, so importing a large subscription no longer floods the menu.
Start Automatically — Every sing-box proxy profile and Tor now has a Start Automatically switch; flagged connections come up at app launch, so tabs that need them are ready without a prompt. A small Autostart chip appears next to the profile name.
Isolated tabs route on their own — An isolated tab (and the tabs it opens) can now use its own proxy, independently of its container. Duplicating an isolated tab carries its routing to the new one.
Stricter privacy — fail-closed everywhere — During startup, while routing is still loading, every request is blocked, never silently sent over your real connection. If a tab's proxy is off, that tab's traffic (and the app's lookups for it) is blocked rather than falling back to direct. Search suggestions, favicons, and feed fetches for a tab now travel through that tab's proxy (e.g. typing in a Tor-routed tab no longer leaks suggestions out directly). Firefox's network connectivity probes, which used the system resolver and could bypass Tor/proxies, are disabled. If the routing extension loses its state, it's reinstalled within ~30s; while lost, everything blocks.
No more "port already in use" proxy start failures — sing-box proxy ports are now chosen at random from free local ports instead of a fixed range. Proxies no longer fail to start because port 12000+ was taken, and transient bind races retry automatically. Ports stay stable while a proxy runs.
History
Exclude from History works for every container — Previously it only worked for containers with cookie isolation enabled; for plain containers it was greyed out. It now works for any container.
Excluded containers also drop out of local search — Turning on Exclude from History also removes that container's pages from local in-app search results; pages already indexed from such containers are cleaned up on upgrade.
More reliable exclusion — Exclusion is now tracked per tab rather than guessed from the URL, fixing mis-attribution of background-tab and pop-up visits. It's enforced more reliably across pop-ups, window.open children, tab duplication, app startup with restored tabs, and profile switching. When unsure, the app drops a visit rather than risk leaking it (an occasional pop-up visit in a non-excluded session may be dropped, but returns next time you visit the page).
New Browsing Settings
Background Tab Behavior (Settings → Browsing → Tabs) — Choose what happens after an action (Open in new tab, Open image in new tab, cloning a tab) opens a tab in the background:
- Stay and Offer to Switch (default, the old behavior) — keeps you on the current tab and shows a "New tab opened" notice with a Switch button.
- Switch Immediately — jumps straight to the new tab.
Sequential Tab Navigation (Settings → Browsing → Gestures) — Controls swipe/step-through-tab behavior:
- Continue Into Next Container (default on) — swiping past a container's edge moves into the next container; turn off to keep stepping inside the current one.
- Loop Around (default off) — stepping past the last tab continues at the first, and vice versa.
New tab bar gesture: swipe inward to open the Tab View — You can already swipe the tab bar toward the screen edge to hide it; you can now swipe it inward (away from the edge) to open the Tab View (swipe up on a bottom bar, down on a top bar, right on a left rail, left on a right rail). A light haptic fires on the gesture.
URL Cleaning
Restore individual tracking parameters — After cleaning a URL, the Tracking details dialog could only ever remove more parameters; you couldn't bring one back. Now you can: deselect a checkbox (e.g. an affiliate/referral tag you want) and it's restored in the preview. Cleaning is rebuilt from the originally detected URL, not the already-cleaned one.
A new "partially cleaned" state — The tracking tile now shows three states instead of two: Tracking detected (N found), URL partially cleaned (X of N removed, with the broom button to finish), and URL cleaned (N removed).
No more stuck or misreported status — The tile's state is derived from the actual URL you're looking at, so it no longer gets stuck on "URL cleaned" after you put a parameter back. Redirect-wrapper URLs (whose tracking parameters hide inside the redirect target) are no longer misreported as already cleaned, and the details dialog now lists only the final destination's parameters. No tracking-parameter rules changed — this is purely about how cleaning is presented and re-applied.
Fixes
App-link reload loop — Fixed a reload loop on app-promotion pages (Google Maps place links are a common example) where, with the target app not installed or app-link mode set to never, the tab reloaded roughly once a second indefinitely.
Other — Proxied tabs opened during cold start now wait for routing to be ready and then open, instead of doing nothing or showing a broken page.
v0.30.0-alpha-3
This alpha fixes several annoyances with tab swiping, sign-in flows that use other apps, and "open in app" prompts that wouldn't behave.
Tab swiping & gestures
Swiping the tab bar or using next/previous tab gestures now moves through tabs in the order you see them in the tab tray — including your sort, grouping and pinned-tabs settings — instead of an internal order that didn't match what was on screen. The swipe direction also now matches how dragging the list naturally feels, and gestures can step across containers instead of getting stuck at the edge of one.
Sign-in flows that use another app
Many sites let you "Sign in with X" by bouncing you out to the X app and back. If you'd set links to never open in apps, that return trip was blocked and the sign-in failed.
- The browser now recognises genuine sign-in callbacks and lets the app that opened the tab receive its login callback, even under "never".
- A new Allow login app callbacks toggle (in Browsing settings, on by default) lets you turn this off.
- Protected containers, private tabs and wallet schemes still never leak out.
"Open in app" prompts
- Passive banners now retire after 90 seconds instead of lingering for up to 10 minutes.
- Only one banner per tab — visiting a second app-link site replaces the old offer.
- Expired prompts now actually disappear, instead of staying on screen with buttons that did nothing.
- Removed the unreliable "dismiss the prompt when you leave the page" behaviour that was wrongly killing prompts on their own redirect chains (e.g.
youtu.be→youtube.com).
Other fixes
- Fixed a startup issue where the browser could show a blank viewport if the engine was kept offscreen during launch.
v0.30.0-alpha-2
This alpha rebuilds the browser's home screen into a customizable start page, adds configurable startup behavior, gives you more control over shortcuts, and ships two new toolbar/gesture actions.
A new, customizable home page
When you close your last tab (or start the app) the browser now opens a real home surface:
- A search pill is pinned at the top — tap it to open the search/new-tab screen, with your voice and QR-scan buttons right next to it.
- Below it, a scrollable list of modules: Quick Actions, Shortcuts, Recent Tabs, a daily Quote, and more.
- Use the Customize sections button (or the new Home & New Tab settings screen) to reorder modules, show or hide them, and reset to defaults. The home page and the new-tab page each keep their own layout.
- New modules shipped with this release: Quote (a daily thought — the single most-requested toggle) and Quick Actions (New tab / View tabs / Resume last tab).
Choose what opens when there's no tab
A new Home & New Tab settings category lets you decide what the browser lands on when there's nothing to show:
- Home page (default — what WebLibre has always done)
- Last opened tab — pick up where you left off
- Custom address — open a specific page (e.g.
https://weblibre.eu) - Optionally apply the same behavior when you close the last tab in a container, so you stay in that container instead of being pulled into a tab from elsewhere. (Off by default.)
Better shortcuts
- Add a shortcut by hand: a new + tile in the shortcuts grid lets you type in a title and URL — previously the only way was to visit a site and pin it.
- Hide all shortcuts from a domain at once — finally a way to get rid of a single site (especially PWAs) that floods the grid with many URLs. Removable per-shortcut, with undo.
- Removed/hidden shortcuts actually stay gone: previously a removed shortcut would silently reappear from your frecency history on the next refresh.
- On the home page, all your pinned and default shortcuts are shown from the start; frecency suggestions sit behind "Show all N".
New toolbar & gesture actions
Two new actions you can place on the contextual toolbar or trigger with a stroke gesture:
- Home — open the home screen
- Hide / Show Tab Bar — toggle the tab bar (the same gesture that dismisses it also brings it back, since you can't get there by scrolling once it's gone)
Popular-site suggestions toggle
A new switch in Search settings ("Popular site suggestions") lets you turn off the ghost-text autocomplete that completes typed text against a bundled list of well-known domains when your history has no match. On by default.
v0.30.0-alpha-1
This is the first alpha of the 0.30 development cycle, building on top of the recent 0.20.0 stable release. It focuses on two brand-new privacy-first features (App Links control and first-class Web Push / website notifications), a major Bookmarks rewrite for speed, an improved Zoom setting, smoother UI/performance, and several quality-of-life tweaks.
Heads up: This is an alpha. Expect rough edges. If you find bugs, the updated bug-report template now asks which device/Android version you're on and whether the issue also reproduces on the latest alpha.
Highlights
- Control when links open in other apps — a brand-new App Links feature replaces the old generic handling with predictable, privacy-first choices
- Website notifications, out of the box and out of Google's reach — web push moved out of Experimental into its own first-class Notifications settings screen, powered by UnifiedPush (no Firebase)
- Bookmarks rewritten for speed — large libraries no longer slow down or freeze the app
- Zoom is now possible on every website, even ones that try to block it
- Smoother tabs and bottom sheets across the app
New: App Links — control when links open in other apps
The web is full of links that could open in a native app (YouTube, X, custom something:// URIs). WebLibre now lets you decide what happens when a page tries to hand a link off to an app.
- Three global modes under Settings → Browsing → Open Links in Apps:
- Ask before opening (the default) — show a prompt or banner
- Always — open supported app links without asking
- Never — keep everything inside the browser
- Remember choices per site. Tap "Remember for this site" in a prompt to always open (or always keep in-browser) for that site. A "Remembered site rules" list lets you revoke a saved choice anytime.
- Per-site override in the site settings sheet: a quick Open in app / Keep in browser / Follow default dropdown.
- Per-container isolation (advanced). Cookie-isolated containers can run their own "Always / Ask / Never" mode and their own remembered sites, independent of the global setting — e.g. keep a Shopping container strictly in-browser while a Media container opens YouTube in the app.
- On-screen prompts: a non-blocking banner for normal https links (the page keeps loading behind it), or a modal dialog for unsupported custom schemes (where there's no page to show).
Privacy-first defaults, by design:
- When you're in a proxied/Tor-protected or strict container, a private tab, or a custom-tab context, app links are never silently auto-launched — you're always asked, with no "remember" shortcut, so an anonymous session can't leak your identity into a native app.
- Special schemes like
javascript:andfile:are blocked from ever launching another app, and digital-wallet links always require an explicit tap. - An installed-but-remembered rule never silently launches a different app if the original one was uninstalled — it falls back to a prompt.
App Links is separate from the existing Intent Gatekeeper: Gatekeeper controls whether other apps may push links into WebLibre; App Links controls how WebLibre hands links out to native apps. They complement each other.
Web Push is now a first-class feature (out of Experimental)
Websites can send you notifications, even when WebLibre isn't open in the foreground — just like other browsers, but without Google's Firebase Cloud Messaging.
- Powered by UnifiedPush. You pick a separate distributor app you trust (e.g. ntfy, which you can self-host). Your push stream never touches Google services.
- New settings screen at Settings → Notifications → "Web push delivery, distributor, and site subscriptions" with:
- A UnifiedPush Distributor tile showing live status ("Active", "Waiting for distributor…", "No distributor installed", "Distributor uninstalled") and a button to choose/change the distributor app — this selection also doubles as the on/off switch for the whole feature (there's no separate global toggle).
- A "Disable web push" button to turn it off entirely.
- An Android notification permission tile that lets you grant/diagnose the system permission separately.
- A Site Subscriptions list showing which websites currently have a push subscription and their delivery state.
- You're in control, two levels deep: each website must ask for notification permission on the page first, and the app needs a distributor selected and the Android notification permission granted. Nothing is on until you turn it on.
- Reliability behind the scenes: push messages are saved durably and re-delivered if delivery was interrupted, and notifications can be shown even when the app is fully in the background.
- Per-profile: your distributor choice and subscriptions are tracked separately per browser profile, matching the multi-profile model.
Note: You can't unsubscribe a site from inside the Notifications screen — to stop a site's push notifications, revoke its notification permission in that site's settings (page info). Subscriptions are driven by the site and your per-site permission.
Bookmarks rewritten for speed and big libraries
The Bookmarks screen was overhauled so the app no longer slows down or freezes with large libraries.
- Folders load on demand. The list no longer tries to build your whole bookmark tree up front; expanding a folder fetches just that folder. The bigger your library (e.g. after a big import or sync), the bigger the improvement.
- Big imports no longer freeze the app. Importing a large bookmarks file (the kind Firefox or Chrome export) now runs in the background with a progress dialog that tells you what's happening ("Reading the file…", "X of Y bookmarks…"). The parser itself is also dramatically faster, so big files complete in a fraction of the time.
- Safer "replace" imports. Importing an empty or broken file as "replace" no longer deletes your existing bookmarks — only a file that actually parses to something triggers the wipe. Re-importing a Firefox export more faithfully reconstructs your Toolbar / Menu / Unfiled layout.
- New ways to organize the list. Sort by Title A–Z/Z–A, URL, Newest first, or Oldest first; show Folders Only; hide empty built-in folders; Collapse All in one tap. Your choices are remembered across launches.
New setting: choose how a bookmark opens when you tap it — in Settings → Browsing → Bookmarks → Bookmark Open Behavior:
- Prompt (the default, same as before)
- Regular tab
- Private tab
- Custom Tab (lightweight container-aware overlay)
- Isolated tab (only shown if you have Isolated tabs enabled)
Existing users keep the old "prompt every time" behavior unless they change it; if you turn off Isolated tabs later, an isolated choice safely falls back to Prompt.
Better folder actions: add bookmarks/subfolders directly into the folder you're viewing; move folders safely (you can't move one inside itself); "flatten" a folder to merge its contents into its parent; and deleting a folder now tells you how many bookmarks are inside before you confirm.
New Features & Tweaks
- Zoom on All Websites — a new toggle at Settings → Web Content → Zoom on All Websites lets you pinch-to-zoom even on sites that try to block the gesture. Off by default; applies per profile and takes effect immediately.
- Pressing Enter now accepts the highlighted address-bar suggestion by default (previously it submitted your typed text and ignored the suggestion). Your explicit choice, if you'd set one before, is preserved.
- Quit now also clears your "Clear Data on Exit" containers immediately when you explicitly Quit the browser — not just lazily on the next launch.
Performance & Polish
- Tab previews only update while they're being viewed, so dragging/switching tabs feels less janky.
- Heavy tab state was split so the browser screen no longer rebuilds on every small change — the toolbar, bottom bar, and menus update more surgically.
- Bottom sheets and tab views (grid, list, tree) animate more smoothly — less stutter when dragging sheets up/down or swiping through tabs.
Build / Distribution
- New "Alpha (Legacy)" build alongside the regular alpha. Both share the same alpha app identity (same version name, same
.alphaapplication id), install side-by-side with stable, and install over each other in place — so you can compare Flutter's Impeller renderer (default alpha) against the legacy Skia renderer (alpha-legacy) without losing app data. The renderer is chosen once at startup and can't be toggled at runtime, which is why there are two builds.
Upgrade notes
- The App Links global default is Ask, remembered-site lists start empty, and marketplace fallback is off by default. No manual setup is required.
- Web Push is dormant until you pick a UnifiedPush distributor; upgrading just moves it from Experimental to its own Notifications screen.
- Bookmarks, folders, sort, and your "how bookmarks open" choice carry over. The old "prompt on tap" behavior is still the default.
- The new Zoom toggle defaults to off, and pressing Enter now accepts the highlighted suggestion unless you'd previously set the option.
v0.20.0
This is the largest WebLibre release to date, consolidating fifteen alpha releases since v0.11.0. It introduces a full proxy management system, a local full-text search index, configurable touch gestures, a redesigned tab switcher with vertical side rails, container-aware history, and a major desktop mode overhaul.
Highlights
- Proxy Management — sing-box powered proxy profiles with per-container and global routing
- Local Search Index — full-text search of the pages you visit, entirely on-device
- Touch Gestures — draw gestures on web pages to navigate and control tabs
- Tab Stacking — redesigned quick tab switcher with new Accordion and Two Rows layouts
- Vertical Side Rail — place the tab bar on the left or right edge of the screen
- Container-Aware History — see and filter which container a visit came from
- Desktop Mode Overhaul — global, per-site, and per-tab desktop mode control
- Pure Black (OLED) Theme — true black backgrounds in app and reader mode
- Engine Upgrade — Mozilla Components / GeckoView 152.0.4
Proxy Management (New)
- Sing-box proxy profiles — Create and manage custom proxy connections supporting SOCKS, HTTP, Shadowsocks, VMess, VLESS, Trojan, Hysteria, Hysteria2, TUIC, SSH, WireGuard, ShadowTLS, and AnyTLS. Each profile runs its own managed tunnel with live status indicators, latency chips, and IP display.
- Six ways to import — Manual configuration, subscription URLs, QR code scan, clipboard paste (auto-detects
ss://,vmess://,trojan://and similar URIs), WireGuard config files, or raw sing-box JSON outbounds. - Per-container proxy routing — Assign any proxy profile or Tor to a specific container; tabs in that container route through the assigned proxy.
- Global proxy routing — Route all regular tabs through a single proxy, with a separate assignment for private tabs. Individual containers can bypass the global proxy to connect directly.
- Profile management screen — All profiles (including Tor) with protocol badges, run/stop toggles, latency testing, and a "Stop All" button.
- Per-request DNS leak protection — DNS leak guarding runs per-request and per-container inside the proxy layer.
- Profile sharing and logs — Export profiles as
weblibre-proxy://URIs, and inspect the sing-box runtime with a real-time log viewer.
Local Search Index (New)
- Full-text search of browsed pages — Visited pages are indexed locally, enabling on-device content search without sending any data off your device.
- Fine-grained control — Toggle the index globally, choose whether private tabs are indexed, and exclude individual containers. Excluded containers have their history removed from the index immediately.
- Index management — See how many pages are indexed and clear the index at any time while keeping your history. Stale entries are pruned automatically.
Containers
- Strict Mode — Restrict a container so only its assigned sites can load there; unassigned sites are blocked. Requires cookie isolation.
- Exclude from History — Prevent a container's visits from being recorded in browsing history (separate from the search index opt-out). Requires cookie isolation.
- Icon picker — Choose from over 5,000 Material Design Icons for container branding, shown in the container bar, lists, and tab indicators.
- Custom colors — In addition to the refreshed standard palette, a custom color picker with hex and HSL controls is available, applied consistently across chips, lists, selectors, and tab UI.
- Pinning and reordering — Pin containers to keep them at the top of lists, and long-press-drag chips in the bottom bar to reorder them.
- Redesigned management UI — The container list, selection sheet, and editor were overhauled with card layouts, tab counts, proxy info, and privacy badges.
Container-Aware History
- History entries can now display which container a visit came from, and the History screen can be filtered by container.
- With a container filter active, clearing history only clears that container's history.
- Deleting a container offers to also delete its history; otherwise those visits are kept without a container label.
- Note: existing history is not retroactively assigned to containers; labels apply to newly recorded visits and are local to WebLibre.
Tabs and Tab Switching
- Tab Stacking — The quick tab switcher was redesigned and is configured under Settings > Toolbar Layout > Tab Stacking, with new layouts:
- Accordion — containers as chips, expanding the selected container inline
- Two Rows — the selected container's tabs on one row, recently used tabs on another
- Plus the existing Recently Used Tabs, Container Tabs, and Disabled modes. Existing settings are migrated automatically.
- Vertical side rail — The tab bar can be placed on the left or right edge as a vertical rail with address controls, toolbar actions, and pinned add-ons. Swipe vertically on the rail to switch tabs.
- Customizable switcher buttons — Choose which action buttons appear at the end of the tab switcher bar, configured independently from the contextual toolbar.
- Tab hierarchy tools — Long-press a tab for a Hierarchy submenu (change parent, detach, reorder among siblings). Drag-and-drop can group two tabs in a new container or establish a parent-child relationship. Manual reorganizations are preserved and no longer overwritten by engine state.
- Depth indicators — Nested tabs show chevron badges revealing nesting depth, with configurable depth display and compact badges on narrow layouts.
- Switcher polish — Drag-to-reorder in the switcher, container-colored tab bar, tab counts on container chips, optional close buttons on every chip, reliable centering of the active tab, and clearer marking of pinned, private, isolated, and nested tabs.
- Faster, safer startup restore — Restored tabs appear earlier as placeholder chips while the engine finishes restoring; tapping one queues the selection. Saved tab data is only cleaned up after the engine confirms restore is complete.
Touch Gestures (New)
- Draw gestures on web pages to navigate, control tabs, and trigger page actions. Off by default; enable under Settings > Gestures.
- A stroke interval setting prevents accidental triggers from fast, jittery movements.
- Pull-to-refresh no longer accidentally triggers on gesture strokes near the top of the page.
- Long-press the gestures toggle in the browser menu to jump straight to gesture settings.
Desktop Mode
- Global desktop mode — "Always Request Desktop Site" under Settings > Browsing > Desktop Mode applies to every tab, including already-open ones.
- Per-site desktop mode — Maintain a list of sites that always load in desktop mode, regardless of the global setting. Add sites from the page menu or manage the list in settings. Subdomains are covered automatically.
- Per-tab toggling continues to work as before and takes precedence.
Reader Mode
- True black (AMOLED) reader theme — With Pure Black enabled, the reader's dark theme is genuine black.
- Refreshed article layout — Improved spacing and typography, edge-to-edge images, nicer quotes and lists, and properly wrapped code blocks.
- The appearance button now toggles open/closed, appearance controls no longer hide behind the bottom toolbar, and a "show toolbar" button is available while reading with the toolbar hidden.
Appearance and Home Screen
- Pure Black (OLED) — Settings > General > Pure Black switches dark mode backgrounds to true black, saving battery on OLED screens.
- Refresh Rate setting — System, High, or Low under Settings > General; High (the default) makes scrolling smoother on 90/120 Hz displays, Low reduces battery usage. Android-only, depends on device support.
- System bar tinting — Status and navigation bar areas match the active container or toolbar color, with icon contrast adjusted automatically.
- Reworked home screen — Quick actions (New tab, View tabs, Resume last tab) moved near the top, plus a dismissible "Support WebLibre" banner explaining the optional Supporter subscription. The browser and all privacy features remain free.
- New app icon — Refreshed launcher icon including adaptive and monochrome variants.
- "Top Sites" has been renamed to "Shortcuts" throughout the app.
- Optional close button on the new tab / search screen (Settings > General > Show Close Button), handy on e-ink devices.
Search and Bangs
- Popular Sites suggestions — The search screen and address bar autocomplete now suggest well-known websites, so even a fresh install completes "git" to "github.com".
- Reverse bang matching — Pasting a URL produced by a bang search (for example a Google search result URL) recognizes the bang template and swaps the URL for the extracted query with the bang pre-selected.
- Bang robustness — Bangs match correctly across
www., bare, andm.domain variants; custom bang editing handles URL encoding safely and trims accidental whitespace; typed text is preserved when switching search providers; selecting a bang highlights the existing query for quick replacement. - Find in page integration — Tapping a search result from history or the local index prompts to find that text on the page instead of opening the find bar uninvited.
- An "Autocomplete on Submit" setting accepts inline suggestions when pressing Enter.
Privacy and Security
- Expanded hardening — Over 30 additional telemetry, experiment, and tracking preferences are locked against upstream Gecko updates silently re-enabling them. Locked settings show a padlock icon.
- Private tabs notification — A persistent notification appears while private tabs are open; tapping or swiping it closes them all.
- Better .onion handling — Onio...