- styles.css: switch `text-decoration` shorthand to `text-decoration-line`
longhand (silences Obsidian 1.9.12 partial-support warning).
- vault enumeration: replace `vault.getFiles()` + path-prefix filter in
3 call sites (settings.ts, inlineTaskWatcher.ts, taskStore.ts) with
a new `getMarkdownFilesInFolder(app, folderPath)` helper using
`Vault.recurseChildren` scoped to the configured task folder. The
plugin no longer enumerates the full vault — clears the scorecard
"Vault Enumeration" finding.
- add `.github/workflows/release.yml` invoking
`actions/attest-build-provenance@v2` so release assets carry
GitHub-signed build attestations.
- commit `package-lock.json` for reproducible CI builds. This also
unblocks Obsidian's automated build verification + malware scan.
- fix two preexisting `ReturnType<typeof setTimeout>` vs
`activeWindow.setTimeout` (`number`) type mismatches surfaced by
tsc --noEmit (settings.ts + taskView.ts).
Co-authored-by: Isaac
Migrated from the legacy obsidianmd/obsidian-releases PR workflow to
the new https://community.obsidian.md portal. The new automated scan
flagged 128 findings on v0.1.3; this commit addresses the code, style,
and infrastructure findings.
Code (TypeScript)
- Replace document.createElement("div"|"span"|"input"|"datalist"|
"option") with Obsidian's createDiv/createSpan/createEl helpers
(~30 call sites across src/views/ and src/interactions/).
- Replace document.createElementNS(svg-ns, ...) with createSvg().
- Replace bare document.X / document.querySelector /
document.createTextNode with activeDocument.X for popout window
compatibility.
- Replace setTimeout/clearTimeout/window.setTimeout/window.clearTimeout
with activeWindow.setTimeout/clearTimeout (7 call sites).
- Introduce TaskFrontmatter interface in src/types.ts and narrow all
metadataCache.getFileCache(...).frontmatter accesses to it — fixes
the bulk of no-unsafe-* lint warnings.
- Type-safe loadData() in main.ts via Partial<TasksPluginSettings>.
- stripWikilinks() now accepts unknown and narrows internally.
- Use configured inlineTaskTag in the inline task regex (the `tag`
parameter was declared-but-unused).
- Prefix the unused sourceFile parameter on updateStub with `_`.
Styles
- Remove all !important declarations (5 occurrences); bump
specificity via .ot-view parent selector instead.
- Merge the duplicate .ot-task-row definition and guard touch-target
overrides under @media (pointer: coarse).
- Expand #fff -> #ffffff.
Infrastructure
- Add CONTRIBUTING.md (fixes "missing contributing guide" hygiene
flag on the portal scorecard).
Deferred for follow-up
- package-lock.json — couldn't generate from this session
(npmjs.org unreachable). Run `npm install` locally and commit
the lockfile to clear the last "no lockfile" finding.
- .github/workflows/release.yml — needs `workflow` OAuth scope to
push; will be added in a follow-up commit.
Why:
- Fix unhandled promises (void-prefixed calls in event listeners, setTimeout
callbacks, and sync handlers).
- Replace async-without-await signatures (loadTasks, onunload, onClose,
countTasksInBucket) with sync equivalents.
- Narrow nullish-coalesce stringify of keyof TaskItem to exclude TFile /
objects from "[object Object]" stringification.
- Replace innerHTML with DOM API in the empty-state renderer.
- Replace createEl("h2", ...) with setHeading() via Setting API for
settings sections.
- Move inline element.style.* assignments into styles.css classes.
- Use FileManager.trashFile() instead of Vault.delete() for stub cleanup.
- UI strings use sentence case ("Open tasks", "New bucket", "Secondary
grouping", "Getting started").
- Remove unused imports/bindings (BucketGroup, TaskRowCallbacks,
BucketConfig, originalOnComplete).
Co-authored-by: Isaac
- Wire toggleDoneWithSync: checking task on board now checks source note
- Add right-click/long-press context menu with "Move to..." bucket list
- Warn when changing bucket property in settings
- Handle stub filename collisions with random suffix
- Document #task position and multiple wikilink behavior
Co-authored-by: Isaac
Board and Focus view modes with customizable buckets, secondary
grouping by any frontmatter property, inline #task tracking from
notes with bidirectional sync, drag-and-drop, completion animations,
ARIA accessibility, and mobile-friendly touch targets.
Co-authored-by: Isaac