Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
627a02b
Make Threadnote self-contained for 4.0 beta
Kashkovsky Jul 27, 2026
f491305
Allow recall evaluation gates on slower runners
Kashkovsky Jul 27, 2026
77509cd
Fix Threadnote 4 beta upgrade recovery
Kashkovsky Jul 27, 2026
c52a814
Harden Threadnote 4 beta recovery
Kashkovsky Jul 27, 2026
30d9273
Prevent recall from blocking on share locks
Kashkovsky Jul 27, 2026
9050f4e
Finalize Threadnote 4 self-contained recall
Kashkovsky Jul 27, 2026
d5c04c8
Harden Threadnote 4 install and index maintenance
Kashkovsky Jul 28, 2026
c1083cd
Release Threadnote 4.0.0-beta.5
Kashkovsky Jul 28, 2026
dd6750e
Release Threadnote 4.0.0-beta.6
Kashkovsky Jul 28, 2026
cdacb87
Release Threadnote 4.0.0-beta.7
Kashkovsky Jul 28, 2026
987cbee
Document Threadnote 4 architecture
Kashkovsky Jul 28, 2026
b309265
Add zero-plugin Obsidian bridge
Kashkovsky Jul 27, 2026
bee6ed3
Publish selected memories to Obsidian
Kashkovsky Jul 27, 2026
878f244
Auto-sync Obsidian sources before recall
Kashkovsky Jul 27, 2026
6f28868
Adapt Obsidian integration to latest 4.0 contracts
Kashkovsky Jul 28, 2026
31548e9
Document Obsidian integration
Kashkovsky Jul 28, 2026
275c016
Fix self-contained CI portability
Kashkovsky Jul 28, 2026
e0d52e2
Use stdin for large smoke inputs
Kashkovsky Jul 28, 2026
95dd59b
Harden Windows self-contained smoke
Kashkovsky Jul 28, 2026
6df6e2d
Test installed MCP through Node entrypoint
Kashkovsky Jul 28, 2026
f615d5d
Allow slow packaged installs in smoke tests
Kashkovsky Jul 28, 2026
af80ca8
Restore README product positioning
Kashkovsky Jul 28, 2026
9b80e9d
Release Threadnote 4.0.0-beta.8
Kashkovsky Jul 28, 2026
6c83e3c
Migrate Threadnote to standalone Bun runtime
Kashkovsky Jul 28, 2026
4da674a
Harden generated runtime code
Kashkovsky Jul 28, 2026
dd84c31
fix: make bun ci portable
Kashkovsky Jul 28, 2026
e5719c9
fix: enumerate releases in windows installer
Kashkovsky Jul 28, 2026
240e15f
fix: bound native inference to cpu math cores
Kashkovsky Jul 28, 2026
69c7902
fix: deduplicate CI and enumerate Windows releases
Kashkovsky Jul 28, 2026
b84f2ce
fix: restore native scheduling and Manager bundle
Kashkovsky Jul 28, 2026
862f7c8
fix: hash Windows releases without PowerShell modules
Kashkovsky Jul 28, 2026
de26940
fix: make release E2E deterministic on Windows
Kashkovsky Jul 28, 2026
49d497c
test: keep release recall fixture bounded
Kashkovsky Jul 28, 2026
7779d58
fix: download Windows releases as binary
Kashkovsky Jul 28, 2026
136848f
fix: launch Windows MCP adapter without duplicate quotes
Kashkovsky Jul 28, 2026
b655abd
ci: add Apple signing test dispatch
Kashkovsky Jul 28, 2026
5c65489
test: drop release workflow assertion
Kashkovsky Jul 28, 2026
7bd0dab
ci: discover imported Apple signing identity
Kashkovsky Jul 28, 2026
54470dc
fix: verify standalone macOS signatures correctly
Kashkovsky Jul 28, 2026
940aea2
release: prepare 4.0.0-beta.9
Kashkovsky Jul 29, 2026
3de8d1c
Preserve curated release notes
Kashkovsky Jul 29, 2026
596629e
release: prepare 4.0.0-beta.10
Kashkovsky Jul 29, 2026
5f5a1f1
Add privacy-safe production diagnostics
Kashkovsky Jul 29, 2026
775ea6d
release: prepare 4.0.0-beta.11
Kashkovsky Jul 29, 2026
a7a8b38
Fix production log history on Windows
Kashkovsky Jul 29, 2026
f418e5b
Ignore transient share Git state during migration
Kashkovsky Jul 29, 2026
f1fe7eb
release: prepare 4.0.0-beta.12
Kashkovsky Jul 29, 2026
b4a4088
Preserve current share index during recovery
Kashkovsky Jul 29, 2026
da338f0
release: prepare 4.0.0-beta.13
Kashkovsky Jul 29, 2026
573f932
Fix managed share recovery atomically
Kashkovsky Jul 29, 2026
20f61f0
release: prepare 4.0.0-beta.14
Kashkovsky Jul 29, 2026
dac6784
Recover partial managed share checkouts safely
Kashkovsky Jul 29, 2026
380c0b7
release: prepare 4.0.0-beta.15
Kashkovsky Jul 29, 2026
b638fa2
Fix Windows process identity lookup
Kashkovsky Jul 29, 2026
93c752f
Avoid WMI for Windows hardware metadata
Kashkovsky Jul 29, 2026
1c0ebf7
Use native Windows system metadata
Kashkovsky Jul 29, 2026
f360d2e
feat: add self-contained code graph search
Kashkovsky Jul 29, 2026
704be98
release: prepare 4.0.0-beta.16
Kashkovsky Jul 29, 2026
972c208
fix: silence native model runtime logs
Kashkovsky Jul 29, 2026
690de08
release: prepare 4.0.0-beta.17
Kashkovsky Jul 29, 2026
5687e54
test: preserve CLI output stream boundaries
Kashkovsky Jul 29, 2026
d290bb3
release: prepare 4.0.0-beta.18
Kashkovsky Jul 29, 2026
49545a6
fix: retain completed semantic graph matches
Kashkovsky Jul 30, 2026
0bed901
release: prepare 4.0.0-beta.19
Kashkovsky Jul 30, 2026
3663820
fix: scale native code graph indexing
Kashkovsky Jul 30, 2026
2d161e8
release: prepare 4.0.0-beta.20
Kashkovsky Jul 30, 2026
667e580
test: isolate graph impact release checks
Kashkovsky Jul 30, 2026
0fff4b8
release: prepare 4.0.0-beta.21
Kashkovsky Jul 30, 2026
c675992
fix: remove native code graph scale caps
Kashkovsky Jul 30, 2026
d168643
feat: add interactive manager code graph
Kashkovsky Jul 30, 2026
f4281ff
docs: make code graph search the default
Kashkovsky Jul 30, 2026
f7ad344
ci: rerun CodeQL without Python
Kashkovsky Jul 30, 2026
f723ccf
release: prepare 4.0.0-beta.22
Kashkovsky Jul 30, 2026
e4b1230
release: prepare 4.0.0-beta.23
Kashkovsky Jul 30, 2026
4524533
feat(code-graph): add extensible polyglot language packs
Kashkovsky Jul 30, 2026
f1d47e4
fix(code-graph): stream maintenance progress
Kashkovsky Jul 30, 2026
de5354d
style(code-graph): apply prettier
Kashkovsky Jul 30, 2026
3f98eb6
release: prepare 4.0.0-beta.24
Kashkovsky Jul 30, 2026
33898e2
fix(code-graph): bound post-index MCP queries
Kashkovsky Jul 30, 2026
bc05333
fix(code-graph): separate semantic query budget
Kashkovsky Jul 30, 2026
9aeafea
perf: harden 4.0 runtime at scale
Kashkovsky Jul 30, 2026
c65ce74
fix(windows): sync durable files with writable handles
Kashkovsky Jul 30, 2026
7d6e421
test(e2e): expose packaged command failures
Kashkovsky Jul 30, 2026
22dfed1
fix(windows): recover empty installer locks safely
Kashkovsky Jul 30, 2026
bda2a4d
fix(ai): isolate native inference crashes
Kashkovsky Jul 30, 2026
90532f4
Add property-based reliability tests
Kashkovsky Jul 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

