Changelog
Release history for SlintORM — sourced from real GitHub commits.
Current version: v1.9.6 — view all commits on GitHub
v1.9.6
latest2026-07-16featMongoDB transaction support — `startSession()` + `startTransaction()` via native MongoDB driver session API
feat`databaseName` config option — forwarded through ORM → DBAdapter for per-run isolated MongoDB databases
featPG adapter `exec()` converts `?` → `$N` positional placeholders for raw SQL compatibility
feat`PG_ONLY=1` env var skips SQLite/MongoDB test runs
feat`MONGO_URL` and `PG_URL` env vars required for respective test suites (no hardcoded fallbacks)
feat`run()` throws `AggregateError` instead of `process.exit(1)`, enabling cleanup in callers
fix`andWhereGroup`/`orWhereGroup` replace child-builder `$N` placeholders with `?` to avoid index collision on merge
fix`buildWhereClauseForPreload` accepts `startIndex` parameter to align `$N` numbering across preload joins
fix`buildMongoFilter` visibility changed from `private` to `protected` (fixes TS compilation in `AdvancedQueryBuilder`)
fix`databaseName` added to `ORMManagerConfig` type (fixes TS compilation in `index.ts`)
fix`SqlExpr.raw` SQLite timestamp expression made PG-aware (`NOW()` vs `datetime('now')`)
fix`SqlExpr` values inlined in SQL insert rather than serialized as JSON
fixTransaction raw SQL uses double-quoted identifiers for PG case preservation
v1.9.5
2026-07-15featBalloon Hashing is now the default for `@hash` — memory-hard, SHA-256 based, zero deps (Web Crypto API)
feat`@hash:(algo=pbkdf2,iterations=N)` for PBKDF2 backward compat
feat`@hash:(algo=balloon,space=N,time=N,delta=N)` for custom Balloon cost params
featSelf-describing stored format: `balloon$space$time$delta$salt$hash`
fixBalloon mix step now uses deterministic other-block index (was non-deterministic via crypto.getRandomValues)
v1.9.1
2026-07-13featRLS (Row-Level Security) support — `rls: true` config option enables automatic `set_config()` calls
feat`orm.withContext()` — sets RLS context values that propagate as PostgreSQL session parameters
feat`orm.rlsEnabled()` — returns whether RLS mode is active
feat`encryptionKey` option in ORMManagerConfig — master key (min 32 chars) for @encrypt annotations
featRedundant RLS call skipping — caches last-set values to avoid repeated set_config calls
fix27+ driver-specific SQL compatibility issues across queryBuilder, model, migrator, and migration-history
docsRLS usage pattern documented in llms.txt
docs@secret marked shipped in docs and llms.txt
docsAnnotation version badges added to llms.txt
docsROADMAP.md updated with RLS in shipped, sug.txt items in planned
v1.9.0
2026-07-11feat@encrypt fields now expose `.decrypt()` for on-demand decryption
feat@encrypt:(decrypt=auto) — transparent auto-decryption on read, returns plain string
featGenerator emits `& { verify() }` on @hash fields for type-safe `.verify()`
docs@hash/@encrypt/@secret annotated examples added to README and llms.txt
docsSecurity module documented with usage patterns
v1.7.0
2026-07-10featSecurity module — @hash (PBKDF2 via Web Crypto API), @encrypt (AES-256-GCM), @secret (@hash+@omitjson)
feat@email / @url / @uuid / @phone — format validators
feat@min / @max — numeric range validation
feat@minLength / @maxLength — string length validation
feat@pattern:regex — custom regex validation
v1.6.1
2026-07-10feat@random:alnum / @random:lower / @random:upper / @random:hex / @random:custom — character set variants
feat@random with prefix/suffix options
featextracted annotations.ts — centralized annotation parsing
ciGitHub Actions workflow for auto-publish on push to main
ciNode 22 for built-in node:sqlite driver
v1.5.2
2026-07-09featCLI auto-loads .env* files before config is imported
v1.5.1
2026-07-09fixSchema generator now supports inline annotations: `field: string; // @unique` — warns but works
fixSchema generator handles stacked `//` annotation comments above a field (multiple lines)
fixSchema generator no longer errors on `//` comment lines inside interface bodies
fixInline annotations and stacked comments properly separated with `;` — no merged metadata keys
v1.5.0
2026-07-09feat@mask annotation with 8 presets/directives — ssn, creditcard, email, phone, showFirst:N, showLast:N, showBoth:F,L, char:X, pattern:...
feat@omitdb — exclude field from database entirely (no column stored)
feat@omitjson — store in DB, strip from all read results unless explicitly .select()ed
feat@omitmigrate — migrator never creates/alters/drops the column; manual DDL
feat.withoutMasking() query builder modifier — bypass masking for privileged callers
featstripOmitDb() helper on get/getAll — automatically excludes @omitdb fields from reads
docsAll model interfaces consolidated into single src/interfaces.ts — no more duplicate interface definitions
docsBuild yields zero TypeScript errors for the first time
v1.4.0
2026-07-08featPushed remote — slintorm repo + docs site deployed
v1.3.1
latest2026-07-04fixBoolean values serialized to 0/1 on all write paths (insert, update, query builder)
fixquery().where(), .first(), .update(), .delete() no longer throw sqlite3 binding error with boolean params
fixinsert() now uses serializeValue — eliminates duplicate inline logic
v1.3.0
2026-07-04feat@random annotation for auto-generated field values (string:N, number:N)
featEntityWithUpdate methods on query builder results (.get(), .first())
featBulk delete() and update() on QueryBuilder — execute DELETE/UPDATE from accumulated WHERE clauses
fixInsert refetch logic now handles @random PKs — no longer overwrites string UUIDs with SQLite lastID
fix@json fields auto-detected for inferred (schema-less) models
fixPlain objects JSON-serialized in insert() and deserialized in get() without explicit @json annotation
v1.1.5
2026-06-28fixApply SlintORM fixed updates across the codebase (59fcce4)
fixFixed typing failure in .where() — operator comparison now correctly narrows type (df23fac)
fixFixed relatedTo BFS algorithm — path discovery now handles multi-hop relations correctly (f59495f)
fixFixed relation and join errors in query builder (c34efff)
docsPublished official documentation site (e8d5b6f)
v1.1.4
2026-06-20fixFixed CLI generate path resolver bug — paths now resolved relative to project root (bb40ac8)
fixFixed extra field appearing in migrated tables (d23946b)
fixFixed relatedTo type keys — generic inference now correct on chained calls (1ed39a6, c42effb)
fixFixed issues with migrator — alter-table no longer drops columns incorrectly (4a621b9, c4e28e)
featFinished CLI tool — generate, migrate, rollback, status, fresh, drop-tracking (1af8059)
featAdded complex relation tracking for BFS path discovery (87b82da)
featPublished to npm (e1e3a9a)
improveFixed QueryBuilder bugs and added new helper methods (77bee9a)
improveFixed type field skipping at migration time (fde906a)
v1.1.0
2026-06-10featAdded Next.js and bundler support — serverExternalPackages, dynamic driver imports (a422a39)
featAdded tokenizer-based schema generator — no ts-morph or compiler dependency (bd553d9)
featFixed path and fs bugs for cross-platform compatibility (8332686)
fixFixed path errors and generator output (a790a6c)
fixAdded fixes and stability improvements (6bceae7)
v1.0.0
2026-05-31featStable 1.0.0 release — bumped from pre-release (0403ded)
featAdded many-to-many relationship support with pivot table auto-creation (e4a631d)
featAdded manytoone relationship support (9556a06)
featAdded better TypeScript type support throughout (3eeeb86)
improveRemoved ts-morph dependency — zero compile-time dependencies (91caae0)
improveFixed major bugs, improved query generation speed and efficiency (78590ff)
v0.x
2025-11-15featAdded full PostgreSQL support in queries (4f0c921)
featAdded more directive supports — @enum, @json, @softDelete, @comment (c4d5b6d)
featFixed migration errors and model interface directives (d77e607)
improveInitial public release — SQLite, Postgres drivers, basic query builder (2f6e628)