chore: remove the image-asset feature (Image widget + kip-plugin image service) - #112
Conversation
…settings UI Also drops the now-stale image-asset-client reference from the kept signalk-plugin-url util doc comment. Part of #107. Closes #108. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018zURudCY3TTRcNd2acknJ9
Part of #107. Closes #109. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018zURudCY3TTRcNd2acknJ9
Removes multer, sharp, isomorphic-dompurify, and heic-convert — all added by the image PR (upload / image processing / SVG sanitize / HEIC transcode) and now orphaned after the widget + kip-plugin image code was deleted. Also deletes the image screenshot e2e harness. Part of #107. Closes #110. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018zURudCY3TTRcNd2acknJ9
Part of #107. Closes #111. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018zURudCY3TTRcNd2acknJ9
1ca3a63 to
4cc8e3a
Compare
Review synthesisIndependent 3-lens review (completeness / keep-list regression / adversarial), each a fresh-context agent, with adversarial verification of blocking findings. 0 blocking, 0 high. Findings (both fixed, folded into the atomic commits — see force-push below):
Keep-list verified intact by the review: Force-push note: the branch was rewritten ( Re-verified locally: lint clean, |
Implements the plan in #107. Removes the imported image-asset feature (upstream Kip #1080/#1081/#1082 → Skip #54/#50/#62) in full.
Why
Signal K has no reusable image/media API to lean on (the Resources API is JSON-only; charts and
sk-videoserve binary via their own plugin routes). The feature carries a heavy security surface (SVG-upload sanitization, multipart upload, worker pool), and the right long-term shape is a standalonesk-mediaplugin — mirroring how the Video widget already consumes the externalsk-videoplugin. So: remove now, recreate later viask-media. This PR does not build that plugin.What (4 atomic commits)
ImageAssetService, image config UI,kip-plugin-url.util; un-wire the widget registry, the settings Media tab, theimage?config field, the root-modal image tab, the help entry, and theimageWidgeticon.kip-plugin/src/images/+ its tests; un-wirekip-plugin/src/index.ts(image store init,registerImageRoutes, image imports, orphanednodePath).multer,sharp, andisomorphic-dompurify(the last was added by the image PR for SVG sanitization and is now orphaned — a refinement over the plan, which named only multer/sharp); delete the image e2e harness.Kept (verified intact)
signalk-plugin-url.util.ts(used bysk-video+ the kip history client), all Video/sk-videocode, all history/series code.No migration
A dashboard with an existing Image widget degrades to a graceful "failed to load" placeholder —
WidgetService.getComponentType()returnsundefinedfor an unknown selector andwidget-host2guards on it (setsloadFailed), so no crash and no config-upgrade step is needed. Documented in the changelog.Verification
npm run lintclean;npm run build:devclean (full type-check).npm run build:pluginclean;npm run test:plugin60/60 pass.Closes #107. Follow-ups (separate): file
sk-mediatracking issue; reconcile #106; update #76.🤖 Generated with Claude Code
https://claude.ai/code/session_018zURudCY3TTRcNd2acknJ9