lmcp (1.1.1-1) bookworm trixie; urgency=medium

  * Bug fix: omit empty inputSchema.properties at tool registration.
    The json.lua empty-table-as-array gotcha (same one that bit
    `ping` in v1.0.0-rc1) was re-surfacing on tool inputSchemas
    declared with `properties = {}` — spec-strict MCP clients (Zod)
    rejected the tools/list with "expected: record, received: array".
    lmcp:tool() now normalises empty properties tables by dropping
    the key entirely (JSON Schema permits omitting `properties` on
    `type:object`, meaning "any object — no constraints").
    Discovered live on a hertz-tools deployment where two custom
    no-arg tools (lxc_list, network_status) tripped the Zod check
    and caused Claude Code to mark the entire MCP endpoint as
    disconnected.

 -- Markus Fritsche <mfritsche@reauktion.de>  Mon, 18 May 2026 00:55:00 +0000

lmcp (1.1.0-1) bookworm trixie; urgency=medium

  * Concurrent handler dispatch (closes #20): tool handlers run in
    cooperative coroutines. server.lua:run()'s sleep_ms yields to
    the event loop instead of blocking. Slow shell commands no
    longer serialise other requests — fast ping during a slow
    `sleep N` returns in ~10ms (was ~N seconds).
  * Progress + cancellation notifications (closes #11): tool
    handler ctx gains progress(p, total?, message?) and cancelled().
    Client→server notifications/cancelled flips a flag the running
    handler sees within ~420ms (poll interval capped when ctx
    present). Cancelled requests get a JSON-RPC -32800 error
    response (spec wording is "SHOULD NOT respond" but the practical
    UX wins; see upstream issue for the FD-inheritance trade-off).
  * Windows MSI build sync (closes #18): windows/sync.sh script
    refreshes windows/pkg/{lmcp,server,json}.lua from root before
    WiX is invoked. Closes the drift trap that left the MSI ~6
    months behind master in April 2026.
  * Zero handler source-code changes; all existing tools (shell,
    fetch, web_search, hub remote_*) benefit from concurrency and
    auto-cancellation transparently via the run() helper.

 -- Markus Fritsche <mfritsche@reauktion.de>  Sun, 17 May 2026 19:45:00 +0000

lmcp (1.0.0~rc1-1) bookworm trixie; urgency=medium

  * Full MCP 2025-06-18 surface (release candidate). Closes 14
    upstream issues. New primitives: Resources, Prompts, Completion,
    Logging, Sampling, Roots, fetch, web_search. Protocol: cursor
    pagination, structuredContent, _meta passthrough, tool annotations
    (readOnlyHint/destructiveHint/idempotentHint/openWorldHint).
    Transports: stdio (LMCP_TRANSPORT=stdio) for Claude Desktop / IDE
    clients; full Streamable HTTP rewrite with select()-based event
    loop, sessions (Mcp-Session-Id), persistent SSE, server-initiated
    requests, heartbeat, DELETE.
  * json.lua: UTF-16 surrogate-pair combination + json.empty_object
    sentinel for spec-correct {} emission (fixes ping's result:[]
    bug).
  * Backwards compatible with all existing sessionless-POST clients.

 -- Markus Fritsche <mfritsche@reauktion.de>  Sun, 17 May 2026 17:25:00 +0000

lmcp (0.5.4-1) bookworm trixie; urgency=medium

  * Ship examples/lmcp.service systemd unit template alongside the
    existing lmcp-hub.service. Copy-and-edit starting point for
    per-host lmcp instances — no more hand-writing the unit on each
    new Arch or Debian host.

 -- Markus Fritsche <mfritsche@reauktion.de>  Tue, 21 Apr 2026 16:55:00 +0000

lmcp (0.5.3-1) bookworm trixie; urgency=medium

  * hub.lua: hard wall-clock cap on ssh fallback via `timeout` —
    prevents event-loop wedges on half-dead sshd (auth stall, remote
    bash-s hang). Configurable via LMCP_HUB_SSH_HARD_TIMEOUT.
  * hub.lua: parallel lmcp probes for remote_list_hosts. Wall clock
    for a 12-backend fleet with 8 offline hosts drops from ~28 s
    (sequential ssh timeouts) to ~3 s.
  * hub.lua: probe is lmcp-only, not ssh. Actual remote_* calls still
    fall through to ssh fallback when lmcp is down.
  * hub.lua: sticky DOWN cache with exponential backoff (60 → 120 →
    240 → 480 → 900 s). UP hosts still 30 s TTL.
  * hub.lua: per-request stderr logging (tool/host/via/elapsed) for
    future RCA.

 -- Markus Fritsche <mfritsche@reauktion.de>  Tue, 21 Apr 2026 14:10:00 +0000

lmcp (0.5.2-1) bookworm trixie; urgency=medium

  * server.lua: new shell_bg tool launches detached commands via
    setsid + nohup + stdio-redirect. Returns PID + log path
    immediately. Linux-only for MVP.
  * hub.lua: new remote_shell_bg forwards to backend shell_bg.

 -- Markus Fritsche <mfritsche@reauktion.de>  Mon, 20 Apr 2026 09:34:48 +0000

lmcp (0.5.1-1) bookworm trixie; urgency=medium

  * server.lua: search_files uses "find -L" so macOS BSD find
    follows a symlink passed as the starting path (e.g. Homebrew's
    /usr/local/share/lua -> Cellar/…). Previously returned empty.

 -- Markus Fritsche <mfritsche@reauktion.de>  Sun, 19 Apr 2026 12:48:27 +0000

lmcp (0.5.0-1) bookworm trixie; urgency=medium

  * Add hub — fleet-wide MCP broker (hub.lua). Proxies remote_* tools
    to every backend in a registry with SSH fallback for hosts whose
    lmcp is temporarily unreachable. See
    /usr/share/doc/lmcp/examples/lmcp-hub.service and
    hub-backends.conf.example for deployment.

 -- Markus Fritsche <mfritsche@reauktion.de>  Sun, 19 Apr 2026 12:30:03 +0000

lmcp (0.4.1-1) bookworm trixie; urgency=medium

  * Add LMCP_TOKEN environment-variable fallback for Bearer auth, so
    launchd / systemd drop-ins can drop the token in the service env
    without a conf file.
  * Ship scripts/lmcp-install-macos.sh for Homebrew-based macOS installs
    (mints token, writes LaunchAgent, smoke-tests).

 -- Markus Fritsche <mfritsche@reauktion.de>  Sat, 18 Apr 2026 10:46:56 +0000

lmcp (0.4.0-1) bookworm trixie; urgency=medium

  * Add edit_file tool (Claude Code Edit semantics: literal match,
    fails on multiple matches unless replace_all=true).

 -- Markus Fritsche <mfritsche@reauktion.de>  Fri, 17 Apr 2026 15:48:26 +0000
lmcp (0.3.0-1) bookworm trixie; urgency=medium

  * Initial release packaged for marfrit overlay repo.

 -- Markus Fritsche <mfritsche@reauktion.de>  Tue, 14 Apr 2026 22:00:00 +0200