# Changelog

All notable changes to Klaw will be documented in this file.

Docs: <https://klaw.kodelyth.com>

The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project uses calendar versioning (`YYYY.M.D`).

## 2026.5.29 — 2026-05-27

### Changed

- Memory: switched default embedding model to `gemini-embedding-001` (the
  preview-era `gemini-embedding-exp-03-07` was retired by Google).
- Launcher: removed `OPENCLAW_*` → `KLAW_*` env-var promotion shim. All
  internals read `KLAW_*` directly.
- Cleaned up collapsed duplicate `KLAW_X ?? KLAW_X` env reads across config,
  paths, agent workspace defaults, CLI argv parsing, and managed-root detection.
- Renamed npm package to `@kodelyth/klaw` and migrated all SDK packages
  (`@kodelyth/fs-safe`, `@kodelyth/proxyline`, `@kodelyth/plugin-sdk`).

### Fixed

- Bundled UI: `control-ui-bootstrap` test asserted on a stripped path; restored
  the `__klaw/control-ui-config.json` suffix in test expectations.
- UI `skills.test.ts`: corrected owner-handle assertion to match the rendered
  `By Klaw (@klaw)` string.
- `io.compat`: restored full "reinstall the Gateway service from that same
  Klaw install" hint in newer-config warnings.
- `version.ts` test: made env-var ordering assertions environment-stable so
  they pass when `VERSION` resolves to the default `0.0.0` test value.
- Documentation URLs: pointed all bundled-hook `homepage:` fields and CHANGELOG
  references at `klaw.kodelyth.com`.
- Extension repository URLs: 31 extension `package.json` files now point at
  `github.com/kodelyth/klaw`.

## 2026.5.22

### Added

- **Skill `youtube-watcher`** — fetch and read YouTube transcripts via `yt-dlp`.
  Hardened over the source: YouTube-host URL validation (rejects spoofed hosts
  and non-http schemes), language fallback (`en` → `en-*` → first available),
  and rolling-window dedup for auto-generated captions. Declares the `yt-dlp`
  bin requirement with brew/pip install hints.
- **Skill `multi-search-engine`** — 16-engine web search (9 global + 7 Chinese)
  through `web_fetch` with no API keys, plus WolframAlpha for computation.
  Prefers configured search extensions first; documents rate limiting and
  in-memory-only cookie fallback. Includes `references/engine-reference.md`.
- **Skill `self-improvement`** — structured `.learnings/` logging protocol
  (`LEARNINGS.md` / `ERRORS.md` / `FEATURE_REQUESTS.md`) wired to
  `~/.klaw/workspace/`, documented as the human-readable complement to
  `src/klaw/failure-mining.ts`.

### Fixed

- **Telegram duplicate replies** — DeepSeek (OpenRouter, reasoning) emitted the
  same answer up to 4× with the first copy keeping `**markdown**` and later
  copies plain, so `dedupeRepeatedParagraphs` could not match them. Fixed
  `normalizeForCompare` in `src/klaw/dedupe-repeated-paragraphs.ts` to strip
  inline markdown (`**bold**`, `*italic*`, `` `code` ``) before comparing, and
  normalized reasoning-tag handling in the transcript and UI dedup paths
  (`src/gateway/server-methods/chat.ts`, `ui/src/ui/controllers/chat.ts`,
  `src/auto-reply/reply/agent-runner-payloads.ts`).

## 2026.5.20 — Initial Klaw release

First public release of Klaw on npm as `@kodelyth/klaw`. Highlights:

- **Compound memory stack** — 9-store SQLite architecture covering atomic
  notes, semantic distillation (Nemori), episodic recall, exponentially-faded
  memory (FadeMem), gap-aware fact extraction (ProMem), 7-channel BM25+RRF
  retrieval (SuperLocalMemory), Bayesian skill reliability (MACLA), and a
  personal entity graph.
- **Skill forge** — auto-author `SKILL.md` files from successful multi-step
  workflows; existing skills receive `SKILL.proposed.md` for diff review.
- **User model** — per-user style + task profile persisted to
  `data/user-models/<userId>.json` and rendered into every system prompt.
- **Failure mining + reply reflection** — cluster repeated failures into
  anti-skills; per-turn self-critique feeds the failure log.
- **Heartbeat curator** — idle-time background memory curation.
- **Session bridge** — "where we left off" cross-session digest.
- **Intent router + planner + verifier + scheduler** — brain layer composes
  into the system prompt every turn.
- **Channel coverage** — Discord, Slack, Telegram, WhatsApp, iMessage (via
  BlueBubbles), Matrix, Microsoft Teams, Mattermost, Google Chat, Signal,
  Nextcloud Talk, Twitch, Tlon, Synology Chat, QQbot, Zalo, Nostr, Line,
  Feishu, Voice Call.
- **Provider coverage** — OpenAI, Anthropic, Google, Groq, Mistral, Z.AI,
  OpenRouter, Cerebras, DeepSeek, Together, Ollama, LM Studio, Perplexity,
  Brave, Exa, ByteDance, Alibaba, Amazon Bedrock, Anthropic Vertex, and more.
