I'm thinking on how to make SilverBullet more accessible for newcomers, so they don't start with "well anything is possible, but I have no idea what to do" issue.
One use that I think is common enough to build in, is support for a daily journal. Both LogSeq and Obsidian ship this as part of their core.
What could something like that look like for SB, and how to make it "SB native" meaning: useful, minimal, with room to expand yourself (or through additional libraries).
Some initial thoughts:
Implemented in space lua (Library/Std/Journal/*)
Commands:
Journal: Today (maybe add this to the action buttons by default even)
Journal: Tomorrow (for planning tomorrow)
Journal: Previous Day (for navigating through days, only cycles through existing journal pages)
Journal: Next Day (for navigating through days)
Date format fixed (YYYY-mm-dd for ordering purposes, and because it's the one date format to rule them all)
Configuration options:
On/off toggle for entire feature (for those who have a custom implementation)
Prefix for journal pages (defaults to Journal/)
Page template to use (default would simply contain a #journal tag and an empty bullet * )
Auto-generated index page has query with list of journal entries and a button to navigate to today.
For a journal, I’d prefer a very minimal experience. A few things that I think are currently missing:
An infinite scrolling page with lazy loading would be great for navigating backward and forward in time. It should also be possible to edit journal entries directly in the timeline view. The actual journal pages should still be stored as separate files, as you suggested.
Manually jumping between previous and next journal pages hasn’t been very useful in my experience. A simple calendar view would provide much more value and make navigation easier.
Navigation, e.g. through a calendar view, should open journal pages directly in that timeline view instead of as separate pages to provide context.
As a new(er) user to SB+, I can agree that an auto-generated index page would be valuable. I currently a query at the top of my index page for the most recent 7 journal entries. An index page with the journal entries infinitely scrollable would be nice along with a way to navigate to journal entries from years past.
I've setup journaling in this way and one thing I've brushed up against (and mentioned on these forums) is the inability to pass values into a template. For example, a journal page template cannot be passed in a date, so it just always uses the current date and ends up having issues with calendar views or what have you that can create files for previous days.
Alternatively, if there could be a way to specify widgets that appear on the top and bottom of certain pages, perhaps based on a prefix or a tag in the front matter, that could replace a lot of what the templates are used for currently. It could also solve the awkwardness of getting widgets inside templates requiring the use of ${"$"}.
I think that's awesome! It would have helped me immensely during my first few weeks with Silverbullet.
That said, I'd really appreciate an easy way to disable them, since I've already implemented all of these features in my space.
I want to avoid a repeat of the built-in read-only mode introduced in 2.6. In my case, I had to use a workaround (looping through the actionButtons) to disable it so I could continue using my own implementation, which includes a few additional features.
I do think having a nice (default) journal experience would be great. I will also echo that it should be easy to opt out of, for those who already have what they want in place.
Coming from LogSeq, it took me a while but I ultimately landed with something I've been happy with. The three things I needed were
installing Mr-xRed/FloatingJournalCalendar (configured for journal pages like Journal/#year#/#year#-#month#-#day#), which gets me easy navigation between journal pages.
a dynamic index, which gets me to my journal for today just by going to the index.
local function redirectToCustomIndex()
if editor.getCurrentPage() == "index" then
editor.navigate(os.date(bnorick.journalPageDateFormat), true)
end
end
event.listen {
name = "editor:init",
run = redirectToCustomIndex
}
event.listen {
name = "editor:pageLoaded",
run = redirectToCustomIndex
}
a journal template, which fills in the boilerplate for a daily journal.
event.listen {
name = "editor:pageCreating",
run = function(e)
local is_journal = e.data.name:startsWith("Journal/")
if not is_journal then return end
local rawTemplate = space.readPage("Library/Custom/template-journal")
local tree = markdown.parseMarkdown(rawTemplate)
local expandedTree = markdown.expandMarkdown(tree, {expandLuaDirectives=false})
local template = markdown.renderParseTree(expandedTree)
return { text = template, perm = "rw" }
end
}
The dynamic index has a flash-of-wrong-page behavior that I don't love, I would welcome a new hook like editor:beforeNavigate that could prevent loading the wrong page before navigating to the correct page.
As to the "infinite scroller" idea — I've seen this be suggested before and while it sounds cool, it's pretty incompatible with the current model of "you're just looking at one page at a time" editing model that exists today. I wouldn't even know if each entry would then be its own editor that somehow magically scrolls in, or however else would work. It's not really something I'm interested in changing or thinking about at the moment. So looking for some more "low hanging fruit" ideas right now.
That's kind of the only thing actually missing for a good journal in silverbullet. Everything else is easy to add and tweak.
As many others here, I have my own calendar widget, weekly journal summary and navigation aid. Some minimal implementation of those features would certainly help to get people started.
I could, but that’s not what those commands do. They’re relative to the day of the journal you’re currently looking at (if you’re looking at a journal page) so you can “walk” through them one by one.
I like the journal workflow + linking. The basics are already there. For complete beginners maybe just an icon in the top right that takes you to todays journal page would help.
For me what makes this type of notetaking better is having more context in the backlinks. If I have a meeting with [[person]] on my daily note, and I got to that persons page, I would like to see a bit more context than just that single bullet where the name is linked. Ideally seeing all sub-bullets would be nice, or anything directly underneath the heading containing the link?
Other nice to have features could be:
searching/creating dates in the ctrl+k menu (may 5th, last week, etc.)
Option of having default queries underneath each journal page (show all tasks tagged as urgent)
And perhaps just a sample/tutorial workspace that opens when you first install the app with some examples, links, etc. so a newcomer can see how this would be used.
Hi - As a new person I was trying to read the document (Journal) and I wasn't able to find it in configuration to turn it on to see how it felt. I think a video may be helpful.
Suggestion, add a bunch of those pages under /Examples, so people can copy paste those. Make them regenerate so they wont break. But I do think some handholding might help. I switched over from v1 to v2 a few weeks back and finding out how to do the new syntax was/is a pain.
I had my own daily journal implementation going, but was checking out the new Journal stuff -- I think it's a great idea to pave this cowpath for newer users!
My current setup is to have my daily journal notes live in a directory tree like this: dailies/2026/06/2026-06-02. Instead of a (potentially) unbounded list of files in a single directory, they're partitioned by year and month. It also lets me do programmer-ish things like using ag to find things in specific months without having to munge filenames too much.
Maybe you could provide the ability to set that in the config for the journal feature? So as well as setting a static prefix, there is a dynamic prefix that could support dailies/%year/%zero-padded-month/?