Skip to content

LogosDB v1.0.0

Latest

Choose a tag to compare

@jose-compu jose-compu released this 17 May 19:24
· 6 commits to main since this release

LogosDB 1.0.0

First stable, production-ready release. This milestone covers everything shipped since v0.12.0 plus a hardening and quality pass specifically targeting the 1.0.0 bar.


🚀 New features

  • Smart Chunking (#98, #112) — new auto / line / section / legacy chunking modes. auto detects the best strategy from file extension: line-window for code, section-aware for Markdown / RST, paragraph-fallback for everything else. Configure globally via LOGOSDB_CHUNK_MODE or per-call via the chunking parameter of logosdb_index_file.
  • Incremental index fingerprints chunkMode (#112) — changing the chunking strategy on an existing incremental namespace forces a clean re-index automatically. Old manifests (no chunkMode) compare equal to auto to avoid a forced mass re-index on upgrade.
  • Codex semantic memory plugin (#78, #106) — first-class MCP integration for Codex/OpenAI Agents.

🔒 Security & hardening

  • UTF-8 NFC normalization + bidi/invisible-char rejection (#109, #112) — all user-provided text is normalized to NFC before indexing; bidirectional control characters and zero-width characters are rejected outright.
  • Path traversal hardening — MCP (#108, #112) — resolveIndexablePath and collectFilesSafe in security.ts block null bytes, .. traversal, and symlink escapes.
  • Path traversal hardening — Python adapter (#111, #112) — vibe.py now uses os.walk(followlinks=False) and per-entry confinement checks; single-file indexing rejects symlinks. _resolve_confined helper raises ValueError on any path that escapes index_root.

🧪 Tests (251 passing + smoke)

  • chunker.test.ts (97 tests, #110) — all four modes, targetChars=1, overlapChars=0, CRLF, ATX + Setext headings, large-section sub-splitting, Unicode stress, offset monotonicity invariants.
  • security.test.ts (59 tests, #110) — full C0/C1 control-char matrix, all bidi/invisible Unicode ranges, NFC/NFD/Hangul/emoji, null-byte paths, double symlink escapes, all SKIP_DIRS, hidden directories, deep nesting.
  • Live MCP stdio smoke test confirms logosdb_search, logosdb_index_file, logosdb_list are registered on every build.

🐛 Bug fixes

  • sanitizeEntry in file-index-manifest.ts no longer serializes chunkMode: undefined — omitting the key preserves round-trip deepStrictEqual and backward compatibility with pre-1.0.0 manifests.
  • splitLongText helper correctly sub-splits single paragraphs larger than targetChars (no internal blank lines), fixing section-mode sub-splitting and legacy-mode overlap carry.

📦 Package bumps

Package Previous Now
logosdb (Python / PyPI) 0.12.0 1.0.0
logosdb (Node.js / npm) 0.12.0 1.0.0
logosdb-mcp-server (npm) 0.12.0 1.0.0
logosdb-n8n-node (npm) 0.12.0 1.0.0
C++ project (CMakeLists.txt) 0.9.0 1.0.0
PyPI classifier Alpha Production/Stable

⚠️ Migration notes

  • The chunk(text, chunkSize) two-argument call still works unchanged (legacy mode). The preferred signature is now chunk(text, { targetChars, mode, filePath }).
  • Existing incremental namespaces are not force-re-indexed on upgrade (old entries are treated as auto). To switch a namespace to the smart chunker, run logosdb_index_file once with incremental: false.

Full Changelog: v0.12.0...v1.0.0