Automerge backed Markdown editor for the Atmosphere
Something went wrong. Try again.
Dataview compatibility evidence ledger #
This document records demonstrated behavior only. A passing unit or Playwright test is not evidence of support without the equivalent Chromium journey.
All evidence below was captured via agent-browser against the real vendored
Dataview 0.5.68 release installed from http://localhost:7417/test-plugins/dataview.
Installation and settings #
- Status: supported.
- Agent-browser steps:
- Opened
http://localhost:7417in a named session. - Settings → Obsidian Plugins.
- Entered
http://localhost:7417/test-plugins/dataviewin "Install from URL". - Clicked "Install from URL".
- Opened
- Screenshot:
docs/dataview-evidence/02-after-install-click.png. - Console after install:
Dataview: version 0.5.68 (requires obsidian 0.13.11)andDataview: all 1 files have been indexed in 0.034s. - DataviewAPI exposed on
window.DataviewAPI;index.initialized === true. - Settings tab renders all expected settings (inline queries, DataviewJS, view,
tables, tasks). Screenshot:
docs/dataview-evidence/03-dataview-settings-tab.png. - DataviewJS is disabled by default (
enableDataviewJs: false). Adataviewjscode block renders: "Dataview JS queries are disabled. You can enable them in the Dataview settings." Screenshot:docs/dataview-evidence/10-dataviewjs-disabled.png.
Disable / re-enable #
- Status: supported.
- Agent-browser: toggled
[aria-label="Toggle Dataview"]off → DataviewAPI becomesundefined. Toggled back on → DataviewAPI returns asobject,index.initialized === true.
Reload persistence #
- Status: supported.
- Agent-browser: full page
reload→wait --load networkidle→wait 5000. - After reload: DataviewAPI exists,
index.initialized === true,index.revision === 3,pagesSize === 3. Data document'spriorityandstatusinline field survived (priority=2, status=archived from prior edit).
CM6 token and traversal compatibility #
- Status: supported.
- The custom
syntaxTreecallback wrapper was removed; nativesyntaxTreefrom@codemirror/languageis now exposed directly throughcodemirrorLanguageModule. tokenClassNodePropis configured on the actual parser insrc/editor/markdown-language.tsand verified interactively:InlineCodenode →tokenClassNodeProp = "inline-code".CodeMarknode →tokenClassNodeProp = "formatting".
- Regression test:
src/plugin/loader/__tests__/plugin-api-global.test.ts("preserves native Lezer iterate callback values for both access styles"). - Section regression coverage:
extract-metadata.test.tsverifies zero-based ranges, fenced blocks, unclosed fences, indented code, and list sections.
Metadata index #
- Status: supported after adding
sectionsto the metadata cache. - Root cause of missing inline fields: Dataview's worker iterates
metadata.sectionsto find inline fields on paragraph lines. Reams'extractMetadatadid not producesections, sofieldswas always empty. - Fix: added
buildSections()insrc/services/metadata/extract-metadata.tsthat classifies lines into frontmatter, code, list, heading, and paragraph sections with properpositionranges. - Verified interactively:
data.mdpage now hasfields = { priority: 1, tags: ["project"], status: "active" }(previouslystatuswas missing). - Frontmatter, links, tags, list items, and task extraction have focused
coverage (
extract-metadata.test.ts,metadata-cache.test.ts).
Reading view and query rendering #
- Status: supported.
- Two documents created via
vault.create():data.md: frontmatter (priority, tags), inline field (status:: active), task (- [ ] Ship the indexed task).query.md: inline query (= this.priority), TABLE, LIST, TASK queries withFROM "data.md" WHERE priority = 1.
- Screenshot:
docs/dataview-evidence/05-query-reading-view-with-inline-fields.png. - Visible TABLE result:
File=[[data.md|data]],file.name=data,priority=1,status=active. - Visible LIST result:
[[data.md|data]]: data. - Visible TASK result: checkbox (unchecked) + "Ship the indexed task".
- Inline query
= this.priorityin query.md shows-(null), which is correct because query.md has nopriorityfield.
Reactivity (edit data doc, query doc refreshes without reload) #
- Status: supported.
- Agent-browser: modified
data.mdviavault.modify()(priority 1→2, status active→archived, task incomplete→complete). Did NOT modify query.md. - After waiting for Dataview's refresh interval (2500ms), query.md reading view:
- TABLE: 0 results ("No results to show for table query").
- LIST: 0 results.
- TASK: 0 results.
- This proves inclusion/exclusion refresh without reloading the page.
- Screenshot:
docs/dataview-evidence/07-read-view-after-rerender.png. - query.md content verified unchanged via
vault.read().
Live Preview #
- Status: supported. Live Preview replaces
`= this.priority`with the evaluated value7when the cursor is outside the query. - Reams now parses code-span delimiters as adjacent
CodeMarknodes and the content asInlineCode, matching the delimiter-freeinline-codetoken range Dataview's Live Preview extension consumes. This retains nativesyntaxTreebehavior and avoids a cursor-wrapper compatibility layer. - Screenshot:
docs/dataview-evidence/11-live-preview-inline-query.png.
createFragment global #
- Status: supported.
- Dataview's settings tab calls
createFragment()(a global Obsidian function). - Added
window.createFragmentininstallPluginApiGlobal()alongsidecreateDivandcreateSpan.
DataviewJS #
- Status: supported (default disabled).
enableDataviewJs: falseby default. Adataviewjscode block renders a clear message: "Dataview JS queries are disabled."- Enabling DataviewJS in settings allows JS execution in the browser context (same security boundary as Obsidian desktop).
Remaining required journey #
- Metadata edge cases: sibling/nested tasks, multiline ranges, and parent lines still need comparison against real Dataview output.
- Final clean-browser journey from install through query, reactivity, Live Preview, settings, and reload with zero console errors.