hmem-mcp 7.0.4 → 7.0.5

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/README.md CHANGED
@@ -1,203 +1,203 @@
1
1
  # hmem — Humanlike Memory for AI Agents
2
2
 
3
- > Your AI forgets everything between sessions. **hmem fixes that.**
3
+ > Your AI forgets everything between sessions. **hmem fixes that.**
4
4
 
5
- One `read_memory()` cal l. 5k tokens. Your agent knows every project, every past mistake, every decision you ever made together — across sessions, devices, a nd AI providers. No setup per conversation. N o "let me re-read the codebase." It just *rem embers*.
5
+ One `read_memory()` call. 5k tokens. Your agent knows every project, every past mistake, every decision you ever made together — across sessions, devices, and AI providers. No setup per conversation. No "let me re-read the codebase." It just *remembers*.
6
6
 
7
7
  ---
8
8
 
9
9
  ## The Problem
10
10
 
11
- Every AI sessi on starts from zero. Your agent asks the same questions, makes the same mistakes, contradi cts last week's decisions, and wastes 50k tok ens loading context it already processed yest erday.
11
+ Every AI session starts from zero. Your agent asks the same questions, makes the same mistakes, contradicts last week's decisions, and wastes 50k tokens loading context it already processed yesterday.
12
12
 
13
- You've tried workarounds — CLAUDE.m d files, custom prompts, manually pasting con text. They don't scale. You have 10 projects. You switch between 3 devices. You use differ ent AI tools.
13
+ You've tried workarounds — CLAUDE.md files, custom prompts, manually pasting context. They don't scale. You have 10 projects. You switch between 3 devices. You use different AI tools.
14
14
 
15
15
  ## The Solution
16
16
 
17
17
  ```
18
- You: " Load project hmem"
19
- Agent: [calls load_projec t("P0048") — 700 tokens]
20
- Agent: "Got it. v 5.0.0, TypeScript/SQLite/npm, 10 source files ,
21
- 3 open tasks, 9 ideas. Last sessio n you implemented
22
- auto-checkpoints v ia Haiku. What's next?"
18
+ You: "Load project hmem"
19
+ Agent: [calls load_project("P0048") — 700 tokens]
20
+ Agent: "Got it. v5.0.0, TypeScript/SQLite/npm, 10 source files,
21
+ 3 open tasks, 9 ideas. Last session you implemented
22
+ auto-checkpoints via Haiku. What's next?"
23
23
  ```
24
24
 
25
- That's it. 700 t okens for a complete project briefing. The ag ent knows the stack, the architecture, the op en bugs, the recent decisions, and exactly wh ere you left off — even if "you" was a diff erent AI on a different machine yesterday.
25
+ That's it. 700 tokens for a complete project briefing. The agent knows the stack, the architecture, the open bugs, the recent decisions, and exactly where you left off — even if "you" was a different AI on a different machine yesterday.
26
26
 
27
- - --
27
+ ---
28
28
 
29
29
  ## How It Works
30
30
 
31
31
  ```
32
- Level 1 ── One -line summary (always loaded — ~5k tokens for 300+ entries)
33
- Level 2 ── Paragraph detail (loaded on demand)
34
- Level 3 ── Full context (lo aded on demand)
35
- Level 4 ── Extend ed detail (loaded on demand)
36
- Lev el 5 ── Raw/verbatim data (loaded on d emand)
32
+ Level 1 ── One-line summary (always loaded — ~5k tokens for 300+ entries)
33
+ Level 2 ── Paragraph detail (loaded on demand)
34
+ Level 3 ── Full context (loaded on demand)
35
+ Level 4 ── Extended detail (loaded on demand)
36
+ Level 5 ── Raw/verbatim data (loaded on demand)
37
37
  ```
38
38
 
39
- At session start, the agent loads Level 1 summaries — one line per memory. W hen it needs detail, it drills down. Your 300 -entry memory costs 5k tokens to overview. A single project costs 700.
39
+ At session start, the agent loads Level 1 summaries — one line per memory. When it needs detail, it drills down. Your 300-entry memory costs 5k tokens to overview. A single project costs 700.
40
40
 
41
- **Nothing is summa rized away.** Level 1 is a summary, but Level s 2-5 hold the complete original text, word f or word, accessible on demand.
41
+ **Nothing is summarized away.** Level 1 is a summary, but Levels 2-5 hold the complete original text, word for word, accessible on demand.
42
42
 
