memgineering 0.25.2 → 0.26.0

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
@@ -11,6 +11,78 @@ language the reader wants. The bilingual rule the monorepo applies to
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ ## [0.26.0] — 2026-10-10
15
+
16
+ ### Changed
17
+
18
+ - **The before-edit check costs almost nothing after its first answer in a
19
+ session.** On a machine signed in to a hosted brain, the `PreToolUse` hook
20
+ started node on every file tool an agent used — about 110 ms each, measured
21
+ (about 490 ms on 0.21.0 and earlier, which also asked the server each time).
22
+ On macOS and Linux it is now a short shell script in front of
23
+ `memgineering guard` that answers a session already shown its rules from a
24
+ marker `guard` leaves: about 20 ms. Everything it is not sure of — the first
25
+ call, a folder brain, a brain switch, a sign-out, a path into an agent's own
26
+ memory folder — still goes to `memgineering guard`, 5–14 ms slower than
27
+ before. Windows keeps the plain `memgineering guard` command.
28
+ - **A hosted brain with no rules is asked at most every two minutes**, not on
29
+ every tool call. A rule written on this machine with `remember --rule` or
30
+ `revise --rule` reaches the next tool call; one written elsewhere — another
31
+ machine, a chat app's connector — arrives within two minutes.
32
+ - **On a folder brain, `guard` reads the brain once per session, not on every
33
+ tool call.** It takes the session's turn before reading and hands it back
34
+ when the brain had no rules, so a rule written later in the session still
35
+ arrives. A read that outlives the hook's five-second limit now costs that
36
+ session's rules from that brain, instead of five seconds on every tool call.
37
+
38
+ ### Added
39
+
40
+ - **`memgineering update` brings memgineering's own hooks along.** The first
41
+ time the new version runs — the next agent session's start, or any command you
42
+ type — it rewrites the hook commands memgineering installed in Claude Code's
43
+ `settings.json` and Codex's `hooks.json` to this version's shape, and says so
44
+ once. Only a command exactly as memgineering shipped it is changed: matchers,
45
+ timeouts, other tools' hooks, a command you edited, a hook you removed, a
46
+ symlinked or unparseable settings file all stay as they are (the last two are
47
+ mentioned once). Codex runs a changed hook only after you trust it, so it asks
48
+ you to review it at its next start; until you do (press `t`), neither
49
+ memgineering hook runs in Codex.
50
+
51
+ ### Agent guidance
52
+
53
+ - `memgineering-setup`: an update refreshes memgineering's own hook commands
54
+ in Claude Code and Codex by itself — nothing to re-run after an update — and
55
+ a changed Codex hook asks for one review, which is worth relaying with the
56
+ key.
57
+
58
+ ## [0.25.3] — 2026-10-06
59
+
60
+ ### Fixed
61
+
62
+ - **`onboard` no longer asks again for a base note you filled in with prose.**
63
+ On a hosted brain, a `USER.md` or other `01_BASE/` note whose prompt you
64
+ replaced with your own sentences still counted as unfilled, so `onboard` told
65
+ the agent to ask the same questions and write the body again — over what you
66
+ had written. A note counts as filled once its body is your words, prose or
67
+ bullets. Hosted `resurface` no longer labels such a note "not filled in yet"
68
+ either.
69
+ - **`onboard` keeps asking about a note whose body is still the prompt**, even
70
+ after a `revise` put a claim in its frontmatter. On a folder brain this used
71
+ to take the note off the list. The same goes for a note whose prompt was
72
+ deleted and nothing written in its place.
73
+ - **A starter note saved with Windows line endings (CRLF) or a byte-order mark
74
+ is still recognised as the untouched template** by `recall`, `resurface` and
75
+ `onboard`. `revise`'s "the body is still the prompt" warning now notices it
76
+ too.
77
+
78
+ ### Agent guidance
79
+
80
+ - `memgineering-writing` and `onboard`'s `how_to_write`: `onboard` lists the
81
+ base notes whose body has not been written yet, and editing one directly is
82
+ right only while that is so.
83
+ - `memgineering-recall`: a card marked `not filled in yet` is exactly what
84
+ `init` wrote, line endings aside.
85
+
14
86
  ## [0.25.2] — 2026-10-05
15
87
 
16
88
  Small fixes found by an independent review of 0.25.0 and 0.25.1. Nothing here
