rushdb-core

2.11.0

Minor Changes

  • 111943d: Loosen datetime detection on import: YYYY-MM-DD (date-only) strings are now automatically typed as datetime, not just full ISO 8601 timestamps. This means values like 2026-07-23 work the same as 2026-07-23T12:00:00Z — they get datetime comparisons, time-based aggregations, and the correct __proptypes entry — without any extra configuration.

Patch Changes

  • 111943d: Embedding index cold-start (rushdb-core): POST /ai/indexes no longer requires the indexed property to exist in Neo4j before creating the index policy. When no property node exists (no records with that property have been created yet), type validation is skipped — the property will be created naturally when the first record carrying it is written. Previously the server threw NotFoundException.

    DBRecordInstance.score getter (@rushdb/javascript-sdk): Records returned by records.vectorSearch() now expose a typed score getter (number | undefined) that mirrors data.__score. Regular find()/search() results return undefined.

    records.createMany vectors overload (@rushdb/javascript-sdk): The vectors parameter now accepts both VectorEntry[] and VectorEntry[][]. A flat VectorEntry[] list is auto-wrapped into per-record entries, so single-record batches can omit the outer array nesting.

    Import form label reset (rushdb-dashboard): The label field in the import data page is now cleared whenever the user goes back to the method-selection step, uploads a new file, or switches to the CSV editor — preventing stale labels from persisting across import iterations.

    Docs updated (docs): indexing.md revised to reflect that index creation no longer requires the property to already exist. write-with-vectors.mdx and bring-your-own-vectors.mdx document the flat VectorEntry[] overload. semantic-search.mdx mentions the record.score convenience getter. TS reference docs (RushDB.md, DBRecordInstance.md) describe the flat vectors form and the score getter. Python reference docs (RushDB.md) mention the flat vectors form. All tutorial code examples (15 .mdx files) now prefer the .score getter over raw __score access. manage-indexes.mdx error reference updated to remove the stale 404 row (property no longer needs to exist). All incorrect where: { __id: ... } filter patterns replaced with where: { $id: ... } across 12 tutorial files (TS, Python, and Shell code blocks).

2.10.4

Patch Changes

  • f353d98: Faster, more reliable vector search

    • Vector search no longer stalls behind background indexing work — when an index isn't ready yet, queries fall back to exact scoring instead of waiting, so results always come back promptly.
    • Embedding provider calls now have a strict time limit. A slow or unresponsive provider results in a quick, clear error instead of a request that hangs until it times out.
    • Index backfill automatically retries transient provider failures instead of marking the index as failed on the first error.
    • Switched the default embedding model to openai/text-embedding-3-small for consistently fast query-time embeddings. When the configured model changes, existing indexes are re-embedded automatically on startup — no manual steps required.
    • Dashboard: semantic search now waits until you finish typing and cancels superseded requests, instead of firing several parallel searches per keystroke.
  • 13b9b5b: Switch default chat model to openai/gpt-5.6-luna

    The default model behind AI search query generation and relationship suggestions (RUSHDB_LLM_MODEL) is now openai/gpt-5.6-luna across all deploy templates, config examples, and docs — replacing gemini-2.5-flash-lite / gpt-4.1-mini (the latter is deprecated by OpenAI). The new model responds in about a second and improves structured-output quality, making dashboard AI search snappier and suggestions more reliable. Self-hosted deployments keep full control via RUSHDB_LLM_MODEL and can use any OpenAI-compatible provider as before.

2.10.3

