Skip to content

Releases: Yamlink-Labs/yamlink

0.7.3 - Hotfix

Choose a tag to compare

@javierigaciorm javierigaciorm released this 04 Jul 02:03

Yamlink 0.7.3 — Hotfix

A small hotfix release on top of Sugar (0.7.0).

Fixed

  • Sample-vault race condition — installing the extension while multiple VS Code project windows were already open could activate it in all of them near-simultaneously. A check-then-set race on a machine-wide first-run flag meant every open project could silently get a sample vault's Markdown files copied into it. First-run setup is now a per-workspace, opt-in prompt — "Add a sample Yamlink vault here to explore its features?" — and nothing is written to disk without explicit consent.
  • Graph renderer fixes:
    • Hover/focus dimming was an O(edges-per-node) scan on every frame — now an O(1) lookup, no longer scales with graph density.
    • Pan-and-release momentum decayed twice as fast on 120Hz+ displays as on 60Hz — now normalized to real elapsed time between frames.
    • A cached hit-target for the zoomed-out cluster-bubble view could go stale under certain zoom transitions — now invalidated correctly every frame.
    • Cluster boundary hull outlines — fully built during Sugar but disconnected from the render loop in a later refactor — are wired back in, visible in semantic layer mode.

Changed

  • Sample "sandbox" content has moved out of this repo into its own separate repository.

Full changelog: see CHANGELOG.md

0.7.2 - Hotfix

Choose a tag to compare

@javierigaciorm javierigaciorm released this 01 Jul 00:01

0.7.2 — Hotfix

No user-facing changes beyond the sidebar icon.

Fixes the Yamlink activity bar icon not rendering correctly in VS Code — the previous PNG had a white background which prevented VS Code from applying theme colors. Replaced with a proper SVG so it renders correctly on both dark and light themes.

0.7.1 - Hotfix

Choose a tag to compare

@javierigaciorm javierigaciorm released this 30 Jun 21:22

0.7.1 — Hotfix

No user-facing changes.

Fixes a CI failure introduced after 0.7.0 — TypeScript's tsc --noEmit check (which runs in CI but not locally) surfaced ~70 latent type annotation gaps across 15 files accumulated during the Sugar build. All fixed. Three of the fixes also corrected silent production bugs in the Note Report history panels and vault intelligence snapshot logic.

Yamlink 0.7.0 — "Sugar"

Choose a tag to compare

@javierigaciorm javierigaciorm released this 30 Jun 19:47

Sugar (0.7.0) — Five surfaces, one engine

Sugar takes the first step into Yamlink, a VS Code extension, to a platform, an engine. The same vault engine now runs in five places: the VS Code extension, a full CLI, a local HTTP API, a keyboard-driven terminal workspace (Conduit), and an LSP server for any editor. Every surface reads and writes the same vault, shares the same intelligence layer, and appends to the same mutation log.


Conduit

yamlink with no arguments opens Conduit — a full keyboard-driven terminal workspace for your vault. Nine screens accessible by number key: Briefing [1], Query [2], Navigator [3], Explorer [4], Health [5], Search [6], Graph [7], Diff [8], Radar [9]. Press | to split into two independent panes sharing one live vault connection.

From Explorer: edit frontmatter (e), create notes (n), delete (D), build wikilinks (l), multi-select with bulk ops, open a full Markdown reading view (v), peek note detail without leaving the screen (p), view mutation history (H), and traverse the graph with ]/[. Quick Capture (c) is available from any screen. Spatial bookmarks (m0m9) and saved contexts (S/R) persist across sessions. Type any character from a non-input screen to trigger Warp — a live ranked fuzzy finder across notes, types, and commands.

Briefing opens with a compact session delta: what changed since you were last here.


CLI

24 commands covering the full headless vault loop. --json everywhere. CI-safe.

build · query · report · briefing · health · validate · doctor · search · diff · create · rename · set · link · mutations · on · graph · schema · status · watch · serve · export · init · completions · conduit

Notable additions:

  • yamlink set <id> <field> <value> — write a frontmatter field directly. --dry-run previews, --clear removes.
  • yamlink link <id> <field> <target> — set a relation field. Validates the target exists. --append for multi-value fields.
  • yamlink on <event> -- <script> — vault automation hooks. Fires a shell script on matching mutation events with full context in env vars.
  • yamlink completions bash|zsh — shell completion script.

Local API

yamlink serve exposes the vault as a REST API on 127.0.0.1.

Read: GET /api/nodes, /api/nodes/:id, /api/search, /api/query, /api/graph, /api/tasks, /api/mutations, /api/health, /api/schema, /api/diff, /api/intelligence/note, /api/intelligence/arc, /api/intelligence/fieldCategory

Write: POST /api/nodes, POST /api/nodes/bulk, PATCH /api/nodes/:id, PATCH /api/nodes/bulk, DELETE /api/nodes/:id

Events: GET /api/events — Server-Sent Events stream. Every mutation and every rebuild pushed live. Every response carries X-Yamlink-Generation so clients know when their data is stale.


LSP

yamlink serve --lsp starts a JSON-RPC 2.0 server over stdio — 25 handlers across completion, hover, inlay hints, semantic tokens, definition, references, document symbols, workspace symbols, rename, code actions, diagnostics, and formatting. Neovim, Zed, Helix, and Emacs users get vault-ranked wikilink completion, hover cards, broken link diagnostics, and exact-line block reference navigation.


VS Code

Block and section references. Every heading, task, blockquote, and footnote now has a stable block ID (h-{slug}, t{n}-{hash}, q{n}-{hash}, fn-{id}). note#Heading links to a section. note^block-id links to a specific task, quote, or footnote. Six commands give cursor-aware single-keystroke access — no picker needed when your cursor is already on the block. Go-to-definition lands on the exact source line. Hover shows the block's content. Completion surfaces the full block index with type labels and line numbers.

Visual Query Builder. Yamlink: Query Builder — a View → Shape → Preview flow with type, column, filter, sort, and layout controls. Shows the exact generated !view text and live sample rows before inserting. Table, matrix, bar, and scatter layouts.

Note Outline panel. Section tree with per-heading metadata: anchor link count, task count, body mention count, word count. Current-section tracking as you scroll. Ctrl+Alt+↑/↓ for sibling section jumps. Search and filter. Section references copyable directly from the tree.

Chart views. Any !view result can be visualized as a bar chart (with group-by field picker) or scatter plot (auto-selects first two numeric or date fields as axes).

Live Note mode. Yamlink: Open Live Note — a compact rendered sidecar synced with the active note while you write in source. Frontmatter fields, headings, and !view blocks are clickable back to their source line.

Home panel rework. Two-tab layout: Home (continue-working notes, task groups, activity feed, nudge cards) and Stats (activity heatmap with hover tooltips, type distribution donut, link density histogram, lifecycle state bar, weekly growth sparkline).

Task notifications. VS Code popups for overdue and due-today tasks, deduped by vault state. Per-vault settings for type, frequency, and count.

Vault Projections. 90-day structural forecast in Vault Health and Home: Growth, Stale Pressure, and Structure Direction lanes with type-family breakdowns and scenario modeling.


Intelligence

  • Behavioral priors feed live inference — recent relation edits bias completion ranking in real time
  • Outcome calibration: accepted completions write completion_accepted events; the classifier boosts confidence on that field for subsequent interactions
  • Cluster emergence detection: groups of notes with identical field signatures surfaced as proposed schema candidates, with a one-click "Create schema from cluster" action
  • Arc prediction: likely-missing fields ranked by vault frequency and calibration history, with one-click insertion from the Note Report
  • All static archetype tables removed — intelligence is fully vault-derived; a zero-history vault starts silent and grows more specific over time

Imports

First-pass importers for Obsidian, Notion, Roam Research, and Evernote. Post-import cleanup actions for IDs and wikilinks.

Import feedback wanted. Real export files vary more than synthetic tests can cover. If something came out wrong, open a thread in GitHub Discussions with your platform and what you saw.


Under the hood

  • x-graph cluster aggregation at zoom < 0.22 for vaults with 400+ nodes; incremental layout fast-path for small graph changes
  • VaultService shared write coordinator — API, CLI, and LSP all serialize through mutate() for consistent rebuild, mutation log, and generation bump
  • Vault Health trend arrows on broken links and orphan nodes
  • note_touched events on body-only saves so Note Report History no longer freezes on content edits
  • 1972 tests, 0 failures

v0.6.2 — Hotfix

Choose a tag to compare

@javierigaciorm javierigaciorm released this 10 Jun 20:24

0.6.2 - Patch

What happened

A blanket node_modules/** rule in .vscodeignore was stripping all runtime dependencies from the published extension. Anyone installing from the Marketplace would see the
extension fail immediately on activation:

Cannot find module js-yaml

Fix

Explicitly re-included all 26 runtime packages (js-yaml, markdown-it, pdfkit and their transitive dependencies) in .vscodeignore. No feature changes, no API changes.

Action required

If you were affected, updating to 0.6.2 from the VS Code Extensions panel will fix it. No other steps needed.

0.6.1 "Shujimi"

Choose a tag to compare

@javierigaciorm javierigaciorm released this 07 Jun 22:52

Yamlink 0.6.1 — Hotfix

Quick fixes tu natural language queries, which returned empty results on every vault since 0.6.0.

What Was Wrong

Yamlink: Query in Plain English generated syntactically invalid !view blocks.

Every pattern produced:

!view where type = character

But the query parser reads the first word after !view as the type name, so it saw where as the type and matched nothing.

What's Fixed

All 16 query patterns now generate correct syntax:

!view character
where status = active

instead of the broken single-line form.

Every natural language pattern was affected:

  • bare type queries
  • status filters
  • date filters
  • field filters
  • grouping
  • relation queries

How To Verify

  1. Open the command palette.
  2. Run Yamlink: Query in Plain English.
  3. Type:
show me all [your type]
  1. Confirm that the generated query now reads:
!view <type>
  1. Run it and verify that it returns results.

Full release notes for 0.6.0 Shujimi are in the previous release:

Shujimi 0.6.0 release notes

0.6.0 "Shujimi"

Choose a tag to compare

@javierigaciorm javierigaciorm released this 07 Jun 22:26

Yamlink 0.6.0 — Shujimi

Shujimi is the headless and depth release. The vault is now a data platform.

The Big Story

  • Yamlink now runs without VS Code — the CLI gives full headless vault access.
  • The intelligence system is fundamentally different: vault-first, no hardcoded rules, learns from how you actually work.
  • The Home panel gives the vault a front door — activity stream, pulse, continue working.
  • Natural language queries let you describe what you want in plain English.

What's New

Yamlink CLI

Run Yamlink from a terminal, CI pipeline, or build script. No VS Code required.

yamlink build    # index vault, report broken links — exits 1 in CI
yamlink health   # lifecycle state, type distribution, drift
yamlink validate # schema conformance — exits 1 if required fields missing
yamlink query "where type = contact and status = active"
yamlink report rico   # full note report in the terminal
yamlink links rico    # all inbound and outbound links
yamlink serve         # local HTTP API: /api/nodes, /api/query, /api/graph
yamlink export        # dump vault to JSON or CSV

yamlink serve exposes the vault as a local REST API. Any website framework such as Next.js, Astro, or Eleventy can read your vault at build time. Notes become pages, frontmatter becomes metadata, and wikilinks resolve to URLs. Vault as CMS, files stay plain Markdown.

Intelligence Overhaul — Four Phases

The intelligence layer is now fully vault-first. No static field-name lists. No hardcoded type lookups. No global archetype tables.

Phase 1 — Cold-Start Awareness

One typed [[wikilink]] in a field is enough to classify it as a relation. Vault maturity scales confidence thresholds, so a 3-note vault gets useful suggestions from day one.

Phase 2 — Sticky Knowledge

The mutation log records every wikilink assignment. A field used as a relation before stays classified as relational even after vault restructuring — the system doesn't forget.

Phase 3 — Vault-First Classification

Field names are the last resort, not the first.

  • status: [[rico]] becomes a relation.
  • disposition with values like active and standby becomes workflow state, detected from your vocabulary, not a global list.
  • Note roles are inferred from field-bundle topology.

Phase 4 — Outcome Calibration

Every relation completion you accept with Enter or Tab on a [[ candidate is persisted as a training signal. Confirmed fields get a confidence boost next time. The vault trains the system from use.

Note Arc Prediction

Yamlink now answers: "what does this note need next?"

The Note Report Overview tab shows a Likely missing section: fields that appear on 60%+ of same-type notes that this note doesn't have yet, ranked by vault frequency and calibration history.

Each row has a + button. Click it to insert the field stub and trigger completion in one step.

Arc-predicted fields also appear in frontmatter completion with a badge like:

in 80% of contact notes · likely missing

Home Panel

Yamlink: Open Home — the vault's front door.

  • Pulse bar — note count, type count, broken link count
  • Activity feed — last 15 mutation events as a human-readable timeline; each entry opens the note
  • Continue working — 5 most recently touched notes, one click to open
  • Quick actions — New note, Today (daily note), and per-vault type buttons

The Home panel auto-opens on first vault activation and shows an onboarding welcome on new vaults.

Natural Language Queries

Yamlink: Query in Plain English — describe what you want, get a !view block.

Type:

active contacts I haven't updated in 30 days

Get:

!view contact where status = active and file.modified < days-ago(30)

This is powered by 16 sentence templates with full vault vocabulary injection — your types, fields, workflow values, and IDs. The generated query is previewed before insertion.

Daily Notes

Ctrl+Alt+J opens or creates today's journal note. It uses _templates/journal.md if it exists.

Journal notes are first-class:

  • queryable
  • linkable
  • visible in the Calendar

Unlinked References

The Note Report Links tab now surfaces body-text mentions of the current note's name or ID from other notes, even without a formal [[wikilink]].

This is the Roam Research discovery pattern: organic mentions appear before you formalize the link.

Note Splitting

Yamlink: Extract Selection to New Note

Select body text and run the command.

  • The selection becomes the body of a new note.
  • The original is replaced with ![[new-id]].
  • source: [[original-id]] is written into the new note automatically.

Smart Templates

_templates/*.md files now act as live schema definitions.

When you save a template with new fields, Yamlink scans the vault and asks:

Template 'contact' has new fields. Apply to N notes?

Notes missing template fields get a yellow squiggle on the type: line with a lightbulb fix such as:

Yamlink: Add missing "contact" fields (company, status)

Schema Conformance in Vault Health

  • Coverage — what percentage of notes of each type have all required fields
  • Non-conformant notes — which notes are missing required fields, and which fields
  • Advisories — types with notes but no schema, as an invitation to formalize, never a gate
  • Dangling relations — relation fields targeting a type with no vault notes

file.created and file.modified Virtual Fields

Two implicit fields are now available in any query — no frontmatter required.

!view contact
where file.modified < days-ago(30)
select name, status, file.modified
sort file.modified desc

Matrix View

Toggle any !view table into a two-axis relation grid.

  • Rows = query results
  • Columns = all vault notes of a type you pick
  • Cells show where a connection exists
  • Bidirectional edge detection included

Git History Import

Yamlink: Import Git History reconstructs full mutation history for git-tracked vaults from commit history.

It populates the Note Report History tab and strengthens arc prediction going back to the first commit. It runs once and is guarded by .yamlink/git-history-import.done.

QOL

  • Callout blocks now render as styled panels in note preview and PDF exports — [!SOURCE], [!WARNING], [!NOTE], and all supported callout types, each with a distinct Yamlink Apollo palette color
  • Compact status bar — ◈ 31 ⚠ 104 instead of the wordier previous format; a permanent $(home) button opens the Home panel from anywhere
  • Broken wikilinks are decorated with amber brackets and faded text — readable signal, no disruptive squiggle
  • Template-guided note creation — the Create note quick fix on a broken wikilink now walks through the template picker, with type-matched templates at the top

Who Shujimi Is For

Working Without VS Code

The CLI gives you full vault access for scripting, CI pipelines, and publishing.

Managing Structured Vaults

The intelligence overhaul means the system adapts to your vocabulary. Schema conformance and template drift give you operational quality control without making schema a prerequisite.

Capturing Faster

Home panel, daily notes, natural language queries, and note splitting reduce friction between having a thought and having it in the vault.

Long-Time Users

The feedback loop means the system gets more accurate the more you use it. The vault trains the system from use.

0.5.2 — Zim

Choose a tag to compare

@javierigaciorm javierigaciorm released this 25 May 16:42

Patch release for 0.5.1 Zim.

Fixed

  • Restored consistent wikilink resolution across diagnostics and ctrl-click navigation, including canonicalized targets, aliases, heading refs, and block refs.
  • Fixed vault-wide rename propagation so wikilink updates do not skip affected files during bulk ID changes.

0.5.1 — Zim

Choose a tag to compare

@javierigaciorm javierigaciorm released this 25 May 04:33

Patch release for 0.5.0 - Zim.

Fixed

  • Restored clickable markdown wikilinks in VS Code.

0.5.0 "Zim"

Choose a tag to compare

@javierigaciorm javierigaciorm released this 23 May 03:44

0.5.0 "Zim"

Zim is the graph, intelligence, and professionalization release.

This release is about making Yamlink feel like a stronger product: a much more capable graph workspace, a broader query language, smarter note creation and completion, clearer Note Report and Vault Health surfaces, and a serious testing and CI foundation behind the scenes.

Added

  • Graph 2.0 workspace
  • Vault graph sidebar
  • Query language reference
  • Obsidian vault import
  • Note preview surface
  • Schema-aware note creation
  • Extension-host tests
  • Coverage checks and thresholds
  • GitHub Actions CI
  • Surface-level testing for graph, note report, health, schema, mutation, and completion
  • Body intelligence signals for headings, quotes, footnotes, and missing references
  • Drift detection and lifecycle intelligence
  • Vault priors and adaptive field planning
  • Query caching
  • Task caching
  • Performance tracking and mutation event logging

Changed

  • Graph is now a real scoped workspace instead of a thin experimental surface
  • Graph sidebar and graph workspace now have clearer roles
  • Note Report is clearer and less overloaded
  • Tasks in Note Report now stay local to the opened note
  • Links in Note Report now separate structured relations from body mentions
  • Suggested views in Note Report are now more curated
  • Vault Health is easier to read and explain
  • Public documentation is much more consistent across README, Features, Getting Started, What’s New, and Changelog
  • Branding is now aligned to Yamlink Labs
  • Marketplace packaging is cleaner and more intentional
  • Command naming is more consistent across the product
  • Completion is stronger for relation targets, missing fields, and early note setup
  • Yamlink now does a better job helping a note establish its identity before type: is fully in place

Fixed

  • Frontmatter relation completion now stays on the Yamlink path instead of collapsing into generic link suggestions
  • Cross-platform path-sensitive tests are now stable between Windows and Linux CI
  • Graph reset, current-note focus, and center/focus actions behave more reliably
  • Packaging now excludes more repo/dev-only material from the VSIX
  • Stale documentation references and naming mismatches were cleaned up
  • Public-facing docs no longer mix as much old terminology with current product language
  • Note Report visual regressions in metadata chips were corrected
  • Health and graph terminology are clearer for newcomers

Reliability

  • Full local suite: 1107/1107
  • Coverage gate: passing
  • Smoke: pass with warnings
  • Extension-host tests: passing
  • CI: lint, tests, smoke, coverage, extension-host, and packaging wired in

If Yamlink is useful to you, please star the repo and leave a review on the VS Code Marketplace.