threadnote 0.7.11 → 1.0.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/docs/index.html CHANGED
@@ -765,6 +765,7 @@
765
765
  <a href="#update" data-label="Update"><span>Update</span></a>
766
766
  <a href="#lifecycle" data-label="Lifecycle"><span>Lifecycle</span></a>
767
767
  <a href="#share" data-label="Share"><span>Share</span></a>
768
+ <a href="#manager" data-label="Web manager"><span>Manager</span></a>
768
769
  <a href="#use-cases" data-label="Use cases"><span>Use cases</span></a>
769
770
  <a href="#close" data-label="Get started"><span>Start</span></a>
770
771
  </nav>
@@ -782,7 +783,7 @@
782
783
  team-shared decisions — recallable from any session, on any agent, in any worktree.
783
784
  </p>
784
785
  <div class="cta-row">
785
- <span class="pill"><span id="version-tag">v0.6.1</span> · local-first · MIT</span>
786
+ <span class="pill"><span id="version-tag">v0.6.1</span> · local-first · GPL-3.0-or-later</span>
786
787
  </div>
787
788
  </div>
788
789
  <div class="scroll-cue">scroll ↓ &nbsp;·&nbsp; <span class="kbd">↓</span> / <span class="kbd">j</span></div>
@@ -1097,14 +1098,14 @@
1097
1098
  <div class="terminal-bar"><span></span><span></span><span></span></div>
1098
1099
  <pre><span class="cmd">$ curl -fsSL https://raw.githubusercontent.com/Kashkovsky/threadnote/main/scripts/install.sh | sh</span>
1099
1100
 
1100
- <span class="out">Installed threadnote@0.4.1</span>
1101
+ <span class="out">Installed threadnote@1.0.0</span>
1101
1102
  <span class="out">Already exists: ~/.local/bin/threadnote</span>
1102
1103
  <span class="out">OpenViking installs into Python; neither uv nor pipx is</span>
1103
1104
  <span class="out">on PATH so threadnote would fall back to `pip install</span>
1104
1105
  <span class="out">--user`, which fails on PEP 668 setups.</span>
1105
1106
  <span class="out">Install uv now? [Y/n] </span><span class="out-strong">Y</span>
1106
1107
  <span class="out">Installing uv via Homebrew…</span>
1107
- <span class="out-strong">OK openviking 0.3.12 ready · server healthy</span></pre>
1108
+ <span class="out-strong">OK openviking 0.3.24 ready · server healthy</span></pre>
1108
1109
  </div>
1109
1110
  <p class="muted" style="margin-top: 0.75rem; font-size: 0.9rem">
1110
1111
  Or manually: <code>npm install -g threadnote && threadnote install</code>. On a fresh macOS / modern
@@ -1218,8 +1219,8 @@ projects:
1218
1219
  <div class="terminal">
1219
1220
  <div class="terminal-bar"><span></span><span></span><span></span></div>
1220
1221
  <pre><span class="cmd">$ threadnote update</span>
1221
- <span class="out">Latest: threadnote@0.4.1 (installed: 0.4.0)</span>
1222
- <span class="out">Running: npm install -g threadnote@0.4.1</span>
1222
+ <span class="out">Latest: threadnote@1.0.0 (installed: 0.7.12)</span>
1223
+ <span class="out">Running: npm install -g threadnote@1.0.0</span>
1223
1224
  <span class="out">Running: threadnote repair</span>
1224
1225
  <span class="out-strong">All checks passed. Restart agents to reload MCP.</span></pre>
1225
1226
  </div>
@@ -1400,10 +1401,72 @@ threadnote remember \
1400
1401
  </div>
1401
1402
  </section>
1402
1403
 
