npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@gestaltrun/dsh-plugin-updater

v0.1.1

Published

In-app updates for Gestaltrun product bundles from the Plugins detail page

Readme

插件更新

English | 中文

@gestaltrun/dsh-plugin-updater 为可被更新的 profile 副本覆盖的产品 bundle,在插件详情页提供 更新 控件。Desktop 携带此包并为新 profile 默认启用。更新资格由 Desktop 的产品 bundle 声明经安装清单的 dsh.profile.optionalBundles 派生;更新器不维护另一份包名清单。

使用

打开 插件,再打开产品 bundle。页面向 Host 的 plugin-manager 读取 bundle 清单,并为可覆盖的 bundle 查询注册表的 <package>@latest。当 Host 报告该 bundle 可覆盖(installationVersion)且 latest 的 SemVer 严格高于 profile 加载所选副本时,头部操作区在开关旁显示 更新,标题在版本后显示 有更新。latest 缺失、相同、更低或无法解析时不显示任何内容。领域 bundle peer 不满足的更新 latest 在详情正文显示 需先升级 <包名>(要求 <范围>) 和不兼容版本标签,不提供更新按钮。每个被拒绝的 peer 都会列出,并保留完整版本范围。运行版本拒绝其 DSH peer 的更新 latest 只显示带版本的不兼容标签;悬停或聚焦时列出被拒绝的 peer 和运行版本。

更新 从作答的注册表把所提供的精确版本装入 profile。运行期间,按钮显示 正在更新 并标记为忙碌,取消 请 Host 停止并恢复 profile 文件。取消请求进行中和进入应用阶段后该按钮禁用。成功后要求退出并重新打开,并在版本旁标注 重新打开后生效,因为运行中的 Host 仍持有安装副本的模块和引擎。取消后保留 更新,并在旁边显示 更新已取消。失败时保留更新按钮,并在旁边显示简短原因:版本不兼容、无法连接注册表或其他失败。失败或取消后,当前 Host 恢复操作前保存的 profile 和 overlay 状态:首次安装回到内置选择,更新回到原 overlay 选择。该恢复不承诺完整回滚 hoisted 依赖树。恢复内置版本会移除覆盖根链接及没有其他已安装包引用的 pnpm generations。恢复失败时显示修复诊断。密封安装文件保持不变。

Host 返回的 failed 或 cancelled application 记入 origin localStorage;restart-required 使用 sessionStorage,因此应用重启会丢掉该提示,下一状态重新以 live listBundles 为准。每条脱敏 JSON 不超过 2 KiB,每种存储在一个 origin 最多保留八条。存储键组合稳定 Remote authority、loopback 类别和 $host.home 摘要,但不保存这些值。loopback authority 忽略临时端口,因此重新打开同一应用和 Host home 后,失败或取消会对同一 latest 候选恢复;不同 Host 和 home 仍相互隔离。重建 controller 只会在同一应用会话中恢复 restart-required,并要求 listBundles 仍选中同一 overlay。当前领域 peer 或 DSH peer 拒绝优先于所有已存结果。更新的 latest、不再更高的答复、任何不兼容答复、恢复内置版本 或改选另一 overlay,会在公开 bundle 和 inspection 事实报告变化时清除旧记录。bundle 清单丢失或 $host.home 未就绪时不显示成功。

每次打开页面都会检查,安装运行中或等待重启时除外。Host 调用失败或被拒绝的检查不显示任何内容,报告到浏览器控制台,并在下次打开页面时重新检查。Host 通知 profile 变更且 profile 不再持有覆盖副本时(例如在同一页面执行 恢复内置版本 后),重启提示和标签消失并重新检查,插件页的恢复状态成为唯一的重启提示。列表卡片没有更新标记。

构建与组合

此包发布不带 Gestaltrun 后缀的普通三段 SemVer 版本;Desktop 的归档和插件页使用同一个 manifest 版本。独立工作区位于 product/。运行 pnpm --dir product install --frozen-lockfile --ignore-scripts,再执行 pnpm --dir product run build、test 或 typecheck。pnpm --dir product run pack 将 npm 归档写入 product/dist。Desktop 在 apps/desktop/src/product-profile.ts 中列出此包,该清单同时把它放入安装清单的 dsh.profile.optionalBundles。

Host 半部没有行为。Client 半部注册到插件页的 plugins.detail.actions、plugins.detail.badge 和 plugins.detail.section 槽,调用 pluginManager Remote 的 listBundles、inspect、installBundle、waitForInstall 和 cancelInstall,按自己的请求 id 跟随 plugin-manager/install-state,并在更新等待重启期间于 plugin-manager/changed 时重新读取 bundle 清单。它使用现有 carrier authority 和 ctx.remote.$host,且只用于 origin 记录分区。领域拒绝要求来自 Host 的 accepted inspect 回答中的 incompatibleBundlePeers.peers。Client 使用依赖名和要求范围,不自行判断兼容性。Host 以 installationVersion 报告覆盖资格,该字段由 apps/desktop/src/product-profile.ts 中的 Desktop 声明经安装清单的可选 bundle 派生。在此声明中新增产品 bundle 即可登记,无需修改更新器。不支持覆盖的 Host 不报告 installationVersion,页面因此不提供任何更新。

Model Experience

无。本包只渲染插件页控件,不改变任何模型请求、工具或 Session 事件。

KV Cache effect

无。

Known Limitations and Deferred Work

注册表使用 plugin-manager 的配置;页面不提供注册表选择。详情页不显示安装输出。listBundles.version 是下次启动选中的副本,因此同一已选 overlay 会保持重启提示,直到另一项公开 bundle 清单事实或当前拒绝事实取代它。