memgineering 0.25.1 → 0.25.3

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,90 @@ language the reader wants. The bilingual rule the monorepo applies to
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ ## [0.25.3] — 2026-10-06
15
+
16
+ ### Fixed
17
+
18
+ - **`onboard` no longer asks again for a base note you filled in with prose.**
19
+ On a hosted brain, a `USER.md` or other `01_BASE/` note whose prompt you
20
+ replaced with your own sentences still counted as unfilled, so `onboard` told
21
+ the agent to ask the same questions and write the body again — over what you
22
+ had written. A note counts as filled once its body is your words, prose or
23
+ bullets. Hosted `resurface` no longer labels such a note "not filled in yet"
24
+ either.
25
+ - **`onboard` keeps asking about a note whose body is still the prompt**, even
26
+ after a `revise` put a claim in its frontmatter. On a folder brain this used
27
+ to take the note off the list. The same goes for a note whose prompt was
28
+ deleted and nothing written in its place.
29
+ - **A starter note saved with Windows line endings (CRLF) or a byte-order mark
30
+ is still recognised as the untouched template** by `recall`, `resurface` and
31
+ `onboard`. `revise`'s "the body is still the prompt" warning now notices it
32
+ too.
33
+
34
+ ### Agent guidance
35
+
36
+ - `memgineering-writing` and `onboard`'s `how_to_write`: `onboard` lists the
37
+ base notes whose body has not been written yet, and editing one directly is
38
+ right only while that is so.
39
+ - `memgineering-recall`: a card marked `not filled in yet` is exactly what
40
+ `init` wrote, line endings aside.
41
+
42
+ ## [0.25.2] — 2026-10-05
43
+
44
+ Small fixes found by an independent review of 0.25.0 and 0.25.1. Nothing here
45
+ changes what you type.
46
+
47
+ ### Fixed
48
+
49
+ - **A refresh `setup` keeps your choices.** `memgineering setup` run again
50
+ without `--hook` or `--auto-update` used to turn both back on. It now keeps
51
+ the hook and auto-update choices recorded on this machine, including a hook
52
+ choice made on the `setup --web` screen. On a machine set
53
+ up before this release, the hook choice is read from whether the hook is
54
+ installed. A kept choice is no longer listed as a default nobody was asked
55
+ about.
56
+ - **A command no longer waits on the update check.** Before a background
57
+ install, the CLI asks npm, pnpm and bun where they keep global packages. That
58
+ could hold your command open for up to 15 seconds after its output, and
59
+ longer behind a version manager. The CLI now asks all three at once and gives
60
+ up after 1.5 seconds. If it cannot tell how memgineering was installed, it
61
+ installs nothing and prints the usual "is available — `memgineering update`"
62
+ line.
63
+ - **The before-edit hook never starts an update**, even when it is called with
64
+ a flag first (`memgineering --json guard`). The same holds for `resurface`.
65
+ - **Two commands starting together cannot both start a background install.**
66
+ This could happen when the previous install had been left unfinished. If the
67
+ lock behind this fix is ever left in place, `memgineering update` says so
68
+ (`update_claim_stuck`) instead of reporting another install in progress.
69
+ - **Both sides of a conflict appear in recall.** When a note contradicted an
70
+ unfilled base template, the limit of two template cards could hide one side
71
+ while recall said "Both sides are above". Both sides now show, even if that
72
+ means more than two template cards, and the line counting held-back
73
+ templates says so.
74
+ - **Hosted recall by meaning no longer drops a base note you have filled in.**
75
+ A `USER.md` or other `01_BASE/` note you rewrote in your own words was
76
+ treated as an untouched template and left out. Only an exact, untouched
77
+ template is held back now.
78
+ - **A chat-app connector cannot change a rule by other routes.** Retiring,
79
+ restoring or undoing a rule from a connector is now refused with
80
+ `rule_needs_a_person`, as editing one already was. That includes undoing the
81
+ `remember` that created a rule. A connector's `undo` with no id undoes only
82
+ that app's own changes, including those made before its sign-in was
83
+ refreshed. If it has made none, it is told so and nothing is undone.
84
+ - Hosted `retire` and `unretire` no longer say that `undo` cannot reverse
85
+ them. It can, and their hint now names both ways back.
86
+ - `setup --help` gives ChatGPT its own route: Settings → Developer mode → add
87
+ an MCP server. Claude.ai, Claude Desktop and Cowork use a custom connector.
88
+ - `setup --web` prints its terminal lines in English.
89
+
90
+ ### Agent guidance
91
+
92
+ - `memgineering-setup`: turning auto-update off with
93
+ `setup --agent --auto-update off` no longer needs `--hook`, because the hook
94
+ stays as this machine recorded it. It also explains `update_claim_stuck`.
95
+ - `memgineering-recall`: a template card that is one side of a conflict comes
96
+ on top of the two-card limit.
97
+
14
98
  ## [0.25.1] — 2026-10-05
15
99
 
16
100
  A security release. Upgrade if you use `setup --web`, or a hosted brain with a
@@ -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.1
5
+ version: 0.25.3
6
6
  ---
7
7
 
8
8
  # memgineering
@@ -205,13 +205,14 @@ 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
212
212
  than answer from them — see `memgineering-writing`. At most two such cards come
213
- back per answer; the rest are counted (`templates_withheld`), never silently
214
- dropped, and nothing anyone wrote is ever held back.
213
+ back per answer, plus any that is one side of a conflict, so both sides of a
214
+ conflict always show; the rest are counted (`templates_withheld`), never
215
+ silently dropped, and nothing anyone wrote is ever held back.
215
216
 
216
217
  The mark disappears once the user writes in the file. A filled-in base note is
217
218
  often the best answer in the brain: _who am I_, _what am I not allowed to do_,
@@ -127,7 +127,8 @@ or npx copy is never touched — it only gets the notice; nor is anything instal
127
127
  from a session hook or under CI). One install runs at a time: `memgineering
128
128
  update` run while a background install is going answers `update_in_progress`
129
129
  and installs nothing — wait a few minutes and run it again; it reports whether
130
- that install worked. `--hook on` means note
130
+ that install worked. `update_claim_stuck` means a crashed install's leftover
131
+ could not be cleared; its hint names the folder to delete. `--hook on` means note
131
132
  summaries and their standing rules reach an agent unasked. Recommend both, but
132
133
  they are theirs to decide.
133
134
 
@@ -513,7 +514,7 @@ answers without changing its name and the index has to be laid down again.
513
514
  ## Turning things off
514
515
 
515
516
  ```
516
- memgineering setup --agent --auto-update off --hook <on|off> # --agent sets both; keep the hook as it was
517
+ memgineering setup --agent --auto-update off # the hook stays as this machine recorded it
517
518
  memgineering unlink # stop reading a brain; notes untouched
518
519
  memgineering unlink --purge # also delete the local index and undo snapshots
519
520
  ```
@@ -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