version: 2
updates:
- package-ecosystem: npm
- package-ecosystem: bun
directory: /
schedule:
interval: weekly
Expand Down
24 changes: 24 additions & 0 deletions .github/release-notes/v4.0.0-beta.10.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
## What's new

Threadnote 4 beta.10 makes migration from Threadnote 3 reliable when the new home already contains generated state or
a local shared-memory repository has unpublished work.

- Migrate without false conflicts between the legacy and current update-check caches.
- Preserve unpublished local share commits, branch refs, Git objects, configuration, and worktree content.
- Ignore only transient `FETCH_HEAD` bookkeeping that can change while Git checks a shared-memory remote.
- Keep the complete legacy `~/.openviking` home unchanged as the rollback source.

If migration stopped on `update-check.json` or a share `FETCH_HEAD` with beta.9:

```bash
threadnote update --beta
threadnote migrate --apply
threadnote doctor
```

Fresh beta installation:

```bash
curl -fsSL https://raw.githubusercontent.com/Kashkovsky/threadnote/v4.0.0-beta.10/scripts/install.sh |
sh -s -- --beta
```
26 changes: 26 additions & 0 deletions .github/release-notes/v4.0.0-beta.11.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
## What's new

Threadnote 4 beta.11 lets recovery finish when an earlier beta has already updated a canonical memory or resource after
it was copied from the preserved Threadnote 3 home.

