super-productivity/src/app/plugins
Johannes Millan 7d30a646d9 fix(plugins): keep plugin side panel from rendering empty (#8394)
The plugin iframe (srcdoc, v18.10.0) drove its visible UI through tokenless
PLUGIN_MESSAGE round-trips that the host accepted only when
`event.source === this.iframeRef.contentWindow`. Under zoneless change
detection the @ViewChild `iframeRef` is assigned on a later rAF/timeout CD
pass, which can land after the iframe has already posted its first messages.
Those messages were then dropped forever (postMessage is not redelivered) and
useTranslate has no timeout, so the panel stayed blank — intermittently,
depending on how the timing landed.

- Resolve the iframe window from the live DOM (host-scoped querySelector)
  instead of the cached @ViewChild. The iframe must be in the DOM to have
  posted a message, so this always finds it at message time, while staying
  scoped to this component so sibling plugin iframes are not answered.
- Drop the redundant _cleanupIframeCommunication() on fresh mount: it set an
  empty-document srcdoc that forced an extra iframe load + CD pass before the
  real document, widening the race.
- Add PluginIndexComponent spec covering the dropped-message regression and
  cross-iframe isolation.
2026-06-15 15:14:14 +02:00
..
issue-provider build(lint): enforce Log helpers over console.* in src/app (#8239) 2026-06-10 13:08:17 +02:00
oauth refactor(sync-providers): add tiered package exports 2026-05-13 14:11:15 +02:00
store refactor: integrate pfapi into oplog 3 2026-01-07 14:10:05 +01:00
ui fix(plugins): keep plugin side panel from rendering empty (#8394) 2026-06-15 15:14:14 +02:00
util fix(plugins): expose focused task API to iframe plugins (#8291) 2026-06-15 14:57:34 +02:00
allowed-plugin-actions.const.ts test(focus-mode): add unit tests for pomodoro settings dialog 2025-12-12 15:11:10 +01:00
plugin-api-mapper.ts refactor(task): remove deprecated reminderId field 2025-12-12 20:47:40 +01:00
plugin-api.model.ts fix(plugins): return dialog result #5239 (#8106) 2026-06-08 12:14:08 +02:00
plugin-api.spec.ts fix(plugins): expose focused task API to iframe plugins (#8291) 2026-06-15 14:57:34 +02:00
plugin-api.ts fix(plugins): expose focused task API to iframe plugins (#8291) 2026-06-15 14:57:34 +02:00
plugin-bridge-add-task.service.spec.ts feat(plugins): work-context header buttons, embed slot, and WORK_CONTEXT_CHANGE hook 2026-05-22 17:33:12 +02:00
plugin-bridge-counter.service.spec.ts feat(plugins): work-context header buttons, embed slot, and WORK_CONTEXT_CHANGE hook 2026-05-22 17:33:12 +02:00
plugin-bridge-work-context.service.spec.ts feat(plugins): work-context header buttons, embed slot, and WORK_CONTEXT_CHANGE hook 2026-05-22 17:33:12 +02:00
plugin-bridge.service.spec.ts fix(plugins): expose focused task API to iframe plugins (#8291) 2026-06-15 14:57:34 +02:00
plugin-bridge.service.ts fix(plugins): expose focused task API to iframe plugins (#8291) 2026-06-15 14:57:34 +02:00
plugin-cache.service.spec.ts test: strengthen unit test assertions and revive disabled plugin specs (#7755) 2026-05-23 18:31:53 +02:00
plugin-cache.service.ts Accept config schema for uploaded plugin (#7414) 2026-05-01 13:07:50 +02:00
plugin-cleanup.service.spec.ts test: strengthen unit test assertions and revive disabled plugin specs (#7755) 2026-05-23 18:31:53 +02:00
plugin-cleanup.service.ts fix(plugins): load plugin iframe via srcdoc to keep opaque-origin isolation on desktop 2026-06-09 19:07:15 +02:00
plugin-config.service.spec.ts Accept config schema for uploaded plugin (#7414) 2026-05-01 13:07:50 +02:00
plugin-config.service.ts Accept config schema for uploaded plugin (#7414) 2026-05-01 13:07:50 +02:00
plugin-hooks.effects.spec.ts fix(plugin): refresh procrastination buster i18n #5102 (#8145) 2026-06-08 20:44:43 +02:00
plugin-hooks.effects.ts fix(plugin): refresh procrastination buster i18n #5102 (#8145) 2026-06-08 20:44:43 +02:00
plugin-hooks.spec.ts perf(plugins): skip no-op doc-mode saves + rename to doc-mode (#7825) 2026-05-27 17:30:38 +02:00
plugin-hooks.ts perf(plugins): skip no-op doc-mode saves + rename to doc-mode (#7825) 2026-05-27 17:30:38 +02:00
plugin-i18n-date.util.spec.ts test(plugins): add comprehensive i18n tests (Phase 8) 2026-01-16 18:01:50 +01:00
plugin-i18n-date.util.ts feat(plugins): add date formatting utility for i18n (Phase 4 partial) 2026-01-16 17:52:13 +01:00
plugin-i18n.service.spec.ts test: remove useless unit tests 2026-01-23 15:39:09 +01:00
plugin-i18n.service.ts fix(plugins): reactively sync plugin i18n language with global config 2026-01-16 22:34:50 +01:00
plugin-initializer.ts feat(plugin-api): create foundational plugin API package 2025-06-27 18:13:19 +02:00
plugin-loader.iframe-only.spec.ts fix(plugins): allow iframe-only plugin installs 2026-05-18 13:43:22 +02:00
plugin-loader.service.spec.ts test: strengthen unit test assertions and revive disabled plugin specs (#7755) 2026-05-23 18:31:53 +02:00
plugin-loader.service.ts fix(plugins): allow iframe-only plugin installs 2026-05-18 13:43:22 +02:00
plugin-meta-persistence.service.spec.ts fix(plugins): harden nodeExecution grants (#8205) 2026-06-09 18:16:41 +02:00
plugin-meta-persistence.service.ts fix(plugins): harden nodeExecution grants (#8205) 2026-06-09 18:16:41 +02:00
plugin-persistence.model.ts fix(plugins): harden nodeExecution grants (#8205) 2026-06-09 18:16:41 +02:00
plugin-runner.spec.ts fix(plugins): stop leaked timers on plugin disable via onUnload hook (#8286) 2026-06-12 17:09:28 +02:00
plugin-runner.ts fix(plugins): stop leaked timers on plugin disable via onUnload hook (#8286) 2026-06-12 17:09:28 +02:00
plugin-security.ts feat(plugin-api): create foundational plugin API package 2025-06-27 18:13:19 +02:00
plugin-state.model.ts feat(plugin-api): create foundational plugin API package 2025-06-27 18:13:19 +02:00
plugin-user-persistence.service.spec.ts feat(plugins): Stage A keyed persistence with LWW (#7749) (#7763) 2026-05-23 22:23:17 +02:00
plugin-user-persistence.service.ts docs: remove outdated and implemented plan docs 2026-06-08 12:38:51 +02:00
plugin.const.ts feat(plugin-api): create foundational plugin API package 2025-06-27 18:13:19 +02:00
plugin.service.load-from-zip.spec.ts fix(plugins): stop leaked timers on plugin disable via onUnload hook (#8286) 2026-06-12 17:09:28 +02:00
plugin.service.spec.ts fix(plugins): stop leaked timers on plugin disable via onUnload hook (#8286) 2026-06-12 17:09:28 +02:00
plugin.service.ts fix(plugins): stop leaked timers on plugin disable via onUnload hook (#8286) 2026-06-12 17:09:28 +02:00