Bump obsidian-dev-utils to 87.1.0, register the open demo vault command, and add
a numbered, developer-focused demo vault with a no-app coverage suite. All gates
are green and the demo vault archives cleanly.
Add a developer-focused demo vault that shows how Advanced Debug Mode enriches
the DevTools console. Notes are numbered basic to advanced and cover debug mode,
long stack traces (with a Run button that throws through async boundaries), async
long stack traces, long-running-task timeouts, mobile DevTools, debug namespaces,
and every setting. A no-app integration suite keeps the notes in sync with the
PluginSettings surface. The root README documents the three ways to open it.
Add the shared OpenDemoVaultCommandHandler to the command batch so users can open
the plugin's demo vault. The plugin test seeds the plugin notice component and
asserts the handler is constructed.
Bump obsidian-dev-utils from ^83.0.0 to ^85.0.0 and fix all migration
fallout:
- Remove eslint-disable directives now banned by the stricter
eslint-comments/no-restricted-disable rule (obsidianmd 0.3.0 -> 0.4.1)
for @typescript-eslint/no-deprecated, obsidianmd/ui/sentence-case and
obsidianmd/no-global-this, fixing the underlying code instead.
- Drop the obsolete window.app / app.obsidianDevUtilsState seeding
(setup.ts and the settings-tab test): under 85 the shared state lives
on globalThis.__obsidianDevUtils and is reset per test by the wired
obsidian-dev-utils/vitest-setup.
- Render the debug-namespaces documentation link text via appendText so
it stays lowercase without suppressing obsidianmd/ui/sentence-case.
- Add a src/**/*-desktop-component.ts override turning off the new
obsidianmd/no-nodejs-modules warning for the deliberate desktop-only
node built-in imports (the rule cannot be disabled inline).
Convert the public LongStackTracesDesktopComponent.addStackFrame and
.adjustStackLines (each three positional args) to a single params
object, and AsyncLongStackTracesComponent.asyncHookInit likewise, with a
thin adapter arrow at the createHook boundary that unpacks the async_hooks
positional args into the object call. Update all call sites across both
components and their tests. Add a test that fires the real init hook so the
adapter arrow stays covered.
Replace inline setTimeout-Promise delay patterns with the sleep helper.
The unit test now imports sleep from obsidian-dev-utils/async; the
integration-test closure uses the Obsidian runtime global sleep.
Bump obsidian-dev-utils 75.0.0 -> 76.1.0 and obsidian-integration-testing 4.3.0 -> 4.4.0.
The new obsidian-dev-utils/params-options-name-match ESLint rule now checks param-bag names on
all members. Rename the AddLongStackTracesPatchComponent private param-bag interfaces to be
class-qualified, and add a scoped eslint-disable for afterPatchAddEventListener whose param must
remain the shared AfterPatchParams (it implements the AfterPatchFn callback signature).
Bump obsidian-dev-utils ^74.2.0 -> ^75.0.0 (major: renamed the test-setup
endpoints) and obsidian-test-mocks ^3.2.0 -> ^3.3.0.
Replace the removed unit-test setup file
obsidian-dev-utils/setup/async-operation-tracking-vitest-setup with the new
consolidated obsidian-dev-utils/vitest-setup endpoint, which resets shared
state on globalThis.__obsidianDevUtils and enables async tracking.
Wire obsidian-dev-utils/setup/async-operation-tracking-vitest-setup into the unit-tests
vitest project and replace the flaky setTimeout(0) settle-waits after the convertAsyncToSync
toggle onChange handlers with await waitForAllAsyncOperations().
dev-utils 74.2.0 distinguishes methods from function-like values: registerMethodPatch
now constrains methodName to MethodKeys<Obj>, which excludes callables carrying extra
members. Because GenericFunction adds an optional originalFn, Record<string, GenericFunction>
has no method keys, so AddLongStackTracesPatchComponent failed to compile (methodName: never).
Add GenericMethod (a bare callable) and GenericMethodObject (a record of them) and type the
patched obj as GenericMethodObject so methodName resolves to string. Extract the originalFn
carrier into a named interface to satisfy the no-anonymous-inline-object-types rule.