Repository navigation
Releases: intellectronica/mdbasequery
Releases · intellectronica/mdbasequery
Release list
v0.0.3
mdbasequery 0.0.3 fixes file.ext compatibility with Obsidian Bases.
- File extensions now omit the leading dot:
file.ext == "md"correctly selects Markdown notes. - The fix applies to indexed notes,
this.file, and file records resolved from links.
If your queries compare file.ext with ".md" or ".base", update them to use "md" or "base".
v0.0.2
mdbasequery v0.0.2
Comprehensive release addressing all 25 tracked improvement issues across P0 correctness, P1 performance, and P2 usability.
P0 — Correctness
- and/or operand values:
and/or/&&/||operators return evaluated operand values per JavaScript and Obsidian Bases semantics (#1). - Strict identifier validation: Strict mode (default) validates all identifiers against the vault's frontmatter key union and engine symbols, catching typos while supporting heterogeneous vaults (#2).
- CRLF & EOF frontmatter: Frontmatter parser handles CRLF line endings, BOM prefixes, and EOF-terminated closing fences (#3).
- Frontmatter date coercion: Date and DateTime frontmatter values are coerced to
Dateobjects, enabling.format(), Moment tokens, and chronological comparisons (#4). - Clean grouped output: Group rows now output projected records without leaking file internals (#5).
- Moment format tokens: Full Moment-compatible token walker for
date.format()supporting ordinals, 12h clock, epochs, and bracketed escapes (#6). - List stat methods: Added
.mean(),.sum(),.min(),.max()to list methods (#7). thisfile object:thisis now a proper file-like record representing the base file (#8).- Plain string equality:
.mdpath normalisation in==applies only when at least one operand is a Link or File (#9). - String literal escapes: Expression parser decodes standard escape sequences (#10).
- Code block tag isolation: Tag extractor ignores hashtags inside code blocks and inline code (#11).
- Link target sanitization: Excluded embeds and external URLs from
file.links(#12). - Type-ranked sort comparator: Consistent sorting with empty/nullish values sorted last in both directions (#13).
- Unambiguous basename backlinks: Backlink and file resolution strictly avoids collisions across folders (#14).
P1 — Performance
- AST caching & eval context reuse: Pre-compiled property expressions and single evaluation context allocation per row (#15).
- Bounded-concurrency indexing: Parallel markdown file reads (32 in-flight workers) (#16).
- Memory footprint: Dropped
FileRecord.rawretention after metadata extraction (#17). - Lazy formula evaluation: Evaluates filter-required formulas first, evaluating remaining display formulas only on matching notes (#18).
- Benchmark harness: Added
bench:gensynthetic vault generator andbenchtiming runner (#19).
P2 — Usability & Tooling
properties.displayName: Preserved property configs and rendered display names in CSV/MD headers andcolumnLabels(#20).- CLI polish: Added
--version/-v, updated help text, prevented conflicting query flags with--base, created missing parent directories on--out, and emitted--debugstats to stderr (#21). - Serialization safety: Neutralized formula injection in CSVs, converted newlines to
<br>in Markdown tables, and added grouped table rendering (#22). - Diagnostics & error formatting: Expression errors include source text, role, and caret position indicator; schema validator warns on unknown keys and view types (#23).
- Obsidian compatibility: Coerced frontmatter wikilinks to Link objects, strict
link.asFile()returnsnullfor missing files, added numeric fields to duration (.days,.hours, etc.), and documentedrandom()divergence (#24). - Conformance & linting: Added Biome linter and a 10-test cross-runtime conformance suite for Node.js and Deno (#25).