Commit graph

102 commits

Author SHA1 Message Date
Aaron Bockelie
f72b460ab2 docs(readme): finish de-jargoning — headings, feature labels, fix stale name
Carry the "drop semantic jargon" pass through the whole README, not just the
opening:
- "## Why Semantic MCP?" → "## Why It's Different"
- "## The Semantic Advantage" → "## In Practice" (the section is examples;
  the old title also near-duplicated "Why It's Different")
- "### Semantic Search" → "### Full-Text Search" — the section describes
  operators/regex/relevance ranking, i.e. full-text, not embedding-semantic;
  the old label was both jargon and inaccurate
- "Search across all notes semantically" → "Search and rank across all notes"
- "Concept Discovery: Semantic search finds..." → "Search and graph traversal
  surface related ideas..."
- "AI uses semantic tools to:" → "AI uses these tools to:"
- Fix stale settings reference: "Semantic MCP" → "Semantic Notes Vault MCP"
  (the actual manifest name shown in Obsidian's plugin list)

"Semantic" now survives only as the plugin's own name and the
semantic-vault-mcp slug / cert paths — its established identity, unchanged.
2026-07-03 23:11:03 -05:00
Aaron Bockelie
7a7faa84a7 docs(readme): drop "semantic" jargon, foreground permissions + Bases
Per feedback: "semantic" is insider framing nobody searches for. Lead the
capability line with concrete value instead — 8 powerful tools, first-class
Dataview + Bases support, and (the real trust differentiator) that every
operation respects the permissions you set: read-only mode, per-operation
controls, and path allow/block lists. Competitors mostly hand the AI
unrestricted read/write; this one doesn't. All claims verified against the
shipped VaultSecurityManager + readOnlyMode settings.
2026-07-03 23:03:37 -05:00
Aaron Bockelie
7c1774bcbe docs(readme): lead with concrete verbs + the native/no-server edge
Repositioning the README opening after a competitive prose analysis of the
top Obsidian-MCP projects. The old opening led with an abstract tagline
("Give AI semantic agency over your knowledge graph") and spent prime real
estate explaining what MCP is — to people who searched for MCP — while our
single biggest differentiator (a native in-Obsidian server, no external Node
process, no separate REST-API plugin) went unstated. A competitor was already
using our own "no external dependencies" angle.

Changes to the top-of-README positioning only (setup/tools/docs untouched):
- Verb-first tagline: "Read, write, search, and traverse your Obsidian vault
  from any AI assistant — through an MCP server that runs inside Obsidian."
- State the native/no-server edge in the first sentence, framed positively
  (our own architecture, not a competitor put-down); connect it to why the
  drag-drop `.mcpb` setup is possible.
- Ground the "8 semantic tools" claim with a concrete, verified example
  (the vault tool alone handles 13 actions) instead of an abstraction.
- Relocate the "what is MCP" explainer to a short "New to MCP?" aside.
- Preserve the drag-drop onboarding hero — the strongest story in the field.
2026-07-03 23:01:25 -05:00
Aaron Bockelie
a09e667b33 docs(readme): lead with install + emoji .mcpb→Claude Desktop banner
Move Quick Start above the conceptual sections so install is the first
thing readers hit, and relocate 'Why Semantic MCP?' down to before Core
Tools. Add an inline-emoji hero banner (box → robot) for the .mcpb
drag-into-Claude-Desktop flow — glyphs render on the Obsidian listing
where embedded images get stripped, making the one-click path obvious
to non-power-users.
2026-06-08 16:09:35 -05:00
Aaron Bockelie
69be0a007e fix(onboarding): restore one-command Claude Code setup; drop misinformed CLI warning
#192 replaced the Claude Code copy/paste command with a hand-edit-this-JSON
blob plus a warning against `claude mcp add --header`. That was a real UX
regression, and the security premise was wrong for THIS transport:

- The argv / macOS-unified-log exposure applies to **stdio** transports
  (a spawned `npx mcp-remote --header ...` child), NOT native **HTTP**
  transport — there is no spawned child carrying the header in argv. #143's
  threat model was conflated with the mcp-remote setup it was also removing.
- Cleartext-at-rest in ~/.claude.json / .mcp.json is identical whether the
  entry is added via the CLI or hand-edited, so "edit the file instead"
  bought no at-rest improvement either.

(Confirmed against current Claude Code docs via claude-code-guide.)

Restores the single `claude mcp add --transport http ...` command as the
Claude Code path in the Settings UI, README, and the issue-32 template.
Removes the inaccurate warning and its now-dead `.mcp-security-warning` CSS
and the eslint-disable it required.

Kept from #192 (those parts were legit): native HTTP transport over the
deprecated mcp-remote, and the self-signed-cert / NODE_EXTRA_CA_CERTS
trust docs.

ADR-104's context has a passing line calling the `--header` form
deprecated; left as-is (accepted ADRs are immutable records of what we
believed then) — this commit is the corrective record.
2026-05-18 21:43:28 -05:00
Aaron Bockelie
0bd8020804 security(docs): replace claude mcp add --header with safe config-file approach
`claude mcp add --header "Authorization: Bearer <token>"` defeats
secret-at-rest protection: the CLI resolves and echoes the header value to
stdout (captured by any parent process, incl. AI agents) and on macOS the
spawned MCP child argv is written to the unified log. Editing the MCP config
file directly avoids both vectors.

- Settings UI: new shared `renderClaudeCodeConnection()` renders a
  ready-to-paste JSON config + a security warning for the authenticated
  path, and the safe plain CLI command only when auth is disabled. Used by
  both the initial render and the live-refresh handler so they cannot drift
  (the previous two copies had already diverged).
- README / SECURITY.md / troubleshooting.md / issue-32 response template:
  drop `mcp-remote` + `NODE_TLS_REJECT_UNAUTHORIZED=0`, document native HTTP
  transport and proper self-signed-cert trust (macOS Keychain +
  NODE_EXTRA_CA_CERTS for Bun-based runtimes), add the `--header` warning.
- styles.css: `.mcp-security-warning`.

Reimplemented from PR #143 against current `main` (the settings UI had been
restructured since the PR was opened); supersedes and closes out #143.
ADR-100 left untouched — accepted ADRs are immutable records; the `--header`
deprecation is recorded in ADR-104's context instead.

