Changelog
All notable changes to Rapina.
v0.13.1
Fix- Column attributes on composite primary keys: respect
#[column = "..."]andcolumn_typeon composite primary key fields inschema!macro
Contributors: @arferreira, @ShiraiEd, @Ismaellima4, @Isvane, @CapThunder19
v0.13.0
FeatureFix- Database import relationships:
rapina import databaseturns foreign keys intoBelongsToandHasManyrelationships inschema!blocks - Handler descriptions in discovery output: route macros carry explicit descriptions into
llms.txtand OpenAPI output - OpenTelemetry OTLP tracing exporter via
with_telemetrybehindotelandotel-tlsfeatures - Redis TLS certificate support with
CacheConfig::redis_with_tlsandRedisTlsConfig rapina doctorcheck for/__rapina/llms.txtreachability- 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
ureqinstead ofcurl - Metrics route labels preserving route parameter names in Prometheus metrics
- Workspace-inherited Rapina features support in
AGENTS.mddrift detection - Validation error serialization logging for
Validated<Json<T>>andValidated<Form<T>> - Build-time duplicate OpenAPI operation ID validation
- Fast-fail JWT audience validation when
validate_aud = true with_tracingnow installs the tracing subscriber when the server starts (inlisten) 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
v0.12.0
FeatureFix- Cursor-based pagination with
CursorPaginate<V>extractor andCursorPaginated<T>response - First-class streaming response types and Server-Sent Events (SSE) support
llms.txtendpoint and CLI export viarapina llmsHeader<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)andDATABASE_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, usei32/i64, orDecimalfor the full unsigned range
Contributors: @richasdev, @arferreira, @ShiraiEd, @juv, @Ismaellima4, @mvanhorn, @josemoura212, @CapThunder19, @chiucchi, @apetrovic6, @xingzihai
v0.11.0
Feature- Tower compatibility layer behind
towerfeature withTowerLayerMiddleware,RapinaService, and.layer()builder NextServiceClone support for Tower layers requiring Clone on the inner service
Contributors: @lucaserm, @ShiraiEd, @richasdev, @arferreira, @sarpedondev, @juv, @Judel777, @Ismaellima4, @warwickmei, @chiucchi, @Spartan09
v0.10.0
Feature- Serde-based
Path<T>extraction supporting primitives, tuples, and structs - Database seeding commands:
rapina seed load,dump, andgenerate - Snapshot testing with
assert_snapshotand 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
--forceflag forrapina import database- UUID primary key support in
schema!macro State<T>wrapped inArc<T>removing Clone bound- Compression gated behind
compressionfeature flag - Macro preserves
muton 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 useFromRequestParts put_namedanddelete_namedconvenience 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
v0.9.0
FeatureDocsFix- WebSocket support with raw message handling behind
websocketfeature 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 crudand--template auth rapina import openapicommand 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_PORTenvironment variable
Contributors: @Ismaellima4, @ShiraiEd, @uemuradevexe, @juv, @LevelUpExtreme — thank you all for making this release happen.
v0.8.0
FeatureFix- Built-in pagination with
Paginateextractor - Response caching layer with in-memory and Redis backends
Derefimplementation on all extractor newtypes- Fixed static routes shadowed by parameterized routes with
discover() - Fixed
schema!macroJsonSchemaforUuidandDecimaltypes NaiveDateTimeand composite primary key support inschema!macro
Contributors: @arferreira, @Ismaellima4
v0.7.0
FeatureFixDocsrapina 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/eprintlnwithtracingacross server code rapina doctorandrapina routesnow accept--portand--hostparams- AI assistant config files (AGENT.md, .claude/, .cursor/) in
rapina newtemplate - Catppuccin color palette extracted into shared CLI module
- Unit tests for OpenAPI and introspection endpoint handlers
- Fixed Cargo.toml parser error on
rapina devandrapina test - Middleware documentation page
Contributors: @arferreira, @ShiraiEd, @Ismaellima4, @uemuradevexe, @KelvinDiasMoreira, @LevelUpExtreme
v0.6.0
Feature- Route auto-discovery with
.discover()— annotate handlers, call one method, routes are registered at startup viainventory - Prometheus metrics endpoint
- Upgraded
tomlto 1.0 (TOML spec 1.1 support) - Upgraded
jsonwebtokento 10.3.0
Contributors: @arferreira, @Jamersom-silva, @lucaserm, @uemuradevexe, @sofia-araujo
v0.5.0
Featurerapina add resource— scaffolds complete CRUD resource with handlers, DTOs, error types,schema!entity, and migrations from a single commandrapina migrate newfor standalone database migrations- 12 supported field types with aliases for resource scaffolding
- TraceIdMiddleware unit and integration tests
Contributors: @arferreira, @yan-pi, @ShiraiEd
v0.4.0
Feature- Database integration with SeaORM and
schema!macro for declarative entity definition with automatic relationship inference rapina testcommand with--coverageand--watchmodes- 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
v0.2.1
Fix- Fixed infinite restart loop when server crashes in
rapina dev - Fixed
rapina newscaffolded 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
v0.2.0
Feature- OpenAPI as a living contract — automatic spec generation,
rapina openapi export,check,difffor 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)]andfrom_env() rapina doctorintrospection for catching misconfigurations
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
schemarsfor easyJsonSchemaderive
v0.1.0-alpha.3
Fix- Fixed missing
hyperdependency in generated template - Changed "Next steps" from
cargo runtorapina dev - Generated template now returns JSON responses with proper structs
- Catppuccin Mocha color palette for CLI output
- Tracing and request logging in generated template
v0.1.0-alpha.2
Feature- Rapina CLI with
new,dev,routes,doctorcommands - Built-in
TestClientfor integration testing - Route introspection endpoint at
/__rapina/routes - Middleware system with timeout, body limit, and trace ID
Query,Headers, andFormextractorsValidated<T>extractor for request validation- Structured logging with tracing
- State extractors for dependency injection
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