And since it’s a quick click to re-collapse, maybe erring on the side of uncollapsing is the way to go? One could even think of collapsing as snoozing. “I don’t need to see this for now, but show it to me again whenever you, BeeBrowse, in your Opinionated opinion, think I should see it.”
PS to @zzq: I noticed that I mused about that philosophical question in the anti-settings post:
If we wanted to get fancy or philosophical we could say that the Anti-Settings Principle and the Anti-Magic Principle are special cases of a more general principle: “try not to let the business logic branch”. Of course, most of the time there’s no choice (about there being choices). That’s just what the business logic is. If X then do Y else do Z, etc etc. But, just… resist it. Ask yourself if the business logic inherently must bifurcate or if, at least for the initial implementation, you can take just one of the paths. When you come to a fork in the road, do not take it. Pick a single tine. Bifurcation will bite you. This also relates to software engineering concepts like premature optimization being the root of all evil, and YAGNI.
I have a ton of notes on all this for an eventual follow-up post, including a lot of great stuff from you (thank you!) like the related idea of Boolean Blindness. Anyway, anyone else wanting to get into the weeds on this, let me know! We should keep this thread focused on the pragmatics of BeeBrowse!
I love this! As I often use the Beeminder widget in Intend.do, I quickly made a companion version for that platform for those who use that. It’s not perfect & only does Hide / Show (via Hide links and using L as the hotkey as Intend already uses o), but gets the job done for me.
And by “made” I mean “cajoled GPT 4o into doing it”
EDIT: Updated to switch to the 9 key (I often use Cmd + L to jump to URL bar which was unhidding it)
There’s a new icon in the header with my take on sorting by urgency; it simply sorts by how many days you’ve got to make progress on the goal. Goals due on the same day are sorted alphabetically, and thus have a consistent order. (Following on the discussion earlier in this thread.)
Collapsed goals now stick properly to the bottom even when you resort.
If you add a sorting query parameter to the dashboard’s URL (one of ?sorting=urgency, ?sorting=slug, ?sorting=pledge, ?sorting=lasttouch, or ?sorting=simple) that will control the sort order the page starts out using. (As requested in this thread.)
For those who want to write user scripts (or extensions of their own) that interface with this extension, I now expose a programmatic interface. Documentation below.
Likewise, user scripts or extensions can listen to the beebrowse:sorted event to be notified of changes to the sort order.
Programmatic interface documentation
These methods are exposed within a BeeBrowse namespace on the global window.
Beebrowse.collapse(slug)
Collapses a goal with the specified slug.
Parameters:
slug (string): The unique identifier of the goal to collapse.
Throws:
Error if the slug is not a string or is empty.
Error if no goal with the specified slug exists.
Note: Does nothing if the goal is already collapsed.
Beebrowse.uncollapse(slug)
Uncollapses a goal with the specified slug.
Parameters:
slug (string): The unique identifier of the goal to uncollapse.
Throws:
Error if the slug is not a string or is empty.
Error if no goal with the specified slug exists.
Note: Does nothing if the goal is already uncollapsed.
Beebrowse.toggleCollapse(slug)
Toggles the collapse state of a goal with the specified slug.
Parameters:
slug (string): The unique identifier of the goal to toggle.
Throws:
Error if the slug is not a string or is empty.
Error if no goal with the specified slug exists.
Beebrowse.setCollapse(slug, value)
Sets the collapse state of a goal with the specified slug.
Parameters:
slug (string): The unique identifier of the goal.
value (boolean): true to collapse the goal, false to uncollapse it.
Throws:
Error if the slug is not a string or is empty.
Error if no goal with the specified slug exists.
Note: Does nothing if the goal is already in the requested state.
Beebrowse.uncollapseAll()
Uncollapses all currently collapsed goals.
Beebrowse.isCollapsed(slug)
Checks if a goal is collapsed.
Parameters:
slug (string): The unique identifier of the goal to check.
Returns:
boolean: true if the goal is collapsed, false otherwise.
Throws:
Error if the slug is not a string or is empty.
Error if no goal with the specified slug exists.
Sorting
Beebrowse.getSort()
Gets the current sort method.
Returns:
string: The current sort method. One of: ‘slug’, ‘pledge’, ‘lasttouch’, ‘urgency’, or ‘simple’.
Beebrowse.setSort(value)
Sets the sort method for goals.
Parameters:
value (string): The sort method to use. Must be one of: ‘slug’, ‘pledge’, ‘lasttouch’, ‘urgency’, or ‘simple’.
Throws:
Error if the value is not one of the allowed sort values.
Goal Listing
Beebrowse.listGoals()
Lists all goals on the dashboard.
Returns:
Array<string>: An array of goal slugs.
Beebrowse.listGoalsWithTag(tag)
Lists all goals that have a specific tag.
Parameters:
tag (string): The tag to filter goals by.
Returns:
Array<string>: An array of goal slugs that have the specified tag.
This is super-cool and solves a couple of things for me that were really annoying recently. Thank you! Somehow I only found this now. (Or maybe I saw this and forgot over the years, because there were no urgent issues that this extension would solve for me at that point?)
I am wondering if this is no longer the case since the original build? With the current latest 0.0.6 version on Chrome, goals in red are collapsable all right.
Yeah. See the discussion upthread, around last April. I don’t blame you for not reading through the whole thread with its five years of accumulated posts, of course. Rather, this is a sign that I should compile some actual explanation somewhere of what the extension actually does, and what all its features (currently) are.
Specifically the non-collapsing red goals was something that get many people tripped up over the years. I don’t regret taking it out, but I’d also like to hear from people with the opposite opinion. If you say that you’d actually value it keeping the red goals in your face like it or not, and would like the feature back, I’d seriously think about finding some way to accommodate everybody.
(Hopefully without making it a setting. What I’d probably do is expand the API surface of the programatic interface to allow other extensions or userscripts to pass a callback to determine which goals should be allowed to collapse. I feel that this wouldn’t be a “setting” in the sense that the anti-settings principle warns against, but would equally allow those who want that feature to get it.)
Yes, sorry, I didn’t read through all the five years of the discussion, just initial several posts that helped me figure out how to set up in Chrome
As I use the extension more over the next days, I will probably see more arguments either way, but so far I rather agree that the goals in red should be collapsible as well. For instance, I have some goals that it only makes sense to do in the evening, and having them in my face the entire day kind of distracts from the actual ones that I should be focusing on. So being able to collapse them until it’s time is useful. Of course, this is also something that can be helped with proper tagging, which I will probably also use more of now that there’s a convenient way of quickly filtering.
Amazing work on this extension, @zzq. I don’t know whether to feel worse that it’s still so needed or if I’d feel worse if we made it not needed.
Regarding whether red goals should be collapsible, maybe that’s less important now that we finally have the Uncle button?
For whatever it’s worth, my gut reaction is no setting and no if-statements: red goals should work exactly like all other goals. I do like opinionatedness but I think it’s easy enough to settle on one’s own personal rule of not collapsing red goals unless you have some specific reason to violate that rule, like @scarabaea is talking about. In other words, I don’t see a lot of danger of accidentally collapsing red goals.
But I guess we need to hear from someone who actively values the uncollapsibility of red goals and why they value that.
PS: Is there also a question about whether goals should uncollapse themselves when they become red?
I saw your extension was actually disabled in my chrome (using Arc browswer). However I redownloaded the new version and it’s working for now even though it is flagged in the extensions area (probably will be removed again ?)
I have no clue about chrome extension development or whether your extension required the manifest v2 guidelines… but thought I should mention this as I like using this extension you made !
I’ve released a new version; here’s the link to the zip. It didn’t take much of a change—all that was needed here was to change the version number in the manifest from 2 to 3. It should work for you again now. As a general matter, this purge of manifest v2 by Google is ridiculous and annoying, but at least as to this extension it doesn’t matter much as all the stuff this extension does should work identically on both versions.