Patch Changes

  • 8e020f2: Dashboard: reworked project Getting Started into a "Connect this project" page with a connection panel (API key, URL, status) and SDK-first setup tabs; neutral, non-shifting feedback for copy/test-connection buttons; unified JSON + language tabs in the Search Query modal.

    Core: fixed flaky post-import side effects — record/property counts, schema recalculation, and relationship suggestions could be skipped until records were touched again. Side effects now run on a guaranteed post-commit hook (no polling), with recount → schema recompute → relationship analysis correctly ordered and isolated so one failure no longer cascades.

  • 8e020f2: Make schema recalculation scale with project size and stop AI endpoints from timing out on large datasets

    • Schema recalculation is now labels-first and incremental in shape: instead of one monolithic full-graph scan inside a single transaction, the rebuild fans out small per-label statements — property inventory via pure VALUE-edge counts (no value reads), exact streaming min/max for number/datetime properties only, and split relationship topology/property queries — each running as its own short transaction on dedicated read sessions. No single unit of work can approach the server-side transaction time budget regardless of project size; on a 40k-record / 320k-value dataset a full forced rebuild completes in ~0.5s.
    • POST /ai/schema and /ai/schema/md no longer block or 408 on large projects: a stale cache is served immediately while a single-flight background refresh recomputes it; concurrent requests share one rebuild instead of stacking full-graph scans. force: true still waits and now guarantees read-your-writes — a force call issued after a write never returns a schema computed before that write committed.
    • Smart Search (POST /ai/search-query) no longer fails with “transaction time budget” errors: the endpoint releases the idle request-scoped transaction before the LLM round-trip (previously the transaction expired while waiting on the LLM and the request failed at commit), and query generation uses the cached schema instead of triggering a synchronous recompute.
    • Behavior note: isArray detection for string/boolean properties is now based on the bounded sample window (first 100 records per property) rather than a full column scan; number/datetime isArray, all min/max ranges, record counts, and relationship counts remain exact.

2.10.2

Patch Changes

  • 3104b26: Import and querying stability improvements

2.10.1

Patch Changes

  • 0b1331c: Update stale unit tests

2.10.0

Minor Changes

  • d393b28: Separate Smart Search from vector search across SDKs, MCP, dashboard, and docs.

    • Add db.records.vectorSearch({...}) as the JavaScript SDK API for direct vector similarity search.
    • Keep db.ai.search(prompt) for schema-aware Smart Search that generates and executes a SearchQuery.
    • Add MCP vectorSearch and keep semanticSearch as a deprecated compatibility alias.
    • Update dashboard semantic retrieval to use the new records vector-search surface.
    • Refresh docs and examples, including a Smart Search guide with flow, caveats, and limitations.

2.9.1

Patch Changes

  • 0ac46fd: Rework $cycle and stabilize relationship/query intelligence

    • $cycle is now a record-level operator: where: { $cycle: { type, direction, hops } } — the value IS the traversal spec. Replaces the previous KEY: { $cycle: true, $relation: {...} } block form entirely (breaking: the old form now throws). Compiles to an EXISTS subquery so the engine stops at the first cycle found per record instead of enumerating every path — avoids exponential blowup on densely connected graphs. Default traversal hop cap (RUSHDB_MAX_TRAVERSAL_HOPS) lowered from 25 to 10 to keep worst-case queries within the transaction budget.
    • Relationship pattern suggestions are now verified against live data: candidates are proposed from schema names/types and LLM semantic judgment, then confirmed with a real graph probe before being surfaced — sampled schema values (which carry no signal on high-cardinality data) no longer gate or reject a suggestion.
    • SmartSearch prompts and specs (core, MCP server, skills, docs) made more data-agnostic and kept in sync across all four DSL mirrors.
    • Fix: CSV import no longer fails when a column parses to a JS Date (folded back to ISO string).
    • Fix: dashboard record search box text no longer leaks between project switches.

2.9.0

