> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/trailbaseio/trailbase/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Version history and release notes for TrailBase

TrailBase follows semantic versioning. This changelog documents all notable changes to the project.

<Note>
  For the complete changelog, see [CHANGELOG.md](https://github.com/trailbaseio/trailbase/blob/main/CHANGELOG.md) in the repository.
</Note>

## Latest Releases

### v0.24.3

<Accordion title="Release Notes">
  * 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
</Accordion>

### v0.24.2

<Accordion title="Release Notes">
  * 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
</Accordion>

### v0.24.1

<Accordion title="Release Notes">
  * Add experimental Twitch OAuth provider
  * Use `defer_foreign_keys` for schema alterations
  * Update dependencies
</Accordion>

## Major Releases

### v0.24.0 - Geospatial Support 🎉

<Accordion title="Release Highlights">
  TrailBase received first-class support for geometric/geospatial data and querying:

  **New Features:**

  * Published [LiteGIS](https://github.com/trailbaseio/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](https://github.com/trailbaseio/trailbase/releases/tag/v0.24.0)
</Accordion>

### v0.23.0 - WASM Component Model

<Accordion title="Release Highlights">
  **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](https://github.com/trailbaseio/trailbase/releases/tag/v0.23.0)
</Accordion>

### v0.22.0 - Multi-Database Support 🎉

<Accordion title="Release Highlights">
  **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 KEY`s and `TRIGGER`s across DB boundaries
  * `JOIN`s 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](https://github.com/trailbaseio/trailbase/releases/tag/v0.22.0)
</Accordion>

### v0.19.0 - WASM-Only Release

<Accordion title="Release Highlights">
  **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](https://github.com/trailbaseio/trailbase/releases/tag/v0.19.0)
</Accordion>

### v0.18.0 - WASM Components

<Accordion title="Release Highlights">
  **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](https://github.com/trailbaseio/trailbase/releases/tag/v0.18.0)
</Accordion>

### v0.17.0 - WASM Runtime

<Accordion title="Release Highlights">
  **New WASM Runtime:**

  * Added WASM runtime based on [wasmtime](https://github.com/bytecodealliance/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](https://trailbase.io/blog/switching_to_a_wasm_runtime) for details.

  See [full release notes](https://github.com/trailbaseio/trailbase/releases/tag/v0.17.0)
</Accordion>

### v0.14.0 - UUIDv4 Record IDs

<Accordion title="Release Highlights">
  **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](https://github.com/trailbaseio/trailbase/releases/tag/v0.14.0)
</Accordion>

### v0.12.0 - List API Filter Overhaul

<Accordion title="Release Highlights">
  **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_min`

  See [full release notes](https://github.com/trailbaseio/trailbase/releases/tag/v0.12.0)
</Accordion>

## Recent Minor Releases

### v0.23.x Series - Stability and Polish

<Accordion title="v0.23.10">
  * Add standalone SQLite extension with TrailBase's custom functions
  * Overhaul schema metadata handling
  * Make status codes more consistent across auth endpoints
  * Update OpenAPI documentation
</Accordion>

<Accordion title="v0.23.9">
  * Support `bcrypt` password hashes
  * Add user import from Auth0
  * Dual-licensed clients under Apache-2.0
</Accordion>

<Accordion title="v0.23.8">
  * 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
</Accordion>

<Accordion title="v0.23.7">
  * Clean up accounts UI
  * Fix ephemeral invalid cell access in admin UI
  * Improve error handling in TS client
</Accordion>

<Accordion title="v0.23.6">
  * Handle permission errors (401/403) and 429 gracefully in admin UI
  * Add uptime to dashboard
</Accordion>

<Accordion title="v0.23.5">
  * 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
</Accordion>

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

<Accordion title="v0.22.13">
  * Support realtime subscriptions via WebSockets (behind "ws" feature)
  * Protocol upgrade with `?ws=true` parameter
  * Improve Rust client test setup
</Accordion>

<Accordion title="v0.22.12">
  * 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
</Accordion>

<Accordion title="v0.22.11">
  * Allow re-ordering of columns in Create/Alter table UI
  * Optimize filtered realtime subscriptions
  * Filter foreign key options based on column type
</Accordion>

<Accordion title="v0.22.10">
  * Fix list record edge case with `?limit=0&count=true`
  * Fix overly eager de-registration of subscriptions
</Accordion>

## View Full Changelog

For the complete version history including all patch releases:

<Card title="Full Changelog on GitHub" icon="github" href="https://github.com/trailbaseio/trailbase/blob/main/CHANGELOG.md">
  View the complete CHANGELOG.md with all releases and changes
</Card>

## Release Channels

### Stable Releases

* **Current**: v0.24.x (alpha)
* **Frequency**: Regular updates every 1-2 weeks
* **Downloads**: [GitHub Releases](https://github.com/trailbaseio/trailbase/releases/)
* **Docker**: `trailbase/trailbase:latest`

### Development Builds

* **Branch**: `main`
* **Status**: Unstable, may break
* **Use**: Development and testing only
* **Build**: Clone and build from source

<Warning>
  Development builds are not recommended for production use.
</Warning>

## 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

```sh theme={null}
trail --version
```

### Updating TrailBase

**Pre-built binaries:**

1. Download the latest release from [GitHub Releases](https://github.com/trailbaseio/trailbase/releases/)
2. Replace your existing `trail` binary
3. Restart the server

**Docker:**

```sh theme={null}
docker pull trailbase/trailbase:latest
```

**From source:**

```sh theme={null}
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

<Info>
  Always backup your `traildepot` directory before upgrading!
</Info>

## 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

<CardGroup cols={2}>
  <Card title="GitHub Releases" icon="github" href="https://github.com/trailbaseio/trailbase/releases">
    Subscribe to release notifications
  </Card>

  <Card title="Watch Repository" icon="eye" href="https://github.com/trailbaseio/trailbase">
    Get notified of all updates
  </Card>

  <Card title="RSS Feed" icon="rss" href="https://github.com/trailbaseio/trailbase/releases.atom">
    Follow via RSS
  </Card>

  <Card title="Blog" icon="newspaper" href="https://trailbase.io/blog">
    Deep dives into major releases
  </Card>
</CardGroup>

## 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

<Note>
  As an alpha project, only the latest version receives active support. Please upgrade regularly.
</Note>

## 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

<Warning>
  Mismatched client and server versions may cause compatibility issues. Always update clients when upgrading the server.
</Warning>

## 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](/resources/contributing) for more information.