- Keep the current `~/.threadnote/data/` copy when it differs from the older `~/.openviking` rollback copy.
- Continue recovering disjoint legacy memories and resources, and record how many current entries were preserved.
- Still stop safely on different non-canonical settings or metadata instead of overwriting them.
- Keep the complete legacy `~/.openviking` home unchanged as the rollback source.
- Add privacy-safe local production diagnostics that retain complete history on Windows, plus an approval-gated GitHub
issue preview workflow.

If beta.10 stopped on `Recovery would overwrite different existing content`:

```bash
threadnote update --beta
threadnote migrate --apply
threadnote doctor
```

Fresh beta installation:

```bash
curl -fsSL https://raw.githubusercontent.com/Kashkovsky/threadnote/v4.0.0-beta.11/scripts/install.sh |
sh -s -- --beta
```
25 changes: 25 additions & 0 deletions .github/release-notes/v4.0.0-beta.12.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
## What's new

Threadnote 4 beta.12 lets interrupted home recovery finish when a local shared-memory repository changed transient Git
bookkeeping between migration attempts.

- Ignore legacy `COMMIT_EDITMSG`, `FETCH_HEAD`, `gc.log`, and Git-generated lockfiles inside managed share gitdirs.
- Preserve the current beta copy when its transient commit message differs from the legacy rollback source.
- Continue copying and verifying unpublished branch refs, commit objects, `ORIG_HEAD`, configuration, the index,
reflogs, and worktree content.
- Keep the complete legacy `~/.openviking` home unchanged as the rollback source.

If beta.11 stopped on a managed share gitdir conflict:

```bash
threadnote update --beta
threadnote migrate --apply
threadnote doctor
```

Fresh beta installation:

```bash
curl -fsSL https://raw.githubusercontent.com/Kashkovsky/threadnote/v4.0.0-beta.12/scripts/install.sh |
sh -s -- --beta
```
24 changes: 24 additions & 0 deletions .github/release-notes/v4.0.0-beta.13.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
## What's new

Threadnote 4 beta.13 completes interrupted local-share recovery when the active beta repository has refreshed or
changed its Git index since the legacy home was copied.

- Keep the current `~/.threadnote` managed-share index, including its staging state.
- Leave the legacy index unchanged under `~/.openviking` as rollback evidence.
- Continue recovering disjoint legacy memories and unpublished Git objects.
- Still fail closed on different refs, configuration, reflogs, operation state, or other durable Git content.

If beta.12 stopped on `share/teams/<team>.gitdir/index`:

```bash
threadnote update --beta
threadnote migrate --apply
threadnote doctor
```

Fresh beta installation:

```bash
curl -fsSL https://raw.githubusercontent.com/Kashkovsky/threadnote/v4.0.0-beta.13/scripts/install.sh |
sh -s -- --beta
```
25 changes: 25 additions & 0 deletions .github/release-notes/v4.0.0-beta.14.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
## What's new

Threadnote 4 beta.14 makes interrupted home recovery safe for the complete state of an active local shared-memory
repository, rather than handling individual Git files one at a time.

- Keep the current `~/.threadnote` share checkout as one unit, including staged changes, unpublished objects, refs,
reflogs, configuration, and in-progress Git operations.
- Never combine current and legacy repository internals into a potentially invalid hybrid checkout.
- Leave the complete legacy repository unchanged under `~/.openviking` as rollback evidence.
- Stop before copying when the current checkout is incomplete, unsafe, or points at a different Git directory.

If an earlier beta stopped on a path under `share/teams/<team>.gitdir/`:

```bash
threadnote update --beta
threadnote migrate --apply
threadnote doctor
```

Fresh beta installation:

```bash
curl -fsSL https://raw.githubusercontent.com/Kashkovsky/threadnote/v4.0.0-beta.14/scripts/install.sh |
sh -s -- --beta
```
27 changes: 27 additions & 0 deletions .github/release-notes/v4.0.0-beta.15.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
## What's new

Threadnote 4 beta.15 resumes shared-memory migrations that an earlier beta interrupted after copying only part of a
Git checkout.

