Skip to content

Commit f23d801

Browse files
committed
[gobby-cli-#1012] chore: prepare 2026-07-01 release
1 parent 40ea73c commit f23d801

16 files changed

Lines changed: 295 additions & 60 deletions

CHANGELOG.md

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

1010
## [Unreleased]
1111

12+
## [1.4.0] — gcode — 2026-07-01
13+
14+
### Added
15+
16+
#### gcode
17+
18+
- **Agentic CodeWiki aggregate generation** — aggregate CodeWiki pages can route
19+
through gcore's daemon-side agentic/tool-backed generation path, using
20+
read-only gcode investigation tools and recording lane/tool-call observability
21+
in page frontmatter.
22+
- **CodeWiki purge**`gcode codewiki --purge --out <DIR> --force` removes
23+
generated CodeWiki Markdown and metadata under the selected output directory
24+
without running generation or AI calls.
25+
- **Richer handbook output** — CodeWiki now emits a broader handbook/navigation
26+
layer with generalized taxonomy, semantic clusters, reference tables,
27+
per-category render versions, and bounded dependency diagrams on repo
28+
overviews.
29+
- **Verification scope control**`--ai-verify-scope aggregates|all` keeps the
30+
default verifier pass on aggregate/curated pages while allowing slower
31+
per-file verification when explicitly requested.
32+
33+
### Fixed
34+
35+
#### gcode
36+
37+
- **Strict generated Markdown normalization** — CodeWiki output is normalized
38+
before write/reuse so generated pages remain stable, markdownlint-friendly,
39+
and idempotent across reruns.
40+
- **CodeWiki filtering and recovery**`docs/` and temporary directories are
41+
excluded from core-file generation; Lane B curated generation now investigates
42+
reliably, bounds seed prompts, exposes AI HTTP error bodies, and hard-fails
43+
ungroundable aggregate output instead of silently emitting skeleton prose.
44+
- **AI metadata and timeout hardening** — nested AI frontmatter is preserved,
45+
daemon profile/routing metadata is aligned, non-retryable timeouts are handled
46+
correctly, and text generation timeout is raised for long aggregate pages.
47+
- **Index maintenance fixes** — retry timestamp columns, UTF-8 signature
48+
truncation, and prune discovery-row preservation are corrected.
49+
50+
## [0.7.0] — gobby-core — 2026-07-01
51+
52+
### Added
53+
54+
#### gobby-core
55+
56+
- **Lane A/B generation foundation** — shared tier profiles, direct chat
57+
transport, provider-neutral tool-loop generation, daemon chat transport, and
58+
`tool_chat` capability support now live in `gobby-core` for gcode and gwiki
59+
consumers.
60+
- **Daemon-side agentic chat**`daemon_agentic_chat` posts messages,
61+
project context, reasoning settings, max turns, and a serialized
62+
`ToolPolicy` to the daemon route for agentic narrative generation.
63+
- **Config secret decryption support** — datastore-backed AI/config sources can
64+
resolve `$secret:` values through gcore's envelope secret handling while
65+
env-only sources continue to reject secret references explicitly.
66+
67+
### Fixed
68+
69+
#### gobby-core
70+
71+
- **Tool-loop resilience** — generation parsing and stop-reason handling are
72+
hardened so malformed or incomplete tool-loop output returns typed failures
73+
instead of ambiguous empty content.
74+
75+
## [0.7.0] — ghook — 2026-07-01
76+
77+
### Added
78+
79+
#### ghook
80+
81+
- **Shared daemon URL resolution** — live dispatch, planned-shutdown preflight,
82+
statusline POSTs, and diagnose output now use `gobby_core::daemon_url`, so
83+
`GOBBY_DAEMON_URL`, `GOBBY_PORT`, and bootstrap `daemon_url` overrides are
84+
honored consistently.
85+
- **Machine identity stamping** — hook envelopes now include local
86+
`machine_id` and `os` when available, or a `machine_id_error` code when the
87+
local machine identity file is missing or empty.
88+
1289
### Removed
1390

1491
#### ghook
@@ -19,6 +96,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1996
or POST, so old hook configs fail quiet instead of falling through to the
2097
unknown-CLI Claude fallback.
2198

99+
## [0.7.0] — gwiki — 2026-07-01
100+
101+
### Added
102+
103+
#### gwiki
104+
105+
- **Scoped purge command**`gwiki --project <ROOT> purge --yes` and
106+
`gwiki --topic <NAME> purge --yes` delete generated/indexed wiki state for
107+
the explicit scope across PostgreSQL, Qdrant, and FalkorDB. Global purge is
108+
rejected.
109+
- **Shared generation tiers**`gwiki ask --llm` and `gwiki compile` now route
110+
generation through gcore tier profiles and the shared Lane B tool-loop
111+
utilities.
112+
113+
### Fixed
114+
115+
#### gwiki
116+
117+
- **AI routing metadata** — generation output preserves aligned AI routing and
118+
frontmatter metadata across direct and daemon-backed paths.
119+
120+
### Removed
121+
22122
#### gwiki
23123

24124
- **Raw Gemini transcript fallback**`gwiki --raw` no longer parses Gemini

Cargo.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ This workspace ships three Gobby CLI tools plus a shared library.
2727

2828
| Crate | Binary | Version | Release tag |
2929
|---|---|---:|---|
30-
| `gobby-code` | `gcode` | `1.3.3` | `gcode-v1.3.3` |
31-
| `gobby-core` | n/a | `0.6.1` | `gobby-core-v0.6.1` |
32-
| `gobby-hooks` | `ghook` | `0.6.2` | `ghook-v0.6.2` |
33-
| `gobby-wiki` | `gwiki` | `0.6.5` | `gwiki-v0.6.5` |
30+
| `gobby-code` | `gcode` | `1.4.0` | `gcode-v1.4.0` |
31+
| `gobby-core` | n/a | `0.7.0` | `gobby-core-v0.7.0` |
32+
| `gobby-hooks` | `ghook` | `0.7.0` | `ghook-v0.7.0` |
33+
| `gobby-wiki` | `gwiki` | `0.7.0` | `gwiki-v0.7.0` |
3434

3535
### gcode — Code Search & Navigation
3636

@@ -54,7 +54,10 @@ daemon stale-project graph cleanup without cwd project resolution.
5454
pages) from the index, with optional AI prose tiers (`--ai-depth`), validated
5555
Mermaid architecture diagrams (workspace topology plus runtime/AI-generation
5656
sequence diagrams), and citation-checked grounding against indexed source
57-
spans. gwiki indexes the output as normal vault documents.
57+
spans. Aggregate pages can use the daemon-side agentic/tool-backed generation
58+
route, and `gcode codewiki --purge --out <vault> --force` clears generated
59+
CodeWiki output before a clean rebuild. gwiki indexes the output as normal
60+
vault documents.
5861

