Commit graph

6 commits

Author SHA1 Message Date
Johannes Millan
0e9218bd68 fix(sync): handle data validation errors and improve client ID management
- Separate JsonParseError and SyncDataCorruptedError handlers in sync wrapper
- Handle corrupted remote data gracefully instead of throwing
- Add getOrGenerateClientId() as unified entry point, eliminating dual injection
  of ClientIdService + CLIENT_ID_PROVIDER in snapshot-upload, file-based-encryption,
  and sync-hydration services
- Use crypto.getRandomValues() instead of Math.random() for client ID generation
- Warn user when stored client ID is invalid and must be regenerated
- Fix flaky e2e supersync tests (premature waitForURL match on daily-summary URL)
2026-04-16 17:41:39 +02:00
cpa2027
c678db23c8
Update TOKEN description in en.json (#7205) 2026-04-13 16:51:56 +02:00
Johannes Millan
31480a5fab feat(tasks): replace drag handle with done toggle circle and improve mobile UX
- Replace drag handle with SVG done-toggle circle with checkmark draw-on animation
- Improve mobile UX: cdkDragStartDelay for touch, bottom-sheet context menu
- Move issue/repeat indicators from drag handle to tag-list as chips
- Add isFinishDayEnabled config toggle
- Reorder context menu: add sub task before duplicate, deadline as own entry
- Fix context menu not opening on swipe left
- Fix race condition in done toggle animation timeout
2026-03-22 18:14:16 +01:00
Johannes Millan
7441eb9713 fix(plugins): improve error handling for GitHub issue creation and sync
GitHub API returns 404 instead of 401/403 when authentication is
missing or insufficient. Add token validation, catch 401/403/404
responses with actionable translated error messages, and surface
error details in snack notifications for both auto-create and
two-way sync push failures.
2026-03-10 19:06:00 +01:00
Johannes Millan
30cbb4d7a6
fix(build): ensure plugin-api is built before plugin builds (#6720)
* fix(build): ensure plugin-api is built before plugin builds

The github-issue-provider plugin build was failing in CI because
plugin-api/dist/ didn't exist when tsc --noEmit ran. The dist/ directory
is gitignored and only built during the prepare lifecycle, which may not
run reliably in all CI contexts. Adding plugin-api:build to the
plugins:build script ensures the type declarations are always available.

Also improved error logging in build-all.js to show stderr on failure.

https://claude.ai/code/session_01StB1pMk1g2k79AywyksoyZ

* fix(build): remove tsc --noEmit from github-issue-provider build

The github-issue-provider was the only plugin running tsc --noEmit as
part of its build command. In CI, TypeScript module resolution fails for
the file: dependency on plugin-api due to npm workspace hoisting
interference. All other plugins (ai-productivity-prompts,
procrastination-buster, sync-md) skip type-checking during build and
rely on esbuild to strip type-only imports.

Align with existing plugin pattern by separating build from typecheck.
Also improve error logging in build-all.js to capture stdout on failure.

https://claude.ai/code/session_01StB1pMk1g2k79AywyksoyZ

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-04 11:25:21 +01:00
Johannes Millan
6a78913177 feat(plugins): add plugin issue provider system with GitHub migration
Add a plugin-based issue provider architecture that allows plugins to
register as issue providers alongside the existing built-in providers.

- Plugin API: types for search, display, comments, two-way sync, and
  field mappings in @super-productivity/plugin-api
- Registry service to manage plugin provider lifecycle
- HTTP proxy with SSRF protection for plugin network requests
- Adapter service implementing IssueServiceInterface for plugins
- Sync adapter for plugin-based two-way sync
- Plugin config UI in the issue provider edit dialog
- Plugin providers shown in setup overview and issue panel

Migrate GitHub from built-in to plugin as first proof:
- Bundled github-issue-provider plugin with full feature parity
- Reducer migration converts old GitHub data to plugin format while
  preserving legacy fields for cross-version compatibility
- Auto-enable plugin when existing GitHub providers are detected
- Plugin registers under 'GITHUB' key via MigratedIssueProviderKey
- GitHub translations moved to plugin i18n bundles

Mark Two-Way Sync as experimental in the UI.
2026-03-03 20:14:54 +01:00