memgineering 0.4.2 → 0.5.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 +230 -0
- package/README.md +31 -7
- package/assets/MEMGINEERING.md +33 -0
- package/assets/memgineering-memory/SKILL.md +26 -0
- package/assets/memgineering-setup/SKILL.md +14 -0
- package/bin/memgineering.js +0 -0
- package/dist/index.js +2718 -781
- package/package.json +2 -2
- package/scripts/postinstall.mjs +59 -10
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,236 @@ language the reader wants. The bilingual rule the monorepo applies to
|
|
|
11
11
|
|
|
12
12
|
## [Unreleased]
|
|
13
13
|
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **Every command works on a hosted brain.** `revise`, `resurface`, `retire`,
|
|
17
|
+
`unretire`, `exclude` and `unexclude` used to refuse when this machine was
|
|
18
|
+
pointed at a hosted brain and tell you to add `--local`. They go to the server
|
|
19
|
+
now. Nothing memgineering offers says no because your brain is not on this
|
|
20
|
+
disk.
|
|
21
|
+
|
|
22
|
+
- **The setup screen starts with where your memory goes.**
|
|
23
|
+
`memgineering setup --web` used to open a Google sign-in before it showed you
|
|
24
|
+
anything, so the first thing you saw was a consent page for a product that
|
|
25
|
+
had not told you what it was. It now opens on the choice — what memgineering is in one
|
|
26
|
+
sentence, then a plain comparison of keeping the memory on this machine
|
|
27
|
+
against keeping it in an account, and what each costs. One brain is free, and
|
|
28
|
+
stays free. The sign-in only starts once you have picked it, and the code to
|
|
29
|
+
approve is shown on the last screen. Draft terms and a privacy draft are
|
|
30
|
+
reachable from the same screen; they are marked as drafts because they have
|
|
31
|
+
not been through legal review.
|
|
32
|
+
|
|
33
|
+
- **`memgineering pull [folder]`** — download your hosted brain back to this
|
|
34
|
+
machine, as the markdown it is. Until now notes went up and nothing came back,
|
|
35
|
+
so "your memory is yours" stopped being demonstrable the moment you used the
|
|
36
|
+
hosted side. It **never overwrites**: a file already at that path is left
|
|
37
|
+
exactly as it is and reported as skipped, which is what makes it safe to point
|
|
38
|
+
at the wrong folder and what makes an interrupted download finishable by
|
|
39
|
+
running the command again. Notes your rules exclude come down too — excluded
|
|
40
|
+
means "stop reading this", not "this is no longer yours" — and `.memgignore`
|
|
41
|
+
travels with them, so the folder does not silently un-exclude anything. The
|
|
42
|
+
result is plain markdown; `memgineering link <folder>` is what turns it into a
|
|
43
|
+
brain on this machine, and it is not done for you. `--dry-run` lists what would
|
|
44
|
+
be written without writing it.
|
|
45
|
+
|
|
46
|
+
- **`memgineering push`** — upload the brain on this machine to your hosted one,
|
|
47
|
+
keeping every note at the path it already had. Nothing is deleted locally, a
|
|
48
|
+
note already up there is counted as already up there rather than as a failure
|
|
49
|
+
(so an interrupted upload is finished by running the command again), and any
|
|
50
|
+
note the server refuses is listed in the summary instead of quietly dropped
|
|
51
|
+
from the count. `--dry-run` lists what would go without sending anything.
|
|
52
|
+
|
|
53
|
+
### Changed
|
|
54
|
+
|
|
55
|
+
- **Setup no longer decides about accounts behind your back.** Run by an agent,
|
|
56
|
+
it skipped sign-in and said nothing — so you got a folder on one machine and
|
|
57
|
+
found out later that your memory does not follow you. It now says plainly that
|
|
58
|
+
no account was used and how to connect one, and the install tells your agent to
|
|
59
|
+
ask you first: memory on this machine, or synced across your devices and tools.
|
|
60
|
+
|
|
61
|
+
- **After install, your agent finishes the job.** Installing used to print
|
|
62
|
+
`Next: memgineering setup` — which agents dutifully relayed to their user as a
|
|
63
|
+
command to type, in a product whose whole premise is that the agent does this
|
|
64
|
+
for you. The install now tells the agent to ask you one question — should it
|
|
65
|
+
set things up, or would you rather choose on a screen — and then run setup
|
|
66
|
+
itself. The message is also no longer suppressed when output is piped, which
|
|
67
|
+
is exactly the case where an agent is the one reading it.
|
|
68
|
+
|
|
69
|
+
- **`--local` still does exactly what it did.** The product works with no
|
|
70
|
+
server: pass `--local` to any command and it reads and writes the folder on
|
|
71
|
+
this machine, whether or not you are signed in.
|
|
72
|
+
|
|
73
|
+
- **A hosted `resurface` says what it ranked by.** It has three signals where a
|
|
74
|
+
local brain has four — it cannot know which folder you asked from, because the
|
|
75
|
+
server records what was recalled and never where you were standing. The output
|
|
76
|
+
names the signals it used rather than leaving you to notice that "recalled 14×
|
|
77
|
+
in this folder" stopped appearing.
|
|
78
|
+
|
|
79
|
+
- **`revise --input` is refused against a hosted brain**, rather than partly
|
|
80
|
+
honoured. The JSON can name a different memory and set fields the flags do not
|
|
81
|
+
expose, so sending only the understood parts would report a success for a
|
|
82
|
+
change you did not ask for. Pass the change as flags, or use `--local`.
|
|
83
|
+
|
|
84
|
+
- **What you exclude travels with your brain.** The rules live in a
|
|
85
|
+
`.memgignore` file inside the brain rather than in a setting beside it, so a
|
|
86
|
+
hosted brain pulled back down to a folder is still scoped the way you scoped
|
|
87
|
+
it. `undo` for an exclusion is `unexclude`, not `undo <op_id>`.
|
|
88
|
+
|
|
89
|
+
- **`memgineering login`, `logout` and `whoami`** — sign in to a hosted brain.
|
|
90
|
+
Optional, and nothing that already worked needs it: a brain is still a folder
|
|
91
|
+
of markdown files on your machine, and every other command works on it with no
|
|
92
|
+
account and no network.
|
|
93
|
+
|
|
94
|
+
`login` pairs this machine with an account without a token ever appearing in a
|
|
95
|
+
browser. It prints a code, opens an approval page, and collects the token
|
|
96
|
+
itself once you approve — so the credential never lands on a screen, in a
|
|
97
|
+
scrollback, or in a chat window.
|
|
98
|
+
|
|
99
|
+
**Agents should use `login --emit-only`.** It starts the sign-in, opens the
|
|
100
|
+
browser and returns immediately rather than waiting for a human to click,
|
|
101
|
+
which no agent's command timeout survives. The next `memgineering` command
|
|
102
|
+
claims the token automatically. Show the printed code in your reply: the
|
|
103
|
+
approval page asks the user to check it against what they were shown, and on
|
|
104
|
+
surfaces where you are the only thing that saw it, they cannot.
|
|
105
|
+
|
|
106
|
+
`logout` revokes on the server before forgetting anything locally — a token
|
|
107
|
+
deleted only here still works for whoever has a copy. `--all` ends every
|
|
108
|
+
session on the account, `--local` forgets it here when the server is
|
|
109
|
+
unreachable and says plainly what that does not do.
|
|
110
|
+
|
|
111
|
+
- **`setup` offers an account as its first step, and lets you walk past it.**
|
|
112
|
+
Skipping installs byte-for-byte the same files; there is a test that compares
|
|
113
|
+
the two trees. With no terminal it does nothing unless you pass `--login`, so
|
|
114
|
+
an agent running `setup --agent` never opens a browser you did not ask for.
|
|
115
|
+
|
|
116
|
+
- **`MEMGINEERING_API_URL`** points the account commands at a different brain
|
|
117
|
+
server. The token is stored with the server that minted it and is never sent
|
|
118
|
+
anywhere else.
|
|
119
|
+
|
|
120
|
+
- **The `--human` prompt no longer hangs where there is no terminal.** Asking for
|
|
121
|
+
`--human` says which mode you want; it does not conjure a screen to draw a
|
|
122
|
+
prompt on.
|
|
123
|
+
|
|
124
|
+
- **The setup screen no longer promises a sync it does not perform.** Its first
|
|
125
|
+
screen ticks "the same memory on another machine" for keeping the memory in an
|
|
126
|
+
account — and choosing that only signed you in. No hosted brain was created and
|
|
127
|
+
no note was uploaded, so you would have found out on the second machine. The
|
|
128
|
+
last screen now says the notes are still only on this machine and what changes
|
|
129
|
+
that; the machine-readable half tells your agent the same thing, and to ask you
|
|
130
|
+
before sending anything to a server.
|
|
131
|
+
|
|
132
|
+
- **Two screens no longer ask near-identical questions.** "기억을 어디에
|
|
133
|
+
둘까요?" (this machine or an account) was followed two screens later by "기억을
|
|
134
|
+
어디에 담을까요?" (which folder to read). The second is now "어느 폴더를
|
|
135
|
+
쓸까요?".
|
|
136
|
+
|
|
137
|
+
- **The screen separates what is kept here from what an upload sends.** It said
|
|
138
|
+
only a note's title and first paragraph get stored — true of the index on this
|
|
139
|
+
machine, and read as the whole of what reaches the server by anyone who had
|
|
140
|
+
just chosen an account. Uploading sends the entire file, and the screen now
|
|
141
|
+
says so where the claim is made.
|
|
142
|
+
|
|
143
|
+
- **The privacy draft says notes are stored in plain text.** No end-to-end
|
|
144
|
+
encryption; whoever runs the server can technically read them, and not doing so
|
|
145
|
+
is a promise rather than an impossibility. It was the one fact a person
|
|
146
|
+
weighing whether to put a diary in an account most needs, and the easiest to
|
|
147
|
+
leave out.
|
|
148
|
+
|
|
149
|
+
- **The setup screen stopped handing out commands.** It answered three of a
|
|
150
|
+
non-developer's questions with one — how to stop a note being surfaced, how to
|
|
151
|
+
update, how to connect a folder — and each answer was a command to type, on the
|
|
152
|
+
one screen built for somebody who has never opened a terminal. Each is now
|
|
153
|
+
phrased as something to ask their agent for. A test fails if any
|
|
154
|
+
`memgineering <verb>` reappears on that page.
|
|
155
|
+
|
|
156
|
+
- **Folder suggestions say how many notes each one holds.** The list offered
|
|
157
|
+
every folder containing at least one markdown file, so a photo archive with a
|
|
158
|
+
stray README sat beside somebody's actual notes with nothing to tell them
|
|
159
|
+
apart. The count is the reason each row is there, so it is now on the row.
|
|
160
|
+
Filtering harder was the wrong fix: a folder with one note is still notes.
|
|
161
|
+
|
|
162
|
+
- **The terms draft lists what it has not decided.** Legal entity and
|
|
163
|
+
jurisdiction, where the servers are, how long a deletion takes to reach
|
|
164
|
+
backups, how a breach would be announced, and where to delete an account —
|
|
165
|
+
absent from the draft, and now absent in writing rather than by omission.
|
|
166
|
+
|
|
167
|
+
- **`recall` stopped telling Korean users their own Korean notes were
|
|
168
|
+
unreachable.** When a query found nothing, the footer could claim "this
|
|
169
|
+
brain's notes are mostly written in English … no rewording in another
|
|
170
|
+
language will reach them" — in a brain holding Korean notes. Two scaffolding
|
|
171
|
+
files were voting: `01_BASE/` was already excluded, `00_HUB/` was not, and on
|
|
172
|
+
a small brain one English note `init` wrote decides the count. A note like
|
|
173
|
+
`글꼴은 Pretendard 하나로` then votes English on the strength of the product
|
|
174
|
+
name, and the majority flips. The hub no longer votes, and the warning is
|
|
175
|
+
suppressed outright when any note somebody wrote is in the asker's script —
|
|
176
|
+
the claim is about reachability, and one such note makes it false.
|
|
177
|
+
|
|
178
|
+
Caught by a fresh-context agent, which read the footer, believed it, and told
|
|
179
|
+
its user that Korean titles are not searchable. A hint that is wrong does not
|
|
180
|
+
merely mislead — it stops the tool being used.
|
|
181
|
+
|
|
182
|
+
- **`resurface` shows what a brain holds before anything has been recalled from
|
|
183
|
+
it.** It ranked purely on evidence of use — recalled here, recalled anywhere,
|
|
184
|
+
read lately — and dropped everything that scored zero. A note that had only
|
|
185
|
+
ever been written scored zero, so a brain nobody had searched yet returned its
|
|
186
|
+
five untouched `01_BASE/` templates and none of its actual notes, even at
|
|
187
|
+
`--limit 8`. That is a loop with no way in: a note is not surfaced until it has
|
|
188
|
+
been recalled, and surfacing is how you find out it exists.
|
|
189
|
+
|
|
190
|
+
It runs at session start, so that was an agent's entire first impression of the
|
|
191
|
+
brain. Measured: one saw five "not filled in yet" placeholders, concluded there
|
|
192
|
+
was nothing there, and did not call memgineering again for the rest of the
|
|
193
|
+
session.
|
|
194
|
+
|
|
195
|
+
Never-reached notes now rank, below anything with evidence behind them, and
|
|
196
|
+
untouched templates take at most two of the slots instead of all five. When
|
|
197
|
+
nothing has been recalled yet the page says so in a line — the order means
|
|
198
|
+
"what this holds", not "what matters here". Refusing to guess was right;
|
|
199
|
+
refusing to speak was not.
|
|
200
|
+
|
|
201
|
+
- **Checking whether you are signed in no longer opens a Google consent page.**
|
|
202
|
+
The `not_signed_in` hint read "YOU run `memgineering login --emit-only`" with
|
|
203
|
+
no precondition attached, and agents follow instructions — so an agent that
|
|
204
|
+
ran `whoami` to orient itself started a sign-in. Measured during testing:
|
|
205
|
+
three consent windows appeared in a user's browser in a session where nobody
|
|
206
|
+
had mentioned accounts. `setup` already refused to do this on the grounds that
|
|
207
|
+
nobody should be sent to a consent screen they did not ask for; the tool held
|
|
208
|
+
both positions and this one ran more often. The hint now leads with the fact
|
|
209
|
+
that an account is optional and `--local` is right there, and gates the
|
|
210
|
+
sign-in on the user having asked for one.
|
|
211
|
+
|
|
212
|
+
- **`resurface` says what to do with what it just showed.** It printed five
|
|
213
|
+
cards and stopped, at session start, to a reader that is always an agent. One
|
|
214
|
+
was handed a note saying this site does not use blue, with the hex codes in
|
|
215
|
+
the summary, and shipped a page with a blue accent: the memory reached its
|
|
216
|
+
context and never reached its output. It now closes with three lines — these
|
|
217
|
+
are the user's own decisions, follow them unasked, recall before answering
|
|
218
|
+
something already settled, remember what this session decides. Untouched
|
|
219
|
+
templates also stop explaining themselves at length when real notes share the
|
|
220
|
+
page; six lines about unfilled files were burying the two that mattered.
|
|
221
|
+
|
|
222
|
+
- **A hosted brain answers the same way as a local one when nothing has been
|
|
223
|
+
recalled from it yet** — the notes, plus a line saying the order is what the
|
|
224
|
+
brain holds rather than what matters here. It used to return an empty list,
|
|
225
|
+
which reads as an empty brain.
|
|
226
|
+
|
|
227
|
+
### Agent guidance
|
|
228
|
+
|
|
229
|
+
- **The hub now says which tools this actually reaches.** A fresh-context test
|
|
230
|
+
asked an agent to make ChatGPT, Claude and Codex share one memory; it set up
|
|
231
|
+
the two it could and then had to read the product's source code to find out
|
|
232
|
+
whether ChatGPT was possible at all. On a machine without that source it
|
|
233
|
+
would have had to guess. The guidance now states plainly that `setup` covers
|
|
234
|
+
Claude Code, Codex and Gemini CLI, that anything with a shell works, and that
|
|
235
|
+
web and phone surfaces have no connector yet — including the specific wrong
|
|
236
|
+
answer to avoid ("you are signed in, so it works everywhere").
|
|
237
|
+
|
|
238
|
+
- The bundled guidance changed: the hub now tells your agent to fetch your
|
|
239
|
+
notes back with `pull` whenever you ask for them, and the setup skill says
|
|
240
|
+
the account question on the first screen is yours to answer rather than
|
|
241
|
+
something it should decide or pre-empt. **Restart your agent session after
|
|
242
|
+
upgrading** — the guidance is read once, when the session starts.
|
|
243
|
+
|
|
14
244
|
## [0.4.2] — 2026-08-10
|
|
15
245
|
|
|
16
246
|
### Fixed
|
package/README.md
CHANGED
|
@@ -7,12 +7,21 @@ Gemini — reads and writes the same brain through one CLI, so what you told one
|
|
|
7
7
|
of them is there for the next one, tomorrow, and in whatever tool you move to
|
|
8
8
|
after that.
|
|
9
9
|
|
|
10
|
+
**You do not have to run any of this yourself.** Ask whichever agent you are
|
|
11
|
+
already talking to — "install memgineering and set it up" — and it does the
|
|
12
|
+
whole thing, asking you only what it genuinely cannot decide.
|
|
13
|
+
|
|
14
|
+
<details>
|
|
15
|
+
<summary>The commands, for the agent (or for you, if you prefer a terminal)</summary>
|
|
16
|
+
|
|
10
17
|
```bash
|
|
11
18
|
npm i -g memgineering
|
|
12
|
-
memgineering setup
|
|
19
|
+
memgineering setup --agent # or --web to choose the settings on a screen
|
|
13
20
|
memgineering link ~/Documents/Notes # or: memgineering init ~/brain
|
|
14
21
|
```
|
|
15
22
|
|
|
23
|
+
</details>
|
|
24
|
+
|
|
16
25
|
## What it does
|
|
17
26
|
|
|
18
27
|
```bash
|
|
@@ -131,6 +140,7 @@ can register it to run automatically when a Claude Code session starts.
|
|
|
131
140
|
| `init <path>` | create a brain, laid out and ready |
|
|
132
141
|
| `link <path>` | read notes you already keep |
|
|
133
142
|
| `use [brain]` | bind this folder to one brain |
|
|
143
|
+
| `push` · `pull` | carry a brain to your account, and back down again |
|
|
134
144
|
| `unlink` · `reindex` · `sync-rules` | brain housekeeping |
|
|
135
145
|
| `log` | what changed, and what can still be undone |
|
|
136
146
|
| `retire` · `unretire` | mark a memory no longer current, or current again |
|
|
@@ -148,13 +158,27 @@ Every command takes `--json`.
|
|
|
148
158
|
| `MEMGINEERING_JSON=1` | force JSON output without the flag |
|
|
149
159
|
| `MEMGINEERING_NO_UPDATE=1` | skip the version check for one run |
|
|
150
160
|
|
|
151
|
-
##
|
|
161
|
+
## A brain that is not on this machine
|
|
162
|
+
|
|
163
|
+
A brain can also live in a memgineering account, so the same memory reaches
|
|
164
|
+
every tool and device you sign in from. Nothing about the local path went away —
|
|
165
|
+
`--local` reads the folder on this disk whether or not you are signed in.
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
memgineering push # carry this folder up, note by note
|
|
169
|
+
memgineering pull ~/my-brain # bring it back down, as markdown
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
The pair is deliberately asymmetric in the same direction: **`push` never
|
|
173
|
+
deletes anything here, and `pull` never overwrites anything here.** A file
|
|
174
|
+
already at that path is left alone and reported, so an interrupted transfer is
|
|
175
|
+
finished by running the command again and a mistyped folder costs you nothing.
|
|
152
176
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
177
|
+
What `pull` writes is your notes, at the paths they had, including the ones your
|
|
178
|
+
rules exclude — excluded means "stop reading this", not "this is no longer
|
|
179
|
+
yours" — with `.memgignore` alongside them so the scoping survives the trip.
|
|
180
|
+
It is a folder of markdown, not yet a brain: `memgineering link` is what makes
|
|
181
|
+
it one, and it shows you what it would read first.
|
|
158
182
|
|
|
159
183
|
## Licence
|
|
160
184
|
|
package/assets/MEMGINEERING.md
CHANGED
|
@@ -12,6 +12,22 @@ use can read and write through the `memgineering` CLI. It outlives this
|
|
|
12
12
|
session and this tool. Treat it as the place where what they know actually
|
|
13
13
|
lives, and this conversation as temporary.
|
|
14
14
|
|
|
15
|
+
## Which tools this actually reaches, today
|
|
16
|
+
|
|
17
|
+
Answer this from here, not from a guess. "Every AI tool" above means every tool
|
|
18
|
+
that can run this CLI — and that is a shorter list than people assume.
|
|
19
|
+
|
|
20
|
+
| | |
|
|
21
|
+
| -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
|
|
22
|
+
| **Claude Code · Codex · Gemini CLI** | `memgineering setup` installs into these. They read and write the same brain. |
|
|
23
|
+
| **Anything else with a shell** | Works — the CLI is the whole interface. Nothing has to be built for a new tool. |
|
|
24
|
+
| **ChatGPT · Claude on the web · phone apps** | **Not yet.** There is no connector. A hosted brain is reachable by them in principle and is not wired up in practice. |
|
|
25
|
+
|
|
26
|
+
So when someone asks _"will my ChatGPT remember this too?"_, the answer is **not
|
|
27
|
+
yet, and here is what does** — not a hedge, and not a promise. Saying "you are
|
|
28
|
+
signed in, so it works everywhere" is the specific wrong answer: the account
|
|
29
|
+
syncs the brain between machines, it does not add a surface that can read it.
|
|
30
|
+
|
|
15
31
|
## When to reach for it
|
|
16
32
|
|
|
17
33
|
**Start a session by asking what you are missing.** Before working in an
|
|
@@ -95,6 +111,23 @@ six months from now, and it is refused if it looks like it carries a credential.
|
|
|
95
111
|
memgineering revise <handle> --claim "Deploying is manual now." --summary "manual only"
|
|
96
112
|
```
|
|
97
113
|
|
|
114
|
+
**Get their notes out whenever they ask** — a backup, a new machine, "where is
|
|
115
|
+
my memory actually kept", or plain curiosity about what is stored:
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
memgineering pull ~/my-brain
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
It downloads their hosted brain as markdown and **never overwrites** a file
|
|
122
|
+
already there, so it is safe to run twice and safe to point at the wrong
|
|
123
|
+
folder. `push` is the other direction and never deletes anything locally.
|
|
124
|
+
|
|
125
|
+
Say what arrives: notes the brain excludes from recall come down too, with
|
|
126
|
+
`.memgignore` beside them. Excluded means "stop reading this", not "this is no
|
|
127
|
+
longer theirs" — but readable files in a folder is not something to let them
|
|
128
|
+
discover later. What lands is markdown, not yet a brain here; offer
|
|
129
|
+
`memgineering link <folder>` rather than running it.
|
|
130
|
+
|
|
98
131
|
## What to raise with the user rather than just doing
|
|
99
132
|
|
|
100
133
|
The tool does not gate writes; your judgement does. Tell them — plainly, once
|
|
@@ -335,3 +335,29 @@ the user can see, and let them answer. Do not pass `--yes` on their behalf.
|
|
|
335
335
|
With no terminal attached it says so instead of assuming the answer was no.
|
|
336
336
|
Show them `memgineering link <path> --dry-run` — same disclosure, writes
|
|
337
337
|
nothing — and run with `--yes` only once they have actually said yes.
|
|
338
|
+
|
|
339
|
+
## Moving a brain between this machine and their account
|
|
340
|
+
|
|
341
|
+
```
|
|
342
|
+
memgineering push # this folder → their account
|
|
343
|
+
memgineering pull ~/my-brain # their account → a folder here
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
Both are safe to run twice, and each is careful in the opposite direction:
|
|
347
|
+
**`push` never deletes anything locally, `pull` never overwrites anything
|
|
348
|
+
locally.** Whatever was already there is left alone and counted in the summary,
|
|
349
|
+
so an interrupted transfer finishes by running the same command again.
|
|
350
|
+
|
|
351
|
+
Reach for `pull` when the user asks to get their notes out, wants a backup,
|
|
352
|
+
is moving machines, or asks where their memory actually lives. **Say what it
|
|
353
|
+
brings**: notes the brain excludes from recall come down too — excluded means
|
|
354
|
+
"stop reading this", not "this is no longer yours" — along with `.memgignore`,
|
|
355
|
+
so nothing is silently un-excluded on the way. If any of those arrive, tell
|
|
356
|
+
them; readable files in a folder is not something to discover later.
|
|
357
|
+
|
|
358
|
+
What lands is markdown and nothing more. It is not a brain on this machine
|
|
359
|
+
until `memgineering link <folder>` — offer that as a next step rather than
|
|
360
|
+
doing it, since it is a second decision they did not ask for.
|
|
361
|
+
|
|
362
|
+
`--dry-run` on either verb lists what would move and moves nothing. Use it when
|
|
363
|
+
the user is unsure which folder they mean.
|
|
@@ -55,6 +55,20 @@ one at a time, in plain language. Reach for it when the user is not reading
|
|
|
55
55
|
your terminal at all — they have never opened one, or they are the one who has
|
|
56
56
|
to decide and a checkbox screen you are driving is not where they can.
|
|
57
57
|
|
|
58
|
+
**Its first screen is the account question, and it is theirs.** The page
|
|
59
|
+
explains what memgineering is, compares keeping the memory on this machine
|
|
60
|
+
against keeping it in an account — what works without one (everything), what
|
|
61
|
+
only works with one (the same memory on another machine, and on a machine they
|
|
62
|
+
no longer have), what it costs (one brain, free) — and only starts a sign-in
|
|
63
|
+
after they pick. Do not answer it for them and do not pre-empt it by running
|
|
64
|
+
`login` first.
|
|
65
|
+
|
|
66
|
+
If they already told you which way they want it, pass `--login` or
|
|
67
|
+
`--no-login`: the screen opens with that answer selected rather than asking
|
|
68
|
+
again, and they can still change it. If they chose an account, the page shows
|
|
69
|
+
a short code at the end — read it out to them; approving it in the browser is
|
|
70
|
+
the last thing they do.
|
|
71
|
+
|
|
58
72
|
It covers step 2 as well: the page offers the notes folders it finds on the
|
|
59
73
|
machine, and shows the same disclosure `link --dry-run` prints — how many notes
|
|
60
74
|
would be indexed, which ones are refused and why, with samples of the lines
|
package/bin/memgineering.js
CHANGED
|
File without changes
|