handoff-mcp-server 0.19.0 → 0.19.1
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.
- package/Cargo.lock +3 -3
- package/Cargo.toml +2 -2
- package/package.json +1 -1
- package/scripts/sync-plugin-version.sh +85 -0
package/Cargo.lock
CHANGED
|
@@ -136,7 +136,7 @@ dependencies = [
|
|
|
136
136
|
|
|
137
137
|
[[package]]
|
|
138
138
|
name = "handoff-mcp"
|
|
139
|
-
version = "0.19.
|
|
139
|
+
version = "0.19.1"
|
|
140
140
|
dependencies = [
|
|
141
141
|
"anyhow",
|
|
142
142
|
"chrono",
|
|
@@ -208,9 +208,9 @@ dependencies = [
|
|
|
208
208
|
|
|
209
209
|
[[package]]
|
|
210
210
|
name = "lexsim"
|
|
211
|
-
version = "0.
|
|
211
|
+
version = "0.4.0"
|
|
212
212
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
213
|
-
checksum = "
|
|
213
|
+
checksum = "14b08f26a4b07325e83c0211adb36d0223fae644534dacd4eae72153c1ccd873"
|
|
214
214
|
dependencies = [
|
|
215
215
|
"unicode-normalization",
|
|
216
216
|
"unicode-segmentation",
|
package/Cargo.toml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "handoff-mcp"
|
|
3
|
-
version = "0.19.
|
|
3
|
+
version = "0.19.1"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
description = "MCP server that gives AI coding agents persistent memory across sessions"
|
|
6
6
|
license = "MIT"
|
|
@@ -20,7 +20,7 @@ toml_edit = "0.22"
|
|
|
20
20
|
chrono = { version = "0.4", features = ["serde"] }
|
|
21
21
|
anyhow = "1"
|
|
22
22
|
thiserror = "2"
|
|
23
|
-
lexsim = "0.1.0"
|
|
23
|
+
lexsim = ">=0.1.0, <1.0.0"
|
|
24
24
|
|
|
25
25
|
[dev-dependencies]
|
|
26
26
|
tempfile = "3.27.0"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "handoff-mcp-server",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.1",
|
|
4
4
|
"description": "MCP server that gives AI coding agents persistent memory across sessions",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "AlphaElements <66808803+alphaelements@users.noreply.github.com>",
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Sync plugin/marketplace manifest versions to package.json's version.
|
|
3
|
+
#
|
|
4
|
+
# package.json is the source of truth (kept in sync with Cargo.toml manually
|
|
5
|
+
# per CLAUDE.md "Version sync" rule). This script propagates that version to:
|
|
6
|
+
# - plugin/.claude-plugin/plugin.json
|
|
7
|
+
# - plugin-hooks/.claude-plugin/plugin.json
|
|
8
|
+
# - plugin-task-loop/.claude-plugin/plugin.json
|
|
9
|
+
# - .claude-plugin/marketplace.json (all three "version" entries)
|
|
10
|
+
#
|
|
11
|
+
# Uses regex line replacement (not json.dump) so untouched formatting in
|
|
12
|
+
# these hand-maintained manifests is preserved byte-for-byte.
|
|
13
|
+
#
|
|
14
|
+
# Usage:
|
|
15
|
+
# ./scripts/sync-plugin-version.sh # fix mismatches in place
|
|
16
|
+
# ./scripts/sync-plugin-version.sh --check # exit 1 if anything is out of sync, fix nothing
|
|
17
|
+
set -euo pipefail
|
|
18
|
+
|
|
19
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
20
|
+
ROOT="$(dirname "$SCRIPT_DIR")"
|
|
21
|
+
cd "$ROOT"
|
|
22
|
+
|
|
23
|
+
MODE="fix"
|
|
24
|
+
if [ "${1:-}" = "--check" ]; then
|
|
25
|
+
MODE="check"
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
python3 - "$MODE" <<'PYEOF'
|
|
29
|
+
import json
|
|
30
|
+
import re
|
|
31
|
+
import sys
|
|
32
|
+
|
|
33
|
+
mode = sys.argv[1]
|
|
34
|
+
|
|
35
|
+
with open("package.json") as f:
|
|
36
|
+
root_version = json.load(f)["version"]
|
|
37
|
+
|
|
38
|
+
version_line_re = re.compile(r'^(\s*"version"\s*:\s*)"[^"]*"(,?\s*(?:\r?\n)?)$')
|
|
39
|
+
|
|
40
|
+
def sync_file(path, mismatches):
|
|
41
|
+
with open(path) as f:
|
|
42
|
+
lines = f.readlines()
|
|
43
|
+
changed = False
|
|
44
|
+
out = []
|
|
45
|
+
for line in lines:
|
|
46
|
+
m = version_line_re.match(line)
|
|
47
|
+
if m:
|
|
48
|
+
current = re.search(r'"version"\s*:\s*"([^"]*)"', line).group(1)
|
|
49
|
+
if current != root_version:
|
|
50
|
+
mismatches.append((path, current))
|
|
51
|
+
changed = True
|
|
52
|
+
line = f'{m.group(1)}"{root_version}"{m.group(2)}'
|
|
53
|
+
out.append(line)
|
|
54
|
+
if changed and mode == "fix":
|
|
55
|
+
with open(path, "w") as f:
|
|
56
|
+
f.writelines(out)
|
|
57
|
+
return changed
|
|
58
|
+
|
|
59
|
+
mismatches = []
|
|
60
|
+
plugin_files = [
|
|
61
|
+
"plugin/.claude-plugin/plugin.json",
|
|
62
|
+
"plugin-hooks/.claude-plugin/plugin.json",
|
|
63
|
+
"plugin-task-loop/.claude-plugin/plugin.json",
|
|
64
|
+
".claude-plugin/marketplace.json",
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
for path in plugin_files:
|
|
68
|
+
sync_file(path, mismatches)
|
|
69
|
+
|
|
70
|
+
if mode == "check":
|
|
71
|
+
if mismatches:
|
|
72
|
+
print(f"Version mismatch: package.json is {root_version}, but found:")
|
|
73
|
+
for path, version in mismatches:
|
|
74
|
+
print(f" {path}: {version}")
|
|
75
|
+
print("Run ./scripts/sync-plugin-version.sh to fix.")
|
|
76
|
+
sys.exit(1)
|
|
77
|
+
print(f"All plugin/marketplace manifests match package.json ({root_version}).")
|
|
78
|
+
else:
|
|
79
|
+
if mismatches:
|
|
80
|
+
print(f"Synced {len(mismatches)} version occurrence(s) to {root_version}:")
|
|
81
|
+
for path, old_version in mismatches:
|
|
82
|
+
print(f" {path}: {old_version} -> {root_version}")
|
|
83
|
+
else:
|
|
84
|
+
print(f"Already in sync at version {root_version}. No changes made.")
|
|
85
|
+
PYEOF
|