Skip to content

Releases

Khiip ships as three independently-versioned pieces. This page is the single place to check what’s current, how to update, and what changed across all of them. Each piece keeps its own authoritative changelog (linked below); this page aggregates them.

Current versions

SurfaceCurrentUpdate withNotes
Base — khiip (daemon · CLI · MCP · REST)0.2.4uv tool upgrade khiipAGPL-3.0, on PyPI. Manual upgrade — Khiip never phones home. Restart the daemon after upgrading.
Khiip Plus — khiip_ee (styled renders + deeper capture)0.2.2Re-download from the /dl link in your key email, then reinstallELv2 add-on. Requires base khiip >=0.2.0,<0.3.
Obsidian plugin0.2.5In-app update check, BRAT (auto-tracks releases), or manualFree, tier-agnostic; mirrors whatever tier your daemon runs.

Compatibility

  • Khiip Plus requires a compatible base. The Plus wheel pins khiip >=0.2.0,<0.3, so keep the base daemon and the Plus add-on on the same 0.2.x line. khiipd version prints the base version and whether Plus is active.
  • The Obsidian plugin follows the daemon. Plus lives on the daemon, not the plugin — the same plugin renders base or Plus output depending on the tier your daemon runs. There is no separate “Plus plugin.”
  • Your license key is version-independent. It’s verified offline against a key baked into the build; any valid key activates any Plus wheel. Upgrading the wheel doesn’t invalidate it.

What’s new

Base — khiip

Full notes: CHANGELOG.md.

  • 0.2.4 — the correctness + trust release. khiipd validate learns --fix to re-point index rows at notes you renamed or moved in your vault (preview first; --apply writes), plus a new job_capture_missing check; hand-edit protection — if you edit a captured note by hand and then refetch or re-render, the daemon refuses rather than clobbering your edit (pass --force to override and discard it); a re-downloaded binary whose bytes changed now keeps the old copy under a timestamped name instead of overwriting it; Wikipedia captures made with 0.2.4 keep their rich body (references, infobox) when you re-extract offline — no network needed (captures made before 0.2.4 still fall back to plaintext offline); recall and GET /captures gain a token-lean view=lean shape for LLM agents (the full shape stays the default); and captures can now run in the background — POST /captures?mode=async returns a job you poll while it works. See the new public contracts below.
  • 0.2.3 — correctness + registry-readiness. Refetching a note you’ve renamed in your vault no longer overwrites the new capture with stale content (the data-loss fix); Wikipedia articles render clean rich text (links, bold, real headings — no more ��-mangled section markers); the CLI and khiipd serve now honor [daemon] host/port in config.toml (if you set these in the past, your daemon moves on upgrade — a non-loopback host additionally needs [daemon] allow_non_loopback = true); recall gains an optional --min-score floor; khiipd validate learns vault_path_stale + vault_id_duplicate; daemon-down errors link the new Autostart page; the MCP server reports the real package version.
  • 0.2.2 — the khipu brand mark at the top of each capture now carries an intrinsic size, so it no longer renders oversized in contexts without the plugin’s CSS (Obsidian without the plugin, Obsidian mobile, editor previews). No change in styled contexts.
  • 0.2.1 — bare tweets now title as @handle: first line (mirrors X; makes a captured tweet identifiable in the vault). Long-form X posts keep their own article title.
  • 0.2.0 — the public launch: on PyPI (uv tool install khiip), open-core packaging (the free AGPL core ships as khiip; Plus is a separate distribution), and tag-driven release automation with PyPI Trusted Publishing.

Khiip Plus — khiip_ee

The styled per-source renders and deeper capture depth. This is the Plus add-on’s public changelog home; see Activate Khiip Plus to install or update it.

  • 0.2.2 — Reddit post flair now renders a pill even when the flair carries no color (a default grey pill), so flaired posts read consistently.
  • 0.2.1 — the X card carries the Khiip brand mark, matching the other per-source renders.
  • 0.2.0 — launch: platform-styled renders for X, Reddit, YouTube, Wikipedia, and web, plus deeper social- and comment-tree capture depth.

