easy-coding-harness 0.7.1-beta0 → 0.7.1

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
@@ -6,6 +6,17 @@
6
6
  - `y`:常规功能升级
7
7
  - `z`:日常 bug 修复
8
8
 
9
+ ## 0.7.1
10
+
11
+ - 正式发布确认模式可见性增强:状态栏品牌名统一展示当前生效模式,例如 `**Easy Coding [Auto]**`,覆盖 Ready、Waiting init、活动任务和 Handoff 场景;机器 breadcrumb 与 no-harness 行为保持不变。
12
+ - `ec-task-management` 默认面板始终展示项目模式、session 覆盖和最终生效模式,并支持通过对话设置或清除当前 session 覆盖。
13
+ - 汇总 `0.7.1-beta0` 与 `0.7.1-beta1` 的验证结果,Claude、Codex、Qoder 主约束、安装测试、状态 API 回归测试和使用示例均已对齐。
14
+
15
+ ## 0.7.1-beta1
16
+
17
+ - 状态栏品牌名展示当前生效确认模式,例如 `**Easy Coding [Auto]**`;项目级 `behavior.confirm_mode` 与 session 覆盖仍沿用既有优先级,Ready、Waiting init、活动任务和 Handoff 使用同一格式。
18
+ - Claude/Codex/Qoder 主约束、安装测试、状态 API 回归测试和使用示例同步更新,机器 breadcrumb 与 no-harness 行为保持不变。
19
+
9
20
  ## 0.7.1-beta0
10
21
 
11
22
  - 修复裸唤起 `ec-task-management` 时只显示任务列表、未暴露 session 确认模式的问题:默认面板现在始终读取 session snapshot,并展示项目模式、session 覆盖和最终生效模式,即使没有未完成任务也不会省略。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easy-coding-harness",
3
- "version": "0.7.1-beta0",
3
+ "version": "0.7.1",
4
4
  "description": "CLI scaffold for installing Easy Coding harness files into agent-native directories.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,7 +12,7 @@
12
12
  },
13
13
  "type": "module",
14
14
  "bin": {
15
- "easy-coding": "./dist/cli.js"
15
+ "easy-coding": "dist/cli.js"
16
16
  },
