My Beeminder browser extension

Pardon me, seems to have randomly returned to working today. Appreciate the check.


This is your bi-yearly reminder that this extension is great and I love it so much.

I would change from the $8 to the $16 per month subscription if this extension was part of it. It’s just that useful.


100% agree. I would love to see the features of this extension be integrated into Beeminder; it’s really levelled up how I use the site. So there’s definitely a voice in the team advocating for this! :grin: I also recommend it for certain use-cases in emails.

It’s worth boosting this thread in the forum every so often, so new folks can discover the tool, so thanks both for letting us know you’re keen and bumping it up! :thumbsup:


Yeah, this is super nice! You are impressive, @zzq! I finally tried it and have a small bug report: after filtering it messes up the sort order. The intended sort order is like so:

  1. Time remaining till derailing (or goal end date, whichever comes first)
  2. Pledge
  3. Goalname alphabetically

(We intend to standardize that ordering everywhere, including the smartphone apps, though we’re not there yet. (PS: I know the parenthetical in #1 seems dumb or that it should be optional but there are complicated reasons it’s important for now – to be revisited after Beeminder has properly open-ended goals.))


This is my bi-yearly reminder that this extension is absolutely fantastic. You should try it. There is a non-zero probability that I would have stopped using Beeminder without it.

The reason why I love it so much is that it allows me to hide goals that are done or irrelevant for the day. Consequently, the open goals stand out more and the UI becomes much cleaner. Collapsing a goal also gives me an additional “checking off effect” boost.


Enthusiastic agreement to all of this. I’m always thrown now when I don’t have this extension (e.g. on my work laptop).


Just discovered this extension. Looking forward to being able to use it on Safari at some point, but enjoying the ability to ‘collapse’ goals for the day.

1 Like

@zzq I tried to make a small change to the extension, but I am unable to build it.

I ran

git clone
cd beebrowse
npm install
npm run build-ext

but get the following error:

  const err = new Error(message);

Error: Cannot find module '../utils/pattern'

Am I doing something wrong? Any hints are appreciated.

npm --version

In case that is relevant.

1 Like

That should work—at least when I repeat those steps it does. I’m not sure why it isn’t working for you.

That said, I haven’t updated the dependencies in two years, an eternity in the javascript world, and it’s quite possible that things have bitrotted somehow. I’ve pushed a new commit to github that updates the dependencies to more recent versions. You might try that and see if you can get it to work.


Thanks for taking a look, zzq.

After updating, I still wasn’t able to run build-ext successfully. I then ran the following command based on a Stackoverflow answer [1], and after updating I can now build fine.

npm cache clear --force

I guess my package cache contained stale packages or something. Anyway, I am fine for now. Thanks for your help.

[1] node.js - NPM is completely ignoring globally installed packages - Stack Overflow


@zzq Just got around to installing this. Very nice, and super fast! I’m impressed.


Hmmm. Question! On Chrome, whenever I collapse something, all my goals re-sort. They stay in order of deadlines, but the alphabetical order changes. On Firefox, that doesn’t happen. I prefer the Firefox behaviour, but I prefer to use Chrome for this. (Please, I know some folks in this forum have strong opinions about how other browsers are better, but let’s just pass that over in silence!)

Does anyone have any idea what’s happening and if there’s a way to stop it? I’m guessing probably not, but you never know.

(I can’t code, but my wife is a junior dev, so if there’s some kind of coding thing we can do to fix it… maybe that’s an option. I still have whatever version is in the zip file linked above.)


Looking into it, I see that the goalCmp function (which compares two goals to determine their sort order), isn’t actually symmetric or reflexive, the way a comparison function is supposed to be. Firefox happens to do the correct thing regardless, which is probably why I never noticed the bug. In any case, I’ve fixed it, and published a new release which includes both this fix and also few small additional updates I never got around to publishing. (The search box now works a bit more like Altbee’s does: you can search for multiple space-separated terms at once, separated by spaces.)

Here is a download link for the Firefox extension, and here is a zip file you can use with Chrome. [EDIT: This is no longer the latest version. See here for the updated download links.]


You are a wonder! Thank you!

1 Like

Good to see that more people start to appreciate this extension [1][2]. It’s so much more visually pleasing when irrelevant or done-for-the-day goals are tugged away, I don’t know how I would manage without the plug-in.

[1] Calendial-Concomitant Continuous Commenting - #24 by rperce
[2] Notifications are a pain. - #4 by shanaqui


Hello everyone! This is just your bi-yearly(ish) reminder that you will love this extension.

I recently learned that the extensions allows you to open a search bar by pressing f. You can then filter for goals, tags (simply typing the name of a tag), and deadlines (green, orange, blue, red). This is great for processing certain goals at certain times of the day and handling higher numbers of goals in general.


I found this extension a few days ago since returning to Beeminder and I agree with @felixm that this is an excellent extension. Being able to hide goals that don’t need my attention is great.

I did not know about being able to filter by deadlines, thanks for noting that @felixm !


I’ve released a new version. Download the Firefox extension, or download the zip file for use with other browsers.

In this version:

  • Bugfix: it is now possible to filter on tabs which contain uppercase letters.
  • Feature: two new meta tags you can filter by, suggested by @felixm: done and open, for goals which you’ve added or not added data to today, respectively.
  • Feature: for those who want to write userscripts or extensions of their own which integrate with mine, this extension now dispatches events you can listen to with javascript. beebrowse:init fires (on window) when this extension starts up, and beebrowse:collapse and beebrowse:uncollapse fire when the user collapse or uncollapses (respectively) a goal. Both events include the goal’s slug in the event’s details. beebrowse:uncollapse-all fires when the user uncollapses all collapsed goals using the o hotkey.

Are those events controlling or merely informative? If I dispatch my own beebrowse:collapse event, will that collapse the goal?

I could run this and check myself, I suppose, but I figured others might be interested in the answer…


It’s entirely informative. The extension now announces each action it takes right after it takes it, so that other extensions/userscripts/etc can keep track of what’s happening. If, for instance, someone has a userscript that adds some extra information on each goal, perhaps that userscript wants to add a more compact version of that information on the collapsed version of the goal—so it can now listen to these events, and whenever a goal is collapsed or uncollapsed it can rewrite the extra information it adds to be more or less compact, as desired.

The possibilities are endless—in the past, it was hard for other extensions to know what the user was doing via my extension, but with these newly emitted events coordination should be much easier. A potential future feature that I may well add, if anyone wants to write an extension or userscript that makes use of it, is an API to control my extension from the outside. It probably would be a javascript API with functions along the lines of BeeBrowse.collapse(slug), BeeBrowse.uncollapse(slug), BeeBrowse.uncollapseAll(), etc—would that be of use to anyone?