Conversation
Builds ir binary and preprocessors for macOS (arm64/x86_64) and
Linux (x86_64/aarch64) on tag push. macOS preprocessors are universal
binaries via lipo matching existing release format. Includes SHA256
checksums for brew formula and mise github backend compatibility.
Asset naming (ir-{os}-{arch}.tar.gz) supports mise auto-detection.
https://claude.ai/code/session_01MYBuJxLEHKfxkBJ8yZRyph
The release workflow (.github/workflows/release.yml) builds and uploads preprocessor binaries for all platforms, fully replacing this script. https://claude.ai/code/session_01MYBuJxLEHKfxkBJ8yZRyph
- New ci.yml: build, test, clippy -D warnings, fmt check, cargo-shear (unused dep detection) on push/PR using ubuntu-24.04-arm - release.yml: checkout@v4 → v6, add persist-credentials: false - Patterns adopted from legalize-kr/compiler CI reference https://claude.ai/code/session_01MYBuJxLEHKfxkBJ8yZRyph
On aarch64-linux, c_char is u8 (unsigned) unlike x86_64/macOS where it's i8. Use std::ffi::c_char instead of hardcoded i8 in the sqlite-vec extension init type alias. https://claude.ai/code/session_01MYBuJxLEHKfxkBJ8yZRyph
tr uses full stdio buffering on pipes, causing deadlocks with the line-by-line preprocessor protocol. Replace with awk + fflush() which guarantees line-buffered output. Commands avoid spaces since spawn() splits on whitespace. Chain test changed to lowercase + o→0 transform. https://claude.ai/code/session_01MYBuJxLEHKfxkBJ8yZRyph
- needless_borrow: remove & on backend/path args already impl AsRef - collapsible_if: merge nested if-let chains with && let syntax - strip_prefix: use strip_prefix() instead of starts_with + slice - manual_map: use Option::map for hyde SubQuery - map_flatten: use and_then instead of map().flatten() - map_or: use is_some_and instead of map_or(false, ..) - clone for slice: use std::slice::from_ref instead of &[x.clone()] - is_multiple_of: use .is_multiple_of(50) instead of % 50 == 0 - owned comparison: compare against Path::new() instead of PathBuf::from() - file_create_without_truncate: add .truncate(true) to lock file - dead_code: allow unused Script variant (match arm exists) - too_many_arguments: per-function #[allow] on eval.rs benchmark fns - unnecessary mut ref: pass &results instead of &mut results https://claude.ai/code/session_01MYBuJxLEHKfxkBJ8yZRyph
- Pin all action references to commit SHAs (22 unpinned-uses → 0) - Scope contents:write to release job only (was workflow-level) - Add save-if:false to rust-cache in release workflow (cache-poisoning) Remaining findings are informational (superfluous-actions suggestions) and low-confidence cache-poisoning (mitigated by save-if:false). https://claude.ai/code/session_01MYBuJxLEHKfxkBJ8yZRyph
Removes a third-party action dependency. Uses env var for tag name to avoid template injection (zizmor template-injection finding). https://claude.ai/code/session_01MYBuJxLEHKfxkBJ8yZRyph
Flagged by cargo-shear in CI. None are referenced in src/. https://claude.ai/code/session_01MYBuJxLEHKfxkBJ8yZRyph
gh release create requires a git repo to resolve the tag. https://claude.ai/code/session_01MYBuJxLEHKfxkBJ8yZRyph
There was a problem hiding this comment.
Pull request overview
Adds GitHub Actions automation for verification and tagged releases, while aligning the Rust codebase with stricter CI (fmt/clippy/deps) and updating tests to avoid CI deadlocks.
Changes:
- Introduces GitHub Actions CI (
ci.yml) and a multi-platform release pipeline (release.yml) that builds and packages binaries/artifacts. - Removes the legacy
scripts/release-extras.shin favor of the release workflow. - Applies a broad set of Rust cleanups driven by CI (formatting, clippy fixes, unused deps removal, and replacing
tr-based preprocessor tests withawk).
Reviewed changes
Copilot reviewed 21 out of 22 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
src/search/hybrid.rs |
Formatting/clippy-driven rewrites and minor refactors in hybrid search + rerank path. |
src/search/fan_out.rs |
Minor formatting cleanup. |
src/preprocess.rs |
Updates tests to use awk (fflush) instead of tr to avoid pipe buffering deadlocks in CI. |
src/mcp.rs |
Formatting and small refactors around MCP tool routing and status/search tooling. |
src/main.rs |
Formatting/clippy rewrites; adjusts result printing callsite to match print_results(&[...]). |
src/llm/reranker.rs |
Fixes backend argument passing (avoids &&backend) and formatting. |
src/llm/qwen.rs |
Formatting and context creation formatting cleanup. |
src/llm/mod.rs |
Compresses HF repo constants formatting. |
src/llm/expander.rs |
Fixes backend argument passing (avoids &&backend) and simplifies parsing logic. |
src/llm/embedding.rs |
Fixes backend argument passing and context creation call; formatting. |
src/llm/download.rs |
Minor refactor using let-chains for alias reuse. |
src/index/mod.rs |
Formatting, refactors with let-chains; adds clippy allow for argument-heavy helper. |
src/index/embed.rs |
Formatting; minor closure formatting changes. |
src/index/chunker.rs |
Small refactor to use strip_prefix for heading parsing. |
src/db/mod.rs |
FFI type correction (c_char), formatting, minor iterator refactors. |
src/daemon.rs |
Formatting, minor refactors; lockfile open options adjusted. |
src/config/mod.rs |
Formatting/refactor in preprocessor config resolution. |
src/bin/eval.rs |
Formatting/clippy rewrites and minor standard library API cleanups. |
scripts/release-extras.sh |
Removed; functionality migrated into GitHub Actions release workflow. |
Cargo.toml |
Removes unused dependencies. |
.github/workflows/release.yml |
Adds release workflow building macOS + Linux artifacts and creating GitHub releases. |
.github/workflows/ci.yml |
Adds CI workflow for build/test/clippy/fmt and unused dependency checks. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Apply the valid Copilot review feedback on the release workflow. - grant contents:read at workflow scope for checkout in build jobs - build/package Linux release artifacts from the configured musl targets - keep contents:write scoped to the release job only Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
This comment was marked as outdated.
This comment was marked as outdated.
|
|
Thanks for putting this together. Two clarifications and three required changes before this can merge. Clarificationsmacos-14 runner — correct, that's our defined baseline. No change needed. Universal binary — we do serve a universal binary for the main Required Changes1. Main
|
Align the release workflow with the upstream Homebrew formula requirements. - package the macOS ir binary as a versioned universal tarball - add the Homebrew bottle tarball to macOS release artifacts - update vlwkaos/homebrew-tap after creating the GitHub release Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Merge upstream/main before updating PR vlwkaos#4. - accept upstream source changes for merge conflicts - keep the release workflow universal macOS artifact and tap update changes - run cargo fmt after accepting upstream code Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
|
The three required changes from the last round are all addressed. Universal binary, bottle, and tap update are in. Looks good overall. One thing before I merge: in Fix that and this is ready to merge. |
Move actions/checkout to the first CI step so future rust-toolchain.toml files are visible before toolchain setup. Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Use c_char for sqlite3_auto_extension init so aarch64 Linux matches the platform ABI. Refresh Cargo.lock after upstream removed unused dependencies. Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
|
@RanolP Seems like change from formatting differences, since there were few major upstream pushes, I'd suggest you cherry pick your change and clean up branch history and force push the branch. How does that sound? After that we will have to see if the action actually works, I am expecting some trial and error but that is ok. Thanks for looking into this |
Changes Made
trtest withawkdue to long-running tests on GitHub Actions.Note for AI use
Attribution