chore(sync): merge main into dev after release [skip ci]

# Conflicts:
#	package.json
This commit is contained in:
github-actions[bot] committed 2026-01-27 20:13:19 +00:00
commit 687f2e6541
3 files changed
+22 -2

No files matched your search

+6
View File
@@ -1,3 +1,9 @@
## [7.28.2](https://github.com/kaitranntt/ccs/compare/v7.28.1...v7.28.2) (2026-01-27)
### Bug Fixes
* **websearch:** add shell option for Windows spawnSync compatibility ([3c534f4](https://github.com/kaitranntt/ccs/commit/3c534f48cb60448875c02bc0a8444277ca7c89eb)), closes [#378](https://github.com/kaitranntt/ccs/issues/378)
## [7.28.1](https://github.com/kaitranntt/ccs/compare/v7.28.0...v7.28.1) (2026-01-26)
### Bug Fixes
+15 -1
View File
@@ -26,6 +26,18 @@
const { spawnSync } = require('child_process');
// ============================================================================
// PLATFORM DETECTION
// ============================================================================
/**
* Windows platform flag - used for shell option in spawnSync calls.
* On Windows, globally installed CLI tools via npm/pnpm are .cmd/.bat files,
* which require shell: true to execute properly.
* @see https://github.com/kaitranntt/ccs/issues/378
*/
const isWindows = process.platform === 'win32';
// ============================================================================
// CONFIGURATION - Edit these for prompt engineering
// ============================================================================
@@ -154,7 +166,6 @@ process.stdin.on('error', () => {
*/
function isCliAvailable(cmd) {
try {
const isWindows = process.platform === 'win32';
const whichCmd = isWindows ? 'where.exe' : 'which';
const result = spawnSync(whichCmd, [cmd], {
@@ -292,6 +303,7 @@ function tryGeminiSearch(query, timeoutSec = DEFAULT_TIMEOUT_SEC) {
timeout: timeoutMs,
maxBuffer: 1024 * 1024 * 2,
stdio: ['pipe', 'pipe', 'pipe'],
shell: isWindows,
}
);
@@ -358,6 +370,7 @@ function tryOpenCodeSearch(query, timeoutSec = DEFAULT_TIMEOUT_SEC) {
timeout: timeoutMs,
maxBuffer: 1024 * 1024 * 2,
stdio: ['pipe', 'pipe', 'pipe'],
shell: isWindows,
}
);
@@ -417,6 +430,7 @@ function tryGrokSearch(query, timeoutSec = DEFAULT_TIMEOUT_SEC) {
timeout: timeoutMs,
maxBuffer: 1024 * 1024 * 2,
stdio: ['pipe', 'pipe', 'pipe'],
shell: isWindows,
});
if (spawnResult.error) {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@kaitranntt/ccs",
"version": "7.28.1-dev.1",
"version": "7.28.2",
"description": "Claude Code Switch - Instant profile switching between Claude Sonnet 4.5 and GLM 4.6",
"keywords": [
"cli",