Skip to content

Commit f22920b

Browse files
joshwilhelmiclaude
andcommitted
[gobby-cli-#461] chore: prep multi-crate release (gwiki 0.2.0, gloc dep fix, docs)
Release prep for gobby-core 0.3.0, gcode 0.9.9, ghook 0.4.5, gsqz 0.4.5, gloc 0.1.3, and the first gwiki release (0.2.0). - gwiki: bump package version 0.1.0 -> 0.2.0 (first public release); Cargo.lock synced. - gloc: pin gobby-core dep to version = "0.3.0" (keep default-features = false) so the crate is releasable to crates.io, which rejects a path dependency with no version; update the gcore public_boundary test to match the corrected declaration. - CHANGELOG: reconcile gcode [0.9.9] and gobby-core [0.3.0] against all commits since 2026-05-31 (codewiki generator, LLM outlines, citation provenance, daemon-first embeddings, shared AI clients/probe, etc.), add gloc dep-fix and ghook review entries, and add the new gwiki [0.2.0] section. - Docs: README now lists five tools incl. gwiki (feature section, version table, install, links); release-guide and guides index include gwiki and document the gloc dep rule. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 511c235 commit f22920b

8 files changed

Lines changed: 195 additions & 36 deletions

File tree

CHANGELOG.md

Lines changed: 135 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,51 +9,164 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
## [Unreleased]
1111

12+
## [0.2.0] — gwiki
13+
14+
### Added
15+
16+
#### gwiki
17+
18+
- **Initial release** — first public release of `gwiki`, the Gobby
19+
research/knowledge-vault CLI. It ingests multimodal sources into a Markdown
20+
vault, then indexes, searches, and compiles them into wiki articles and
21+
reports.
22+
- **Multimodal ingest**`gwiki ingest-file` routes a source by type and
23+
derives Markdown into the vault: text documents, PDFs, URLs, MediaWiki pages,
24+
git repositories, and Wayback captures for text-bearing sources; audio
25+
transcription/translation, image vision description, and video frame +
26+
transcript extraction for media. Per-run AI overrides
27+
(`--transcription-routing`, `--vision-routing`, `--text-routing`, `--no-ai`)
28+
control or bypass media AI for a single ingest.
29+
- **Markdown vault model** — sources land in a Markdown vault with frontmatter,
30+
source provenance, and citation/credibility tracking, so every derived
31+
document records where it came from and how trustworthy the source is.
32+
- **Hybrid search**`gwiki search` and `gwiki ask` merge BM25 (ParadeDB
33+
`pg_search`), semantic (Qdrant), and graph (FalkorDB) signals via Reciprocal
34+
Rank Fusion, the same hybrid stack used by gcode.
35+
- **Reason-act research loop**`gwiki research` runs an iterative reason-act
36+
loop with budget controls (max steps, max tokens, and a wall-time budget),
37+
reporting explicit stop reasons (budget exhausted, no progress, duplicate
38+
frontier, source blocked, AI unavailable, or finished) and emitting accepted
39+
note drafts and recorded gaps.
40+
- **Command set**`init`, `setup`, `collect`, `index`, `compile`, `export`,
41+
`search`, `read`, `ask`, `research`, `refresh`, `audit`, `lint`, `sources`,
42+
`backlinks`, `status`, `health`, and `remove-source` cover vault setup,
43+
ingestion, indexing/refresh, search/read/ask, research and compilation,
44+
export, and vault health/audit/lint.
45+
- **Graceful degradation** — multimodal endpoints (transcription, vision) and
46+
the AI transport degrade independently, falling back to skeleton/derived
47+
output with explicit degradation markers when a capability is routed off or
48+
unavailable; search degrades like gcode (BM25 standalone, with semantic and
49+
graph optional).
50+
1251
## [0.9.9] — gcode
1352

1453
### Added
1554

1655
#### gcode
1756

57+
- **Codewiki generator** — new `gcode codewiki [--out DIR] [--scope PATH...]`
58+
command generates per-module Markdown documentation from the indexed code
59+
graph, optionally limited to indexed files under one or more paths.
60+
- **Graph-clustered codewiki modules** — codewiki groups documented files into
61+
modules derived from the FalkorDB code graph so generated docs follow the
62+
project's real structure instead of flat directory listings.
63+
- **Bounded mermaid graph diagrams** — generated codewiki pages embed mermaid
64+
dependency diagrams that are capped in size so large modules render readable,
65+
truncated graphs instead of unbounded blobs.
66+
- **Codewiki citation provenance** — generated docs carry citations back to the
67+
indexed symbols and files they were derived from, so every section is
68+
traceable to its source.
69+
- **Incremental codewiki regeneration** — re-running `gcode codewiki` only
70+
regenerates docs for modules whose underlying code changed, leaving unchanged
71+
pages in place.
72+
- **LLM-backed outlines**`gcode outline --summarize FILE` produces a
73+
natural-language outline of a file via text generation when AI routing is
74+
configured, alongside the existing structural symbol tree.
1875
- **Embeddings doctor** — new diagnostics surface for the `ai.embeddings.*`
1976
configuration namespace, including API base, model, query prefix, timeout,
2077
and legacy-key migration checks.
2178
- **Isolated worktree overlay indexing** — linked worktrees and isolated roots
2279
now get filesystem-derived code-index identity and overlay-aware visibility
2380
counts instead of inheriting parent project state.
81+
- **Text-content indexing for Markdown** — Markdown files are now indexed as
82+
searchable repo text content (reachable through content search) rather than
83+
being dropped, even though they are not parsed for AST symbols.
84+
- **Hidden repo metadata indexing** — gcode now indexes an allowlisted set of
85+
hidden repository metadata as text content (e.g. `.gobby/plans/**/*.md` and
86+
`.github/workflows/**`), extendable per project via a `hidden_allowlist` in
87+
`.gobby/gcode.json`.
88+
- **Text-only file-type reporting**`gcode index` now reports the file types
89+
it indexed as text-only (with file counts and examples) so it is clear which
90+
inputs were content-indexed rather than parsed for symbols.
2491

2592
### Changed
2693

2794
#### gcode
2895

96+
- **Search ergonomics**`gcode search` now detects literal-looking queries
97+
(quoted strings, call-site syntax, dotted config keys, path separators) and
98+
hints toward `gcode grep`/`gcode search-content`, with refreshed help text and
99+
examples steering exact-literal lookups to the right command.
100+
- **CLI contract surface** — gcode now ships a published CLI contract
101+
describing its command surface for tooling and daemon integration.
102+
- **Codewiki AI routing contract**`gcode codewiki --ai <auto|daemon|direct|off>`
103+
lets you override AI routing for generated summaries per invocation, matching
104+
the shared routing vocabulary.
105+
- **Daemon-first embeddings** — code-symbol embeddings for indexing and semantic
106+
search now route through the Gobby daemon when available and fall back to a
107+
direct embedding API, instead of always calling the embedding endpoint
108+
directly.
109+
- **Shared hub provisioning** — standalone `gcode setup` now provisions the
110+
PostgreSQL hub through shared `gobby-core` provisioning logic that is also used
111+
by `gwiki setup`.
29112
- **Embeddings namespace contract** — embedding configuration now resolves from
30113
`ai.embeddings.*` keys only; legacy `embeddings.*` keys are reported by
31114
diagnostics instead of silently winning configuration resolution.
115+
- **Indexing policy** — Markdown and `.mjs` files are no longer parsed as
116+
source-language symbol inputs; safe repo text remains available through
117+
content search where supported.
32118
- **Large-module decomposition** — CLI dispatch, config resolution, setup,
33119
parser call extraction, import resolution, indexing, graph reads/reports,
34120
FTS, and vector code-symbol lifecycle were split into focused modules with
35121
expanded tests.
36-
- **Indexing policy** — Markdown and `.mjs` files are no longer parsed as
37-
source-language symbol inputs; safe repo text remains available through
38-
content search where supported.
39122

40123
### Fixed
41124

42125
#### gcode
43126

127+
- **Single hub resolution enforced** — gcode now resolves exactly one
128+
PostgreSQL hub for a given run, preventing conflicting hub sources from being
129+
mixed during indexing and search.
130+
- **Serialized freshness indexing** — read-time freshness re-indexing is now
131+
serialized per project so concurrent agent sessions no longer race the index
132+
refresh against each other.
133+
- **Lock-free read-time freshness pre-gate** — project-scoped reads now use a
134+
lock-free, hash-free pre-gate that checks file mtimes against the last index
135+
time and only takes the refresh lock when something actually changed,
136+
eliminating spurious "index refresh already running" messages under
137+
concurrent sessions.
138+
- **Skip generated JS bundles** — indexing now skips generated/minified
139+
JavaScript bundles so search and graph results are not polluted by build
140+
artifacts.
44141
- **Search and graph hardening** — graph payloads, graph read rows, projection
45142
sync reporting, semantic search limits, indexed grep output, and Qdrant
46143
vector lifecycle paths were tightened across review follow-up fixes.
47144
- **Setup preflights** — standalone setup and embedding provisioning now
48145
report namespace and datastore compatibility problems more explicitly before
49146
mutating gcode-owned projection state.
147+
- **Review hardening** — applied review and cleanup findings across the crate.
50148

51149
## [0.3.0] — gobby-core
52150

53151
### Added
54152

55153
#### gobby-core
56154

155+
- **Shared AI context and capability routing**`gobby-core` now owns AI
156+
config types, `AiContext` resolution, and a per-capability routing decision
157+
(daemon / direct / off) so every Gobby CLI resolves AI behavior the same way.
158+
- **Daemon and direct AI clients** — added daemon-backed AI clients plus direct
159+
transcription, vision, and text-generation clients, giving consumers a shared
160+
transport for transcribe/vision/text capabilities behind the `ai` feature.
161+
- **Shared AI capability probe** — a shared probe reports which AI capabilities
162+
are reachable (via daemon or direct) so consumers can degrade predictably when
163+
a capability is routed off or unavailable.
164+
- **Shared local-backend discovery** — local-LLM backend descriptors and
165+
discovery now live in `gobby-core::local_backend`, shared across the CLIs
166+
instead of being reimplemented per binary.
167+
- **Shared hub provisioning** — added provisioning helpers that let `gcode
168+
setup` and `gwiki setup` provision the PostgreSQL hub through one shared code
169+
path.
57170
- **Embedding config contract** — shared `ai.embeddings.*` key constants,
58171
namespace-aware resolution, `query_prefix`, and `timeout_seconds` now live in
59172
`gobby-core` for consumers that need consistent embedding service behavior.
@@ -64,6 +177,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
64177

65178
#### gobby-core
66179

180+
- **Daemon-first embedding routing** — embedding requests now prefer the Gobby
181+
daemon when available and fall back to a direct embedding API, with shared
182+
routing applied consistently across consumers.
183+
- **Explicit AI routing modes** — AI routing now requires an explicit mode
184+
(auto / daemon / direct / off) rather than relying on implicit defaults, so
185+
capability behavior is unambiguous across CLIs.
67186
- **Legacy embedding keys retired**`resolve_embedding_config` no longer
68187
honors `embeddings.*` keys; callers get the new namespace or no embedding
69188
config.
@@ -76,6 +195,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
76195

77196
- **Datastore adapter hardening** — PostgreSQL, FalkorDB, and Qdrant helpers
78197
gained stricter diagnostics and degradation behavior for release consumers.
198+
- **Review hardening** — applied review and cleanup findings across the crate.
79199

80200
## [0.4.5] — gobby-hooks
81201

@@ -93,6 +213,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
93213
logged at debug level during planned Stop handling instead of disappearing.
94214
- **Test isolation** — tmux environment tests now use scoped environment
95215
mutation through `temp-env`.
216+
- **Review hardening** — applied review and cleanup findings across the crate.
96217

97218
## [0.4.5] — gobby-squeeze
98219

@@ -110,10 +231,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
110231

111232
#### gobby-local
112233

234+
- **Shared local-backend discovery** — backend descriptors and discovery now
235+
come from `gobby-core::local_backend` instead of a gloc-local copy, keeping
236+
backend detection consistent across the Gobby CLIs.
113237
- **YAML dependency refresh** — the manifest now uses the maintained
114238
`yaml_serde 0.10.4` package while keeping the public `serde_yaml` dependency
115239
name and config-file format unchanged.
116240

241+
### Fixed
242+
243+
#### gobby-local
244+
245+
- **Publishable to crates.io** — the `gobby-core` dependency now carries an
246+
explicit `version = "0.3.0"` alongside its workspace path, so `cargo publish`
247+
no longer fails on a path dependency that has no version requirement.
248+
117249
## [0.9.8] — gcode
118250

119251
### Changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<p align="center">
99
<strong>Rust CLI tools for AI-assisted development.</strong><br>
10-
Code search, symbol navigation, output compression, and local LLM launching — all from the terminal.
10+
Code search, symbol navigation, output compression, local LLM launching, and multimodal research vaults — all from the terminal.
1111
</p>
1212

1313
<p align="center">
@@ -21,9 +21,7 @@
2121

2222
## What's Inside
2323

24-
This workspace ships four Gobby CLI tools plus a shared library. `gobby-wiki`
25-
is in the workspace, but it is still unreleased and is not part of the current
26-
release set.
24+
This workspace ships five Gobby CLI tools plus a shared library.
2725

2826
### Current Release Set
2927

@@ -34,9 +32,7 @@ release set.
3432
| `gobby-hooks` | `ghook` | `0.4.5` | `ghook-v0.4.5` |
3533
| `gobby-squeeze` | `gsqz` | `0.4.5` | `gsqz-v0.4.5` |
3634
| `gobby-local` | `gloc` | `0.1.3` | `gloc-v0.1.3` |
37-
38-
`gobby-wiki` / `gwiki` stays at `0.1.0` in-tree and is excluded from this
39-
release.
35+
| `gobby-wiki` | `gwiki` | `0.2.0` | `gwiki-v0.2.0` |
4036

4137
### gcode — Code Search & Navigation
4238

@@ -69,6 +65,17 @@ One command to launch Claude Code or Codex against a local LLM backend. Auto-det
6965

7066
Sandbox-tolerant hook dispatcher invoked by host AI CLIs (Claude Code, Codex, Gemini CLI, Qwen CLI) on lifecycle and tool-use events. Spools envelopes to `~/.gobby/hooks/inbox/` *before* POSTing to the local Gobby daemon, so the daemon's drain worker can replay any delivery lost to a sandbox FS-read denial, network blip, or daemon restart. You don't usually invoke it directly — Gobby wires it into your AI CLI for you.
7167

68+
### gwiki — Research Knowledge Vault
69+
70+
Ingests multimodal sources — documents, PDFs, URLs, MediaWiki, git repos,
71+
Wayback snapshots, and audio/image/video — into a Markdown knowledge vault with
72+
frontmatter provenance and citations, then indexes and searches them with the
73+
same hybrid BM25 + semantic + graph stack as `gcode`. Compiles vault material
74+
into cited briefs, runs a reason-act `research` loop with step/token/source
75+
budgets, and answers questions directly with `gwiki ask`. Multimodal and AI
76+
capabilities degrade gracefully when transcription, vision, or the configured
77+
datastores are unavailable.
78+
7279
`gobby-core` underpins them all — a small shared-primitives library for project
7380
root walk-up, bootstrap config, daemon URL composition, setup/provisioning
7481
contracts, and optional datastore adapters. It is not a standalone tool.
@@ -79,10 +86,12 @@ contracts, and optional datastore adapters. It is not a standalone tool.
7986
- [gsqz User Guide](docs/guides/gsqz-user-guide.md) — pipelines, step types, configuration, debugging
8087
- [gloc User Guide](docs/guides/gloc-user-guide.md) — backends, clients, model management, configuration
8188
- [ghook User Guide](docs/guides/ghook-user-guide.md) — hook wiring, diagnose mode, inbox/replay, troubleshooting
89+
- [gwiki Development Guide](docs/guides/gwiki-development-guide.md) — research vault ingest, indexing, and hybrid search
8290
- [Release Guide](docs/guides/release-guide.md) — crate versions, tag order, and local binary installation
8391
- [Changelog](CHANGELOG.md) — release history
8492
- [gcode README](crates/gcode/README.md) — architecture and build details
8593
- [gsqz README](crates/gsqz/README.md) — architecture and build details
94+
- [gwiki README](crates/gwiki/README.md) — architecture and build details
8695

8796
## Install
8897

@@ -104,6 +113,9 @@ cargo install gobby-local
104113

105114
# ghook
106115
cargo install gobby-hooks
116+
117+
# gwiki
118+
cargo install gobby-wiki
107119
```
108120

109121
`gcode` graph and semantic features are configured at runtime. There are no
@@ -142,6 +154,7 @@ cargo install --path crates/gcode
142154
cargo install --path crates/gsqz
143155
cargo install --path crates/gloc
144156
cargo install --path crates/ghook
157+
cargo install --path crates/gwiki
145158
```
146159

147160
## Development

crates/gcore/tests/public_boundary.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,12 @@ fn cargo_features_define_public_boundary() {
5252
);
5353
}
5454

