Fruit Bat Docs

Extensions & add-ons

Chrome Web Store and Edge extensions, Fruit Bat add-ons and Chirp.

Extensions from the Chrome Web Store and Edge Add-ons#

Fruit Bat doesn't recommend or advertise extensions. If you open an extension's page in the Chrome Web Store (or Microsoft Edge Add-ons) yourself, an Add to Fruit Bat button appears in the address bar.

  • It asks first. You see the extension's name and what it can access, in plain words ("Read and change everything on every website you visit"…), plus anything it uses that Fruit Bat doesn't have yet. Cancel is the default.
  • The file is checked. The extension comes from the store's own download address as a CRX3 file. Fruit Bat checks that the developer's key hashes to the extension's id on that page, and that its signature covers the file. A swapped, altered or unsigned file is refused, and so are old CRX2 files, themes and Chrome apps.
  • Same id as in Chrome. It's unpacked into <profile>/extensions/<id>/<version>/ without the store's _metadata folder (which Chromium won't load unpacked). The developer key goes into its manifest, so it keeps the id it has in Chrome.
  • Where it runs: normal windows only. Electron can't run extensions in in-memory sessions, so never in private or Vampire Bat windows (Chrome also keeps extensions out of incognito by default).
  • Using it: a puzzle-piece button appears in the toolbar once you have one. It opens an extension's popup (in a small window that closes when you click away) or its settings page. Links in them open as normal tabs.
  • Managing: Add-ons › Extensions from other stores (shown only once you've added one) has on/off, Open, Settings and Remove. To update one, visit its store page again: the button offers the newer version.
  • Compatibility: Electron supports part of Chrome's extension APIs: content scripts, storage, runtime, some of tabs, webRequest and more. Extensions that mostly work on pages tend to work. Ones that rely on right-click menu items, keyboard shortcuts, side panels, replacing the New Tab page or talking to apps on your computer only partly work, and Fruit Bat says which before you add them.

Add-ons#

Open ☰ › Add-ons (Ctrl+Shift+A, or about:addons) to turn add-ons on or off, let them run in private windows, remove them, or install new ones from a .fbaddon file.

How they're kept safe#

  • Web pages only. Add-ons run only on http/https pages and only in the main frame (not ads or embeds). They never run inside Fruit Bat itself or on fruitbat:// pages.
  • Walled off. Each add-on runs in its own isolated JavaScript world. It shares the page's DOM, but the page can't see its code, and add-ons can't see each other.
  • Permissions you approve. Before installing, Fruit Bat lists in plain words everything the add-on will be able to do. Every API call is checked again in the browser core: is the add-on on, does it run on this page, does it have that permission, is this a private window?
  • Private windows: add-ons stay off there unless you turn on "Run in private windows" for each one.
  • Strict installer. It refuses zip entries with ../ or absolute paths, encrypted zips, zips that lie about their sizes, zip bombs (20 MB unpacked at most), unknown permissions, scripts outside the add-on folder, and ids that try to replace a built-in add-on.
  • Rate limits: 20 Colony adds a minute, 10 tabs a minute, 5 toasts every 10 seconds. Storage is capped at 1 MB per add-on.

Chirp#

IRC chat in a side panel. It's off at first (most people don't need IRC): turn it on in setup's Extras step or in Add-ons › Chirp, then click the speech-bubble button in the toolbar to open it.

  • Setup: pick Libera.Chat or OFTC, or add any server. Chirp asks for a nickname, an optional backup nickname, an optional account (SASL) and the channels to join.
  • Chatting: tabs for each channel and private message, with unread counts and @ counts for mentions. Use /join, /part, /me, /msg, /nick, /topic, /away, /back and /quit, Tab to complete names, and ↑ to bring back what you sent. Click a name in the people list to mention them.
  • Modern IRC (IRCv3): Chirp uses whatever the server offers, and settings show which features each network has.
    • History: what you missed before joining or while disconnected comes back (chathistory), counted as unread. Load earlier messages fetches more.
    • Server-time: real message times, with day dividers.
    • People: who's away (dimmed) and who's logged in (✓) (away-notify, account-notify, extended-join, WHOX).
    • Your own messages show once, including ones from your other devices (echo-message, self-message).
  • Bouncers (ZNC, soju): put the bouncer's password in Server password (ZNC: user/network:password). Replayed lines show but don't count as new or pop up.
  • With the rest of Fruit Bat:
    • Echo: ✦ asks Echo what you missed, and @#channel in Echo's box lets you ask about any chat.
    • Tabs: right-click a tab › Send to chat.
    • Roost: the chirp command (see Roost).
  • Mentions show a toast and a count on the toolbar button while the panel is closed.
  • Connect through Tor (per network) hides your IP address from the server. If Tor isn't available, Chirp doesn't connect instead of falling back to your normal connection. Some networks block Tor or require an account to use it.

What Chirp does to keep you safe#

  • No internet access of its own. The panel can't fetch anything, load remote images, or embed frames. Fruit Bat makes the IRC connections, and only to servers you've added (the chat permission).
  • Encrypted by default. TLS is on, and certificates are checked. Turning encryption off asks you first.
  • Passwords are encrypted with your system keychain. If there's no keychain, Chirp keeps the password only until you quit.
  • Gives little away. Chirp never answers CTCP requests like VERSION or TIME, and your real name is never sent; the server only gets your nickname.
  • Links don't load previews, since loading one would show the poster your IP address. Clicking a link opens it in a new tab.
  • Safe text. Everything from IRC is shown as plain text. Line breaks are removed from what you send, so a pasted message can't sneak in extra IRC commands. Long messages are split, and sending is paced so you don't get kicked for flooding.
  • History stays in memory. Nothing you read is saved to disk.
  • Window types: Chirp is off in private windows unless you allow it, and never available in Vampire Bat windows.