summaryrefslogtreecommitdiffhomepage
path: root/.rules/plan/calendar-phase-6.md
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-03-28 19:26:58 +0900
committerAdam Malczewski <[email protected]>2026-03-28 19:26:58 +0900
commitab6d09df695c5cdfa21aa8005f00ebf2bd37df2b (patch)
treeae4f994a85b2ba52a9c8e8626c6d8ae9dd2e4cf4 /.rules/plan/calendar-phase-6.md
parent80b35f3a606753ba804445e120eb9a7f05afef85 (diff)
downloadai-pulse-obsidian-plugin-ab6d09df695c5cdfa21aa8005f00ebf2bd37df2b.tar.gz
ai-pulse-obsidian-plugin-ab6d09df695c5cdfa21aa8005f00ebf2bd37df2b.zip
split of big plan
Diffstat (limited to '.rules/plan/calendar-phase-6.md')
-rw-r--r--.rules/plan/calendar-phase-6.md39
1 files changed, 39 insertions, 0 deletions
diff --git a/.rules/plan/calendar-phase-6.md b/.rules/plan/calendar-phase-6.md
new file mode 100644
index 0000000..382059a
--- /dev/null
+++ b/.rules/plan/calendar-phase-6.md
@@ -0,0 +1,39 @@
+# Phase 6: Main Plugin Wiring (`src/main.ts`)
+
+**Status:** Not started
+**Depends on:** Phase 4 (calendar-view.ts), Phase 5 (settings)
+**Modifies:** `src/main.ts`
+
+---
+
+## Overview
+
+Wire the calendar view into the main plugin class: register the view, add ribbon icon, register commands, handle lifecycle.
+
+---
+
+## Changes to `src/main.ts`
+
+```
+In onload():
+ - registerView(VIEW_TYPE_CALENDAR, (leaf) => new CalendarView(leaf, this))
+ - addRibbonIcon("calendar", "Open Calendar", () => activateCalendarView())
+ - addCommand("open-calendar", "Open Calendar View", ...)
+ - addCommand("reveal-active-note", "Reveal active note in calendar", ...)
+ - addCommand("open-today", "Open today's daily note", ...)
+
+In onunload():
+ - detachLeavesOfType(VIEW_TYPE_CALENDAR)
+
+activateCalendarView():
+ - Same pattern as activateView() for the chat — check for existing leaf first
+```
+
+---
+
+## Notes
+
+- Follow the existing pattern in `main.ts` for registering views (look at how the chat view is registered).
+- The `activateCalendarView()` helper should check if a calendar leaf already exists before creating a new one.
+- Calendar settings must be included in `loadData()`/`saveData()` — merge with defaults.
+- The "Open today's daily note" command uses `openDailyNote()` from Phase 1 with `window.moment()` as the date.