Skip to content

Add Astrojorn/redstone-graph-view#1838

Open
Astrojorn wants to merge 1 commit into
siyuan-note:mainfrom
Astrojorn:main
Open

Add Astrojorn/redstone-graph-view#1838
Astrojorn wants to merge 1 commit into
siyuan-note:mainfrom
Astrojorn:main

Conversation

@Astrojorn
Copy link
Copy Markdown

If you are submitting a new bazaar package for the first time, please confirm the following information.

  • The repository is public
  • Include the appropriate open source license file LICENSE
  • Does not involve infringing content, such as non-commercial font files

If your marketplace package is closed-source, please grant @TCOTC, @88250, and @Vanessa219 access to the source code so that we can complete the review.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 17, 2026

Pull Request Check Report

Add 1 Plugin Repo

Astrojorn/redstone-graph-view

  • Release that must exist
  • Files that must exist
  • Attributes that must exist in plugin.json
    • name
      • The attribute exists
      • Is a valid name
      • Not conflict with other plugin name
    • version
    • author
    • url

@TCOTC
Copy link
Copy Markdown
Collaborator

TCOTC commented May 18, 2026

Please upload the plugin archive named package.zip to Latest release.

@TCOTC TCOTC changed the title Update plugins.txt Add Astrojorn/redstone-graph-view May 18, 2026
@Astrojorn
Copy link
Copy Markdown
Author

package.zip has been added to the latest release.

@TCOTC TCOTC self-requested a review May 19, 2026 04:48
@TCOTC TCOTC added the Check Run PR Check workflow label May 19, 2026
@github-actions github-actions Bot removed the Check Run PR Check workflow label May 19, 2026
@TCOTC
Copy link
Copy Markdown
Collaborator

TCOTC commented May 19, 2026

初步审核

以下是 AI 的审核结论,请开发者确认并修复之后回复,然后维护者会进行人工审核。

版本: v3.5.0 (commit: 03c862f)

发现的问题

  • funding 为空对象 (plugin.json:25):"funding": {} 没有子字段,建议从 plugin.json 中删除。
  • preview.png 超过 200KB 限制:实际大小为 317KB(324,506 字节),建议压缩至 200KB 以下。
  • 缺少 uninstall() 方法:插件使用 saveData() 存储配置(语言、位置、钉选状态等),但没有实现 uninstall() 方法来调用 removeData() 清理持久化数据。当用户完全卸载插件后,配置数据会残留在 petal 存储中。
  • onunload() 中调用了 saveData()_savePrefs()(第 1622 行)在 onunload() 中被调用,可能会在禁用或更新插件时导致同步冲突。应在 onunload() 中移除数据持久化逻辑。
  • _tabWatchObs MutationObserver 未在 onunload() 中断开:该观察者挂载在 document.body(第 384 行)上,属于全局元素。面板移除后该观察者仍然存活,应在 onunload() 中调用 _tabWatchObs?.disconnect()
  • 部分 document 级事件监听未在 onunload() 中清理:拖拽操作的 mousemove/mouseup 监听器(如第 2128、2329 行)注册在 document 上,面板 DOM 移除后这些监听器仍然存在。

需要维护者人工验证

  • 安装并测试图谱可视化功能(聚类检测、数据库节点、本地图谱等)
  • 测试 D3 物理引擎滑块(距离、聚类强度、斥力)实时调节
  • 验证钉选模式(Pin mode)跨会话持久化
  • 验证全屏、最小化/最大化、设置面板等 UI 交互
  • 验证键盘快捷键 Alt+Shift+G / Alt+G
  • 验证设置中切换语言(5 种语言)
  • 验证禁用/启用插件后界面正常恢复
  • 验证更新重载流程(onunload → onload → onLayoutReady)
  • 验证浏览器端兼容性(仅声明 desktop 前端,无需测试 mobile/browser-desktop)

