Skip to content

Commit a86595b

Browse files
committed
release: v1.11.0
1 parent 5cd6f79 commit a86595b

13 files changed

Lines changed: 72 additions & 18 deletions

File tree

CHANGELOG.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010
1111
## [Unreleased]
1212

13+
## [1.11.0] - 2026-06-26
14+
15+
### Added
16+
- **`loom install` now gives every project a user-owned `CLAUDE-LOCAL.md`.** Re-running `loom install` to pick up a newer Loom contract used to overwrite `.loom/CLAUDE.md` and destroy any project-local AI rules kept there. Install now creates a separate root `CLAUDE-LOCAL.md` — once, if absent, and **never overwritten, not even with `--force`** — and makes the root `CLAUDE.md` import both `@.loom/CLAUDE.md` (Loom-owned, regenerated every install) and `@CLAUDE-LOCAL.md` (yours). Put your project-specific AI rules in `CLAUDE-LOCAL.md` and they now survive every contract upgrade. The installed contract template gained a "File ownership" section spelling this out.
17+
- **`loom_append_done` accepts a batch `steps` array** to author a whole done doc in one call (step-ordered upsert, atomic fail-loud on an unknown step). The single `{ stepNumber, notes }` form is unchanged.
18+
19+
### Fixed
20+
- **`loom_close_plan` no longer writes a stub done doc.** It had been delegating the done-doc body to an AI client that returned a fixed `TODO` placeholder whenever no API key was set — i.e. in every Claude Code session — silently writing a stub and marking the plan done regardless of the notes you passed. It now writes your notes verbatim (or appends a `## Closing notes` section to an existing per-step done doc) and fails loudly when there is nothing to write, instead of stubbing.
21+
1322
## [1.10.2] - 2026-06-22
1423

1524
### Fixed
@@ -505,7 +514,8 @@ the loop has been dogfooded on Loom itself across two threads.
505514
- **Physical Template Files**
506515
`.loom/templates/` replaced by body generators in `core/bodyGenerators/`.
507516

508-
[Unreleased]: https://github.com/reslava/loom/compare/v1.10.2...HEAD
517+
[Unreleased]: https://github.com/reslava/loom/compare/v1.11.0...HEAD
518+
[1.11.0]: https://github.com/reslava/loom/releases/tag/v1.11.0
509519
[1.10.2]: https://github.com/reslava/loom/releases/tag/v1.10.2
510520
[1.10.1]: https://github.com/reslava/loom/releases/tag/v1.10.1
511521
[1.10.0]: https://github.com/reslava/loom/releases/tag/v1.10.0

loom/ai-integration/loom-install-claude/chats/loom-install-claude-chat-001.md

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ version: 2
99
tags: []
1010
parent_id: null
1111
requires_load: []
12-
last_ai_block: 6
12+
last_ai_block: 10
1313
---
1414
# loom-install-claude Chat
1515

@@ -203,4 +203,41 @@ docs/CLI_USER_GUIDE.md
203203
loom/refs/cli-commands-reference.md
204204

205205
fold in the fix for `cwd`, do it now
206-
then commit
206+
then commit
207+
208+
## AI:
209+
210+
All three follow-ups done and committed to `main` as `5cd6f79` (11 files, build clean, full suite green).
211+
212+
**Docs updated:**
213+
- `docs/CLI_USER_GUIDE.md` — install section now explains the two-file ownership model + the command table entry.
214+
- `loom/refs/cli-commands-reference.md``loom install` entry rewritten with the Loom-owned vs user-owned split.
215+
216+
**`cwd` fix folded in:** `initLocal` now takes an injected `cwd` (`deps.cwd ?? process.cwd()`); `installWorkspace` passes `cwd: root`. The use-case is `process.cwd()`-pure now — the test dropped its `chdir` workaround and still passes, which is the proof. Standalone `loom init` is unchanged (still defaults to `process.cwd()`).
217+
218+
**On your earlier open question** (whether the chord-flow backups go in the repo): `docs/internal/` is gitignored, so the backups *and* the extracted `docs/internal/chord-flow-claude/CLAUDE-LOCAL.md` stay local — nothing chord-flow-specific got committed here. The extraction is sitting there ready for you to copy to `J:/src/chord-flow/CLAUDE-LOCAL.md`.
219+
220+
This isn't released yet — it ships whenever you next run `/do-release`. Once it's out, your chord-flow recovery sequence is: copy the extracted `CLAUDE-LOCAL.md` over, set chord-flow's root `CLAUDE.md` to the two-import block, upgrade the CLI, then `loom install`.
221+
222+
Next: waiting for direction — nothing pending unless you want me to kick off a release.
223+
224+
## Rafa:
225+
226+
I pushed
227+
do-release 1.10.3 (last 2 commits was 2 fixes) or tell me if you consider 1.11.0 better
228+
229+
## AI:
230+
231+
**Go with `1.11.0`.** The "2 fixes" framing isn't quite right — here's what's actually in the release since `v1.10.2`:
232+
233+
```
234+
5cd6f79 feat: loom install gives projects a user-owned CLAUDE-LOCAL.md
235+
d327c3f docs: record append_done batch live-verify
236+
1a83f2b fix: loom_close_plan writes verbatim done docs, never a stub
237+
```
238+
239+
So it's **1 feat + 1 fix + 1 docs**, not two fixes. The CLAUDE-LOCAL.md commit is a genuine new user-facing capability — a new file, new install behavior, a new section in the installed contract. Under semver that's a **MINOR** bump (`1.11.0`). `1.10.3` (PATCH) is reserved for backwards-compatible bug fixes only, and this release adds new behavior, so it would under-state what shipped.
240+
241+
Recommendation: `/do-release 1.11.0`.
242+
243+
(I can't run the release myself — it goes through your `/do-release` command. Fire it whenever you're ready.)

loom/ai-integration/loom-install-claude/plans/loom-install-claude-plan-001.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ tags: []
1111
parent_id: null
1212
requires_load: []
1313
target_version: 0.1.0
14+
actual_release: 1.11.0
1415
steps:
1516
- id: add-claude-local-md-user-owned
1617
order: 1

loom/core-engine/done-doc-review/plans/done-doc-review-plan-001.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ tags: []
1111
parent_id: ch_01KW2GNXP8MDZW467MGBDPK0KG
1212
requires_load: []
1313
target_version: 0.1.0
14+
actual_release: 1.11.0
1415
steps:
1516
- id: closeplan-use-case
1617
order: 1

package-lock.json

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@reslava-loom/monorepo",
3-
"version": "1.10.2",
3+
"version": "1.11.0",
44
"private": true,
55
"type": "module",
66
"workspaces": [

packages/app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@reslava-loom/app",
3-
"version": "1.10.2",
3+
"version": "1.11.0",
44
"main": "dist/index.js",
55
"types": "dist/index.d.ts",
66
"scripts": {

packages/cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@reslava/loom",
3-
"version": "1.10.2",
3+
"version": "1.11.0",
44
"license": "MIT",
55
"repository": {
66
"type": "git",

packages/core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@reslava-loom/core",
3-
"version": "1.10.2",
3+
"version": "1.11.0",
44
"license": "MIT",
55
"scripts": {
66
"build": "tsc --build"

packages/fs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@reslava-loom/fs",
3-
"version": "1.10.2",
3+
"version": "1.11.0",
44
"license": "MIT",
55
"scripts": {
66
"build": "tsc --build"

0 commit comments

Comments
 (0)