Transmute

by Johannes Kaindl
5
4
3
2
1
Score: 51/100

Description

Search and replace by intent — a local LLM writes the regex, you review every match before it runs.

Reviews

No reviews yet.

Stats

0
stars
90
downloads
0
forks
52
days
19
days
30
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
97
commits

Latest Version

a month ago

Changelog

Added

  • The whole vault. A rule can now run across every note instead of just the open one, filtered by folder, tag and a frontmatter property. The preview stays what it was — every file and every match is shown before anything is written, grouped by file and collapsed, so that 340 files are 340 lines rather than 1,204.
  • A snapshot before every vault-wide replacement, written before the first change. If it cannot be written, nothing is. One button restores it afterwards; a file that was edited in the meantime is left alone and named rather than silently overwritten.
  • A confirmation above a configurable number of files (50 by default), and a setting for how many snapshots to keep (5 by default).

Fixed

  • The cancel button during a vault-wide run was decoration in exactly the case that needs it. The UI yield sat behind an early continue for files that hit the match limit — a pattern like [a-z] hits it in every file, so the interface was never released and the click never arrived. Found by the first GUI smoke run against a real Obsidian with 12,002 notes; 403 green unit tests did not see it.
  • Progress no longer redraws the whole match list. With 11,770 affected files that costs more than the run itself and blocks the very interface the progress is meant to inform. While a run is going, only the progress line is drawn — there is no complete result to show yet anyway.

Changed

  • Scope "whole vault" does not recompute on every keystroke — it has a button. Reading a few hundred notes is not something to do between two keys.
  • A vault-wide rule no longer needs an open note. The example the model works from is taken from the open note when the filter includes it, and from the first matching notes otherwise — and which one it was is shown above the input.