Skip to content

Releases: jaemk/mind

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 02 Jul 14:12

Added

  • A repo can be both a Claude plugin marketplace and a mind curator. A bare
    [discover].sources list in a co-present mind.toml composes with a
    .claude-plugin/marketplace.json (or plugin.json) instead of suppressing it:
    the manifest defines the repo's own items and the curated chain layers on top
    (MKT-16). New marketplace-curator example.

Changed

  • An own-item source-discovery directive now suppresses only a co-present
    .claude-plugin/ manifest's own-item layer, and the set of such directives is
    broadened. A mind.toml [source].roots/flat-skills, or a consumer meld --root/--flat-skills flag, suppresses the manifest and runs convention
    discovery instead (with a note), so --root is no longer a silent no-op on a
    manifest source (MKT-15).

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 02 Jul 03:02

Added

  • Global --verbose (-v) flag, accepted before or after the verb like
    --json/--yes/--ascii. It enables extra advisory output and does not
    affect the color/Unicode capability gate (CLI-162).

Changed

  • The unguarded-reference warning emitted during meld (when a prefix is in
    effect) is now shown only under --verbose; the default meld is silent
    (CLI-14, NS-20, NS-22).

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 02 Jul 00:28

Added

  • init-source --marketplace scaffolds a .claude-plugin/marketplace.json
    (via a new scaffold module); --flat-skills sets flat-skills = true in
    mind.toml and, combined with --marketplace, populates the plugin skills
    array from flat-skill discovery. Plugin-name precedence is --namespace >
    [source].prefix > directory name (INIT-10, INIT-11, INIT-12).
  • Cross-source collision detection at meld for skills, rules, and tools: when
    a melded source would install an item that collides with an existing one, the
    non-interactive path errors with SkillCollision and suggests --namespace <repo-name>, and an interactive TTY prompts for a prefix (NS-43, NS-44,
    NS-45).
  • config lobes add/detect backfills already-installed items into a
    newly-added lobe: --yes backfills automatically, an interactive TTY prompts,
    and a non-interactive run prints a note pointing at introspect --fix
    (HARN-7).
  • introspect --fix repairs missing lobe coverage, creating links for items not
    yet linked into a configured lobe and updating the manifest (HARN-8).

Changed

  • The gemini and antigravity harness lobes are unified to ~/.gemini/config,
    the skill directory both Gemini CLI and Antigravity read. The gemini preset
    now targets .gemini/config with kinds = [skill] (was .gemini with
    [skill, agent]); the redundant antigravity and antigravity-cli presets
    are removed (HARN-4, HARN-5).
  • The [discover].sources entry key as is renamed namespace (as remains a
    backwards-compatible parse alias). dump emits namespace, review advises
    migrating, and recall --sources displays namespace:<prefix> instead of
    as:<prefix> (DSC-78).
  • A [discover].sources entry whose clone fails for a non-auth reason (network
    error, not-found) now warns and skips rather than failing the whole meld; the
    primary source and successfully-cloned nested sources stay registered, and the
    skipped entry is recorded with reason="clone_failure". The same skip applies
    during sync re-walk. The one hard-fail case is a pure curator (no items of
    its own) whose nested sources all fail, which errors with
    CuratorAllNestedFailed (DSC-79, DSC-80).

Fixed

  • Adding the first explicit lobe to an empty lobes config via config lobes add/detect now prepends claude_home to the saved list. Previously the
    implicit ~/.claude default was silently dropped from agent_homes(), so new
    installs stopped reaching Claude and introspect --fix could not see the
    Claude home as a coverage target (HARN-9).
  • In-repo marketplace entries with source: "./" no longer drop all but the
    first plugin; each plugin is scanned as its own catalog root. Plugin repos
    used as nested [discover].sources entries inherit the plugin name as their
    default namespace, and marketplace-as-nested-source preserves per-plugin
    namespacing (MKT-12, MKT-13, MKT-14).

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 01 Jul 10:35