43
43
  ---
44
44
 
45
- ## What Makes v5 Different
45
+ ## What Makes v5 Different
46
46
 
47
- ### Automatic Session Mem ory
47
+ ### Automatic Session Memory
48
48
 
49
- Every conversation is recorded automatic ally. No "save your work" prompts. No manual checkpoints.
49
+ Every conversation is recorded automatically. No "save your work" prompts. No manual checkpoints.
50
50
 
51
51
  ```
52
- You type → Agent respon ds → Stop hook fires → Exchange saved to O-entry
53
- → Linked to active projec t
52
+ You type → Agent responds → Stop hook fires → Exchange saved to O-entry
53
+ → Linked to active project
54
54
  → Haiku auto-titles the session
55
- ```
55
+ ```
56
56
 
57
- Switch projects mid-session? The O-entry sw itches too. Start a new session on a differen t PC? The next agent sees every exchange from every device — **the conversation never di es**.
57
+ Switch projects mid-session? The O-entry switches too. Start a new session on a different PC? The next agent sees every exchange from every device — **the conversation never dies**.
58
58
 
59
59
  ### Haiku Background Checkpoints
60
60
 
61
- Ever y 20 exchanges, a Haiku subagent wakes up in the background. It reads the recent conversat ion, extracts lessons learned, errors encount ered, and decisions made, then writes them to long-term memory — with full MCP tool acce ss. Your main agent is never interrupted.
61
+ Every 20 exchanges, a Haiku subagent wakes up in the background. It reads the recent conversation, extracts lessons learned, errors encountered, and decisions made, then writes them to long-term memory — with full MCP tool access. Your main agent is never interrupted.
62
62
 
63
- Th e checkpoint also writes a **handoff note** t o the project: "Here's what was done, here's what's in progress, here's the next step." Th e next agent — on any device, any provider — picks up exactly where you left off.
63
+ The checkpoint also writes a **handoff note** to the project: "Here's what was done, here's what's in progress, here's the next step." The next agent — on any device, any provider — picks up exactly where you left off.
64
64
 
65
- ### Project-Based, Not Session-Based
65
+ ### Project-Based, Not Session-Based
66
66
 
67
- Sessions a re meaningless. Projects are everything.
67
+ Sessions are meaningless. Projects are everything.
68
68
 
69
- - O -entries are linked to the active project, no t the session
70
- - Checkpoint counters count pro ject exchanges, not session messages
71
- - 10 mes sages on your laptop + 10 on your server = ch eckpoint fires on message 20
72
- - `load_project` shows recent conversations with full context — across all devices
69
+ - O-entries are linked to the active project, not the session
70
+ - Checkpoint counters count project exchanges, not session messages
71
+ - 10 messages on your laptop + 10 on your server = checkpoint fires on message 20
72
+ - `load_project` shows recent conversations with full context — across all devices
73
73
 
74
74
  ---
75
75
 
76
- ## Key Features
76
+ ## Key Features
77
77
 
78
78
  | Feature | What it does |
79
- |---------|----- --------|
80
- | **5-level lazy loading** | Tokens scale with need, not memory size |
81
- | **Smart bulk reads** | Expands newest + most-accesse d; compresses the rest to titles |
82
- | **Projec t gate** | Activate a project — only releva nt memories are expanded |
83
- | **Duplicate dete ction** | Warns before creating entries that already exist |
84
- | **Encrypted sync** | AES-25 6-GCM, zero-knowledge server, multi-server re dundancy |
85
- | **Auto-logging** | Every exchang e recorded via Stop hook (O-prefix) |
86
- | **Aut o-checkpoint** | Haiku extracts L/D/E entries every N exchanges |
87
- | **Project handoff** | Background agent maintains "current state" in Protocol section |
88
- | **User skill tracking** | Agents track your expertise (1-10) and ada pt communication |
89
- | **Hashtags** | Cross-cut ting tags for discovery across all categories |
90
- | **Obsolete chains** | Mark entries wrong with correction reference — auto-follows |
91
- | **Cross-provider** | Claude, Gemini, GPT, DeepSeek, local models — same memory |
92
- | ** Cross-tool** | Claude Code, Gemini CLI, Curso r, Windsurf, OpenCode, Cline |
93
- | **Import/Exp ort** | Share memories between agents or back up as Markdown |
79
+ |---------|--------------|
80
+ | **5-level lazy loading** | Tokens scale with need, not memory size |
81
+ | **Smart bulk reads** | Expands newest + most-accessed; compresses the rest to titles |
82
+ | **Project gate** | Activate a project — only relevant memories are expanded |
83
+ | **Duplicate detection** | Warns before creating entries that already exist |
84
+ | **Encrypted sync** | AES-256-GCM, zero-knowledge server, multi-server redundancy |
85
+ | **Auto-logging** | Every exchange recorded via Stop hook (O-prefix) |
86
+ | **Auto-checkpoint** | Haiku extracts L/D/E entries every N exchanges |
87
+ | **Project handoff** | Background agent maintains "current state" in Protocol section |
88
+ | **User skill tracking** | Agents track your expertise (1-10) and adapt communication |
89
+ | **Hashtags** | Cross-cutting tags for discovery across all categories |
90
+ | **Obsolete chains** | Mark entries wrong with correction reference — auto-follows |
91
+ | **Cross-provider** | Claude, Gemini, GPT, DeepSeek, local models — same memory |
92
+ | **Cross-tool** | Claude Code, Gemini CLI, Cursor, Windsurf, OpenCode, Cline |
93
+ | **Import/Export** | Share memories between agents or back up as Markdown |
94
94
 
95
95
  ### Categories
96
96
 
97
- | Prefix | Category | Example |
98
- |--------|----------|-- -------|
99
- | **P** | Project | `hmem-mcp \| Act ive \| TS/SQLite/npm \| Persistent AI memory` |
100
- | **L** | Lesson | `HMEM_AGENT_ID must be set in hooks — resolveHmemPath falls back t o wrong DB` |
101
- | **E** | Error | `158 spurious O-entries created when Haiku MCP lacked HMEM _NO_SESSION guard` |
102
- | **D** | Decision | `Pr oject-based O-entries over session-based — sessions are meaningless` |
103
- | **H** | Human | `User Skill: TypeScript 9, Architecture 9, R eact 3` |
104
- | **R** | Rule | `Max one npm publi sh per day — batch changes` |
105
- | **O** | Ori ginal | Auto-recorded conversation history (e very exchange, every device) |
106
- | **I** | Infr a | `Strato Server \| Active \| Linux \| 87.1 06.22.11` |
97
+ | Prefix | Category | Example |
98
+ |--------|----------|---------|
99
+ | **P** | Project | `hmem-mcp \| Active \| TS/SQLite/npm \| Persistent AI memory` |
100
+ | **L** | Lesson | `HMEM_AGENT_ID must be set in hooks — resolveHmemPath falls back to wrong DB` |
101
+ | **E** | Error | `158 spurious O-entries created when Haiku MCP lacked HMEM_NO_SESSION guard` |
102
+ | **D** | Decision | `Project-based O-entries over session-based — sessions are meaningless` |
103
+ | **H** | Human | `User Skill: TypeScript 9, Architecture 9, React 3` |
104
+ | **R** | Rule | `Max one npm publish per day — batch changes` |
105
+ | **O** | Original | Auto-recorded conversation history (every exchange, every device) |
106
+ | **I** | Infra | `Strato Server \| Active \| Linux \| 87.106.22.11` |
107
107
 
108
108
  ---
109
109
 
110
110
  ## Quick Start
111
111
 
112
- ### 1. Inst all
112
+ ### 1. Install
113
113
 
114
114
  ```bash
