Releases: CocaPls/obsidian-trellis
Release list
Trellis 0.1.4
Frontmatter tag dedupe hotfix.\n\n- Deduplicates exact repeated frontmatter tags while preserving order.\n- Lets bootstrap normalize existing duplicate tag arrays when the target location tag is already present.\n- Records bootstrap undo entries only for tags actually added by that bootstrap run.\n\nVerification: npm test; npm run build; git diff --check.
0.1.3
Separator migration hotfix.\n\n- Repairs mixed separator boundaries such as S88_-Title, S88-_Title, repeated variants, and suffix equivalents when moving between separators.\n- Suppresses normal tag-to-filename sync during separator migration so follow-up events cannot re-process files with the wrong live separator.\n- Records only successfully renamed files in separator undo data.\n- Allows separator setting changes even when no files need renaming.\n\nValidation: npm test (39/39), npm run build, git diff --check.
0.1.2
Marketplace review cleanup.\n\n- Replaced workspace.revealLeaf() with setActiveLeaf(..., { focus: true }) so minAppVersion can stay at 1.4.10 while clearing the unsupported-API review error.\n- Tightened saved-settings and frontmatter handling types around loadData() and processFrontMatter().\n- Removed the builtin-modules dev dependency in favor of Node's built-in node:module builtinModules list.\n\nDeferred warnings intentionally: getLanguage() requires Obsidian 1.8.7, and replacing display()/setWarning() would require 1.13.0 APIs.
0.1.1 — Marketplace review fixes
Automated-review fixes for the community submission.
- minAppVersion → 1.4.10 to match the APIs used (
processFrontMatter,AbstractInputSuggest). - Use
activeDocumentinstead ofdocument(pop-out window compatibility).
See CHANGELOG.md.
0.1.0 — First public release
First public release.
- Tag → filename sync (link-safe): a hierarchical location tag drives the filename prefix (tagkey). Edit the tag; the filename follows.
- Cascade rename, sidebar tree view, scoped bootstrap, duplicate location-tag cleanup, separator batch-change.
- Customizable sidebar view name + per-button header visibility.
- Korean / English UI (auto-detected).
See CHANGELOG.md for the full list.
0.0.8 — Scoped bootstrap, duplicate-tag cleanup, robustness
- Scoped bootstrap target picker — onboard a folder/module subtree instead
of only the whole vault. Checkbox tree with drag-to-select, filename search, a
"notes without a tag only" toggle, a selection count, and already-tagged
badges. Sidebar header buttons (bootstrap / rename tag / undo) and a "new
note" command round out the entry points. - Duplicate location-tag cleanup — one note = one location per namespace.
Sync warns when a note carries duplicate location tags, and a new "check
duplicate location tags" command opens a modal to pick which tag to keep per
note; the rest are removed from frontmatter (undoable, with an "undo last
duplicate-tag cleanup" command). The modal shows the total count, scrolls
within the viewport, and batches at 50 notes for large runs. - Location tags belong in frontmatter — settings and README now state that
cascade and bootstrap read and rewrite frontmatter tags, one per note. - Robustness / cleanup — every assembled vault path goes through
normalizePath(); cascade rename now isolates per-file frontmatter errors
(try/catch + skipped-files modal), matching bootstrap and separator change.
0.0.7
0.0.7 — Separator batch-change + bulk-op robustness
- Change the filename separator across the whole vault. Editing the
separator in settings now opens a confirm dialog and rewrites only the
trekey-boundary separator on every location-tagged file — symbols inside the
title are preserved — via the link-safe rename API. One-directional, like the
tag engine. Includes a dry-run count + collapsible file list and a one-step
undo command. - Separator validation relaxed — any non-empty value with no letters,
digits, or/(was "exactly one character"); multi-character separators are
allowed. - Bulk operations are now robust and observable:
- Per-file error isolation — one broken file (e.g. duplicate YAML keys)
no longer aborts a bootstrap or separator pass; failures are collected and
listed in a "skipped files" modal. - Live progress — a progress notice (
N/total) during bootstrap and
separator change. - Undo preserved on interruption — the undo record is saved even if the
pass is cut short.
- Per-file error isolation — one broken file (e.g. duplicate YAML keys)
- Internal: shared
assembleBasenamehelper (slot order + separator) and
separatorMigratedName(decompose with the old separator, re-emit with the
new one).
0.0.6
0.0.6 — Multi-key data model (schema-based)
- The filename key config is now a positional slot array —
TrellisSchema { slots: KeySlot[]; separators: string[] }— instead of three scalar fields.
The single-key default is a 2-slot[tag, name]schema; runtime behaviour is
unchanged. keyPosition(prefix/suffix) is absorbed into slot order — prefix =
[tag, name], suffix =[name, tag]. No separate field.- Existing settings migrate automatically (
schemaFromLegacy): saved
namespace/separator/keyPositiondata is converted to a schema on
load, losslessly. - Lays the general-form foundation for multi-key (multiple tag slots, multiple
separators). The multi-key UI and multi-separator parsing are deferred to an
advanced mode, so the core never needs rewriting again. - Fix: settings no longer share the module-level default-schema object (an edit
to the namespace/position could previously mutate the shared default).
0.0.5
0.0.4
0.0.4 — Bootstrap onboarding
- Bootstrap an existing vault (filename trekey prefixes, no tags yet):
decompose a filename trekey into a hierarchical location tag
(S88B07→#trel/S88/B/07). Placeholder slots (0/00) are kept as tag
segments so the tag ↔ trekey round-trip stays exact. - Dry-run preview command — lists every file's proposed tag (and files
skipped because they're already tagged or have no recognizable trekey).
Writes nothing. - Apply writes the tag into each file's frontmatter (existing content
preserved) and records what it wrote. - Undo last bootstrap command reverts exactly those writes.