@@ -2,7 +2,7 @@
2
2
  name: memgineering
3
3
  description: Use whenever the user refers to something they told you before, asks what was decided, tells you something worth keeping, or settles something that should hold next time. The memory lives in their own folder and outlives this session; check it before answering from guesswork, and write to it when you learn something durable.
4
4
  type: skill
5
- version: 0.25.2
5
+ version: 0.26.0
6
6
  ---
7
7
 
8
8
  # memgineering
@@ -205,7 +205,7 @@ next brain, and three of them said it out loud. Reading another brain does not
205
205
  move the machine's pointer.
206
206
 
207
207
  **Cards that are not answers.** A card marked `not filled in yet` is one of the
208
- five `01_BASE/` files, still byte-for-byte what `init` wrote. Nobody has answered
208
+ five `01_BASE/` files, still exactly what `init` wrote (line endings aside). Nobody has answered
209
209
  it, so it is evidence of nothing — do not quote it back as what they think. When
210
210
  every card carries that mark, recall says so above them (`--json`:
211
211
  `scaffolding: true`), and that is the moment to offer to fill them in rather
@@ -12,11 +12,11 @@ allowed-tools: Bash(memgineering:*)
12
12
  Answer this from here, not from a guess. The line is capability, not brand, so
13
13
  it does not move as products come and go:
14
14
 
15
- | | |
16
- | ------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
17
- | **Any tool that can run a shell command** | Reads and writes the same brain. Nothing has to be built for a tool that does not exist yet. |
18
- | **A chat app that takes a custom MCP connector, no shell** | Reads and writes the **hosted** brain on their account through `https://mcp.memgineering.com/mcp`, once they add that connector in the app and sign in with Google. Not a folder brain. |
19
- | **Neither** | **Not yet.** |
15
+ | | |
16
+ | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
17
+ | **Any tool that can run a shell command** | Reads and writes the same brain. Nothing has to be built for a tool that does not exist yet. |
18
+ | **A chat app that takes a custom MCP connector, no shell** | Reads and writes the **hosted** brain on their account through `https://mcp.memgineering.com/mcp`, once they add that connector in the app and sign in with Google. Not a folder brain. |
19
+ | **Neither** | **Not yet.** |
20
20
 
21
21
  `memgineering setup` writes its guidance into the agent tools it finds on the
22
22
  machine, and `setup --dry-run` names the ones it actually found rather than
@@ -182,6 +182,15 @@ answered, and the trust is recorded per hook CONTENT
182
182
  so an upgrade that changes a hook asks again. Somebody who is not told this
183
183
  reads the silence as an install that did not take.
184
184
 
185
+ **An update brings the hooks along.** The first `resurface` (session start)
186
+ after an update — or the next command anybody types — replaces memgineering's
187
+ own hook commands with the new version's, in both Claude Code and Codex, and
188
+ says so once. It replaces only a command memgineering itself shipped: a hook
189
+ someone edited (an absolute path, say), a removed hook, a symlinked or
190
+ unreadable settings file are left exactly as they are, and the last two are
191
+ named once. When a Codex hook changed this way, Codex asks for the review
192
+ above again at its next start — relay that, with the key.
193
+
185
194
  Grok is the case worth knowing, because the obvious guess is wrong: it has
186
195
  hooks, more events than either of those two, and `~/.grok/hooks/` needs no
187
196
  trust prompt — but a hook there cannot say anything to the model. Measured
@@ -359,7 +359,7 @@ so an empty one costs something every time.
359
359
  memgineering onboard
360
360
  ```
361
361
 
362
- Says which are still untouched and what to ask for each. Run it first rather
362
+ Says which still have no body written and what to ask for each. Run it first rather
363
363
  than working from a script — asking somebody a question they already answered is
364
364
  its own kind of forgetting. They may also ask outright ("set up my memory", "fill in my profile"); same job.
365
365
 
@@ -404,7 +404,7 @@ always true and you have only just been told them, so dating them today is wrong
404
404
  in the one field a memory store exists to get right.
405
405
 
406
406
  **This is the ONE place you edit a brain file directly** — `01_BASE/` only, and
407
- only while it is still the template. After that first pass these are theirs like
407
+ only while its body has not been written yet. After that first pass these are theirs like
408
408
  any other note.
409
409
 
410
410
  **Do not invent an answer to move on, and do not fill a file because it is