Obsidian plugin

Full notes: GitHub Releases.

  • 0.2.5 — captures show live staged progress: a per-stage card pinned at the sidebar’s bottom edge plus one updating notice, with per-item media download counts. A new “Khiip: re-capture this note” command re-captures the note you’re reading. Recall results get a two-line excerpt showing why each hit matched and relevance-tiered score chips; X rows show an @handle chip and byline-less web rows fall back to the site’s hostname; a results header with ✕ (or Esc) clears back to the home view. Also fixes the Khiip mark rendering outside its slot in the view tab and sidebar header.
  • 0.2.4 — the recall sidebar shows a u/ prefix on Reddit authors (matches the card render).
  • 0.2.3 — sidebar recents show source · author · time, so you can see who wrote each capture.
  • 0.2.2 — Obsidian community-review fixes (async view handling, minimum-app-version bump).
  • 0.2.1 — khipu-fan glyph on the ribbon and tab; restored-note callout-icon fix.
  • 0.2.0 — first release: capture command + recall sidebar over the plain-Markdown vault.

Public contracts

A few surfaces carry append-only value sets — like the CLI exit codes, they are declared here, and Khiip promises: existing values are never renamed or removed; new values may be added in later releases. Write clients to match values they know and ignore any they don’t.

Capture-job stages and statuses (new in 0.2.4)

POST /api/v1/captures?mode=async accepts a capture and returns a job (202, with a Location header pointing at GET /api/v1/jobs/{id} to poll) — unless the URL was already captured, in which case you get that existing capture straight back (200, no job). The sync default is unchanged (201 + the capture). A job records eight pipeline stages and its own status.

  • Stage names (match by name — the order they run in is not part of the contract): extract, enrich, media, preserve, wayback, render, write, embed.
  • Per-stage status: pending, running, succeeded, degraded, skipped, failed. degraded means a best-effort step failed but the capture still landed (the job still succeeds); skipped means the stage didn’t apply (e.g. enrich is skipped on the base tier). Only a failed fail-hard stage fails the whole job.
  • Job status: queued, running, succeeded, failed.
  • On a failed job, error is {stage, message} where stage is one of the stage names above; the message text is human-facing and not contractual (don’t parse it).

Lean recall / list rows (new in 0.2.4)

Recall and the capture list can return a flat, token-lean row for LLM agents via ?view=lean (the full shape stays the default). A lean row has these fields: id, url, source, title, author, recorded_at, vault_path, description, excerpt, excerpt_from, payload_chars. A lean recall hit adds score (cosine similarity, −1.0 to 1.0). excerpt is the head of the capture’s primary text, capped at 500 characters with a single appended only when it was truncated; excerpt_from names which field it came from; payload_chars is the size of the full drill-down body, so an agent can budget before fetching GET /api/v1/captures/{id}.

POST /api/v1/captures/{id}/relink (new in 0.2.4)

Re-points a capture’s index row at its vault note after you’ve renamed or moved the file (this is what khiipd validate --fix --apply calls). It never creates or moves files — only the index changes. Responses: 200 with the capture (re-pointed, or a no-op if the row was already correct); 404 if the capture id is unknown; 409 if it can’t be re-linked — the detail says why (no note with that id exists, more than one note carries that id, or the id-carrying note’s frontmatter no longer matches the shape Khiip writes).

Updating, in one place

  • Base: uv tool upgrade khiip (or pipx upgrade khiip / pip install -U khiip), then khiipd validate to sanity-check the vault ↔ index.
  • Khiip Plus: download the newer khiip_ee-<version>-py3-none-any.whl from the link in your latest key email and reinstall it into the same environment as the base — see Activate Khiip Plus → Updating Plus.
  • Obsidian plugin: BRAT updates it when a new release is tagged; for a manual install, re-download main.js / manifest.json / styles.css from the latest release — see the Obsidian plugin page.