- Complete a partial checkout only when every durable file is proven to come from the unchanged legacy repository.
- Preserve staged changes, unpublished objects, refs, reflogs, and unknown Git state by stopping when either copy has
genuinely diverged.
- Ignore and clean transient Git operation files and locks without weakening checks for durable repository data.
- Serialize migration with agent share activity, stage missing files outside the repository, verify them, and install
them atomically.
- Keep `~/.openviking` unchanged as the rollback source throughout recovery.

For the developer whose beta.14 migration reported an incomplete or unsafe managed share checkout:

```bash
threadnote update --beta
threadnote migrate --apply
threadnote doctor
```

Fresh beta installation:

```bash
curl -fsSL https://raw.githubusercontent.com/Kashkovsky/threadnote/v4.0.0-beta.15/scripts/install.sh |
sh -s -- --beta
```
37 changes: 37 additions & 0 deletions .github/release-notes/v4.0.0-beta.16.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
## What's new

Threadnote 4 beta.16 adds a self-contained, worktree-aware code graph for precise source navigation without Graphify,
Python, a daemon, or a copied graph directory.

- Search current source through the dedicated `inspect_code_graph` MCP tool instead of mixing code evidence into memory
recall.
- Use `threadnote graph query`, `explain`, `path`, and `impact` for symbols, relationships, dependency paths, and
change-impact analysis.
- Keep graph snapshots current during MCP sessions with one deduplicated watcher per inspected worktree; one-shot CLI
commands synchronously refresh stale indexes.
- Store derived graph data under `~/.threadnote/indexes/code-graph` in SQLite, with optional semantic associations
produced by Threadnote's installed local embedding model.
- Isolate dirty overlays between linked worktrees, share immutable committed facts safely, and materialize the exact
requested Git base for deleted-code impact analysis.
- Add bounded indexing, traversal, export, repair, and purge operations with stored quality and performance baselines.

To build and inspect the graph explicitly:

```bash
threadnote graph index
threadnote graph query --query "where is recall freshness decided"
threadnote graph impact --base origin/main
```

Existing beta installations can update in place:

```bash
threadnote update --beta
```

Fresh beta installation:

```bash
curl -fsSL https://raw.githubusercontent.com/Kashkovsky/threadnote/v4.0.0-beta.16/scripts/install.sh |
sh -s -- --beta
```
39 changes: 39 additions & 0 deletions .github/release-notes/v4.0.0-beta.17.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
## What's new

Threadnote 4 beta.17 adds a self-contained, worktree-aware code graph for precise source navigation without Graphify,
Python, a daemon, or a copied graph directory.

- Search current source through the dedicated `inspect_code_graph` MCP tool instead of mixing code evidence into memory
recall.
- Use `threadnote graph query`, `explain`, `path`, and `impact` for symbols, relationships, dependency paths, and
change-impact analysis.
- Keep graph snapshots current during MCP sessions with one deduplicated watcher per inspected worktree; one-shot CLI
commands synchronously refresh stale indexes.
- Store derived graph data under `~/.threadnote/indexes/code-graph` in SQLite, with optional semantic associations
produced by Threadnote's installed local embedding model.
- Isolate dirty overlays between linked worktrees, share immutable committed facts safely, and materialize the exact
requested Git base for deleted-code impact analysis.
- Add bounded indexing, traversal, export, repair, and purge operations with stored quality and performance baselines.
- Keep machine-readable command output clean when llama.cpp reports model compatibility notices during semantic graph
search.

To build and inspect the graph explicitly:

```bash
threadnote graph index
threadnote graph query --query "where is recall freshness decided"
threadnote graph impact --base origin/main
```

Existing beta installations can update in place:

```bash
threadnote update --beta
```

Fresh beta installation:

```bash
curl -fsSL https://raw.githubusercontent.com/Kashkovsky/threadnote/v4.0.0-beta.17/scripts/install.sh |
sh -s -- --beta
```
41 changes: 41 additions & 0 deletions .github/release-notes/v4.0.0-beta.18.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
## What's new

Threadnote 4 beta.18 adds a self-contained, worktree-aware code graph for precise source navigation without Graphify,
Python, a daemon, or a copied graph directory.

- Search current source through the dedicated `inspect_code_graph` MCP tool instead of mixing code evidence into memory
recall.
- Use `threadnote graph query`, `explain`, `path`, and `impact` for symbols, relationships, dependency paths, and
change-impact analysis.
- Keep graph snapshots current during MCP sessions with one deduplicated watcher per inspected worktree; one-shot CLI
commands synchronously refresh stale indexes.
- Store derived graph data under `~/.threadnote/indexes/code-graph` in SQLite, with optional semantic associations
produced by Threadnote's installed local embedding model.
- Isolate dirty overlays between linked worktrees, share immutable committed facts safely, and materialize the exact
requested Git base for deleted-code impact analysis.
- Add bounded indexing, traversal, export, repair, and purge operations with stored quality and performance baselines.
- Keep machine-readable command output clean when llama.cpp reports model compatibility notices during semantic graph
search.
- Verify packaged JSON commands using their real stdout contract on every release platform without conflating stderr
diagnostics with the machine-readable payload.

