Objournal
pendingby JaceLin
Organize Markdown files by calendar and create a journal-style view. List, calendar, On This Day, journal image layouts — all in one place.
Objournal
Read in your language: English · 简体中文 · 日本語 · 繁體中文
| List View | Calendar View | Editor Gallery |
|---|---|---|
![]() | ![]() | ![]() |
Organize Markdown files by calendar and create a journal-style view. List, calendar, On This Day, journal image layouts — all in one place.
If Objournal helps you, consider supporting me on Ko-fi ☕️
1 Features
1.1 Home View
- Calendar View: Browse entries by month with thumbnails in date cells
- List View: Timeline-style list grouped by date (Today, Yesterday, Previous years)
- On This Day: Show entries from the same date in past years
- Journal Cards: Title, date, excerpt, images (1–5+ layout support)
- Stats Bar: Consecutive days, word count, days with entries (hidden by default)
1.2 Editor
- Journal-style Image Layout (optional, off by default): In Live Preview, images in notes from the default folder use the same layout as journal cards
- Auto-split: Over 5 consecutive images are split into multiple galleries
- Live Update: Add/remove images and layout updates instantly
- Image Delete: Delete button on each image
1.3 Other
- Multi-language: English, 简体中文, 日本語, 繁體中文
- Virtualized List: @tanstack/react-virtual for smooth scrolling
- File Watchers: Auto-refresh on create, edit, delete, rename
- Configurable Date Field: "No selection" (creation time) or frontmatter field (
date,Date,created, etc.)
2 Installation
Using BRAT (Recommended)
- Install the BRAT plugin
- In BRAT settings, click "Add Beta plugin"
- Enter this plugin’s GitHub repo URL
- Install and enable in Obsidian
Tip: BRAT checks for updates and notifies you of new versions.
Manual Install
- Download
main.js,manifest.json,styles.cssfrom Releases - Put them in
{vault}/.obsidian/plugins/objournal/ - Enable the plugin in Obsidian
Build from Source
cd .obsidian/plugins/objournal
npm install
npm run build
3 Usage
Open View
- Command:
Ctrl/Cmd + P→ type "Open Objournal" → Enter - First time: You must select a default folder (or "Scan entire Vault") in Settings before opening. If not set, the settings panel will open automatically.
New Note
- Click the + button in the top-right to create today’s note with the default template
Switch View Mode
- Click the calendar/list icon to switch between calendar and list views
4 Settings
| Setting | Description |
|---|---|
| Default Folder | Required before opening. Choose a folder or "Scan entire Vault". Editor image layout applies only to notes in the selected folder. |
| Date Field | "No selection" = use file creation time only; or choose a frontmatter field (date, created, etc.) |
| Template | Template file for new notes. |
| Editor Image Layout | Enable journal-style image layout in Live Preview (off by default). |
| Open Note Mode | New tab / Current tab |
| IndexedDB Storage | View usage and clear cache in Maintenance section. Thumbnail quota: 200 MB, LRU eviction when exceeded. |
5 Date & Image Rules
5.1 Date Extraction
- No selection: Use file creation time only.
- Field selected: Read from frontmatter; fallback to file creation time if missing.
5.2 Image Layout
| Images | Layout |
|---|---|
| 1 | Single column 2:1 |
| 2 | Left & right 2:1 each |
| 3 | Large left + 2 small right |
| 4 | Large left + 3 small right |
| 5+ | Large left + 4 small right; overflow into multiple galleries |
Editor: Same as home; images beyond 5 split into multiple galleries; delete button on each image.
5.3 Thumbnail Cache
Home cards use WebP thumbnails for faster scrolling.
When are they generated?
| Your Action | System Behavior |
|---|---|
| Open Objournal | Read existing cache only; no generation |
| Scroll to an image | Show cache if present; otherwise show original, then generate in background |
| Return after new note | New note images generate on demand when shown |
| Edit an image | Treated as new; regenerated on next view |
| Long-unused images | LRU eviction when over quota |
| Clear cache | Remove all thumbnails; regenerate on next view |
Storage Quota & Eviction
- IndexedDB: ~200 MB cap; LRU eviction when over
- Memory: Up to 200 thumbnails; LRU eviction
- View usage and clear in Settings → Maintenance
6 Privacy & Storage
- Local Only: IndexedDB caches entries and thumbnails locally; nothing is uploaded
- Quota: Thumbnail cache capped at ~200 MB; oldest entries evicted (see 5.3)
- Clear: View usage and clear cache in Settings → Maintenance
- No Network: No requests to external servers
7 Development
npm install
npm run dev # watch mode
npm run build # production build
Stack: React 18, @tanstack/react-virtual, TypeScript, esbuild
8 License
MIT License
Questions or feedback? Open an issue on GitHub.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.


