All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.7.0-alpha.3 - 2025-01-22
- [breaking] Enable fetching concrete service from registry via downcast (#580)
- [breaking] Rename/move the
health_checkmod tohealth::check(#578) - [breaking] Remove the
App#graceful_shutdownmethod (#577) - Add
ExampleHealthCheckto thefullexample (#576)
0.7.0-alpha.2 - 2025-01-18
- Map
Error::AuthtoStatusCode::UNAUTHORIZEDHTTP response (#571) - [breaking] Return
RedisEnqueueandRedisFetchredis pool "new-types" (#568)
- Remove todos (#570)
- [breaking] Remove
From<Environment>impl for&'static str(#569) - Declare all dependencies in workspace (#567)
- [breaking] Remove deprecated items (#566)
0.7.0-alpha.1 - 2025-01-17
- [breaking] Allow registering
Workerinstead of requiringAppWorker(#564) - Increase the default cache-control max-age to 1 week (#559)
- Use
Router#fallback_serviceinNormalizePathInitializer(#562)
- Update
configto 0.15.6 (#560)
0.7.0-alpha - 2025-01-14
- Support sidekiq balance strategy and dedicated queues (#543)
- [breaking] Propagate
Validatecalls to all app config fields (#557)
- [breaking] Update bb8 to v0.9 and sidekiq-rs to 0.13.1 (#555)
- Add some details to config book page (#553)
- Upgrade various crates that are used internally (#551)
- [breaking] Upgrade Axum to 0.8 and Aide to 0.14 (#548)
- Enable nightly coverage feature (#545)
0.6.24 - 2024-12-28
- Add cache-related middlewares (#541)
- Add timestamps for when email change is confirmed (#537)
- Add User column to store the user's new email before it's confirmed (#536)
0.6.23 - 2024-12-24
- Enable redacting timestamps from
instasnapshots (#532) - Add
AppWorker#enqueue_delayed(#531)
0.6.22 - 2024-12-07
- Add
AppContextWeakto prevent reference cycles (#529)
0.6.21 - 2024-12-01
- Update OTEL patch version and remove a deprecated fn call (#527)
- Update Loco comparisons and add some links to other sections (#522)
- Add mailpit to SMTP dev server examples (#521)
- (deps) bump codecov/codecov-action from 4 to 5 (#517)
- Upgrade otel/tracing dependencies (#516)
0.6.20 - 2024-11-17
- Enable converting
roadster::Errortosidekiq::Error(#514)
- Use
MockProvideRef<DatabaseConnection>in an example test (#513)
0.6.19 - 2024-11-16
ProvideandProvideReftraits to provideAppContextobjects (#510)
0.6.18 - 2024-11-15
- Add support for redacting postgres/redis/smtp URIs (#507)
- Add
smtp4devto example local SMTP servers (#506)
0.6.17 - 2024-11-12
- Add support for TestContainers (pgsql + redis modules) (#503)
0.6.16 - 2024-10-28
- Add config to specify the domain where the service is hosted (#490)
0.6.15 - 2024-10-22
- Case-insensitive username and email fields (#480)
0.6.14 - 2024-10-21
- Add
AnyMiddlewareto minimize boilerplate for Axum middleware (#472) - Add
AnyIntializerto minimize boilerplate for Axum Router initializers (#475)
- Add leptos-0.7 example (#465)
0.6.13 - 2024-10-19
- Only attempt to load yaml files when
config-yamlis enabled (#451)
- Use
FromReffromaxum-coreinstead ofaxum(#450)
0.6.12 - 2024-10-17
- Enable writing config files in YAML (#446)
0.6.11 - 2024-10-17
- Fix trace message for health checks on startup (#443)
- Add loco comparison (#444)
0.6.10 - 2024-10-16
- Enable consumers to provide custom Environment values (#439)
0.6.9 - 2024-10-15
- Add
AppContext::smtpmethod to alias toAppContext::mailer(#409) - Create documentation website using mdbook. The website can be found at roadster.dev.
0.6.8 - 2024-10-11
- Allow configuring which req/res body content types to log (#407)
0.6.7 - 2024-10-11
The main feature included in this release is support for sending emails via Sendgrid's Mail Send API. See the below items for more details.
- Set sandbox mode on Sendgrid message based on config (#403)
- Add Sendgrid client to
AppContext(#402) - Add support to config for email via Sendgrid (
email-sendgridfeature) (#401)
0.6.6 - 2024-10-10
- Allow configuring the interval at which metrics are exported (#399)
0.6.5 - 2024-10-09
The main feature included in this release is support for sending emails via SMTP. See the below items for more details.
- Add
SmtpHealthCheck(#396) - Allow specifying the smtp port via config (#395)
- Add smtp client to
AppContext(#391) - Add support to config for email via SMTP (
email-smtpfeature) (#388)
- Fix config value used for timeout of health check in api and cli (#397)
- Add example of sending email using lettre smtp client (#394)
- Add doc comment explaining how NormalizePathLayer works (#393)
0.6.4 - 2024-10-05
0.6.3 - 2024-09-15
- Add logs for successful health checks (#371)
0.6.2 - 2024-08-30
0.6.1 - 2024-08-28
- Allow running CLI commands without requiring DB/Redis connections (#353)
- Update
typed-builderand several examples' dependencies (#352)
0.6.0 - 2024-08-25
- Add a public method to decode a JWT from a string (#348)
- Mark refresh token headers as sensitive (#347)
- Make the
Usersea-orm migration enum public (#346) - Allow splitting config files into many files in env directories (#344)
- [breaking] App methods take
self(#337) - Remove cookie extraction for
Jwt, but allow it inJwtCsrf(#332) - Allow custom sub-claims in provided
Claimstypes (#331) - Allow jwt from cookie, but only if it's explicitly requested (#329)
- [breaking] Don't expect a "Bearer" token in the auth token cookie (#340)
- Update leptos example to use site-addr and env from roadster config (#341)
- sea-orm workspace dep and upgrade to
1.0.0(#336) - [breaking] Update tower to
0.5.0(#334)
0.5.19 - 2024-08-12
- Redact bearer tokens in insta snapshots (#325)
- Do not simply use bearer token from cookie for auth (#326)
- Derive
Clonein JWT claim types (#323) - Implement
Fromfor variousSubjectenum variants (#323) - Use
leptos_routesin leptos example instead ofleptos_routes_with_context(#322)
- (deps) Bump EmbarkStudios/cargo-deny-action from 1 to 2 (#319)
0.5.18 - 2024-08-05
- Update
rstestdependency (#318)
0.5.17 - 2024-08-05
- Extract jwt as a bearer token from cookies (#316)
0.5.16 - 2024-08-04
- Extract JWT from cookie (#314)
- Derive
OperationIoforJwtstruct (#311) - Change user.last_sign_in_at column to non-null with default (#312)
- Add pre-commit hook to check formatting (#313)
0.5.15 - 2024-08-01
- Allow configuring the max len for the
ReqResLoggingMiddleware(#309)
0.5.14 - 2024-08-01
- Enable ReqResLogging middleware by default, but disable in prod (#307)
0.5.13 - 2024-07-31
- Add middleware to log the request/response payloads (#304)
- Log errors at debug level in
IntoResponseimpl (#303)
0.5.12 - 2024-07-29
- PasswordUpdatedAt column + auto-update with a fn and trigger (#301)
0.5.11 - 2024-07-26
- Migration to enable the uuid-ossp Postgres extension (#297)
- Add non-pk versions of uuid schema helper methods (#296)
0.5.10 - 2024-07-25
- Use IDENTITY column for int primary keys instead of BIGSERIAL (#293)
- Add "if exists" to user's drop_table migration statement (#292)
- Add tests for schema and check helper methods (#289)
0.5.9 - 2024-07-24
- Disallow
unwrapandexpectexcept in tests (#286)
0.5.8 - 2024-07-22
- Remove the
updatejustfile command (#282) - Use the main project README.md as the library's top-level docs (#281)
0.5.7 - 2024-07-22
- Update dependencies (#279)
0.5.6 - 2024-07-22
- Add
TestCaseutility for configuringinstasettings (#277)
0.5.5 - 2024-07-08
- Allow configuring the tracing log output format (#275)
0.5.4 - 2024-07-07
- Add method to prepare the app separately from running it (#270)
- Correctly add the
ApiRouterto the HTTP service'sApiRouter(#273)
- Fixes for default openapi docs (#271)
0.5.3 - 2024-07-04
- Update the
_healthHTTP API docs (#267)
0.5.2 - 2024-07-02
- Allow configuring the max duration of health checks (#264)
0.5.1 - 2024-07-02
- Place health check results under
resourcesin response (#261)
- Fix typos in README (#260)
0.5.0 - 2024-07-01
- [breaking] Remove interior mutability of
HealthCheckRegistry(#258)
0.4.0 - 2024-07-01
- [breaking] Implement health check API using
HealthChecktrait (#255) - [breaking] Switch to Axum's
FromReffor custom state (#250)
- [breaking] Remove deprecated items in preparation of 0.4 release (#253)
- Add example for integrating with Leptos (#252)
- Use small number of sidekiq workers for
fullexample in dev/test (#251)
0.3.5 - 2024-06-24
- Health check config is missing a
customfield (#246)
- Check PR title for compliance with conventional commits (#247)
0.3.4 - 2024-06-23
- Add health checks to run before starting services (#242)
- Add
Fromimpl to convert db config to ConnectOptions (#240) - Move sidekiq "stale cleanup" to new
before_runservice method (#239)
- Add dependabot config to update github actions weekly (#243)
- Update READMEs to use
__as the env var separator instead of. - Update list of UI frameworks in readme
- Set up
cargo deny
0.3.3 - 2024-06-21
- Invalid env var separator on bash
- Add inclusive language check to CI
- Fix clippy error
- Remove non-inclusive language
0.3.2 - 2024-06-14
- Run Feature Powerset checks + perform a release twice a week
- Add goals and future plans to readme + some getting started steps
- Add github action to verify commits follow 'Conventional Commits' format
0.3.1 - 2024-06-11
- Implement the health check API as a protocol agnostic
coremodule - Minor changes to the
FunctionServicedoc example
0.3.0 - 2024-06-10
- Fix minimal version of serde
- Add #[non_exhaustive] to public enums
- Add Add #[non_exhaustive] to public structs
- Enable grpc by default in the
fullexample - Add support for tower's CORS middleware
- Add AppMetadata struct + App::metadata method and add version to otel
- Run doctests as part of test and test-watch just commands
- Update readme to include grpc and generic function service
- Update FunctionService doctest to only run with default features
- Add a generic app service to run an async function as a service
- Move semver checks to a separate workflow
- Use depth 3 in feature powerset
- Install protoc in feature powerset workflow
- Remove the old deprecated cli mod
- Add basic grpc example
- Add basic support for serving a gRPC service
- Update rstest
0.2.6 - 2024-06-03
- Add builder method to add middleware for the sidekiq processor
- Declare minimal version of dependencies that's actually needed
- Add
cargo-minimal-versionsfor direct dependencies
0.2.5 - 2024-06-03
- Only test the
AppConfig#testmethod when all (most) features are enabled - Hard-code the number of sidekiq workers to avoid snapshot failures
- Ignore a clippy error
- Ignore coverage for the
AppConfig#testmethod - Provide config defaults via config files
- Move database and tracing mods to directories
- Upgrade dependencies
0.2.4 - 2024-05-31
- Upgrade dependencies
0.2.3 - 2024-05-27
- Remove
httpfeature gate forapimod - Move cli mod to be a child of the api mod
- Add semver checks to CI
- Revert "Use stable rust for coverage"
0.2.2 - 2024-05-26
- Add latest version of
timeto workaround build issue on nightly
0.2.1 - 2024-05-26
- Add missing
needsfield topowerset_clippyworkflow step - Run separate jobs for each feature powerset check
0.2.0 - 2024-05-26
- Add custom error type using
thiserror - Fix incorrect feature flag used on import statement
- Allow partial overrides of all configs
- Remove mock
AppContextand use a concrete version in tests instead - Add a small description for the
validate-codecov-configjust cmd - Use automock to mock traits instead of the mock! macro
- Use github discussions instead of discord (for now at least)
- Add tests for controller config methods
- Fix exiting the app when a cli command is handled
- Allow running the release_pr workflow manually
- Add code owners to automatically request reviews on PRs
- Add documentation for the TestCase utility class
- Use stable rust for coverage
- Add tests for sidekiq builder and roadster cli
- Run release pr workflow with manual dispatch
- Separate different parts of the app::start method into respective mods
- Add tests for the
DefaultRoutesconfig validator - Fix
DefaultRoutesvalidator when open-api feature is not enabled - Add validation of the AppConfig
- Add deps.rs badge to readme
- Group
httpandopen-apifeatures in the feature_powerset workflow - Update the codecov PR comment config
- Add tests for
remove_stale_periodic_jobs - Update dependencies that can be updated
- Add a feature flag to entirely disable the http service
- Add comments to justfile
- Update dependencies and add
justcommand to update deps - Add MSRV tag to readme
- Add MSRV and add CI step to validate
- Add some tests for
SidekiqWorkerServiceBuilder - Add justfile
- Add tests for
SidekiqWorkerService::enabled - Fix clippy warning
- Allow unknown cfg in coverage workflow
- Disable coverage for tests
- Enable running coverage using the nightly toolchain
- Add tests for the Middleware::priority methods for each middleware
- Add tests for the Middleware::enabled method for each middleware
- Add tests for the default_middleware and default_initializers methods
- Add tests for middleware/initializer registration in HttpServiceBuilder
- Don’t use coverage(off) for now because it’s unstable
- Use coverage instead of coverage_nightly
- Apply coverage(off) directly to the desired method
- Use coverage(off) only with cfg_attr(coverage)
- Disable coverage for service mod test impls
- Add small test for service builder
- Remove async-std from dev deps
- Remove Tokio from non-async test
- Use Tokio for rstest tests
- Run
cargo upgradeto update dependencies - Update the code coverage comment format
- Set up mocking using
mockallcrate - Do some test cleanup
- Add test for route that isn't documented
- Add test for the HttpService::list_routes method/cli command
- Rename the custom context in the minimal example
- Remove unnecessary
From...impl forAppContext - Pass config and context by reference in all public APIs
- Custom state as member of
AppContext - Add methods to AppContext instead of direct field access
- Fix codecov config
- Add tests to serde_util
- Add codecov config file
- Update instructions to run CI locally
- Add coverage badge to the readme
- Add workflow to generate code coverage stats
- Disallow registering things multiple times
- Create FUNDING.yml
- Update feature_powerset.yml schedule
- Rearrange and enhance the status badges in the readme
- Add a Discord badge
- Have docs.rs pass --all-features to ensure all features have docs built
0.1.1 - 2024-05-05
- Only run the release workflow on main
- Install missing nextest dependency for feature powerset
- Add crates.io and docs.rs badges
- Run the release workflow after the
Feature Powersetworkflow succeeds
0.1.0 - 2024-05-05
- Set
publish = falsein the minimal example Cargo.toml - Set
publish = truein the Cargo.toml - Remove fetch depth of 0 from CI and feature powerset
- Automate releases with release-plz
- Use fetch depth of 0 in CI
- Remove
lazy_staticdependency - Use the nextest test runner
- Upgrade dependencies in
Cargo.tomls - Fix the graceful shutdown of the sidekiq service
- Timeout the ping redis method so the health route can return without fully timing out
- Implement the sidekiq processor task as an
AppService - Move middleware/initializers to service/http module
- Add
ServiceRegistryand restructure configs - Add
AppServicetrait and use it to implement the HTTP service - Add example worker and api to the
minimalexample - Don't run Processor depending on configs
- Use a separate redis connection pool for enqueuing vs fetching jobs
- Remove
url::Urlimport fromapp_config.rsforsidekiqfeature - Allow configuring the number of sidekiq worker tasks
- Remove stale periodic jobs
- Enable registering periodic workers
- Check disk usage between feature powerset workflow steps
- Add defaults for
AppWorkerConfig's builder - Add RoadsterWorker to provide common behaviors for workers
- Add instructions for RedisInsight to the readme
- Add standalone sidekiq dashboard instructions to readme
- Clean between powerset build stages
- Skip and group features to reduce powerset size
- Use cfg feature flag instead of allowing unused import
- Add feature flag to enable exporting traces/metrics using otel
- Add to list of features in readme
- Add CLI command to print the app config
- Add CLI commands to run DB migrations
- Add CLI command to generate an openapi schema
- Allow private intra doc links for rustdoc
- Add CLI command to list API routes
- Set up roadster CLI and custom app CLI
- Fix the cron used for
feature_powerset.ymlworkflow - Remove a
cfgthat caused a build error - Add doc comment for
Initializer::priority - Allow using custom App::State in Initializer and Middleware traits
- Remove debugging outputs
- Fix step names used to define outputs
- Add missing runs-on field
- Add debugging log to workflow
- Add log of label name
- Use uniq job output names
- Fix error in feature_powerset.yml
- Allow triggering the feature powerset check by adding a lable to a pr
- Add missing cfg for the
open-apifeature - Fix a powerset build error
- Add
Swatinem/rust-cache@v2to cache rust builds - Update checkout action version
- Add
workflow_dispatchevent to feature_powerset.yml - Add github workflow to run checks against the powerset of features
- Remove "all features" job b/c it's a duplicate of the cargo hack job
- Use
cargo hack --each-featureinstead of--feature-powerset - Add openid jwt claims
- Minor changes
- Fix build break with all features disabled
- Enable reporting traces/metrics via an otlp exporter
- Use snake case in github ci job
- Add RequestDecompressionMiddleware
- Add more crate-level documentation
- Create LICENSE
- Move workspace declaration to the bottom of the Cargo.toml
- Fix a
rustdoc::allwarning - Remove
--no-dev-depswhere it can't be used in github ci workflow - Use
cargo hackto test feature powerset - Update cargo checks
- Fix cargo fmt command
- Create workspace that includes the examples
- Set working dir for examples job
- Add a minimal example
- Don't run clippy against deps in ci
- Add CI badge to the readme
- Update checkout action to v4
- Add workflow stage to run checks for all features
- Add missing checkout in workflow
- Use custom husky hooks
- Add github workflow to run checks with all feature combinations
- Add feature flag for generating openapi schema using
aide - Add feature flag for the SQL db
- Add feature flag for sidekiq
- Add RequestBodyLimitMiddleware
- Add TimeoutLayer middleware
- Add instructions for generating an html coverage report
- Use
JoinSetinstead ofTaskTracker - Make the Jwt claims type generic and use
Claimsas the default - Add notes on background job queue options
- Add JWT extractor with basic Claims impl for default/recommended claims
- Add logs for sidekiq queues
- Add ping latencies to health check response
- Allow configuring the max number of redis connections
- Don't bail early in graceful shutdown if an error occurred.
- Minor string change
- Remove
instrumentfromcancel_on_error - Remove
logfrom dependencies - Improve graceful shutdown logic
- Always run shutdown logic and don't require consumer to run it
- Add token cancelation drop guard, and add doc comment recommending to use the default shutdown signal
- Add logs for installing middleware
- Add compression middleware
- Remove stray log
- Add catch panic middleware
- Add graceful shutdown signal
- Add rusty-sidekiq for running async jobs
- Add
_healthroute to check the health of the service - Enable migrations
- Add SeaORM integration
- Enable custom configs for initializers
- Add Initializer with various hooks, and add NormalizePathInitializer
- Minor change to concat middleware vecs inline
- Don't require consumers to include default middleware
- Reorder default middleware -- order determined by config now
- Enable providing configs for custom middleware
- Enable configuring middleware
- Add environment to the AppConfig
- Add OpenAPI docs + spec routes
- Add tracing middleware
- Add request id middleware
- Allow middleware installers to return a result
- Enable adding middleware and provide defaults
- Require custom state to be convertable to AppContext
- Add default _ping route
- Enable defining routes using Axum or Aide routers
- Use From trait instead of a custom trait
- Re-order dependencies in Cargo.toml
- Add App trait and allow providing a custom state
- Add app entrypoint
- Init tracing
- Add basic configuration support
- Remove .idea directory
- Remove Cargo.lock from git
- Move cargo-husky to dev-deps
- Prevent publishing for now
- Add cargo-husky
- Init and add empty rust lib project