mirror of
https://github.com/johannesjo/super-productivity.git
synced 2026-07-17 16:37:43 +00:00
* build: drop unused elevate.exe from Windows build #8135 elevate.exe is bundled by electron-builder's NSIS target solely so electron-updater can apply privileged per-machine updates. We ship no in-app auto-updater (electron-updater is not a dependency; the autoUpdater block in electron/start-app.ts is commented out), so the binary is unused dead weight and a frequent AV false-positive. Set packElevateHelper: false to stop bundling it; safe because perMachine is not true. * fix(caldav-plugin): make recurring-occurrence edits/deletes safe and quiet #7492 Expanded RRULE occurrences all share one master .ics, so operating on a single occurrence hit the whole series: updateIssue rewrote the master (and the next poll pulled it onto every sibling), deleteIssue deleted the master (the entire series), and getById returned the master's DTSTART, collapsing every instance onto the first one's time. Plugin: - parseCompoundId surfaces occurrenceMs instead of discarding it - getById re-anchors start/end onto the requested occurrence (timed via toIcalUtcDateTime, all-day via toIcalDate matching ical.js local-midnight) - updateIssue/deleteIssue refuse occurrence writes with a marked error (isExpectedSyncSkip), so the series is never mutated Host two-way sync: - editing or deleting a task linked to one occurrence now stays silent (the user changed their task, not the calendar) and the local change still applies. Explicit agenda reschedule/delete keep surfacing the honest "can't change a single occurrence" message (no false success). Single non-recurring events are unaffected. Full per-occurrence editing (RECURRENCE-ID overrides + EXDATE) remains a follow-up; it needs an If-Match primitive and recurrence-value preservation. |
||
|---|---|---|
| .. | ||
| plugin-api | ||
| plugin-dev | ||
| shared-schema | ||
| super-sync-server | ||
| sync-core | ||
| sync-providers | ||
| vite-plugin | ||
| build-packages.js | ||
| README.md | ||
Super Productivity Packages
This directory contains plugin packages and the plugin API for Super Productivity.
Structure
plugin-api/- TypeScript definitions for the plugin APIplugin-dev/- Plugin development examples and toolsapi-test-plugin/- Basic API test pluginprocrastination-buster/- Example SolidJS-based pluginyesterday-tasks-plugin/- Simple plugin showing yesterday's tasksboilerplate-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:
- Builds the plugin-api TypeScript definitions
- Builds plugins that require compilation (e.g., procrastination-buster)
- 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
- Create a new directory in
plugin-dev/ - Add the plugin configuration to
/packages/build-packages.js - Run
npm run build:packagesto test the build
Notes
- The
boilerplate-solid-jsandsync-mdplugins 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