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
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.1.275] - 2026-02-06
## [0.1.300] - 2026-02-06

### Added
- **Replay (Time-Travel Debugging)**: Complete time-travel debugging system for recording and replaying HTTP requests
Expand Down
22 changes: 11 additions & 11 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -95,17 +95,17 @@ indicatif = "0.17"
console = "0.16"

# Internal crates
rustapi-rs = { path = "crates/rustapi-rs", version = "0.1.188", default-features = false }
rustapi-core = { path = "crates/rustapi-core", version = "0.1.188", default-features = false }
rustapi-macros = { path = "crates/rustapi-macros", version = "0.1.188" }
rustapi-validate = { path = "crates/rustapi-validate", version = "0.1.188" }
rustapi-openapi = { path = "crates/rustapi-openapi", version = "0.1.188", default-features = false }
rustapi-extras = { path = "crates/rustapi-extras", version = "0.1.188" }
rustapi-toon = { path = "crates/rustapi-toon", version = "0.1.188" }
rustapi-ws = { path = "crates/rustapi-ws", version = "0.1.188" }
rustapi-view = { path = "crates/rustapi-view", version = "0.1.188" }
rustapi-testing = { path = "crates/rustapi-testing", version = "0.1.188" }
rustapi-jobs = { path = "crates/rustapi-jobs", version = "0.1.188" }
rustapi-rs = { path = "crates/rustapi-rs", version = "0.1.300", default-features = false }
rustapi-core = { path = "crates/rustapi-core", version = "0.1.300", default-features = false }
rustapi-macros = { path = "crates/rustapi-macros", version = "0.1.300" }
rustapi-validate = { path = "crates/rustapi-validate", version = "0.1.300" }
rustapi-openapi = { path = "crates/rustapi-openapi", version = "0.1.300", default-features = false }
rustapi-extras = { path = "crates/rustapi-extras", version = "0.1.300" }
rustapi-toon = { path = "crates/rustapi-toon", version = "0.1.300" }
rustapi-ws = { path = "crates/rustapi-ws", version = "0.1.300" }
rustapi-view = { path = "crates/rustapi-view", version = "0.1.300" }
rustapi-testing = { path = "crates/rustapi-testing", version = "0.1.300" }
rustapi-jobs = { path = "crates/rustapi-jobs", version = "0.1.300" }

# HTTP/3 (QUIC)
quinn = "0.11"
Expand Down
2 changes: 1 addition & 1 deletion RELEASES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# RustAPI Release History

## v0.1.275 - Time-Travel Debugging (2026-02-06)
## v0.1.300 - Time-Travel Debugging (2026-02-06)

### 🎯 Major Feature: Replay System

Expand Down
2 changes: 1 addition & 1 deletion crates/rustapi-extras/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
//!
//! ```toml
//! [dependencies]
//! rustapi-extras = { version = "0.1.275", features = ["jwt", "cors", "csrf"] }
//! rustapi-extras = { version = "0.1.300", features = ["jwt", "cors", "csrf"] }
//! ```

#![warn(missing_docs)]
Expand Down
2 changes: 1 addition & 1 deletion crates/rustapi-openapi/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ serde = { workspace = true }
serde_json = { workspace = true }

# Macros
rustapi-macros = { path = "../rustapi-macros", version = "0.1.188" }
rustapi-macros = { path = "../rustapi-macros", version = "0.1.300" }
Copy link

Copilot AI Feb 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This crate uses a direct path + version pattern for the rustapi-macros dependency, while other crates in the workspace (rustapi-rs, rustapi-validate) use the workspace pattern with { workspace = true }. This inconsistency can lead to maintenance issues when updating versions, as this file needs to be updated separately. Consider aligning with the workspace pattern used by other crates for consistency and easier maintenance.

Suggested change
rustapi-macros = { path = "../rustapi-macros", version = "0.1.300" }
rustapi-macros = { workspace = true }

Copilot uses AI. Check for mistakes.

[features]
default = ["swagger-ui"]
Expand Down
2 changes: 1 addition & 1 deletion crates/rustapi-rs/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
//!
//! ```toml
//! [dependencies]
//! rustapi-rs = { version = "0.1.275", features = ["jwt", "cors"] }
//! rustapi-rs = { version = "0.1.300", features = ["jwt", "cors"] }
//! ```

// Re-export core functionality
Expand Down
2 changes: 1 addition & 1 deletion crates/rustapi-toon/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
//!
//! ```toml
//! [dependencies]
//! rustapi-rs = { version = "0.1.275", features = ["toon"] }
//! rustapi-rs = { version = "0.1.300", features = ["toon"] }
//! ```
//!
//! ### Toon Extractor
Expand Down
4 changes: 2 additions & 2 deletions docs/FEATURES.md
Original file line number Diff line number Diff line change
Expand Up @@ -1157,7 +1157,7 @@ RustApi::new()

```toml
[dependencies]
rustapi-rs = { version = "0.1.275", features = ["full"] }
rustapi-rs = { version = "0.1.300", features = ["full"] }
```

| Feature | Description |
Expand Down Expand Up @@ -1285,7 +1285,7 @@ let events = store.query()
### 1. Use `simd-json` (when available)

```toml
rustapi-rs = { version = "0.1.275", features = ["simd-json"] }
rustapi-rs = { version = "0.1.300", features = ["simd-json"] }
```

2-4x faster JSON parsing.
Expand Down
18 changes: 9 additions & 9 deletions docs/GETTING_STARTED.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@ Add RustAPI to your `Cargo.toml`:

```toml
[dependencies]
rustapi-rs = "0.1.275"
rustapi-rs = "0.1.300"
```

Or with specific features:

```toml
[dependencies]
rustapi-rs = { version = "0.1.275", features = ["jwt", "cors", "toon", "ws", "view"] }
rustapi-rs = { version = "0.1.300", features = ["jwt", "cors", "toon", "ws", "view"] }
```

### Available Features
Expand Down Expand Up @@ -358,7 +358,7 @@ ApiError::internal("message") // 500
### CORS

```toml
rustapi-rs = { version = "0.1.275", features = ["cors"] }
rustapi-rs = { version = "0.1.300", features = ["cors"] }
```

