Skip to content

Commit e5b4e84

Browse files
committed
Merge dev for gcode 0.8.6 release
2 parents 039c262 + cfeaa2e commit e5b4e84

60 files changed

Lines changed: 7256 additions & 833 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.coderabbit.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
2+
inheritance: true
3+
4+
reviews:
5+
profile: assertive

.github/workflows/release-gcode.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,37 @@ jobs:
2020
with:
2121
components: clippy
2222

23+
- name: Verify tag matches Cargo.toml version
24+
# Guards against tag/crate/release drift: installers resolve a version
25+
# from crates.io and then look for a matching gcode-v{version} GitHub
26+
# asset, so the tag, crate version, and release name must align.
27+
run: |
28+
set -euo pipefail
29+
tag="${GITHUB_REF#refs/tags/}"
30+
tag_version="${tag#gcode-v}"
31+
if [ "$tag" = "$tag_version" ]; then
32+
echo "::error::Tag '$tag' does not start with 'gcode-v'." >&2
33+
exit 1
34+
fi
35+
cargo_version="$(cargo pkgid -p gobby-code | sed 's/.*@//')"
36+
if [ "$tag_version" != "$cargo_version" ]; then
37+
echo "::error::Tag version '$tag_version' does not match crates/gcode/Cargo.toml version '$cargo_version'." >&2
38+
exit 1
39+
fi
40+
echo "Tag '$tag' aligns with crates/gcode/Cargo.toml version '$cargo_version'."
41+
2342
- name: Clippy
2443
run: cargo clippy -p gobby-code -- -D warnings
2544

45+
- name: Clippy without default features
46+
run: cargo clippy -p gobby-code --no-default-features -- -D warnings
47+
2648
- name: Run tests
2749
run: cargo test -p gobby-code
2850

51+
- name: Run tests without default features
52+
run: cargo test -p gobby-code --no-default-features
53+
2954
build:
3055
needs: test
3156
strategy:

.github/workflows/release-gsqz.yml

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,37 @@ jobs:
2020
with:
2121
components: clippy
2222

23+
- name: Verify tag matches Cargo.toml version
24+
# Guards against tag/crate/release drift: installers resolve a version
25+
# from crates.io and then look for a matching gsqz-v{version} GitHub
26+
# asset, so the tag, crate version, and release name must align.
27+
run: |
28+
set -euo pipefail
29+
tag="${GITHUB_REF#refs/tags/}"
30+
tag_version="${tag#gsqz-v}"
31+
if [ "$tag" = "$tag_version" ]; then
32+
echo "::error::Tag '$tag' does not start with 'gsqz-v'." >&2
33+
exit 1
34+
fi
35+
cargo_version="$(cargo pkgid -p gobby-squeeze | sed 's/.*@//')"
36+
if [ "$tag_version" != "$cargo_version" ]; then
37+
echo "::error::Tag version '$tag_version' does not match crates/gsqz/Cargo.toml version '$cargo_version'." >&2
38+
exit 1
39+
fi
40+
echo "Tag '$tag' aligns with crates/gsqz/Cargo.toml version '$cargo_version'."
41+
2342
- name: Clippy
2443
run: cargo clippy -p gobby-squeeze -- -D warnings
2544

45+
- name: Clippy without default features
46+
run: cargo clippy -p gobby-squeeze --no-default-features -- -D warnings
47+
2648
- name: Run tests
2749
run: cargo test -p gobby-squeeze
2850

51+
- name: Run tests without default features
52+
run: cargo test -p gobby-squeeze --no-default-features
53+
2954
build:
3055
needs: test
3156
strategy:
@@ -110,7 +135,7 @@ jobs:
110135
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
111136

112137
release:
113-
needs: build
138+
needs: [build, publish]
114139
runs-on: ubuntu-latest
115140

116141
steps:

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ CI builds use `--no-default-features`.
1818

1919
## Architecture
2020