Minor Changes

  • d05e56c: Add variable-length (multihop) traversal and cycle detection to SearchQuery

    $relation.hops — traverse a relationship pattern up to N hops in a single where block, without naming intermediate records:

    db.records.find({
      labels: ['EMPLOYEE'],
      where: {
        EMPLOYEE: {
          $alias: '$manager',
          $relation: { type: 'REPORTS_TO', direction: 'out', hops: { min: 1, max: 4 } },
          name: { $contains: 'Alice' }
        }
      }
    })
    

    hops accepts an exact count (hops: 3) or a range ({ min?, max? }, min defaults to 1). type and direction apply to every hop; the nested label and its criteria constrain only the endpoint record. Omitting type traverses any relationship — RushDB's internal property metadata edges are automatically excluded, so untyped traversal never leaves the user's data model.

    $cycle — find records sitting on a closed path back to themselves (fraud rings, circular ownership, dependency cycles):

    db.records.find({
      labels: ['ACCOUNT'],
      where: {
        $cycle: { type: 'TRANSFERRED_TO', direction: 'out', hops: { min: 2, max: 6 } }
      }
    })
    

    $cycle is a record-level predicate: its value is the traversal spec itself (type, direction, hopshops mandatory, min ≥ 2, defaulting to 2). A cycle has no separate endpoint, so it accepts no $alias, no property criteria, and no nested labels. Combine with $not to select records not on a cycle.

    Traversal depth policyhops.max is capped per deployment via RUSHDB_MAX_TRAVERSAL_HOPS (default 10) on the shared cloud connection. Self-hosted deployments (RUSHDB_SELF_HOSTED=true) and projects with a custom external Neo4j allow unbounded traversal (max omitted), guarded by the existing transaction timeout.

    Also in this release:

    • New SDK types: TraversalHops and TraversalRelationOptions (TypeScript); matching TypedDicts in the Python SDK.
    • NL→query (smart search), the MCP server spec/tools, and the query-builder/data-modeling skills all understand hops and $cycle.
    • Docs: full operator reference in Where Operators, updated hierarchy-modeling tutorial, and a new "Detecting Fraud Rings" tutorial.

2.8.1

Patch Changes

  • 8fece4f: Remove redundant api guard

2.8.0

Minor Changes

  • cb1db5e: Bulk relationships overhaul, Zod validation migration, and a dashboard UI refresh.

    Bulk relationships API

    • Single-pass hash join for relationships.createMany / deleteMany. The key-join path used to re-match the target label once per source record, so an unscoped source side went quadratic — ~2,100 source records timed out at the gateway even when only a handful of pairs were written. The join now enumerates each side once and emits distinct pairs, so cost tracks O(|source| + |target| + pairs) instead of label size. Covered by a new scale regression e2e suite (relationships.createMany.unscoped-scale).
    • manyToMany with join keys no longer requires where scoping. Only the pure cross-product form (no source.key/target.key) still demands non-empty where filters on both sides. Shape errors now surface as structured 400s with guidance instead of raw 500s.
    • Structured 408 on transaction timeouts. Neo4j transactions run under a server-side time budget (default 55s, just under the 60s managed-gateway limit; configurable via NEO4J_TRANSACTION_TIMEOUT_MS). When the budget is exceeded the API answers 408 with actionable guidance instead of a generic 500 — or the gateway's body-less 504.
    • Relationship writes (attach, detach, create-many, delete-many) on managed instances are now metered consistently with the import path; external-DB and self-hosted projects are unaffected.
    • Bulk-relationships guide and REST reference updated to match.

    Validation migrated to Zod

    • Core: all REST request validation moved from Joi to Zod with byte-compatible behavior — unknown body keys are still tolerated and preserved, the Request validation of body failed, because: ... error format is unchanged, and acceptance/rejection semantics are locked in by a new black-box e2e suite (validation.zod-migration) plus unit smoke tests.
    • Dashboard: all forms moved from yup to Zod (zodResolver); yup and joi are dropped from the dependency tree.

    Dashboard UI

    • Tailwind v4 migration with a CSS-first generated theme (theme:generate), @tailwindcss/vite, and tw-animate-css; every element and component restyled against the new theme. The docs site moved to Tailwind v4 as well.
    • Record and property sheets refactored into docked side panels.
    • Colorful property type icons.

    Fixes and DX

    • Dev-mode startup now probes the actual configured bolt connection for readiness instead of guessing the Neo4j HTTP port, so remapped or multiple local instances no longer confuse the health check.
    • .env.example documents the new NEO4J_TRANSACTION_TIMEOUT_MS knob.

Patch Changes

  • b00c545: Fix side effects (project stats recount, schema cache recompute, relationship suggestions) computing against pre-commit state for writes made inside a user-defined transaction.

    Writes wrapped in a client-managed transaction (x-transaction-id, e.g. every SDK Model write and any db.tx.begin() flow) triggered the post-response side-effect runner while the transaction was still open. The runner read the graph from a fresh transaction, saw none of the uncommitted data, and persisted wrong results — a fresh tx-wrapped import left project stats at {"records":0} and relationship analysis saw an empty schema, so no suggestions ever appeared.

    Side effects now defer while the user-defined transaction is open and run once on POST /tx/:txId/commit, when the writes are actually visible. Non-transactional writes are unaffected.

