SEE HOW AXIODB HAS EVOLVED
Changelog
Every major milestone in AxioDB's history, from the very first commit onward. This is a curated list of what actually changed - not every commit or patch bump, just the releases that shipped something meaningful.
v14.1.4
2026-07-25Transaction durability hardening, single-fsync WAL batching, and 30-char document IDs
- •Fixed: a WAL append or .tmp staging-write failure during commit was silently swallowed - appendLog()/WriteFile() return an Error result instead of throwing, so the commit proceeded and mutated a document with no log to recover from. Both are now checked and abort the commit, routing into the existing rollback path.
- •Fixed: rollback left orphaned .tmp staging files behind (executeOperations can now throw mid-loop after staging some files); rollback() sweeps them.
- •Fixed: rollbackIndexUpdates only discarded the staged map, but stageIndexUpdates mutates the shared in-memory index cache in place (IndexCache.getIndex returns the live object) - a rolled-back transaction left a phantom index entry pointing at a never-written document, causing post-rollback "Failed to read file" noise and wasted reads. Rollback now invalidates the touched index fields so the next read reloads a clean copy from disk.
- •Fixed: recoverTransactions is registry-driven and never cleaned WAL files with no registry entry - a crash between createWAL() and registerTransaction() left an orphan .wal that survived recovery (a timing-dependent crash-recovery test failure, seen on Node 21 CI). Recovery now snapshots WAL files at startup and sweeps orphans not tracked by the registry; added a deterministic regression test that plants an orphan WAL.
- •Performance: transaction commit now persists all WAL entries in a single fsync'd batch (appendLogBatch) instead of one fsync per operation - a 1000-document insertMany drops from ~1000 WAL fsyncs to 1, roughly 6x faster per document in local benchmarks (~4.5ms/doc to ~0.7ms/doc). Single-document insert is unchanged.
- •Auto-generated document IDs are now 30-character uppercase alphanumeric (was 15-character letters-only), lowering collision odds; existing shorter IDs remain valid and readable.
v13.1.3
2026-07-24Fixed a process-exit hang; added real crash-recovery test coverage
- •Fixed: InMemoryCache's background eviction interval had no unref(), so any short-lived script or CLI process using AxioDB (a stated core use case) would never exit on its own without an explicit process.exit() call - it now unrefs the same way IndexCache's cleanup interval already did
- •Added a real crash-recovery test suite (npm test crash-recovery): spawns a child process hammering inserts/updates, SIGKILLs it mid-write with no graceful shutdown, then verifies from a fresh process that every recovered document is complete and valid, and the WAL is cleaned up - this is the one guarantee this project had only reasoned about, never actually tested, until now
- •Added regression tests for this release's index-reordering fix, the cache-invalidation-scope fix, and the "no match" error contract for UpdateOne/UpdateMany/deleteOne/deleteMany
- •Wired the new crash-recovery suite into CI (Push.yml and auto_ci.yml Gate 4, alongside crud/transaction/read); synced the npm test command reference across CLAUDE.md, AGENTS.md, .claude/rules/commands.md, .github/copilot/instructions.md, and the axiodb-development skill, which had all drifted to list only crud/transaction/read
v13.1.1
2026-07-24Update and delete are now WAL-backed (full ACID coverage)
- •UpdateOne/UpdateMany/deleteOne/deleteMany now route through the same Transaction/WAL machinery insert() already used, instead of a separate ad-hoc lock-and-write path
- •Fixed: a failed index-sync after a successful document write used to be silently swallowed (fire-and-forget), leaving the index out of sync with no way to recover on crash - it's now staged and committed atomically with the document change, with WAL redo/undo on failure
- •Removed the now-redundant per-call LockManager/DocumentLoader-reread/DeleteIndex/InsertIndex wiring from UpdateOperation and DeleteOperation - Transaction already does locking, the fresh re-read under lock, and index staging correctly
- •insertMany's earlier index-rewrite batching win (Document/src/data/changelog.ts 13.0.0) now applies to UpdateMany/deleteMany too: one index-file rewrite per affected field for the whole batch, not one per document
- •Fixed: TransactionIndexManager.stageIndexUpdates was removing and re-appending a document's file entry in an index bucket even when that field's value hadn't changed, silently reordering the bucket - for documents sharing an indexed value (e.g. duplicate names), this could make a later query's "first match" resolve to a different document than the one just written. It now skips a field's index entirely when its value is unchanged.
- •Removed InsertIndex.service.ts and DeleteIndex.service.ts - both were only used by the old ad-hoc update/delete path this release replaced, leaving them with zero live callers; Collection now constructs the shared IndexManager base class directly for createIndex/dropIndex/listIndexes
- •Fixed: routing update/delete through Transaction.commit() had it invalidate the whole collection's cache on every write (the behavior insert() always needed) instead of only the affected documents' cache entries - an update to one document was evicting unrelated cached queries that never matched it. commit() now only does the broad invalidation when the transaction contains an INSERT; update/delete-only transactions evict just the specific documents that changed.
v13.0.0
2026-07-24Encryption removed; sorted-index range queries; batched inserts
- •BREAKING: removed per-collection AES-256 encryption (isEncrypted/encryptionKey params on createCollection and every downstream API) - unnecessary overhead for an embedded database; existing encrypted collections will not be readable after upgrading
- •CryptoHelper/CryptoGraphy helpers, and every isEncrypted/encryptionKey parameter across Collection, Reader, Update, Delete, Aggregation, Transaction, Session, and the HTTP/TCP APIs, removed
- •Range queries ($gt/$gte/$lt/$lte) on indexed fields now resolve via a sorted-value binary search instead of a full collection scan
- •insertMany now batches every document into a single Transaction (one index-file rewrite per field instead of one per document) instead of committing a separate Transaction per document
- •Fixed: UpdateOne/UpdateMany/deleteOne/deleteMany now re-read the target document under the lock instead of trusting the pre-lock snapshot, closing a lost-update race under concurrent writers
- •Fixed: document rewrites during update are now an atomic temp-file-plus-rename instead of delete-then-recreate, so a concurrent unlocked read can no longer observe a transiently missing file
- •Fixed: the transaction registry (txn-meta.json) is now fsynced on every write, so recovery can no longer lose track of a committed WAL entry on crash
v12.10.20+
2026-07-12MCP Server for AI agent integration
- •MCP server (Model Context Protocol) added to the Docker image, opt-in via AXIODB_MCP=true, exposing 32 tools over Streamable HTTP on port 27020
- •Real login required (axiodb_login) - every tool is gated by the logged-in user's actual RBAC role, mirroring the HTTP Control Server's permissions exactly
- •Full coverage: database/collection/document CRUD, aggregation, indexes, dashboard stats, and user/role management (including a new role-deletion capability, added to both the HTTP API and MCP)
- •Session tools: axiodb_logout, axiodb_whoami, axiodb_change_own_password
- •Fixed: aggregation $sum/$avg crashing on numeric literal operands (e.g. { $sum: 1 })
- •Fixed: delete-by-query silently deleting nothing while reporting success when isMany was left unset
- •Fixed: total document count including the collection's internal indexes folder in the total
- •Fixed: collection metadata responses no longer leak the raw AES encryption key
- •Removed dead chmod-based file/directory locking code (LockFile/UnlockFile/IsFileLocked, LockDirectory/IsDirectoryLocked) that was never actually engaged by any internal flow
v11.9.13+
2026-07-11AxioDBCloud connection pooling, rate limiting & TLS
- •Connection pooling for AxioDBCloud with least-busy routing (fewest in-flight requests) instead of round-robin
- •Per-IP concurrent connection cap and connection-attempt rate limiting on the TCP server
- •TLS/SSL encryption support for TCP connections
- •RBAC and TCP Auth test gates added to CI
- •SEO metadata integrated across all documentation pages
v9.7.7
2026-07-10Session-based GUI auth & TCP authentication
- •Session-based authentication with cookie support for the Control Server GUI
- •TCP authentication (RBAC) and index management commands added to AxioDBCloud
v9.6.1
2026-03-27AxioDB constructor refactor
- •AxioDB constructor refactored to accept a single options object instead of positional arguments
v8.33.235
2026-03-23ACID compliance milestone & CI matrix testing
- •Pseudo-ACID transaction compliance across CRUD operations
- •CI test matrix expanded across multiple Node.js versions
- •Query optimization in Reader and Searcher classes
v7.33.234
2026-03-15Path-traversal hardening
- •DocumentLoader and PathSanitizer utilities added to centralize safe file handling
- •Formal contributor rules and development guidelines added to the repo
v6.33.128
2026-03-13AxioDBCloud (TCP remote access) begins
- •TCP server and ConnectionManager implemented - the foundation of AxioDBCloud remote access
- •Protocol error handling and HTTP-vs-TCP-port misconfiguration detection
v6.33.127
2026-03-11Smarter caching & index cleanup
- •Selective cache invalidation and randomized TTL to avoid cache-stampede synchronization
- •DeleteIndex service for removing documents from indexes
- •IndexCache gained TTL-based expiry and cleanup
v5.33.127
2026-03-10ACID transactions with Write-Ahead Log
- •TransactionIndexManager, TransactionRegistry, and Write-Ahead Log (WAL) services implemented
- •Foundation for session-based transactions with commit/rollback
v3.31.104
2025-10-31Worker-thread performance overhaul
- •File processing parallelized with Promise.all across worker threads
- •Reader/search operations tuned to use all available CPU cores
- •Sorting utility optimized to use native comparison
v2.30.93
2025-08-31Database export/import
- •Database export as a compressed .tar.gz archive
- •Database import from an uploaded archive
- •Advanced JSON query search support
v2.28.81
2025-08-24API reference page & transaction tokens
- •API reference documentation page added to the Control Server GUI
- •Transaction token support added to the HTTP API
v2.28.77
2025-08-20Dashboard caching & transaction tokens
- •Caching and transaction token support for collections and databases
- •Dashboard stats retrieval integrated with the cache layer
v2.24.71
2025-08-11Full CRUD document management UI
- •Create, read, update, delete, and aggregate operations added to the Control Server GUI as modal-driven workflows
- •Advanced search with JSON query and document-ID lookup in the Documents page
v2.19.65
2025-07-27Database management UI & JWT key management
- •Database management routes/controller and GUI dashboard (Zustand state management)
- •JWT-based key management for database instances
v2.18.54
2025-06-23Engine refactor & worker-based search
- •Legacy FileManager/FolderManager replaced by the current engine/ module structure
- •HashmapSearch replaced by worker-thread-based Searcher for parallel file reads
v2.13.47
2025-06-21Control Server (HTTP GUI) foundation
- •AxioDB Control Server implemented on Fastify with health check and routes endpoints
- •Tailwind CSS integrated into the GUI
v2.11.29
2025-06-14GUI authentication & schema validation
- •JWT-based authentication checks added to the GUI
- •Schema validation for user registration and collection data
v2.10.19
2025-06-08Initial Docker support
- •First Docker setup: package.json, tsconfig.json, and a schema generator utility for containerized deployments
v1.5.8
2025-04-02Cache invalidation on writes
- •Cache clearing wired into update and delete operations, and a clearAllCache method added
v1.4.3
2025-03-26Aggregation pipelines
- •aggregate() method added to Collection with MongoDB-style pipeline stages
- •$match filtering extended to support regex and object matching
v1.3.9
2025-03-20Full CRUD operation suite
- •Reader class: query, sort, skip/limit pagination, and total-count support
- •DeleteOperation: deleteOne and deleteMany with detailed error handling
- •UpdateOperation: UpdateOne and UpdateMany with schema-aware partial updates
v1.1.4
2025-02-28Encryption support
- •CryptoHelper class added for AES encryption/decryption of collection data
v1.1.2
2025-02-14Core Collection & Database classes
- •Collection and Database classes implemented - the foundation of the document store
- •FileManager/FolderManager error handling improved
v1.0.16
2024-12-25Initial Web GUI
- •First GUI setup with Vite and React, alongside a server-file restructure
v1.0.14
2024-12-23In-memory caching
- •InMemoryCache class added, with TTL-based expiry for cached query results
v1.0.0
2024-12-07Fastify server & first insert
- •Fastify HTTP server integrated into the project
- •The `Configuration` class was renamed to `AxioDB`
- •First working document insert feature
v1.0.0
2024-10-01Project inception
- •Initial commit: repository scaffolding, FileManager/FolderManager engine, and an initial `Configuration` class (later renamed to `AxioDB`)
