Changelog
All notable changes to GoatDB will be documented in this file.
The format is based on Keep a Changelog,
and GoatDB adheres to
Semantic Versioning.
0.5.1 - 2026-03-05
Breaking Changes
-
./initsub-path export removed.deno run -A jsr:@goatdb/goatdb/initno
longer works.Migration:
# Before deno run -A jsr:@goatdb/goatdb/init # After (Deno) deno run -A jsr:@goatdb/goatdb init # After (Node.js) npx -y @goatdb/goatdb init
Changed
- npm build output uses
.jsextension instead of.mjs @types/nodebumped from ^22 to ^24postjectbundled as optional dependency — no more global install required- esbuild target updated from
node18tonode24 goatdbCLI binary now available via npm (npx -y @goatdb/goatdb init)
0.5.0 - 2026-02-26
[0.4.0] - 2026-02-20
Breaking Changes
-
Build tools moved from
@goatdb/goatdb/server:compile,
startDebugServer, andAppConfigmoved to@goatdb/goatdb/server/build.
Runtime exports (Server,createHttpServer, etc.) remain in
@goatdb/goatdb/server.Migration:
// Before import { compile, Server, startDebugServer } from '@goatdb/goatdb/server'; // After import { Server } from '@goatdb/goatdb/server'; import { compile, startDebugServer } from '@goatdb/goatdb/server/build';
Security
- Fixed two vulnerabilities in
persistCommits: null namespace guard and
delta-based record bypass
Added
GoatDB.sync(repo)andGoatDB.syncAll()for explicit sync controlGoatDB.modeproperty to query the current operation mode- Client mode for non-browser environments (Deno, Node.js)
StderrLogStreamfor logging to stderrgetGlobalLoggerStreams()for log stream management- Loading status exposed on
ManagedItem itemPathIsValid()exported as a public utilitygetEnvVarexported as stable cross-runtime APIsetupcallback inDebugServerOptionsfor configuring server-side logic
during development- Health check endpoint on
Server portandaddressgetters onServer; graceful shutdown support- Node.js Single Executable Application (SEA) compilation via
compile() jsr:@goatdb/goatdb/linknow works in Node.js in addition to Deno- HTTPS support with automatic self-signed certificate generation for secure
development
Changed
- Runtime abstraction layer refactored for cross-platform compatibility (Deno,
Node.js, Browser) - Path utilities moved to
base/path.tswith POSIX-style handling across all
environments - Windows path support — backslashes from
Deno.cwd()/process.cwd()are
normalized to forward slashes FileImplinterface extended withexists,copyFile, andreadDirmethods- CLI
inittemplates externalized tocli/templates/directory - CLI commands (
init,link) now work in Node.js - Build info and platform detection now work on Windows
- Node.js minimum version raised to 24 (required for SEA support)
- Node.js is now production-ready; experimental warning removed
- esbuild bumped from 0.24 to 0.25.4
- Browser
getOS()uses 3-tier detection (User-Agent Client Hints,
navigator.platform, User-Agent string) and returns'unknown'when platform
cannot be detected - Default server port for HTTPS changed to 8443 (HTTP remains 8080)
ManagedItem.commit()now ensures all changes are fully committed before
returning
Removed
@std/fsdependency (replaced by cross-runtime file abstraction)@std/expectdependency (fixes test compatibility on Node.js)
Fixed
- Expired sessions are now blocked from accessing protected routes
- First sync awaited when opening a repository for the first time
- Query scan now correctly awaited in browser environments
- Resource leak in OPFS
copyFile()— file handles now properly closed on error - Template
DomainConfigused incorrect method names (resolveOrginstead of
mapToOrg) - Template HTML referenced raw
index.tsxinstead of built/app.js - Sync engine: recursive
serverUrlexpansion, infinite loop, dangling promise,
and sync-before-open bugs FileImpl: partial-read loop and resource cleanup on error- No longer crashes when the cache file is missing
- Now throws an error when commit contents are missing instead of failing
silently
0.3.1
Fixed
- Support for crypto on older Node.js versions has been improved #27
- Item not properly propagating schema field types
- Correctly propagate inspect flag to worker in node #27
GoatDB.close()correctly flushes to disk and clears memory
Changed
- Updated React dependency to 19.1.0
0.3.0
Added
- Orderstamp is now bundled and
exposed directly within GoatDB
0.2.2
Added
- An exception is now thrown when passing an invalid source path to a query
- Added
SchemaField<T>for easy access to a schema's field names
Fixed
itemPathNormalizesometimes returns relative paths
Changed
- Renamed
SchemaManagertoDataRegistry - Renamed
DBConfigtoDBInstanceConfig
0.2.1
Added
FieldDef.validateenables custom field level validation- Before/After hooks for integrating with external build steps via
LiveReloadOptions.beforeBuildandLiveReloadOptions.afterBuild CoreTypesare now exported by the top levelmod.ts- It's now possible to set a custom user schema via
SchemaManager.userSchema - Attempting to commit an item with invalid data now throws with a detailed
message when running in debug mode
Fixed
- Live reload in debug server is now working again
- Set types being deserialized incorrectly
- Crash in
useItemReact hook when first passingundefinedthen a
ManagedIteminstance
0.2.0
Added
- Initial support for Node.js
- Trusted mode which disables security mechanisms for increased performance in
trusted environments
Changed
- Auth rules now accept an info object like query predicate and sort descriptor
- Added default auth rules for
/user/<userId> - Improved repository open performance by ~25%
Fixed
- Attempting to register multiple auth rules throws an error
- Crash when opening a query without a sort descriptor
db.flushnow properly flushes query caches to disk
Removed
- Order stamps have been moved to their own repository —
https://github.com/goatplatform/orderstamp-js
0.1.6 - 2025-02-26
Added
FileImpl.getCWDto get the current working directorycli/link.tsnow enables easy development of GoatDB alongside an existing
project
Fixed
- Debug server now correctly turns on debug mode
0.1.3 - 2025-02-17
Added
BaseTimer.resetto reset the timer and reschedule it
Changed
- GoatDB is now licensed under Apache 2.0
JSONLogFile.appendnow automatically scans the log file rather than throwJSONLogFileworker now uses the transpiled JS version both for the server
and the browser- Improved React SPA scaffold
ServerOptions.domainenables fine control over domain / organization mapping
Fixed
- Configuration is now correctly injected into the app bundle
0.1.2 - 2025-02-16
Added
Item.isNullto check if an item has a null schema- It's now possible to override the authorization rules for
/sys/usersand
/sys/* Query.sortDescendingto sort results in descending order
Changed
Item.getnow returnsundefinedfor null items
Fixed
- Init script calling
manager.register()instead ofmanager.registerSchema() Item.isNullnow works as expected
0.1.1 - 2025-02-15
Added
ServerOptions.autoCreateUserfor environment-specific user creation
Changed
- Updated LLM cheatsheet
Removed
- Operator Emails
0.1.0 - 2025-02-13
Added
- Initial release