@lmctl-ai/lmctl 0.1.94 → 0.1.96

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
@@ -2,6 +2,38 @@
2
2
 
3
3
  All notable public-preview changes for `@lmctl-ai/lmctl` are recorded here.
4
4
 
5
+ ## 0.1.96 — 2026-07-10
6
+
7
+ - **Fixed: 0.1.95 silently stopped recording `team_chat_log`.** The chat-log INSERT omitted the
8
+ `origin` column, so on any existing database (where `origin` is `NOT NULL`) every insert failed
9
+ with `NOT NULL constraint failed: team_chat_log.origin` and the row was dropped — chats still
10
+ worked, but the audit trail stopped. Found by dogfooding the published artifact.
11
+ - **Fixed: fresh 0.1.95 databases got a `team_chat_log` without an `origin` column at all.** The v46
12
+ migration hand-duplicated the table shape and drifted from `schema.sql`, so new installs never
13
+ recorded operator-vs-agent origin. Fresh and migrated databases now produce an identical table, and
14
+ a pre-46 database gains `origin` (existing rows backfilled to `unknown`) with its rows preserved.
15
+ - Regression tests now assert that a fresh database's `team_chat_log` column set matches `schema.sql`
16
+ exactly, and that a migrated database also has `origin`.
17
+
18
+ ## 0.1.95 — 2026-07-10
19
+
20
+ - **Removed `I_am=` (and `--from`) entirely.** A member's identity now resolves **only** from
21
+ `LMCTL_SELF_SESSIONID`, which lmctl sets automatically on every member it spawns. Nothing a user
22
+ can type asserts an identity.
23
+ - **The identity marker is required exactly when lmctl must persist a sender** — i.e. when enqueueing
24
+ a mailbox message. Direct blocking calls need no identity, so **`lmctl chat`, `lmctl loop` and
25
+ `lmctl recover` now work from a plain operator shell with no flag**. Previously `--from`/`I_am=`
26
+ was mandatory for any operator-run chat, so this is strictly more usable than before.
27
+ - **`lmctl send` to a busy target without a marker now returns `busy`** (try later) instead of an
28
+ error, and enqueues nothing. An operator cannot queue: it has no `lmctl wait` to be woken.
29
+ - **Fixed `lmctl recover`.** It drives only idle members and no longer demands a caller identity.
30
+ - **MCP stale-bridge cleanup is shape-gated.** A stale `lmctl`/`lmctl0` bridge is removed only when
31
+ **both** the server name and the command shape (`lmctl mcp`) match, so an unrelated MCP server you
32
+ configured yourself is never deleted. Cleanup now also runs on `seed`. The `from` parameter was
33
+ removed from the `lmctl_chat` MCP tool schema.
34
+ - **Migration v46:** `team_chat_log` sender columns are nullable (operator-origin turns record no
35
+ sender). The migration is guarded — it rebuilds only when the table exists and never throws.
36
+
5
37
  ## 0.1.94 — 2026-07-08
6
38
 
7
39
  - **Debug diagnostics now write only to the debug log file.** YOLO spawn
package/README.md CHANGED
@@ -65,7 +65,7 @@ Lintable teamfile templates for research, writing, and review teams ship in the
65
65
  [documentation](https://lmctl.com/lmctl) to define your first team.
66
66
 
67
67
  - `lmctl send <teamfile> <alias> "message"` messages a Lead; enqueues if it is up, falls back to chat if down.
68
- - `lmctl recv [I_am=<teamfile:alias>]` drains the calling Lead's mailbox consume-on-read.
68
+ - `lmctl recv` drains the calling Lead's mailbox consume-on-read, inferred from `LMCTL_SELF_SESSIONID`.
69
69
 
70
70
  ## Model selection
71
71