diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1b7d69b --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Aaron Bockelie + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 405cc28..b1ffec0 100644 --- a/README.md +++ b/README.md @@ -160,6 +160,7 @@ The critical `ObsidianAPI` abstraction layer is preserved, allowing all semantic - Workflow hints and guidance - Multi-vault support - Port collision detection +- Cross-platform tested (Linux, Windows, macOS) ⚡ **Performance Results**: - File operations: <10ms (vs ~50-100ms with REST API) diff --git a/SUBMISSION-CHECKLIST.md b/SUBMISSION-CHECKLIST.md new file mode 100644 index 0000000..cb6a799 --- /dev/null +++ b/SUBMISSION-CHECKLIST.md @@ -0,0 +1,104 @@ +# Obsidian Plugin Submission Checklist + +## Prerequisites ✅ + +### Required Files +- [x] `manifest.json` - Contains plugin metadata +- [x] `main.js` - Compiled plugin code +- [x] `styles.css` - Plugin styles (if any) +- [x] `README.md` - Plugin documentation +- [x] `LICENSE` - License file (MIT) + +### Manifest Requirements +- [x] `id` - Unique plugin ID: `obsidian-mcp-plugin` +- [x] `name` - Display name: `Obsidian MCP Plugin` +- [x] `version` - Semantic version: `0.5.2` +- [x] `minAppVersion` - Minimum Obsidian version: `0.15.0` +- [x] `description` - Clear description of functionality +- [x] `author` - Author name: `Aaron Bockelie` +- [x] `authorUrl` - GitHub profile link +- [x] `isDesktopOnly` - Set to `false` (works on mobile too) + +### Code Quality +- [x] No hardcoded API keys or secrets +- [x] Proper error handling implemented +- [x] TypeScript compilation without errors +- [x] ESLint checks passing +- [x] No console.log statements in production +- [x] Respects Obsidian API guidelines + +### Documentation +- [x] Clear README with: + - [x] Overview of functionality + - [x] Installation instructions + - [x] Configuration guide + - [x] Available features/tools + - [x] Support links +- [x] LICENSE file (MIT) +- [x] No excessive promotional content + +### Repository Setup +- [x] Public GitHub repository +- [x] Release created with required files +- [x] Clean commit history +- [x] No sensitive data in repository + +## Submission Process + +1. **Create Production Release** + - Build production version: `npm run build` + - Create GitHub release with tag matching version + - Upload `main.js`, `manifest.json`, and `styles.css` as release assets + +2. **Fork Community Plugins Repository** + - Fork: https://github.com/obsidianmd/obsidian-releases + - Add plugin to `community-plugins.json` + +3. **Create Pull Request** + - Title: "Add Obsidian MCP Plugin" + - Include: + - Brief description + - Link to repository + - Confirmation of testing + +4. **Plugin Entry Format** +```json +{ + "id": "obsidian-mcp-plugin", + "name": "Obsidian MCP Plugin", + "author": "Aaron Bockelie", + "description": "Semantic MCP server plugin providing AI tools with direct Obsidian vault access via HTTP transport", + "repo": "aaronsb/obsidian-mcp-plugin" +} +``` + +## Important Notes + +- Plugin will be reviewed by Obsidian team +- Review process may take several weeks +- Ensure plugin follows [Developer Policies](https://docs.obsidian.md/Developer+policies) +- No analytics or tracking without user consent +- No external network requests without clear disclosure +- Must handle errors gracefully without crashing Obsidian + +## Pre-Submission Testing + +- [x] Test on multiple Obsidian versions +- [x] Test on different operating systems + - [x] Linux (primary development platform) + - [x] Windows (tested with friends) + - [x] macOS (tested with friends) +- [x] Test with various vault sizes + - [x] Small vaults + - [x] Large vaults (up to ~1000 documents) +- [x] Verify no performance degradation +- [x] Check memory usage is reasonable +- [x] Ensure clean uninstall + +## Security Considerations + +- [x] No execution of arbitrary code +- [x] No access to system files outside vault +- [x] HTTP server only accepts local connections +- [x] No storage of sensitive data +- [x] Clear documentation of network usage \ No newline at end of file diff --git a/manifest.json b/manifest.json index ad1c5c0..6bac44b 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-mcp-plugin", "name": "Obsidian MCP Plugin", - "version": "0.5.2", + "version": "0.5.3", "minAppVersion": "0.15.0", "description": "Semantic MCP server plugin providing AI tools with direct Obsidian vault access via HTTP transport", "author": "Aaron Bockelie", diff --git a/package.json b/package.json index 41d555e..783c528 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-mcp-plugin", - "version": "0.5.2", + "version": "0.5.3", "description": "Semantic MCP server plugin providing AI tools with direct Obsidian vault access via HTTP transport", "main": "main.js", "scripts": { diff --git a/src/version.ts b/src/version.ts index 9b41bff..d7c80ad 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1,4 +1,4 @@ // Version is injected at build time by sync-version.mjs export function getVersion(): string { - return '0.5.2'; + return '0.5.3'; }