@thebassclef/lite 1.9.1 → 1.9.2
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/README.md +37 -2
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lite/.claude/hooks/bassclef-sync.sh +795 -749
- package/dist/lite/.claude/hooks/session-reflection.d/tests/01-adopter-message-channel.test.sh +168 -0
- package/dist/lite/bassclef-version.json +5 -5
- package/dist/lite/standards/lite-manifest.json +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# tier: upstream
|
|
3
|
+
# fixtures: mock-git-repos-inline
|
|
4
|
+
# Tier 0 test for adopter message channel (bassclef-upstream#1926).
|
|
5
|
+
#
|
|
6
|
+
# Per @luminary alan-cooper Sam+Louis persona + @luminary donald-norman signifier
|
|
7
|
+
# + @luminary linus-torvalds adopter contract.
|
|
8
|
+
#
|
|
9
|
+
# Source under test: .claude/hooks/session-reflection.d/01-adopter-message-channel.sh
|
|
10
|
+
#
|
|
11
|
+
# test-list (per .claude/rules/test-list-discipline.md — RED first, GREEN as they land):
|
|
12
|
+
#
|
|
13
|
+
# Fragment exists + executable
|
|
14
|
+
# [ ] T00: fragment exists at expected path and is executable
|
|
15
|
+
#
|
|
16
|
+
# Fresh install gate — all 3 files absent → banner fires
|
|
17
|
+
# [ ] T01: fresh install (no whereami, no substrate.config, no .claude/settings) → welcome text
|
|
18
|
+
#
|
|
19
|
+
# Onboarded gate — any of the 3 files present → silent
|
|
20
|
+
# [ ] T02: whereami.md present → silent
|
|
21
|
+
# [ ] T03: substrate.config.md present → silent
|
|
22
|
+
# [ ] T04: .claude/settings.json present → silent
|
|
23
|
+
# [ ] T08: bassclef itself (all 3 files present) → silent (Torvalds T1 fold)
|
|
24
|
+
#
|
|
25
|
+
# Override
|
|
26
|
+
# [ ] T05: SKIP_ADOPTER_MESSAGES=1 → silent (bypass on fresh install)
|
|
27
|
+
#
|
|
28
|
+
# Message body (Cooper C2 fold)
|
|
29
|
+
# [ ] T06: welcome text contains "Welcome to bassclef"
|
|
30
|
+
# [ ] T07: welcome text contains "/onboard-repo"
|
|
31
|
+
|
|
32
|
+
set -u
|
|
33
|
+
|
|
34
|
+
REPO_ROOT="$(cd "$(dirname "$0")/../../../.." && pwd)"
|
|
35
|
+
HOOK="${REPO_ROOT}/.claude/hooks/session-reflection.d/01-adopter-message-channel.sh"
|
|
36
|
+
PASS=0
|
|
37
|
+
FAIL=0
|
|
38
|
+
FAILED_TESTS=()
|
|
39
|
+
|
|
40
|
+
assert() {
|
|
41
|
+
local name="$1"
|
|
42
|
+
local ok="$2"
|
|
43
|
+
local why="$3"
|
|
44
|
+
if [ "$ok" = "1" ]; then
|
|
45
|
+
PASS=$((PASS + 1))
|
|
46
|
+
echo " PASS: $name"
|
|
47
|
+
else
|
|
48
|
+
FAIL=$((FAIL + 1))
|
|
49
|
+
FAILED_TESTS+=("$name — $why")
|
|
50
|
+
echo " FAIL: $name — $why"
|
|
51
|
+
fi
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
TMPROOT="$(mktemp -d -t adopter-message-channel.XXXXXX)"
|
|
55
|
+
cleanup() { rm -rf "$TMPROOT"; }
|
|
56
|
+
trap cleanup EXIT
|
|
57
|
+
|
|
58
|
+
# --- T00: fragment exists + executable ---
|
|
59
|
+
if [ -x "$HOOK" ]; then
|
|
60
|
+
assert "T00: fragment exists + executable" 1 ""
|
|
61
|
+
else
|
|
62
|
+
assert "T00: fragment exists + executable" 0 "not found or not executable: $HOOK"
|
|
63
|
+
echo ""
|
|
64
|
+
echo "=== Results ==="
|
|
65
|
+
echo "PASS: $PASS"
|
|
66
|
+
echo "FAIL: $FAIL"
|
|
67
|
+
exit 1
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
# --- Fixture builder ---
|
|
71
|
+
run_hook_in() {
|
|
72
|
+
local tmpdir="$1"
|
|
73
|
+
(cd "$tmpdir" && bash "$HOOK" 2>&1)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
# --- T01: fresh install (no state files) → welcome text ---
|
|
77
|
+
SC_FRESH="$TMPROOT/fresh"
|
|
78
|
+
mkdir -p "$SC_FRESH"
|
|
79
|
+
OUT_T01=$(run_hook_in "$SC_FRESH")
|
|
80
|
+
if echo "$OUT_T01" | grep -qE "Welcome to bassclef"; then
|
|
81
|
+
assert "T01: fresh install emits welcome text" 1 ""
|
|
82
|
+
else
|
|
83
|
+
assert "T01: fresh install emits welcome text" 0 "no welcome text in: $OUT_T01"
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
# --- T02: whereami.md present → silent ---
|
|
87
|
+
SC_WHEREAMI="$TMPROOT/whereami-present"
|
|
88
|
+
mkdir -p "$SC_WHEREAMI/docs"
|
|
89
|
+
echo "---" > "$SC_WHEREAMI/docs/whereami.md"
|
|
90
|
+
OUT_T02=$(run_hook_in "$SC_WHEREAMI")
|
|
91
|
+
if [ -z "$OUT_T02" ]; then
|
|
92
|
+
assert "T02: whereami.md present → silent" 1 ""
|
|
93
|
+
else
|
|
94
|
+
assert "T02: whereami.md present → silent" 0 "unexpected output: $OUT_T02"
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
# --- T03: substrate.config.md present → silent ---
|
|
98
|
+
SC_CONFIG="$TMPROOT/config-present"
|
|
99
|
+
mkdir -p "$SC_CONFIG"
|
|
100
|
+
echo "---" > "$SC_CONFIG/substrate.config.md"
|
|
101
|
+
OUT_T03=$(run_hook_in "$SC_CONFIG")
|
|
102
|
+
if [ -z "$OUT_T03" ]; then
|
|
103
|
+
assert "T03: substrate.config.md present → silent" 1 ""
|
|
104
|
+
else
|
|
105
|
+
assert "T03: substrate.config.md present → silent" 0 "unexpected output: $OUT_T03"
|
|
106
|
+
fi
|
|
107
|
+
|
|
108
|
+
# --- T04: .claude/settings.json present → silent ---
|
|
109
|
+
SC_SETTINGS="$TMPROOT/settings-present"
|
|
110
|
+
mkdir -p "$SC_SETTINGS/.claude"
|
|
111
|
+
echo '{}' > "$SC_SETTINGS/.claude/settings.json"
|
|
112
|
+
OUT_T04=$(run_hook_in "$SC_SETTINGS")
|
|
113
|
+
if [ -z "$OUT_T04" ]; then
|
|
114
|
+
assert "T04: .claude/settings.json present → silent" 1 ""
|
|
115
|
+
else
|
|
116
|
+
assert "T04: .claude/settings.json present → silent" 0 "unexpected output: $OUT_T04"
|
|
117
|
+
fi
|
|
118
|
+
|
|
119
|
+
# --- T05: SKIP_ADOPTER_MESSAGES=1 bypass on fresh install ---
|
|
120
|
+
SC_SKIP="$TMPROOT/skip"
|
|
121
|
+
mkdir -p "$SC_SKIP"
|
|
122
|
+
OUT_T05=$(SKIP_ADOPTER_MESSAGES=1 run_hook_in "$SC_SKIP")
|
|
123
|
+
if [ -z "$OUT_T05" ] || echo "$OUT_T05" | grep -qE "SKIP_ADOPTER_MESSAGES"; then
|
|
124
|
+
assert "T05: SKIP_ADOPTER_MESSAGES=1 bypasses" 1 ""
|
|
125
|
+
else
|
|
126
|
+
assert "T05: SKIP_ADOPTER_MESSAGES=1 bypasses" 0 "banner fired: $OUT_T05"
|
|
127
|
+
fi
|
|
128
|
+
|
|
129
|
+
# --- T06: welcome text contains "Welcome to bassclef" ---
|
|
130
|
+
if echo "$OUT_T01" | grep -qE "Welcome to bassclef"; then
|
|
131
|
+
assert "T06: welcome contains 'Welcome to bassclef'" 1 ""
|
|
132
|
+
else
|
|
133
|
+
assert "T06: welcome contains 'Welcome to bassclef'" 0 "missing in: $OUT_T01"
|
|
134
|
+
fi
|
|
135
|
+
|
|
136
|
+
# --- T07: welcome text contains "/onboard-repo" ---
|
|
137
|
+
if echo "$OUT_T01" | grep -qE "/onboard-repo"; then
|
|
138
|
+
assert "T07: welcome contains '/onboard-repo'" 1 ""
|
|
139
|
+
else
|
|
140
|
+
assert "T07: welcome contains '/onboard-repo'" 0 "missing in: $OUT_T01"
|
|
141
|
+
fi
|
|
142
|
+
|
|
143
|
+
# --- T08: bassclef itself (all 3 files present) → silent ---
|
|
144
|
+
SC_BASSCLEF="$TMPROOT/bassclef"
|
|
145
|
+
mkdir -p "$SC_BASSCLEF/docs" "$SC_BASSCLEF/.claude"
|
|
146
|
+
echo "---" > "$SC_BASSCLEF/docs/whereami.md"
|
|
147
|
+
echo "---" > "$SC_BASSCLEF/substrate.config.md"
|
|
148
|
+
echo '{}' > "$SC_BASSCLEF/.claude/settings.json"
|
|
149
|
+
OUT_T08=$(run_hook_in "$SC_BASSCLEF")
|
|
150
|
+
if [ -z "$OUT_T08" ]; then
|
|
151
|
+
assert "T08: bassclef itself (all 3 present) → silent" 1 ""
|
|
152
|
+
else
|
|
153
|
+
assert "T08: bassclef itself (all 3 present) → silent" 0 "unexpected: $OUT_T08"
|
|
154
|
+
fi
|
|
155
|
+
|
|
156
|
+
# --- Summary ---
|
|
157
|
+
echo ""
|
|
158
|
+
echo "=== Results ==="
|
|
159
|
+
echo "PASS: $PASS"
|
|
160
|
+
echo "FAIL: $FAIL"
|
|
161
|
+
if [ "$FAIL" -gt 0 ]; then
|
|
162
|
+
echo ""
|
|
163
|
+
echo "Failed tests:"
|
|
164
|
+
for t in "${FAILED_TESTS[@]}"; do
|
|
165
|
+
echo " - $t"
|
|
166
|
+
done
|
|
167
|
+
exit 1
|
|
168
|
+
fi
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "v1.5.
|
|
3
|
-
"marker_tag": "release-2026-09-24-
|
|
4
|
-
"release_date": "2026-09-
|
|
5
|
-
"release_sha": "
|
|
6
|
-
"release_tag": "release-2026-09-24-
|
|
2
|
+
"version": "v1.5.2",
|
|
3
|
+
"marker_tag": "release-2026-09-24-4dc71e87",
|
|
4
|
+
"release_date": "2026-09-24T21:29:57Z",
|
|
5
|
+
"release_sha": "4dc71e87",
|
|
6
|
+
"release_tag": "release-2026-09-24-4dc71e87"
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thebassclef/lite",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.2",
|
|
4
4
|
"description": "Bassclef CLI — install and upgrade bassclef in your project with two commands.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bassclef",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"cli",
|
|
9
9
|
"scaffolding"
|
|
10
10
|
],
|
|
11
|
-
"homepage": "https://
|
|
11
|
+
"homepage": "https://docs.bassclef.dev",
|
|
12
12
|
"repository": {
|
|
13
13
|
"type": "git",
|
|
14
14
|
"url": "git+https://github.com/sunj-labs/bassclef-cli.git"
|