First, search the help docs and this forum. Maybe your question has been answered! The [debugging ) can help, too. Still stuck? Delete this line and proceed.
What I’m trying to do
An Obsidian noob coming from Logseq, I am trying to replicate Logseq’s journal where today presents at the top and a simple scroll down accesses previous days.
Things I have tried
Read Obsidian forum 5 search results for journal.
Watched numerous YouTube videos on Obsidian journal.
Doesn’t seem as intuitive as Logseq, but I need Obsidian for the phone plugins.
Btw, error can’t include links in post is more friction, please improve that too. I have to manually delete the auto text from this post
It looks like you’ve only posted in two topics so far – once you post some more, give and get some likes, etc., you’ll be able to add links and edit your posts.
Thanks for the understanding.
In the mean time, you can post links in a code block
another way to accomplish this is to have each journal entry as a distinct file and use dataview or bases to include the last 7 days with links at the end to see more days if desired.
Sounds like you miss Logseq’s endless journal page. In Obsidian the equivalent is ‘Daily notes,’ which are just markdown files named by date. First, enable the Daily Notes core plugin (Settings → Core Plugins) and set a folder (for example /Journal/) and a date format like YYYY-MM-DD. Second, turn on the Calendar community plugin; its mini-calendar lets you jump to today or scroll back through previous days without leaving the editor. Third, if you truly want a scrolling view, use Dataview to stitch files together: LIST FROM "Journal" SORT file.name DESC will list recent notes at the top. Try creating a daily note for tomorrow with a short entry, then use the calendar to review the last few days and note what feels intuitive. You are not behind.
If you want something in Obsidian that feels similar to Logseq’s “journal scroll,” you can fake it with a DataviewJS snippet.
The idea is simple:
Pull all the daily notes from your configured daily notes folder.
Sort them, filter out anything that’s not a valid daily note, and show each one with a heading containing the date and day of the week.
Under each heading, embed the note’s content so it flows like a continuous journal.
This isn’t truly infinite scrolling — it just stitches your daily notes into a single note for easy reading. For the embeds to flow naturally in reading mode, you’ll want TFTHacker’s “Adjust Embeds” CSS snippet enabled.
Important caveats:
It’s slow if you try to display a lot of notes. That’s why I added a max-notes property in the frontmatter of the note that contains this snippet. The script reads this value and limits how many daily notes it shows. For example:
max-notes: 30
Without this, you’ll likely hit performance issues.
The output appears in Reading mode only. You can scroll through it, but you can’t interact with it — e.g., no collapsing sections or folding lists.
You can find a much simpler (and more efficient) alternative: just list links to each daily note. With Ctrl+hover you can preview the note, and you can even edit it from there. That’s doable with a basic Dataview table or even Obsidian’s new Bases feature.
Here’s the DataviewJS code:
const MAX = (() => {
const v = dv.current()?.["max-notes"];
const n = typeof v === "number" ? v : parseInt(v ?? "", 10);
return Number.isFinite(n) && n > 0 ? n : 30;
})();
const coreDN = app.internalPlugins?.getPluginById?.("daily-notes");
const dnFolder = coreDN?.instance?.options?.folder || coreDN?.instance?.options?.newFileFolderPath;
const periodic = app.plugins?.getPlugin?.("periodic-notes");
const pnFolder = periodic?.settings?.daily?.folder;
const DAILY_FOLDER = dnFolder || pnFolder || "Daily";
const pages = dv.pages(`"${DAILY_FOLDER}"`)
.filter(p => { const d = p.file.day ?? dv.date(p.file.name); return !!d && d.isValid; })
.sort(p => p.file.name, "desc")
.limit(MAX);
for (const p of pages) {
const day = p.file.day ?? dv.date(p.file.name);
const title = `${day.toFormat("yyyy-LL-dd")} (${day.toFormat("cccc")})`;
dv.header(2, `[[${p.file.name}|${title}]]`);
dv.paragraph(`![[${p.file.name}|clean no-title]]`);
}
Here’s the simple links version (fast, lightweight). It lists daily-note links one under another; Ctrl+hover to preview, and you can edit from there. You have to change “Daily” to the actual name of your daily notes folder.
TABLE without id
link(file.path, dateformat(d, "yyyy-LL-dd (cccc)")) AS "Daily"
FROM "Daily"
FLATTEN default(file.day, date(file.name)) AS d
WHERE d SORT d DESC LIMIT default(this.max-notes, 30)
Do you mean, the last 30 days counting from the one that contains that link?
That would require to pass the date of the linking note to the linked note containing the dataviewjs block, and that’s not possible afaik.
If you mean the last 30 “from today”, that’s doable. But not very useful, I guess.
The closest thing would be to embed a bases view at the end of each daily note. Bases can use values of the “embedding” note to generate the embedded view. This way you could get a table with links to the last 30 days. The contents won’t be visible though, but they are accessible via Ctrl-Hover.
Oh, of course, but you have to manually write the required dates. I understood that you were asking for a way to automatically generate that view.
Moreover, your solution requires to write different “The last 30 days” notes depending on the daily note from which you link to it, doesn’t it?
The idea I was hinting in my previous message is to write a single Bases, named for example “Previous days.base”, containing for example (replace “Diary” by the actual name of your daily notes folder).
Then, at the end of every daily note you can simply insert this:
![[Previous days.base]]
This will expand dynamically differently in each daily note, showing the last 20 existing daily notes whose date is less than the date of the containing daily note.
For example, this would be the result if inserted in the note corresponding to “2025-06-29”: