ESC
Type to search...

Changelog

All notable changes to Rapina.

August 4, 2026

v0.13.1

Fix
  • Column attributes on composite primary keys: respect #[column = "..."] and column_type on composite primary key fields in schema! macro

Contributors: @arferreira, @ShiraiEd, @Ismaellima4, @Isvane, @CapThunder19

June 25, 2026

v0.13.0

FeatureFix
  • Database import relationships: rapina import database turns foreign keys into BelongsTo and HasMany relationships in schema! blocks
  • Handler descriptions in discovery output: route macros carry explicit descriptions into llms.txt and OpenAPI output
  • OpenTelemetry OTLP tracing exporter via with_telemetry behind otel and otel-tls features
  • Redis TLS certificate support with CacheConfig::redis_with_tls and RedisTlsConfig
  • rapina doctor check for /__rapina/llms.txt reachability
  • Multi-database background jobs: persistence support for MySQL and SQLite alongside PostgreSQL
  • rapina import database --diff: schema drift detection against live database
  • Native CLI HTTP client using internal ureq instead of curl
  • Metrics route labels preserving route parameter names in Prometheus metrics
  • Workspace-inherited Rapina features support in AGENTS.md drift detection
  • Validation error serialization logging for Validated<Json<T>> and Validated<Form<T>>
  • Build-time duplicate OpenAPI operation ID validation
  • Fast-fail JWT audience validation when validate_aud = true
  • with_tracing now installs the tracing subscriber when the server starts (in listen) rather than at call time, so it composes with the OTLP export layer on a single global subscriber
  • AGENTS.md and bundled agent docs now mention the llms.txt endpoint

Contributors: @arferreira, @richasdev, @ShiraiEd, @Ismaellima4, @Kkkakania, @RodrigoSikoski, @mvanhorn, @haider855, @GHX5T-SOL

May 15, 2026

v0.12.0

FeatureFix
  • Cursor-based pagination with CursorPaginate<V> extractor and CursorPaginated<T> response
  • First-class streaming response types and Server-Sent Events (SSE) support
  • llms.txt endpoint and CLI export via rapina llms
  • Header<T> strongly-typed header extractor with structured 400 errors
  • Custom Prometheus collectors with MetricsBuilder::add_metric()
  • Opt-in auto-migrations via DatabaseConfig::auto_migrate(true) and DATABASE_AUTO_MIGRATE=true
  • Bundled AI docs with AGENTS.md, CLAUDE.md, and .rapina-docs/
  • Unified type system across codegen, schema, and OpenAPI layers
  • Cache invalidation for all ancestor collection prefixes on mutation
  • Fixed schema! macro rejecting unsigned integer types with clear compile-time error
  • schema! now rejects unsigned integer types (u8–u64) at compile time instead of silently mapping them to signed columns, use i32/i64, or Decimal for the full unsigned range

Contributors: @richasdev, @arferreira, @ShiraiEd, @juv, @Ismaellima4, @mvanhorn, @josemoura212, @CapThunder19, @chiucchi, @apetrovic6, @xingzihai

April 1, 2026

v0.11.0

Feature
  • Tower compatibility layer behind tower feature with TowerLayerMiddleware, RapinaService, and .layer() builder
  • NextService Clone support for Tower layers requiring Clone on the inner service

Contributors: @lucaserm, @ShiraiEd, @richasdev, @arferreira, @sarpedondev, @juv, @Judel777, @Ismaellima4, @warwickmei, @chiucchi, @Spartan09

March 16, 2026

v0.10.0

Feature
  • Serde-based Path<T> extraction supporting primitives, tuples, and structs
  • Database seeding commands: rapina seed load, dump, and generate
  • Snapshot testing with assert_snapshot and automatic redaction
  • RFC 7807 Problem Details standardized error responses
  • Three-layer router architecture with static map, hot cache, and frozen radix trie
  • Router Criterion performance benchmarks
  • Configurable request logging with header redaction
  • --force flag for rapina import database
  • UUID primary key support in schema! macro
  • State<T> wrapped in Arc<T> removing Clone bound
  • Compression gated behind compression feature flag
  • Macro preserves mut on handler arguments
  • URL shortener full example with database, migrations, and tests
  • body-consuming extractors (Json, Form, Validated) must now be the last handler parameter enforced by the compiler; all other arguments use FromRequestParts
  • put_named and delete_named convenience methods on Router
  • PathParams backed by SmallVec, no heap allocation up to 4 params

Contributors: @lucaserm, @arferreira, @richasdev, @ShiraiEd, @juv, @Ismaellima4, @yan-pi, @tjweir, @chiucchi

March 6, 2026

v0.9.0

FeatureDocsFix
  • WebSocket support with raw message handling behind websocket feature flag
  • Relay system for real-time push over WebSocket with pub/sub, channel handlers, and presence tracking
  • Endpoint groups in route macros: #[get("/users", group = "/api")] for auto-discovery
  • Starter templates: rapina new --template crud and --template auth
  • rapina import openapi command for importing external API specs
  • HTTP upgrade support via auto::Builder
  • Windows-compatible graceful shutdown
  • Typed content-type constants replacing hardcoded strings
  • Interactive tutorial with 6 chapters covering the core framework
  • Redesigned landing page and getting started documentation
  • WebSocket/Relay, validation, testing, OpenAPI, migrations, and DI documentation pages
  • Updated all docs to use Deref pattern for extractors
  • Fixed syntax highlighting on documentation site
  • OpenAPI check now respects SERVER_PORT environment variable

