Skip to main content
TrailBase follows semantic versioning. This changelog documents all notable changes to the project.
For the complete changelog, see CHANGELOG.md in the repository.

Latest Releases

v0.24.3

  • Add a Yandex OAuth provider
  • Expose RNG to Rust WASM guests
  • Update Rust WASM guest integration to avoid repeated calls to Guest::Init() and avoid repeated SQLite function registration
  • Update dependencies

v0.24.2

  • Revert WASM execution model to not share state between HTTP requests. Rust guests seem fine but JS guests can get stuck (requires further investigation)
  • Pass Client-Id header for Twitch OAuth provider
  • Update realtime SSR docs
  • Update dependencies

v0.24.1

  • Add experimental Twitch OAuth provider
  • Use defer_foreign_keys for schema alterations
  • Update dependencies

Major Releases

v0.24.0 - Geospatial Support 🎉

TrailBase received first-class support for geometric/geospatial data and querying:New Features:
  • Published LiteGIS, an in-house GEOS SQLite extension
  • Automatic GeoJSON schema generation for geometry columns
  • Spatial filter operators: @within, @intersects, @contains
  • GeoJSON FeatureCollection output via ?geojson=<column> parameter
  • Well Known Binary (WKB) internal format with indexing support
  • Admin UI displays readable WKT for geometry columns
Other Notable Changes:
  • Improved admin UI: better maps and stats on logs page, accounts page improvements
  • WebSocket support for change subscriptions (in addition to SSE)
  • Support for bcrypt password hashes
  • User import from Auth0: trail user import --auth0-json=<file>
  • Standalone SQLite extensions available in /crates/extensions-so
  • Dual-licensed clients under Apache-2.0
  • More idiomatic HTTP handling in WASM JS/TS
See full release notes

v0.23.0 - WASM Component Model

WASM Improvements:
  • Merged Host implementations for HTTP/Job handlers and custom SQLite extension functions
  • Extended state lifecycle for SQLite extension functions
  • Use async | store | task_exit exports in preparation for component-model-async
  • More robust async host-backed plugin APIs
Authentication:
  • Enable “late” authentication for WebSocket subscriptions (browser compatibility)
  • Private support for WASM in JS/TS client
Tooling:
  • Update Rust toolchain to 1.93
See full release notes

v0.22.0 - Multi-Database Support 🎉

Multi-DB Features:
  • Record APIs can be backed by tables/views in independent databases
  • Config-driven database lifecycle management
  • Generalized connection management
  • Per-DB file upload and lifecycle management
  • Multi-DB subscription management
  • End-to-end tests
Important Notes:
  • SQLite doesn’t allow FOREIGN KEYs and TRIGGERs across DB boundaries
  • JOINs can cross DB boundaries
  • Supports arbitrary number of DBs despite SQLite’s 125 DB per connection limit
  • DBs mapped to <traildepot>/data/<name>.db and <traildepot>/migrations/<name>/
Other Changes:
  • Changed Record API default behavior to run batches without transactions unless requested
  • Improved errors for file-handling record APIs
See full release notes

v0.19.0 - WASM-Only Release

