mirror of
https://github.com/cexll/myclaude.git
synced 2026-02-15 03:32:43 +08:00
Compare commits
5 Commits
myclaude-m
...
v5.2.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3d27d44676 | ||
|
|
6a66c9741f | ||
|
|
a09c103cfb | ||
|
|
1dec763e26 | ||
|
|
b3f8fcfea6 |
29
.github/workflows/release.yml
vendored
29
.github/workflows/release.yml
vendored
@@ -97,6 +97,11 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: artifacts
|
path: artifacts
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '20'
|
||||||
|
|
||||||
- name: Prepare release files
|
- name: Prepare release files
|
||||||
run: |
|
run: |
|
||||||
mkdir -p release
|
mkdir -p release
|
||||||
@@ -104,32 +109,20 @@ jobs:
|
|||||||
cp install.sh install.bat release/
|
cp install.sh install.bat release/
|
||||||
ls -la release/
|
ls -la release/
|
||||||
|
|
||||||
- name: Extract release notes from CHANGELOG
|
- name: Generate release notes with git-cliff
|
||||||
id: extract_notes
|
|
||||||
run: |
|
run: |
|
||||||
VERSION=${GITHUB_REF#refs/tags/v}
|
# Install git-cliff via npx
|
||||||
|
npx git-cliff@latest --current --strip all -o release_notes.md
|
||||||
|
|
||||||
# Extract version section from CHANGELOG.md
|
# Fallback if generation failed
|
||||||
awk -v ver="$VERSION" '
|
|
||||||
/^## [0-9]+\.[0-9]+\.[0-9]+ - / {
|
|
||||||
if (found) exit
|
|
||||||
if ($2 == ver) {
|
|
||||||
found = 1
|
|
||||||
next
|
|
||||||
}
|
|
||||||
}
|
|
||||||
found && /^## / { exit }
|
|
||||||
found { print }
|
|
||||||
' CHANGELOG.md > release_notes.md
|
|
||||||
|
|
||||||
# Fallback to auto-generated if extraction failed
|
|
||||||
if [ ! -s release_notes.md ]; then
|
if [ ! -s release_notes.md ]; then
|
||||||
echo "⚠️ No release notes found in CHANGELOG.md for version $VERSION" > release_notes.md
|
echo "⚠️ Failed to generate release notes with git-cliff" > release_notes.md
|
||||||
echo "" >> release_notes.md
|
echo "" >> release_notes.md
|
||||||
echo "## What's Changed" >> release_notes.md
|
echo "## What's Changed" >> release_notes.md
|
||||||
echo "See commits in this release for details." >> release_notes.md
|
echo "See commits in this release for details." >> release_notes.md
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "--- Generated Release Notes ---"
|
||||||
cat release_notes.md
|
cat release_notes.md
|
||||||
|
|
||||||
- name: Create Release
|
- name: Create Release
|
||||||
|
|||||||
268
CHANGELOG.md
268
CHANGELOG.md
@@ -1,129 +1,209 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## 5.2.0 - 2025-12-13
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
### 🚀 Core Features
|
## [5.2.4] - 2025-12-16
|
||||||
|
|
||||||
#### Skills System Enhancements
|
### 🐛 Bug Fixes
|
||||||
- **New Skills**: Added `codeagent`, `product-requirements`, `prototype-prompt-generator` to `skill-rules.json`
|
|
||||||
- **Auto-Activation**: Skills automatically trigger based on keyword/pattern matching via hooks
|
|
||||||
- **Backward Compatibility**: Retained `skills/codex/SKILL.md` for existing workflows
|
|
||||||
|
|
||||||
#### Multi-Backend Support (codeagent-wrapper)
|
- *(executor)* Isolate log files per task in parallel mode
|
||||||
- **Renamed**: `codex-wrapper` → `codeagent-wrapper` with pluggable backend architecture
|
- *(codeagent)* 防止 Claude backend 无限递归调用
|
||||||
- **Three Backends**: Codex (default), Claude, Gemini via `--backend` flag
|
|
||||||
- **Smart Parser**: Auto-detects backend JSON stream formats
|
|
||||||
- **Session Resume**: All backends support `-r <session_id>` cross-session resume
|
|
||||||
- **Parallel Execution**: DAG task scheduling with global and per-task backend configuration
|
|
||||||
- **Concurrency Control**: `CODEAGENT_MAX_PARALLEL_WORKERS` env var limits concurrent tasks (max 100)
|
|
||||||
- **Test Coverage**: 93.4% (backend.go 100%, config.go 97.8%, executor.go 96.4%)
|
|
||||||
|
|
||||||
#### Dev Workflow
|
### ⚙️ Miscellaneous Tasks
|
||||||
- **`/dev`**: 6-step minimal dev workflow with mandatory 90% test coverage
|
|
||||||
|
|
||||||
#### Hooks System
|
- Bump version to 5.2.4
|
||||||
- **UserPromptSubmit**: Auto-activate skills based on context
|
|
||||||
- **PostToolUse**: Auto-validation/formatting after tool execution
|
|
||||||
- **Stop**: Cleanup and reporting on session end
|
|
||||||
- **Examples**: Skill auto-activation, pre-commit checks
|
|
||||||
|
|
||||||
#### Skills System
|
## [5.2.3] - 2025-12-15
|
||||||
- **Auto-Activation**: `skill-rules.json` regex trigger rules
|
|
||||||
- **codeagent skill**: Multi-backend wrapper integration
|
|
||||||
- **Modular Design**: Easy to extend with custom skills
|
|
||||||
|
|
||||||
#### Installation System Enhancements
|
### 🐛 Bug Fixes
|
||||||
- **`merge_json` operation**: Auto-merge `settings.json` configuration
|
|
||||||
- **Modular Installation**: `python3 install.py --module dev`
|
- *(parser)* 修复 bufio.Scanner token too long 错误 (#64)
|
||||||
- **Verbose Logging**: `--verbose/-v` enables terminal real-time output
|
|
||||||
- **Streaming Output**: `op_run_command` streams bash script execution
|
### 🧪 Testing
|
||||||
- **Configuration Cleanup**: Removed deprecated `gh` module from `config.json`
|
|
||||||
|
- 同步测试中的版本号至 5.2.3
|
||||||
|
|
||||||
|
## [5.2.2] - 2025-12-13
|
||||||
|
|
||||||
|
### 🧪 Testing
|
||||||
|
|
||||||
|
- Fix tests for ClaudeBackend default --dangerously-skip-permissions
|
||||||
|
|
||||||
|
### ⚙️ Miscellaneous Tasks
|
||||||
|
|
||||||
|
- *(v5.2.2)* Bump version and clean up documentation
|
||||||
|
|
||||||
|
## [5.2.0] - 2025-12-13
|
||||||
|
|
||||||
|
### 🚀 Features
|
||||||
|
|
||||||
|
- *(dev-workflow)* 替换 Codex 为 codeagent 并添加 UI 自动检测
|
||||||
|
- *(codeagent-wrapper)* 完整多后端支持与安全优化
|
||||||
|
- *(install)* 添加终端日志输出和 verbose 模式
|
||||||
|
- *(v5.2.0)* Improve release notes and installation scripts
|
||||||
|
- *(v5.2.0)* Complete skills system integration and config cleanup
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
|
- *(merge)* 修复master合并后的编译和测试问题
|
||||||
|
- *(parallel)* 修复并行执行启动横幅重复打印问题
|
||||||
|
- *(ci)* 移除 .claude 配置文件验证步骤
|
||||||
|
- *(codeagent-wrapper)* 重构信号处理逻辑避免重复 nil 检查
|
||||||
|
- *(codeagent-wrapper)* 修复权限标志逻辑和版本号测试
|
||||||
|
- *(install)* Op_run_command 实时流式输出
|
||||||
|
- *(codeagent-wrapper)* 异常退出时显示最近错误信息
|
||||||
|
- *(codeagent-wrapper)* Remove binary artifacts and improve error messages
|
||||||
|
- *(codeagent-wrapper)* Use -r flag for claude backend resume
|
||||||
|
- *(install)* Clarify module list shows default state not enabled
|
||||||
|
- *(codeagent-wrapper)* Use -r flag for gemini backend resume
|
||||||
|
- *(codeagent-wrapper)* Add worker limit cap and remove legacy alias
|
||||||
|
- *(codeagent-wrapper)* Fix race condition in stdout parsing
|
||||||
|
|
||||||
|
### 🚜 Refactor
|
||||||
|
|
||||||
|
- *(pr-53)* 调整文件命名和技能定义
|
||||||
|
|
||||||
### 📚 Documentation
|
### 📚 Documentation
|
||||||
|
|
||||||
- `docs/architecture.md` (21KB): Architecture overview with ASCII diagrams
|
- *(changelog)* Remove GitHub workflow related content
|
||||||
- `docs/CODEAGENT-WRAPPER.md` (9KB): Complete usage guide
|
|
||||||
- `docs/HOOKS.md` (4KB): Customization guide
|
|
||||||
- `README.md`: Added documentation index, corrected default backend description
|
|
||||||
|
|
||||||
### 🔧 Important Fixes
|
### 🧪 Testing
|
||||||
|
|
||||||
#### codeagent-wrapper
|
- *(codeagent-wrapper)* 添加 ExtractRecentErrors 单元测试
|
||||||
- Fixed Claude/Gemini backend `-C` (workdir) and `-r` (resume) parameter support (codeagent-wrapper/backend.go:80-120)
|
|
||||||
- Corrected Claude backend permission flag logic `if cfg.SkipPermissions` (codeagent-wrapper/backend.go:95)
|
|
||||||
- Fixed parallel mode startup banner duplication (codeagent-wrapper/main.go:184-194 removed)
|
|
||||||
- Extract and display recent errors on abnormal exit `Logger.ExtractRecentErrors()` (codeagent-wrapper/logger.go:156)
|
|
||||||
- Added task block index to parallel config error messages (codeagent-wrapper/config.go:245)
|
|
||||||
- Refactored signal handling logic to avoid duplicate nil checks (codeagent-wrapper/main.go:290-305)
|
|
||||||
- Removed binary artifacts from tracking (codeagent-wrapper, *.test, coverage.out)
|
|
||||||
|
|
||||||
#### Installation Scripts
|
### ⚙️ Miscellaneous Tasks
|
||||||
- Fixed issue #55: `op_run_command` uses Popen + selectors for real-time streaming output
|
|
||||||
- Fixed issue #56: Display recent errors instead of entire log
|
|
||||||
- Changed module list header from "Enabled" to "Default" to avoid ambiguity
|
|
||||||
|
|
||||||
#### CI/CD
|
- *(v5.2.0)* Update CHANGELOG and remove deprecated test files
|
||||||
- Removed `.claude/` config file validation step (.github/workflows/ci.yml:45)
|
|
||||||
- Updated version test case from 5.1.0 → 5.2.0 (codeagent-wrapper/main_test.go:23)
|
|
||||||
|
|
||||||
#### Commands & Documentation
|
## [5.1.4] - 2025-12-09
|
||||||
- Reverted `skills/codex/SKILL.md` to `codex-wrapper` for backward compatibility
|
|
||||||
|
|
||||||
#### dev-workflow
|
### 🐛 Bug Fixes
|
||||||
- Replaced Codex skill → codeagent skill throughout
|
|
||||||
- Added UI auto-detection: backend tasks use codex, UI tasks use gemini
|
|
||||||
- Corrected agent name: `develop-doc-generator` → `dev-plan-generator`
|
|
||||||
|
|
||||||
### ⚙️ Configuration & Environment Variables
|
- *(parallel)* 任务启动时立即返回日志文件路径以支持实时调试
|
||||||
|
|
||||||
#### New Environment Variables
|
## [5.1.3] - 2025-12-08
|
||||||
- `CODEAGENT_SKIP_PERMISSIONS`: Control permission check behavior
|
|
||||||
- Claude backend defaults to `--dangerously-skip-permissions` enabled, set to `true` to disable
|
|
||||||
- Codex/Gemini backends default to permission checks enabled, set to `true` to skip
|
|
||||||
- `CODEAGENT_MAX_PARALLEL_WORKERS`: Parallel task concurrency limit (default: unlimited, recommended: 8, max: 100)
|
|
||||||
|
|
||||||
#### Configuration Files
|
### 🐛 Bug Fixes
|
||||||
- `config.schema.json`: Added `op_merge_json` schema validation
|
|
||||||
|
|
||||||
### ⚠️ Breaking Changes
|
- *(test)* Resolve CI timing race in TestFakeCmdInfra
|
||||||
|
|
||||||
**codex-wrapper → codeagent-wrapper rename**
|
## [5.1.2] - 2025-12-08
|
||||||
|
|
||||||
**Migration**:
|
### 🐛 Bug Fixes
|
||||||
```bash
|
|
||||||
python3 install.py --module dev --force
|
|
||||||
```
|
|
||||||
|
|
||||||
**Backward Compatibility**: `codex-wrapper/main.go` provides compatibility entry point
|
- 修复channel同步竞态条件和死锁问题
|
||||||
|
|
||||||
### 📦 Installation
|
## [5.1.1] - 2025-12-08
|
||||||
|
|
||||||
```bash
|
### 🐛 Bug Fixes
|
||||||
# Install dev module
|
|
||||||
python3 install.py --module dev
|
|
||||||
|
|
||||||
# List all modules
|
- *(test)* Resolve data race on forceKillDelay with atomic operations
|
||||||
python3 install.py --list-modules
|
- 增强日志清理的安全性和可靠性
|
||||||
|
|
||||||
# Verbose logging mode
|
### 💼 Other
|
||||||
python3 install.py --module dev --verbose
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🧪 Test Results
|
- Resolve signal handling conflict preserving testability and Windows support
|
||||||
|
|
||||||
✅ **All tests passing**
|
### 🧪 Testing
|
||||||
- Overall coverage: 93.4%
|
|
||||||
- Security scan: 0 issues (gosec)
|
|
||||||
- Linting: Pass
|
|
||||||
|
|
||||||
### 📄 Related PRs & Issues
|
- 补充测试覆盖提升至 89.3%
|
||||||
|
|
||||||
- PR #53: Enterprise Workflow with Multi-Backend Support
|
## [5.1.0] - 2025-12-07
|
||||||
- Issue #55: Installation script execution not visible
|
|
||||||
- Issue #56: Unfriendly error logging on abnormal exit
|
|
||||||
|
|
||||||
### 👥 Contributors
|
### 🚀 Features
|
||||||
|
|
||||||
- Claude Sonnet 4.5
|
- Implement enterprise workflow with multi-backend support
|
||||||
- Claude Opus 4.5
|
- *(cleanup)* 添加启动时清理日志的功能和--cleanup标志支持
|
||||||
- SWE-Agent-Bot
|
|
||||||
|
## [5.0.0] - 2025-12-05
|
||||||
|
|
||||||
|
### 🚀 Features
|
||||||
|
|
||||||
|
- Implement modular installation system
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
|
- *(codex-wrapper)* Defer startup log until args parsed
|
||||||
|
|
||||||
|
### 🚜 Refactor
|
||||||
|
|
||||||
|
- Remove deprecated plugin modules
|
||||||
|
|
||||||
|
### 📚 Documentation
|
||||||
|
|
||||||
|
- Rewrite documentation for v5.0 modular architecture
|
||||||
|
|
||||||
|
### ⚙️ Miscellaneous Tasks
|
||||||
|
|
||||||
|
- Clarify unit-test coverage levels in requirement questions
|
||||||
|
|
||||||
|
## [4.8.2] - 2025-12-02
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
|
- *(codex-wrapper)* Capture and include stderr in error messages
|
||||||
|
- Correct Go version in go.mod from 1.25.3 to 1.21
|
||||||
|
- Make forceKillDelay testable to prevent signal test timeout
|
||||||
|
- Skip signal test in CI environment
|
||||||
|
|
||||||
|
## [4.8.1] - 2025-12-01
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
|
- *(codex-wrapper)* Improve --parallel parameter validation and docs
|
||||||
|
|
||||||
|
### 🎨 Styling
|
||||||
|
|
||||||
|
- *(codex-skill)* Replace emoji with text labels
|
||||||
|
|
||||||
|
## [4.7.3] - 2025-11-29
|
||||||
|
|
||||||
|
### 🚀 Features
|
||||||
|
|
||||||
|
- Add async logging to temp file with lifecycle management
|
||||||
|
- Add parallel execution support to codex-wrapper
|
||||||
|
- Add session resume support and improve output format
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
|
- *(logger)* 保留日志文件以便程序退出后调试并完善日志输出功能
|
||||||
|
|
||||||
|
### 📚 Documentation
|
||||||
|
|
||||||
|
- Improve codex skill parameter best practices
|
||||||
|
|
||||||
|
## [4.7.2] - 2025-11-28
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
|
- *(main)* Improve buffer size and streamline message extraction
|
||||||
|
|
||||||
|
### 🧪 Testing
|
||||||
|
|
||||||
|
- *(ParseJSONStream)* 增加对超大单行文本和非字符串文本的处理测试
|
||||||
|
|
||||||
|
## [4.7] - 2025-11-27
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
|
- Update repository URLs to cexll/myclaude
|
||||||
|
|
||||||
|
## [4.4] - 2025-11-22
|
||||||
|
|
||||||
|
### 🚀 Features
|
||||||
|
|
||||||
|
- 支持通过环境变量配置 skills 模型
|
||||||
|
|
||||||
|
## [4.1] - 2025-11-04
|
||||||
|
|
||||||
|
### 📚 Documentation
|
||||||
|
|
||||||
|
- 新增 /enhance-prompt 命令并更新所有 README 文档
|
||||||
|
|
||||||
|
## [3.1] - 2025-09-17
|
||||||
|
|
||||||
|
### 💼 Other
|
||||||
|
|
||||||
|
- Sync READMEs with actual commands/agents; remove nonexistent commands; enhance requirements-pilot with testing decision gate and options.
|
||||||
|
|
||||||
|
<!-- generated by git-cliff -->
|
||||||
|
|||||||
17
Makefile
17
Makefile
@@ -1,7 +1,7 @@
|
|||||||
# Claude Code Multi-Agent Workflow System Makefile
|
# Claude Code Multi-Agent Workflow System Makefile
|
||||||
# Quick deployment for BMAD and Requirements workflows
|
# Quick deployment for BMAD and Requirements workflows
|
||||||
|
|
||||||
.PHONY: help install deploy-bmad deploy-requirements deploy-essentials deploy-advanced deploy-all deploy-commands deploy-agents clean test
|
.PHONY: help install deploy-bmad deploy-requirements deploy-essentials deploy-advanced deploy-all deploy-commands deploy-agents clean test changelog
|
||||||
|
|
||||||
# Default target
|
# Default target
|
||||||
help:
|
help:
|
||||||
@@ -22,6 +22,7 @@ help:
|
|||||||
@echo " deploy-all - Deploy everything (commands + agents)"
|
@echo " deploy-all - Deploy everything (commands + agents)"
|
||||||
@echo " test-bmad - Test BMAD workflow with sample"
|
@echo " test-bmad - Test BMAD workflow with sample"
|
||||||
@echo " test-requirements - Test Requirements workflow with sample"
|
@echo " test-requirements - Test Requirements workflow with sample"
|
||||||
|
@echo " changelog - Update CHANGELOG.md using git-cliff"
|
||||||
@echo " clean - Clean generated artifacts"
|
@echo " clean - Clean generated artifacts"
|
||||||
@echo " help - Show this help message"
|
@echo " help - Show this help message"
|
||||||
|
|
||||||
@@ -145,3 +146,17 @@ all: deploy-all
|
|||||||
version:
|
version:
|
||||||
@echo "Claude Code Multi-Agent Workflow System v3.1"
|
@echo "Claude Code Multi-Agent Workflow System v3.1"
|
||||||
@echo "BMAD + Requirements-Driven Development"
|
@echo "BMAD + Requirements-Driven Development"
|
||||||
|
|
||||||
|
# Update CHANGELOG.md using git-cliff
|
||||||
|
changelog:
|
||||||
|
@echo "📝 Updating CHANGELOG.md with git-cliff..."
|
||||||
|
@if ! command -v git-cliff > /dev/null 2>&1; then \
|
||||||
|
echo "❌ git-cliff not found. Installing via Homebrew..."; \
|
||||||
|
brew install git-cliff; \
|
||||||
|
fi
|
||||||
|
@git-cliff -o CHANGELOG.md
|
||||||
|
@echo "✅ CHANGELOG.md updated successfully!"
|
||||||
|
@echo ""
|
||||||
|
@echo "Preview the changes:"
|
||||||
|
@echo " git diff CHANGELOG.md"
|
||||||
|
|
||||||
|
|||||||
72
cliff.toml
Normal file
72
cliff.toml
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
# git-cliff configuration file
|
||||||
|
# https://git-cliff.org/docs/configuration
|
||||||
|
|
||||||
|
[changelog]
|
||||||
|
# changelog header
|
||||||
|
header = """
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
"""
|
||||||
|
# template for the changelog body
|
||||||
|
body = """
|
||||||
|
{% if version %}
|
||||||
|
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
|
||||||
|
{% else %}
|
||||||
|
## Unreleased
|
||||||
|
{% endif %}
|
||||||
|
{% for group, commits in commits | group_by(attribute="group") %}
|
||||||
|
### {{ group }}
|
||||||
|
|
||||||
|
{% for commit in commits %}
|
||||||
|
- {{ commit.message | split(pat="\n") | first }}
|
||||||
|
{% endfor -%}
|
||||||
|
{% endfor -%}
|
||||||
|
"""
|
||||||
|
# remove the leading and trailing whitespace from the template
|
||||||
|
trim = true
|
||||||
|
# changelog footer
|
||||||
|
footer = """
|
||||||
|
<!-- generated by git-cliff -->
|
||||||
|
"""
|
||||||
|
|
||||||
|
[git]
|
||||||
|
# parse the commits based on https://www.conventionalcommits.org
|
||||||
|
conventional_commits = true
|
||||||
|
# filter out the commits that are not conventional
|
||||||
|
filter_unconventional = false
|
||||||
|
# process each line of a commit as an individual commit
|
||||||
|
split_commits = false
|
||||||
|
# regex for preprocessing the commit messages
|
||||||
|
commit_preprocessors = [
|
||||||
|
{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](https://github.com/cexll/myclaude/issues/${2}))" },
|
||||||
|
]
|
||||||
|
# regex for parsing and grouping commits
|
||||||
|
commit_parsers = [
|
||||||
|
{ message = "^feat", group = "🚀 Features" },
|
||||||
|
{ message = "^fix", group = "🐛 Bug Fixes" },
|
||||||
|
{ message = "^doc", group = "📚 Documentation" },
|
||||||
|
{ message = "^perf", group = "⚡ Performance" },
|
||||||
|
{ message = "^refactor", group = "🚜 Refactor" },
|
||||||
|
{ message = "^style", group = "🎨 Styling" },
|
||||||
|
{ message = "^test", group = "🧪 Testing" },
|
||||||
|
{ message = "^chore\\(release\\):", skip = true },
|
||||||
|
{ message = "^chore", group = "⚙️ Miscellaneous Tasks" },
|
||||||
|
{ body = ".*security", group = "🛡️ Security" },
|
||||||
|
{ message = "^revert", group = "◀️ Revert" },
|
||||||
|
{ message = ".*", group = "💼 Other" },
|
||||||
|
]
|
||||||
|
# protect breaking changes from being skipped due to matching a skipping commit_parser
|
||||||
|
protect_breaking_commits = false
|
||||||
|
# filter out the commits that are not matched by commit parsers
|
||||||
|
filter_commits = false
|
||||||
|
# glob pattern for matching git tags
|
||||||
|
tag_pattern = "v[0-9]*"
|
||||||
|
# regex for skipping tags
|
||||||
|
skip_tags = "v0.1.0-beta.1"
|
||||||
|
# regex for ignoring tags
|
||||||
|
ignore_tags = ""
|
||||||
|
# sort the tags topologically
|
||||||
|
topo_order = false
|
||||||
|
# sort the commits inside sections by oldest/newest order
|
||||||
|
sort_commits = "newest"
|
||||||
@@ -36,6 +36,10 @@ func (ClaudeBackend) BuildArgs(cfg *Config, targetArg string) []string {
|
|||||||
// args = append(args, "--dangerously-skip-permissions")
|
// args = append(args, "--dangerously-skip-permissions")
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
// Prevent infinite recursion: disable all setting sources (user, project, local)
|
||||||
|
// This ensures a clean execution environment without CLAUDE.md or skills that would trigger codeagent
|
||||||
|
args = append(args, "--setting-sources", "")
|
||||||
|
|
||||||
if cfg.Mode == "resume" {
|
if cfg.Mode == "resume" {
|
||||||
if cfg.SessionID != "" {
|
if cfg.SessionID != "" {
|
||||||
// Claude CLI uses -r <session_id> for resume.
|
// Claude CLI uses -r <session_id> for resume.
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ func TestClaudeBuildArgs_ModesAndPermissions(t *testing.T) {
|
|||||||
t.Run("new mode uses workdir without skip by default", func(t *testing.T) {
|
t.Run("new mode uses workdir without skip by default", func(t *testing.T) {
|
||||||
cfg := &Config{Mode: "new", WorkDir: "/repo"}
|
cfg := &Config{Mode: "new", WorkDir: "/repo"}
|
||||||
got := backend.BuildArgs(cfg, "todo")
|
got := backend.BuildArgs(cfg, "todo")
|
||||||
want := []string{"-p", "--dangerously-skip-permissions", "--output-format", "stream-json", "--verbose", "todo"}
|
want := []string{"-p", "--dangerously-skip-permissions", "--setting-sources", "", "--output-format", "stream-json", "--verbose", "todo"}
|
||||||
if !reflect.DeepEqual(got, want) {
|
if !reflect.DeepEqual(got, want) {
|
||||||
t.Fatalf("got %v, want %v", got, want)
|
t.Fatalf("got %v, want %v", got, want)
|
||||||
}
|
}
|
||||||
@@ -20,7 +20,7 @@ func TestClaudeBuildArgs_ModesAndPermissions(t *testing.T) {
|
|||||||
t.Run("new mode opt-in skip permissions with default workdir", func(t *testing.T) {
|
t.Run("new mode opt-in skip permissions with default workdir", func(t *testing.T) {
|
||||||
cfg := &Config{Mode: "new", SkipPermissions: true}
|
cfg := &Config{Mode: "new", SkipPermissions: true}
|
||||||
got := backend.BuildArgs(cfg, "-")
|
got := backend.BuildArgs(cfg, "-")
|
||||||
want := []string{"-p", "--dangerously-skip-permissions", "--output-format", "stream-json", "--verbose", "-"}
|
want := []string{"-p", "--dangerously-skip-permissions", "--setting-sources", "", "--output-format", "stream-json", "--verbose", "-"}
|
||||||
if !reflect.DeepEqual(got, want) {
|
if !reflect.DeepEqual(got, want) {
|
||||||
t.Fatalf("got %v, want %v", got, want)
|
t.Fatalf("got %v, want %v", got, want)
|
||||||
}
|
}
|
||||||
@@ -29,7 +29,7 @@ func TestClaudeBuildArgs_ModesAndPermissions(t *testing.T) {
|
|||||||
t.Run("resume mode uses session id and omits workdir", func(t *testing.T) {
|
t.Run("resume mode uses session id and omits workdir", func(t *testing.T) {
|
||||||
cfg := &Config{Mode: "resume", SessionID: "sid-123", WorkDir: "/ignored"}
|
cfg := &Config{Mode: "resume", SessionID: "sid-123", WorkDir: "/ignored"}
|
||||||
got := backend.BuildArgs(cfg, "resume-task")
|
got := backend.BuildArgs(cfg, "resume-task")
|
||||||
want := []string{"-p", "--dangerously-skip-permissions", "-r", "sid-123", "--output-format", "stream-json", "--verbose", "resume-task"}
|
want := []string{"-p", "--dangerously-skip-permissions", "--setting-sources", "", "-r", "sid-123", "--output-format", "stream-json", "--verbose", "resume-task"}
|
||||||
if !reflect.DeepEqual(got, want) {
|
if !reflect.DeepEqual(got, want) {
|
||||||
t.Fatalf("got %v, want %v", got, want)
|
t.Fatalf("got %v, want %v", got, want)
|
||||||
}
|
}
|
||||||
@@ -38,7 +38,7 @@ func TestClaudeBuildArgs_ModesAndPermissions(t *testing.T) {
|
|||||||
t.Run("resume mode without session still returns base flags", func(t *testing.T) {
|
t.Run("resume mode without session still returns base flags", func(t *testing.T) {
|
||||||
cfg := &Config{Mode: "resume", WorkDir: "/ignored"}
|
cfg := &Config{Mode: "resume", WorkDir: "/ignored"}
|
||||||
got := backend.BuildArgs(cfg, "follow-up")
|
got := backend.BuildArgs(cfg, "follow-up")
|
||||||
want := []string{"-p", "--dangerously-skip-permissions", "--output-format", "stream-json", "--verbose", "follow-up"}
|
want := []string{"-p", "--dangerously-skip-permissions", "--setting-sources", "", "--output-format", "stream-json", "--verbose", "follow-up"}
|
||||||
if !reflect.DeepEqual(got, want) {
|
if !reflect.DeepEqual(got, want) {
|
||||||
t.Fatalf("got %v, want %v", got, want)
|
t.Fatalf("got %v, want %v", got, want)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1378,7 +1378,7 @@ func TestBackendBuildArgs_ClaudeBackend(t *testing.T) {
|
|||||||
backend := ClaudeBackend{}
|
backend := ClaudeBackend{}
|
||||||
cfg := &Config{Mode: "new", WorkDir: defaultWorkdir}
|
cfg := &Config{Mode: "new", WorkDir: defaultWorkdir}
|
||||||
got := backend.BuildArgs(cfg, "todo")
|
got := backend.BuildArgs(cfg, "todo")
|
||||||
want := []string{"-p", "--dangerously-skip-permissions", "--output-format", "stream-json", "--verbose", "todo"}
|
want := []string{"-p", "--dangerously-skip-permissions", "--setting-sources", "", "--output-format", "stream-json", "--verbose", "todo"}
|
||||||
if len(got) != len(want) {
|
if len(got) != len(want) {
|
||||||
t.Fatalf("length mismatch")
|
t.Fatalf("length mismatch")
|
||||||
}
|
}
|
||||||
@@ -1399,7 +1399,7 @@ func TestClaudeBackendBuildArgs_OutputValidation(t *testing.T) {
|
|||||||
target := "ensure-flags"
|
target := "ensure-flags"
|
||||||
|
|
||||||
args := backend.BuildArgs(cfg, target)
|
args := backend.BuildArgs(cfg, target)
|
||||||
expectedPrefix := []string{"-p", "--dangerously-skip-permissions", "--output-format", "stream-json", "--verbose"}
|
expectedPrefix := []string{"-p", "--dangerously-skip-permissions", "--setting-sources", "", "--output-format", "stream-json", "--verbose"}
|
||||||
|
|
||||||
if len(args) != len(expectedPrefix)+1 {
|
if len(args) != len(expectedPrefix)+1 {
|
||||||
t.Fatalf("args length=%d, want %d", len(args), len(expectedPrefix)+1)
|
t.Fatalf("args length=%d, want %d", len(args), len(expectedPrefix)+1)
|
||||||
|
|||||||
Reference in New Issue
Block a user