5962
For non-Gobby-managed projects, `gcode init` installs the bundled `gcode` skill
6063
for Claude Code, Codex, Droid, Grok, Qwen, and Antigravity CLI. Gobby-managed

crates/gcode/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "gobby-code"
3-
version = "1.3.13"
3+
version = "1.4.0"
44
edition = "2024"
55
rust-version = "1.88"
66
authors = ["Josh Wilhelmi <hello@gobby.ai>"]
@@ -22,7 +22,7 @@ path = "src/main.rs"
2222

2323
[dependencies]
2424
# Internal
25-
gobby-core = { path = "../gcore", version = "0.6.1", features = ["postgres", "falkor", "qdrant", "search", "indexing", "graph-analytics", "ai"] }
25+
gobby-core = { path = "../gcore", version = "0.7.0", features = ["postgres", "falkor", "qdrant", "search", "indexing", "graph-analytics", "ai"] }
2626

2727
# CLI
2828
clap = { version = "4", features = ["derive"] }
@@ -96,7 +96,7 @@ tempfile = "3"
9696
libc = "0.2"
9797

9898
[build-dependencies]
99-
gobby-core = { path = "../gcore", version = "0.6.1" }
99+
gobby-core = { path = "../gcore", version = "0.7.0" }
100100

101101
[dev-dependencies]
102102
insta = { version = "1", features = ["json"] }

crates/gcode/assets/SKILL.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,16 @@ for the UI, but graph sync/read/lifecycle behavior lives in `gcode`.
8181
- `gcode vector cleanup-orphans` — remove Qdrant code-symbol vectors for files missing from PostgreSQL, without resolving embeddings
8282
- `gcode prune` — remove stale project records globally and reconcile graph and vector projections for all remaining indexed projects; use `--project` to scope projection cleanup
8383

84+
## CodeWiki Lifecycle
85+
86+
- `gcode codewiki --out <vault>` — generate vault-ready code documentation under the selected output directory
87+
- `gcode codewiki --scope <PATH...> --out <vault>` — regenerate only docs for indexed files under the scoped paths
88+
- `gcode codewiki --since <git-ref> --out <vault>` — use `git diff --name-only <ref>` to drive incremental regeneration
89+
- `gcode codewiki --repair-citations --out <vault>` — re-anchor existing `[file:line]` citations without generation or AI calls
90+
- `gcode codewiki --purge --out <vault> --force` — remove generated CodeWiki Markdown and metadata, then exit; use before a clean rebuild
91+
92+
Aggregate CodeWiki pages may use daemon-side agentic/tool-backed generation when configured. Purge is output-only: it does not clear PostgreSQL code facts, FalkorDB graph data, or Qdrant vectors.
93+
8494
## When to use which
8595

8696
| Looking for... | Use |

crates/gcore/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-core"
3-
version = "0.6.9"
3+
version = "0.7.0"
44
edition = "2024"
55
rust-version = "1.88"
66
authors = ["Josh Wilhelmi <hello@gobby.ai>"]

crates/ghook/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "gobby-hooks"
3-
version = "0.6.2"
3+
version = "0.7.0"
44
edition = "2024"
55
rust-version = "1.88"
66
authors = ["Josh Wilhelmi <hello@gobby.ai>"]
@@ -22,7 +22,7 @@ base64 = "0.22"
2222
chrono = { version = "0.4", default-features = false, features = ["clock", "std"] }
2323
clap = { version = "4", features = ["derive"] }
2424
dirs = "6"
25-
gobby-core = { path = "../gcore", version = "0.6.1" }
25+
gobby-core = { path = "../gcore", version = "0.7.0" }
2626
libc = "0.2"
2727
log = "0.4"
2828
serde = { version = "1", features = ["derive"] }

crates/gwiki/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "gobby-wiki"
3-
version = "0.6.7"
3+
version = "0.7.0"
44
edition = "2024"
55
rust-version = "1.88"
66
authors = ["Josh Wilhelmi <hello@gobby.ai>"]
@@ -26,7 +26,7 @@ name = "gwiki"
2626
path = "src/main.rs"
2727

2828
[dependencies]
29-
gobby-core = { path = "../gcore", version = "0.6.1", features = ["postgres", "falkor", "qdrant", "indexing", "search", "graph-analytics", "ai"] }
29+
gobby-core = { path = "../gcore", version = "0.7.0", features = ["postgres", "falkor", "qdrant", "indexing", "search", "graph-analytics", "ai"] }
3030
clap = { version = "4", features = ["derive"] }
3131
anyhow = "1"
3232
chrono = { version = "0.4", default-features = false, features = ["clock"] }
@@ -70,5 +70,5 @@ libc = "0.2"
7070
windows-sys = { version = "0.61", features = ["Win32_Foundation", "Win32_Storage_FileSystem"] }
7171

7272
[dev-dependencies]
73-
gobby-core = { path = "../gcore", version = "0.6.1", features = ["postgres", "falkor", "qdrant", "indexing", "search", "graph-analytics", "ai"] }
73+
gobby-core = { path = "../gcore", version = "0.7.0", features = ["postgres", "falkor", "qdrant", "indexing", "search", "graph-analytics", "ai"] }
7474
serial_test = "3"

docs/guides/ai-configuration.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,14 @@ sends a heavier profile for aggregate docs (see the
7575

7676
For direct authenticated endpoints, store the token in user-local
7777
`~/.gobby/gcore.yaml` as `api_key`. Daemon-backed `config_store` values may use
78-
`$secret:` references where the daemon runtime config supports them.
78+
`$secret:` references where the daemon runtime config supports them. CLI-only
79+
env config sources reject `$secret:` placeholders instead of passing unresolved
80+
secret names to providers.
81+
82+
Daemon-side agentic generation uses the same profile routing plus a tool policy
83+
from the caller. `gcode codewiki` uses that path for aggregate handbook pages so
84+
the daemon agent can investigate through read-only gcode tools before writing;
85+
direct routes use the local provider-neutral tool loop when configured.
7986

8087
## Mixed Routing Example
8188

@@ -143,4 +150,4 @@ frames, transcription, and text calls share one limiter. Use `ai.keep_alive`
143150
only with providers that understand it; do not send local-provider-only fields
144151
to cloud OpenAI-compatible endpoints unless that endpoint documents support.
145152

146-
_Last verified: 2026-06-23_
153+
_Last verified: 2026-07-01_

docs/guides/codewiki.md

Lines changed: 47 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ Repair stale `[file:line]` citations in an existing wiki without any AI calls:
4040
gcode codewiki --repair-citations
4141
```
4242

43+
Remove generated CodeWiki Markdown and metadata before a clean rebuild:
44+
45+
```bash
46+
gcode codewiki --purge --out /path/to/vault --force
47+
```
48+
4349
## Output Tree
4450

4551
The generated tree is hierarchical. It has three layers: a **structural layer**
@@ -89,7 +95,9 @@ emitted (so a run with no SystemModel or no deprecations leaves no dead links).
8995
Metadata:
9096

9197
- `_meta/codewiki.json` records the docs written in the last run for
92-
incremental regeneration.
98+
incremental regeneration, including each page's render version. Render
99+
versions are tracked by page category so a format change to architecture
100+
pages does not invalidate unrelated file pages.
93101
- `_meta/ownership.json` records ownership data for repeat runs.
94102
- `_meta/truth_digest.json` is the truth digest — a compact, machine-readable
95103
set of grounded structural facts (see Truth Digest below). Written on full
@@ -125,11 +133,17 @@ The generator then builds docs bottom-up:
125133
catalog, deprecations) are emitted from the SystemModel, the pinned CLI
126134
contract, and the deprecation scan — no LLM calls.
127135

128-
When `ai.text_generate` is configured, gcode calls the shared
129-
`text_generate` route for generated prose. Generated text is citation-checked
130-
before write, and — when a verifier profile is configured — passes a grounded
131-
verification step (see Grounded Verification below). Empty or unavailable
132-
generation falls back to structural AST-only prose.
136+
When `ai.text_generate` is configured, gcode calls the shared generation route
137+
for generated prose. Leaf pages use bounded one-shot generation. Aggregate
138+
handbook pages can use the daemon-side agentic/tool-backed route, where the
139+
model investigates through read-only gcode tools before answering and the page
140+
frontmatter records lane, tool-call count, and turn count. Generated text is
141+
citation-checked before write, normalized through the strict CodeWiki Markdown
142+
normalizer, and — when a verifier profile is configured — passes a grounded
143+
verification step (see Grounded Verification below). Empty or unavailable leaf
144+
generation falls back to structural AST-only prose; failed agentic aggregate
145+
generation is treated as a hard failure so unsupported handbook pages do not
146+
silently degrade into skeleton text.
133147

134148
`--ai-depth` controls how deep AI prose generation reaches; gated tiers use
135149
structural fallbacks:
@@ -141,11 +155,11 @@ structural fallbacks:
141155
indexed symbol and can take hours-to-days on large repos with local models;
142156
reserve it for small repos or scoped runs.
143157

144-
On the daemon route, aggregate docs (architecture, module, and repo prose)
145-
request a heavier daemon profile because they synthesize many child summaries
146-
into one long grounded answer; file and symbol docs stay on the daemon default
147-
profile. The aggregate writer chain defaults to an opus-first profile; override
148-
it with `--ai-aggregate-profile <PROFILE>`.
158+
On the daemon route, aggregate docs (architecture, module, repo, curated
159+
concept, and narrative prose) request a heavier daemon profile because they
160+
synthesize many child summaries into one long grounded answer; file and symbol
161+
docs stay on the daemon default profile. The aggregate writer chain defaults to
162+
an opus-first profile; override it with `--ai-aggregate-profile <PROFILE>`.
149163

150164
### Prose Depth and Audience Register
151165

@@ -253,7 +267,27 @@ If the verifier is routed off, unavailable, or returns a malformed verdict, the
253267
pass is skipped cleanly and the page is emitted undegraded.
254268

255269
`--ai-verify-profile <PROFILE>` (default `feature_mid`) selects the daemon
256-
profile used for this pass.
270+
profile used for this pass. `--ai-verify-scope aggregates|all` controls which
271+
pages run verification: `aggregates` is the default and verifies curated and
272+
handbook pages only; `all` also verifies per-file leaves and is substantially
273+
slower on large repos.
274+
275+
## Purge Flow
276+
277+
`gcode codewiki --purge --out <DIR> --force` is a destructive output cleanup
278+
mode. It removes generated CodeWiki Markdown under `code/` and CodeWiki metadata
279+
under `_meta/`, then exits. It does not touch raw wiki sources, authored
280+
knowledge pages, PostgreSQL index rows, FalkorDB graph data, or Qdrant vectors.
281+
282+
`--purge` conflicts with generation, repair, scope, AI, and graph flags; only
283+
`--out`, `--format`, and `--force` are relevant. Use it when you want to discard
284+
generated files before a full rebuild:
285+
286+
```bash
287+
gcode codewiki --purge --out /path/to/vault --force
288+
gcode codewiki --out /path/to/vault
289+
gwiki --project /path/to/project index
290+
```
257291

258292
## Truth Digest
259293

@@ -333,4 +367,4 @@ Because gcode writes vault-ready Markdown, gwiki only needs to classify and
333367
index the generated subtree. Re-running codewiki rewrites only changed docs, and
334368
the next gwiki index run picks up only those changed Markdown files.
335369

336-
_Last verified: 2026-06-23_
370+
_Last verified: 2026-07-01_

0 commit comments

Comments
 (0)