21-
```
21+
```text
2222
main.rs (clap CLI)
2323
→ config::Context::resolve() # Resolves project root, PostgreSQL DSN, service configs
2424
→ commands/*::run() # Command handler

CHANGELOG.md

Lines changed: 95 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,90 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
## [Unreleased]
1111

12-
No unreleased changes.
12+
## [0.8.6] — gcode
13+
14+
### Added
15+
16+
#### gcode
17+
18+
- **Graph-aware symbol lookup**`gcode search-symbol --with-graph` keeps
19+
exact-first ranking and adds FalkorDB graph neighbors when graph config is
20+
available.
21+
22+
### Changed
23+
24+
#### gcode
25+
26+
- **Search scoring metadata** — hybrid JSON output now uses `score` for the
27+
final displayed rank score, exposes raw RRF as `rrf_score`, and sorts
28+
`sources` deterministically.
29+
30+
- **Path-filter fallback visibility** — path globs that cannot be pushed into
31+
SQL now log a warning and surface a user-facing hint while still enforcing
32+
exact glob semantics through post-filtering.
33+
34+
### Fixed
35+
36+
#### gcode
37+
38+
- **External call extraction** — scoped Swift imports like
39+
`import struct Foundation.Date` bind the module root correctly; parameter and
40+
local variable shadowing prevents false external call targets; Dart textual
41+
call extraction now tracks raw and triple-quoted multiline strings; C/C++
42+
macro detection accepts both `#define` and `# define`.
43+
44+
- **clangd cleanup errors** — C/C++ semantic resolution now returns the original
45+
resolution error first and only closes open clangd files after successful
46+
resolution.
47+
48+
## [0.1.2] — gloc
49+
50+
### Changed
51+
52+
#### gloc
53+
54+
- **MSRV metadata** — raised the crate `rust-version` to 1.88 to match the
55+
workspace policy.
56+
57+
## [0.8.5] — gcode
58+
59+
### Changed
60+
61+
#### gcode
62+
63+
- **Positional search paths**`gcode search`, `gcode search-symbol`,
64+
`gcode search-text`, and `gcode search-content` now accept one or more
65+
positional path filters after the query. Bare paths match exact files and
66+
descendants; glob paths stay verbatim; multiple paths use OR semantics.
67+
68+
- **Broker-first PostgreSQL DSN resolution**`gcode` now asks the local
69+
daemon broker for the PostgreSQL hub DSN before consulting any daemonless
70+
fallback. If the broker is unavailable, explicit fallback sources resolve in
71+
this order: `GCODE_DATABASE_URL`, `GOBBY_POSTGRES_DSN`,
72+
`~/.gobby/gcode.yaml` `database_url`, then bootstrap inline `database_url`.
73+
74+
- **Bootstrap `database_url_ref` rejected**`~/.gobby/bootstrap.yaml`
75+
`database_url_ref` values are no longer accepted by `gcode`. Daemonless
76+
setups must provide an inline `database_url` or one of the explicit fallback
77+
sources above; broker-managed secrets stay behind the daemon broker.
78+
79+
### Fixed
80+
81+
#### gcode
82+
83+
- **Directory path indexing root**`gcode index <path>` now indexes from the
84+
resolved project root when `<path>` is inside the current project, keeping
85+
relative file paths stable instead of treating the passed directory as a new
86+
root.
87+
88+
### Removed
89+
90+
#### gcode
91+
92+
- **`--path` search filters** — breaking CLI cleanup: `gcode search`,
93+
`gcode search-symbol`, `gcode search-text`, and `gcode search-content` no
94+
longer accept `--path <glob>`. Pass paths and globs positionally after the
95+
query instead.
1396

1497

1598
## [0.8.4] — gcode
@@ -167,6 +250,17 @@ No unreleased changes.
167250
- **`gobby_acp_child` in terminal_context**`terminal_context.capture()` now includes `gobby_acp_child` (read from `GOBBY_ACP_CHILD`). The daemon's SESSION_START handler uses it as a second line of defense to recognize and drop registrations from ACP subprocesses even if the env short-circuit didn't fire.
168251
- **Surface nested `permissionDecisionReason` in block messages**`extract_reason` now also checks `hookSpecificOutput.permissionDecisionReason` (and `.reason` inside that object) after the top-level fallback keys. Modern Claude Code PreToolUse deny responses carry the reason inside `hookSpecificOutput`; `is_blocked` already recognized the nested shape, but `extract_reason` didn't — so denies surfaced as the bare "Blocked by hook" fallback instead of the daemon's actual message.
169252

253+
## [0.4.3] — gsqz
254+
255+
### Fixed
256+
257+
#### gsqz
258+
259+
- **Built-in exclusion passthrough** — Gobby-owned CLIs (`gobby`,
260+
`gobby-cli`, `gcode`, `ghook`, `gloc`, `gsqz`) and `git` are now excluded
261+
from squeezing. Their output is surfaced raw and skips compression headers
262+
and daemon savings reports.
263+
170264
## [0.4.2] — gsqz
171265

172266
### Fixed

0 commit comments

Comments
 (0)