2.7.0

Minor Changes

  • 772d881: ### Read-only API keys

    API keys now carry a permission level: full access (read & write, the default) or read-only. Read-only keys can query everything — search, labels, properties, relationships, aggregations, semantic search, exports — while every write endpoint is rejected with 403, and the underlying database session is additionally opened in read-only mode as defense in depth. That makes read-only keys safe to embed in client-side code: public demos, dashboards, and prototypes can now query live data straight from the browser.

    • Dashboard: pick the permission level when creating a key; key lists show each key's level.
    • MCP server: automatically detects the key's access level and hides write tools for read-only keys, so agents only see what they can actually call.

    Bulk import: dramatically faster and more reliable

    createMany / importJson / importCsv previously paid a fixed multi-second overhead per request that grew with project size — on larger projects imports could hit the 30s transaction ceiling and fail outright. This release removes that overhead entirely (read-model refresh now runs after the response instead of inside the request transaction) and rewrites the mergeBy upsert match to use index-capable property lookups instead of a full per-row scan.

    In practice: batches that previously timed out now complete in seconds, concurrent bulk imports work, and upserts stay idempotent — verified end-to-end at tens-of-thousands-of-records scale. On top of that, the default server-side transaction budget was doubled from 30s to 60s (including the TTL cap for client-managed transactions), giving heavy operations twice the headroom.

    Clearer errors across the stack

    • Server-side transaction timeouts now return 408 with an actionable message instead of an opaque 400 with no body.
    • SDK errors now include the server's error message plus status and body fields on the thrown Error — no more bare Error("400").
    • POST /records with a malformed body (e.g. a mis-named data field) now fails fast with a descriptive 400 validation error instead of a raw database 500.
    • Fixed a crash where a dropped idle Postgres connection could take down a self-hosted instance; the connection pool now recovers automatically.

    Standalone e2e suite

    New self-provisioning end-to-end harness at the repo root: pnpm test:e2e spins up Neo4j + Postgres in Docker, builds and boots the platform, provisions credentials, runs the full platform + SDK test suites (including vector search and raw-query flows), and tears everything down. Point it at an existing stack with E2E_BASE_URL. All JavaScript SDK e2e suites moved from packages/javascript-sdk/tests into e2e/sdk and run against the SDK source.

2.6.1

Patch Changes

  • 54a0767: Update docs

2.6.0

Minor Changes

  • 1c9a994: Refactor Dashboard UI, add query lab, saved queries, optimize performance

2.5.1

Patch Changes

  • 1736715: Update login and onboarding
  • e04be41: Fix docker image build issues

2.5.0

Minor Changes

  • 58c6a45: Add SSO auth path

2.4.1

Patch Changes

  • ffd47f2: Dashboard UI fixes

2.4.0

Minor Changes

  • 5de0ef8: Stability improvements

2.3.3

Patch Changes

  • 913c5cb: Minor fixes

2.3.2

Patch Changes

  • d8f63d7: Add docs search and indexing flow speed up

2.3.1

Patch Changes

  • 1db6db1: Docs update

2.3.0

Minor Changes

  • 7a519f2: Add edge properties support, indexes suggestions, and minor fixes

2.2.1

Patch Changes

  • ec32832: Fix titles of dashboard pages shown on browser tabs

2.2.0

Minor Changes

  • 2e9a82a: Docs update and SDK DX improvements

2.1.1

Patch Changes

  • 5ee52f8: SQL migrations sync fix
  • 149a2da: Minor fixes

2.1.0

Minor Changes

  • 3000fa6: Add relationship patterns suggestions

Patch Changes

  • 5d65783: OpenAI MCP domain verification

2.0.7

Patch Changes

  • 6e712a7: MCP refresh tokens fix

2.0.6

Patch Changes

  • c555b56: Minor docs update
  • 72ee13f: Dashboard help panel improvements

2.0.5

Patch Changes

  • eb50f23: Fix OAuth MCP Flow

2.0.4

Patch Changes

  • bc52537: MCP OAuth API improvements

