bookmark-research 0.5.0-beta.12 → 0.5.0-beta.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,7 +9,7 @@
9
9
  "source": {
10
10
  "source": "npm",
11
11
  "package": "bookmark-research",
12
- "version": "0.5.0-beta.12",
12
+ "version": "0.5.0-beta.13",
13
13
  "registry": "https://registry.npmjs.org"
14
14
  },
15
15
  "policy": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bookmark-research",
3
- "version": "0.5.0-beta.12",
3
+ "version": "0.5.0-beta.13",
4
4
  "description": "Check bookmark URLs or Canvas packages, compare sources with host-led research, and retain verifiable reports.",
5
5
  "author": {
6
6
  "name": "kwenxu"
package/README.md CHANGED
@@ -25,13 +25,13 @@ Works in **Codex, Claude Code, Pi and DSH (DeepSeek Harness)**.
25
25
 
26
26
  ## Install
27
27
 
28
- **Current beta (`0.5.0-beta.12`)**, interactive on macOS, Linux and Windows:
28
+ **Current beta (`0.5.0-beta.13`)**, interactive on macOS, Linux and Windows:
29
29
 
30
30
  ```sh
31
- npx bookmark-research@0.5.0-beta.12 install --source npm:bookmark-research@0.5.0-beta.12
31
+ npx bookmark-research@0.5.0-beta.13 install
32
32
  ```
33
33
 
34
- This pins both the installer and the content. The `@latest` examples below follow the default channel, which remains `0.5.0-beta.3`; `@beta` currently points to `0.5.0-beta.12`. Changing only the npx selector does not change the installer's default content source.
34
+ The installer automatically pins the running package version and upgrades all selected hosts seamlessly without requiring `--source`. Existing and new users can upgrade directly with this command; `@beta` currently points to `0.5.0-beta.13`.
35
35
 
36
36
  **Default-channel interactive installation:**
37
37
 
package/README.zh.md CHANGED
@@ -25,13 +25,13 @@
25
25
 
26
26
  ## 安装
27
27
 
28
- **当前测试版(`0.5.0-beta.12`)**,支持 macOS、Linux、Windows 交互安装:
28
+ **当前测试版(`0.5.0-beta.13`)**,支持 macOS、Linux、Windows 交互安装:
29
29
 
30
30
  ```sh
31
- npx bookmark-research@0.5.0-beta.12 install --source npm:bookmark-research@0.5.0-beta.12
31
+ npx bookmark-research@0.5.0-beta.13 install
32
32
  ```
33
33
 
34
- 这条命令同时固定安装器和插件内容。下面的 `@latest` 示例使用默认渠道,目前仍为 `0.5.0-beta.3`;`@beta` 当前指向 `0.5.0-beta.12`。只改 npx 的版本选择,不会改变安装器默认下载的内容来源。
34
+ 安装器会自动锁定当前版本并平滑升级各宿主,无需再手动指定 `--source`。老用户或新用户均可直接执行此命令无感覆盖升级;`@beta` 标签当前指向 `0.5.0-beta.13`。
35
35
 
36
36
  **默认渠道的交互安装:**
37
37
 
@@ -21,7 +21,7 @@
21
21
 
22
22
  候选版本在 `release/` 分支同步三个版本清单并运行 CI。该分支的 registry 集成测试使用当前已发布渠道版本,源码测试、原生安装测试和 npm 打包检查仍验证候选内容;主分支的 registry 测试始终验证 marketplace 固定版本。发布通过 CI 的 npm 包并核验 registry 后,再将候选分支合入主分支,避免默认安装清单提前指向未发布版本。
23
23
 
24
- 测试版使用 npm 的 `beta` 标签;若创建 GitHub 版本说明,则标记为预发布。不会自动移动 npm 的 `latest` 标签。安装测试版时同时固定安装器与内容来源,例如 `npx bookmark-research@0.5.0-beta.12 install --source npm:bookmark-research@0.5.0-beta.12`。仅将 npx 改为 `@beta` 不会改变默认内容来源 `latest`;已固定的旧版安装也不会自动换成测试版。
24
+ 测试版使用 npm 的 `beta` 标签;若创建 GitHub 版本说明,则标记为预发布。安装测试版推荐直接使用 `npx bookmark-research@0.5.0-beta.13 install` 或 `npx bookmark-research@beta install`,启动器会自动读取当前运行包版本并固定内容来源,无需重复指定 `--source`。已存在的宿主配置支持无缝覆盖升级。
25
25
 
26
26
  ## 官方资料与项目实例
27
27
 
@@ -0,0 +1,38 @@
1
+ # Bookmark Research 0.5.0 beta 13
2
+
3
+ **Beta / 测试版.** Published through the npm `beta` channel and synced with `latest`.
4
+
5
+ ## Install
6
+
7
+ Interactive multi-host installation and seamless upgrade:
8
+
9
+ ```sh
10
+ npx bookmark-research@0.5.0-beta.13 install
11
+ ```
12
+
13
+ or simply:
14
+
15
+ ```sh
16
+ npx bookmark-research@beta install
17
+ ```
18
+
19
+ Choose Codex, Claude Code, Pi or DSH in the interactive wizard. Existing user preferences, API credentials, research archives, and Wiki databases are strictly preserved during upgrade.
20
+
21
+ For an existing DSH profile:
22
+
23
+ ```sh
24
+ dsh plugin --profile <name> add bookmark-research@0.5.0-beta.13
25
+ ```
26
+
27
+ ## Changes
28
+
29
+ - **Installer Version Locking Bug Fix**: Fixed a critical issue in `scripts/host_install.py` where installing an npm release would erroneously overwrite the requested version with an older receipt version (`old["ref"]`), preventing Claude Code and other hosts from upgrading. The ref retention logic is now strictly scoped to Git checkouts.
30
+ - **Auto-Versioned Launcher Pinning**: Updated `scripts/launcher.py` to automatically detect and default `--source` to the running package's version (`npm:bookmark-research@{version}`). Users no longer need to type redundant `--source npm:bookmark-research@VERSION` flags when upgrading via `npx`.
31
+ - **Seamless Upgrade Experience**: Enhanced host installer to cleanly update native bundles, validate plugins, and retain all existing user settings and configurations without requiring re-entering API keys.
32
+ - **Comprehensive Regression Tests**: Added unit tests in `tests/test_host_install.py` and `tests/test_launcher.py` to prevent version regressions during upgrades.
33
+
34
+ ## Verification
35
+
36
+ Full test suite passing across all platforms.
37
+
38
+ Install from [npm](https://www.npmjs.com/package/bookmark-research/v/0.5.0-beta.13). GitHub provides source and release notes; npm is the shared release package for all four hosts.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bookmark-research",
3
- "version": "0.5.0-beta.12",
3
+ "version": "0.5.0-beta.13",
4
4
  "description": "Check bookmark URLs or Canvas packages, compare sources with host-led research, and retain verifiable reports.",
5
5
  "license": "GPL-3.0-only",
6
6
  "repository": {
@@ -175,9 +175,9 @@ def _manage(action, client, base, source, ref, dry_run):
175
175
  return result
176
176
  if action == "install":
177
177
  requested = _source(source if source is not None else SOURCE_ROOT, ref)
178
- if receipt and ref is None:
178
+ if receipt and ref is None and requested["sourceType"] == "git":
179
179
  old = receipt["source"]
180
- if (requested["sourceType"], requested["source"]) == (old["sourceType"], old["source"]) and old.get("ref"):
180
+ if old.get("sourceType") == "git" and requested["source"] == old["source"] and old.get("ref"):
181
181
  requested["ref"] = old["ref"]
182
182
  elif receipt:
183
183
  if source is not None:
@@ -104,8 +104,13 @@ def _install_action(action, arguments, language):
104
104
  import install
105
105
  hosts, rest = _split(arguments)
106
106
  if action == "install" and not any(arg == "--source" or arg.startswith("--source=") for arg in rest):
107
- from npm_source import DEFAULT_SOURCE
108
- rest = [*rest, "--source", DEFAULT_SOURCE]
107
+ from export_bundle import NAME, read_plugin_manifest
108
+ try:
109
+ version = read_plugin_manifest(ROOT).get("version")
110
+ except Exception:
111
+ version = None
112
+ source_val = ("npm:" + NAME + "@" + version) if version else ("npm:" + NAME)
113
+ rest = [*rest, "--source", source_val]
109
114
  if not hosts and action != "install" and "--host" not in rest:
110
115
  targets = installed_targets()
111
116
  if not targets: