| Files | Last commit | Last update |
|---|---|---|
docs: governance write API is shipped, not planned - API.md (zh/en): the "write API design (not implemented)" section becomes the actual contract — endpoint table, scope restriction, audit events, and why malformed rules are rejected instead of dropped. Also documents /api/messages/truncate's restore_files and its honest no-snapshot response. - CONFIG.md (zh/en): permission rules and approval profiles are editable from the Web UI (user scope), while /api/settings still returns 400 for them. - competitive-comparison.md: message-level undo and per-subagent model flip from ⚠️/❌ to ✅, and the four P0 items already shipped are marked closed instead of reading as outstanding work. | 8 days ago | |
release: 0.9.1 — 开源整理 + 真实模型端到端验证修复 本次发布把此前多轮技术债修复与首次真实模型端到端验证的成果整理入库, 并完成开源前的仓库清理。 修复(真实模型测试暴露): - 环境变量覆盖被 config.toml 压制(SPARK_PROVIDER__* 等静默失效,与文档相反) - 任意自定义模型名经 LiteLLM 报 "LLM Provider NOT provided"(glm-5.3-flash/Qwen 等) - 检查点回滚遇 SQLite WAL/SHM 锁文件崩溃(快照排除 + 恢复容错) - McpBridge.start 注册工具后无法调用(ctx.mcp_call 未绑定) - HookConfig.on_deny 默认值 warn 与 TOML 路径 block 不一致 - /api/status has_api_key 不识别环境变量;detect_env 首次 12 秒串行探测 修复(此前批次一并发布): - apply_edit 未入 WRITE_TOOLS(full-auto 下被拒) - Web 保存设置损坏 MCP 配置(丢 transport/http/allowed_tools) - save_config 丢 PermissionRule.tool / agent.system_prompt - system_prompt/effort 经 Web 全链路不可用;审批档位三份定义不一致 - graph.py interrupt resume 值被丢弃、deny 判决被忽略 - 前端 Terminal 按键重启失效、流断线重复执行、跨行高亮掉色等 新增: - real-model 验证矩阵(18 项配置面端到端)+ EXE 真模型冒烟 - spark/asyncutil.py、spark/tools/_common.py(收拢重复实现) - docs/competitive-comparison.md(vs Qoder/ZCode/opencode/Codex) - 四语 README 真实截图展示区 变更: - 端口自适应 + 缺 key 降级 demo 模式(Web 设置填 key 即切真实模型) - i18n 全量接入(26 组件 / 370 键) - 清理退役物:requirements.lock / tests/legacy_root / examples/plugins / 过期审计文档 - 版本统一 0.9.1(三处一致);CHANGELOG 发行记录 验证:626 passed / 5 skipped / 0 failed;ruff 0;mypy 0;EXE 重建冒烟通过。 audit_id: aqg-code-construction release-0.9.1-opensource-prep (PASSED, path=plan) | 27 days ago | |
feat: close out the REMAINING "do-now" list; docs truth pass Four capabilities from docs/REMAINING.md, each with tests: * spark uninstall — prints the full ~/.spark inventory with per-item sizes, asks before deleting, --list to preview, --yes to skip. A guard refuses to run when SPARK_HOME points at the user's home or a drive root; Spark owns no venv, so the package itself is pip/scoop's job. * scoop distribution — bucket/spark.json makes this repo a scoop bucket (scoop bucket add spark <repo>); autoupdate pulls the asset digest from the GitHub Release API instead of a SHA256SUMS sidecar. * TUI status bar — agent.status_items ordered list (model/base_url/key/ approval/sandbox/workdir/session); unknown items skipped, empty workdir omitted, persisted only when customised. * compaction prompt override — .spark/prompts/compact.md (project) then ~/.spark/prompts/compact.md (global) replace the built-in 5-section prompt for both summarisation and multi-round merge; empty files fall through. Quality pass while in here: doctor --backup now formats sizes through the shared human-size helper, the local-data table in CONFIG.md no longer lists a spark.log nothing writes (and now matches what uninstall actually deletes), the status-bar labels live in one module constant. | 7 days ago | |
feat: close out the REMAINING "do-now" list; docs truth pass Four capabilities from docs/REMAINING.md, each with tests: * spark uninstall — prints the full ~/.spark inventory with per-item sizes, asks before deleting, --list to preview, --yes to skip. A guard refuses to run when SPARK_HOME points at the user's home or a drive root; Spark owns no venv, so the package itself is pip/scoop's job. * scoop distribution — bucket/spark.json makes this repo a scoop bucket (scoop bucket add spark <repo>); autoupdate pulls the asset digest from the GitHub Release API instead of a SHA256SUMS sidecar. * TUI status bar — agent.status_items ordered list (model/base_url/key/ approval/sandbox/workdir/session); unknown items skipped, empty workdir omitted, persisted only when customised. * compaction prompt override — .spark/prompts/compact.md (project) then ~/.spark/prompts/compact.md (global) replace the built-in 5-section prompt for both summarisation and multi-round merge; empty files fall through. Quality pass while in here: doctor --backup now formats sizes through the shared human-size helper, the local-data table in CONFIG.md no longer lists a spark.log nothing writes (and now matches what uninstall actually deletes), the status-bar labels live in one module constant. | 7 days ago |
| Files | Last commit | Last update |
|---|---|---|
| 8 days ago | ||
| 27 days ago | ||
| 7 days ago | ||
| 7 days ago |