Contributors: @Ismaellima4, @ShiraiEd, @uemuradevexe, @juv, @LevelUpExtreme — thank you all for making this release happen.

March 1, 2026

v0.8.0

FeatureFix
  • Built-in pagination with Paginate extractor
  • Response caching layer with in-memory and Redis backends
  • Deref implementation on all extractor newtypes
  • Fixed static routes shadowed by parameterized routes with discover()
  • Fixed schema! macro JsonSchema for Uuid and Decimal types
  • NaiveDateTime and composite primary key support in schema! macro

Contributors: @arferreira, @Ismaellima4

February 27, 2026

v0.7.0

FeatureFixDocs
  • rapina import database — reverse-engineer a live PostgreSQL, MySQL, or SQLite database into full feature modules with handlers, DTOs, entities, and migrations
  • Graceful shutdown with proper SIGTERM/SIGINT handling
  • Replaced println/eprintln with tracing across server code
  • rapina doctor and rapina routes now accept --port and --host params
  • AI assistant config files (AGENT.md, .claude/, .cursor/) in rapina new template
  • Catppuccin color palette extracted into shared CLI module
  • Unit tests for OpenAPI and introspection endpoint handlers
  • Fixed Cargo.toml parser error on rapina dev and rapina test
  • Middleware documentation page

Contributors: @arferreira, @ShiraiEd, @Ismaellima4, @uemuradevexe, @KelvinDiasMoreira, @LevelUpExtreme

February 22, 2026

v0.6.0

Feature
  • Route auto-discovery with .discover() — annotate handlers, call one method, routes are registered at startup via inventory
  • Prometheus metrics endpoint
  • Upgraded toml to 1.0 (TOML spec 1.1 support)
  • Upgraded jsonwebtoken to 10.3.0

Contributors: @arferreira, @Jamersom-silva, @lucaserm, @uemuradevexe, @sofia-araujo

February 18, 2026

v0.5.0

Feature
  • rapina add resource — scaffolds complete CRUD resource with handlers, DTOs, error types, schema! entity, and migrations from a single command
  • rapina migrate new for standalone database migrations
  • 12 supported field types with aliases for resource scaffolding
  • TraceIdMiddleware unit and integration tests

Contributors: @arferreira, @yan-pi, @ShiraiEd

February 12, 2026

v0.4.0

Feature
  • Database integration with SeaORM and schema! macro for declarative entity definition with automatic relationship inference
  • rapina test command with --coverage and --watch modes
  • Rate limiting middleware with token bucket algorithm
  • Response compression (gzip/brotli)
  • CORS middleware with configurable origins, methods, and headers
  • Cookie extractor for typed cookie access in handlers
  • Modular API grouping with Router::group()

Contributors: @arferreira, @juv, @ShiraiEd, @uemuradevexe

January 29, 2026

v0.2.1

Fix
  • Fixed infinite restart loop when server crashes in rapina dev
  • Fixed rapina new scaffolded projects failing to build
  • Made OpenAPI endpoint optional in rapina doctor
  • Extracted x-trace-id header and content-type strings into constants

Contributors: @arferreira, @uemuradevexe, @juv

January 25, 2026

v0.2.0

Feature
  • OpenAPI as a living contract — automatic spec generation, rapina openapi export, check, diff for breaking change detection
  • Domain errors as first-class citizens with typed error handling
  • JWT authentication with protected-by-default routes
  • Type-safe configuration with #[derive(Config)] and from_env()
  • rapina doctor introspection for catching misconfigurations
January 24, 2026

v0.1.0-alpha.4

Feature
  • Automatic OpenAPI 3.0 spec generation with response schemas
  • CLI tools: rapina openapi export, check, diff
  • Breaking change detection for API contracts
  • Re-exported schemars for easy JsonSchema derive
January 22, 2026

v0.1.0-alpha.3

Fix
  • Fixed missing hyper dependency in generated template
  • Changed "Next steps" from cargo run to rapina dev
  • Generated template now returns JSON responses with proper structs
  • Catppuccin Mocha color palette for CLI output
  • Tracing and request logging in generated template
January 22, 2026

v0.1.0-alpha.2

Feature
  • Rapina CLI with new, dev, routes, doctor commands
  • Built-in TestClient for integration testing
  • Route introspection endpoint at /__rapina/routes
  • Middleware system with timeout, body limit, and trace ID
  • Query, Headers, and Form extractors
  • Validated<T> extractor for request validation
  • Structured logging with tracing
  • State extractors for dependency injection
January 21, 2026

v0.1.0-alpha.1

Initial Release
  • Core routing with typed extractors
  • JSON request/response handling
  • Path and query parameter extraction
  • Basic error handling with typed responses