2.0.3

Patch Changes

  • 7fdb94a: Fix MCP auth flow

2.0.2

Patch Changes

  • 52b5f5c: Fix mcp image
  • fc652b5: Fix docker image build

2.0.1

Patch Changes

  • b1a491a: Fix chunks size in dashboard distro

2.0.0

Major Changes

  • 07920fb: Move website out of monorepo
  • 3b25fad: Major update: native sematic search, ontology api, agentic skills

Minor Changes

  • 1e0acac: Decoupling billing from a platform
  • d3156cb: Add native vector support and docs update
  • bba13b1: Add editing functionality in dashboard
  • 5043f13: Add skills package
  • 6631e4a: Introducing select clause to SearchQuery
  • b351ce4: Refactor dashboard
  • 7bfea19: Add tutorials and BYOV feature
  • edd8598: Improve separation between os and cloud versions
  • f1ac305: Add oauth and mcp improvements
  • 0786d74: Update docs portal
  • 1275daf: Update docs portal & minor dx improvements

1.19.1

Patch Changes

  • 78e6672: Fix deduplication issue for nested upsert

1.19.0

Minor Changes

  • 865ba18: Add merge/upsert for bulk importing or single record creation

1.18.0

Minor Changes

  • 488c1d1: createMany & importJson separation plus minor export and import improvements

1.17.0

Minor Changes

  • 71ca63f: Add MCP Server package

1.16.0

Minor Changes

  • fb311f9: Add timeBucket aggregations

1.15.3

Patch Changes

  • 32bd9c1: Increased requests limits for Throttler

1.15.2

Patch Changes

  • 9b25c07: Make int txn optionally closed after commit

1.15.1

Patch Changes

  • 954ab72: Fix ts bug in aggregations

1.15.0