17
17
  "files": [
18
18
  "CHANGELOG.md",
@@ -11,10 +11,13 @@ user in the user's language.
11
11
  Start every work reply with the single Markdown blockquote status line injected by the hook,
12
12
  then a blank line. Do not render the machine breadcrumbs to the user.
13
13
 
14
- - Ready: > **Easy Coding** · Ready · Use `ec-workflow` to start or resume a task, `ec-brainstorming` to brainstorm, or `ec-task-management` to manage tasks or session settings
15
- - Waiting init: > **Easy Coding** · Waiting init · Use `ec-init` to initialize
16
- - Active task: > **Easy Coding** · `{current-task}` · `{workflow-state}`
17
- - Handoff: > **Easy Coding** · `{current-task}` · `{workflow-state}` · Handoff -> `{source-agent}`
14
+ `{confirm-mode}` is the capitalized effective mode (`Approve`, `Guard`, or `Auto`); a session
15
+ override takes precedence over the project mode.
16
+
17
+ - Ready: > **Easy Coding [{confirm-mode}]** · Ready · Use `ec-workflow` to start or resume a task, `ec-brainstorming` to brainstorm, or `ec-task-management` to manage tasks or session settings
18
+ - Waiting init: > **Easy Coding [{confirm-mode}]** · Waiting init · Use `ec-init` to initialize
19
+ - Active task: > **Easy Coding [{confirm-mode}]** · `{current-task}` · `{workflow-state}`
20
+ - Handoff: > **Easy Coding [{confirm-mode}]** · `{current-task}` · `{workflow-state}` · Handoff -> `{source-agent}`
18
21
 
19
22
  Skill names in the status line are bare names (`ec-init`, `ec-workflow`) and never include
20
23
  platform prefixes such as `/` or `$`. If no status line is injected, do not invent one.
@@ -11,10 +11,13 @@ user in the user's language.
11
11
  Start every work reply with the single Markdown blockquote status line injected by the hook,
12
12
  then a blank line. Do not render the machine breadcrumbs to the user.
13
13
 
14
- - Ready: > **Easy Coding** · Ready · Use `ec-workflow` to start or resume a task, `ec-brainstorming` to brainstorm, or `ec-task-management` to manage tasks or session settings
15
- - Waiting init: > **Easy Coding** · Waiting init · Use `ec-init` to initialize
16
- - Active task: > **Easy Coding** · `{current-task}` · `{workflow-state}`
17
- - Handoff: > **Easy Coding** · `{current-task}` · `{workflow-state}` · Handoff -> `{source-agent}`
14
+ `{confirm-mode}` is the capitalized effective mode (`Approve`, `Guard`, or `Auto`); a session
15
+ override takes precedence over the project mode.
16
+
17
+ - Ready: > **Easy Coding [{confirm-mode}]** · Ready · Use `ec-workflow` to start or resume a task, `ec-brainstorming` to brainstorm, or `ec-task-management` to manage tasks or session settings
18
+ - Waiting init: > **Easy Coding [{confirm-mode}]** · Waiting init · Use `ec-init` to initialize
19
+ - Active task: > **Easy Coding [{confirm-mode}]** · `{current-task}` · `{workflow-state}`
20
+ - Handoff: > **Easy Coding [{confirm-mode}]** · `{current-task}` · `{workflow-state}` · Handoff -> `{source-agent}`
18
21
 
19
22
  Skill names in the status line are bare names (`ec-init`, `ec-workflow`) and never include
20
23
  platform prefixes such as `/` or `$`. If no status line is injected, do not invent one.
@@ -14,11 +14,8 @@ HELP_SUFFIX = (
14
14
  "Use `ec-workflow` to start or resume a task, "
15
15
  "`ec-brainstorming` to brainstorm, or `ec-task-management` to manage tasks or session settings"
16
16
  )
17
- READY_LINE = (
18
- "> **Easy Coding** · Ready · Use `ec-workflow` to start or resume a task, "
19
- "`ec-brainstorming` to brainstorm, or `ec-task-management` to manage tasks or session settings"
20
- )
21
- WAITING_INIT_LINE = "> **Easy Coding** · Waiting init · Use `ec-init` to initialize"
17
+ READY_LINE = f"Ready · {HELP_SUFFIX}"
18
+ WAITING_INIT_LINE = "Waiting init · Use `ec-init` to initialize"
22
19
 
23
20
  MANDATORY_DEV_SPEC_HEADERS: list[str] = [
24
21
  "## 技术方案",
@@ -1043,10 +1040,11 @@ def build_status_line(
1043
1040
  session_file: str | Path | None = None,
1044
1041
  ) -> str:
1045
1042
  state = snapshot_state(root, session_file, session)
1043
+ status_brand = f"> **Easy Coding [{str(state['effective_confirm_mode']).capitalize()}]**"
1046
1044
  task_id = state["current_task"]
1047
1045
  if task_id:
1048
1046
  status = str(state["status"])
1049
- line = f"> **Easy Coding** · `{task_id}` · `{status}`"
1047
+ line = f"{status_brand} · `{task_id}` · `{status}`"
1050
1048
  last_agent = state.get("last_agent")
1051
1049
  if agent and last_agent and last_agent != agent:
1052
1050
  line += f" · Handoff -> `{last_agent}`"
@@ -1055,16 +1053,16 @@ def build_status_line(
1055
1053
  return line
1056
1054
 
1057
1055
  if is_project_init_required(root):
1058
- return WAITING_INIT_LINE
1056
+ return f"{status_brand} · {WAITING_INIT_LINE}"
1059
1057
 
1060
1058
  pending = get_pending_init_version(root)
1061
1059
  if pending:
1062
1060
  return (
1063
- f"> **Easy Coding** · Waiting init · "
1061
+ f"{status_brand} · Waiting init · "
1064
1062
  f"Upgrade to v{pending} — run `ec-init` to adapt"
1065
1063
  )
1066
1064
 
1067
- return READY_LINE
1065
+ return f"{status_brand} · {READY_LINE}"
1068
1066
 
1069
1067
 
1070
1068
  def build_machine_breadcrumbs(