Commit graph

50 commits

Author SHA1 Message Date
formax68
7cd13a880d refactor(views): replace inline styles with CSS classes and setCssProps (DIR-03)
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/.
2026-05-13 21:33:07 +03:00
formax68
8279e6065f fix(styles): contrasting note-indicator when day is also selected (CR-01)
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.
2026-05-12 18:09:05 +03:00
formax68
af16a91e27 fix(styles): anchor agenda note-indicator to top-right via absolute positioning (WR-01)
- 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.
2026-05-12 17:30:55 +03:00
formax68
12e9f3ba50 fix(styles): today-ring contrast when today is also the selected day (WR-02)
- 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.
2026-05-12 17:30:17 +03:00
formax68
3900d29480 feat(views): note-exists indicators in agenda and on calendar grid (ENH-02, ENH-03, #56)
- 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
2026-05-12 16:53:44 +03:00
formax68
e160cef092 feat(styles): persistent today indicator on calendar grid (ENH-01, #55)
- 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
2026-05-12 16:42:36 +03:00
Michalis Efstratiadis
99d26a9508
add URL validation guardrail for incorrect calendar URLs
- 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
2026-02-02 14:43:49 +02:00
Michalis Efstratiadis
fe246bca0b
1.12.0 visual improvements on the calendar 2026-01-28 17:45:49 +02:00
Michalis Efstratiadis
cb6d42e8cc
good visuals 2026-01-28 17:19:12 +02:00
Michalis Efstratiadis
1f27aff545
issue #53 fixes 2026-01-28 16:58:56 +02:00
Michalis Efstratiadis
4d44b925cd
style: format transition properties for better readability in styles.css 2026-01-26 21:31:51 +02:00
Michalis Efstratiadis
daf8f90c15 fix: make agenda date header sticky when scrolling
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
2026-01-26 21:15:09 +02:00
Michalis Efstratiadis
c8c324efb0
Fix Remove calendar button vertical alignment
Add min-height and align-items to vertically center the button
within its row, and remove margin-top that was pushing it down.
2026-01-24 08:28:35 +02:00
Michalis Efstratiadis
dfe16a1290
Fix calendar settings text padding
Add horizontal padding to setting items inside calendar details
so text labels aren't flush against the gray background edge.
2026-01-24 08:12:50 +02:00
Michalis Efstratiadis
70dadd44dd
Remove deprecated settings CSS 2026-01-23 19:49:28 +02:00
Michalis Efstratiadis
93b0c9f20b
Add compact checkbox list CSS and remove old calendar list box 2026-01-23 19:30:18 +02:00
Michalis Efstratiadis
edf567e767
Add collapsible calendar item CSS styles 2026-01-23 19:29:47 +02:00
Michalis Efstratiadis
ffeceec380
Add collapsible section CSS styles 2026-01-23 19:29:10 +02:00
Michalis Efstratiadis
56dc051056
Add CSS for calendar visibility toggles 2026-01-23 16:34:38 +02:00
Michalis Efstratiadis
75bda67994 Fix embedded agenda scrolling issue (#50)
- Add flexbox layout to embedded agenda container
- Enable overflow-y scrolling for agenda content
- Add custom scrollbar styling
- Fix scrolling when events exceed max-height
2026-01-22 10:33:59 +02:00
Michalis Efstratiadis
019644baf7
Add dataview-like codeblock functionality for embedded calendar and agenda views
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
2025-09-28 14:44:37 +03:00
Michalis Efstratiadis
1ce64de41b
initial imlementation 2025-09-08 12:44:01 +03:00
Michalis Efstratiadis
414e984cce
Add daily note indicators to calendar view
- 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.
2025-06-28 06:24:15 +03:00
Michalis Efstratiadis
e9bcbf2251
Add daily note entry to agenda view
- 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
2025-06-26 17:36:04 +03:00
Michalis Efstratiadis
98f6691a6a
Fix all-day events and improve agenda display
- 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
2025-06-17 23:13:36 +03:00
Michalis Efstratiadis
83ebd89b3f
Enhance color picker with base colors and improved UX
- Replace named color options with visual color swatches
- Add 12 carefully selected calendar-appropriate colors including theme accent
- Implement two-step color selection: base colors first, custom picker optional
- Fix CSS variable resolution issues in modal context
- Add responsive grid layout (6 columns desktop, 4 mobile)
- Simplify UI with clean swatch-only interface
- Maintain full custom color wheel functionality with back navigation
2025-06-14 11:31:22 +03:00
Michalis Efstratiadis
38b9299873
Add visual color picker with spectrum selection
- 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
2025-06-14 07:00:48 +03:00
Michalis Efstratiadis
6bd6d2f684
colours in calendars 2025-06-10 14:48:00 +03:00
Michalis Efstratiadis
74f8492991
Merge branch 'feature/customizable-folder-templates' 2025-06-02 12:06:38 +03:00
Michalis Efstratiadis
ce620b2bfb
Add customizable folder path templates for note organization
Implements flexible date-based subfolder system with 13 template variables:
- Date variables: {YYYY}, {YY}, {MM}, {M}, {MMM}, {MMMM}, {DD}, {D}, {DDD}, {DDDD}, {Q}
- Event variables: {source}, {event_title}
- Live preview in settings UI with validation
- Backwards compatible (empty template preserves current behavior)
- Comprehensive documentation and examples in README

Addresses GitHub issue #22 for organizing notes in date subfolders.
2025-06-01 10:26:41 +03:00
Michalis Efstratiadis
1273c9945a
Add drag and drop support for single event ICS files
- 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.
2025-05-29 14:49:56 +03:00
Michalis Efstratiadis
cbaa211186
Remove visual path type indicators from settings
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.
2025-05-29 14:22:04 +03:00
Michalis Efstratiadis
965bf3dca4
Fix bugs in timezone handling and local file support
- 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
2025-05-29 14:18:32 +03:00
Michalis Efstratiadis
13aca6c302
Add support for local ICS files in calendar sources
- 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.
2025-05-29 14:06:56 +03:00
Michalis Efstratiadis
68fe883539
calendar is now toggable 2025-05-28 11:57:40 +03:00
Michalis Efstratiadis
d749feea13
calendar is independant of the agenda view 2025-05-28 11:41:23 +03:00
Mike
8a5c4d09ab
made a new class for settings-item 2025-05-01 17:45:57 +03:00
Mike
1decba454e
changed the dot to be a bit higher 2025-04-23 17:09:08 +03:00
Mike
34d37566ef
trying hard to make it compatible with themes 2025-04-23 11:35:39 +03:00
Mike
cfb17fed60
button styling 2025-04-19 19:51:01 +03:00
Mike
186a9f0d20
button styling 2025-04-19 19:45:38 +03:00
Mike
f714fa49de
removed hardcoded values 2025-04-19 07:44:15 +03:00
Mike
7ff1247a05
Renamed generic .suggestion-container classes to .memochron-suggestion-container to prevent coflicts with Obsidian Tasks auto-suggestions. 2025-04-15 16:29:17 +03:00
Mike
34bbe5864c
Version 0.13.1: Fix suggestion container visibility 2025-04-12 07:23:17 +03:00
Mike
15195a3739
ready to submit? 2025-04-11 17:11:28 +03:00
Mike
222cb96571
mute past events 2025-04-11 11:26:08 +03:00
Mike
0c0673fd4c
styling 2025-04-11 10:09:37 +03:00
Mike
7238f75a97
fixed issues with note creation under subfolders 2025-04-10 22:32:57 +03:00
Mike
6b04f08a94
we have something working 2025-04-10 22:17:21 +03:00
Mike
be84ec0b5b
initial commit 2025-04-10 21:20:01 +03:00