Breaking Changes:
  • First WASM-only release, dropping V8 runtime support
  • Default Linux release now built with MUSL (truly static and portable)
  • Drop index-based file reads in favor of unique filenames: {original_stem}_{rand#10}.{suffix}
Since Previous Major Release:
  • Official Kotlin client
  • Record-based subscription filters
  • Reworked WASM execution model with shared executor
  • Comprehensive access rule validation
See full release notes

v0.18.0 - WASM Components

Major Change:
  • Last release containing V8 JavaScript engine
  • Transition to WASM-only runtime
Removed Built-in Auth UI:
  • Auth UI now available as WASM component
  • Install with: trail components add trailbase/auth_ui
  • Serves as starting point for customization
  • Proof-of-concept for WASM compositional model
Benefits:
  • Component in crates/auth-ui can be customized
  • Early component management functionality
  • Eating our own dogfood
See full release notes

v0.17.0 - WASM Runtime

New WASM Runtime:
  • Added WASM runtime based on wasmtime
  • Transitional release containing both V8 and WASM runtimes
  • Plan to eventually remove V8
Benefits:
  • Increased performance for non-JS languages
  • Strict state isolation
  • Flexible guest language choice (JS, TS, Rust)
  • More extensibility opportunities
See the blog post for details.See full release notes

v0.14.0 - UUIDv4 Record IDs

Breaking Changes:
  • Allow truly random UUIDv4 record IDs using AES encrypted _rowid_s for cursors
  • Move user IDs to UUIDv4 by default (avoids leaking creation time)
  • Bundled migration updates PK to allow any UUID type
Important:
  • May break existing code relying on UUIDv7 user IDs
  • Cursor encryption key tied to instance lifetime
See full release notes

v0.12.0 - List API Filter Overhaul

Breaking Changes:
  • Complete overhaul of list API filters to support nested, complex expressions
  • Filter format changed from col[ne]=val to filter[col][$ne]=val
  • All clients updated to support new syntax and help construct nested filters
New Features:
  • Swift client implementation
  • Show release version in admin dashboard
Example: Excluding a range: ?filter[$or][0][col][$gt]=v_max&filter[$or][1][col][$lt]=v_minSee full release notes

Recent Minor Releases

v0.23.x Series - Stability and Polish

  • Add standalone SQLite extension with TrailBase’s custom functions
  • Overhaul schema metadata handling
  • Make status codes more consistent across auth endpoints
  • Update OpenAPI documentation
  • Support bcrypt password hashes
  • Add user import from Auth0
  • Dual-licensed clients under Apache-2.0
  • Show validation errors for tables/views not qualifying for Record APIs
  • Improve config validation errors
  • Allow GROUP BY expressions on VIEW’s non-PK columns
  • Clean up accounts UI
  • Fix ephemeral invalid cell access in admin UI
  • Improve error handling in TS client
  • Handle permission errors (401/403) and 429 gracefully in admin UI
  • Add uptime to dashboard
  • Switch map from leaflet to maplibre and vector tiles
  • Switch rate graph to bar chart
  • Add explicit collapse option for stats
  • Split “list logs” from stats endpoint

v0.22.x Series - Multi-DB and WebSockets

  • Support realtime subscriptions via WebSockets (behind “ws” feature)
  • Protocol upgrade with ?ws=true parameter
  • Improve Rust client test setup
  • Enable sorting of columns in table explorer, logs, and accounts
  • Update column data type when picking foreign key table
  • Reduce table jank with fixed column sizes
  • Add execution timestamp to SQL editor results
  • Allow re-ordering of columns in Create/Alter table UI
  • Optimize filtered realtime subscriptions
  • Filter foreign key options based on column type
  • Fix list record edge case with ?limit=0&count=true
  • Fix overly eager de-registration of subscriptions

View Full Changelog

For the complete version history including all patch releases:

Full Changelog on GitHub

View the complete CHANGELOG.md with all releases and changes

Release Channels

Stable Releases

  • Current: v0.24.x (alpha)
  • Frequency: Regular updates every 1-2 weeks
  • Downloads: GitHub Releases
  • Docker: trailbase/trailbase:latest

Development Builds

  • Branch: main
  • Status: Unstable, may break
  • Use: Development and testing only
  • Build: Clone and build from source
Development builds are not recommended for production use.

Release Notes Format

Each release includes:
  • Version number: Semantic versioning (MAJOR.MINOR.PATCH)
  • Release date: When the version was published
  • Changes: New features, improvements, and bug fixes
  • Breaking changes: Clearly marked with migration guidance
  • Contributors: Credit to contributors for the release

Upgrading

Checking Your Version

trail --version

Updating TrailBase

Pre-built binaries:
  1. Download the latest release from GitHub Releases
  2. Replace your existing trail binary
  3. Restart the server
Docker:
docker pull trailbase/trailbase:latest
From source:
git pull origin main
git submodule update --init --recursive
pnpm install
cargo build --bin trail --release

Migration Guide

For breaking changes, see:
  • Release notes for specific versions
  • Migration sections in documentation
  • GitHub issues for workarounds
Always backup your traildepot directory before upgrading!

Deprecation Policy

TrailBase is in alpha, but we try to:
  • Announce breaking changes in release notes
  • Provide migration paths when possible
  • Give advance warning via deprecation messages
  • Maintain compatibility where feasible

Post-1.0 Plans

After reaching 1.0:
  • Follow semantic versioning strictly
  • Deprecation warnings for at least one minor version before removal
  • Clear upgrade guides for breaking changes
  • LTS releases for production stability

Staying Updated

GitHub Releases

Subscribe to release notifications

Watch Repository

Get notified of all updates

RSS Feed

Follow via RSS

Blog

Deep dives into major releases

Version Support

Current Support

  • Latest version: Fully supported with bug fixes and security updates
  • Previous minor: Bug fixes for critical issues
  • Older versions: Community support only
As an alpha project, only the latest version receives active support. Please upgrade regularly.

Client Library Versions

Client libraries are versioned alongside the server:
  • JavaScript/TypeScript: Keep in sync with server version
  • Dart/Flutter: Update when server updates
  • Rust: Match server version
  • Other clients: Check package changelogs
Mismatched client and server versions may cause compatibility issues. Always update clients when upgrading the server.

Contributing to Releases

Help improve releases:
  • Report bugs in the current version
  • Test beta/RC releases
  • Provide feedback on breaking changes
  • Suggest improvements to release notes
  • Update documentation for new features
See the contributing guide for more information.

Build docs developers (and LLMs) love