English | [中文](https://github.com/likemuuxi/obsidian-diary-view/blob/master/README-ZH.md)
# Diary View
Diary View is an Obsidian community plugin that turns your daily notes into a notebook-style diary view. It focuses on a calm reading and writing experience: recent daily notes are shown as pages, the current note can be previewed or edited in place, and small details such as a daily quote and weather icon can be stored directly in each note's frontmatter.
## Features
- Open a dedicated diary view from the ribbon icon or the `Open diary view` command.
- Browse the latest seven daily notes with a page-like layout and flip animation.
- Preview rendered Markdown or switch to editing without leaving the diary view.
- Edit the prompt text at the top of the right page. The text is saved to frontmatter as `daily-quote` by default.
- Optionally fetch a daily quote from a user-configured API. The plugin requests it only when a note does not already have the configured quote property, then caches it in frontmatter.
- Customize the weather icon for a note from frontmatter with `daily-weather` by default.
- Replace the default artwork with a note-specific image from frontmatter with `daily-image`.
- Preserve daily note frontmatter while editing the body content.
- **Full English and Chinese localization** — auto-detects your Obsidian locale, or pick a language in settings.
- **Configurable calendar week** — choose whether the week starts on Monday or Sunday.
- **Custom weekend days** — select which days are highlighted as weekend in the calendar.
## Frontmatter
Diary View reads and writes a few optional frontmatter fields in your daily notes.
```yaml
---
daily-quote: "Write one sentence that belongs to today."
daily-weather: cloud-sun
daily-image: "https://example.com/photo.jpg"
daily-mood: smile
---
```
`daily-quote` is shown in the prompt card at the top of the right page and can be edited directly from the diary view. Clearing the prompt keeps an empty `daily-quote` value, so an API quote will not overwrite your manual choice on the next render. The quote property name can be changed in settings.
`daily-weather` stores the weather for the day. Click the weather icon in the page header to open the built-in picker and select an icon. You can also set it manually in frontmatter — the value can be a Lucide icon name (e.g. `sun`, `cloud-rain`), or common weather words which are automatically mapped to icons. The weather property name can be changed in settings.
`daily-image` replaces the default illustration on the left page. The value can be a URL (`https://…`), a vault-relative path (`photos/sunset.jpg`), or a wikilink (`![[sunset.jpg]]`). If this field is empty or missing, Diary View shows the built-in artwork — or, when **Use first image as artwork** is enabled, the first image found in the note body. The image property name can be changed in settings.
`daily-mood` stores the selected mood icon for the day. Click the mood area on the left page to open the built-in picker. You can also set it manually in frontmatter using a Lucide icon name or the mood's display description. Custom mood icons can be added in settings. The mood property name can be changed in settings.
## Settings
Open **Settings → Community plugins → Diary View** to configure:
- **Language** — Display language for the diary view UI. Auto-detects your Obsidian locale on first use.
- **Start of week** — Choose whether the calendar week starts on **Monday** (default) or **Sunday**.
- **Weekend days** — Select which days are highlighted as weekend in the calendar. Defaults to Saturday and Sunday.
- **Daily note heading** — Optional Markdown headings to read and write. Enter multiple headings on separate lines, or separate them with commas or semicolons. The first matching heading is used; if none exist, the first configured heading is created.
- **Quote frontmatter key** — Frontmatter property used to read and save the daily quote. Defaults to `daily-quote`.
- **Daily quote API** — Optional URL for a daily quote endpoint. The response can be plain text or JSON using common fields such as `hitokoto`, `quote`, `content`, `text`, `sentence`, `message`, or `data`.
- **Weather frontmatter key** — Frontmatter property used to read the daily weather icon. Defaults to `daily-weather`.
- **Image frontmatter key** — Frontmatter property used to read the diary image URL or path. Defaults to `daily-image`.
- **Use first image as artwork** — When enabled and no image frontmatter is set, the first image in the daily note is used as the diary artwork. When disabled, the default illustration is shown.
- **Mood frontmatter key** — Frontmatter property used to read and save the daily mood icon. Defaults to `daily-mood`.
- **Custom mood icons** — Add custom Lucide icon names and descriptions. Icons appear alongside the built-in mood icons in the diary view.
The plugin works offline by default. It only makes network requests when you add a Daily quote API URL.
## Daily Notes
Diary View uses Obsidian's daily notes configuration when available:
- `folder` decides where notes are stored.
- `format` decides the note filename pattern.
If no daily notes configuration is found, Diary View falls back to notes named `YYYY-MM-DD.md` at the vault root.
## Installation
For local development or manual testing, copy these files into:
```text
/.obsidian/plugins/diary-view/
```
Required files:
- `main.js`
- `manifest.json`
- `styles.css`
Then reload Obsidian and enable the plugin in **Settings → Community plugins**.
## Development
Install dependencies:
```bash
npm install
```
Start the development build:
```bash
npm run dev
```
Create a production build:
```bash
npm run build
```
## Inspiration
This plugin's notebook mood, diary-first interaction model, and page-turning presentation were inspired by Dear Diary:
- Dear Diary repository: https://github.com/thebuggeddev/dear-diary
- Dear Diary demo: https://dear-diary-three.vercel.app/
Diary View is an Obsidian plugin built around local daily notes and vault frontmatter. It does not depend on Dear Diary at runtime.