1403
- <!-- 12. USE CASES -->
1404
+ <!-- 12. WEB MANAGER -->
1405
+ <section id="manager" class="slide">
1406
+ <div class="slide-inner">
1407
+ <span class="slide-eyebrow">11 · Web manager</span>
1408
+ <h2>A local web UI for the whole memory store.</h2>
1409
+ <p class="lead">
1410
+ Prefer a UI to the CLI? <code>threadnote manage</code> serves a local React app on
1411
+ <code>127.0.0.1</code> with a per-session token. Browse the tree, edit Markdown, run health checks, and
1412
+ manage shares — everything it does, the CLI and MCP do too.
1413
+ </p>
1414
+
1415
+ <img
1416
+ src="web-manager.png"
1417
+ alt="Threadnote web manager — Health and Doctor view with the memory tree, Memory / Sharing / Health / Tools tabs, and Run Doctor / Start OpenViking / Repair controls"
1418
+ loading="lazy"
1419
+ style="
1420
+ width: 100%;
1421
+ height: auto;
1422
+ display: block;
1423
+ margin-top: 1.5rem;
1424
+ border: 1px solid var(--line);
1425
+ border-radius: var(--radius-lg);
1426
+ "
1427
+ />
1428
+
1429
+ <div class="grid grid-2" style="margin-top: 1.5rem">
1430
+ <div class="card reveal">
1431
+ <span class="card-kicker">Memory</span>
1432
+ <h3>Browse &amp; edit the tree</h3>
1433
+ <p>
1434
+ Resizable, filterable navigation. Markdown preview by default, raw edit on demand, and
1435
+ confirmation-gated bulk archive / publish / forget that never silently targets filtered-out files.
1436
+ </p>
1437
+ </div>
1438
+ <div class="card reveal">
1439
+ <span class="card-kicker">Health</span>
1440
+ <h3>Doctor on open</h3>
1441
+ <p>
1442
+ The default tab runs <code>doctor</code> automatically. Run Doctor, Start OpenViking, and Repair stream
1443
+ into a scrollable output pane — the view in the screenshot above.
1444
+ </p>
1445
+ </div>
1446
+ <div class="card reveal">
1447
+ <span class="card-kicker">Sharing</span>
1448
+ <h3>Team repos, no CLI</h3>
1449
+ <p>
1450
+ Status, publish, sync, rename, set-url, remove, and preserve-local — full parity with
1451
+ <code>threadnote share</code>.
1452
+ </p>
1453
+ </div>
1454
+ <div class="card reveal">
1455
+ <span class="card-kicker">Tools</span>
1456
+ <h3>Recall, compact, consolidate</h3>
1457
+ <p>
1458
+ Recall and read, scoped compaction dry-runs, import/export packs, seeding, and AI-assisted consolidation
1459
+ drafted by a local Codex or Claude CLI then applied on confirm.
1460
+ </p>
1461
+ </div>
1462
+ </div>
1463
+ </div>
1464
+ </section>
1465
+
1466
+ <!-- 13. USE CASES -->
1404
1467
  <section id="use-cases" class="slide">
1405
1468
  <div class="slide-inner">
1406
- <span class="slide-eyebrow">11 · Real-world use cases</span>
1469
+ <span class="slide-eyebrow">12 · Real-world use cases</span>
1407
1470
  <h2>What you say. What the agent does.</h2>
1408
1471
  <p class="lead">
1409
1472
  You don't run threadnote commands yourself. You talk to your agent the way you already do; the agent calls
@@ -1495,10 +1558,10 @@ Stored: viking://user/you/memories/durable/projects/&lt;repo&gt;/release-process
1495
1558
  </div>
1496
1559
  </section>
1497
1560
 
1498
- <!-- 13. CLOSE -->
1561
+ <!-- 14. CLOSE -->
1499
1562
  <section id="close" class="slide">
1500
1563
  <div class="slide-inner">
1501
- <span class="slide-eyebrow">12 · Get started</span>
1564
+ <span class="slide-eyebrow">13 · Get started</span>
1502
1565
  <h2>Try it on your machine in 90 seconds.</h2>
1503
1566
 
1504
1567
  <pre style="margin-top: 1.5rem">
@@ -1522,8 +1585,8 @@ threadnote doctor --dry-run</code></pre>
1522
1585
  </div>
1523
1586
 
1524
1587
  <p class="colophon">
1525
- threadnote · MIT · built on OpenViking 0.3.12 · use <span class="kbd">↑</span> <span class="kbd">↓</span> /
1526
- <span class="kbd">j</span> <span class="kbd">k</span> to navigate
1588
+ threadnote · GPL-3.0-or-later · built on OpenViking 0.3.24 · use <span class="kbd">↑</span>
1589
+ <span class="kbd">↓</span> / <span class="kbd">j</span> <span class="kbd">k</span> to navigate
1527
1590
  </p>
1528
1591
  </div>
1529
1592
  </section>
package/docs/migration.md CHANGED
@@ -239,7 +239,7 @@ canonical instructions, active commands, active skills, MCP config, or anything
239
239
 
240
240
  ## Cutover Checklist
241
241
 
242
- - `doctor --dry-run` reports a healthy OpenViking server.
242
+ - `doctor --dry-run` reports a healthy OpenViking server and no stale recall index warnings.
243
243
  - `threadnote` works from a different repo or subdirectory.
