I Built a Plugin Because I Kept Losing My Own Thoughts
I am a person who takes notes religiously and then immediately forgets where they are. Not all notes - just the important ones, naturally. The throwaway grocery list? I can find that in three seconds. The career-altering insight I wrote down at 11pm on a Tuesday? Gone. Absorbed into the void of my vault like it never existed.
This has been my relationship with Obsidian for a while now. I love the app. It is fast, it is quiet, it does not try to upsell me on AI features every time I open it. But I have this habit - and I am not sure when it started - of writing everything under date headings. Not in daily notes files, not in some structured journal template. Just headings like ### March 4, 2026 scattered across a dozen different files. Work logs in one place, personal reflections in another, random observations in a third.
It works great for writing. It works terribly for finding anything later.
The "I Should Just Build It" Moment
You know that moment where you have spent fifteen minutes scrolling through files trying to find something you wrote last week, and you think "surely there is a plugin for this"? And then you search, and there is not one that does exactly what you want? And then you think "well, how hard could it be?"
That is how every side project starts. And it is always harder than you think. But I did it anyway.
What Surface Actually Does
The idea is simple. Surface is a sidebar panel in Obsidian. You open it, pick a date - or a week, or a month - and it shows you every entry from your entire vault that was written under a matching date heading. Little cards, one per entry, with a preview and a button to jump straight to the source file.
That is it. Scan for dates, group them, show them. The version of me from six months ago - the one rage-scrolling through old files looking for "that thing I wrote about the API" - would have been very grateful.
Then I Realized Dates Were Only Half My Problem
Here is what I did not expect. After using Surface for a few weeks, I noticed that some of my most useful notes were not really about a date at all. They were about a decision I had made, or a task I needed to follow up on. I was writing headings like ### Important or ### Follow Up inside my entries, and then losing them immediately. Which kind of defeats the purpose of flagging something as important, if you think about it.
So I added what I ended up calling surface terms. You pick a few keywords - whatever maps to how you think - and Surface watches for any heading that contains those words. They get their own tab called Pinned, always visible, always current. Not sorted by when you wrote them, sorted by what they mean.
This changed how I take notes more than I expected. Knowing that ### Important will actually surface again means I use the heading honestly instead of optimistically. It turns a hope into a guarantee. And honestly, my past self needed that kind of accountability.
A Brief Defense of Building Things That Already Kind of Exist
Look, I know there are twenty ways I could have solved this without writing code. Better file organization. Daily notes. Templates. Discipline. All reasonable options that I have tried and abandoned at various points because, apparently, I am the kind of person who would rather build a plugin than change a habit.
But here is the thing - I did not want a different workflow. I wanted the workflow I already had, just with a window into it that made sense. That felt like a fair ask. And when the tool you use every day does not have that window, sometimes you just build one and hope you did not over-engineer it.
Also, I genuinely wanted to understand how Obsidian plugins work. I had poked at the docs a few times, gotten intimidated by the sample plugin boilerplate, closed the tab, and moved on. Surface was my excuse to actually sit down and commit.
What I Learned (Besides How to Read API Docs)
Obsidian plugins are more approachable than the sample repo makes them look. You get a clean lifecycle - onload and onunload - access to the vault, and a DOM helper system that already feels native. If you have written TypeScript and you are comfortable arguing with the browser DOM, you can get something working in a weekend. Maybe a long weekend.
The hardest part was not the code. It was restraint.
I kept reminding myself that Surface lives inside Obsidian, not on top of it. My notes are the content. The plugin is just the frame. That meant no gradients, no flashy accent colors, no decorative touches that exist only because they look nice. Every element has to earn its place by doing something useful.
This is harder than it sounds when you are both the designer and the developer and you keep wanting to add just one more little thing. The Pinned tab was where I really had to fight myself. My first instinct was to make it visually distinct - different color, a badge, some kind of "hey look at me" energy. I cut all of it. It looks exactly like the date tabs. Same cards, same rendering, same jump button. The only difference is what the cards contain. That turned out to be enough.
Who This Is Actually For
Other people like me, probably. The daily journaler who logs reflections before bed and forgets them by morning. The developer keeping a running work log across too many project files. The researcher who stamps observations with dates and trusts that future-them will figure out the organization later. Spoiler - future-them will not.
If you write under date headings in Obsidian and you have ever spent ten minutes looking for something you know you wrote last week, Surface might save you some frustration. If you have words you keep flagging - things that matter enough to mark but not enough to act on immediately - the Pinned tab will keep them honest.
A Quiet Thing
I like that Surface is quiet. You open the panel, look at a date, read what you were thinking. Flip to Pinned, check what still needs attention. Close it. Done. No onboarding flow, no celebration confetti, no "you journaled 7 days in a row!" notification.
There is something nice about a tool that helps you revisit your own thinking without making a production out of it. Like flipping back a few pages in a notebook. Low stakes. Private. Yours.
That is the kind of software I want to build. This is a small example of it. And if nothing else, I can finally find that thing I wrote last Tuesday.
Surface is an open-source Obsidian plugin. Installation instructions and source are in the README.