@fxri/toolkit 1.11.5 → 1.11.7

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/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  # 方弦工具集
2
2
 
3
+ ## 1.11.7
4
+
5
+ > 2026-10-08 发布
6
+
7
+ ### ✨ 新增功能
8
+
9
+ - 新增 `toolkit conventions format` 子命令,把格式化器为 GFM 表格填充出的空白层归一为紧凑形态——只动单元格间距与列对齐填充、不改语义,幂等、跳过 fenced code block,支持 `--dry-run` 预演与 `--format json`
10
+ - `toolkit init` 检测到宿主疑似使用 prettier 时幂等托管 `.prettierignore`,把任务区整目录排除,从源头避免表格被列对齐填充(本包源仓库、任务区外置或即仓库根、无 prettier 迹象三种情形跳过)
11
+ - `toolkit conventions status` 与 `toolkit tasks check` 检出表格列对齐填充并提示上述两种处置(软告警,不阻断)
12
+ - 新增「跨仓库改动各自归档」协作纪律——任务档为仓库自述、只记本仓的改动与动机,多仓会话各仓各自建档归档,不在一仓记录里承载另一仓的工作痕迹;`scope` 只标本仓内的端 / 面(落 `SPEC.md` §0 第 5 条、`docs/ai-rules.md` 稳定纪律与 `fxri-plan-to-task` / `fxri-session-recap` 技能)
13
+
14
+ ### ⚡ 优化改进
15
+
16
+ - 通用示例值去具体化——文档、技能、源码注释与测试中的示例端名统一为仓内端对 `web+server`,不再指涉具体接入方仓库
17
+ - 归档口径扩充——事实更正例外并入「口径变更引发的历史事实字段更正」,受影响的 `scope` 等事实字段可更正、唯一键 / 完成时间 / 状态 / 负责人仍冻结
18
+
19
+ ### 📝 文档更新
20
+
21
+ - 变更集 bump 判定口径改为按改动的能力量级(全新大功能 / 独立新能力 →minor,存量能力上的修补与增量 →patch),与条目前缀解耦(口径真源见 `skills/fxri-release-changelog/references/changelog-format.md`)
22
+
23
+ ## 1.11.6
24
+
25
+ > 2026-10-02 发布
26
+
27
+ ### ✨ 新增功能
28
+
29
+ - `toolkit tasks normalize` 支持检出并解决归档文件中的 git 冲突标记——多人同天归档、`pull` 后同一归档文件出现冲突标记时,`--fix` 按并集去重 + 完成时间降序确定性合并(保留冲突两侧任务块、丢弃 diff3 的 `|||||||` base 段与全部标记行),无需人工逐块合并;`toolkit tasks check` 同步以软告警暴露
30
+
31
+ ### 🐛 问题修复
32
+
33
+ - `toolkit tasks --export` 的 `.xlsx`「已归档」sheet 补齐「创建日期」列(列序:任务名 / 状态 / 负责人 / 范围 / 创建日期 / 完成时间 / 来源文件),使归档行导出 → 导入往返后 `created` 不再回落运行当天、落回正确的月份目录
34
+
35
+ ### 📝 文档更新
36
+
37
+ - `fxri-plan-to-task` 技能 1.4.5 → 1.5.0:同步归档冲突标记处置口径(失败模式表、手工归档步骤、多写者约定)
38
+
3
39
  ## 1.11.5
4
40
 
5
41
  > 2026-09-30 发布
@@ -427,7 +463,7 @@
427
463
 
428
464
  ### 🐛 问题修复
429
465
 
430
- - 范围字段多值口径落地——scope 多值以半角加号分隔(如 `toolkit+lxgl-web`),`--scope` 过滤改按任一段命中,`tasks stats` 按范围拆段统计
466
+ - 范围字段多值口径落地——scope 多值以半角加号分隔(如 `web+server`),`--scope` 过滤改按任一段命中,`tasks stats` 按范围拆段统计
431
467
  - `tasks check` 对范围含顿号/逗号/括号软告警并给修复指引
432
468
  - `tasks import` 对范围列含顿号/逗号/括号提示按单值写入(不自动转换)