244
244
  - `mcp-install` has been applied for the agent the developer actually uses.
245
245
  - `recall` returns seeded guidance.
@@ -120,8 +120,9 @@ threadnote start
120
120
 
121
121
  ## Claude MCP Fails While Health Is OK
122
122
 
123
- OpenViking `0.3.12` can be healthy at `/health` while returning `404` at `/mcp`. That means the stable server does not
124
- expose the native HTTP MCP endpoint.
123
+ Threadnote uses its bundled stdio MCP adapter by default, even when the installed OpenViking server exposes native
124
+ `/mcp`. The adapter adds Threadnote-specific tools and behavior such as shared-memory sync, exact recall fallback,
125
+ seeded-resource recall augmentation, and recall-index repair.
125
126
 
126
127
  Use the default stdio adapter:
127
128
 
@@ -133,7 +134,7 @@ claude mcp list
133
134
  `mcp-install claude` writes user-scoped Claude config by default. This is intentional: local-scoped config only applies
134
135
  to one repo/project, and the `threadnote` shim runs the implementation from the checkout that installed it.
135
136
 
136
- Only use `--native-http` with an OpenViking build that actually exposes `/mcp`.
137
+ Only use `--native-http` when you intentionally want the raw OpenViking HTTP endpoint instead of Threadnote's adapter.
137
138
 
138
139
  ## Worktree Was Deleted
139
140
 
@@ -146,8 +147,8 @@ From any fresh checkout, run:
146
147
  threadnote repair
147
148
  ```
148
149
 
149
- `repair` reinstalls the `threadnote` shim, repairs generated config files, starts OpenViking if needed, and rewrites
150
- Codex/Claude/Cursor/Copilot MCP configs to point at the current checkout.
150
+ `repair` reinstalls the `threadnote` shim, repairs generated config files, starts OpenViking if needed, repairs stale
151
+ recall indexes, and rewrites Codex/Claude/Cursor/Copilot MCP configs to point at the current checkout.
151
152
 
152
153
  ## MCP Install Is Only Printing Commands
153
154
 
Binary file
package/manager/app.css CHANGED
@@ -113,11 +113,12 @@ textarea {
113
113
  .sidebar {
114
114
  background: rgba(20, 20, 26, 0.94);
115
115
  display: grid;
116
- grid-template-rows: auto auto auto minmax(0, 1fr);
116
+ grid-template-rows: auto auto auto auto minmax(0, 1fr);
117
117
  min-height: 0;
118
118
  min-width: 0;
119
119
  overflow: hidden;
120
120
  padding: 16px;
121
+ row-gap: 0;
121
122
  }
122
123
 
123
124
  .sidebar-resizer {
@@ -241,6 +242,32 @@ body.is-resizing-sidebar * {
241
242
  width: auto;
242
243
  }
243
244
 
245
+ .nav-tree-tabs {
246
+ display: grid;
247
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
248
+ margin: 0 0 10px;
249
+ }
250
+
251
+ .nav-tree-tabs button {
252
+ border-radius: 0;
253
+ min-width: 0;
254
+ }
255
+
256
+ .nav-tree-tabs button:first-child {
257
+ border-radius: 6px 0 0 6px;
258
+ }
259
+
260
+ .nav-tree-tabs button:last-child {
261
+ border-left: 0;
262
+ border-radius: 0 6px 6px 0;
263
+ }
264
+
265
+ .nav-tree-tabs button.is-active {
266
+ background: var(--accent-soft);
267
+ border-color: var(--accent-line);
268
+ color: var(--accent);
269
+ }
270
+
244
271
  .tree {
245
272
  min-height: 0;
246
273
  overflow: auto;
@@ -251,6 +278,12 @@ body.is-resizing-sidebar * {
251
278
  margin: 2px 0;
252
279
  }
253
280
 
281
+ .tree-empty {
282
+ color: var(--muted);
283
+ font-size: 13px;
284
+ margin: 12px 4px;
285
+ }
286
+
254
287
  .tree summary,
255
288
  .tree-row {
256
289
  align-items: center;
@@ -268,6 +301,14 @@ body.is-resizing-sidebar * {
268
301
  list-style: none;
269
302
  }
270
303
 
304
+ .tree summary.is-readonly {
305
+ grid-template-columns: 14px minmax(0, 1fr);
306
+ }
307
+
308
+ .tree-row.is-readonly {
309
+ grid-template-columns: minmax(0, 1fr);
310
+ }
311
+
271
312
  .tree summary::-webkit-details-marker {
272
313
  display: none;
273
314
  }