dither index update
Re-scan the library and refresh the qmd index.
dither index updateRe-scans every collection (every top-level subdirectory of the configured library) and refreshes the qmd search index at <config-dir>/qmd-index.sqlite. The config dir is $DITHER_DIR, else $XDG_CONFIG_HOME/dither, else ~/.dither. Run this whenever you've edited markdown by hand, dropped in files from elsewhere, or want to make sure the index is current.
You don't need to call it after dither plugin run — the runner refreshes the index automatically when a plugin promotes new entries (scoped to the touched collections).
Refuses with the standard pre-init error until dither init has run.
Arguments and flags
None. The command takes no positional arguments and no flags.
Output
index updated: <N> collection(s), <N> indexed, <N> updatedcollection(s)— number of top-level subdirectories under the library.indexed— entries seen and committed to the index.updated— entries whose content changed since the last pass.
When the library has no subdirectories, the command prints all zeros and exits successfully.
If the daemon is running, it's notified afterwards so an embedding pass follows:
daemon (pid 4821) notified — embed pass will follow.If the daemon is already indexing, the command doesn't wait — it queues a catch-up reindex and exits with status 1:
⚠ qmd is busy: indexing (started 12s ago).
watch with `dither status`. needs-reindex queued for catch-up.Example
$ dither index update
index updated: 3 collection(s), 142 indexed, 7 updateddither index cancel
The sibling subcommand cancels the running qmd job. Embedding stops at the next iteration boundary; indexing and model downloads can't be interrupted mid-call and run to completion.
$ dither index cancel
✓ cancelled embedWith nothing running it prints nothing to cancel — no qmd job running. and exits successfully.
See also: CLI overview, dither search, dither status.