115
115
  npm install -g hmem-mcp
116
116
  ```
117
117
 
118
- ### 2. Run the interactive installer
118
+ ### 2. Run the interactive installer
119
119
 
120
120
  ```bash
121
- np x hmem init
121
+ npx hmem init
122
122
  ```
123
123
 
124
- This detects your AI tools, creates the memory directory, configures MCP, and installs all 4 hooks:
124
+ This detects your AI tools, creates the memory directory, configures MCP, and installs all 4 hooks:
125
125
 
126
- | Hook | When | W hat |
126
+ | Hook | When | What |
127
127
  |------|------|------|
128
- | `UserPromptSub mit` | Every message | First message: load me mory. Every Nth: checkpoint reminder |
129
- | `Sto p` (sync) | Every response | Log exchange to active O-entry |
130
- | `Stop` (async) | Every res ponse | Haiku auto-titles untitled sessions |
131
- | `SessionStart[clear]` | After /clear | Re- inject project context |
128
+ | `UserPromptSubmit` | Every message | First message: load memory. Every Nth: checkpoint reminder |
129
+ | `Stop` (sync) | Every response | Log exchange to active O-entry |
130
+ | `Stop` (async) | Every response | Haiku auto-titles untitled sessions |
131
+ | `SessionStart[clear]` | After /clear | Re-inject project context |
132
132
 
133
133
  ### 3. Verify
134
134
 
135
- Rest art your AI tool, then:
135
+ Restart your AI tool, then:
136
136
 
137
137
  ```