Minor Changes

  • 7f19708: ## Summary Adds first-class grouping support to the Search API (groupBy) across core, JavaScript SDK, dashboard, website, and docs. Also standardizes terminology (uniq -> unique), refines aggregation semantics, and updates documentation with a dedicated grouping concept page.


    ✨ New Feature: groupBy Clause

    You can now pivot / summarize search results by one or more keys. Keys reference an alias + property (root alias is implicitly $record).

    Example (JS SDK):

    const dealsByStage = await db.records.find({
      labels: ['HS_DEAL'],
      aggregate: {
        count: { fn: 'count', alias: '$record' },
        avgAmount: { fn: 'avg', field: 'amount', alias: '$record' }
      },
      groupBy: ['$record.dealstage'],
      orderBy: { count: 'desc' }
    })
    // → rows like: [{ dealstage: 'prospecting', count: 120, avgAmount: 3400 }, ...]
    

    Key capabilities:

    • Multiple grouping keys: groupBy: ['$record.category', '$record.active']
    • Group by related aliases (declare alias in where traversal first)
    • Works with all existing aggregation functions (count, sum, avg, min, max, collect, similarity, etc.)
    • Ordering applies to aggregated rows when groupBy is present
    • Requires at least one aggregation entry to take effect

    Result shape when using groupBy: each row contains only the grouping fields plus aggregated fields (raw record bodies are not returned unless you also aggregate them via collect).


    🔄 Aggregation & Semantics Updates

    • collect results are unique by default. Set unique: false to retain duplicates.
    • Aggregation entries now consistently use the unique flag (replacing legacy uniq).
    • Distinct handling for grouped queries unified under the unique option.
    • Improved Cypher generation: clearer alias usage and property quoting; vector similarity function formatting tightened.
    • Added internal PROPERTY_WILDCARD_PROJECTION support (enables future selective projections) – not yet a public API, but impacts generated queries.

    💥 Breaking Changes

    AreaChangeAction Required
    Schema field definitionsuniq key renamed to uniqueRename all occurrences ({ uniq: true }{ unique: true }).
    Aggregation definitionsAggregator option uniq renamed to uniqueUpdate custom aggregation objects (uniq: falseunique: false).
    Result shape (when using groupBy)Raw record objects no longer returned automaticallyIf you previously expected full records, add a collect aggregation (e.g. rows: { fn: 'collect', alias: '$record' }).
    Default uniqueness for collectNow unique by defaultAdd unique: false if you require duplicates.
    Internal alias constantDEFAULT_RECORD_ALIASROOT_RECORD_ALIASOnly relevant if you referenced internal constants (avoid relying on these).

    If any code or saved JSON queries still send uniq, they will now fail unless a compatibility shim exists (none added in this release). Treat this as a required migration.


    🛠 Migration Guide

    1. Rename all schema property options:
      • Before: email: { type: 'string', uniq: true }
      • After: email: { type: 'string', unique: true }
    2. Update aggregation specs:
      • Before: names: { fn: 'collect', field: 'name', alias: '$user', uniq: true }
      • After: names: { fn: 'collect', field: 'name', alias: '$user' } (omit unique if true)
    3. Reintroduce duplicate collection (if needed): add unique: false.
    4. When adopting groupBy, ensure at least one aggregation is defined; queries with only groupBy are invalid.
    5. Adjust consumer code to handle aggregated row shape instead of full record instances.
    6. For hierarchical drill‑downs: group at the parent level; use nested collect for children instead of adding child keys to groupBy.

    Example Migration (JS)

     aggregate: {
    -  employeeNames: { fn: 'collect', field: 'name', alias: '$employee', uniq: true },
    +  employeeNames: { fn: 'collect', field: 'name', alias: '$employee' },
     }
    

    Adding Grouping

    const deptProjects = await db.records.find({
      labels: ['DEPARTMENT'],
      where: { PROJECT: { $alias: '$project' } },
      aggregate: {
        projectCount: { fn: 'count', alias: '$project' },
        projects: { fn: 'collect', field: 'name', alias: '$project', unique: true }
      },
      groupBy: ['$record.name'],
      orderBy: { projectCount: 'desc' }
    })
    

    📘 Documentation

    • Added dedicated concept page: concepts/search/group-by centralizing all grouping patterns (multi-key, alias-based, nested, uniqueness nuances, limitations).
    • Updated Python, REST, and TypeScript SDK "Get Records" guides with concise grouping sections linking to the concept page.
    • Refactored Aggregations doc to avoid duplication and point to new grouping guide.
    • Standardized examples to use unique terminology.

    🧪 Tests & Internal Refactors

    • Extended aggregate & query builder tests to cover groupBy permutations (single key, multi-key, alias grouping, collect uniqueness flags).
    • Parser adjustments for: property quoting, alias resolution, vector similarity formatting, optional matches, and root alias constant rename.
    • Introduced AggregateContext enhancements to track grouping state.

    ⚠️ Edge Cases & Notes

    • An empty groupBy array is ignored; supply at least one key.
    • Supplying a group key for a property that does not exist yields rows with null for that column (consistent with underlying graph behavior) – validate upstream if needed.
    • Ordering by an aggregation that isn't defined will be rejected; always define the aggregate you sort by.
    • To sort by a group key, just reference it in orderBy using the property name (without alias prefix) after grouping.

    ✅ Quick Checklist

    TaskDone?
    Renamed all uniqunique in schema & aggregations
    Reviewed any collect aggregations for unintended de-duplication
    Added unique: false where duplicates are required
    Updated UI / API consumers for aggregated row shape under groupBy
    Added collect fields if raw record snapshots are still needed
    Added / validated ordering under grouped queries

    Feedback

    Please report any unexpected behavior with grouped queries (especially multi-key or alias-based grouping) so we can refine edge case handling in upcoming releases.


    TL;DR

    Use groupBy + aggregate to pivot results; rename uniqunique; collect is now unique by default; aggregated queries return row sets, not raw records.

1.14.2

Patch Changes

  • 63823d0: Optimize DbContextMiddleware

1.14.1

Patch Changes

  • 9cafe44: Transactions management improvements

1.14.0

Minor Changes

  • 7cd984c: Added records.importCsv method with configurable CSV parseConfig and extended import docs.

1.13.2

Patch Changes

  • ed6063d: Fix missmatching transaction in import service

1.13.1

Patch Changes

  • 2e89930: Safely handling properties with spaces in name

1.13.0

Minor Changes

  • 2b76c22: Add raw cypher query support

1.12.1

Patch Changes

  • d55ae51: Escape stringified JSON characters fix

