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.
3.1 KiB
Contributing to Minimal Task Board
Thanks for taking a look! This plugin is small and focused. Contributions, bug reports, and feature ideas are all welcome.
Reporting bugs
Open an issue at https://github.com/selectstarfromusers/obsidian-task-manager/issues with:
- Obsidian version (
Settings → About) - Plugin version (in
Settings → Community plugins → Minimal Task Board) - A short description of what you saw vs what you expected
- A minimal repro: a few example task files (or screenshots) and the bucket/secondary-grouping settings you had configured
- The full text of any error from
View → Toggle developer tools → Console
Requesting features
Open an issue with the enhancement label and describe the workflow you're trying to support. Concrete examples beat abstract requests — "I want to triage 50+ tasks per day across 4 customer accounts" gives much better context than "make filtering better".
Local development
git clone https://github.com/selectstarfromusers/obsidian-task-manager
cd obsidian-task-manager
npm install
npm run dev # watches src/ and rebuilds on change
Then symlink the plugin folder into a test vault's .obsidian/plugins/minimal-task-board/:
mkdir -p /path/to/test-vault/.obsidian/plugins
ln -s "$(pwd)" /path/to/test-vault/.obsidian/plugins/minimal-task-board
Enable the plugin under Settings → Community plugins, then Ctrl/Cmd+P → Reload app without saving after rebuilds.
Project layout
src/main.ts— plugin entry, view registration, settings load/savesrc/types.ts— shared type definitions (TaskItem,BucketGroup,TasksPluginSettings,TaskFrontmatter)src/data/— task store, inline-task watcher, frontmatter writersrc/views/— board / focus renderers, bucket component, task rowsrc/interactions/— drag/drop, checkbox toggle, inline-task creationsrc/settings.ts— settings tab UIstyles.css— all styles (CSS variables and specificity, no!important)
Style and review notes
- Use Obsidian's DOM helpers (
createDiv,createSpan,createEl,createSvg,activeDocument,activeWindow.setTimeout,this.registerDomEvent) rather than raw DOM globals — the Obsidian community automated review enforces this. - Frontmatter reads should narrow
frontmatterto theTaskFrontmatterinterface insrc/types.tsrather than usingany. - Keep styles in
styles.css, not inlineel.style.Xassignments. - Don't introduce new third-party runtime dependencies without discussing first — the plugin is intentionally lightweight.
Pull requests
- Fork, branch off
main, keep the change focused npm run buildmust succeed and produce a cleanmain.js- Bump the version in
manifest.jsonand add a matching entry inversions.json(use semver — patch bumps for fixes, minor for new features) - Open the PR with a brief summary of the change, screenshots if UI, and any new settings explained
- Be patient — this is a hobby project, I'll get to it
License
By contributing you agree your changes are released under the MIT License (see LICENSE).