Aquí hi ha 20 versions de hyalo, des de 31 de març del 2026 fins a l’actual, 0.25.0. Cadascuna enllaça amb els instal·ladors del mateix desenvolupador.
| Versió | Data | Mida | Fitxers |
|---|---|---|---|
| 0.25.0Darrera versió | 5 d’octubre del 2026 | — | 64 bits ZIP Notes de la versióHighlights
hyalo 0.25.0 turns ranked search into a small query language, adds section-level hits, facets and an incremental index, and closes the findings of two dogfood rounds on MDN, GitHub Docs and two Obsidian vaults.
Search
- find PATTERN has a grammar: implicit AND, OR (binds tighter), "phrase"~N, prefix*, -term, ( ) groups. hyalo find --help opens with a ten-line FIND 101.
- --granularity section returns the paragraph, not the file; --facet tags|property:K|type|dir counts the whole match set; hyalo terms [PREFIX] lists the stemmed dictionary.
- BM25F ranking (title, headings and tags outweigh body), a proximity bonus, accent folding, identifier splitting, did-you-mean on zero results.
- create-index is incremental and skips the write when nothing changed; an --index read repairs drifted files in memory and says so.
Breaking changes
- Snapshot format 7. Indexes written by 0.24.x are refused with a warning; rebuild with hyalo create-index.
- Ranked search results change: a b OR c now means a AND (b OR c), and scores and order differ under BM25F.
- read --lines A:B is file-relative, the same numbering find, lint and section hits print.
- A [schema] that fails to load refuses lint, find --strict and views run; an enum constraint must list its values. Under an unusable .hyalo.toml, previews (--dry-run, links fix without --apply) refuse like the write they preview.
- YAML 1.2 core integers: 1_000, 0X1F and 0b101 read as strings; 0x1F, 0o17 and 01234 are integers.
- summary.links.broken counts a bare [[alias]] link, as find --broken-links and HYALO006 already did.
Notable fixes
- links fix --apply writes heading text into wikilink anchors (Obsidian cannot resolve a slug there) and slugs into markdown links.
- --jq works when SIGINT is ignored (background jobs, nohup); 0.24.x failed every such call.
- mv rewrites bare attachment and embed links on a cross-directory move.
- A note with invalid UTF-8 no longer breaks vault-wide listings and is never rewritten.
The full changelog for this version follows.
[0.25.0] - 2026-10-05
Added
- Explicitly opt-in Jev classification in the hyalo-tidy skill for Codex,
Claude Code, and Pi. Selected documents can receive suggestions for missing
types, approved tags, and existing folders. The bundled helper uses Bun or
Node.js and a Typesafe API key; ordinary tidy needs neither. Agents review
suggestions and preview changes through Hyalo before applying them.
- Ranked search query language (DEC-333): conf* prefix terms matched against
the stemmed dictionary (capped at 256 terms with a -q-proof warning);
each term is stemmed in every language present in the vault, so a language: de note is found by its German inflection; a zero-result query names close
dictionary terms, hints the corrected query and reports them under a
top-level suggestions key.
- hyalo terms [PREFIX] lists the BM25 dictionary (stemmed terms) with
document frequency, most frequent first; --limit (default 50, 0
unlimited), --index/--index-file, --jq and --count work as
elsewhere.
- find PATTERN --granularity section returns one ranked hit per matching
section ({file, section: {heading, level, line_start, line_end, path}, score, matches}) instead of per file (DEC-334). A section must satisfy the
query's positive words on its own; negated terms are
decided once per file and hold for all its sections. Scores use the corpus IDF with section-length normalisation,
--limit counts sections, --section restricts eligible sections, and each
hit hints a hyalo read that shows it. Same answer with --index.
- find --facet tags|property:K|type|dir (repeatable) adds a top-level
facets key with per-value file counts over the full match set, computed
before --limit, at most 50 buckets per facet with truncated (DEC-335).
Property buckets resolve dot-paths and fold case like --property K=V.
Text mode prints a block per facet, hints drill into the largest buckets,
and --jq sees .facets.
- Search tokenizer v4 (DEC-336): accents fold before stemming (rés |
| 0.24.1 | 18 de setembre del 2026 | — | 64 bits ZIP Notes de la versióFixed
- Markdown file links now try the scanned directory's root when a source-relative target is absent. This applies to notes and other linked files, with source-relative matches taking precedence. Explicit . and .. components remain relative.
- Balanced parentheses in Markdown destinations no longer truncate paths such as images/photo%20(1).png. Titles after filenames containing spaces remain separate from the destination.
- Moving notes preserves root-relative targets in single and batch moves, including extensionless links, encoded Markdown suffixes, and percent-encoded directory references.
Older indexes fall back to a disk scan. Run hyalo create-index to rebuild them with the corrected parser.
What's Changed
Other Changes
- Fix Markdown file link resolution and parenthesized paths by @ractive in #354
Full Changelog: v0.24.0...v0.24.1 |
| 0.24.0 | 13 de setembre del 2026 | — | 64 bits ZIP Notes de la versió[0.24.0] - 2026-09-13
Added
- Codex project integration with hyalo init --codex: managed AGENTS.md
guidance, skills under .agents/skills/, active profile workflows, and clean
removal through deinit. A skills-only plugin ships under plugins/hyalo/;
--codex-plugin configures projects without duplicate local skill copies.
- Agent Skills validation now includes .agents/skills/** as well as Claude's
skill directory. CI checks Codex plugin metadata and embedded asset parity.
- Ranked find results now include up to three body snippets with line numbers and
section context, alongside their relevance score. Snippets share stemming, phrase, OR
and CJK rules with ranked search; indexed queries read only final selected files after
the result limit.
Changed
- Directory overlap in fuzzy link confidence now admits a shared prefix that
outweighs its leftover in the shorter token, while basename tokens retain
the stricter factor of two. The GitHub Docs SAML directory relocation returns
from 0.795 to 0.804, above the default apply floor; Mathjax still does not
match mathpad. Both features retain the 0.85 Jaro-Winkler token floor.
- Loading a .hyalo-index snapshot no longer decodes the BM25 inverted
index. On a MDN-scale vault (14 375 entries, 116 MiB index) the BM25
section is 76 % of the file, and a find with no text query spent ~230 ms of
its ~400 ms walking postings it never read. The snapshot envelope is now
visited by hand and the parse stops at the bm25_index key, leaving the
section undecoded until something actually searches text. Measured on that
vault, release build, median of 7 runs: find --limit 1 --index 396 ms →
151 ms (2.6x); a text find <query> --index, which does decode the
section, is 399 ms → 402 ms — inside run-to-run noise. The on-disk format is
unchanged: indexes written before this release load unchanged, and indexes
written after it are read by the previous release, verified both directions.
(Superseded later in this same release: the snapshot header now carries a
format version, and one written before it is refused with a warning and a
fall back to disk — see the format-version entry below. The wire format is
still additive; the refusal is a deliberate correctness gate, because the
272/273 link and header changes make an older snapshot answer differently
from a disk scan of the same vault.)
Mutating commands (set, remove, append, task toggle, mv,
lint --fix --index) force the section before re-saving, so none of them can
drop the search index from a snapshot they only meant to patch.
- hyalo help <cmd> now prints the short -h page, not the long --help
one. hyalo help find was 28 701 bytes where hyalo find -h is 2 992 —
a 9.6x tax on the phrasing agents reach for first. The two are now
byte-identical, and a subcommand path works (hyalo help task toggle).
Because the forward is an argv rewrite rather than a page rendered from a
Help arm, it inherits everything the short page is assembled from — the
collapsed globals pointer, find's composed examples, the footer naming
hyalo find --help for the long form — and it inherits clap's did-you-mean
for an unknown name, which the generated help subcommand never had:
hyalo help fnd now suggests find. The long page is unchanged and one
line away.
- The envelope's dry_run claim is now true. hyalo --help's RESULTS
CONVENTIONS said "every mutating command reports dry_run and
skipped_count"; measured across all 23 mutating commands, 18 reported
neither or reported the same fact under a different name (apply,
applied). Every mutation result that is an object now carries dry_run —
added to batch mv, new, types remove, madr toc, okf index,
okf log, changelog add and changelog release. apply/applied are
kept and are always its exact inverse, so nothing that reads them breaks.
skipped_count is documented for what it is: bulk-family-only (set,
remove, append, properties rename, tags rename), because a
single-target command has no scanned-but-unchanged set. task toggle/task set return an array |
| 0.21.0 | 29 d’agost del 2026 | — | 64 bits ZIP Notes de la versió[0.21.0] - 2026-08-28
Added
- Iteration 245 — deferral carry-overs.
- UX-3 follow-up: dot-path property filters descend sequences. A
frontmatter list of maps (contacts: [{name, email}, …]) is now
traversable: --property 'contacts.email=x' auto-descends into every
element and matches when any of them carries that value, while a numeric
segment pins one element (contacts.0.email). The collected values are
returned as a list, so the established list semantics apply unchanged
(=/~= match when any element matches, != when none does, and a bare
key exists when at least one element yielded a value). Applies to every
filter consumer, including --where-property on the mutating commands.
- Iteration 244 — index remaining deferrals.
- UX-3: nested dot-path property filters. --property 'a.b=v' now
traverses nested YAML mappings (contact.email=team@example.com
matches contact: {email: …}) across find and every filter consumer;
a literal dotted key in a flat map still takes precedence over
traversal.
- UX-6: case-insensitive link resolution mode. links fix --case-insensitive (or [links.case_insensitive] resolve = true in
.hyalo.toml) treats links that resolve only by case folding as
resolved rather than fixable, so MDN-style vaults with case-folded
directory layouts no longer offer a link-case-mismatch rewrite plan
per link in links fix --dry-run.
Changed
- pi package 0.1.1. Root package.json and pi-package/package.json
bumped to 0.1.1 (DEC-101 version discipline for the root-manifest change
in PR #279), so pi update --extensions on a pinned git install can
observe a pushed change.
- hyalo summary --format text no longer prints a kb dir: banner on
stdout. The resolved vault dir moves to stderr as note: kb dir: <path>,
so a text-mode report is data from its first line; -q suppresses the note
and --format json still carries dir (DEC-247).
- Internal: the three largest CLI modules are split into submodules.
hints.rs (5,059 lines), commands/lint.rs (4,005) and output.rs (3,744)
become hints/, commands/lint/ and output/ directories. No behaviour,
path or visibility changes — every item keeps the visibility it had in the
single module.
Fixed
- Pre-v0.21.0 dogfood fixes (iter-249).
- UX-1: stale-index probe was blind past the vault's top level. The
index older than vault staleness probe (create-index/--index)
used to check only the vault root and its immediate subdirectories, so
a file added or removed two or more directories deep — the common case
on real vaults (iterations/done/*.md here, nearly every page on MDN
and GitHub Docs) — never tripped the warning. The probe now walks
directories recursively down to 3 levels (measured: an unbounded walk
added ~65% to an indexed query on MDN's 14k-file tree, well past
budget, so depth is bounded rather than unlimited), still without
reading any file content. create-index --help and the --index flag
help now describe the real depth and its two remaining blind spots
(in-place edits of existing files, which never move a directory's
mtime, and files added or removed inside a directory more than 3
levels below the vault root).
- BUG-1 (carry-over): task toggle/task set --index BM25 parity.
task toggle --all --index and task set --index used to patch just
the toggled tasks' status in place, leaving the entry's cached BM25
tokens stale relative to the file's new body bytes; the journal now
re-scans the mutated file the same way set/append/mv/lint --fix
already do, so find --index scores stay byte-identical to a disk
scan after a task mutation. lint --fix --index was audited too and
already re-tokenizes correctly.
- UX-2: links fix --apply --apply-fuzzy text summary mislabeled
applied fuzzy matches as excluded. The Low-confidence matches (…)
summary line always said "excluded from plain --apply", even when
--apply-fuzzy had just written those matches to disk. It now reads
"applied via --apply-fuzzy" when the flag was active, and keeps the
original "excluded from plain --apply" wording otherwise. JSON keys
are u |
| 0.20.0 | 19 de juliol del 2026 | — | 64 bits ZIP Notes de la versió[0.20.0] - 2026-07-19
Added
- Broken-anchor detection in find --broken-links (iter-190, L-21): links
now carry their #fragment (heading anchor) through parsing and resolution.
find --broken-links reports a broken anchor — a link whose target file
exists but whose #heading does not — as a category distinct from a broken
target. In JSON, an anchored link gains fragment and (when the heading is
missing) broken_anchor: true; text output renders "Foo#Real" → "Foo.md"
and marks a missing heading as (broken anchor). The two categories are
never both reported on one link (a broken target skips the anchor check), and
broken anchors do not inflate links fix's broken / fixable counts or
its "Apply N fixes" hint — links fix stays target-only, letting anchor
semantics soak one release behind find before any lint/CI gate consumes
them. Anchor matching is exact and case-insensitive (Obsidian convention:
[[Foo#tasks]] matches ## Tasks), decodes percent-encoded markdown
fragments (foo.md#my%20heading) for comparison only (the written form is
preserved), and skips ^block-id refs (block ids are not indexed). Validation
reads headings from the already-materialized index/scan sections — zero
extra file reads on the --index path, and no per-file re-read on disk scan.
mv and links fix preserve fragments byte-exact (the rewrite span stops
before #).
The Link wire-shape gained an additive fragment: Option<String> field
(#[serde(default)]), serialized into .hyalo-index entries and the
persisted link graph. The field is backward compatible: existing
.hyalo-index snapshots load unchanged (fragments read as None, so no false
anchor reports from stale entries). To pick up fragment data for anchor
validation on the --index path, rebuild the index with hyalo create-index after upgrading.
- HYALO006 / broken-link lint rule (iter-188): hyalo lint now flags
wikilinks and markdown links that point at a vault file which does not exist.
Enabled and warn by default; hyalo lint --strict promotes it to an error
so CI can gate broken links. The vault-wide resolution context (case/stem
index) is built once per invocation — from the .hyalo-index snapshot
when --index is active, else a single vault walk — and shared across
workers, so the rule adds no per-file graph rebuild. Respects
[lint.rules.HYALO006] enable/severity overrides, --rule HYALO006 /
--rule-prefix HYALO, and --files-from (resolution stays vault-wide even
when the linted set is scoped, so a scoped file linking to an
unscoped-but-existing file does not false-positive).
- Honest partial-failure envelopes for link write paths (iter-187): when a
file write fails mid-batch, hyalo links fix --apply, hyalo links auto --apply, and batch hyalo mv --apply now emit a complete JSON envelope
rather than aborting with a bare error. links fix --apply gains failed /
failed_fixes buckets (each with the per-file error string); links auto --apply gains files_applied / files_skipped / files_failed counts plus
a per-file apply_outcomes list (applied/skipped/failed with reason, so skips
that previously only went to stderr are now in the envelope). Any partial
failure yields a non-zero exit code. Files written before the failure are
reported as applied, never silently kept and unreported.
Fixed
- find --orphan / --dead-end / --fields backlinks count
case-insensitive inbound links (L-6 tail): [[foo]] pointing at Foo.md
now counts as inbound in find, matching the backlinks command and
summary (all three route through the same case-insensitive graph lookup).
Previously find --orphan could list a file that summary and backlinks
agreed had inbound links.
- Percent-encoded markdown link destinations now resolve (iter-188, L-23):
[x](my%20dest.md) previously never resolved (the %20 was compared
literally against the on-disk filename my dest.md), so find --broken-links
false-positived and backlinks "my dest.md" missed the linker. The path
portion is now percent-decoded during resolution and in the link graph, so
encoded and angle-bracke |
| 0.19.0 | 19 de juliol del 2026 | — | 64 bits ZIP Notes de la versió[0.19.0] - 2026-07-19
Added
- hyalo lint accepts multiple positional files (iter-179): hyalo lint a.md b.md lints every listed file, matching --files-from semantics; the
positional FILE argument is now repeatable.
- hyalo mv accepts a positional destination (iter-181): hyalo mv old.md new.md is now an alias for hyalo mv old.md --to new.md, matching the
positional-file ergonomics of the other mutation commands. The positional
DEST requires the positional source and is mutually exclusive with --to.
- hyalo changelog add --wrap <cols> (iter-181): word-wrap a long entry
message on word boundaries into a hanging-indented bullet (2-space
continuation indent), for 80-column changelogs.
- hyalo set emits an advisory note for enum/pattern violations (iter-181):
setting a value the type's schema would reject (an out-of-enum value or one
failing a pattern) now surfaces the same kind of non-blocking note: that
date violations already get. The write still proceeds — hyalo lint (or
set --validate) remains the enforcement gate.
Changed
- --format github is deterministic and truncation-honest (iter-186):
annotations are now emitted sorted by (path, line, rule), so which findings
GitHub keeps under its per-step annotation cap is stable across runs. hyalo
still emits every workflow command, but GitHub registers at most 10 error +
10 warning annotations per step — when a run exceeds either cap hyalo now
appends a ::notice:: stating the true totals so the truncation is visible
(quiet when both are under the cap). The exit-code contract is unchanged.
The project's own CI (.github/workflows/ci.yml) is split accordingly: a
diff-aware lint-kb job lints only a PR's changed files
(git diff origin/$BASE...HEAD | hyalo lint --files-from -) so the annotation
budget is spent on the PR's own findings, plus a full-vault lint-kb-full job
on push to main to catch cross-file regressions the diff-aware check can't
see.
- Exit-code contract: flag-conflict user errors exit 1, not 2 (iter-181):
combining --jq with --format text, --count with --jq, --count on a
non-list command, and --format github on a non-lint command now exit 1
(user error) instead of 2 (which the help reserves for internal errors).
- hyalo set JSON response echoes the coerced value (iter-181): the
value field now reflects the parsed YAML value written to frontmatter (e.g.
a list for --property 'x=[a, b]', a number for x=3) rather than the raw
input string.
- hyalo new omits schema-violating placeholders (iter-181): when a
required pattern/length-constrained string has no valid default, the scaffold
no longer emits an invalid TBD value (e.g. branch: TBD against
^iter-\d+[a-z]*/); the key is omitted for the user to fill, and a later
hyalo lint flags it as missing-required.
Fixed
- Angle-bracket link destinations are parsed correctly (L-A1): a
CommonMark-valid markdown link destination like [text](<my dest.md>) —
which hyalo's own generator has emitted since iter-176 — is no longer
stored with literal <> characters. find --broken-links no longer
false-positives on these links, and backlinks now resolves them.
- Escaped brackets in link text no longer drop the link (L-A2): a label
containing an escaped bracket, e.g. [Contains \[test\] brackets](dest.md),
no longer terminates the label scan early and silently discards the whole
link from --fields links and backlinks output.
- Property-regex parse errors surface the engine detail (iter-181): an
invalid --property 'title~=(' filter now reports the regex engine's own
message (with caret/position) as the error cause, the way find -e does,
instead of dropping it.
- Hints preserve the vault context and active filters (iter-180,
BUG-7/BUG-8): the create-index hint after a slow or large-vault command now
carries the explicit --dir (running it verbatim indexes the right vault, not
the default one) and drops the dangling …queries: colon. Derived find
hints now compose with the active graph/title filters — a "Show all N" or
"Narrow by tag" hint on a --orphan / |
| 0.18.0 | 18 de juliol del 2026 | — | 64 bits ZIP Notes de la versió[0.18.0] - 2026-07-18
Added
- OKF (Open Knowledge Format) support (iters 163–166): datetime-tz
property type (timezone-aware timestamps, disjoint from naive datetime);
[schema] exempt glob list binding reserved files (index.md, log.md) to
no schema, honored by lint and validate-on-write; hyalo init --profile okf
writes an OKF-ready .hyalo.toml and installs a bundled okf skill with
--claude; hyalo okf index / hyalo okf log reserved-file generators
(deterministic, managed-region-aware, dry-run by default with a non-zero
exit on drift); hyalo lint --profile okf applies the same profile fragment
as an ephemeral overlay and adds six warn-level OKF conformance rules
(reserved-file structure, citations, augmentation guards). Bundle-root
absolute links are supported via site_prefix = "".
- Composable profiles: profiles are declarative TOML fragments deep-merged
(upserted) into .hyalo.toml — multiple init --profile <p> runs coexist
in one vault, re-running a profile is idempotent, and user-authored keys the
profile doesn't own are never touched (iter-164).
- madr profile (iter-167): adr schema type (status lifecycle,
supersede pattern, MADR 3.x deciders alias, required
Context/Options/Decision sections) bound to docs/decisions/** via the new
generic [[schema.bind]] path-bound schemas (ordered, first-match-wins
globs, wired into lint, validate-on-write, and fix); {n:04} zero-padded
filename-template tokens; MADR-SUPERSEDE-RESOLVE and
MADR-DUPLICATE-NUMBER advisory lints; hyalo madr toc dashboard
generator.
- skills profile (iter-168): validates Agent Skills <name>/SKILL.md
files (path-bound skill schema, name↔dirname coupling, reserved names,
description and body-length budgets) with three advisory rules; generic
string min_length/max_length schema constraints.
- changelog profile (iter-169): validates CHANGELOG.md against the
Keep a Changelog 1.1.0 grammar (heading sequence, semver-descending
versions, category subsections, footer link references) through a new
reusable declarative heading-grammar engine, with eight CHANGELOG-* lint
rules; hyalo changelog release <X.Y.Z> rotates [Unreleased] into a dated
version section and hyalo changelog add appends categorized entries —
both dry-run by default. This file is maintained with them.
- hyalo lint --format github (iter-170): emits one GitHub Actions
workflow command per violation (::error / ::warning with repo-root
relative paths and spec-compliant escaping) so findings render as inline PR
annotations; lint-only; output caps are lifted so no annotation is silently
dropped.
- Companion GitHub Action
ractive/setup-hyalo (iter-171):
installs the prebuilt hyalo binary on any runner (checksum-verified against
the release SHA256SUMS, tool-cached); the README documents the two-step
PR-check recipe and the claude-code-action agent recipe.
- [scan] include config (iter-175): glob allow-list re-admitting
specific hidden subtrees (e.g. .claude/skills/**) to the vault walker for
every command (.git stays hard-excluded). The skills profile ships
include = [".claude/skills/**"] so **/SKILL.md bindings reach the
canonical Claude Code skill location.
- [changelog] path config (iter-175): point the changelog commands at
a file outside the vault — e.g. the repo-root CHANGELOG.md when dir is
a docs subdirectory — with a path-escape guard.
- xtask check-bundled-skills CI gate (iter-175): every bundled skill
template is linted as installed under the skills profile, so a bundled
skill can never ship violating its own schema again.
- okf index / madr toc non-destructive adopt (iter-173): a marker-less
index.md/README.md is now adopted — its entire hand-written body is
preserved and the managed region is appended after it (dry-run reports
adopt (preserving N existing lines)). The old overwrite behavior is opt-in
via a new --replace flag. On case-insensitive filesystems an existing
INDEX.md is recognized as the reserved file and adopted by its on-disk
casing.
- [okf] ignore config: vault-relative globs (_template |
| 0.17.0 | 11 de juliol del 2026 | — | 64 bits ZIP Notes de la versióWhat's Changed
Other Changes
- feat(ci): migrate release pipeline to shared ractive/release-workflows by @ractive in #188
- feat(ci): build deb/rpm packages and publish to Cloudsmith by @ractive in #189
Full Changelog: v0.16.1...v0.17.0 |
| 0.16.1 | 10 de juliol del 2026 | — | 64 bits ZIP Notes de la versióFull Changelog: v0.16.0...v0.16.1 |
| 0.16.0 | 10 de juliol del 2026 | — | 64 bits ZIP Notes de la versióWhat's Changed
Other Changes
- feat(iter-130): CWD-aware help banner and hyalo config subcommand by @ractive in #151
- fix(iter-131): dogfood v0.15.0 follow-ups by @ractive in #152
- iter-132: mv wikilinks, set date validation, fuzzy hints, links/views/index-file UX by @ractive in #153
- iter-133: lint exit codes, mv ./relative, date validation, UX polish by @ractive in #154
- feat(iter-134): respect Obsidian short-form wikilinks in links fix by @ractive in #155
- feat(iter-135): batch hyalo mv with --glob and frontmatter filters by @ractive in #156
- iter-136: accept .md suffix in wikilinks; prefer short-form in mv rewrites by @ractive in #157
- refactor: remove unsafe UTF-8 shortcuts and add Miri support by @ractive in #158
- fix(backlinks): resolve short-form wikilinks to deep paths by @ractive in #159
- fix(bm25): widen serde-round-trip score tolerance for Miri by @ractive in #160
- fix(iter-137): cross-platform link resolution on Linux + Windows by @ractive in #162
- chore(release): v0.16.0 by @ractive in #163
- feat(schema): item_pattern, required_sections + hyalo new (iter-138) by @ractive in #164
- feat(cli): --files-from <path|-> for VCS-agnostic diff-aware scoping (iter-139) by @ractive in #165
- fix(iter-140): dogfood fixes for iter-138/139 by @ractive in #166
- fix(iter-141): dogfood v0.16.0 seven findings by @ractive in #167
- feat(iter-142): quality gates — AC fidelity, feature fanout, help drift by @ractive in #168
- feat(iter-143): hint polish + --files-from snapshot membership by @ractive in #169
- feat(iter-144): index-suggestion hint for slow queries + large vaults by @ractive in #170
- feat(iter-145): unified input resolution + --files-from on task/read/backlinks by @ractive in #171
- iter-147: harden --files-from on task toggle / task set by @ractive in #173
- fix(iter-148): dogfood v0.16.0 (iter-144..147) follow-ups by @ractive in #174
- iter-149: hyalo new patches snapshot index in place by @ractive in #175
- iter-150: unify link resolver + writer (BUG-1/2 + stale-index fix) by @ractive in #176
- fix(mv): rewrite self-links, preserve ./form on cross-dir move, emit skipped_ambiguous by @ractive in #177
- fix(frontmatter): symmetric 64 KiB/2000-line size budget on write & read by @ractive in #178
- feat(tags): accept Unicode letters and emoji in tag names by @ractive in #179
- feat(iter-155): introduce datetime property type by @ractive in #181
- iter-156: drop 'no tags' warning; required+list implies non-empty by @ractive in #182
- iter-154: lock down mv snapshot-index patching with tests + docs by @ractive in #180
- iter-157: lazy + index-seeded stem map by @ractive in #183
- iter-158: codebase-review fixes — 2 criticals, 13 highs, 7 mediums by @ractive in #184
- feat(cli): add pi integration to init command by @ractive in #185
- fix: --first-only respects existing wikilinks; no panic on broken pipe by @ractive in #186
- iter-160: fix lint-rules panic + links fix frontmatter no-op (release blockers) by @ractive in #187
Full Changelog: v0.15.0...v0.16.0 |
| 0.14.0 | 22 d’abril del 2026 | — | 64 bits ZIP Notes de la versióWhat's Changed
Other Changes
- Add hyalo links auto — auto-link unlinked page-title mentions by @ractive in #144
- Add --first-only and --exclude-target-glob to links auto by @ractive in #145
- Fix review findings: fence ordering, vault checks, index consistency, docs by @ractive in #146
Full Changelog: v0.13.2...v0.14.0 |
| 0.13.2 | 21 d’abril del 2026 | — | 64 bits ZIP Notes de la versióWhat's Changed
Other Changes
- Fix spurious nested-config warning when dir = "." by @ractive in #143
Full Changelog: v.0.13.1...v0.13.2 |
| 0.13.0 | 17 d’abril del 2026 | — | 64 bits ZIP Notes de la versióWhat's Changed
Other Changes
- iter-109: types set upsert, lint output cleanup by @ractive in #124
- iter-110: Default output limits for all list commands by @ractive in #125
- iter-111: Consolidate e2e tests into single binary by @ractive in #126
- iter-112: Sync skills with recent features, bypass default limit for --jq/--count by @ractive in #127
- iter-113: Fix dogfood v0.12.0 bugs and add UX improvements by @ractive in #128
- iter-113b: Fix config resolution regression for views/types by @ractive in #129
- iter-114: Dogfood v0.12.0 follow-up fixes by @ractive in #130
- iter-114b: sync README and skill templates with iter-114 features by @ractive in #131
- iter-115: Dogfood v0.12.0 iter-114 follow-up fixes by @ractive in #132
- iter-115b: Sync skill template with iter-115 features by @ractive in #133
- iter-116: Fix task toggle --dry-run arrow direction by @ractive in #134
- iter-117: Case-insensitive link resolution by @ractive in #135
- iter-118: Split --index into boolean flag + --index-file path by @ractive in #136
- iter-119: Auto-enable validate_on_write on first types set by @ractive in #137
- iter-120: Dogfood post-iter-119 fixes by @ractive in #138
- iter-121: Code review hardening — security fixes, error handling, docs by @ractive in #139
- iter-122: Security audit findings — snapshot validation, escape sanitization, resource limits by @ractive in #140
Full Changelog: v0.12.0...v0.13.0 |
| 0.12.0 | 14 d’abril del 2026 | — | 64 bits ZIP Notes de la versióWhat's Changed
Other Changes
- Rename task set-status to task set by @ractive in #112
- Iter-101: BM25 ranked search with serializable inverted index by @ractive in #113
- Add boolean search operators (AND, OR, phrase) to BM25 engine by @ractive in #114
- Update BM25 docs, search hints, and add search cookbook by @ractive in #115
- Make --index path optional, default to .hyalo-index by @ractive in #116
- Iter 105: Redesign summary for compact output + find --orphan/--dead-end by @ractive in #117
- Fix 4 dogfood UX issues: status sort, views pattern, orphan warning, BM25 hint by @ractive in #118
- iter-102a: Schema data model and hyalo lint (read-only) by @ractive in #119
- iter-102c: Add hyalo types command for schema management by @ractive in #121
- iter-107: Lint/Types surface sync — hints, docs, dedup by @ractive in #122
- iter-108: Fix 3 bugs and 3 UX issues from v0.11.0 dogfooding by @ractive in #123
Full Changelog: v0.10.0...v0.12.0 |
| 0.10.0 | 8 d’abril del 2026 | — | 64 bits ZIP Notes de la versióWhat's Changed
Other Changes
- feat: add hyalo completion subcommand by @salim-b in #111
New Contributors
- @salim-b made their first contribution in #111
Full Changelog: v0.9.0...v0.10.0 |
| 0.9.0 | 8 d’abril del 2026 | — | 64 bits ZIP Notes de la versióWhat's Changed
Other Changes
- Address code review findings from full-codebase Rust review by @ractive in #105
- Iter 95: Views for AI agents — hints, help text, skill templates by @ractive in #106
- Route views through output pipeline, add text formatting by @ractive in #107
- Add bulk task operations: --all, --section, repeatable --line by @ractive in #109
- Accept CWD-relative paths in --file arguments by @ractive in #108
- Add positional file arguments to all commands by @ractive in #110
Full Changelog: v0.8.0...v0.9.0 |
| 0.8.0 | 2 d’abril del 2026 | — | 64 bits ZIP Notes de la versióWhat's Changed
Other Changes
- Add deinit command and init --dir missing directory creation by @ractive in #103
- Add views: saved find queries with --view flag by @ractive in #104
Full Changelog: v0.7.3...v0.8.0 |
| 0.7.3 | 1 d’abril del 2026 | — | 64 bits ZIP Notes de la versióUpdate documentation and CI/CD |
| 0.7.1 | 1 d’abril del 2026 | — | 64 bits ZIP Notes de la versióBump version for first release on crates.io |
| 0.7.0 | 31 de març del 2026 | — | 64 bits ZIP Notes de la versióWhat's Changed
Other Changes
- Iter-35: Robustness & JSON ergonomics by @ractive in #35
- Iter-36: Advanced filtering — absence, regex, section substring, glob negation by @ractive in #36
- Iteration 37: Bulk mutations & multi-file targeting by @ractive in #37
- Iteration 39a: In-memory link graph & backlinks command by @ractive in #38
- Add --field backlinks to find command by @ractive in #39
- Iteration 39b: hyalo mv command with link rewriting by @ractive in #40
- Fix backlinks/mv for wikilinks with path separators by @ractive in #41
- Fix backlinks fatal error on malformed frontmatter by @ractive in #42
- Fix scanner accuracy: code block search, heading code spans, property counts by @ractive in #43
- Iter-42: UX polish — absolute links, config-aware help, hints by @ractive in #44
- Add orphan detection to summary command by @ractive in #45
- Fix 7 bugs found dogfooding against real-world vaults by @ractive in #46
- Eliminate double file read in summary command by @ractive in #47
- Add =~ as alias for ~= in property regex filters by @ractive in #49
- Fix site_prefix derivation for all --dir styles by @ractive in #48
- Exclude self-links from backlinks results by @ractive in #50
- Return empty result for non-matching globs by @ractive in #51
- Short-circuit --limit for default sort order by @ractive in #52
- Fix remaining dogfooding issues (ISSUE-5, ISSUE-6, read validation) by @ractive in #53
- Iteration 46: UX polish v2 — 7 dogfood follow-ups by @ractive in #54
- Add hyalo-dream skill and knowledgebase rules by @ractive in #55
- Iteration 47: Snapshot index for repeated queries by @ractive in #56
- Index-aware mutations: --index patches snapshot in-place by @ractive in #57
- Improve hyalo init: overwrite on re-run, install rule, smart dir detection by @ractive in #58
- Security hardening for pre-release by @ractive in #59
- Suggest corrected command when subcommand is passed as flag by @ractive in #60
- Add Scoop and winget distribution for Windows by @ractive in #61
- Replace serde_yaml_ng with serde-saphyr (safe Rust YAML parser) by @ractive in #62
- Harden YAML parser with serde-saphyr Options/Budget API by @ractive in #63
- Add crates.io publishing to release workflow by @ractive in #65
- Parameterize skill templates and add fuzzy dir auto-detection by @ractive in #66
- Preserve frontmatter key order and list indentation on write by @ractive in #64
- Fix index orphan discrepancy and input validation bugs by @ractive in #67
- Iteration 58: Find command UX polish by @ractive in #68
- Mark iteration 57 (link resolution hardening) as completed by @ractive in #69
- Add --sort by frontmatter property value by @ractive in #70
- Iteration 60: CLI consistency & minor fixes by @ractive in #71
- Add vault-wide broken link detection and auto-repair by @ractive in #72
- Add self-link guard to links fix fuzzy matcher by @ractive in #73
- Add mutation filter guard to set, remove, append by @ractive in #74
- Harden vault boundaries, symlink checks, and unsafe block safety by @ractive in #75
- Fix 7 dogfood bugs found in v0.5.0 testing by @ractive in #76
- Implement 4 dogfood UX improvements (iteration 66) by @ractive in #77
- Add dead-end detection, find results envelope, --limit total count by @ractive in #78
- Unify all read-only commands through VaultIndex by @ractive in #79
- Perf quick wins: eliminate clones, reduce allocations by @ractive in #80
- Split large files into smaller modules for AI-friendliness by @ractive in #81
- Code quality: clippy pedantic, tighter visibility, scanner clone fix by @ractive in #82
- Refactor CLI architecture: dispatch, output pipeline, error handling by @ractive in #83
- Split scanner, filter, and frontmatter into focused submodules by @ractive in #84
- Fix derived title matching and add backlinks text rendering by @ractive in #85
- Add --regexp and --jq .total examples to help and cookbook by @ractive in #86
- Add --dry-run to set, remove, and append commands by @ractive in #87
- Slim defaults: |