super-productivity/packages
Johannes Millan 7201eebe85 fix(sync): wrap full-state operation payloads in appDataComplete
SYNC_IMPORT, BACKUP_IMPORT, and Repair operations contain full app state
in their payload. When these operations were downloaded by another client
and applied via applyOperations(), convertOpToAction() was spreading the
payload directly into the action. But reducers expect action.appDataComplete,
so they received undefined and fell back to empty/initial state.

This caused complete data loss (no projects, no tags, tasks in wrong project)
when syncing SYNC_IMPORT operations between clients.

Fix: Add extractFullStatePayload() that wraps the payload in appDataComplete
for full-state operation types, matching what loadAllData action expects.

Also clears file-based storage directories in the clear-data script.
2025-12-12 20:47:48 +01:00
..
plugin-api refactor(task): remove deprecated reminderId field 2025-12-12 20:47:40 +01:00
plugin-dev test(e2e): try to fix e2e tests 2025-12-10 21:26:48 +01:00
shared-schema fix: address code review findings from last 24 hours 2025-12-12 20:47:47 +01:00
super-sync-server fix(sync): wrap full-state operation payloads in appDataComplete 2025-12-12 20:47:48 +01:00
vite-plugin feat(automationPlugin): improve button styles and add copyTo option for plugin output 2025-12-02 13:30:37 +01:00
build-packages.js feat(plugins): enhance plugin packaging and improve file handling logic 2025-11-26 17:45:25 +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