55-
let gloc_gcore_dependency = r#"gobby-core = { path = "../gcore", default-features = false }"#;
55+
let gloc_gcore_dependency =
56+
r#"gobby-core = { path = "../gcore", version = "0.3.0", default-features = false }"#;
5657
assert!(
5758
gloc_manifest.contains(gloc_gcore_dependency),
58-
"gloc must not enable the heavier gobby-core/ai feature"
59+
"gloc must keep default-features = false (no heavier gobby-core/ai feature); \
60+
the explicit version is required for crates.io publishing"
5961
);
6062
}
6163

crates/gloc/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ serde = { version = "1", features = ["derive"] }
2222
serde_json = "1"
2323
serde_yaml = { package = "yaml_serde", version = "0.10.4" }
2424
ureq = { version = "2", features = ["json"] }
25-
gobby-core = { path = "../gcore", default-features = false }
25+
gobby-core = { path = "../gcore", version = "0.3.0", default-features = false }

crates/gwiki/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "gobby-wiki"
3-
version = "0.1.0"
3+
version = "0.2.0"
44
edition = "2024"
55
rust-version = "1.88"
66
authors = ["Josh Wilhelmi <hello@gobby.ai>"]

docs/guides/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ Task-focused documentation for the released gobby-cli crates.
2222
- [gsqz Development Guide](./gsqz-development-guide.md) - compressor implementation details.
2323
- [gloc Development Guide](./gloc-development-guide.md) - local-launcher implementation details.
2424
- [ghook Development Guide](./ghook-development-guide.md) - hook-dispatch implementation details.
25-
- [gwiki Development Guide](./gwiki-development-guide.md) - unreleased wiki CLI internals.
25+
- [gwiki Development Guide](./gwiki-development-guide.md) - research/knowledge-vault CLI internals.
2626

27-
`gobby-wiki` is documented for development only. It is not part of the current
28-
published release set.
27+
A `gwiki` user guide is forthcoming. Until then, see the gwiki development guide
28+
above and the [gwiki README](../../crates/gwiki/README.md).
2929

30-
_Last verified: 2026-06-01_
30+
_Last verified: 2026-06-03_

0 commit comments

Comments
 (0)