1.12.0

Minor Changes

  • bd84662: Create many relationships by key(s)

1.11.1

Patch Changes

  • 00d100b: Fix leaking transactions pool

1.11.0

Minor Changes

  • 43109e7: Fix misconfigured identity matching for external databases

1.10.1

Patch Changes

  • 3bc1768: Fix processing boolean response at createMany method

1.10.0

Minor Changes

  • 83b7ee4: Top level aggregations now works in a predicatable manner

1.9.1

Patch Changes

  • 742bee5: fix: changed managedDb property type

1.9.0

Minor Changes

  • 5e7ea2c: Feat: added non-encrypted prefix for token to setup server settings in sdk

1.8.1

Patch Changes

  • c239ad9: Fix: Allowed non-email logins for self-hosted instances

1.8.0

Minor Changes

  • 3312b28: Implemented ISR (Incremental Static Regeneration) for website, update dependencies, update docs, fix 3D view issue for records without a relationship (blank canvas)

1.7.1

Patch Changes

  • b68c596: Fix error on an attempt of mapping result in createMany method

1.7.0

Minor Changes

  • f9a386d: Implement $exists and $type operators

1.6.0

Minor Changes

  • aae7461: Update aggregation behavior: all own properties of top-level record now included by default

1.5.1

Patch Changes

  • 090a6ab: Fix empty projectId for customdb connection

1.5.0

Minor Changes

  • a920ddf: Add cypher query preview

1.4.0

Minor Changes

  • 3b52549: New SDK Architecture and minor bug fixes

1.3.2

Patch Changes

  • 5ec730f: Add server logs and update deployment tutorial

1.3.1

Patch Changes

  • 43d355b: Fix multiple records deletion error

1.3.0

Minor Changes

  • 7f1bf8d: Add onboarding tour

1.2.2

Patch Changes

  • 1720499: fix: simplified delete project flow, fixed orphan props deletion method

1.2.1

Patch Changes

  • 7a4c193: Fix delete records by ids method

1.2.0

Minor Changes

  • 99ac372: Fix label api error, add auth header verification for sdk, values now searchable with SearchQuery, update docs, user can now leave workspace

1.1.0

Minor Changes

  • 1ba17a1: Implemented ordering by aggregated field

1.0.3

Patch Changes

  • 3d3da80: Remove the billing tab for developers the workspace layout

1.0.2

Patch Changes

  • da7874f: fix: improved invitation accept flow, normalized checkers for invitee emails

1.0.1

Patch Changes

  • 2f1f084: Add local neo4j plugins and fix create method payload

1.0.0

Major Changes

  • 9d10588: # RushDB 1.0 🚀

    We're thrilled to announce RushDB's first major release with significant new capabilities:

    Key Features

    • Vector Search: Added comprehensive vector search functionality with similarity aggregates and query builder support
    • Member Management: Implemented complete workspace membership system with invitations, user access controls, and per-user project assignments
    • Remote Database Connectivity: Added support for remote Neo4j/Aura connections, expanding deployment options
    • Authentication Enhancements: Added Google OAuth support and improved user authorization flows
    • Documentation Overhaul: Completely reworked documentation with new tutorials and clearer guides

    Security & Administration

    • Improved user access control with revoke-access endpoint and normalized user deletion
    • Enhanced @roles guard implementation for better permission handling
    • Added workspace billing accuracy improvements
    • Implemented recompute-access-list functionality

    This major release represents a significant milestone in RushDB's development with enterprise-ready features and improved developer experience.

0.17.1

Patch Changes

  • f0a395c: SEO Optimizations

0.17.0

Minor Changes

  • 1cdfbf7: Implemented RawApi mode for the dashboard and minor fixes

Patch Changes

  • 29940a0: Fix lock file

0.16.0

Minor Changes

  • 57a566b: Update LP & Relationships UI and Query

0.15.0

Minor Changes

  • 6aa0dca: Update docs
  • bcdf10d: Add llms.txt and llms-full.txt to docs generation

0.14.1

Patch Changes

  • 7bfd0aa: Make label field required in import modal in dashboard

0.14.0

Minor Changes

  • c7936fa: Update billing and limits