Added

  • Consume Claude Code plugin manifests as a discovery source. A melded repo with
    a .claude-plugin/plugin.json (a single plugin) or .claude-plugin/marketplace.json
    (a catalog) has its skills and agents mapped to mind items and installed
    through the usual store-and-symlink path; mind never writes Claude's plugin
    cache or settings.json. The plugin name is the default namespace prefix
    (agents stay bare per NS-40); unsupported components (commands, hooks,
    .mcp.json, ...) report a skipped count on meld. A marketplace is consumed as a
    curated super-source, one sub-source per listed plugin, in-repo or external.
    Manifests are held to the same path-safety and strict-parse guards as
    mind.toml, and recall --sources labels a source's manifest origin
    (claude-plugin / claude-marketplace) (MKT-1..11).
  • upgrade accepts a glob in place of an exact item ref, mirroring forget; the
    kind prefix and source qualifier compose (upgrade 'jk:*', upgrade 'skill:*', upgrade 'owner/repo#*'). A glob (or exact ref) that matches no
    installed item reports up-to-date rather than erroring (CLI-65).

Changed

  • The namespace separator is : instead of -: a prefixed item installs as
    <prefix>:<name>. upgrade migrates already-installed items from the old
    <prefix>-<name> form in place, without a namespace change.
  • meld --as is renamed --namespace (short -n); --as stays as a deprecated
    alias. A source's namespace is locked once any of its items are installed:
    changing it requires forgetting those items first, rather than an in-place
    rename of installed items (NS-30, CLI-161).
  • Agents are no longer namespaced by a source prefix. An agent links into each
    lobe under its bare frontmatter name (the harness keys agents by that name,
    not the filename), so a prefix reaches only its store path and manifest key.
    Two sources shipping a same-named agent now collide: learn refuses with an
    AgentCollision error and meld emits an advisory warning (NS-40, NS-41,
    NS-42).

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 28 Jun 18:15

Added

  • A [discover].sources entry may carry on-auth-failure, an inline table with
    a required action ("error" or "skip") and an optional message, to
    declare how a nested source's clone failure is handled when it is caused by an
    authentication failure. "skip" warns and continues, leaving the source
    unregistered; "error" exits non-zero with the standardized message. Auth
    failure is detected from git stderr credential-denial patterns; the same
    handling applies during sync, which re-walks [discover].sources. Without
    the directive an auth failure stays a generic git error. The policy governs
    only the entry's own clone; auth failures from transitive descendants
    propagate as hard errors (DSC-68, DSC-69, DSC-70).

Changed

  • When forgetting a single installed item that other installed items depend on,
    the TUI surfaces the dependent keys in the confirmation description before the
    user confirms, mirroring the CLI's DEP-60 warning (TUI-52).
  • strip_ansi now uses the strip-ansi-escapes crate instead of a hand-rolled
    parser, and additionally drops bidi-override and separator control characters,
    hardening display of curator-controlled content against terminal injection.

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 27 Jun 10:46

Added

  • absorb <ref> claims an unmanaged lobe item (a hand-written skill/agent/rule)
    into a version-controlled source: it moves the item out of the lobe, commits
    it, melds the source if needed, and learns it as a managed item. The
    destination resolves from --to, then MIND_ABSORB_TO, then the absorb_to
    config key, and falls back to a built-in ~/.mind/personal (git-init on
    demand). The inverse of forget --unmanaged.
  • dump writes a super-source mind.toml reproducing the current melded and
    installed state: each source is referenced by spec, pinned to its recorded
    commit, and stamped with an install directive (install = true/false or
    install_items = [...] for a subset). --whole-sources emits every source as
    install = true.
  • forget --unmanaged scopes forget to unmanaged lobe items: a glob removes
    every match, an exact kind:name removes one, and no ref removes all
    unmanaged across lobes. Managed items are never matched.
  • requires: frontmatter key declares explicit intra-source dependencies
    (whitespace-separated kind:name/bare names), unioned with the {{ns:}}
    derived edges. Unlike a token, it is metadata and is not rewritten into the
    item body.
  • A dependency graph over installed items, surfaced across the verbs: forget
    warns when removal breaks a dependent's reference (no cascade); recall --tree
    renders the installed items as a dependency forest and recall <item> --tree
    scopes to one subtree; the non-interactive probe listing nests each item's
    transitive dependencies, with probe --json adding a flat dependencies
    adjacency field; the TUI expands an item to its dependency subtree and jumps to
    a dependency's canonical line on Enter.
  • recall --tree --json emits the installed dependency forest as nested JSON
    ({"key": ..., "dependencies": [...]}, cycle back-edges as {"key": ..., "cycle": true}).
  • A [discover].sources entry may set install_items = ["kind:name", ...] to
    install only a named subset of a nested source's items.
  • A [discover].sources entry may carry follow-branch, roots, and
    [[discover.sources.hooks]] to support an un-onboarded nested source without
    forking it. The curator-supplied values apply only when the nested source
    ships no mind.toml of its own.
  • Documentation pages for the interactive TUI, managed policy, tooling (the
    tool kind and path tokens), namespacing, dependencies, unmanaged items, and
    init-source, plus the global flags, the color/Unicode gate, exit-status
    semantics, the on-disk layout, and troubleshooting.

