mirror of
https://github.com/johannesjo/super-productivity.git
synced 2026-07-17 16:37:43 +00:00
A v18.14 snapshot (schema v2) lacks globalConfig.idle.isSuppressIdleDuring FocusMode, which #8965 added as a required field without its own schema bump. Upgrading bumps the snapshot onto the v2->v4 migration path, whose validation gate — uniquely, the only validator that runs on the RAW snapshot before the loadAllData reducer can backfill defaults, and the only one that is fatal rather than repair-or-tolerate — rejects it. Hydration then aborts, recovery refuses because a snapshot still exists, and the app boots to an empty store, deterministically, every launch. Two fixes: - v2->v3 migration backfills the opt-in default (false) when the field is not already a boolean (never clobbering a real user choice), so the migrated snapshot validates and a clean v4 snapshot persists immediately. - The migration-path state-validation gate is now non-fatal: on failure it rolls the on-disk cache back to the pre-migration backup (never persisting an unvalidated snapshot) but returns the migrated snapshot for reducer-healed hydration, instead of throwing into disaster recovery. Genuinely corrupt state is still caught at Checkpoint C and not persisted. Metadata-validation failures remain fatal. Both paths are sabotage-tested to fail without their fix. A known follow-up (noted in code) can persist a fresh snapshot after any migration-then-valid hydration so the safety-net path converges in one boot instead of re-migrating each launch for a not-yet-backfilled field. |
||
|---|---|---|
| .. | ||
| 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