bluera-knowledge 0.11.7 → 0.11.9
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/.claude-plugin/plugin.json +1 -1
- package/.github/workflows/auto-release.yml +5 -0
- package/.github/workflows/ci.yml +14 -1
- package/.github/workflows/release.yml +6 -0
- package/CHANGELOG.md +28 -0
- package/package.json +1 -1
- package/scripts/validate-npm-release.sh +4 -6
- package/src/scripts/validate-npm-release.test.ts +21 -0
|
@@ -40,6 +40,11 @@ jobs:
|
|
|
40
40
|
echo "exists=false" >> $GITHUB_OUTPUT
|
|
41
41
|
fi
|
|
42
42
|
|
|
43
|
+
# CRITICAL: This is the quality gate for releases.
|
|
44
|
+
# CI workflow does NOT run on tags (to avoid redundant ~3 min test runs).
|
|
45
|
+
# This step ensures all CI checks pass on main BEFORE creating a tag.
|
|
46
|
+
# The Release workflow trusts this guarantee and publishes immediately.
|
|
47
|
+
# See ci.yml header comment for the full quality guarantee chain.
|
|
43
48
|
- name: Wait for CI to complete
|
|
44
49
|
if: steps.check_tag.outputs.exists == 'false'
|
|
45
50
|
uses: lewagon/wait-on-check-action@v1.3.4
|
package/.github/workflows/ci.yml
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
name: CI
|
|
2
2
|
|
|
3
|
+
# CI runs on branch pushes and PRs, but NOT on tags.
|
|
4
|
+
#
|
|
5
|
+
# Why no tag trigger?
|
|
6
|
+
# - Auto Release workflow (auto-release.yml) waits for CI to pass on main
|
|
7
|
+
# before creating a tag (uses wait-on-check-action with lint-and-typecheck,
|
|
8
|
+
# test, build checks)
|
|
9
|
+
# - The tag contains the exact same code that just passed CI on main
|
|
10
|
+
# - Running CI again on the tag is redundant and wastes ~3 minutes per release
|
|
11
|
+
# - Release workflow (release.yml) trusts this guarantee and publishes immediately
|
|
12
|
+
#
|
|
13
|
+
# Quality guarantee chain:
|
|
14
|
+
# push to main → CI passes → Auto Release creates tag → Release publishes
|
|
15
|
+
#
|
|
3
16
|
on:
|
|
4
17
|
push:
|
|
5
18
|
branches: ['**']
|
|
6
|
-
|
|
19
|
+
# Note: tags intentionally excluded - see comment above
|
|
7
20
|
pull_request:
|
|
8
21
|
branches: [main]
|
|
9
22
|
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
name: Release
|
|
2
2
|
|
|
3
|
+
# Publishes to npm when a tag is pushed.
|
|
4
|
+
#
|
|
5
|
+
# Quality assumption: Tags are only created by Auto Release workflow AFTER
|
|
6
|
+
# CI passes on main. This workflow trusts that guarantee and does not re-run
|
|
7
|
+
# tests. See ci.yml and auto-release.yml for the full quality chain.
|
|
8
|
+
#
|
|
3
9
|
on:
|
|
4
10
|
push:
|
|
5
11
|
tags:
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,34 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [0.11.9](https://github.com/blueraai/bluera-knowledge/compare/v0.11.6...v0.11.9) (2026-01-10)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **scripts:** add post-release npm validation script ([e4c29a0](https://github.com/blueraai/bluera-knowledge/commit/e4c29a0c83907de4bc293a69a58412629457fb22))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* **cli:** plugin-api commands now respect global options ([d3cca02](https://github.com/blueraai/bluera-knowledge/commit/d3cca02ffc679ffc187b76c7682f3cc177eabdea))
|
|
16
|
+
* **scripts:** show real-time output in validation script ([8a4bdec](https://github.com/blueraai/bluera-knowledge/commit/8a4bdec8b63c504d34ba35bfe19da795f7f7fd07))
|
|
17
|
+
* **scripts:** use mktemp for temp directories in validation script ([3107861](https://github.com/blueraai/bluera-knowledge/commit/3107861bd7a966016fde2a121469dd84756f39be))
|
|
18
|
+
|
|
19
|
+
## [0.11.8](https://github.com/blueraai/bluera-knowledge/compare/v0.11.6...v0.11.8) (2026-01-10)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Features
|
|
23
|
+
|
|
24
|
+
* **scripts:** add post-release npm validation script ([e4c29a0](https://github.com/blueraai/bluera-knowledge/commit/e4c29a0c83907de4bc293a69a58412629457fb22))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Bug Fixes
|
|
28
|
+
|
|
29
|
+
* **cli:** plugin-api commands now respect global options ([d3cca02](https://github.com/blueraai/bluera-knowledge/commit/d3cca02ffc679ffc187b76c7682f3cc177eabdea))
|
|
30
|
+
* **scripts:** show real-time output in validation script ([8a4bdec](https://github.com/blueraai/bluera-knowledge/commit/8a4bdec8b63c504d34ba35bfe19da795f7f7fd07))
|
|
31
|
+
* **scripts:** use mktemp for temp directories in validation script ([3107861](https://github.com/blueraai/bluera-knowledge/commit/3107861bd7a966016fde2a121469dd84756f39be))
|
|
32
|
+
|
|
5
33
|
## [0.11.7](https://github.com/blueraai/bluera-knowledge/compare/v0.11.6...v0.11.7) (2026-01-10)
|
|
6
34
|
|
|
7
35
|
|
package/package.json
CHANGED
|
@@ -68,11 +68,11 @@ run_test() {
|
|
|
68
68
|
local cmd="$*"
|
|
69
69
|
|
|
70
70
|
log "Running: $cmd"
|
|
71
|
-
if eval "$cmd"
|
|
71
|
+
if eval "$cmd" 2>&1 | tee -a "$LOG_FILE"; then
|
|
72
72
|
pass "$name"
|
|
73
73
|
return 0
|
|
74
74
|
else
|
|
75
|
-
fail "$name (exit code:
|
|
75
|
+
fail "$name (exit code: ${PIPESTATUS[0]})"
|
|
76
76
|
return 1
|
|
77
77
|
fi
|
|
78
78
|
}
|
|
@@ -86,19 +86,17 @@ run_test_contains() {
|
|
|
86
86
|
|
|
87
87
|
log "Running: $cmd"
|
|
88
88
|
local output
|
|
89
|
-
|
|
89
|
+
# Capture output while also showing it on terminal via tee
|
|
90
|
+
if output=$(eval "$cmd" 2>&1 | tee -a "$LOG_FILE"); then
|
|
90
91
|
if echo "$output" | grep -q "$expected"; then
|
|
91
92
|
pass "$name"
|
|
92
|
-
echo "$output" >> "$LOG_FILE"
|
|
93
93
|
return 0
|
|
94
94
|
else
|
|
95
95
|
fail "$name (output missing: $expected)"
|
|
96
|
-
echo "$output" >> "$LOG_FILE"
|
|
97
96
|
return 1
|
|
98
97
|
fi
|
|
99
98
|
else
|
|
100
99
|
fail "$name (command failed)"
|
|
101
|
-
echo "$output" >> "$LOG_FILE"
|
|
102
100
|
return 1
|
|
103
101
|
fi
|
|
104
102
|
}
|
|
@@ -31,4 +31,25 @@ describe('validate-npm-release.sh', () => {
|
|
|
31
31
|
expect(scriptContent).toContain('trap');
|
|
32
32
|
expect(scriptContent).toMatch(/rm -rf/);
|
|
33
33
|
});
|
|
34
|
+
|
|
35
|
+
it('shows real-time output during command execution', () => {
|
|
36
|
+
// Script should use tee to show output on both terminal and log file
|
|
37
|
+
// This prevents the script from appearing "hung" during long-running commands
|
|
38
|
+
expect(scriptContent).toContain('tee -a');
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it('does not redirect output only to log file in run_test functions', () => {
|
|
42
|
+
// The run_test and run_test_contains functions should not silently redirect
|
|
43
|
+
// all output to log file - they should show progress on terminal
|
|
44
|
+
const lines = scriptContent.split('\n');
|
|
45
|
+
|
|
46
|
+
// Find run_test function and check it doesn't use silent redirection
|
|
47
|
+
// Pattern: >> "$LOG_FILE" 2>&1 without tee means silent execution
|
|
48
|
+
const hasSilentRedirect = lines.some(
|
|
49
|
+
(line) =>
|
|
50
|
+
line.includes('eval "$cmd"') && line.includes('>> "$LOG_FILE"') && !line.includes('tee')
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
expect(hasSilentRedirect).toBe(false);
|
|
54
|
+
});
|
|
34
55
|
});
|