检查通过

  • nameauthorurlversionminAppVersion 字段完整且正确
  • name 与仓库名一致(redstone-graph-view)
  • url 指向正确的 GitHub 仓库地址
  • keywords 不含 "siyuan"
  • displayName 不含 "Siyuan" 品牌名
  • backends["all"](合理)
  • frontends["desktop"](合理,不声明不支持的前端)
  • readme 字段列出的 README.md 存在于 zip 中
  • plugin.json 中无 i18n 字段(正确,框架自动加载)
  • icon.png 小于 20KB(1.8KB)
  • 插件使用自定义 SVG 图标(非内置图标)
  • README 中无相对路径链接
  • README 中未嵌入 preview.png
  • LICENSE 文件存在于 zip 中(MIT,版权年份 2025)
  • zip 内部路径均使用正斜杠 /
  • zip 中无 node_modules.git 等多余文件
  • console.log 仅出现在生命周期函数中(实际未发现)
  • loadData()onload() 中仅调用一次并缓存
  • 未使用 this.eventBus(无需清理)
  • keydown 事件监听器已正确在 onunload() 中移除
  • 未使用 window.location.reload()(正确)
  • 未使用 ipcRenderer(无 Electron IPC 需清理)
  • 未调用 addCommand()(无需清理)
  • 自定义属性使用了 custom- 前缀

Preliminary Review

The following is the AI's review conclusion. Please confirm and fix the issues before replying, then the maintainer will conduct a manual review.

Version: v3.5.0 (commit: 03c862f)

Issues Found

  • Empty funding field (plugin.json:25): "funding": {} has no sub-fields. Remove the empty object from plugin.json.
  • preview.png exceeds 200KB limit: Actual size is 317KB (324,506 bytes). Compress to under 200KB.
  • Missing uninstall() method: The plugin uses saveData() to persist configuration (language, position, pin state, etc.) but has no uninstall() method calling removeData() to clean up stored data. When users fully uninstall the plugin, configuration data will remain in petal storage.
  • saveData() called in onunload(): _savePrefs() (line 1622) is invoked within onunload(), which may cause sync conflicts on disable/update. Remove data persistence logic from onunload().
  • _tabWatchObs MutationObserver not disconnected in onunload(): This observer is attached to document.body (line 384), a global element. It remains alive after panel removal. Call _tabWatchObs?.disconnect() in onunload().
  • Document-level event listeners not cleaned up in onunload(): mousemove/mouseup listeners for drag operations (e.g., lines 2128, 2329) are registered on document and persist after the panel DOM is removed. These should be explicitly removed in onunload().

Needs Manual Verification

  • Install and test graph visualization features (cluster detection, database nodes, local graph, etc.)
  • Test D3 physics engine sliders (distance, cluster strength, repulsion) in real time
  • Verify pin mode persistence across sessions
  • Verify fullscreen, minimize/maximize, and settings panel UI interactions
  • Verify keyboard shortcuts Alt+Shift+G / Alt+G
  • Verify language switching in settings (5 languages)
  • Verify clean UI restoration after disable/enable cycle
  • Verify update/reload flow (onunload → onload → onLayoutReady)
  • Browser compatibility not required (desktop-only frontend)

Passed

  • All required manifest fields present and correct (name, author, url, version, minAppVersion)
  • name matches repo name (redstone-graph-view)
  • url points to the correct GitHub repository
  • keywords do not contain "siyuan"
  • displayName does not contain "Siyuan" brand name
  • backends set to ["all"] (reasonable)
  • frontends set to ["desktop"] (accurate, no unsupported frontends claimed)
  • readme field lists README.md which exists in the zip
  • No i18n field in plugin.json (correct — framework auto-loads)
  • icon.png under 20KB (1.8KB)
  • Custom SVG icon used (not a built-in SiYuan icon)
  • No relative-path links in README
  • No embedded preview.png in README
  • LICENSE included in zip (MIT, copyright 2025)
  • All zip internal paths use forward slash /
  • No unnecessary files in zip (node_modules, .git, etc.)
  • console.log appropriately limited (none detected in bundled code)
  • loadData() called once in onload() and cached
  • No this.eventBus usage (no cleanup needed)
  • keydown event listener properly removed in onunload()
  • No window.location.reload() usage (correct)
  • No ipcRenderer usage (no Electron IPC cleanup needed)
  • No addCommand() calls (no cleanup needed)
  • Custom attributes use custom- prefix correctly

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants