Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
30 changes: 23 additions & 7 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,9 +1,25 @@
# Default owners for everything
* @runcaptain/eng
# Global owners
* @lewis @edgar

# Vector backends
crates/compass-index-api/ @runcaptain/eng
crates/compass-vector-gpu/ @runcaptain/eng
# Architecture and storage
crates/compass/src/collections/ @lewis @edgar
crates/compass/src/search/ @lewis @edgar

# CI and release
.github/ @runcaptain/eng
# GPU backend
crates/compass-vector-gpu/ @lewis @edgar

# API trait
crates/compass-index-api/ @lewis @edgar

# Documentation
*.md @lewis @edgar
ARCHITECTURE.md @lewis @edgar
CONTRIBUTING.md @lewis @edgar

# CI/CD
.github/ @lewis @edgar
Dockerfile* @lewis @edgar

# Dependency and manifest changes
Cargo.toml @lewis @edgar
Cargo.lock @lewis @edgar
2 changes: 2 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
github: [runcaptain]
custom: ["https://runcaptain.com"]
51 changes: 51 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
name: Bug Report
about: Report a bug or unexpected behavior
title: "[BUG] "
labels: bug
assignees: ''

---

## Describe the bug

A clear and concise description of what the bug is.

## Steps to reproduce

1. ...
2. ...
3. ...

## Expected behavior

What should happen.

## Actual behavior

What actually happens instead.

## Environment

- **Compass version** (or git SHA):
- **OS and architecture**:
- **Rust version** (`rustc --version`):
- **Data directory size**:
- **Collection size** (approximate):

## Logs

If applicable, reproduce with debug logging:
```bash
RUST_LOG=compass=debug ./compass
```

Then paste relevant log output here:

```
[paste logs]
```

## Additional context

Any other context that might be helpful.
28 changes: 28 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
name: Feature Request
about: Suggest an idea for Compass
title: "[FEATURE] "
labels: enhancement
assignees: ''

---

## Description

A clear and concise description of what you'd like to see.

## Motivation

Why should this feature exist? What problem does it solve?

## Proposed solution

Describe how you'd like the feature to work.

## Alternatives

Have you considered any alternative approaches?

## Additional context

Any other context or examples (e.g., similar features in other projects).
40 changes: 30 additions & 10 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,36 @@
## Summary
## Description

<!-- What does this PR do? 1-3 bullet points. -->
Briefly describe the changes in this PR.

## Test plan
## Related issue

<!-- How did you verify this works? -->
Fixes #(issue number) or closes #(issue number)

- [ ] `cargo test` passes
- [ ] `cargo clippy` clean
- [ ] `cargo fmt` clean
- [ ] Tested with Docker build (if applicable)
## Type of change

## Changelog
- [ ] Bug fix (non-breaking)
- [ ] New feature (non-breaking)
- [ ] Breaking change
- [ ] Documentation update
- [ ] Performance improvement

<!-- Which CHANGELOG.md section does this belong in? (Added / Changed / Fixed / Removed) -->
## Testing

How have you tested these changes? Include steps to reproduce.

## Checklist

- [ ] `cargo fmt --all` is clean
- [ ] `cargo clippy --workspace -- -D warnings` passes
- [ ] `cargo test --workspace` passes
- [ ] CHANGELOG.md updated under `[Unreleased]` section
- [ ] Public API changes have rustdoc comments
- [ ] Behavior changes have a regression test

## Before/after (if applicable)

Performance benchmarks, screenshots, or other evidence of the change:

```
(paste before/after data here)
```
133 changes: 67 additions & 66 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,85 +3,86 @@ name: Release
on:
push:
tags:
- "v*"
- 'v*'

env:
CARGO_TERM_COLOR: always

