github FaFre/WebLibre v0.30.0-alpha-1

pre-release7 hours ago

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: and file: 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 .alpha application 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.

Don't miss a new WebLibre release

NewReleases is sending notifications on new releases.