Replace all 51 flagged .style.<property> assignments across 3 source files with
API-compliant alternatives. Dynamic color writes (3 sites in viewRenderers.ts and
CalendarView.ts) and dynamic height writes (3 sites in CalendarView.ts) now use
setCssProps({ color })/setCssProps({ height }). The display-toggle in
updateCalendarVisibility migrates to classList.toggle("memochron-hidden", hide)
on calendar, resizeHandle, and controls, and classList.toggle("agenda-only", hide)
on agenda. Color-input overlay clusters (2 sites in SettingsTab.ts) lose 14 inline
style lines each — wrapper geometry moves to the existing
.memochron-inline-color-custom-label rule; overlay geometry moves to a new
.memochron-inline-color-input rule. Error-message, help-button, doc-link, and
button-container inline-style lines are deleted in favour of augmented or new CSS
rules. styles.css gains .memochron-hidden, .memochron-help-buttons, plus
augmentations to .memochron-error-message, .memochron-help-btn,
.memochron-help-doc-link, .memochron-inline-color-custom-label, and
.memochron-inline-color-input. DIR-03 grep now returns zero matches across src/.
The optional ENH-03 corner-square note-indicator painted itself with
var(--interactive-accent), which is the same color the cell background
uses when the day is .selected. The indicator silently disappeared on
the user's most-interrogated day — the currently-selected day.
Add a combined-state override that re-colors the indicator to
var(--text-on-accent) when its parent day cell is .selected, so it
survives the accent background. This is the descendant-selector analog
of the WR-02 today-ring fix shipped in 04-06 (commit 12e9f3b), applied
to the note-indicator instead of the today-ring.
Closes the only remaining gap from 04-VERIFICATION.md:
- VERIFICATION truth #3 (note-indicator visible on selected day):
FAILED -> VERIFIED
- ROADMAP success criterion #3 (ENH-03 grid corner-square indicator)
- 04-REVIEW.md CR-01 (BLOCKER)
Scope: one additive CSS rule in styles.css; no TypeScript changes,
no new settings, no new files, no new dependencies.
- Switch .memochron-event-note-indicator from margin-left:auto (no-op on block parent)
to absolute positioning anchored to the existing .memochron-agenda-event
position: relative parent
- Add position: absolute, top: var(--size-4-2), right: var(--size-4-2)
- Remove ineffective margin-left: auto
- Update inline comment to document the layout strategy
- .memochron-agenda-event and the colored ::before left-border rule are unchanged
- Closes WR-01 gap from 04-VERIFICATION.md; flips truth #2 from FAILED to VERIFIED
Implementation choice: absolute positioning over flex (REVIEW.md Option B) is a one-rule
diff that preserves the existing vertical time/title/location block stack and avoids
touching the parent rule that the ::before colored border also anchors against.
- Add .memochron-day.today.selected rule with box-shadow inset 0 0 0 2px var(--text-on-accent)
- Keep existing .memochron-day.today rule unchanged for the today-not-selected case
- Fix misleading comment that claimed the single rule already survived the accent background
- Closes WR-02 gap from 04-VERIFICATION.md; flips truth #1 from FAILED to VERIFIED
Implementation choice: combined .today.selected override preserves the verified-clean
unselected-today appearance (D-03) and only switches color in the dual-state case.
- Agenda rows always show a trailing lucide icon: file-check when a note
exists for the event, file-plus when no note exists (ENH-02, ROADMAP #2)
- Calendar grid cells optionally show a small accent-colored corner-square
when the day contains at least one event with a note; toggled by new
showNoteIndicatorOnGrid setting, default off (ENH-03, ROADMAP #3)
- Post-create re-render on sidebar (showEventDetails) and embedded agenda
(handleEventClick) surfaces: icon flips from file-plus to file-check
immediately after note creation without manual reload (cross-surface
parity per ENH-01 D-02 precedent)
- Per-surface duplication honored: shared renderers in viewRenderers.ts,
sidebar private methods in CalendarView.ts, and embedded views all updated
- New toggle setting wired in SettingsTab with saveSettings + refreshCalendarView
- CSS adds .memochron-note-indicator (square, border-radius 1px, accent color)
and .memochron-event-note-indicator (inline-flex icon spacing) using theme
variables only
- Add inset accent ring on .memochron-day.today via box-shadow: inset 0 0 0 2px var(--interactive-accent)
- Inset form paints inside the cell border, on top of any background including the .selected accent fill
- Today and selected states now show simultaneously per ROADMAP success criterion #1
- Placed immediately before the existing .today .memochron-day-header rule; no other rules changed
- Zero TypeScript changes: createDayElement already applies .today on both sidebar and embedded surfaces
- detect incorrect Google Calendar URL formats (public link, embed, app link)
- show helpful error message with "How do I get the correct URL?" button
- add help modal with instructions for Google, Outlook, and iCloud calendars
- update README with detailed Google Calendar setup instructions
- fixes#57
Fixes#50 - Date header now stays at top of scroll container so events don't 'pop out' above it.
Changes:
- Add position: sticky and top: 0 to date header
- Add background color to prevent content showing through
- Add z-index to keep header above events
- Add padding-top for visual balance
Features added:
- memochron-calendar code blocks for embedding calendar views in notes
- memochron-agenda code blocks for embedding agenda views in notes
- Support for dynamic properties including this.file.name for date extraction
- Flexible date parsing supporting multiple filename formats
- Responsive CSS styling for embedded views
- Navigation controls for embedded calendars
- Multi-day agenda support with customizable parameters
Example usage:
```memochron-calendar
month: 2025-02
```
```memochron-agenda
date: this.file.name
days: 7
```
Version bump to 1.8.0
- Create new Daily notes section in settings above Notes section
- Add daily note dots on calendar dates that have daily notes
- Use obsidian-daily-notes-interface for reliable daily note detection
- Daily note dots are bold and use configured color when colors enabled
- Show daily note dots on calendar regardless of agenda display setting
- Support multiple dots (daily note + events) on same date
Daily notes now have visual indicators on the calendar grid, making it easy
to see which days have notes at a glance.
- Add setting to show daily note in agenda (disabled by default)
- Add configurable color for daily note when calendar colors are enabled
- Style daily note entry to match regular calendar events
- Add color picker UI before toggle switch in settings
- All-day events now treated as timezone-agnostic and stay on correct date
- Added isAllDay field to CalendarEvent interface
- Agenda view shows 'All day' instead of times for all-day events
- Styled all-day indicator with accent color
- Fixed all-day event detection for both VALUE=DATE and jCal formats
- Replace slider-based picker with visual color spectrum
- Click on spectrum to select hue and saturation
- Separate lightness bar for brightness control
- Keep hex input for precise color entry
- Add 8 quick color presets for common colors
- Live preview shows selected color
- Better UX following Obsidian design patterns
- Drag ICS files directly onto the agenda view to create notes
- Only single-event ICS files are supported (multi-event files show error)
- Visual feedback shows drop zone when dragging over agenda
- Events are parsed with proper timezone support
- Notes are created immediately without adding to calendar sources
This allows quick note creation from meeting invites without cluttering the calendar.
Per user request, removed the path type badges that showed whether a calendar source was remote, local, or vault-relative. The file picker button remains for easy ICS file selection.
- Fix timezone conversion for recurrence exceptions
- Fix type safety: use PathInfo type instead of any
- Fix Windows path detection to support forward slashes (C:/)
- Fix file URL normalization for Windows (file:///C:/) and Unix
- Add safety check for setTimeout DOM manipulation in settings
- Add CSS fallback for themes without --interactive-success variable
- Improve error message handling when response.text is undefined
- Add path detection utility to identify URL types (HTTP, file://, vault-relative, absolute)
- Update CalendarService to read local files using Obsidian vault API
- Add file picker button in settings for easy ICS file selection
- Add visual indicators showing path type (remote/local/vault)
- Support multiple path formats:
- Remote URLs (http://, https://)
- File URLs (file:///)
- Vault-relative paths (calendar/events.ics)
- Absolute paths (/Users/path/to/file.ics)
This addresses the first part of issue #18 - allowing users to use local ICS files stored in their vault or file system.