jobs:
build:
name: Build (${{ matrix.target }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-24.04
artifact: compass-linux-amd64
- target: aarch64-unknown-linux-gnu
os: ubuntu-24.04
artifact: compass-linux-arm64
- target: aarch64-apple-darwin
os: macos-14
artifact: compass-macos-arm64
create-release:
name: Create GitHub Release
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
fetch-depth: 0

- uses: dtolnay/rust-toolchain@stable

- uses: Swatinem/rust-cache@v2
- if: matrix.target == 'aarch64-unknown-linux-gnu'

- name: Extract version from tag
id: version
run: echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT

- name: Verify tag matches Cargo.toml
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu cmake pkg-config libssl-dev
echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
- if: matrix.os == 'ubuntu-24.04' && matrix.target == 'x86_64-unknown-linux-gnu'
CARGO_VERSION=$(grep "^version" crates/compass/Cargo.toml | head -1 | sed 's/.*"\([^"]*\)".*/\1/')
if [ "${{ steps.version.outputs.version }}" != "$CARGO_VERSION" ]; then
echo "Tag version ${{ steps.version.outputs.version }} does not match Cargo.toml version $CARGO_VERSION"
exit 1
fi

- name: Build release binaries
run: cargo build --release -p compass

- name: Extract changelog section
id: changelog
run: |
sudo apt-get update
sudo apt-get install -y cmake pkg-config libssl-dev
- run: cargo build --release --target ${{ matrix.target }} -p compass
- run: |
mkdir -p dist
cp target/${{ matrix.target }}/release/compass dist/${{ matrix.artifact }}
- uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact }}
path: dist/${{ matrix.artifact }}
# Extract changelog between tag and previous tag
VERSION="${{ steps.version.outputs.version }}"
PREV_TAG=$(git describe --tags --abbrev=0 $(git rev-list --tags --skip=1 -n1) 2>/dev/null || echo "HEAD")

# Extract relevant section from CHANGELOG.md
CHANGELOG=$(sed -n "/## \[$VERSION\]/,/## \[/p" CHANGELOG.md | sed '$ d')

# Escape for GitHub Actions
CHANGELOG="${CHANGELOG//'%'/'%25'}"
CHANGELOG="${CHANGELOG//$'\n'/'%0A'}"
CHANGELOG="${CHANGELOG//$'\r'/'%0D'}"

echo "body=$CHANGELOG" >> $GITHUB_OUTPUT

docker:
name: Docker image
runs-on: ubuntu-24.04
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v6
- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
context: .
push: true
tags: |
ghcr.io/${{ github.repository }}:${{ github.ref_name }}
ghcr.io/${{ github.repository }}:latest

release:
name: GitHub Release
needs: [build, docker]
tag_name: ${{ github.ref }}
release_name: Release v${{ steps.version.outputs.version }}
body: ${{ steps.changelog.outputs.body }}
draft: false
prerelease: false

publish-crate:
name: Publish to crates.io
runs-on: ubuntu-24.04
permissions:
contents: write
needs: create-release
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
path: dist
merge-multiple: true
- uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
files: dist/*

- uses: dtolnay/rust-toolchain@stable

- uses: Swatinem/rust-cache@v2

- name: Run tests before publish
run: cargo test --workspace --exclude compass-vector-gpu

- name: Publish compass-index-api
run: cargo publish -p compass-index-api --token ${{ secrets.CARGO_TOKEN }}

- name: Publish compass
run: cargo publish -p compass --token ${{ secrets.CARGO_TOKEN }}

- name: Wait for crates.io to index
run: sleep 30
27 changes: 10 additions & 17 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,31 @@
# Contributor Covenant Code of Conduct

## Our Pledge
## Our Commitment

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We are committed to providing a welcoming and inspiring community for all. We expect all participants in the Compass community to uphold this code of conduct.

## Our Standards

Examples of behavior that contributes to a positive environment:
Examples of behavior that contributes to creating a positive environment include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Being respectful of differing opinions, viewpoints, and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior:
Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information without explicit permission
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the project team at **conduct@runcaptain.com**. All complaints will
be reviewed and investigated promptly and fairly.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at founders@runcaptain.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1.
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1, available at https://www.contributor-covenant.org/version/2_1/code_of_conduct.html.
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ Open an issue with:

## Reporting security issues

Don't open a public issue. Email `security@runcaptain.com` with the details. We'll acknowledge within two business days.
Don't open a public issue. Email `founders@runcaptain.com` with the details. We'll acknowledge within two business days.

## Code of conduct

Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ default-members = ["crates/compass"]
[workspace.package]
version = "0.2.0"
edition = "2021"
authors = ["Captain Technologies <eng@runcaptain.com>"]
authors = ["Captain Technologies <founders@runcaptain.com>"]
repository = "https://github.com/runcaptain/compass"
homepage = "https://runcaptain.com"
rust-version = "1.88"
Expand Down
Loading
Loading