```rust
Expand All @@ -379,7 +379,7 @@ RustApi::new()
### JWT Authentication

```toml
rustapi-rs = { version = "0.1.275", features = ["jwt"] }
rustapi-rs = { version = "0.1.300", features = ["jwt"] }
```

```rust
Expand Down Expand Up @@ -409,7 +409,7 @@ async fn protected(user: AuthUser<Claims>) -> Json<Response> {
### Rate Limiting

```toml
rustapi-rs = { version = "0.1.275", features = ["rate-limit"] }
rustapi-rs = { version = "0.1.300", features = ["rate-limit"] }
```

```rust
Expand All @@ -427,7 +427,7 @@ RustApi::new()
## TOON Format (LLM Optimization)

```toml
rustapi-rs = { version = "0.1.275", features = ["toon"] }
rustapi-rs = { version = "0.1.300", features = ["toon"] }
```

```rust
Expand Down Expand Up @@ -458,7 +458,7 @@ Response includes token counting headers:
Real-time bidirectional communication:

```toml
rustapi-rs = { version = "0.1.275", features = ["ws"] }
rustapi-rs = { version = "0.1.300", features = ["ws"] }
```

```rust
Expand Down Expand Up @@ -495,7 +495,7 @@ websocat ws://localhost:8080/ws
Server-side HTML rendering with Tera:

```toml
rustapi-rs = { version = "0.1.275", features = ["view"] }
rustapi-rs = { version = "0.1.300", features = ["view"] }
```

Create a template file `templates/index.html`:
Expand Down Expand Up @@ -697,7 +697,7 @@ struct AnyBody { ... }
Check that the `swagger-ui` feature is enabled (it's on by default):

```toml
rustapi-rs = { version = "0.1.275", features = ["swagger-ui"] }
rustapi-rs = { version = "0.1.300", features = ["swagger-ui"] }
```

### CLI Commands Not Working
Expand Down
8 changes: 4 additions & 4 deletions docs/PHILOSOPHY.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ We achieve this through:
```toml
# Your Cargo.toml - simple and stable
[dependencies]
rustapi-rs = "0.1.275"
rustapi-rs = "0.1.300"
```

You never write:
Expand Down Expand Up @@ -111,13 +111,13 @@ validator = "0.16"

```toml
# Just the basics
rustapi-rs = "0.1.275"
rustapi-rs = "0.1.300"

# Kitchen sink
rustapi-rs = { version = "0.1.275", features = ["full"] }
rustapi-rs = { version = "0.1.300", features = ["full"] }

# Pick what you need
rustapi-rs = { version = "0.1.275", features = ["jwt", "cors", "toon"] }
rustapi-rs = { version = "0.1.300", features = ["jwt", "cors", "toon"] }
```

| Feature | What You Get |
Expand Down
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ RustAPI provides a stable, ergonomic public API. Internal dependencies (`hyper`,

```toml
[dependencies]
rustapi-rs = "0.1.275"
rustapi-rs = "0.1.300"
```

```rust
Expand Down
1 change: 1 addition & 0 deletions docs/cookbook/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
- [Real-time Chat](recipes/websockets.md)
- [Production Tuning](recipes/high_performance.md)
- [Resilience Patterns](recipes/resilience.md)
- [Time-Travel Debugging (Replay)](recipes/replay.md)
- [Deployment](recipes/deployment.md)
- [HTTP/3 (QUIC)](recipes/http3_quic.md)
- [Automatic Status Page](recipes/status_page.md)
Expand Down
2 changes: 1 addition & 1 deletion docs/cookbook/src/crates/rustapi_extras.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ The `insight` feature provides powerful real-time traffic analysis and debugging

```toml
[dependencies]
rustapi-extras = { version = "0.1.275", features = ["insight"] }
rustapi-extras = { version = "0.1.300", features = ["insight"] }
```

### Setup
Expand Down
4 changes: 2 additions & 2 deletions docs/cookbook/src/crates/rustapi_jobs.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ Enable the `redis` feature in `Cargo.toml`:

```toml
[dependencies]
rustapi-jobs = { version = "0.1.275", features = ["redis"] }
rustapi-jobs = { version = "0.1.300", features = ["redis"] }
```

```rust
Expand All @@ -104,7 +104,7 @@ Enable the `postgres` feature in `Cargo.toml`. This uses `sqlx`.

```toml
[dependencies]
rustapi-jobs = { version = "0.1.275", features = ["postgres"] }
rustapi-jobs = { version = "0.1.300", features = ["postgres"] }
```

```rust
Expand Down
4 changes: 2 additions & 2 deletions docs/cookbook/src/getting_started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ cargo-rustapi --version
If you prefer not to use the CLI, you can add RustAPI to your `Cargo.toml` manually:

```bash
cargo add rustapi-rs@0.1.275
cargo add rustapi-rs@0.1.300
```

Or add this to your `Cargo.toml`:

```toml
[dependencies]
rustapi-rs = "0.1.275"
rustapi-rs = "0.1.300"
```

## Editor Setup
Expand Down
4 changes: 4 additions & 0 deletions docs/cookbook/src/learning/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,11 @@ Build robust, observable, and secure systems.
| 3 | **Advanced Security** | Add [OAuth2 and Security Headers](../crates/rustapi_extras.md#advanced-security) |
| 4 | **Optimization** | Configure [Caching and Deduplication](../crates/rustapi_extras.md#optimization) |
| 5 | **Background Jobs** | Implement [Reliable Job Queues](../crates/rustapi_jobs.md) |
| 6 | **Debugging** | Set up [Time-Travel Debugging](../recipes/replay.md) |

**Related Cookbook Recipes:**
- [rustapi-extras: The Toolbox](../crates/rustapi_extras.md)
- [Time-Travel Debugging](../recipes/replay.md)
- [rustapi-jobs: The Workhorse](../crates/rustapi_jobs.md)
- [Resilience Patterns](../recipes/resilience.md)

Expand Down Expand Up @@ -188,6 +190,7 @@ Find examples by the RustAPI features they demonstrate:
| TOON (`toon` feature) | `toon-api`, `mcp-server` |
| OAuth2 (`oauth2-client`) | `auth-api` (extended) |
| Circuit Breaker | `microservices` |
| Replay (`replay` feature) | `microservices` (conceptual) |
| OpenTelemetry (`otel`) | `microservices-advanced` |
| OpenAPI/Swagger | All examples |

Expand Down Expand Up @@ -244,6 +247,7 @@ Each example includes:
| [Real-time Chat](../recipes/websockets.md) | `websocket` |
| [Production Tuning](../recipes/high_performance.md) | `microservices-advanced` |
| [Resilience Patterns](../recipes/resilience.md) | `microservices` |
| [Time-Travel Debugging](../recipes/replay.md) | `microservices` |
| [Deployment](../recipes/deployment.md) | `serverless-lambda` |

---
Expand Down
2 changes: 1 addition & 1 deletion docs/cookbook/src/recipes/csrf_protection.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ RustAPI's CSRF protection works by:

```toml
[dependencies]
rustapi-rs = { version = "0.1.275", features = ["csrf"] }
rustapi-rs = { version = "0.1.300", features = ["csrf"] }
```

```rust
Expand Down
2 changes: 1 addition & 1 deletion docs/cookbook/src/recipes/file_uploads.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Handling file uploads efficiently is crucial. RustAPI allows you to stream `Mult

```toml
[dependencies]
rustapi-rs = "0.1.275"
rustapi-rs = "0.1.300"
tokio = { version = "1", features = ["fs", "io-util"] }
uuid = { version = "1", features = ["v4"] }
```
Expand Down
4 changes: 2 additions & 2 deletions docs/cookbook/src/recipes/http3_quic.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ HTTP/3 support is optional and can be enabled via feature flags in `Cargo.toml`.

```toml
[dependencies]
rustapi-rs = { version = "0.1.275", features = ["http3"] }
rustapi-rs = { version = "0.1.300", features = ["http3"] }
# For development with self-signed certificates
rustapi-rs = { version = "0.1.275", features = ["http3", "http3-dev"] }
rustapi-rs = { version = "0.1.300", features = ["http3", "http3-dev"] }
```

## Running an HTTP/3 Server
Expand Down
2 changes: 1 addition & 1 deletion docs/cookbook/src/recipes/jwt_auth.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Enable the `jwt` feature in your `Cargo.toml`:

```toml
[dependencies]
rustapi-rs = { version = "0.1.275", features = ["jwt"] }
rustapi-rs = { version = "0.1.300", features = ["jwt"] }
serde = { version = "1", features = ["derive"] }
```

Expand Down
2 changes: 1 addition & 1 deletion docs/cookbook/src/recipes/replay.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Add the `replay` feature to your `Cargo.toml`:

```toml
[dependencies]
rustapi-rs = { version = "0.1", features = ["replay"] }
rustapi-rs = { version = "0.1.300", features = ["replay"] }
```

Add the `ReplayLayer` middleware to your application:
Expand Down
4 changes: 2 additions & 2 deletions docs/cookbook/src/recipes/resilience.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ Add the resilience features to your `Cargo.toml`. For example:

```toml
[dependencies]
rustapi-rs = { version = "0.1.275", features = ["full"] }
rustapi-rs = { version = "0.1.300", features = ["full"] }
# OR cherry-pick features
# rustapi-extras = { version = "0.1.275", features = ["circuit-breaker", "retry", "timeout"] }
# rustapi-extras = { version = "0.1.300", features = ["circuit-breaker", "retry", "timeout"] }
```

## Circuit Breaker
Expand Down
2 changes: 1 addition & 1 deletion docs/cookbook/src/recipes/websockets.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ WebSockets allow full-duplex communication between the client and server. RustAP

```toml
[dependencies]
rustapi-ws = "0.1.275"
rustapi-ws = "0.1.300"
tokio = { version = "1", features = ["sync"] }
futures = "0.3"
```
Expand Down
2 changes: 1 addition & 1 deletion docs/cookbook/src/troubleshooting.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ utoipa = "4.2" # ❌ Don't add this
**Correct:**
```toml
[dependencies]
rustapi-rs = { version = "0.1.275", features = ["full"] }
rustapi-rs = { version = "0.1.300", features = ["full"] }
# rustapi-openapi is re-exported through rustapi-rs
```

Expand Down
Loading