Releases: Shrpp/ovlt
Release list
v0.4.5-alpha
v0.4.5-alpha
Warning
Alpha build — not production ready. APIs and configuration may change without notice.
Do not use in production until a stable release is announced.
Bug Fixes
- Validation error messages no longer expose internal output — Fields like email and password in the TUI were displaying raw output from the validator crate (e.g. [email]: Is not a valid email address) instead of human-readable messages. All validation errors now return clean, user-facing messages. Resolves #17.
Refactor
- Centralized validation error handling — A shared validation_to_app_error() helper was introduced in error.rs to convert
validator::ValidationErrorsinto structuredAppError::Validationresponses with dynamic messages (email → "Must be a valid email address", length → "Must be between N and M characters", url → "Must be a valid URL", etc.). Applied across all 13 handlers that perform input validation.
Full Changelog: v0.4.4-alpha...v0.4.5-alpha
Full Changelog: v0.4.4-alpha...v0.4.5-alpha
v0.4.4-alpha
v0.4.4-alpha
Warning
Alpha build — not production ready. APIs and configuration may change without notice.
Do not use in production until a stable release is announced.
Bug Fixes
-
Middleware order corrected —
tenant_middlewarenow runs beforerate_limit_middleware. The previous order meant the rate limiter executed without tenant context, preventing correct per-tenant request scoping. The fix also aligns the running stack with what the architecture docs described. -
Duplicate
/openapi.jsonroute removed —swagger_router()was registering the OpenAPI spec endpoint twice, causing a route conflict at startup. The duplicate declaration has been removed;/openapi.jsonand/docs(Swagger UI) continue to work as expected. -
Integration test build fixed —
db::connectcall intests/auth_test.rsupdated to match the new signature introduced in the previous release (max_connections,min_connections). Tests were failing to compile after the configurable pool change.
Documentation
-
Architecture doc updated — Request lifecycle diagram corrected to reflect the fixed middleware order (
tenant→rate-limit). Token model section clarified: access tokens are HS256 (HMAC-SHA256 viaJWT_SECRET), not RS256 — RS256 is used only forid_tokens in the OIDC flow. Parameterized SQL note added to the multi-tenancy section. -
Security doc updated — Token signing algorithm references aligned with the actual implementation (HS256 access tokens, RS256 id_tokens).
-
Roadmap expanded to 8 stages — README now documents Stages 7 and 8 beyond the previously listed 6. "OVTL" typo fixed throughout.
Full Changelog: v0.4.3-alpha...v0.4.4-alpha
Full Changelog: v0.4.3-alpha...v0.4.4-alpha
v0.4.3-alpha
v0.4.3-alpha
Warning
Alpha build — not production ready. APIs and configuration may change without notice.
Do not use in production until a stable release is announced.
Internal
- Code formatted with
cargo fmt— no functional changes.
Full Changelog: v0.4.2-alpha...v0.4.3-alpha
v0.4.2-alpha
v0.4.2-alpha
Warning
Alpha build — not production ready. APIs and configuration may change without notice.
Do not use in production until a stable release is announced.
Features
-
Secure cookies — The
ovlt_sessioncookie now includes theSecureflag automatically whenENVIRONMENT=production, restricting it to HTTPS-only transport. In development the flag is omitted sohttp://localhostkeeps working without any change to the workflow. -
Configurable connection pool — Two new env vars control the PostgreSQL pool size:
DATABASE_MAX_CONNECTIONS(default20) andDATABASE_MIN_CONNECTIONS(default2). Pool options now also explicitly set connect timeout (10s), acquire timeout (10s), idle timeout (10min), and max lifetime (30min). -
Dev mode — Set
OVLT_DEV_MODE=1to skip manual bootstrap configuration during local development. The server auto-generatesOVLT_ADMIN_KEYand pre-fillsbootstrap_admin_email/bootstrap_admin_passwordwith safe defaults so the firstcargo runjust works. Dev mode is blocked ifENVIRONMENT=production— the server exits with an explicit error to prevent accidental exposure. -
First-run credentials box — On the very first startup in development, the server now prints a styled summary to stderr with the generated tenant slug, tenant ID, admin email, password, and admin key, plus a ready-to-run
curlcommand to test the login endpoint immediately.
Security
- Parameterized SQL in tenant transactions —
begin_tenant_txnnow usesStatement::from_sql_and_valueswith a bound parameter for theset_config('app.tenant_id', $1, true)call instead of string interpolation, eliminating any SQL injection surface on tenant ID resolution.
Documentation
configuration.mdupdated with entries forDATABASE_MAX_CONNECTIONS,DATABASE_MIN_CONNECTIONS, andOVLT_DEV_MODE.getting-started.mdupdated to reflect the dev mode workflow and the first-run credential output.api-reference.mdminor corrections.
Full Changelog: v0.4.1-alpha...v0.4.2-alpha
v0.4.1-alpha
v0.4.1-alpha
Warning
Alpha build — not production ready. APIs and configuration may change without notice.
Do not use in production until a stable release is announced.
Bugfixes
- Auto-migrations on startup — The server now calls
Migrator::up()automatically at boot before accepting any traffic. No separate migration step is needed —cargo runordocker compose upis all it takes to bring the schema up to date. Startup fails fast and exits with a clear error if a migration cannot be applied.
Full Changelog: v0.4.0-alpha...v0.4.1-alpha
v0.4.0-alpha
v0.4.0-alpha
Warning
Alpha build — not production ready. APIs and configuration may change without notice.
Do not use in production until a stable release is announced.
Features
-
CLI
serve/connectcommands — The CLI now uses a subcommand interface instead of a flat--urlflag. Runovlt connect <url>once to persist the server URL to disk, thenovlt serveto open the admin TUI. The saved URL is loaded automatically on every subsequentservecall. -
Universal login — New
POST /auth/login/universalendpoint. Instead of requiring the caller to know the tenant upfront, the server searches across all active tenants for a matching user, resolves the correct tenant context, and issues a standard JWT. Designed for multi-tenant setups where the front-end has a single login form. -
TUI UX redesign — Full redesign of the admin TUI layout, navigation, and modal system. Improved status bar with contextual feedback, refactored settings panel, and a reworked login screen.
-
Structured error responses —
AppErrornow serializes every variant as a typed JSON object witherror(machine-readable code),message(human-readable string), and, for validation failures, afieldsmap with per-field messages. All previous plain-text error responses have been replaced.
Documentation
- New
database.mdpage — connection details for local and remote (SSH tunnel) setups, key table reference, and a set of ready-to-run diagnostic SQL queries. docs.jsonupdated to include the new Database Access page under the internals group.
CI / Release
- Cross-platform CLI release workflow updated — builds now correctly target multiple architectures and the binary path resolution is aligned with the workspace layout.
Full Changelog: v0.3.1-alpha...v0.4.0-alpha
v0.3.1-alpha
v0.3.1-alpha
Warning
Alpha build — not production ready. APIs and configuration may change without notice.
Do not use in production until a stable release is announced.
Bugfixes
- Hotfix: Add curl to build dependencies in Dockerfile.
Full Changelog: v0.3.0-alpha...v0.3.1-alpha
Full Changelog: v0.3.0-alpha...v0.3.1-alpha
v0.3.0-alpha
v0.3.0-alpha
Warning
Alpha build — not production ready. APIs and configuration may change without notice.
Do not use in production until a stable release is announced.
Features
- OpenAPI / Swagger UI: Added OpenAPI specification with interactive Swagger UI for API exploration.
Full Changelog: v0.2.0-alpha...v0.3.0-alpha
v0.2.0-alpha
v0.2.0-alpha
Warning
Alpha build — not production ready. APIs and configuration may change without notice.
Do not use in production until a stable release is announced.
Features
-
Per-tenant SMTP — Configure a custom SMTP server per tenant (host, port, TLS, credentials). Used automatically for email
verification on registration and password-reset links. Admin API (GET/PUT /admin/smtp) and TUI Settings → SMTP tab. -
WebAuthn / Passkeys — Full FIDO2/WebAuthn Level 2 support via
webauthn-rs 0.4. Users can register and authenticate with platform
passkeys (Face ID, Touch ID, Windows Hello, hardware keys) through a browser UI. Admin can list and delete passkeys per user in the TUI
(Edit User → Passkeys section) and viaGET/DELETE /admin/users/:id/passkeys. -
Master admin cross-tenant access — The bootstrap user (master tenant) can now access and modify settings for any tenant without a
-
Error 401. Previously, the JWT tenant check in
auth_middlewareblocked cross-tenant requests on all JWT-protected routes (/settings/*).
Bug fixes
auth_middleware: master tenant JWT no longer rejected whenX-Tenant-IDtargets a different tenant.clippy::too_many_argumentssuppressed onput_smtpandemail_service::try_sendto unblock builds with-D warnings.
Documentation
- Full rewrite of
admin-tui.md— layout wireframe, all 8 tabs, Settings sections (General / Security / SMTP), Edit User modal fields. - New pages:
smtp.md,webauthn.md,social-login.md,mfa.md,m2m.md. - All ASCII flow diagrams converted to Mermaid across the entire docs tree.
docs.jsonrestructured with a new Features group.
Migrations
m20240101_000023—tenant_smtp_configtable (per-tenant SMTP, password encrypted at rest).m20240101_000024—webauthn_credentialstable (credential ID, public key JSON, name, sign count, last used).
Full Changelog: v0.1.2-alpha...v0.2.0-alpha
v0.1.2-alpha
v0.1.2-alpha
First public alpha of OVLT — a self-hosted, zero-knowledge OIDC authorization server.
Warning
Alpha build — not production ready. APIs and configuration may change without notice.
Do not use in production until a stable release is announced.
Bug fixes
- Fixed resolve CLI binary path in release workflow — use workspace target/ root instead of ovlt-cli/target/
Full Changelog: v0.1.1-alpha...v0.1.2-alpha