Skip to content

Commit 966d6cb

Browse files
authored
feat: improve Dashboard workflows and project activation (#271)
* feat(dashboard): paginate change explorer * feat: activate projects from global defaults * fix: isolate Comet Hooks from user handlers * fix: remove disabled ambient resume instructions * fix(dashboard): keep change explorer paginated on scroll * fix(dashboard): constrain side panels to center height * fix(dashboard): hide redundant workspace scrollbars * fix(dashboard): bound Native workspace side panel * fix(dashboard): paginate Native change explorer * fix(dashboard): align Classic workspace panel height * fix(dashboard): align Native workspace corner radius * test(dashboard): fill demo side panel content * fix(dashboard): separate Native conflict count * fix(dashboard): match Native explorer tabs to Classic * fix(dashboard): align Native change explorer with Classic * fix(dashboard): match Native change row visuals * fix(dashboard): align Native change badge with Classic * fix(dashboard): align Native dark selection state * feat(dashboard): paginate Native changes * fix(classic): require build plan before source writes * fix(skill): restore Comet entry contract wording * build: refresh entry hook router * test: model managed Kiro hook removal failure * fix: address PR review findings * fix(native): recover stale receipt scopes * fix(entry): allow writes without active changes * fix(skill): dispatch subagent workflows directly * fix(native): isolate parallel resume checks * fix(native): prevent incremental projection drift * fix: address required PR review findings * test(classic): model occupied plan slots accurately * fix(native): avoid repeated Verify checks * fix(dashboard): paginate changes without layout flicker * feat(native): isolate changes before Shape * fix(native): preserve isolated workspace invariants * fix(native): fail closed on invalid workspace state * fix(native): preserve workspace ownership on root move * test(native): stabilize full-suite verification * test: bound Git-heavy suite hooks * docs(native): archive workspace isolation change * fix(native): narrow workspace identity construction * test: bound full-suite execution time * fix: isolate project hook lifecycle * docs: publish beta15 website link
1 parent 4dca0dc commit 966d6cb

259 files changed

Lines changed: 129358 additions & 3560 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,31 @@
22

33
All notable changes to @rpamis/comet will be documented in this file.
44

5-
## What's Changed [0.4.0-beta.15] - 2026-08-02
5+
## What's Changed [0.4.0-beta.15] - 2026-08-05
6+
7+
### Added
8+
9+
- **Global project activation**: Global Native or Classic defaults can now activate an unconfigured project on its first explicit `/comet` invocation. Project artifacts stay local, existing workflow ownership is preserved, and project-scoped initialization remains available for local overrides.
10+
- **Native parallel changes**: Before Shape, Native detects active changes and can create an isolated Git worktree automatically. `current`, `branch`, and `worktree` choices remain available when safe, and isolated changes remember their starting target branch for finishing.
11+
12+
### Changed
13+
14+
- **Dashboard change explorer**: Dashboard now loads lightweight change rows, paginates active, archived, and all changes, and fetches full details only for the selected change. Native and Classic keep the selected detail surface stable while loading and offer a retry when detail loading fails, keeping large projects responsive.
15+
- **Hook lifecycle and routing**: Activated projects and isolated Native worktrees now receive one project-rooted Router automatically. Setup, Update, and Doctor migrate historical global and legacy Comet Hooks while preserving user-owned Hook configuration and reporting incomplete cleanup instead of continuing silently.
616

717
### Fixed
818

9-
- **Eval Dockerfile hash fallback**: `get_dockerfile_hash()` now falls back to `environment/Dockerfile` when a workspace has no root `Dockerfile`, matching the fallback `docker_build()` already applied. Building or naming an image for an eval workspace that keeps its Dockerfile under `environment/` no longer fails before reaching Docker.
19+
- **Global Native Skill updates**: Global `comet update` now refreshes the workflows already installed, including Native, without adding workflows the user did not choose.
20+
- **Native Verify retries**: Invalid verification reports are rejected before the required check runs, and unchanged successful required-check receipts are reused on retry so expensive checks are not repeated unnecessarily.
21+
- **Native parallel resume**: Ambient Resume now performs full recovery checks only for the explicitly named, selected, or sole Native change, so unrelated active changes do not surface irrelevant Runtime errors.
22+
- **Subagent workflow dispatch**: Classic Build runs the selected authoring workflow directly, and Comet Any keeps each authoring lane on its designated workflow instead of replacing it based on platform-specific Agent labels.
23+
- **Native scope consistency**: Native now detects files hidden from Git's modified-file view, preventing false Build-to-Verify scope mismatches from blocking verification and archive.
24+
- **Hook write handling**: Project Hooks allow ordinary writes when no active Comet change owns the target and remain neutral for unknown or external targets, including paths redirected through symlinks or junctions, while still evaluating in-project writes.
25+
- **Hook configuration safety**: Hook installation no longer overwrites user-owned Kiro files or leaves invalid Copilot entries, and Doctor now detects stale legacy files and disabled or structurally mismatched handlers before reporting the Router healthy.
26+
- **Native receipt scope recovery**: Verification receipts now stop before execution when project files changed after Build, report the changed paths, and provide the command for returning to Build and refreshing the implementation scope.
27+
- **Classic build recovery**: Full Classic workflows return to plan creation after context recovery when no valid implementation plan is recorded, and block project source writes until the plan is restored and linked.
28+
- **Ambient Resume cleanup**: Disabling Ambient Resume now removes Comet-managed instructions from `AGENTS.md` and `CLAUDE.md` while preserving user-authored content.
29+
- **Eval workspace Dockerfiles**: Eval image preparation now uses `environment/Dockerfile` when a workspace has no root Dockerfile, so those workspaces can build without moving the file.
1030

1131
## What's Changed [0.4.0-beta.14] - 2026-08-02
1232

README-zh.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,18 @@ npm install -g @rpamis/comet
117117

118118
## 快速开始
119119

120+
一次全局初始化即可让已选宿主中的 `/comet` 在所有项目可用:
121+
122+
```bash
123+
comet init --scope global
124+
cd your-project
125+
# 在宿主中调用 /comet
126+
```
127+
128+
首次在一个尚未配置的项目中调用 `/comet` 时,Comet 会把 `~/.comet/config.yaml` 中的全局默认值固化为项目的 `.comet/config.yaml`,并只在该项目内创建产物目录。之后修改全局默认值不会改写已经激活的项目。Hook 继续识别这份项目配置与 `.comet/current-change.json`;仅触发 Hook、`comet status` 或普通只读解析不会自动初始化项目。
129+
130+
如需把 Skill、Rule 与 Hook 直接复制到项目,或显式覆盖该项目的工作流设置,仍可执行项目初始化:
131+
120132
```bash
121133
cd your-project
122134
comet init
@@ -204,7 +216,7 @@ Comet Eval的自动化双Agent架构能够在线上与LangSmith/LangFuse环境
204216
| `--language <lang>` | 技能语言:`en` 或 `zh`(跳过交互式语言选择) |
205217
| `--platform <platform>` | 只初始化指定平台;项目范围内可使用自定义平台 id |
206218
| `--workflow <mode>` | 初始化工作流:`native`、`classic` 或 `both` |
207-
| `--root <path>` | Native 的项目内产物根目录,例如 `docs` |
219+
| `--root <path>` | Native 的项目内产物根目录;全局范围时保存为项目相对默认值 |
208220
| `--codegraph <action>` | 非交互式项目索引操作:显式选择 `init` 或 `skip` |
209221
| `--skip-existing` | 跳过已安装的组件 |
210222
| `--overwrite` | 覆盖已安装的组件 |

README.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,18 @@ npm install -g @rpamis/comet
134134

135135
## Quick Start
136136

137+
A single global initialization makes `/comet` available through the selected hosts in every project:
138+
139+
```bash
140+
comet init --scope global
141+
cd your-project
142+
# Invoke /comet in the host
143+
```
144+
145+
The first `/comet` invocation in an unconfigured project snapshots the defaults from `~/.comet/config.yaml` into the project's `.comet/config.yaml` and creates artifacts only inside that project. Later global-default changes do not rewrite activated projects. Hooks then recognize the project config and `.comet/current-change.json`; Hook events, `comet status`, and ordinary read-only resolution never initialize a project by themselves.
146+
147+
Run project initialization only when you want project-local copies of Skills, Rules, and Hooks, or explicit project overrides:
148+
137149
```bash
138150
cd your-project
139151
comet init
@@ -222,7 +234,7 @@ Initializes Comet for selected AI coding platforms. Interactive setup selects Na
222234
| `--language <lang>` | Skill language: `en` or `zh` (skips interactive language prompt) |
223235
| `--platform <platform>` | Initialize only this platform; project scope accepts custom platform ids |
224236
| `--workflow <mode>` | Workflows to initialize: `native`, `classic`, or `both` |
225-
| `--root <path>` | Project-relative Native artifact root, such as `docs` |
237+
| `--root <path>` | Project-relative Native artifact root; global scope stores it as a project default |
226238
| `--codegraph <action>` | Non-interactive project index action: explicitly choose `init` or `skip` |
227239
| `--skip-existing` | Skip already installed components |
228240
| `--overwrite` | Overwrite already installed components |

app/cli/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ const workflow = program.command('workflow').description('Resolve the configured
6262
workflow
6363
.command('resolve [path]')
6464
.description('Resolve /comet to its permanent Native or Classic entry')
65+
.option('--activate', 'Create project configuration from global defaults when missing')
6566
.option('--json', 'Output as JSON')
6667
.action(async (targetPath = '.', options) => {
6768
const { workflowResolveCommand } = await import('../commands/workflow.js');

0 commit comments

Comments
 (0)