Changed

  • recall marks an installed-but-out-of-date item with a distinct left-edge
    marker ( in yellow, ASCII ^) instead of the installed /+, so the
    stale state is visible from the marker alone.
  • A nested [discover].sources pin directive (follow-branch, pin-tag, or
    pin-ref) is authoritative: it overrides the nested source's own [source]
    pin, ranking just below a consumer meld flag.
  • absorb is transactional: a commit, meld, or learn failure restores the
    original lobe entry and leaves the manifest unchanged. absorb and forget
    refuse a destructive confirmation in --json mode without --yes rather than
    proceeding silently.

Security

  • Pin and ref values are validated at parse time: a value beginning with - (or
    containing whitespace, .., or control characters) is rejected, and git fetch invocations use a -- terminator. This prevents an untrusted cloned
    mind.toml pin or a --follow-branch/--pin-tag/--pin-ref flag from
    injecting git options.

v0.6.2

Choose a tag to compare

@github-actions github-actions released this 26 Jun 11:42

Added

  • A published documentation site at https://jaemk.github.io/mind/, with a guide
    (install, quickstart, commands, configuration, install hooks, troubleshooting),
    authoring docs, and an examples page mapping each consumer and maintainer use
    case to a runnable example.
  • Example sources for the tool kind and path tokens, source lifecycle hooks,
    [source].roots subtree discovery, an authoritative [[items]] inventory, and
    a [discover].sources super-source, each verified by a test.
  • The crate publishes to crates.io on release (cargo install mind-cli installs
    the mind binary), and carries repository, homepage, and documentation
    metadata.

Changed

  • The README is a concise landing page; the documentation site is the primary
    reference.

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 26 Jun 01:51

Changed

  • Release tooling only: the GitHub release is created with the GitHub CLI and its
    notes are taken from this changelog. No change to the mind binary.

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 26 Jun 01:39

Added

  • Item-level lifecycle hooks: an item may declare [[items.hooks]] (with run,
    name, optional, and event = install/uninstall), the same shape as a
    source's [[hooks]]. The scalar install/uninstall fields remain as
    shorthand. Item install hooks run after the source install hook and item
    uninstall hooks run before the source uninstall hook, so teardown is the
    reverse of install.
  • unmeld accepts a glob or partial source name and removes every matching
    source, mirroring the glob selection in learn/forget (e.g.
    unmeld '*agents').
  • probe and recall accept a glob for --source.
  • -n as a short form of probe --no-tui.

Changed

  • recall and the probe listing mark an installed item out of date exactly
    when mind upgrade would act on it: its source content changed, or its
    effective (namespaced) name changed. A source commit that advances without
    changing an item's content or name no longer marks it, and a hash failure now
    flags the item rather than reporting it up to date. The recall status view
    shows a renamed item as out of date instead of as removed upstream.
  • [source].install is deprecated in favor of [[hooks]]. mind review
    reports the deprecated field and init-source scaffolds only [[hooks]].
  • init-source flags a bare sibling reference only when an effective prefix is
    in force; review's hardcoded-path and bare-tool advisories note that a
    location populated by an install hook is safe.
  • A malformed glob selector reports an invalid-pattern error instead of a
    no-source-found error.
  • Renamed the crate package to mind-cli; the installed binary stays mind.
    Updated dependencies (toml 1, ratatui 0.30, crossterm 0.29, dirs 6,
    clap_mangen 0.3).

v0.5.2

Choose a tag to compare

@github-actions github-actions released this 25 Jun 15:18
v0.5.2