433
469
  - `tasks normalize` 检出历史归档范围污染,顿号/逗号分隔可 `--fix` 自动归一为半角加号,括号注释仅提示人工确认
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright © 2026 唐启云
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright © 2026 唐启云
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/NOTICE CHANGED
@@ -1,9 +1,9 @@
1
- @fxri/toolkit
2
- Copyright © 2026 唐启云. All rights reserved.
3
-
4
- 出品方:方弦研究所(唐启云个人项目品牌,非独立法人实体)
5
-
6
- 商标声明:
7
- "方弦®"为第42类注册商标(注册号89648411),核定服务项目:计算机出租、计算机软件设计、为他人研究和开发新产品、计算机软件维护、把有形的数据或文件转换成电子媒体、为他人创建和维护网站、网络服务器出租、提供互联网搜索引擎、托管计算机站(网站)、云计算。
8
- 本开源许可(MIT License)不授予商标使用权。
9
- 详见 TRADEMARK.md 了解完整商标信息。
1
+ @fxri/toolkit
2
+ Copyright © 2026 唐启云. All rights reserved.
3
+
4
+ 出品方:方弦研究所(唐启云个人项目品牌,非独立法人实体)
5
+
6
+ 商标声明:
7
+ "方弦®"为第42类注册商标(注册号89648411),核定服务项目:计算机出租、计算机软件设计、为他人研究和开发新产品、计算机软件维护、把有形的数据或文件转换成电子媒体、为他人创建和维护网站、网络服务器出租、提供互联网搜索引擎、托管计算机站(网站)、云计算。
8
+ 本开源许可(MIT License)不授予商标使用权。
9
+ 详见 TRADEMARK.md 了解完整商标信息。
package/README.md CHANGED
@@ -39,7 +39,7 @@ pnpm exec toolkit tasks
39
39
  | --- | --- | --- |