0.13.3

Patch Changes

  • 9919a34: chore: website sitemap.xml updated

0.13.2

Patch Changes

  • 646101a: Update website blog

0.13.1

Patch Changes

  • 12d76f6: Update website

0.13.0

Minor Changes

  • d045368: Introduce SDK options

0.12.2

Patch Changes

  • 2019434: Improved local development setup

0.12.1

Patch Changes

  • fe5c5f4: Fix cypher clauses order in querying property values

0.12.0

Minor Changes

  • f703e9c: Update query for fetching property values and minor fixes & cleanups

0.11.6

Patch Changes

  • 633047a: Fix missing return in get transaction method
  • b4599fc: Fix missing label criteria in delete request
  • 837f17a: Extended logger for SDK

0.11.5

Patch Changes

  • c373116: Minor docs update and temporary disabled gh auth

0.11.4

Patch Changes

  • 08b5d22: Fix Dockerfile pnpm version

0.11.3

Patch Changes

  • 5a37f89: Version bump to fix pnpm workflow version

0.11.2

Patch Changes

  • c7bd389: Version bump to fix pnpm workflow version

0.11.1

Patch Changes

  • 4b13961: Fix github ouath login

    Make GraphView responsive

    Fix Password recovery flow

0.11.0

Minor Changes

  • 85038ac: Update readme, website, add python package and examples

0.10.2

Patch Changes

  • 476acdf: Update examples link

0.10.1

Patch Changes

  • 0442ddc: Make SDK Instance method public

0.10.0

Minor Changes

  • f159dfa: Improve type inference for SDK

0.9.5

Patch Changes

  • 7ea9151: Update bundling for SDK and minor typo fixes
  • fc33a7e: Fix types import and export issues

0.9.4

Patch Changes

  • 09e2d57: Update docs, minor fixes and cleanups

0.9.3

Patch Changes

  • 22ce867: billing setup update for dev/prod envs

0.9.2

Patch Changes

  • eafe1b5: updated secret credentials

0.9.1

Patch Changes

  • b055539: Dashboard/website: Introduced start plan, updated dashboard && website layouts

0.9.0

Minor Changes

  • 6cc7392: Release 0.9.0 version with updated billing

0.8.1

Patch Changes

  • 3d65528: Core/Dashboard/Website now accept billing data from internal billing service instead of hardcoded values

0.8.0

Minor Changes

  • 49e3153: Dependencies update & landing page rework

0.7.2

Patch Changes

  • c32b9bf: Aggregations minor fixes

0.7.1

Patch Changes

  • 0551051: Restore original skip & limit behaviour for nested search

0.7.0

Minor Changes

  • 5470782: Fix result cut-off for nested queries and url parsing in node.js env at sdk's networking

0.6.0

Minor Changes

  • 6ec52f2: Add simple backup module, cli command and minor fixes

0.5.0

Minor Changes

  • 3112626: Implemented logger feature for sdk

0.4.1

Patch Changes

  • 070d094: Minor cloud update

0.4.0

Minor Changes

  • 0e04a46: Version bump

Patch Changes

  • 4f83de0: Minor fixes and updates
  • defeaf0: Minor fixes and updates

0.3.1

Patch Changes

  • d3b73ac: Minor fixes

0.3.0

Minor Changes

  • 70d108d: CLI commands & datetime helpers in the Javascript SDK

0.2.10

Patch Changes

  • 89f2783: Update readme and license

0.2.9

Patch Changes

  • 9580ede: Update infrastructure and minor fixes

0.2.8

Patch Changes

  • 1cf62ae: Minor fixes and cleanups

0.2.7

Patch Changes

  • 147cc2b: Build docker image only on version bump

0.2.6

Patch Changes

  • 89852a4: Update docker image release

0.2.5

Patch Changes

  • cd0be33: Release flow improvements

0.2.4

Patch Changes

  • 3741a7e: Release workflow change

0.2.3

Patch Changes

  • c7f1eb9: Update workflow

0.2.2

Patch Changes

  • de0fb17: Update release workflow

0.2.1

Patch Changes

  • f934b0f: Bump version

0.2.0

Minor Changes

  • cb1e4be: Update readme, cleanups, build public image