super-productivity/packages
Johannes Millan 100b8af5f2 fix(sync): return existingClock in conflict rejections to fix infinite loop
When encryption is enabled, clients could get stuck in infinite conflict
resolution loops because they couldn't create vector clocks that dominate
the server's state. The server already computed the existingClock during
conflict detection but didn't return it to the client.

This fix:
- Adds existingClock to UploadResult type (server)
- Returns conflict.existingClock in CONFLICT_CONCURRENT/CONFLICT_STALE rejections
- Passes existingClock through client upload service to rejected ops handler
- Merges entity clocks into extraClocks for stale operation resolution

Includes E2E tests for encryption + conflict resolution scenarios.
2026-01-25 18:10:08 +01:00
..
plugin-api fix(sync): restore missing force upload button in new config UI 2026-01-19 13:58:23 +01:00
plugin-dev 17.0.2 2026-01-25 13:50:41 +01:00
shared-schema fix(migrations): ensure unique IDs and prevent data loss in split operations 2026-01-20 17:07:23 +01:00
super-sync-server fix(sync): return existingClock in conflict rejections to fix infinite loop 2026-01-25 18:10:08 +01:00
vite-plugin feat(plugins): add i18n support to boilerplate-solid-js 2026-01-16 22:34:50 +01:00
build-packages.js fix(build): check for real packages in node_modules, not just folder existence 2026-01-24 21:14:57 +01:00
README.md feat: cleanup and update plugins 2 2025-06-29 06:36:02 +02:00

Super Productivity Packages

This directory contains plugin packages and the plugin API for Super Productivity.

Structure

  • plugin-api/ - TypeScript definitions for the plugin API
  • plugin-dev/ - Plugin development examples and tools
    • api-test-plugin/ - Basic API test plugin
    • procrastination-buster/ - Example SolidJS-based plugin
    • yesterday-tasks-plugin/ - Simple plugin showing yesterday's tasks
    • boilerplate-solid-js/ - Template for creating new SolidJS plugins (not built)
    • sync-md/ - Markdown sync plugin (not built)

Building Packages

All packages are built automatically when running the main build process:

npm run build:packages

This command:

  1. Builds the plugin-api TypeScript definitions
  2. Builds plugins that require compilation (e.g., procrastination-buster)
  3. Copies plugin files to src/assets/ for inclusion in the app

Development

To work on a specific plugin:

cd plugin-dev/[plugin-name]
npm install
npm run dev

Adding a New Plugin

  1. Create a new directory in plugin-dev/
  2. Add the plugin configuration to /packages/build-packages.js
  3. Run npm run build:packages to test the build

Notes

  • The boilerplate-solid-js and sync-md plugins are development templates and are not included in production builds
  • Plugin files are automatically copied to src/assets/ during the build process
  • The build script handles dependency installation automatically