v0.1.2: address Obsidian community-store reviewer bot

Bumps minAppVersion to 1.7.2 (the lowest version where every API the
plugin uses is supported — processFrontMatter and revealLeaf were the
two that pushed this up).

ESLint pass against eslint-plugin-obsidianmd is now clean (0 errors,
0 warnings). Notable changes:

- Removes the deprecated MarkdownRenderer.renderMarkdown fallback;
  always uses MarkdownRenderer.render now (minAppVersion covers it)
- Replaces Workspace.activeLeaf reads with Workspace.getActiveViewOfType
- Replaces Vault.trash with FileManager.trashFile to respect the user's
  configured deletion preference
- Replaces window.confirm() with a small ConfirmModal so the bulk-delete
  prompt is consistent with the rest of the UI
- Dynamic style assignments now use HTMLElement.setCssStyles rather than
  el.style.* directly
- All static modal styling has been moved out of inline styles into CSS
  classes (keep-modal-stack, keep-modal-row, keep-modal-buttons, etc.)
- Async event handlers that returned Promise<void> where the listener
  expects void are now sync wrappers that internally void-await
- Empty catch blocks now have explanatory comments
- Removes 'this' aliasing in openNotePreview (uses arrow function instead)
- Drops unused vars and fixes sentence case in setting descriptions

Adds eslint.config.mjs with the obsidianmd recommended config so future
changes can be lint-checked locally before pushing.
This commit is contained in:
Philemon Chiro 2026-05-01 20:08:14 +02:00
parent f0e35d868f
commit 3ebc6f485a
10 changed files with 6255 additions and 1134 deletions

1
.gitignore vendored
View file

@ -4,3 +4,4 @@ node_modules/
data.json
.env
.env.local
launch/

33
eslint.config.mjs Normal file
View file

@ -0,0 +1,33 @@
import obsidianmd from 'eslint-plugin-obsidianmd';
import tsParser from '@typescript-eslint/parser';
const plugin = obsidianmd.default || obsidianmd;
export default [
...plugin.configs.recommended,
{
files: ['main.ts'],
languageOptions: {
parser: tsParser,
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
project: './tsconfig.json',
tsconfigRootDir: import.meta.dirname,
},
},
},
{
ignores: ['main.js', 'node_modules/**', 'docs/**', 'launch/**'],
},
{
files: ['main.ts'],
rules: {
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-argument': 'off',
'@typescript-eslint/no-unsafe-return': 'off',
},
},
];

1675
main.js

File diff suppressed because it is too large Load diff

489
main.ts

File diff suppressed because it is too large Load diff

View file

@ -1,8 +1,8 @@
{
"id": "notekeeper",
"name": "Notekeeper",
"version": "0.1.1",
"minAppVersion": "1.4.0",
"version": "0.1.2",
"minAppVersion": "1.7.2",
"description": "Browse your vault as a Google Keep-style masonry of cards. Quick capture, pin, color, archive, and filter notes by labels — sticky-note style.",
"author": "Philemon Chiro",
"authorUrl": "https://github.com/PhilemonChiro",

5113
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{
"name": "obsidian-notekeeper",
"version": "0.1.1",
"version": "0.1.2",
"description": "Browse your vault as a Google Keep-style masonry of cards. Quick capture, pin, color, archive, and filter notes by labels.",
"author": "Philemon Chiro",
"license": "MIT",
@ -11,8 +11,11 @@
},
"devDependencies": {
"@types/node": "^20",
"@typescript-eslint/parser": "^8.59.1",
"builtin-modules": "^3.3.0",
"esbuild": "^0.21.0",
"eslint": "^9.39.4",
"eslint-plugin-obsidianmd": "^0.2.9",
"obsidian": "latest",
"tslib": "^2.6.0",
"typescript": "^5.4.0"

View file

@ -1007,6 +1007,69 @@
border-color: var(--text-accent);
}
/* ========== shared modal helpers ========== */
.keep-modal-stack {
display: flex;
flex-direction: column;
gap: 8px;
}
.keep-modal-row {
display: flex;
align-items: center;
gap: 8px;
padding: 4px 0;
}
.keep-modal-spacer {
flex: 1;
}
.keep-modal-input {
width: 100%;
}
.keep-modal-buttons {
display: flex;
justify-content: flex-end;
gap: 8px;
margin-top: 12px;
}
.keep-modal-hint {
font-size: 12px;
color: var(--text-muted);
margin-top: 8px;
}
.keep-modal-color-grid {
display: grid;
grid-template-columns: repeat(6, 1fr);
gap: 8px;
margin-top: 8px;
}
.keep-modal-color-swatch {
width: 32px;
height: 32px;
border-radius: 50%;
cursor: pointer;
border: 1px solid var(--background-modifier-border);
}
.keep-tag-dot {
width: 12px;
height: 12px;
border-radius: 50%;
border: 1px solid var(--background-modifier-border);
flex-shrink: 0;
}
.keep-confirm-message {
margin: 8px 0 4px;
color: var(--text-muted);
}
/* ========== batch sentinel ========== */
.keep-batch-sentinel {
height: 1px;

View file

@ -13,7 +13,8 @@
"strictNullChecks": false,
"lib": ["DOM", "ES2020"],
"esModuleInterop": true,
"skipLibCheck": true
"skipLibCheck": true,
"downlevelIteration": true
},
"include": ["**/*.ts"],
"exclude": ["node_modules", "main.js"]

View file

@ -1,4 +1,5 @@
{
"0.1.0": "1.4.0",
"0.1.1": "1.4.0"
"0.1.1": "1.4.0",
"0.1.2": "1.7.2"
}