Co-authored-by: Earl Plak <5597016+laplaque@users.noreply.github.com>
2026-05-18 08:10:00 -05:00
Aaron Bockelie
9784be9e09 docs: post-listing refresh + accepted review findings (#176)
Plugin is live in the community directory (2026-05-16). Capture settled
knowledge so it isn't re-investigated:

- README: link to the public Obsidian listing; fix stale '(coming soon)'
  install section (it's live) and the search term to the real plugin name.
- CLAUDE.md: document the portal=source-of-truth -> bot-mirrors-to
  community-plugins.json -> in-app browser reads the mirror architecture,
  and the resulting post-approval propagation lag (normal, not a bug).
- CLAUDE.md: broaden 'accepted scorecard cautions' to 'accepted review
  findings' covering the full submit review — fs access, vault enumeration,
  clipboard, and the README placeholder false positive — each with its
  justification, so they aren't re-litigated. Refresh the issue tracker line.

Closes #176.
2026-05-16 13:20:41 -05:00
Aaron Bockelie
28cc1ea5e6 docs: align README title with manifest plugin name
Obsidian review flags README title != manifest.json name. Title was
'Obsidian MCP Plugin'; manifest name is 'Semantic Notes Vault MCP'. Match it.
2026-05-16 12:45:28 -05:00
Aaron Bockelie
9ed47c1aad docs(readme): Restructure install section around MCPB
Three onboarding paths now documented in priority order: MCPB
one-click install for Claude Desktop (with cross-platform mime-type
caveat), Claude Code CLI, and the JSON config block for other MCP
clients and multi-vault setups. The maker CLI (scripts/make-mcpb.mjs)
gets its own advanced section for custom-named bundles.

Mirrors the Settings UI ordering so the README and the in-plugin
guidance tell the same story.

Refs ADR-102.
2026-05-15 11:35:10 -05:00
Aaron Bockelie
ae03b2e5f9 refactor: Remove concurrent mode toggle, simplify connection setup (ADR-100)
Always run in pooled/concurrent mode — the dual code path (single
MCPServer vs MCPServerPool) existed for backward compatibility with
clients that couldn't handle HTTP transport. All modern MCP clients
now support Streamable HTTP natively.

Changes:
- Remove enableConcurrentSessions toggle and maxConcurrentConnections
  setting from interfaces, defaults, and settings UI
- Remove single-server code path (setupMCPHandlers, non-concurrent
  request handling branch) — ~200 lines of dead code
- Simplify connection templates from 4 options to 2:
  Claude Code command + standard JSON with Authorization header
- Drop mcp-remote and Windows workaround templates
- Fix auth format: use standard Authorization header instead of
  URL-embedded credentials
- Remove unused imports (schema types, DataviewTool, FileSystemAdapter)
- Update README and troubleshooting docs
- Accept ADR-100

Net: -433 lines
2026-03-14 23:13:35 -05:00
Aaron Bockelie
038748f910 docs: Link license file from README 2026-02-17 14:15:29 -06:00
Aaron Bockelie
09c3511789 chore: Remove automated stats tracking
Remove the community engagement and release download statistics from README and delete the automated stats update workflow. This simplifies the repository and removes unnecessary automation.
2025-12-03 12:40:26 -06:00
GitHub Action
de589af4c4 chore: Update repository statistics [skip ci] 2025-12-03 02:33:50 +00:00
GitHub Action
679b5fe1bf chore: Update repository statistics [skip ci] 2025-12-02 02:33:48 +00:00
GitHub Action
2556b285fc chore: Update repository statistics [skip ci] 2025-12-01 02:46:14 +00:00
GitHub Action
fdb45eb432 chore: Update repository statistics [skip ci] 2025-11-30 02:38:55 +00:00
GitHub Action
b05984ca1e chore: Update repository statistics [skip ci] 2025-11-29 02:31:53 +00:00
GitHub Action
d281c41b67 chore: Update repository statistics [skip ci] 2025-11-28 02:31:59 +00:00
GitHub Action
3ad41efb51 chore: Update repository statistics [skip ci] 2025-11-27 02:32:37 +00:00
GitHub Action
53862623c1 chore: Update repository statistics [skip ci] 2025-11-26 02:33:27 +00:00
GitHub Action
66194cc7d6 chore: Update repository statistics [skip ci] 2025-11-25 02:33:02 +00:00
GitHub Action
9bdf4dc19b chore: Update repository statistics [skip ci] 2025-11-24 02:35:51 +00:00
GitHub Action
29648f0de4 chore: Update repository statistics [skip ci] 2025-11-23 02:39:58 +00:00
GitHub Action
e926537cb3 chore: Update repository statistics [skip ci] 2025-11-22 02:30:09 +00:00
GitHub Action
4ad61b09c9 chore: Update repository statistics [skip ci] 2025-11-21 02:31:50 +00:00
GitHub Action
1ccf533f40 chore: Update repository statistics [skip ci] 2025-11-20 02:32:11 +00:00
GitHub Action
e932285cef chore: Update repository statistics [skip ci] 2025-11-19 02:32:14 +00:00
GitHub Action
f113fd6448 chore: Update repository statistics [skip ci] 2025-11-18 02:32:23 +00:00
GitHub Action
13a4e90d77 chore: Update repository statistics [skip ci] 2025-11-17 02:33:03 +00:00
GitHub Action
eef03ac27a chore: Update repository statistics [skip ci] 2025-11-16 02:34:07 +00:00
GitHub Action
7bb93f90f9 chore: Update repository statistics [skip ci] 2025-11-15 02:30:52 +00:00
GitHub Action
65539ec2b1 chore: Update repository statistics [skip ci] 2025-11-14 02:32:38 +00:00
GitHub Action
dee86ad5c4 chore: Update repository statistics [skip ci] 2025-11-13 02:33:20 +00:00
GitHub Action
81f8e735c0 chore: Update repository statistics [skip ci] 2025-11-12 02:32:22 +00:00
GitHub Action
515841f8c1 chore: Update repository statistics [skip ci] 2025-11-11 02:32:55 +00:00
GitHub Action
e841a63b2d chore: Update repository statistics [skip ci] 2025-11-10 02:34:02 +00:00
GitHub Action
a438522706 chore: Update repository statistics [skip ci] 2025-11-09 02:33:07 +00:00
GitHub Action
97d01a744d chore: Update repository statistics [skip ci] 2025-11-08 02:29:23 +00:00
GitHub Action
cf132036b7 chore: Update repository statistics [skip ci] 2025-11-07 02:31:54 +00:00
GitHub Action
242e01260e chore: Update repository statistics [skip ci] 2025-11-06 02:33:08 +00:00
GitHub Action
0e4eb78891 chore: Update repository statistics [skip ci] 2025-11-05 02:32:48 +00:00
GitHub Action
9731f84862 chore: Update repository statistics [skip ci] 2025-11-04 02:32:08 +00:00
GitHub Action
ac217181b7 chore: Update repository statistics [skip ci] 2025-11-03 02:33:50 +00:00
GitHub Action
75ee062cf6 chore: Update repository statistics [skip ci] 2025-11-02 02:33:53 +00:00
GitHub Action
e907b44e2b chore: Update repository statistics [skip ci] 2025-11-01 02:32:24 +00:00
GitHub Action
b4b15b3187 chore: Update repository statistics [skip ci] 2025-10-31 02:32:01 +00:00
GitHub Action
3069b86ba0 chore: Update repository statistics [skip ci] 2025-10-30 02:32:24 +00:00
GitHub Action
59cfd7b6da chore: Update repository statistics [skip ci] 2025-10-29 02:33:32 +00:00
GitHub Action
b28bf869ec chore: Update repository statistics [skip ci] 2025-10-28 02:31:06 +00:00
Aaron Bockelie
71ac7b8be7 fix: Emergency fix for stats update workflow and README
Critical bug fix:
- The awk script in update-stats.yml had a logic error that caused
  repeated appending of <!-- STATS:END --> markers on each run
- This resulted in the README growing from 192 lines to 4.2M lines
  over 22 workflow runs

Changes:
1. Restored README.md to clean state from commit 37a640c (192 lines)
2. Rewrote awk logic to properly replace content between markers:
   - Now tracks in_stats state correctly
   - Skips all content between START and END markers
   - Inserts new stats content only once
   - Prevents duplication on subsequent runs

Tested:
- First run: correctly inserts stats (192 → 208 lines)
- Second run: correctly replaces stats (stays at 208 lines)
- Only 1 STATS:END marker after multiple runs
2025-10-27 00:29:41 -05:00