40
40
  | 任务管理(tasks) | 方案落盘、总览过滤、校验归档、导入导出 CSV / XLSX / JSON | [CLI 参考](./docs/cli.md) · [任务文件规范](./docs/guide.md#任务文件规范) |
41
41
  | 多语言 CHANGELOG(changelog) | 封装 changesets 发版、分组标题本地化 | [CLI 参考](./docs/cli.md#changelog) |
42
- | 协作规范载体(conventions) | 把任务里提炼的规范收进 `.tasks/conventions/`,成为可检索、可校验的项目规范源;支持结构升级与只读体检 | [CLI 参考](./docs/cli.md) · [完整攻略](./docs/guide.md#conventions-规范沉淀地) |
42
+ | 协作规范载体(conventions) | 把任务里提炼的规范收进 `.tasks/conventions/`,成为可检索、可校验的项目规范源;支持结构升级、表格空白层归一与只读体检 | [CLI 参考](./docs/cli.md) · [完整攻略](./docs/guide.md#conventions-规范沉淀地) |
43
43
  | Node API | 把上述能力嵌进脚本或平台 | [API 参考](./docs/api.md) |
44
44
  | 隐私脱敏 | 落盘前自动掩码邮箱、手机号、密钥等 | [配置参考](./docs/config.md) |
45
45
  | AI 技能包(skills) | 不装本工具也能让 AI 按同一套规范干活;装了可一键分发技能(`--scope project` 随仓库入库、队友 clone 即用) | [完整攻略](./docs/guide.md#ai-技能包-skills) · [FAQ](./docs/faq.md#工具和-skills-都得装吗) |
package/SPEC.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # 任务文件规范(SPEC)
2
2
 
3
- > 规范更新时间 2026-09-27 02:35。本规范内容变更时以变更时刻更新此值,实现方与规范快照据此对照是否失同步。
3
+ > 规范更新时间 2026-10-08 00:15。本规范内容变更时以变更时刻更新此值,实现方与规范快照据此对照是否失同步。
4
4
 
5
5
  > 本规范**全语言支持**,面向**多人 + AI 跨项目协作**,定义任务文件的目录结构、文件格式与归档规则。任何编程语言均可按本规范实现读写;@fxri/toolkit 的 `tasks` 域仅为参考实现。
6
6
  >
@@ -10,10 +10,11 @@
10
10
 
11
11
  任务区是**多写者共享**的:同一 `.tasks/` 可能被多人或多个 AI 参与。为避免互相覆盖,归档、归一化修复等工具内部写操作以排他锁(`.archive.lock`)防并发覆盖;人 / AI 的直接编辑遵循「先查后写」约定。约定:
12
12
 
13
- 1. **先查后写**:新建、更新或归档任务前,先 `toolkit tasks` 查看 active 总览,并核对 archive 是否已有同主题任务;active 已有同主题任务则更新原文件,禁止重复建档;已分叉成不同范围时问用户(拆新任务 or 合并更新)。archive 已有同主题任务(已归档完成)时按**改动判别**:本次不产生仓库文件改动(重复提议 / 重复执行)则不重复建档,仅提示「同主题任务已归档于 {日期}」;本次产生仓库文件改动(延续 / 扩展 / 重新实现)则重新建档,并在正文首行标注来源链 `延续 {原归档任务名}(见 archive/{YYYYMM}/{YYYYMMDD}.md)`;仅修正旧记录的时间或内容走历史修正(fxri-session-recap 模式三),不建档。**仓库文件改动口径**:需写入版本控制的工作区文件的增 / 改 / 删(源码、配置、文档、技能、任务区自身均计入),纯读取、纯执行、纯汇报不计入;拿不准时列出差异问用户,不猜。**归档块不可变**:已归档块不追加新的工作内容,延续需求一律走新任务;唯一例外是**事实更正**——后续核实推翻原块结论时,在其正文末尾追加「修订记录」(保留原结论、不动元数据行、附更正时刻与依据)。
13
+ 1. **先查后写**:新建、更新或归档任务前,先 `toolkit tasks` 查看 active 总览,并核对 archive 是否已有同主题任务;active 已有同主题任务则更新原文件,禁止重复建档;已分叉成不同范围时问用户(拆新任务 or 合并更新)。archive 已有同主题任务(已归档完成)时按**改动判别**:本次不产生仓库文件改动(重复提议 / 重复执行)则不重复建档,仅提示「同主题任务已归档于 {日期}」;本次产生仓库文件改动(延续 / 扩展 / 重新实现)则重新建档,并在正文首行标注来源链 `延续 {原归档任务名}(见 archive/{YYYYMM}/{YYYYMMDD}.md)`;仅修正旧记录的时间或内容走历史修正(fxri-session-recap 模式三),不建档。**仓库文件改动口径**:需写入版本控制的工作区文件的增 / 改 / 删(源码、配置、文档、技能、任务区自身均计入),纯读取、纯执行、纯汇报不计入;拿不准时列出差异问用户,不猜。**归档块不可变**:已归档块不追加新的工作内容,延续需求一律走新任务;唯一例外是**事实更正**——后续核实推翻原块结论、或协作口径变更导致历史事实字段需更正时,在其正文末尾追加「修订记录」(保留原结论、附更正时刻与依据);口径变更类更正可改受影响的**事实字段**(如 `scope`),但唯一键 / 完成时间 / 状态 / 负责人仍冻结。
14
14
  2. **任务唯一键**:`{YYYYMMDD}-{用户名}-{任务简述}` 唯一标识一个任务;多人对同一需求不得各自建档,应共用同一文件。
15
15
  3. **收尾边界到沉淀**:强制约束到「归档 + 规范沉淀」为止——终结态任务归档后做任务级规范沉淀(写入 conventions 载体),归档 + 沉淀即流程终点;提交、发版、推送不是必经步骤,是否执行取决于用户的全局 / 个人 / 项目规则。**动作不算,改动才算**:任务 = 已确认的方案 + 它落地的仓库文件改动;收尾动作(提交、发版、推送、部署)本身及其固有产物(版本号、更新日志、标签)不构成任务、不单独建档,但当这些动作过程中出现需改仓库文件才能解决的缺陷(如打包配置错误、发布渠道错误)时,该修复按普通任务建档。若提交代码,先归档与沉淀、后提交,任务记录与代码变更落在同一 git 提交。
16
16
  4. **可执行项必须落地为任务**:方案正文里的「待办 / 待实施 / 待核对」等子项,应拆分为独立 active 任务,不留游离待办;`toolkit tasks check` 会扫描此类未闭合标记。
17
+ 5. **跨仓库改动各自归档**:任务档是**仓库自述**,只记本仓的改动与动机;跨仓库是**会话属性而非仓库属性**,同一会话涉及多仓时各仓各自建档归档,不在一仓记录里承载另一仓的工作痕迹。判据取**视角**(描述的是不是本仓的改动与动机),非词表——依赖包名 / 被调接口名等属本仓事实者照写。故 `scope` 只标本仓内的端 / 面(见第 2 节)。通用裁剪版见技能包 `task-spec.md`。
17
18
 
18
19
  ## 1. 目录结构
19
20
 
@@ -70,7 +71,7 @@ scope: app
70
71
  | updated | string | 更新日 `YYYYMMDD` |
71
72
  | completed | string | 完成时间 `YYYY-MM-DD HH:mm`,`status` 为 `已完成`/`已放弃` 时必填;按四级时间源取证:当场打点(任务完成时取真实时间,首选)/ 聊天记录准确时间戳 / 任务改动 git 提交时间 / 系统当前时间兜底(须标注「收尾补记」);纯日期写法(`YYYY-MM-DD`)会被补齐 `00:00`,仅日期未补全完整时间会软告警 |
72
73
  | depends_on | array | 依赖任务文件名,引用可带 `.md` 扩展名(校验时自动归一为不含扩展名的 basename) |
73
- | scope | string | 影响范围;一任务多归属时以半角加号分隔(如 `toolkit+lxgl-web`),标签内不使用加号,顿号/逗号列表写法会被 check 软告警、`normalize --fix` 自动归一 |
74
+ | scope | string | 影响范围;只标本仓内的端 / 面(跨仓库改造时不含另一仓),一任务多归属时以半角加号分隔(如 `web+server`),标签内不使用加号,顿号/逗号列表写法会被 check 软告警、`normalize --fix` 自动归一 |
74
75
 
75
76
  ## 3. archive 归档文件
76
77
 
@@ -111,6 +112,7 @@ scope: app
111
112
  6. **完成时间口径**:`completed` 只填真实收工时间(四级时间源取证),日期应与归档文件日期一致;不一致属「日期漂移」,`toolkit tasks normalize` 会检出,`--fix` 自动把漂移块迁移到对应日期文件(迁移前可用 `normalize` 只读检查);归档文件放错月份目录(如 `archive/202608/20260903.md`)时 `--fix` 会将其移动到正确月份目录。⚠️ 补档 / 历史时间修正场景下,归档块的完成时间早于归档动作时间是正常的——修正块时间后执行 `normalize --fix` 即完成迁移。
112
113
  7. **任务块边界与疑似任务块**:任务块边界以块间 `---` 分隔符为唯一权威边界,`## 标题` 与 `> 元数据` 行仅作校验项(缺失或不全时仍解析为块,由 `normalize` 检出并提示);正文内部形如 `{YYYYMMDD}-{负责人}-{简述}` 的 `## ` 标题会被视为疑似任务块并在 `normalize` 检出提示人工确认(不自动修复)。
113
114
  8. **并发归档防护**:归档采用排他锁(`.archive.lock`),检测到并发归档时跳过并告警;`--dry-run` 可预演归档动作而不落盘。锁须具备自愈语义——持有进程已退出,或锁龄超过实现约定的绝对上限(兜底 pid 复用导致的「假存活」)时,后续写操作接管该锁而非永久阻塞;正常的并发写者仍按跳过处理。
115
+ 9. **冲突标记归一(多写者同天归档)**:多人同日归档时,`pull` 可能在按完成日期聚合的归档文件上留下 git 冲突标记;`toolkit tasks normalize` 检出此类标记,`--fix` 按并集去重 + 完成时间降序**确定性**解决——保留冲突两侧任务块、丢弃 diff3 风格的 `|||||||` base 段与全部标记行,无需人工逐块合并。
114
116
 
115
117
  ## 5. 其他语言实现要点
116
118
 
@@ -123,4 +125,4 @@ scope: app
123
125
  5. **任务块分隔**:归档文件内任务以块间 `---` 为唯一权威边界(`## 标题` 与 `> 元数据` 行仅作校验项),勿将正文内部的 `## ` 小节误判为任务边界。
124
126
  6. **敏感信息脱敏(可选)**:如需保护隐私,可在写归档前对正文自由文本做掩码;`owner` 等结构化字段保留原值。
125
127
  7. **校验(check)**:校验 active 任务 frontmatter 合法性(status 枚举、completed 必填与格式)、跨文件重名、`depends_on` 依赖存在性与成环、范围字段形态软告警(顿号/逗号/括号)。
126
- 8. **归一化(normalize)**:校验归档块元数据四字段完整性、完成时间与归档日期一致性、降序排序、范围字段形态(顿号/逗号疑似多值分隔可 `--fix` 归一为半角加号,括号疑似注释仅提示人工);`--fix` 可补齐缺失元数据并重排。
128
+ 8. **归一化(normalize)**:校验归档块元数据四字段完整性、完成时间与归档日期一致性、降序排序、范围字段形态(顿号/逗号疑似多值分隔可 `--fix` 归一为半角加号,括号疑似注释仅提示人工)、git 冲突标记(多写者同天归档的 `pull` 冲突可 `--fix` 按并集去重 + 降序确定性解决);`--fix` 可补齐缺失元数据并重排。
package/TRADEMARK.md CHANGED
@@ -1,41 +1,41 @@
1
- # 商标声明
2
-
3
- ## 基本信息
4
-
5
- | 项目 | 内容 |
6
- |---|---|
7
- | 商标名称 | 方弦® |
8
- | 商标类型 | 文字商标 |
9
- | 商标说明 | 商标由文字"方弦"组成 |
10
- | 商标类别 | 第42类(共10项) |
11
- | 注册号 | 89648411 |
12
- | 申请人 | 唐启云 |
13
- | 递交商标局 | 2026-01-12 |
14
- | 版本 | 基础版 |
15
-
16
- ## 第42类服务项目
17
-
18
- 计算机出租;计算机软件设计;为他人研究和开发新产品;计算机软件维护;把有形的数据或文件转换成电子媒体;为他人创建和维护网站;网络服务器出租;提供互联网搜索引擎;托管计算机站(网站);云计算。
19
-
20
- ## 权利状态
21
-
22
- "方弦®"商标(注册号89648411)已获中国国家知识产权局商标局核准注册,核定使用于第42类上述服务项目,现为注册商标。
23
-
24
- ## 授权范围
25
-
26
- 本仓库的开源许可证(MIT License)仅授予代码的使用、修改和分发权利,**不构成对任何商标、服务标记或品牌名称的授权许可**。
27
-
28
- 任何派生作品、修改版本、商业产品均不得使用"方弦"名称、Logo 或相关标识,除非获得书面授权。
29
-
30
- ## 使用规范
31
-
32
- - 在开源社区讨论、文档引用中提及本项目时,可使用"方弦®"指代本项目名称
33
- - 未经书面授权,不得在任何商业产品、服务或宣传材料中使用"方弦"标识
34
-
35
- ## 获取授权
36
-
37
- 如需将"方弦"商标用于商业用途,请联系:唐启云 <tqy@fxri.net>
38
-
39
- ## 侵权处理
40
-
41
- 如发现未经授权使用"方弦®"商标的行为,请通过上述联系方式举报。
1
+ # 商标声明
2
+
3
+ ## 基本信息
4
+
5
+ | 项目 | 内容 |
6
+ |---|---|
7
+ | 商标名称 | 方弦® |
8
+ | 商标类型 | 文字商标 |
9
+ | 商标说明 | 商标由文字"方弦"组成 |
10
+ | 商标类别 | 第42类(共10项) |
11
+ | 注册号 | 89648411 |
12
+ | 申请人 | 唐启云 |
13
+ | 递交商标局 | 2026-01-12 |
14
+ | 版本 | 基础版 |
15
+
16
+ ## 第42类服务项目
17
+
18
+ 计算机出租;计算机软件设计;为他人研究和开发新产品;计算机软件维护;把有形的数据或文件转换成电子媒体;为他人创建和维护网站;网络服务器出租;提供互联网搜索引擎;托管计算机站(网站);云计算。
19
+
20
+ ## 权利状态
21
+
22
+ "方弦®"商标(注册号89648411)已获中国国家知识产权局商标局核准注册,核定使用于第42类上述服务项目,现为注册商标。
23
+
24
+ ## 授权范围
25
+
26
+ 本仓库的开源许可证(MIT License)仅授予代码的使用、修改和分发权利,**不构成对任何商标、服务标记或品牌名称的授权许可**。
27
+
28
+ 任何派生作品、修改版本、商业产品均不得使用"方弦"名称、Logo 或相关标识,除非获得书面授权。
29
+
30
+ ## 使用规范
31
+
32
+ - 在开源社区讨论、文档引用中提及本项目时,可使用"方弦®"指代本项目名称
33
+ - 未经书面授权,不得在任何商业产品、服务或宣传材料中使用"方弦"标识
34
+
35
+ ## 获取授权
36
+
37
+ 如需将"方弦"商标用于商业用途,请联系:唐启云 <tqy@fxri.net>
38
+
39
+ ## 侵权处理
40
+
41
+ 如发现未经授权使用"方弦®"商标的行为,请通过上述联系方式举报。