Skip to content

Full Calendar Changelog

This page provides a detailed breakdown of every version of the Full Calendar plugin, including new features, improvements, and bugfixes.

Version 0.12.7.1

New Features

  • Asynchronous Event Discovery Pipeline
    The core synchronization engine has been rewritten to eliminate UI freezes and dramatically improve load performance.
    • Re-architected ProviderRegistry remote discovery into a true Stage 1 → Stage 2 pipeline.
    • Stage 2 for each provider now begins immediately after its own Stage 1 completes, removing the previous global Promise barrier.
    • Enables background pipelining and significantly reduces perceived startup time.

Improvements & Fixes

  • Local Provider Concurrency
    Improved I/O throughput and removed unnecessary blocking during startup.

    • Parallelized Local Provider Stage 1 reads using Promise.all instead of sequential for..of iteration.
    • Prevents main-thread stalls during large vault scans.
  • EventCache Optimization
    Removed expensive diffing operations that caused major slowdowns on large datasets.

    • Eliminated O(N) JSON.stringify comparisons in EventCache.syncCalendar when cache size changes significantly (e.g., Stage 2 replacing Stage 1 data).
    • Added short-circuit invalidation logic to bypass redundant comparisons.
  • Selective UI Reconciliation
    Replaced full calendar teardown cycles with targeted updates.

    • Updated EventCache and CalendarView flush callbacks to accept an affectedCalendars array.
    • Replaced removeAllEventSources() with selective removeEventSource / addEventSource operations for dirty calendars only.
    • Fully resolves prior 1–3 second UI freezes during large refreshes.
  • DailyNoteProvider Algorithm Fix
    Eliminated a critical O(N²) bottleneck in event resolution.

    • Removed full Vault Daily Note cache iteration from getEventHandle.
    • Events now resolve purely by date string.
    • ProviderRegistry securely injects authoritative location.path metadata before write/delete operations.
  • Performance Audit Results
    Benchmark run on 1000+ Daily Note events and 69 Google Calendar events.

    • Daily Note Stage 1: 1209.1ms → 110.8ms (~11x faster)
    • Daily Note Stage 2: 2839.4ms → 143.3ms (~20x faster)
    • Remote Stage timings remain steady while now starting earlier in the pipeline.
    • Total two-stage discovery: 4880.9ms → 908.9ms (>5x faster overall)
    • Complete elimination of observable main-thread UI freezing on load.
  • Linting & Type Safety
    Strengthened long-term maintainability and compliance.

    • Enforced ESLint rules for UI string formatting consistency.
    • Improved TypeScript type safety across core components.
    • Refactored related modules to align with stricter linting and safer type contracts.

