Skip to content

Releases: VatsalSy/RemindersSync

v3.5 - URL Parsing Fix

07 Oct 05:48
b8199c8

Choose a tag to compare

What's Changed

  • Fix URL parsing to handle spaces in task titles (closes #5)
  • Ignore CLAUDE.md, AGENTS.md, .claude and other CLI tools' instruction .md files.

Compatibility

  • macOS 13+ (Ventura)
  • Compatible with macOS 26 (Tahoe)

Installation

sudo ./install.sh

Full Changelog: v2.0...v3.0

🚀 RemindersSync v2.0: Your Swift Bridge Between Obsidian & Apple Reminders 🚀

23 Dec 05:06
29db370

Choose a tag to compare

RemindersSync v2.0 Release Notes

v2.0 - Enhanced Tag Filtering and Bug Fixes

What's New in v2.1

  • Enhanced #cl Tag Filtering: Improved tag detection with symmetric boundary matching to prevent false positives
  • File Path Normalization: Fixed file path handling for consistent task mapping across different systems
  • Robust Tag Detection: Added comprehensive testing and validation for #cl tag filtering
  • Bug Fixes: Resolved issues with UID assignment to filtered tasks and improved error handling

Improvements Since v1.75

Tag Filtering Enhancements

  • Symmetric Boundary Matching: #cl tag detection now uses word boundaries to prevent false positives like "include" or "classical"
  • Comprehensive Testing: Added extensive unit tests for tag detection edge cases
  • Consistent Filtering: All tools now use the same improved tag detection logic
  • Performance: Optimized regex patterns for faster tag filtering

Bug Fixes

  • Fixed file path normalization that could cause inconsistent task mapping
  • Prevented UID assignment to tasks that should be filtered out
  • Improved error handling in tag detection
  • Enhanced boundary detection to avoid matching partial words

Commands Overview

All commands from v1.75 remain available with improved reliability:

  1. RemindersSync - Full bidirectional sync between vault and Apple Reminders
  2. ScanVault - One-way sync from Obsidian to Reminders
  3. ExportOtherReminders - Two-way sync for non-vault reminders
  4. ReSyncReminders - Clean vault for fresh sync
  5. CleanUp - Remove completed tasks while preserving incomplete ones

Installation

Quick start remains the same:

git clone https://github.com/vatsalag09/RemindersSync.git
cd RemindersSync
swift run RemindersSync /path/to/vault

For system-wide installation:

sudo ./install.sh

v1.75 - Major Feature Release

What was new in v1.75

  • ReSyncReminders: New tool for preparing vault for a fresh sync by removing all task IDs and completed tasks
  • CleanUp: New tool that removes only completed tasks while preserving incomplete tasks with their IDs
  • Automated Installation: Added install.sh and uninstall.sh scripts for easier system-wide installation
  • Enhanced Cleanup: CleanUp tool now removes tasks deleted from Obsidian but still present in Apple Reminders

Overview

RemindersSync is a Swift-based command-line suite for maintaining bidirectional task synchronization between an Obsidian vault and Apple Reminders. It respects completion states, preserves due dates, and maintains consistent task IDs across both systems.

Features

  • Bidirectional Sync: Keeps tasks coherent between your vault and an Apple Reminders list (same name as vault)
  • Selective Integration: Does not interfere with other Reminders lists unless explicitly configured
  • Task ID Preservation: Maintains unique IDs in both systems to avoid duplications
  • State Management: Tracks mappings using lightweight JSON databases (._RemindersMapping.json, ._TaskDB.json)
  • Task Filtering: Automatically excludes tasks with #cl tag from all sync operations
  • Vault Maintenance: Tools for cleaning completed tasks or preparing for fresh sync

Commands

1. RemindersSync

Full two-way sync of tasks between your vault and the matching Reminders list.

swift run RemindersSync /path/to/vault

2. ScanVault

One-way sync from your vault to a Reminders list. Does not pull completion status back into Obsidian.

swift run ScanVault /path/to/vault

3. ExportOtherReminders

Syncs all non-vault tasks to a dedicated _AppleReminders.md file and back.

swift run ExportOtherReminders /path/to/vault
swift run ExportOtherReminders /path/to/vault --cleanup

4. ReSyncReminders (New)

Prepares vault for a fresh sync by removing all task IDs and completed tasks.

swift run ReSyncReminders /path/to/vault
# Then run RemindersSync to complete the fresh sync
swift run RemindersSync /path/to/vault

5. CleanUp (New)

Removes only completed tasks while preserving incomplete tasks with their IDs.

swift run CleanUp /path/to/vault

Installation

Quick Start

git clone https://github.com/vatsalag09/RemindersSync.git
cd RemindersSync
swift run RemindersSync /path/to/vault

System-Wide Installation

Automated (New)

sudo ./install.sh
# To uninstall:
sudo ./uninstall.sh

Manual

swift build -c release
sudo cp .build/release/RemindersSync /usr/local/bin/obsidian-reminders
sudo cp .build/release/ScanVault /usr/local/bin/obsidian-scan
sudo cp .build/release/ExportOtherReminders /usr/local/bin/obsidian-export
sudo cp .build/release/ReSyncReminders /usr/local/bin/obsidian-resync
sudo cp .build/release/CleanUp /usr/local/bin/obsidian-cleanup

Then run from anywhere:

obsidian-reminders /path/to/vault
obsidian-scan /path/to/vault
obsidian-export /path/to/vault
obsidian-resync /path/to/vault
obsidian-cleanup /path/to/vault

Usage Notes

  • Grant permission to access Reminders upon first run
  • _AppleReminders.md stores your non-vault tasks
  • List-specific tasks sync back to the same list in Apple Reminders
  • Use the --cleanup flag if you see duplicates
  • Keep task IDs intact—do not edit them manually
  • Tasks with #cl tag are automatically excluded from syncing
  • Use ReSyncReminders for a complete fresh start, CleanUp to just remove completed tasks

Known Limitations

  • Works best with the task plugin using minimal customization (keep custom date entry and similar options unchecked)

License

Distributed under GPLv3. You're free to use, modify, and distribute this work under the same license.


Enjoy seamless task management between Obsidian and Apple Reminders! ✨