Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
125318a
Add simd-json support and stack-optimized path params
Tuntii Jan 7, 2026
01f8988
Update .gitignore
Tuntii Jan 10, 2026
38cb85e
Add webhook exporter HTTP support and OpenAPI for SSE
Tuntii Jan 10, 2026
7473e02
Add benchmarking and integration tests for RustAPI
Tuntii Jan 11, 2026
b1cba51
Add WebSocket benchmarks and extras modules
Tuntii Jan 13, 2026
db12ca6
Add audit logging system and rustapi-testing crate
Tuntii Jan 13, 2026
208e898
Add streaming request body support and rustapi-jobs crate
Tuntii Jan 13, 2026
74f9c20
Add advanced examples: event sourcing, microservices, lambda
Tuntii Jan 13, 2026
19de184
Wrap API responses in structured types
Tuntii Jan 14, 2026
9c461b9
Add property-based tests for core features
Tuntii Jan 14, 2026
e0d30a1
Merge branch 'main' into big-performance
Tuntii Jan 14, 2026
2737c35
Refactor and format property tests and benchmarks
Tuntii Jan 14, 2026
b280d97
Refactor error field and WebSocket stream variant
Tuntii Jan 14, 2026
5954479
Improve property tests and add proptest seeds
Tuntii Jan 14, 2026
75a9936
Add proptest regression seeds and update queue tests
Tuntii Jan 14, 2026
b091011
Remove unused imports and fix Redis zadd call
Tuntii Jan 14, 2026
7ca7a20
Enable r2d2 feature for diesel and clarify error types
Tuntii Jan 14, 2026
cfa3f93
Use clones in property test assertions
Tuntii Jan 14, 2026
413fd33
Add watch, add, and doctor commands to CLI
Tuntii Jan 14, 2026
cf8be12
Fix async handling and error mapping in file writes
Tuntii Jan 14, 2026
ec50f79
Remove 'target' directory from cache in CI workflows
Tuntii Jan 14, 2026
7e0502e
Update retry.rs
Tuntii Jan 14, 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
4 changes: 0 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ jobs:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-test-
Expand Down Expand Up @@ -70,7 +69,6 @@ jobs:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-lint-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-lint-
Expand Down Expand Up @@ -104,7 +102,6 @@ jobs:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-build-
Expand Down Expand Up @@ -141,7 +138,6 @@ jobs:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-docs-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-docs-
Expand Down
150 changes: 150 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
name: Publish to crates.io

on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
dry_run:
description: 'Dry run (do not publish)'
required: false
default: 'false'

env:
CARGO_TERM_COLOR: always

jobs:
publish:
name: Publish
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-cargo-publish-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-publish-

- name: Verify version matches tag
if: startsWith(github.ref, 'refs/tags/v')
run: |
TAG_VERSION=${GITHUB_REF#refs/tags/v}
CARGO_VERSION=$(grep '^\s*version\s*=' Cargo.toml | head -n 1 | sed 's/.*"\(.*\)"/\1/')
if [ "$TAG_VERSION" != "$CARGO_VERSION" ]; then
echo "Version mismatch: tag=$TAG_VERSION, Cargo.toml=$CARGO_VERSION"
exit 1
fi
echo "Version verified: $TAG_VERSION"

- name: Run tests before publish
run: cargo test --workspace --all-features

- name: Build release
run: cargo build --workspace --release

# Publish crates in dependency order
- name: Publish rustapi-core
if: github.event.inputs.dry_run != 'true'
run: cargo publish -p rustapi-core --token ${{ secrets.CRATES_IO_TOKEN }}
continue-on-error: true

- name: Wait for crates.io index update
if: github.event.inputs.dry_run != 'true'
run: sleep 30

- name: Publish rustapi-macros
if: github.event.inputs.dry_run != 'true'
run: cargo publish -p rustapi-macros --token ${{ secrets.CRATES_IO_TOKEN }}
continue-on-error: true

- name: Wait for crates.io index update
if: github.event.inputs.dry_run != 'true'
run: sleep 30

- name: Publish rustapi-validate
if: github.event.inputs.dry_run != 'true'
run: cargo publish -p rustapi-validate --token ${{ secrets.CRATES_IO_TOKEN }}
continue-on-error: true

- name: Wait for crates.io index update
if: github.event.inputs.dry_run != 'true'
run: sleep 30

- name: Publish rustapi-openapi
if: github.event.inputs.dry_run != 'true'
run: cargo publish -p rustapi-openapi --token ${{ secrets.CRATES_IO_TOKEN }}
continue-on-error: true

- name: Wait for crates.io index update
if: github.event.inputs.dry_run != 'true'
run: sleep 30

- name: Publish rustapi-extras
if: github.event.inputs.dry_run != 'true'
run: cargo publish -p rustapi-extras --token ${{ secrets.CRATES_IO_TOKEN }}
continue-on-error: true

- name: Wait for crates.io index update
if: github.event.inputs.dry_run != 'true'
run: sleep 30

- name: Publish rustapi-toon
if: github.event.inputs.dry_run != 'true'
run: cargo publish -p rustapi-toon --token ${{ secrets.CRATES_IO_TOKEN }}
continue-on-error: true

- name: Wait for crates.io index update
if: github.event.inputs.dry_run != 'true'
run: sleep 30

- name: Publish rustapi-view
if: github.event.inputs.dry_run != 'true'
run: cargo publish -p rustapi-view --token ${{ secrets.CRATES_IO_TOKEN }}
continue-on-error: true

- name: Wait for crates.io index update
if: github.event.inputs.dry_run != 'true'
run: sleep 30

- name: Publish rustapi-ws
if: github.event.inputs.dry_run != 'true'
run: cargo publish -p rustapi-ws --token ${{ secrets.CRATES_IO_TOKEN }}
continue-on-error: true

- name: Wait for crates.io index update
if: github.event.inputs.dry_run != 'true'
run: sleep 30

- name: Publish rustapi-rs (main crate)
if: github.event.inputs.dry_run != 'true'
run: cargo publish -p rustapi-rs --token ${{ secrets.CRATES_IO_TOKEN }}

- name: Publish cargo-rustapi
if: github.event.inputs.dry_run != 'true'
run: cargo publish -p cargo-rustapi --token ${{ secrets.CRATES_IO_TOKEN }}
continue-on-error: true

- name: Dry run verification
if: github.event.inputs.dry_run == 'true'
run: |
echo "Dry run mode - verifying packages can be published..."
cargo publish -p rustapi-core --dry-run
cargo publish -p rustapi-macros --dry-run
cargo publish -p rustapi-validate --dry-run
cargo publish -p rustapi-openapi --dry-run
cargo publish -p rustapi-extras --dry-run
cargo publish -p rustapi-toon --dry-run
cargo publish -p rustapi-view --dry-run
cargo publish -p rustapi-ws --dry-run
cargo publish -p rustapi-rs --dry-run
cargo publish -p cargo-rustapi --dry-run
echo "All packages verified successfully!"
Loading