worclaude 2.4.7 → 2.4.9
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 +24 -0
- package/package.json +1 -1
- package/src/commands/doctor.js +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,30 @@ All notable changes to worclaude are documented in this file. Format loosely fol
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [2.4.9] — 2026-04-20
|
|
8
|
+
|
|
9
|
+
CI fix release — the daily `upstream-check` workflow failed at `anthropics/claude-code-action` with `Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable`. The action exchanges an OIDC token for a GitHub App token before the Anthropic API auth layer runs; that exchange requires `id-token: write` in workflow permissions regardless of `CLAUDE_CODE_OAUTH_TOKEN`. Prior runs succeeded intermittently because GitHub does not consistently inject the token URL when no job in the run declares the permission.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- `.github/workflows/upstream-check.yml` now grants `id-token: write` alongside `contents: write` and `issues: write`. Matches the canonical workflow template at `anthropics/claude-code-action/examples/claude.yml`.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- `docs/reference/upstream-automation.md` — permissions row lists all three permissions with a note on why `id-token: write` is required.
|
|
18
|
+
|
|
19
|
+
## [2.4.8] — 2026-04-20
|
|
20
|
+
|
|
21
|
+
Bug fix release — `worclaude doctor` reported `File integrity: 1/54 files missing` on every v2.4.6+ install. `checkHashIntegrity` resolved every `workflow-meta.json` `fileHashes` key under `.claude/`, so `root/AGENTS.md` (tracked at project root since v2.4.6) got looked up at `.claude/root/AGENTS.md` — which doesn't exist. `worclaude upgrade` already handled the `root/` prefix correctly; only doctor had missed the update.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- `worclaude doctor` now uses the shared `resolveKeyPath` helper from `src/core/file-categorizer.js` for every `fileHashes` key, so `root/<path>` entries resolve at the project root and `hooks/<name>` entries resolve under `.claude/hooks/`. No behavior change for `agents/`, `commands/`, or `skills/` keys.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- `docs/reference/configuration.md` — `fileHashes` example extended with `hooks/` and `root/` entries and a one-line description of the key-prefix vocabulary. The field description no longer claims scope is "all files in `.claude/`" — that stopped being true in v2.4.6 when `root/AGENTS.md` started being tracked.
|
|
30
|
+
|
|
7
31
|
## [2.4.7] — 2026-04-20
|
|
8
32
|
|
|
9
33
|
Bug fix release — the learn-capture Stop hook writes `.claude/.stop-hook-active` as a runtime re-entry guard, but the scaffolded `.gitignore` never covered it. Every project scaffolded or upgraded to 2.4.6 saw a dirty `git status` right after the Stop hook fired. `worclaude delete` also left the now-stale line in `.gitignore`. Both are fixed symmetrically.
|
package/package.json
CHANGED
package/src/commands/doctor.js
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
TEMPLATE_SKILLS,
|
|
12
12
|
} from '../data/agents.js';
|
|
13
13
|
import { hasClaudeMdMemoryGuidance, readClaudeMd } from '../core/drift-checks.js';
|
|
14
|
+
import { resolveKeyPath } from '../core/file-categorizer.js';
|
|
14
15
|
import * as display from '../utils/display.js';
|
|
15
16
|
|
|
16
17
|
// Check categories
|
|
@@ -534,7 +535,7 @@ async function checkHashIntegrity(projectRoot, meta) {
|
|
|
534
535
|
let intact = 0;
|
|
535
536
|
|
|
536
537
|
for (const [relPath, storedHash] of Object.entries(meta.fileHashes)) {
|
|
537
|
-
const fullPath =
|
|
538
|
+
const fullPath = resolveKeyPath(relPath, projectRoot);
|
|
538
539
|
if (!(await fileExists(fullPath))) {
|
|
539
540
|
missing++;
|
|
540
541
|
} else {
|