MH Calendar
unlistedby MH - Matheus Heidemann
Adds a configurable multi-view calendar for Obsidian events and tasks.
MH Calendar
Summary
MH Calendar is an Obsidian plugin that adds a configurable calendar for notes, tasks, agendas, deadlines, recurring events, and embedded event lists. Events are read from Markdown frontmatter and displayed in multiple calendar views.
Purpose And Features
MH Calendar is meant for vaults that track dated work directly in notes. It supports:
- Years, year, quarter, month, week, and day views.
- Task and agenda event behavior.
- Single-day events, date ranges, deadline tasks, unscheduled events, and recurring events.
- Weekly, monthly, and yearly recurrence rules.
- Multiple calendars with color, icon, tag, folder, template, and enable/disable controls.
- Event quadrants for today, upcoming, overdue, past/completed, and unscheduled events.
- Important-event highlighting and task completion actions.
- Configurable event cards, timeline density, time colors, date highlighting, and mobile stats.
- Embedded event lists with the
mh-calendar-eventscode block. - Optional integration with
MH-PERIODIC-NOTESfor periodic-note indicators and actions. - English and Portuguese locale files.
How It Works / How To Use
Open the calendar from the ribbon icon or the Open MH Calendar command. Use the header navigation to move between views, the calendar dots to enable or disable calendars, and the event panel to filter or sort events.
Events are Markdown notes. A note becomes an event when its tags frontmatter contains the tag configured for one of your calendars. The explicit event-behavior frontmatter value wins; if it is omitted, MH Calendar uses the matched calendar's default behavior.
Example agenda event:
---
title: Project review
tags:
- calendar/agendas
event-behavior: agenda
startDate: 2026-07-10
startTime: "09:00"
endDate: 2026-07-10
endTime: "10:30"
important: true
---
Example deadline task:
---
title: Submit report
tags:
- calendar/tasks
event-behavior: task
hasDeadline: true
endDate: 2026-07-15
endTime: "17:00"
completed: false
---
Example recurring agenda:
---
title: Weekly planning
tags:
- calendar/agendas
event-behavior: agenda
recurrenceType: weekly
recurrenceDays:
- mon
recurrenceStart: 2026-07-01
recurrenceEnd: 2026-12-31
startTime: "08:30"
endTime: "09:00"
---
Supported frontmatter:
title: display title. If omitted, the note filename is used.tags: must include a configured calendar tag, with or without#.event-behaviororeventBehavior:agendaortask.startDate,endDate: dates inYYYY-MM-DD.startTime,endTime: times inHH:MM.hasDeadline:truefor task deadlines that useendDate.completed,completedAt: task completion state.important: highlights the event.recurrenceType:weekly,monthly, oryearly.recurrenceDays: weekday names or numbers for weekly recurrence.recurrenceMonthDays: month days, ranges like10-15, orlast.recurrenceYearDates: dates like10-07or ranges like01-07..05-07.recurrenceStart,recurrenceEnd: optional recurrence bounds.
Embedded event list example:
```mh-calendar-events
show: today, upcoming, overdue
filterBar: true
filterMode: pills
limit: 10
importantOnly: false
layout: list
```
Common code block options:
show: comma-separated quadrants, orall.filterBar: show or hide the filter UI.filterMode:pillsordropdown.limit: total or per-category event limit.importantOnly: only show important events.layout:listorcolumns.fontSize: optional event-card font size for embedded lists.
Settings include language, 24-hour time, default view, unscheduled-event visibility, recurrence occurrence mode, auto-refresh interval, calendars, event-card appearance, week/day timeline density, current-date highlighting, important-event styling, mobile stats, code block click behavior, and periodic-note integration.
The settings tab uses the companion MH-API-TEMPORARY UI API. If that plugin is not enabled, the calendar still loads, but the settings UI shows a dependency notice.
Installation
For manual installation, copy these files into:
<vault>/.obsidian/plugins/mh-calendar/
Required install files:
main.jsmanifest.jsonversions.jsonlocales/en-us.jsonlocales/pt-br.json
Restart Obsidian or reload plugins, then enable MH Calendar in Community Plugins.
Development
The source is TypeScript under src/. The generated Obsidian entrypoint is main.js; do not edit it manually.
Commands:
npm install
npm run dev
npm run typecheck
npm run build
node --check main.js
Build details:
- Entrypoint:
src/main.ts - Output:
main.js - Bundler:
esbuild - Type checker:
typescript - Production build: minified
- External dependency:
obsidian
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.