Codineer v0.6.8
Features
- Runtime fallback to
~/.codineer/— when no.codineer/settings.jsonexists in
the ancestor chain, all runtime artifacts (sessions, agents, todos, sandbox dirs)
automatically fall back to~/.codineer/instead of creating a stray.codineer/
directory in arbitrary locations. (feat(runtime)) MultiEdittool — apply multiple file edits in a single tool call. (feat(tools))AskUserQuestiontool — present structured multiple-choice questions to the user
mid-session. (feat(tools))codineer initfull scaffold — generates the complete.codineer/layout
(plugins/,skills/,agents/,sessions/,settings.json,.gitignore,
CODINEER.md) and silently auto-completes~/.codineer/on every startup.
(feat(init))- Bundled plugins embedded in binary — built-in plugins are compiled in via
include_str!and extracted to~/.codineer/plugins/on launch; no separate
source directory is required in the distributed binary. (feat(plugins))
Bug Fixes
is_initializedfalse-positive on banner — the "run/init" hint was incorrectly
suppressed for any directory under$HOMEbecause~/.codineer/settings.jsonmatched
the ancestor walk. Now onlycwd/.codineer/settings.jsonis checked. (fix(banner))- Windows dead-code warning — the
executablefield ofBundledPluginFiletriggered
a-D dead-codelint on Windows (field is#[cfg(unix)]-only); suppressed with
#[cfg_attr(not(unix), allow(dead_code))]. (fix(plugins))
Refactoring & Internal Improvements
find_project_codineer_dir()helper — shared ancestor-walk logic extracted and
used consistently bycodineer_runtime_dir(),ConfigLoader::discover(), and skill
path resolution.ConfigLoaderuses project root detection — running from a project sub-directory
now correctly picks up the nearest ancestor.codineer/settings.json.sandbox_dirs()helper — eliminates duplicatecodineer_runtime_dir()calls in
sandbox_env()andgenerate_seatbelt_profile()..codineer.jsonflat config removed — only directory-basedsettings.jsonis
supported; the redundant flat config and its error-handling code have been deleted.CODINEER.mdmoved into.codineer/— project memory file now lives at
.codineer/CODINEER.md; the legacy root-level location is still checked for reading..codineer/.gitignorescaffold —initgenerates a nested.gitignoreinside
.codineer/to tracksettings.json,plugins/,skills/, andCODINEER.mdwhile
ignoring runtime artifacts; root-level.gitignorecleaned up accordingly.- Plugin manifest convention simplified — dropped the
.codineer-plugin/
subdirectory;plugin.jsonnow lives at the plugin directory root directly. OnceLockreplaceslazy_static— vim-detection one-time init migrated to
std::sync::OnceLock; externallazy_staticdependency removed.- Sandbox and agent dirs moved under
.codineer/—sandbox-home/,sandbox-tmp/,
andagents/are now stored under.codineer/for a cleaner workspace layout. resolve_skill_pathunified — skill discovery usescodineer_runtime_dir()to
match other runtime artifacts; removed stale~/.agents/skillslegacy path.
Documentation
- Comprehensive plugin development guide added (
crates/plugins/README.md+
Chinese translationREADME_CN.md). CODINEER.mdrewritten with real project context: crate layout, toolchain, coding
conventions, key design decisions, and working agreement.- Plugin discovery table corrected:
.codineer/plugins/is not auto-discovered;
useplugins.externalDirectoriesto register project-local plugins. CODINEER_CONFIG_HOMEdescription corrected (removed stale flat-config references).- Root
README.md/README_CN.mdupdated withCODINEER.mdpurpose and monorepo
support explanation.
新功能
- 运行时目录自动回退
~/.codineer/— 当祖先目录链中不存在.codineer/settings.json时,
所有运行时产物(sessions、agents、todos、sandbox 目录)自动回退到~/.codineer/,
不再在任意目录生成散乱的.codineer/。 MultiEdit工具 — 单次工具调用对多个文件执行批量编辑。AskUserQuestion工具 — 会话中途向用户展示结构化多选问题。codineer init完整脚手架 — 一键生成完整.codineer/目录结构
(plugins/、skills/、agents/、sessions/、settings.json、.gitignore、CODINEER.md),
并在每次启动时静默补全~/.codineer/。- 内置插件嵌入二进制 — 通过
include_str!将内置插件编译进二进制,启动时解压到
~/.codineer/plugins/;发布的二进制无需携带额外插件源目录。
Bug 修复
- 欢迎横幅
is_initialized误判 — 在$HOME下任意子目录运行时,因祖先遍历命中
~/.codineer/settings.json,"运行/init" 提示被错误隐藏;现在仅检测
cwd/.codineer/settings.json。 - Windows 死代码警告 —
BundledPluginFile.executable字段仅在#[cfg(unix)]
中使用,在 Windows 触发-D dead-codelint;已通过cfg_attr屏蔽。
重构与内部改进
find_project_codineer_dir()公共 helper — 提取祖先目录遍历逻辑,供
codineer_runtime_dir()、ConfigLoader::discover()和技能路径解析统一复用。ConfigLoader对齐项目根检测 — 在项目子目录运行时,现在能正确找到最近祖先的
.codineer/settings.json。sandbox_dirs()helper — 消除sandbox_env()与generate_seatbelt_profile()
中重复的codineer_runtime_dir()调用。- 移除
.codineer.json扁平配置 — 仅保留目录式settings.json;冗余的扁平配置
及其错误处理代码已全部删除。 CODINEER.md迁入.codineer/— 项目记忆文件现位于.codineer/CODINEER.md;
根目录旧位置仍可回退读取(向后兼容)。.codineer/.gitignore脚手架 —init在.codineer/内生成独立.gitignore,
追踪settings.json、plugins/、skills/、CODINEER.md,忽略运行时产物;
根目录.gitignore同步清理。- 插件 manifest 规范简化 — 废弃
.codineer-plugin/子目录,plugin.json直接位于插件目录根部。 OnceLock替换lazy_static— vim 检测改用标准库std::sync::OnceLock;
移除外部lazy_static依赖。- sandbox 及 agent 目录迁入
.codineer/—sandbox-home/、sandbox-tmp/、agents/
统一收拢到.codineer/下,工作区更整洁。 resolve_skill_path统一 — 技能发现改用codineer_runtime_dir(),
与其他运行时产物保持一致;移除遗留的~/.agents/skills路径。
文档
- 新增完整插件开发教程(
crates/plugins/README.md+ 中文版README_CN.md)。 CODINEER.md以真实项目信息重写:crate 布局、工具链、编码规范、关键设计决策、工作协议。- 插件发现表格更正:
.codineer/plugins/不被自动发现,需在
plugins.externalDirectories中显式配置。 CODINEER_CONFIG_HOME描述修正(移除对已删除扁平配置的过时说明)。- 根目录
README.md/README_CN.md补充CODINEER.md的用途及 monorepo 支持说明。
Full Changelog: v0.6.7...v0.6.8
Full Changelog: v0.6.7...v0.6.8
Full Changelog: v0.6.7...v0.6.8