138
138
  read_memory()
139
- `` `
139
+ ```
140
140
 
141
- Empty response = working (first run). Erro r = check the [troubleshooting section](#trou bleshooting).
141
+ Empty response = working (first run). Error = check the [troubleshooting section](#troubleshooting).
142
142
 
143
143
  ### Manual setup
144
144
 
145
- If you prefe r manual configuration over `hmem init`:
145
+ If you prefer manual configuration over `hmem init`:
146
146
 
147
- <de tails>
148
- <summary>Claude Code — edit ~/.claud e/.mcp.json</summary>
147
+ <details>
148
+ <summary>Claude Code — edit ~/.claude/.mcp.json</summary>
149
149
 
150
150
  ```json
151
151
  {
152
- "mcpServer s": {
152
+ "mcpServers": {
153
153
  "hmem": {
154
- "command": "/absolu te/path/to/node",
155
- "args": ["/absolute/p ath/to/hmem-mcp/dist/mcp-server.js"],
156
- " env": {
157
- "HMEM_PROJECT_DIR": "/home/yo urname/.hmem",
158
- "HMEM_AGENT_ID": "DEVE LOPER"
154
+ "command": "/absolute/path/to/node",
155
+ "args": ["/absolute/path/to/hmem-mcp/dist/mcp-server.js"],
156
+ "env": {
157
+ "HMEM_PROJECT_DIR": "/home/yourname/.hmem",
158
+ "HMEM_AGENT_ID": "DEVELOPER"
159
159
  }
160
160
  }
161
161
  }
162
162
  }
163
163
  ```
164
164
 
165
- Find the path s:
165
+ Find the paths:
166
166
  ```bash
167
167
  echo "Node: $(which node)"
168
- echo "S erver: $(npm root -g)/hmem-mcp/dist/mcp-serve r.js"
168
+ echo "Server: $(npm root -g)/hmem-mcp/dist/mcp-server.js"
169
169
  ```
170
170
  </details>
171
171
 
172
172
  <details>
173
- <summary>Open Code — edit ~/.config/opencode/opencode.jso n</summary>
173
+ <summary>Open Code — edit ~/.config/opencode/opencode.json</summary>
174
174
 
175
175
  ```json
176
176
  {
177
177
  "mcp": {
178
- "hmem": {
178
+ "hmem": {
179
179
  "type": "local",
180
- "command": [" /absolute/path/to/node", "/absolute/path/to/h mem-mcp/dist/mcp-server.js"],
181
- "environm ent": { "HMEM_PROJECT_DIR": "/home/yourname/. hmem" },
180
+ "command": ["/absolute/path/to/node", "/absolute/path/to/hmem-mcp/dist/mcp-server.js"],
181
+ "environment": { "HMEM_PROJECT_DIR": "/home/yourname/.hmem" },
182
182
  "enabled": true
183
183
  }
184
184
  }
185
185
  }
186
- `` `
186
+ ```
187
187
  </details>
188
188
 
189
189
  <details>
190
- <summary>Cursor / Win dsurf / Cline</summary>
190
+ <summary>Cursor / Windsurf / Cline</summary>
191
191
 
192
- Edit `~/.cursor/mcp. json`, `~/.codeium/windsurf/mcp_config.json`, or `.vscode/mcp.json`:
192
+ Edit `~/.cursor/mcp.json`, `~/.codeium/windsurf/mcp_config.json`, or `.vscode/mcp.json`:
193
193
 
194
194
  ```json
195
195
  {
196
- "mcpServ ers": {
196
+ "mcpServers": {
197
197
  "hmem": {
198
- "command": "/abso lute/path/to/node",
199
- "args": ["/absolute /path/to/hmem-mcp/dist/mcp-server.js"],
200
- "env": { "HMEM_PROJECT_DIR": "/home/yourname /.hmem" }
198
+ "command": "/absolute/path/to/node",
199
+ "args": ["/absolute/path/to/hmem-mcp/dist/mcp-server.js"],
200
+ "env": { "HMEM_PROJECT_DIR": "/home/yourname/.hmem" }
201
201
  }
202
202
  }
203
203
  }
@@ -206,68 +206,68 @@ Edit `~/.cursor/mcp. json`, `~/.codeium/windsurf/mcp_config.json`, or `.vscode/
206
206
 
207
207
  ---
208
208
 
209
- ## Configuration
209
+ ## Configuration
210
210
 
211
- `hmem.config.json` in your `H MEM_PROJECT_DIR` (or `Agents/NAME/`):
211
+ `hmem.config.json` in your `HMEM_PROJECT_DIR` (or `Agents/NAME/`):
212
212
 
213
- ```jso n
213
+ ```json
214
214
  {
215
215
  "memory": {
216
- "maxCharsPerLevel": [20 0, 2500, 10000, 25000, 50000],
217
- "maxDepth" : 5,
216
+ "maxCharsPerLevel": [200, 2500, 10000, 25000, 50000],
217
+ "maxDepth": 5,
218
218
  "checkpointMode": "auto",
219
- "check pointInterval": 20,
220
- "recentOEntries": 10,
219
+ "checkpointInterval": 20,
220
+ "recentOEntries": 10,
221
221
  "maxTitleChars": 50,
222
- "prefixes": { " X": "Custom" }
222
+ "prefixes": { "X": "Custom" }
223
223
  },
224
224
  "sync": {
225
- "serverUr l": "https://your-server/hmem-sync",
226
- "use rId": "yourname",
225
+ "serverUrl": "https://your-server/hmem-sync",
226
+ "userId": "yourname",
227
227
  "salt": "...",
228
- "tok en": "..."
228
+ "token": "..."
229
229
  }
230
230
  }
231
231
  ```
232
232
 
233
- | Key | Default | What it does |
233
+ | Key | Default | What it does |
234
234
  |-----|---------|-------------|
235
- | ` checkpointMode` | `"remind"` | `"auto"` = Hai ku writes L/D/E in background. `"remind"` = a sks the main agent |
236
- | `checkpointInterval` | `20` | Exchanges between checkpoints. Set `0 ` to disable |
237
- | `recentOEntries` | `10` | Ho w many recent sessions to show in `load_proje ct` |
235
+ | `checkpointMode` | `"remind"` | `"auto"` = Haiku writes L/D/E in background. `"remind"` = asks the main agent |
236
+ | `checkpointInterval` | `20` | Exchanges between checkpoints. Set `0` to disable |
237
+ | `recentOEntries` | `10` | How many recent sessions to show in `load_project` |
238
238
 
239
- All keys are optional. Missing keys us e defaults.
239
+ All keys are optional. Missing keys use defaults.
240
240
 
241
241
  ---
242
242
 
243
243
  ## Cross-Device Sync
244
244
 
245
- Sync memories across all devices with zero-knowled ge encryption.
245
+ Sync memories across all devices with zero-knowledge encryption.
246
246
 
247
247
  ```bash
248
- npm install -g hmem-s ync
249
- npx hmem-sync connect # Interactive w izard — first device creates, others join
250
- ` ``
248
+ npm install -g hmem-sync
249
+ npx hmem-sync connect # Interactive wizard — first device creates, others join
250
+ ```
251
+
252
+ Add `HMEM_SYNC_PASSPHRASE` to your MCP config for automatic sync on every read/write.
251
253
 
252
- Add `HMEM_SYNC_PASSPHRASE` to your MCP co nfig for automatic sync on every read/write.
253
-
254
254
  ### Multi-server redundancy
255
255
 
256
256
  ```json
257
257
  {
258
- "sy nc": [
259
- { "name": "primary", "serverUrl": "https://server1/hmem-sync", "userId": "me", "salt": "...", "token": "..." },
260
- { "name" : "backup", "serverUrl": "https://server2/hm em-sync", "userId": "me", "salt": "...", "tok en": "..." }
258
+ "sync": [
259
+ { "name": "primary", "serverUrl": "https://server1/hmem-sync", "userId": "me", "salt": "...", "token": "..." },
260
+ { "name": "backup", "serverUrl": "https://server2/hmem-sync", "userId": "me", "salt": "...", "token": "..." }
261
261
  ]
262
262
  }
263
263
  ```
264
264
 
265
265
  ### Announcements
266
266
 
267
- Br oadcast to all synced agents across all devic es:
267
+ Broadcast to all synced agents across all devices:
268
268
 
269
269
  ```bash
270
- npx hmem-sync announce --message "Server URL changing — update your config! "
270
+ npx hmem-sync announce --message "Server URL changing — update your config!"
271
271
  ```
272
272
 
273
273
 
@@ -309,27 +309,26 @@ Run `npm root -g` to get the correct `node_modules` path for your machine.
309
309
 
310
310
  ## Troubleshooting
311
311
 
312
- | Problem | F ix |
312
+ | Problem | Fix |
313
313
  |---------|-----|
314
- | `read_memory()` fail s | Check `HMEM_PROJECT_DIR` is absolute path and directory exists |
315
- | nvm: `node not foun d` | Use absolute path: `which node` → use as `"command"` |
316
- | Hooks not firing | Restart Claude Code. Check `~/.claude/settings.json` has all 4 hooks |
317
- | Exchanges not logged | C heck `HMEM_AGENT_ID` matches your `Agents/` d irectory name |
318
- | Sync fails | Run `npx hmem- sync connect` to re-authenticate |
314
+ | `read_memory()` fails | Check `HMEM_PROJECT_DIR` is absolute path and directory exists |
315
+ | nvm: `node not found` | Use absolute path: `which node` → use as `"command"` |
316
+ | Hooks not firing | Restart Claude Code. Check `~/.claude/settings.json` has all 4 hooks |
317
+ | Exchanges not logged | Check `HMEM_AGENT_ID` matches your `Agents/` directory name |
318
+ | Sync fails | Run `npx hmem-sync connect` to re-authenticate |
319
319
 
320
320
  ---
321
321
 
322
- ## U pdating
322
+ ## Updating
323
323
 
324
324
  ```bash
325
325
  npm update -g hmem-mcp # MCP server
326
- npm update -g hmem-sync # Sync (if installed)
326
+ npm update -g hmem-sync # Sync (if installed)
327
327
  npx hmem update-skills # Refresh skill files
328
328
  ```
329
329
 
330
330
  ---
331
331
 
332
- ## Lice nse
332
+ ## License
333
333
 
334
334
  MIT
335
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hmem-mcp",
3
- "version": "7.0.4",
3
+ "version": "7.0.5",
4
4
  "description": "Humanlike memory for AI agents — MCP server with 5-level lazy-loaded SQLite memory",
5
5
  "author": "Bumblebiber",
6
6
  "license": "MIT",
@@ -292,6 +292,34 @@ No schema changes, no DB migrations.
292
292
 
293
293
  ---
294
294
 
295
+ ## Step 2h: v7.0.4 - Null-Safe Titles and Richer Session-Start Context
296
+
297
+ **Only needed when upgrading from < v7.0.4**
298
+
299
+ ### Null-safe title fixes (set_active_device + statusline)
300
+
301
+ Some I-entries (and potentially other entries) have a NULL title in SQLite. In prior versions this caused set_active_device and the statusline to crash with Cannot read properties of null (reading split). Both are now fixed with (row.title ?? id).split("|")[0].
302
+
303
+ **No action needed** - the fix is purely in the code. If set_active_device was crashing before, it will now work correctly.
304
+
305
+ ### hook-startup enhancements (first-message context injection)
306
+
307
+ The UserPromptSubmit hook now injects richer context on the **first message of every session**:
308
+
309
+ 1. **Always-on device reminder** - regardless of whether a device is already set, the agent is reminded to verify the active device matches the current machine and call set_active_device if needed. Previously this reminder was only shown when no device was set at all.
310
+
311
+ 2. **H-entries (human profile)** - up to 10 H-entries (sorted by access count) are injected as a short list (ID title). Gives the agent immediate context about the user without requiring a separate read_memory(prefix="H") call.
312
+
313
+ 3. **Recent projects** - the 3 most recently updated P-entries are injected as ID title. Helps the agent recognize which project to load if the user's first message is project-related.
314
+
315
+ **No config change needed** - all enhancements are automatic from the updated cli-hook-startup.js.
316
+
317
+ ### Windows example config on GitHub
318
+
319
+ settings.windows.example.json is now in the Bumblebiber/hmem repository. If you are on Windows, refer to it as the canonical example for hook and statusline configuration with "shell": "powershell".
320
+
321
+ ---
322
+
295
323
  ## Step 3: Entry Migration
296
324
 
297
325
  Some versions introduce new data formats. Check if migration is needed: