summaryrefslogtreecommitdiffhomepage
path: root/.rules/plan/calendar-phase-4.md
diff options
context:
space:
mode:
Diffstat (limited to '.rules/plan/calendar-phase-4.md')
-rw-r--r--.rules/plan/calendar-phase-4.md84
1 files changed, 0 insertions, 84 deletions
diff --git a/.rules/plan/calendar-phase-4.md b/.rules/plan/calendar-phase-4.md
deleted file mode 100644
index c7b2c86..0000000
--- a/.rules/plan/calendar-phase-4.md
+++ /dev/null
@@ -1,84 +0,0 @@
-# Phase 4: Calendar View (`src/calendar/calendar-view.ts`)
-
-**Status:** Not started
-**Depends on:** Phase 1 (daily-notes.ts), Phase 2 (calendar-state.ts), Phase 3 (calendar-renderer.ts)
-**Output file:** `src/calendar/calendar-view.ts`
-
----
-
-## Overview
-
-The `ItemView` subclass — wires everything together. Creates the state and renderer, registers vault/workspace events, and implements all callback handlers for user interactions.
-
----
-
-## Design
-
-```
-VIEW_TYPE_CALENDAR = "ai-pulse-calendar"
-
-class CalendarView extends ItemView:
- - state: CalendarState
- - renderer: CalendarRenderer
-
- getViewType(): "ai-pulse-calendar"
- getDisplayText(): "Calendar"
- getIcon(): "calendar"
-
- onOpen():
- - Initialize state (today, reindex notes)
- - Create renderer with callbacks
- - Register vault events (create, delete, modify, rename) → reindex + re-render
- - Register workspace events (file-open) → update active file highlight
- - Start 60s heartbeat for day rollover
- - Initial render
-
- onClose():
- - renderer.destroy()
- - Clear intervals
-
- Callbacks:
- onClickDay(date, event):
- - If note exists → open it (respecting Ctrl+Click behavior setting — from fork)
- - If not → create (with optional confirmation modal) then open
-
- onClickWeek(date, event):
- - If weekly note exists → open it (future expansion)
- - Same Ctrl+Click behavior setting (from fork)
-
- onClickMonth(date, event): // from fork
- - If monthly note exists → open it
- - If not → create then open (future expansion)
-
- onClickYear(date, event): // from fork
- - If yearly note exists → open it
- - If not → create then open (future expansion)
-
- onClickQuarter(date, event): // from fork
- - If quarterly note exists → open it
- - If not → create then open (future expansion)
-
- onContextMenuDay(date, event):
- - Show file menu (delete, open in new tab, etc.) if note exists
-
- onContextMenuWeek/Month/Year/Quarter(date, event): // from fork
- - Show file menu if note exists for that period
-
- onHoverDay/Week/Month/Year/Quarter(date, targetEl, isMetaPressed): // from fork
- - Trigger link-hover for page preview when Ctrl/Cmd held
-
- revealActiveNote():
- - If active file is a daily note, set displayedMonth to that date
- - Also check weekly, monthly, quarterly, and yearly note formats (from fork)
-```
-
----
-
-## Notes
-
-- Vault events to listen for: `create`, `delete`, `modify`, `rename` — all trigger `state.reindex()` + `renderer.render()`.
-- The `file-open` workspace event updates `state.setActiveFile()`.
-- Ctrl+Click behavior is controlled by the `calendarCtrlClickOpensInNewTab` setting (Phase 5).
-- The confirmation modal before creating a note is controlled by `calendarConfirmBeforeCreate` (Phase 5).
-- Week/month/year/quarter click handlers are initially no-ops (future expansion) except for daily notes.
-- Hover preview uses Obsidian's `link-hover` workspace trigger.