You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
macOS: sourceAvailability: local now works for collections in Google Drive Shared drives (~/Library/CloudStorage/GoogleDrive-…/Shared drives/<drive>, or any folder inside one). Files already on the Mac are indexed; files that are still cloud-only are skipped as CLOUD_PLACEHOLDER and are not downloaded. The Shared drives folder itself is still rejected with SOURCE_AVAILABILITY_UNSUPPORTED; create one collection per Shared drive. OneDrive support was re-tested for the two SharePoint library roots on the test Mac, and the docs now state that count. Thanks to the user who reported that Shared drives were rejected.
Wiki links now resolve across collections that share one Obsidian vault. If you index a vault as several collections (for example one per top-level folder), a plain [[Note]] finds its target in any of them, and vault-root path links such as [[Spaces/AI/Agents/_index]] resolve to the one right file instead of showing up as unresolved or ambiguous. GNO detects the vault from its .obsidian folder; set workspaceRoot on a collection to join a workspace without one (Logseq, Foam, Dendron, plain folders) or workspaceRoot: false to keep a collection's links to itself. Ranking follows Obsidian: exact path first, then a file in the linking note's folder, then the file with the fewest folders above it; files that stay tied are reported by gno audit links and create no graph link. Backlinks, gno links, gno impact, graph neighbours in search, ask and Context Capsules, graph export and gno audit links all use the same resolution. See Link workspaces.
gno impact (and REST /api/impact, MCP gno_impact) accepts collections to limit the traversal.
gno status and gno collection list show each collection's link workspace and whether it was detected or configured.
Changed
Upgrade note: link workspaces are on by default. The first gno update after upgrading rebuilds the link graph (and says so). Resolving a link never widens what you get back: a search, answer, Context Capsule, backlink list or impact run scoped to some collections still returns documents from those collections only, and collection egress policies apply unchanged. Links inside a vault can still resolve differently than before, for example [[Roadmap]] now prefers a file named Roadmap.md over a note whose title is "Roadmap". Set workspaceRoot: false on a collection to keep the previous behavior for it.
gno audit links findings now say what kind of reference failed, whether it is unresolved or ambiguous, and whether it crossed collections; ambiguous vault links list the tied candidates (candidates outside a collection-scoped audit are counted, not named). A document linked only from another collection of its vault is no longer reported as an orphan.
Over Streamable HTTP MCP, graph tools (gno_impact, gno_backlinks, gno_graph*) check egress policy on their collection argument (every collection when none is given, because a link can resolve into another collection) and always on the collection of the document they are asked about. Naming a local_only document while scoping the call to a remote collection is refused. gno_similar with crossCollection: true is checked against every collection.
gno audit --max-findings (and MCP gno_auditmaxFindings) now accepts all or any number up to 100000, so a complete finding list can be exported. The report's truncation block now also says whether the bounded audit snapshot was cut (snapshotTruncated; totals then cover the snapshot, not the whole index) and whether finding evidence was shortened (evidenceTruncated).
Fixed
Security: over Streamable HTTP MCP, a remote call with a blank collection (for example gno_search with collection: "") passed the collection egress check as if it were scoped to no collection, while the tool treated the blank value as "all collections". Remote callers could receive results from local_only collections. A blank collection is now treated as unscoped, so every collection's egress policy applies.
Query expansion no longer gives up after five seconds. On CPU, where expansion takes 15 to 20 seconds, it never completed, so query, ask, and hybrid search always ran without it; the first query after starting gno serve or the MCP server could also lose it while the model loaded. Expansion now loads under models.loadTimeout and generates under models.inferenceTimeout, like every other model call, and a generation that hits that timeout still falls back to searching without expansion.
Piped CLI output is no longer cut short when Ctrl-C arrives while a large result is still being written.
Finding what still needs embedding no longer slows down quadratically as an index grows. Counting and listing the embedding backlog (gno embed, gno vec, background embedding in gno serve, and the MCP embed and index tools) and the gno embed --force chunk count checked each chunk against every active document instead of looking up its own. On a synthetic index of 20,000 documents the backlog count drops from about 10 seconds to 12 milliseconds and the --force count from about 22 seconds to 7 milliseconds. Document lookups by content hash (vector and hybrid search results, gno_similar, memory recall scopes) no longer walk the whole index either. Results are unchanged. The index upgrade runs automatically the next time GNO opens it.
Agent sessions: the MCP tools gno_sessions_status and gno_sessions_import now pick up sources added or removed with gno sessions source add/remove while the server runs, without a restart. This works for gno mcp and for the HTTP MCP endpoint of gno serve and gno daemon. A config file the server cannot read is reported as an error instead of answering from stale sources. Adding or removing a source no longer closes open HTTP MCP sessions unless it changes collection egress policy (for example, a source that adds a new archive collection).