Releases: ukaytac/obsidian-simple-journal
Release list
1.4.0
Entry folders
Journal entries have always been filed under Journal/2026/08/. Now that is a setting, with three shapes:
Year and month Journal/2026/08/2026-08-12-09-34-21.md
Year Journal/2026/2026-08-12-09-34-21.md
No subfolders Journal/2026-08-12-09-34-21.md
It defaults to year and month, so nothing about an existing journal changes until you change it.
- Changing it moves nothing by itself. It decides where the next entry is written. The timeline reads your entries wherever they are, so a journal holding more than one shape works exactly as before.
- Picking a shape offers to move the rest, and you can say no. The same offer is a command,
Reorganize journal folders, whenever you want it later. Either way it counts the entries and tells you before it moves anything. - It never touches what is inside your entries. Only their locations change: nothing is read from them and nothing is written to them.
- It never overwrites a file, and it leaves alone anything you filed into a folder of your own or named yourself.
- Links follow, as long as Obsidian is set to update internal links automatically. If a move fails partway, running the command again finishes the job.
- Emptied year and month folders go to your trash, not straight to deletion.
One behaviour change worth knowing
Correcting an entry's time has always moved its file, so the filename — which is the timestamp — keeps telling the truth. It now moves it to whatever the folder setting says, which is what makes the setting mean something.
One case is different from before: an entry sitting directly in your journal folder, rather than in a year or month subfolder, used to stay there through a time correction and now moves into the shape you chose. Entries you filed into a folder of your own, or named yourself, are still never moved.
1.3.0
Search
Search journal finds an entry by the words in it.
Type, and matching entries appear with their time and the words around the match. There are two ways out. Pick one entry and its note opens in a new tab, with the journal left exactly as you had it. Pick "Show all" and the timeline narrows to every entry that matched.
- It searches what you wrote, not properties and not filenames.
- Turkish casing works, and so does English's.
istanbulfindsİstanbul;ışıkfindsIŞIK;i amfindsI am happy. All four ofİ I ı iare one letter here, so a search never misses a word over the dot on an i. The cost is the other direction:ısıalso findsisi. An extra row is easier to read past than a missing one is to notice. Accents are not folded, soacikdoes not findaçık— this folds case, not accents. - Every term must appear, in any order. There is no query syntax — no quotes, no
OR, no exclusion. - A search filter is never remembered. Restarting Obsidian, or writing a new entry, puts the whole journal back.
- Nothing is written. As with mentions, this release adds no writes at all.
Known limitations
- Searching reads every entry once each time you open the command. On a journal of a few hundred entries this is imperceptible. On a very large one it may not be; if it ever stutters, the fix is a different reading strategy and not a different search.
1.2.0
Mentions
You can now read the journal entries that mention a note, on the note itself.
Obsidian's backlinks pane could never do this for a journal. It lists a backlink by filename, and these filenames are bare timestamps — so a person you had written about twenty times showed up as twenty near-identical rows. The one place where titleless entries cost you something was the one place you most wanted to read them.
What you get is not a list of links. It is the entries themselves, with their text, in the journal's own newest-first shape.
- Write
```simple-journalin any note and it fills with the entries that link to that note.Insert journal mentions blockwrites the block for you. Point it somewhere else withnote: [[Some Other Note]]inside the block. Open journal mentionsputs the same panel in the sidebar, following whatever note you are reading.Show mentions under notesadds it to the bottom of a note automatically. Off by default. Its header folds the panel away and remembers that you folded it, keeping the count on screen so you can always see there is something there.- A mention is a real link — in the text, an embed, or a property like
people: "[[Person]]". Obsidian treats all three as the same thing and so does this. A note whose name merely appears as text is not a mention, and neither is a link to a note that does not exist. - The panel is read-only. Click an entry's time and the journal opens at that entry, which is where editing belongs. Five entries show at first, twenty more per click.
- Nothing is written. No new property, no change to any entry, no new file. This release adds no writes at all.
Escape closes the composer
Pressing Esc in a new, empty entry now closes it instead of navigating away from the journal. With no entry being composed the key behaves exactly as it did. It never closes a composer whose text is already on its way to disk.
Known limitations
- None of this has run on a phone or tablet, as with the rest of this plugin's mobile support. The note-footer panel in particular depends on the editor's layout, which has never been observed on a device.
- The note footer is the one surface that reaches into Obsidian's own layout. No public API can put content at the end of a note's text where it scrolls with the note. If a future Obsidian changes that layout, the panel quietly stops appearing — no error, no notice, and nothing in your notes altered. That silence is deliberate, but on a phone it is indistinguishable from the setting being off.
- The footer shortens the empty click area under a short note. Obsidian leaves a screenful of space below the last line so you can click there and keep writing; on a note with a footer that space is capped, so the panel is not stranded a screen away. Clicking below the text still works, with less room.
- Folding the footer is one switch for the whole vault, not one per note. Fold it under one note and it starts folded under all of them.
- "Show more" re-renders what is already on screen rather than only adding the new entries. Harmless at ordinary sizes; noticeable if you page through hundreds.
- Whether property links are counted has not been confirmed in a real vault. The plugin asks Obsidian which links a note has and trusts the answer; that answer is expected to include links written in properties, but it has only been reasoned about, not observed.
- With Vim key bindings on,
Escin a new entry is unverified. It will either leave insert mode as usual or close the empty entry, depending on which handler Obsidian reaches first. Nothing is at risk either way —Escnever closes an entry that has text in it.
Requirements
Unchanged: Obsidian 1.7.2 or newer, desktop and mobile.
1.1.0
Tags
Journal entries can now be filtered by tag.
- Tag an entry the way you tag anything else in Obsidian — type
#somethingas you write, or puttags:in the entry's properties. The
plugin never writes a tag for you and never rewrites one you wrote. Filter journal by tagnarrows the timeline to a single tag, still
newest-first and still continuous. The filtered tag is named at the top of
the timeline with a✕beside it;Escclears it too.- Property tags appear as a chip beside the entry's time, and clicking one
filters by it. Tags typed into the text don't get a chip — they already show
as Obsidian's own clickable pill, and showing them twice would just be noise.
The chip exists because the timeline deliberately hides the properties panel,
which would otherwise make a property tag invisible here. - The filter composes with the calendar, so you can read one tag from a
given day backwards. It filters rather than anchors, because a tag is not a
point in time — "this tag and older" would mean nothing. - Matching is exact and case-insensitive. Filtering by
#workdoes not
pull in#work/project, which is offered separately when you pick a tag. - The filter is never saved. Restart Obsidian and the journal comes back
whole. A filter restored at startup would hide most of your journal with no
visible reason.
Nothing about your files changed: entries are still ordinary Markdown notes,
and this release adds no new writes to them.
Known limitations
- None of the tag UI has run on a phone or tablet. The layout and touch
behaviour were written by reasoning from documented behaviour, as the rest of
this plugin's mobile support was, and remain unverified on a device. - A filtered timeline that empties itself says nothing. If the last visible
entry stops matching the filter — because you removed its tag from another
pane — its row disappears and the timeline is left blank until the next
reload, with the filter bar still naming the tag but no message explaining
the emptiness. - The tag suggester's "Clear filter" row is never filtered out, so a query
matching no tag leaves it as the only row. Pressing Enter there clears the
filter rather than doing nothing. It is one command away from being undone,
but it can surprise you.
Requirements
Unchanged: Obsidian 1.7.2 or newer, desktop and mobile.
1.0.4
Housekeeping only. Nothing about writing or reading an entry changed.
- The README screenshot now loads on the community directory's plugin page, where a repository-relative path resolved against the wrong host.
- A stylesheet cleanup that reduces
!importantusage without changing what renders.
If you are on 1.0.3, which carries the list-rendering fix, there is nothing here you need.
1.0.3
Fixed
- Lists render again. A bullet list in the timeline came out as bare lines — no marker, and every level at the same indent as an ordinary paragraph. Nested bullets and blockquote indentation were flattened the same way. They now look the way they do anywhere else in Obsidian.
A CSS-only change: nothing about how entries are stored or read was touched, and no existing entry needs anything done to it.
1.0.2
Second round of review findings. No new features; a patch.
- Reads only the journal folder. Building the timeline used to ask the vault for every Markdown file and filter by path. It now walks the journal folder's own subtree, so the plugin never looks at a path outside it — and the work is proportional to the number of entries rather than the size of the vault.
- Build provenance continues to be attested for every release asset.
- The fallback text editor no longer asserts a DOM event type that different TypeScript releases disagree about; it takes the one field it actually reads. An
inputevent carrying noinputType, or a non-string one, is now explicitly treated as "unknown edit, remeasure" rather than assumed safe. - Clipboard use is documented as what it is: write-only, one call site, and only the link generated by "Copy link to entry". The plugin never reads the clipboard.
Test coverage went from 451 to 460. The falsion — the logic that keeps a shrinking entry from leaving a blank gap under its text — is exercised automatically for the first time;rage at all because jsdom reports every element's height as zero.
Requires Obsidian 1.7.2 or later.
1.0.1
Addresses everything the community directory's review raised.
- The plugin description no longer contains the word "Obsidian".
- Release assets now carry GitHub build provenance attestations, so a download can be verified against this repository:
gh attestation verify main.js --repo ukaytac/obsidian-simple-journal - Settings are declared through the 1.13 settings API, so "Journal folder" now turns up in Obsidian's own settings search. The imperative path is kept for Obsidian below 1.13.
- Notices no longer repeat the plugin name; the message starts with the message.
- Source-code cleanups flagged by the directory's lint, two of which were real: a raw zero-width character sat inside both frontmatter regexes, and the settings loader spread untyped JSON straight into settings. Neither was reachable as a bug, and both are now unable to become one.
No change to how entries are stored or read. Requires Obsidian 1.7.2 or later.
1.0.0
First release.
Simple Journal is a continuous journal for Obsidian. One journal entry is one Markdown file, a day holds as many entries as you wrote that day, and the whole thing is one scrollable timeline you edit in place — newest at the top.
- No titles. Entries are identified by their timestamp. Nothing asks you for
a name, a folder, or a date. - Directly editable. Every entry in the loaded timeline is a live, full
Obsidian editor: live preview,[[autocomplete, editor commands, vim mode. - Ordinary Markdown. Each entry is a normal note. Links, tags, properties,
search, backlinks, graph, Bases and Dataview all work on them. - A calendar in the sidebar marks the days that hold entries, and clicking
one anchors the timeline to it. - Local only. No network requests, no telemetry, no account.
Requires Obsidian 1.7.2 or later. Works on desktop and mobile.
To install manually, copy main.js, manifest.json and styles.css into <vault>/.obsidian/plugins/simple-journal/ and enable it under Community plugins.
A note on the editor
Obsidian exposes no public API for an editable editor embedded in a custom view, so entry editing uses an internal mechanism (app.embedRegistry.embedByExtension). It is probed at load and falls back to a plain text editor if it is ever unavailable, and all of it lives behind one interface in a single file. See the README for the reasoning.