Version 0.12.7

  • Local ICS Support
    You can now view .ics files stored directly in your Obsidian vault!

    • Added a mode toggle for standard Web URLs versus Vault relative files.
    • Extended provider interfaces to safely support the app.vault API.
  • Timezone & DST Hardening (#194)
    The timezone pipeline has been modularized and significantly hardened for recurring events crossing Daylight Saving Time boundaries.

    • Removed luxon entirely in favor of native and internal logic.
    • Corrected floating time expansion, EU/US DST transitions, and half-hour/45-min offset zones.
    • Restored dynamic display timezone toggles.
    • Fixed missing DTSTART/EXDATE alignment in RRule passthrough.
  • Staged Loading Architecture
    Dramatic startup performance and UI responsiveness improvements.

    • Providers now load events in two stages: Stage 1 quickly fetches a 3-month window surrounding the current date, while Stage 2 quietly loads the full history in the background.
    • Eliminates UI locking when CalDAV or Google APIs stall or time out on huge event caches.
  • Linting & Code Quality
    The codebase has been migrated to standard eslint.config.mjs and native eslint-plugin-obsidianmd.

    • Refactored 80+ warnings across 18 core files.
    • Eliminated thousands of unsafe any usages and tightened type safety for caching and Google Auth.
    • Safeguarded tests with mocked vaults and standard JS generic mocks.
  • General UI Fixes (#169, #191, #214, #218)
    Fixed LiveSync header injections by targeting contentEl, improved mobile responsiveness across fullcalendar views, improved edit modal error namespace, and added proper API error handling for HTTP POST timeouts.


Version 0.12.6

Thanks to @kapej42 and @mivanit for the incredible contributions in this release!

  • Full CalDAV Two-Way Sync (#205)
    CalDAV calendars are no longer read-only! You can now create, edit, and delete events directly in Obsidian, and changes will sync back to your CalDAV server.

  • Mobile Workspace Support (#203)
    Workspaces are now fully accessible on mobile!

    • Added workspace button to footer toolbar on mobile/narrow views.
    • Improved menu handling and truncated labels for better fit.
    • Renamed button from WS ▾ to Workspace ▾ for clarity.
  • Mobile Monthly View (#201)
    You can now access the monthly view on mobile devices via the view dropdown or workspace settings.

  • Rich Read-Only Modal (#205)
    The event details modal for read-only events has been upgraded to show rich information including descriptions, attendees, and more, matching the editing experience.

  • ICS Parsing & Date Validation (#199, #203)
    Major hardening of the ICS parser for better compatibility and stability:

    • Timezones: Map Windows timezones (e.g., W. Europe Standard Time) to IANA identifiers, fixing issues with Outlook/Exchange calendars falling back to UTC.
    • Date Handling: Convert YYYYMMDD dates to ISO format, validated skip dates in recurring events, and handled all-day events more robustly.
    • Validation: Added defensive checks to prevent RangeError: Invalid time value crashes and improved error logging.
  • Google Calendar Settings (#204)
    Fixed an issue where the Google Calendar settings menu for credentials was not displaying correctly.

  • Title Parsing (#203)
    Fixed category parsing to prevent false positives (e.g., "anything - Red Hat One") and now shows the full title when no category is defined.

  • Other Fixes

    • Scheduler license key is now only included when the resource-timeline plugin is loaded.
    • Updated CONTRIBUTING.md standards.

Version 0.12.5

  • CalDAV validation and parsing (#193)
    CalDAVProvider now validates calendar collections with PROPFIND, parses calendar-data via DOMParser, adds JSDOM-backed tests, and surfaces clearer errors when a URL is not a calendar collection.

  • Provider initialization and cache refresh (#173)
    Providers call initialize() after construction, load events into the cache with completion callbacks, adjust load priorities, and resync event sources without a full calendar rebuild.

  • Google auth and recurring timezone handling (#191, #190, #94)
    Mobile OAuth opens windows synchronously to avoid popup blockers; recurring Google events now honor exdates and BYDAY across timezones, correctly hiding deleted instances and preserving durations across DST.

  • ChronoAnalyser data integrity and Bases provider
    ChronoAnalyser pulls from the main EventStore with corrected category/project parsing, and you can now add an Obsidian Bases calendar (with a guard to enable the Bases plugin first).


Version 0.12.4

  • CalDAV and Provider Architecture Refactor (#cc01102)
    The calendar source/provider system has been refactored for modularity, reliability, and easier extension. CalDAV support is now more robust and easier to configure.

  • Multi-Language (i18n) Support
    Full Calendar now supports multiple languages. The UI will automatically switch based on your Obsidian language setting. Developers can add new translations via the i18n system with type-safe keys.

  • Provider Registry and Error Handling
    Provider registry logic has been improved for better calendar source management and error handling. Adding new calendar types is now simpler and safer.

  • Documentation and Translation Files
    Updated documentation and added instructions for contributing new translations. See i18n documentation.


Version 0.12.3.1-beta

  • Tasks Provider Rearchitected for Performance and Precision (#151, #155)
    The Tasks provider is now powered by the official Tasks plugin's live cache, eliminating manual vault scans and delivering instant updates. Edits are now "surgical," preserving user metadata like links, tags, and comments when scheduling or completing tasks.

  • Robust and Stable Settings UI (#141)
    The settings panel has been refactored for stability. The color picker no longer loses focus on changes, and a new CalendarSettingRow component ensures a consistent and reliable layout for all calendar sources.

  • Provider-Specific Task Completion (#143, #144)
    The toggleComplete logic is now abstracted, allowing calendar providers to implement their own custom behavior for completing tasks.

  • ICS Timezone Fallback (#91)
    Remote ICS calendars with unrecognized timezones will now safely fall back to UTC instead of failing to load.


Version 0.12.3

  • Deep Tasks Integration with Backlog & Filtering (#122, #128, #136)
    Full Calendar now has first-class support for the Obsidian Tasks plugin. A new "Tasks" calendar source syncs your tasks directly onto the calendar. Features include a dedicated task backlog, drag-and-drop rescheduling, and in-calendar completion. Create, update, and delete tasks without leaving the calendar view.

  • Advanced Date Navigation (#106)
    Navigate your calendar with precision using the new "Go To" dropdown in the toolbar. It features a reusable DatePicker and context-aware navigation. Right-click on the calendar to jump to a specific month, week, or day.

  • Task Management Workflow & Parsing (#132, #134, #138)
    The Tasks integration includes advanced parsing for dated and undated tasks, multi-day event support, and custom status detection. A new setting allows stripping tags from task titles for a cleaner display. The entire parsing logic is covered by a comprehensive test suite for maximum reliability.

  • Performance & Stability
    The plugin now performs surgical updates on file changes instead of full-vault rescans, significantly improving performance in large vaults. Remote calendars now load in a non-blocking, priority-ordered manner, and race conditions during event source removal have been fixed.

  • Provider Architecture
    The provider registry now loads calendars with priority and uses a new isFileRelevant() hook for cleaner file-change handling. "Manage calendar" logic has been delegated to the respective providers for better modularity.

  • Notification and Reminder Reliability
    End-time reminders now fire correctly for events that are already in progress, ensuring you never miss the end of an important block of time.

  • Core Component Stability (#100, #101, #126)
    Fixed numerous bugs, including a race condition when removing event sources, an issue preventing the create modal from appearing if no editable calendars exist, and a bug where the Daily Notes calendar would fail without a template. New calendars now appear instantly in settings without a "Provider not found" flash.


Version 0.12.2 (beta)

  • Multi-day Daily Note events with explicit endDate
    Daily Note calendar now supports explicit multi‑day events via [endDate:: YYYY-MM-DD] while remaining backward compatible with legacy overnight detection.

  • Central TimeEngine
    Single timer maintains a sorted time-sensitive cache and publishes a time-tick event consumed by status bar, notifications, and other listeners.

  • Status Bar current/upcoming events
    Lightweight status bar UI subscribes to TimeEngine to surface what's happening now and next.

  • Interactive time‑axis zoom (#96)
    Ctrl/Cmd + scroll to dynamically zoom the vertical (timeGrid) or horizontal (resourceTimeline) axis for fast focus changes.

  • Advanced recurrence intervals & positional monthly rules (#97)
    Support for interval-based repeats (e.g., every 2 weeks) and positional monthly rules (2nd Tuesday, last Friday) with iCal import/export parity.

  • Codebase compliance & safety
    Replaced loose any casts, moved inline styles to CSS, added instanceof guards for file/folder objects, removed custom leaf detaching on unload.

  • Reactive calendar view lifecycle
    view-config-changed now triggers targeted cache repopulation and a new resync event prompts precise re-renders for snappier UI updates.

  • NotificationManager refactor
    No internal timer; now a passive subscriber to TimeEngine, reducing duplicate intervals and simplifying lifecycle management.

  • Robust timezone conversion for cross-day events
    convertEvent rewritten as a pure function; correctly handles explicit endDate and legacy overnight semantics with stricter type guards.


Version 0.12.1 (beta)

  • Event Reminder System with Desktop Notifications (BETA)
    Introducing the NotificationManager for native desktop notifications. Users can opt-in to receive reminders 10 minutes before events start and, optionally, 10 minutes before they end. Perfect for never missing important meetings or deadlines.

  • Multi-Account Google Calendar Integration
    Google Calendar integration now supports connecting and managing multiple accounts simultaneously. Features a dedicated account management hub with a streamlined two-step wizard for adding new calendars from any connected account.

  • Provider-Based Architecture with Multi-Account Support
    Complete architectural overhaul to a provider-based system where each calendar source (Local, Daily Notes, ICS, CalDAV, Google) is a self-contained, instanced provider. The new ProviderRegistry acts as a central persistence gateway, managing all I/O and abstracting storage details. This enables stateful features and robust multi-account Google Calendar integration.

  • Event-Driven Settings with Instant Updates
    Settings persistence refactored to a publish/subscribe model. The saveSettings function now diffs old vs new state and publishes granular events (sources-changed, view-config-changed, settings-updated). Calendar views re-render instantly without flicker or unnecessary reloads.

  • Lazy-Loading for Faster Startup Performance
    Heavy dependencies are now dynamically imported only when needed: FullCalendar engine loads when opening a calendar view, React modals load on demand. This dramatically reduces startup time and memory usage.

  • Centralized Event Enhancement Pipeline
    New EventEnhancer module centralizes all timezone conversions and category parsing, essentially intercepting all raw events befor it reaches the Cache. Business logic extracted into dedicated stateless modules with a new WorkspaceManager handling all workspace filtering and display logic.

  • Timezone Handling for Recurring Events #94
    Recurring events now properly handle timezones with endDate support, resolving timezone branching issues and ensuring correct time display across different time zones.

  • ICS events now loads properly #91
    Parsing issues in Remote ICS calendar is fixed and should now load properly.


Version 0.11.9

  • Calendar Workspaces (#90)
    Save and switch between customized calendar setups (sources, filters, and view preferences). Workspaces include a header switcher, a command palette action ("Full Calendar: Switch Workspace"), and an optional default workspace on startup. Saved state covers selected sources (Local, Daily Notes, ICS, CalDAV, Google), category/sub‑category filters, tasks visibility, all‑day toggle, initial view (month/week/day/timeline), week start, and time‑grid display options.

  • Faster Switching and Rendering
    Workspace application is incremental (sources → filters → view) to avoid full calendar rebuilds. Switching preserves context where possible (e.g., scroll/selection) and significantly improves responsiveness on large vaults.

  • Workspace Management UX
    Add Save as Workspace, Rename, Delete in the calendar header menu; set a Default Workspace in Settings; and assign hotkeys through Obsidian’s Hotkeys for one‑press switching.

  • Edit Modal Sub‑category Parsing
    Fixes a regression where sub‑categories could disappear when editing the title in the modal. The title parser now consistently preserves the Category - SubCategory - Title format on save.

  • Workspace Persistence Edge Cases
    Improved robustness when loading a workspace that references a removed or renamed source. Adds safe fallbacks to an "All Events" view and clearer status messaging.


Version 0.11.8

  • Business Hours and Background Events Support
    Highlight working hours in calendar views and display events as background highlights (e.g., vacations or focus blocks). Configurable via settings and event frontmatter.

  • Timeline View Category Shadow Events (#76)
    Adds optional display of category shadow events in Timeline View for better visual context and planning.

  • Real-Time Duplicate Event Validation (#67)
    Prevents creation of duplicate events in the calendar interface, improving scheduling accuracy.

  • Edit Modal Now Supports Subcategory Editing
    The "Edit Event" modal now parses and displays sub-categories directly in the event title. Users can edit them inline and changes are preserved.

  • Settings Modal Reorganization and Footer
    UI updates include reorganized settings for better clarity, hover hints for display options, and a new footer for versioning and help links.

  • Configuration Migration for Legacy Support
    Legacy settings like subprojectKeywords_exclude are migrated automatically, and missing fields (e.g., persona) are filled safely.

  • Type Safety and Safer DOM Manipulations (#69, #71)
    Removed unsafe type assertions across key modules (DailyNoteCalendar, GoogleCalendar, interop) and introduced robust DOM update utilities (safeCreateEl, safeEmpty).

  • Recurring Task Completion Preserves Child Timing (#75)
    Undoing completed recurring tasks now correctly retains the timing of override events. Adds full test coverage for various edge cases.

  • All-Day Events Treated as Floating in RRULE
    All-day recurring events now behave correctly as floating events, fixing unintended start time offsets.

  • Coverage for Business Hours, Background Events, and Override Logic
    New test suites validate schema correctness, UI rendering, and recurring timing behavior.


Version 0.11.7

  • Full Google Calendar Integration with Two‑Way Sync
    Connect your Google account to create, modify, and delete events (including recurring events) directly in Obsidian. Includes OAuth 2.0 authentication, calendar selection, and proper token refresh handling.

  • Centralized and Reusable Form Components
    Inputs like URL, Username, Password, Directory Select, and Heading have been refactored into dual‑mode primitives with a readOnly mode for consistent display. A generic TextInput replaces one‑off components.

  • Modularized Settings Tab and Changelog Component
    Settings sections are now organized into dedicated renderers with improved type safety. A new Changelog.tsx component has been added for clearer update visibility.

  • Unified Event Parsing Pipeline
    Calendar parsers now output raw events without settings dependencies and pass them through a single enhanceEvent function for category logic. Tests have been updated to separately verify raw parsing and enhancement.

  • Modular Event Cache Management
    The EventCache logic is split into dedicated modules (RemoteCacheUpdater, LocalCacheUpdater, IdentifierManager, RecurringEventManager), making synchronization and recurring event handling more reliable.

  • Daily Note Calendar Parsing and Cache Update Logic
    Parsing bugs in DailyNoteCalendar have been fixed, and modifyEvent now correctly flags dirty events to ensure the UI updates when frontmatter changes (e.g., skipDate).

  • Codebase Refactor for Type Safety and Maintainability
    Shared types and utilities have been centralized, internal names clarified, and redundant code removed—all without changing user‑facing behavior.


Version 0.11.6

  • Advanced Categorization with Hierarchical Timeline View
    Events can now be organized by categories and sub-categories in a new Resource Timeline view. Expandable groups and aggregated parent rows make it easier to manage complex schedules.

  • Drag-and-Drop Category Reassignment
    Change an event’s category or sub-category directly from the timeline view by dragging it to a different lane. Titles and metadata update automatically.

  • Cleaner UI and Initial View Options
    The event modal and settings UI have been polished with dropdown options and a new initial view setting that supports the timeline view.

  • Smarter Event Titles and Filenames
    Events now display clearer titles (e.g., SubCategory - Event Name) while keeping filenames and internal data consistent.

  • Multi-Level Category Parsing
    Parsing of event titles with multiple category levels (e.g., Category - SubCategory - Title) has been fixed, ensuring correct category and sub-category assignment.

  • License Update
    The plugin license has been updated to GPLv3 to comply with FullCalendar requirements.


Version 0.11.5-beta

  • Monthly and Yearly Recurring Events
    You can now create events that repeat every month or every year — perfect for things like anniversaries, billing cycles, or project reviews.

  • Smarter "Repeats" Menu in Event Modal
    The old "Recurring" checkbox is gone. Instead, use a new dropdown to choose from Weekly, Monthly, or Yearly recurrence. The UI updates dynamically to match your selection.

  • Human-Friendly Filenames for Recurring Notes
    Recurring event notes now get cleaner, more descriptive names like (Every year on July 30th) My Event.md.

  • Enhanced Timezone and All-Day Support
    Timezone handling for recurring events is now more accurate, and All-Day events display correctly across time boundaries.

  • Right-Click Task Toggle for Recurring Tasks
    Recurring tasks can now be marked as complete using the right-click menu, just like one-off tasks.

  • Safer Rendering and UI Cleanups
    Removed use of unsafe HTML injection in the UI. Improved event rendering, loading states, and general UI responsiveness.


Version 0.11.4

  • Smarter Recurring Events and Tasks
    Recurring events can now be edited per-instance — drag, resize, or complete a task without affecting the whole series. Changes are reversible and tracked cleanly.

  • Safe Deletion with Confirmation Options
    Deleting a recurring event now asks whether to remove just one instance, the entire series, or promote existing edits to standalone events.

  • Better Task Behavior for Repeating Events
    Recurring tasks now behave just like regular ones — you can check them off individually, and they show up correctly in the calendar.

  • Multi-day all-day events fix by @yalikebaz
    Multi-day all-day events made inclusive for local calendars. Thanks to @yalikebaz for the fix!

  • Performance and Architecture Improvements
    Refactored recurring event logic, improved performance on large calendars, and cleaned up the plugin architecture to prepare for future features.


Version 0.11.3

  • Insights Engine has smarter Dashboard with Personas
    Adding persona (predefined rules like "Productivity", "Routine") to Categories in Insight Config Setting now cater to more powerful analysis.

  • Insights Panel and Dashboard Bugfixes
    Multiple bugfixes and UI adjustments focused on the Insights panel.


Version 0.11.2

  • Insights Engine in ChronoAnalyser
    New intelligent engine that can analyse your calendar for past events and give you cool insights.

  • Redesigned ChronoAnalyser UI/UX
    Chronoanalyser now much more elegant. Check it using the Analysis button in the Full-Calendar Window.

  • Multiple Bugfixes in ChronoAnalyser
    Make ChronoAnalyser more stable and reliable. Plotting and Insights now work more reliably.


Version 0.11.1

  • Category Coloring Engine and Settings UI
    A new optional setting, 'Enable Category Coloring,' allows you to color events based on a category defined in the event's title (e.g., 'Work - Project Meeting'). This overrides the default calendar color for fine-grained visual organization.

  • Category-Aware Event Modal
    The Edit/Create Event modal now features a dedicated 'Category' input field. It provides intelligent autocomplete suggestions based on all your previously used categories, making categorization fast and consistent.

  • Redesigned Event Modal UI/UX
    The Edit/Create Event modal has been completely redesigned with a polished two-column layout, logical grouping of fields, and a dedicated footer for actions, improving clarity and ergonomics.

  • Color Palette Enhancements
    Colors no longer default to black, but are now rotated from a carefully chosen Palette.

  • "Open Note" Workflow Enhancement
    Clicking 'Open Note' in the modal now opens the note in a split view, improving calendar-note navigation.


Version 0.10.13-beta

  • Robust Timezone Support
    Events from local and remote calendars are now fully timezone-aware, fixing bugs related to DST and travel.

  • Strict Timezone Mode for Daily Notes
    A new setting allows users to anchor daily note events to a specific timezone, just like regular notes.

  • Correctly Parse UTC Events from ICS Feeds
    Fixed a critical bug where events specified in UTC from Google Calendar and other sources would appear at the wrong time.


Version 0.10.8

  • ChronoAnalyser Released
    ChronoAnalyser can now analyse your time spending! Check the new Analysis button in the Full-Calendar Window.

Version 0.10.7

  • Initial Plugin Release
    Welcome to the first version of the enhanced Full Calendar!

For a summary of major features, see What's New.