threadnote 1.3.1 → 1.3.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/README.md +46 -37
- package/dist/mcp_server.cjs +3072 -3330
- package/dist/threadnote.cjs +5855 -6195
- package/docs/index.html +84 -29
- package/manager/app.js +5 -1
- package/package.json +3 -3
package/docs/index.html
CHANGED
|
@@ -4,18 +4,18 @@
|
|
|
4
4
|
<meta charset="utf-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
|
6
6
|
<meta name="color-scheme" content="dark" />
|
|
7
|
-
<title>Threadnote
|
|
7
|
+
<title>Threadnote - stop re-explaining context to coding agents</title>
|
|
8
8
|
<meta
|
|
9
9
|
name="description"
|
|
10
|
-
content="Threadnote
|
|
10
|
+
content="Threadnote gives Codex, Claude, Cursor, and Copilot one shared local memory for durable decisions, current handoffs, seeded repo docs, skills, and team knowledge."
|
|
11
11
|
/>
|
|
12
12
|
|
|
13
13
|
<link rel="icon" type="image/svg+xml" href="threadnote-logo.svg" />
|
|
14
14
|
|
|
15
|
-
<meta property="og:title" content="Threadnote
|
|
15
|
+
<meta property="og:title" content="Threadnote - shared local memory for coding agents" />
|
|
16
16
|
<meta
|
|
17
17
|
property="og:description"
|
|
18
|
-
content="
|
|
18
|
+
content="Stop re-explaining project context. Fresh agents recall the latest handoff, durable decisions, and team-shared knowledge."
|
|
19
19
|
/>
|
|
20
20
|
<meta property="og:image" content="threadnote-logo.svg" />
|
|
21
21
|
<meta property="og:type" content="website" />
|
|
@@ -757,7 +757,7 @@
|
|
|
757
757
|
<a href="#hero" data-label="Intro"><span>Intro</span></a>
|
|
758
758
|
<a href="#problem" data-label="Problem"><span>Problem</span></a>
|
|
759
759
|
<a href="#meet" data-label="Meet threadnote"><span>Meet</span></a>
|
|
760
|
-
<a href="#vs-instructions" data-label="vs
|
|
760
|
+
<a href="#vs-instructions" data-label="vs Markdown"><span>vs Markdown</span></a>
|
|
761
761
|
<a href="#how" data-label="How it works"><span>How</span></a>
|
|
762
762
|
<a href="#safety" data-label="Safety model"><span>Safety</span></a>
|
|
763
763
|
<a href="#install" data-label="Install"><span>Install</span></a>
|
|
@@ -776,14 +776,14 @@
|
|
|
776
776
|
<div class="slide-inner">
|
|
777
777
|
<img class="hero-logo" src="threadnote-logo-inverted.svg" alt="" aria-hidden="true" />
|
|
778
778
|
<h1 class="hero-title-gradient">
|
|
779
|
-
|
|
779
|
+
Stop re-explaining<br />context to <em class="hero-accent">coding agents</em>.
|
|
780
780
|
</h1>
|
|
781
781
|
<p class="lead">
|
|
782
|
-
|
|
783
|
-
|
|
782
|
+
Threadnote gives Codex, Claude, Cursor, and Copilot one shared local memory for durable decisions, current
|
|
783
|
+
handoffs, seeded repo docs, reusable skills, and team knowledge.
|
|
784
784
|
</p>
|
|
785
785
|
<div class="cta-row">
|
|
786
|
-
<span class="pill"><span id="version-tag">
|
|
786
|
+
<span class="pill"><span id="version-tag">v1.3.2</span> · local-first · AGPL-3.0-or-later</span>
|
|
787
787
|
</div>
|
|
788
788
|
</div>
|
|
789
789
|
<div class="scroll-cue">scroll ↓ · <span class="kbd">↓</span> / <span class="kbd">j</span></div>
|
|
@@ -801,6 +801,10 @@
|
|
|
801
801
|
<ul class="flat reveal" style="margin-top: 2rem">
|
|
802
802
|
<li><strong>Conversation history evaporates.</strong> Compaction summarizes; the nuance is lost.</li>
|
|
803
803
|
<li><strong>Each agent has its own memory.</strong> Switching from Codex to Claude means starting over.</li>
|
|
804
|
+
<li>
|
|
805
|
+
<strong>Markdown notes are passive.</strong> The agent still has to know which note matters now, whether
|
|
806
|
+
it is stale, and where to write the next handoff.
|
|
807
|
+
</li>
|
|
804
808
|
<li>
|
|
805
809
|
<strong>CLAUDE.md/AGENTS.md is per-repo and static.</strong> It can't carry an in-flight feature's design
|
|
806
810
|
decisions across sessions, much less across agents or repos.
|
|
@@ -839,10 +843,10 @@
|
|
|
839
843
|
</div>
|
|
840
844
|
<div class="card reveal">
|
|
841
845
|
<span class="card-kicker">Cross-session</span>
|
|
842
|
-
<h3>
|
|
846
|
+
<h3>More than compaction</h3>
|
|
843
847
|
<p>
|
|
844
|
-
|
|
845
|
-
|
|
848
|
+
Compaction summarizes a conversation. Threadnote stores explicit handoffs and durable memories the next
|
|
849
|
+
session can recall, inspect, update, archive, or share.
|
|
846
850
|
</p>
|
|
847
851
|
</div>
|
|
848
852
|
<div class="card reveal">
|
|
@@ -863,30 +867,64 @@
|
|
|
863
867
|
</p>
|
|
864
868
|
</div>
|
|
865
869
|
</div>
|
|
870
|
+
|
|
871
|
+
<div class="compare reveal" style="margin-top: 2rem">
|
|
872
|
+
<div class="compare-col">
|
|
873
|
+
<h3 class="warm">Before Threadnote</h3>
|
|
874
|
+
<ul class="flat">
|
|
875
|
+
<li>
|
|
876
|
+
<strong>Codex:</strong> asks what changed, rediscovers the test command, and trusts a compacted chat
|
|
877
|
+
summary to keep the important caveat.
|
|
878
|
+
</li>
|
|
879
|
+
<li>
|
|
880
|
+
<strong>Claude Code:</strong> resumes a long debugging thread with the story arc, but not the exact
|
|
881
|
+
blocker, command output, or decision that matters.
|
|
882
|
+
</li>
|
|
883
|
+
</ul>
|
|
884
|
+
</div>
|
|
885
|
+
|
|
886
|
+
<div class="compare-col">
|
|
887
|
+
<h3>With Threadnote</h3>
|
|
888
|
+
<ul class="flat">
|
|
889
|
+
<li>
|
|
890
|
+
<strong>Codex:</strong> recalls the branch handoff and durable feature memory before editing: files
|
|
891
|
+
touched, last failing check, design reason, next step.
|
|
892
|
+
</li>
|
|
893
|
+
<li>
|
|
894
|
+
<strong>Claude Code:</strong> snapshots concrete state before compaction and reads the same memory in
|
|
895
|
+
the next session instead of asking the user to reconstruct it.
|
|
896
|
+
</li>
|
|
897
|
+
</ul>
|
|
898
|
+
</div>
|
|
899
|
+
</div>
|
|
866
900
|
</div>
|
|
867
901
|
</section>
|
|
868
902
|
|
|
869
903
|
<!-- 4. vs CLAUDE.md / AGENTS.md -->
|
|
870
904
|
<section id="vs-instructions" class="slide">
|
|
871
905
|
<div class="slide-inner">
|
|
872
|
-
<span class="slide-eyebrow">03 · Why not just
|
|
873
|
-
<h2>Use
|
|
906
|
+
<span class="slide-eyebrow">03 · Why not just Markdown files?</span>
|
|
907
|
+
<h2>Use Markdown. Threadnote makes it operational.</h2>
|
|
874
908
|
<p class="lead">
|
|
875
|
-
|
|
876
|
-
|
|
909
|
+
The source of truth is still plain files on disk. The difference is that agents can recall the right
|
|
910
|
+
pointer, tell durable knowledge from current handoff state, replace stale notes, and share only what you
|
|
911
|
+
explicitly publish.
|
|
877
912
|
</p>
|
|
878
913
|
|
|
879
914
|
<div class="compare">
|
|
880
915
|
<div class="compare-col reveal">
|
|
881
|
-
<h3 class="warm">
|
|
916
|
+
<h3 class="warm">Raw .md files</h3>
|
|
882
917
|
<ul class="flat">
|
|
883
|
-
<li><strong>Where it lives:</strong>
|
|
918
|
+
<li><strong>Where it lives:</strong> repo docs, personal notes, chat snippets, ad hoc handoffs.</li>
|
|
884
919
|
<li>
|
|
885
|
-
<strong>Best for:</strong>
|
|
920
|
+
<strong>Best for:</strong> stable repo policy, reviewed architecture docs, human-written references.
|
|
886
921
|
</li>
|
|
887
|
-
<li><strong>Read pattern:</strong>
|
|
888
|
-
<li
|
|
889
|
-
|
|
922
|
+
<li><strong>Read pattern:</strong> humans decide what to paste or agents grep broad folders.</li>
|
|
923
|
+
<li>
|
|
924
|
+
<strong>Edit cost:</strong> no lifecycle; easy to make another note instead of updating the current
|
|
925
|
+
one.
|
|
926
|
+
</li>
|
|
927
|
+
<li><strong>Failure mode:</strong> stale context quietly looks as authoritative as current context.</li>
|
|
890
928
|
</ul>
|
|
891
929
|
</div>
|
|
892
930
|
|
|
@@ -898,21 +936,25 @@
|
|
|
898
936
|
to a team git repo.
|
|
899
937
|
</li>
|
|
900
938
|
<li>
|
|
901
|
-
<strong>Best for:</strong> feature knowledge, handoffs, branch state, prod-on-call findings,
|
|
902
|
-
workflow facts.
|
|
939
|
+
<strong>Best for:</strong> feature knowledge, handoffs, branch state, prod-on-call findings, skills,
|
|
940
|
+
and personal workflow facts.
|
|
941
|
+
</li>
|
|
942
|
+
<li>
|
|
943
|
+
<strong>Read pattern:</strong> semantic recall returns scoped <code>viking://</code> URIs; only
|
|
944
|
+
relevant content enters the context window.
|
|
903
945
|
</li>
|
|
904
946
|
<li>
|
|
905
|
-
<strong>
|
|
947
|
+
<strong>Edit cost:</strong> agents write and replace one stable <code>project/topic</code>; humans
|
|
948
|
+
guide.
|
|
906
949
|
</li>
|
|
907
|
-
<li><strong>Edit cost:</strong> agents write; humans guide; low friction by design.</li>
|
|
908
950
|
<li><strong>Lifecycle:</strong> durable / handoff / archived. Compact in place, never accrete.</li>
|
|
909
951
|
</ul>
|
|
910
952
|
</div>
|
|
911
953
|
</div>
|
|
912
954
|
|
|
913
955
|
<p class="muted" style="margin-top: 1.5rem">
|
|
914
|
-
<strong style="color: var(--text)">The split:</strong> put repo policy in
|
|
915
|
-
|
|
956
|
+
<strong style="color: var(--text)">The split:</strong> put canonical repo policy in checked-in docs. Put
|
|
957
|
+
living context, in-flight task state, handoffs, and personal workflow facts in Threadnote.
|
|
916
958
|
</p>
|
|
917
959
|
</div>
|
|
918
960
|
</section>
|
|
@@ -1098,7 +1140,7 @@
|
|
|
1098
1140
|
<div class="terminal-bar"><span></span><span></span><span></span></div>
|
|
1099
1141
|
<pre><span class="cmd">$ curl -fsSL https://raw.githubusercontent.com/Kashkovsky/threadnote/main/scripts/install.sh | sh</span>
|
|
1100
1142
|
|
|
1101
|
-
<span class="out">Installed threadnote@1.
|
|
1143
|
+
<span class="out">Installed threadnote@1.3.2</span>
|
|
1102
1144
|
<span class="out">Already exists: ~/.local/bin/threadnote</span>
|
|
1103
1145
|
<span class="out">OpenViking installs into Python; neither uv nor pipx is</span>
|
|
1104
1146
|
<span class="out">on PATH so threadnote would fall back to `pip install</span>
|
|
@@ -1485,6 +1527,19 @@ threadnote remember \
|
|
|
1485
1527
|
</div>
|
|
1486
1528
|
</div>
|
|
1487
1529
|
|
|
1530
|
+
<div class="vignette reveal">
|
|
1531
|
+
<div class="v-say">Isn't this just auto-compaction plus Markdown files?</div>
|
|
1532
|
+
<pre class="v-call">recall_context({query: "<repo> current handoff durable feature memory"})</pre>
|
|
1533
|
+
<pre class="v-response">
|
|
1534
|
+
→ active handoff: status · tests · blockers · next step
|
|
1535
|
+
→ durable memory: design decisions · API contracts · gotchas</pre
|
|
1536
|
+
>
|
|
1537
|
+
<div class="v-answer">
|
|
1538
|
+
Compaction compresses a conversation. Threadnote stores explicit records with lifecycle, stable URIs,
|
|
1539
|
+
scoped recall, replacement, archiving, and optional team publishing.
|
|
1540
|
+
</div>
|
|
1541
|
+
</div>
|
|
1542
|
+
|
|
1488
1543
|
<div class="vignette reveal">
|
|
1489
1544
|
<div class="v-say">Continue where we left off on this branch.</div>
|
|
1490
1545
|
<pre class="v-call">recall_context({query: "<branch> latest handoff durable feature memory"})</pre>
|
package/manager/app.js
CHANGED
|
@@ -7,7 +7,11 @@
|
|
|
7
7
|
var __getProtoOf = Object.getPrototypeOf;
|
|
8
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
9
|
var __commonJS = (cb, mod) => function __require() {
|
|
10
|
-
|
|
10
|
+
try {
|
|
11
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
12
|
+
} catch (e) {
|
|
13
|
+
throw mod = 0, e;
|
|
14
|
+
}
|
|
11
15
|
};
|
|
12
16
|
var __export = (target, all2) => {
|
|
13
17
|
for (var name2 in all2)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "threadnote",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.3",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"main": "dist/threadnote.cjs",
|
|
6
6
|
"description": "Shared local context and handoffs for development agents",
|
|
@@ -73,11 +73,11 @@
|
|
|
73
73
|
"@types/react-dom": "^19.2.3",
|
|
74
74
|
"@vitest/coverage-v8": "^4.1.7",
|
|
75
75
|
"commander": "^15.0.0",
|
|
76
|
-
"esbuild": "^0.
|
|
76
|
+
"esbuild": "^0.28.1",
|
|
77
77
|
"eslint": "^10.3.0",
|
|
78
78
|
"globals": "^17.6.0",
|
|
79
79
|
"husky": "^9.1.7",
|
|
80
|
-
"js-yaml": "^4.
|
|
80
|
+
"js-yaml": "^4.2.0",
|
|
81
81
|
"prettier": "^3.8.3",
|
|
82
82
|
"react": "^19.2.7",
|
|
83
83
|
"react-dom": "^19.2.7",
|