super-productivity/packages/plugin-dev/sync-md
Johannes Millan d4d81bf511 feat(plugin-api): create foundational plugin API package
- Add @super-productivity/plugin-api package with TypeScript definitions
- Define core plugin interfaces, types, and manifest structure
- Add plugin hooks system for event-driven architecture
- Create plugin API type definitions and constants
- Add documentation and development guidelines
2025-06-27 18:13:19 +02:00
..
scripts feat(plugin-api): create foundational plugin API package 2025-06-27 18:13:19 +02:00
src feat(plugin-api): create foundational plugin API package 2025-06-27 18:13:19 +02:00
temp feat(plugin-api): create foundational plugin API package 2025-06-27 18:13:19 +02:00
.gitignore feat(plugin-api): create foundational plugin API package 2025-06-27 18:13:19 +02:00
build-plugin-entry.js feat(plugin-api): create foundational plugin API package 2025-06-27 18:13:19 +02:00
jest.config.js feat(plugin-api): create foundational plugin API package 2025-06-27 18:13:19 +02:00
package-lock.json feat(plugin-api): create foundational plugin API package 2025-06-27 18:13:19 +02:00
package.json feat(plugin-api): create foundational plugin API package 2025-06-27 18:13:19 +02:00
README.md feat(plugin-api): create foundational plugin API package 2025-06-27 18:13:19 +02:00
tsconfig.json feat(plugin-api): create foundational plugin API package 2025-06-27 18:13:19 +02:00
vite.config.ts feat(plugin-api): create foundational plugin API package 2025-06-27 18:13:19 +02:00

Sync.md Plugin (Solid.js Version)

A SuperProductivity plugin that syncs markdown files with project tasks, now built with Solid.js for better performance and maintainability.

Features

  • Bidirectional Sync: Sync changes from markdown to project and vice versa
  • One-way Sync Options: Choose to sync only from file to project or project to file
  • Conflict Detection: Detects when both file and project have changed
  • Real-time Monitoring: Watches markdown files for changes
  • Modern UI: Built with Solid.js for a responsive, reactive interface

Sync Logic

The plugin uses a sophisticated bidirectional sync algorithm that:

  1. Tracks Changes: Maintains checksums of tasks and file content to detect changes
  2. Detects Conflicts: Identifies when both sides have modified the same task
  3. Preserves Hierarchy: Maintains task/subtask relationships during sync
  4. Handles Deletions: Marks tasks for deletion rather than removing them

Development

# Install dependencies
npm install

# Development server
npm run dev

# Build for production
npm run build

# Package as plugin
npm run package

Testing Sync Logic

# Run sync logic tests
npx tsx test-sync-logic.ts

Architecture

  • src/App.tsx - Main Solid.js application component
  • src/syncLogic.ts - Core bidirectional sync algorithm
  • plugin.js - Plugin entry point that integrates with SuperProductivity
  • index.html - HTML template for the plugin UI

Sync Directions

  • Bidirectional: Changes sync both ways with conflict detection
  • File → Project: Markdown file is the source of truth
  • Project → File: SuperProductivity project is the source of truth