Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
9d9a0b3
Add batched GraphQL history collection
hannesrudolph Sep 23, 2026
6dc223e
Expose GraphQL request durations for supervised pacing
hannesrudolph Sep 23, 2026
bb82876
Retry transient GraphQL failures before discarding history batches
hannesrudolph Sep 23, 2026
cdffe87
fix: complete GraphQL review-thread history and prepare 0.12.0
steipete Sep 24, 2026
a37c4f9
Add analytics source evidence and ongoing GraphQL collection
hannesrudolph Sep 25, 2026
f58e55b
Preserve review state and reconcile rejected GraphQL collection
hannesrudolph Sep 26, 2026
2644b64
Use available GitHub quota for targeted review recovery
hannesrudolph Sep 26, 2026
23f3ce6
Use actual GraphQL quota for recovery admission and reserves
hannesrudolph Sep 26, 2026
195faf3
Keep GraphQL quota conservative across anomalous samples
hannesrudolph Sep 26, 2026
5ea6e00
Retain safe GraphQL error codes and paths in rejection receipts
hannesrudolph Sep 26, 2026
8f75d7f
Accelerate targeted review recovery with bounded parallel queries
hannesrudolph Sep 26, 2026
50a7055
Merge remote-tracking branch 'origin/main' into feat/graphql-history-…
hannesrudolph Sep 26, 2026
7e4d33e
Test analytics recovery ownership and atomicity contracts
hannesrudolph Sep 26, 2026
abc4af8
Retain bounded causes for rejected GraphQL requests
hannesrudolph Sep 26, 2026
bd196fe
fix: refresh expired GraphQL quota snapshots
hannesrudolph Sep 26, 2026
a6f5799
test: synchronize quota refresh cancellation fixture
hannesrudolph Sep 26, 2026
290d943
perf(vector): prepare embeddings once and add portable SIMD scoring (…
steipete Sep 28, 2026
b20b4f3
feat: collect repository metrics in an independent store (#206)
hannesrudolph Sep 28, 2026
56ece89
fix: preserve literal args, reject inconsistent history pages, load c…
steipete Sep 28, 2026
58e5d62
chore: prepare 0.13.0 release notes (#221)
steipete Sep 28, 2026
6ccd933
chore: open next unreleased section (#222)
github-actions[bot] Sep 28, 2026
d8d19ef
build(deps): update crawlkit to v0.16.6 (#223)
steipete Sep 30, 2026
f62022f
feat: add durable analytics evidence and review recovery
steipete Sep 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,13 @@ jobs:
echo "total coverage: ${total}%"
awk -v total="$total" 'BEGIN { if (total + 0 < 85.0) { printf("coverage %.1f%% is below 85.0%%\n", total); exit 1 } }'

- name: Test portable SIMD and scalar fallback
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
# Release binaries are built with this experiment, so test everything they ship.
GOEXPERIMENT=simd go test ./...
GOEXPERIMENT=simd GODEBUG=simd=0 go test ./internal/vector ./internal/cli

- name: Build
run: go build -ldflags "-X github.com/openclaw/gitcrawl/internal/cli.version=${GITHUB_SHA:0:7}" -o bin/gitcrawl ./cmd/gitcrawl

Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,5 @@ tmp/
cache/
logs/
vectors/

.crabbox/
2 changes: 2 additions & 0 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ builds:
binary: gitcrawl
env:
- CGO_ENABLED=0
- GOEXPERIMENT=simd
ldflags:
- -s -w -X github.com/openclaw/gitcrawl/internal/cli.version={{ .Version }}
targets:
Expand All @@ -23,6 +24,7 @@ builds:
binary: gitcrawl
env:
- CGO_ENABLED=0
- GOEXPERIMENT=simd
ldflags:
- -s -w -X github.com/openclaw/gitcrawl/internal/cli.version={{ .Version }}
targets:
Expand Down
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,19 @@

## Unreleased

- Add `gitcrawl analytics` for publication repair, actor evidence, continuous collection, and durable review-state recovery with separate core/enrichment coverage and private failure receipts. Thanks @hannesrudolph.

- Update CrawlKit to v0.16.6 for faster vector validation in the TurboVec search backend.

## 0.13.0 - 2026-09-28

**Highlights:** New `gitcrawl metrics` commands for repository headline history, and much faster clustering and exact neighbors.

- Add `gitcrawl metrics collect|import|status --config metrics.json` to keep stars, forks, subscribers, open issue/PR counts, completed-day clones, and stable releases in a separate private SQLite store, with atomic imports, preserved unknown values, daily corrections, partial-result reporting when quota runs out, and JSON output. Thanks @hannesrudolph.
- Prepare vectors once for 2.6× faster cluster scoring and 2.0× faster exact neighbors; enable `GOEXPERIMENT=simd` in release builds for a further 2.6×/1.7× on Apple M3 Ultra (1,024 dimensions).
- Reject GraphQL history pages whose continuation reports a different total count, so a comment deleted mid-pagination can no longer leave a stale conversation marked complete.
- Keep arguments after `--` literal (for example `gitcrawl search -- --flag-like-text`) instead of treating them as options.
- Load TUI neighbors for a selected closed thread that has a stored embedding instead of reporting it missing.
- Disable automatic Git maintenance during portable-refresh fixture setup so temporary repositories do not launch detached cleanup work.

## 0.12.0 - 2026-09-24
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ COPY go.mod go.sum ./
RUN go mod download
COPY . .
ARG VERSION=dev
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath \
RUN CGO_ENABLED=0 GOEXPERIMENT=simd GOOS=linux go build -trimpath \
-ldflags="-s -w -X github.com/openclaw/gitcrawl/internal/cli.version=${VERSION}" \
-o /out/gitcrawl ./cmd/gitcrawl

Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Homebrew is the smallest install on macOS and Linux:
brew install openclaw/tap/gitcrawl
```

Prebuilt archives for macOS, Linux, and Windows are available from [GitHub Releases](https://github.com/openclaw/gitcrawl/releases/latest). The [installation guide](docs/installation.md) also covers source builds and update checks; source builds require Go 1.27.1 or newer for CrawlKit v0.16.5. Binaries built with this toolchain require macOS 13 Ventura or newer. A [Docker source build](docs/docker.md) keeps its runtime state under one mounted directory.
Prebuilt archives for macOS, Linux, and Windows are available from [GitHub Releases](https://github.com/openclaw/gitcrawl/releases/latest). The [installation guide](docs/installation.md) also covers source builds and update checks; source builds require Go 1.27.1 or newer for CrawlKit v0.16.6. Binaries built with this toolchain require macOS 13 Ventura or newer. A [Docker source build](docs/docker.md) keeps its runtime state under one mounted directory.

Sync needs a GitHub token from `GITHUB_TOKEN` or `gh auth token`. Generating summaries and embeddings also needs `OPENAI_API_KEY`; semantic search and clustering use those stored embeddings, while ordinary sync and keyword search do not.

Expand Down Expand Up @@ -64,6 +64,7 @@ Octopool owns pooled live `gh` reads. Gitcrawl keeps local mirror, search, clust
| Check archive health | `gitcrawl status` / `gitcrawl doctor` | [Configuration](docs/configuration.md) |
| Refresh a portable subscriber | `gitcrawl portable refresh --expected-remote URL` | [Portable stores](docs/portable-stores.md#routine-subscriber-refresh) |
| Mirror GitHub threads | `gitcrawl sync owner/repo` | [Sync](docs/sync.md) |
| Collect repository counters and releases | `gitcrawl metrics collect\|import\|status --config metrics.json` | [Repository metrics](docs/metrics.md) |
| Search threads or indexed code | `gitcrawl search ...` | [Search](docs/search.md) |
| Build and inspect clusters | `gitcrawl refresh`, `clusters`, `tui` | [Clustering](docs/clustering.md) |
| Export a code-free conversation snapshot | `gitcrawl capture owner/repo` | [Capture](docs/capture.md) |
Expand Down
Loading
Loading