* Update devDependencies and adapt to eslint-plugin-obsidianmd 0.4.1
* Bump minAppVersion to 1.13.0 and drop deprecated API usage
* Remove dead ESLint config obsoleted by obsidianmd 0.4.1
- Bump @types/node, esbuild, jiti, obsidian, typescript (6.0),
and typescript-eslint to latest
- Hold @eslint/js at 9.x: eslint-plugin-obsidianmd peer-pins ^9.30.1
- tsconfig: drop unused baseUrl and switch moduleResolution to bundler
(both deprecated as errors in TS 6.0)
- main.ts: declare settings to refine Plugin.settings (new in 1.13.0)
- settings.ts: add override to display(); centralise the still-supported
imperative re-render behind rerender() with one deprecation suppression
- Keep setWarning() over setDestructive() to avoid raising minAppVersion
from 1.8.7 to 1.13.0
* Use createSpan helper for file path element
* Use createSpan helper for selection conflict warning
* Use createSpan helper for checkbox-type warning
* Use createSpan helper for selection conflict warning (initial render)
* Use createSpan helper for checkbox-type warning (initial render)
* Upgrade eslint-plugin-obsidianmd to 0.3.0
Apply prefer-window-timers fix for popout window compatibility.
* Upgrade eslint-plugin-obsidianmd to 0.2.4
Pick up new rules: prefer-active-doc, prefer-active-window-timers,
no-unsupported-api, prefer-instanceof, editor-drop-paste,
rule-custom-message, plus the bundled no-unsanitized plugin.
Fix new lint errors:
- Use activeDocument/activeWindow instead of document/window in the
modal and settings (popout compatibility).
- Use activeWindow.setTimeout/clearTimeout for the status bar debouncer.
- Bump minAppVersion to 1.8.7. Notice.messageEl (1.8.7) and
FileManager.trashFile (1.6.6) were already in use, so the previous
1.4.10 floor was incorrect.
Config tweaks:
- Scope a local override to turn off the preset's type-aware
obsidianmd rules on package.json: the 0.2.4 preset spreads them
globally and they crash on the JSON parser.
- Keep reportUnusedDisableDirectives and require-await overrides
(the preset still does not set them).
- Switch from the deprecated tseslint.config() to ESLint core's
defineConfig(). Drop the now-redundant globals dep (the preset
sets browser/obsidian globals itself).
* Pin debounce timers to owning window, not activeWindow
activeWindow resolves at call time, so a timer scheduled in one
window could be cleared against a different window (no-op) if the
user moved focus between schedule and cancel. The stale callback
would still fire and clobber a newer pending timer id.
Capture the owning window via the element's `.win` accessor and use
the same reference for both setTimeout and clearTimeout — status
bar in main.ts, selection-property blur debouncer in settings.ts.
* Pin modal DOM to owning document; bump version to 1.0.8
activeDocument follows focus, so modal code that used it to check
active element or create inputs could target the wrong window when
focus moved between pop-outs. Switch to the owning document of the
relevant element (checkbox.ownerDocument, setting.controlEl.ownerDocument).
Bump plugin version to 1.0.8 and record versions["1.0.8"] = "1.8.7".
Keeping the minAppVersion change under version 1.0.7 would have left
the packaged manifest (1.8.7) disagreeing with the community index
(versions.json mapping 1.0.7 → 1.4.10).
* Revert premature version bump to 1.0.8
Roll package/manifest/versions metadata back to 1.0.7; the version
bump belongs in a separate release commit via `npm version patch`,
not in this branch. minAppVersion stays at 1.8.7 because the code
on this branch uses APIs that require it.
- Add NaN validation in coerceValue, abort update on invalid number
- Save-then-commit pattern in settings tab: build candidate, persist,
then commit to live state only on success
- Validate settings on load: sanitize properties array entries, check
selectionProperty type
- Feedback for silent rejections: empty/duplicate property names show
Notice
- Reflect fallback in selection property input with re-entrancy guard
- Move onComplete inside try block in setSelection (success-only)
- Stable DOM structure in progress notice (text span + button) with
try/finally for notice cleanup
- Specific error message in removeSelectionProperty
- Enable strict:true in tsconfig, add exactOptionalPropertyTypes,
noImplicitOverride, noPropertyAccessFromIndexSignature
- Move obsidian to devDependencies and pin version
- Remove empty authorUrl from manifest
Rename classes (BasepropPlugin → BulkPropertiesPlugin, etc.),
CSS classes (baseprop-* → bulk-properties-*), and package name
to match the new plugin identity.
Add command "Bulk edit selected files" that finds all vault files with
the "selected" checkbox property checked, then presents a modal to
choose a property, enter a new value (with type-appropriate inputs),
and apply the change across all selected files. Includes option to
deselect files after update.