Per @chatgpt-codex-connector review on PR #289: the package bump in
setup.py left the runtime version string in `obsidian_cli.py` and the
SKILL.md version footers stuck at 1.0.0, so `repl` and the skill files
would have misreported the installed artifact's version.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Obsidian Local REST API rejects POST /search/ with `40012 Unknown or
invalid Content-Type` when the request is sent with `application/json`
and a JSON-wrapped `{"query": ...}` body. The endpoint expects:
- `application/vnd.olrapi.dataview.dql+txt` for Dataview DQL queries
- `application/vnd.olrapi.jsonlogic+json` for JsonLogic queries
with the query body sent verbatim, not wrapped.
Changes:
- Add `api_post_raw(base_url, endpoint, api_key, body, content_type, …)`
helper that mirrors `api_put`'s raw-body pattern.
- `search_query` now takes a `query_type` arg (default `"dql"`) and
routes through `api_post_raw` with the right vendor Content-Type.
- `search query` CLI command gains `--type [dql|jsonlogic]`.
- Refresh unit + CLI tests; add backend tests for `api_post_raw`.
- Update SKILL.md (canonical + packaged), README, OBSIDIAN SOP doc.
- Bump package + registry version 1.0.0 → 1.1.0.
Fixes#271
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- search_query() now hits POST /search/ with JSON body per SOP
- search_simple() stays on POST /search/simple/ with query params
- Remove unused api_patch() and its test (v3.x API changed PATCH semantics)
- Add generic except Exception catch-all to handle_error decorator
Add CLI harness for Obsidian knowledge management via the Obsidian
Local REST API plugin. Includes vault CRUD, search, active note
operations, command execution, and interactive REPL mode.
- 48 unit tests (mocked, no backend required)
- 7 E2E tests (requires Obsidian with Local REST API plugin)
- Full documentation (SOP, README, SKILL.md, TEST.md)
- Registry entry for CLI-Hub