To build and inspect the graph explicitly:

```bash
threadnote graph index
threadnote graph query --query "where is recall freshness decided"
threadnote graph impact --base origin/main
```

Existing beta installations can update in place:

```bash
threadnote update --beta
```

Fresh beta installation:

```bash
curl -fsSL https://raw.githubusercontent.com/Kashkovsky/threadnote/v4.0.0-beta.18/scripts/install.sh |
sh -s -- --beta
```
43 changes: 43 additions & 0 deletions .github/release-notes/v4.0.0-beta.19.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
## What's new

Threadnote 4 beta.19 adds a self-contained, worktree-aware code graph for precise source navigation without Graphify,
Python, a daemon, or a copied graph directory.

- Search current source through the dedicated `inspect_code_graph` MCP tool instead of mixing code evidence into memory
recall.
- Use `threadnote graph query`, `explain`, `path`, and `impact` for symbols, relationships, dependency paths, and
change-impact analysis.
- Keep graph snapshots current during MCP sessions with one deduplicated watcher per inspected worktree; one-shot CLI
commands synchronously refresh stale indexes.
- Store derived graph data under `~/.threadnote/indexes/code-graph` in SQLite, with optional semantic associations
produced by Threadnote's installed local embedding model.
- Isolate dirty overlays between linked worktrees, share immutable committed facts safely, and materialize the exact
requested Git base for deleted-code impact analysis.
- Add bounded indexing, traversal, export, repair, and purge operations with stored quality and performance baselines.
- Keep machine-readable command output clean when llama.cpp reports model compatibility notices during semantic graph
search.
- Preserve completed semantic matches when inference crosses the graph traversal time budget, return them as partial
evidence, and skip only subsequent expansion work.
- Verify packaged JSON commands using their real stdout contract on every release platform without conflating stderr
diagnostics with the machine-readable payload.

To build and inspect the graph explicitly:

```bash
threadnote graph index
threadnote graph query --query "where is recall freshness decided"
threadnote graph impact --base origin/main
```

Existing beta installations can update in place:

```bash
threadnote update --beta
```

Fresh beta installation:

```bash
curl -fsSL https://raw.githubusercontent.com/Kashkovsky/threadnote/v4.0.0-beta.19/scripts/install.sh |
sh -s -- --beta
```
39 changes: 39 additions & 0 deletions .github/release-notes/v4.0.0-beta.20.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
## What's new

Threadnote 4 beta.20 removes the aggregate source-byte ceiling from the native code graph so large monorepos can be
indexed without recreating Graphify's monolithic-graph limit.

- Parse uncached source into the SQLite-backed fact cache in bounded, resumable batches, releasing ordinary source text
after every batch instead of retaining the repository in memory.
- Replace raw package and TypeScript configuration retention with compact, bounded resolution metadata while preserving
package attribution, path aliases, workspace dependencies, and cross-package calls.
- Treat a Git checkout as one integrated graph scope: nested apps and packages use their deepest local package and
TypeScript configuration while still resolving into the surrounding monorepo workspace.
- Enforce file and graph-cardinality limits before expensive dirty-overlay work, count cached facts before
materialization, and clean abandoned parser-cache rows after failed builds and repair.
- Preserve the last ready snapshot when a later batch fails, prune exact stale cache revisions, and make forced rebuilds
replace corrupted cached parser facts from source.
- Expose CLI parity through the MCP `inspect_code_graph` tool: `query`, `explain`, `path`, and `impact` are all available,
and impact can derive its seeds from a Git `base` when no explicit query is supplied.
- Expand release tests with a real Git inventory above the former 128 MiB limit, 129-file committed and dirty batch
boundaries, nested monorepo resolution, cache cleanup, full rebuild, MCP Git-base impact, and packaged-binary checks.

To inspect a large workspace:

```bash
threadnote graph query --query "BaseHydrationManager"
threadnote graph impact --base origin/main
```

Existing beta installations can update in place:

```bash
threadnote update --beta
```

Fresh beta installation:

```bash
curl -fsSL https://raw.githubusercontent.com/Kashkovsky/threadnote/v4.0.0-beta.20/scripts/install.sh |
sh -s -- --beta
```
Loading
Loading