Repository navigation
Releases: lichdotdev/lich-plugin
Release list
v0.20.7
Fixed
- Claude Code hooks run when the plugin's path has a space in it. On macOS
lich keeps the plugin under~/Library/Application Support, and the
unquoted${CLAUDE_PLUGIN_ROOT}split there, so every hook failed to start
and the card got no state, title or touched files. The Claude Code
registration quotes the path now, as the Codex one already did, and so does
the<lich-plugin>placeholder in the Crush block (#90).
v0.20.6
Changed
- The plugin lives at
lichdotdev/lich-plugin, and lich atlichdotdev/lich.
The Codex manifest'shomepageandrepository, the install commands in the
README and the contract links in the docs and the mods name the new
repositories. GitHub redirects the old paths, so an existing install keeps
working.
v0.20.5
Added
- The agent-facing mod text also comes in Japanese, Korean and Russian.
LICH_PROMPT_LANGvaluesja,koandruselect the new catalogs in
hooks/prompt-text.js, translated from the English source; literals such as
[lich]and tool and command names stay as they are.
Fixed
- An omp session that resumes another conversation tells lich which. A
/resumeinside omp left lich holding the conversation the card opened
with, so a restart resumed the old one and lich could not warn when the
conversation was already open in another card. The switch is now reported
as it happens.
v0.20.4
Fixed
- A finished Claude Code session no longer goes back to busy on its own. A
subagent's tool calls fired the session's own tool hooks, so a background
agent, or the prompt suggestion Claude Code works out after each turn, put the
card back on a spinner naming a tool nobody ran, until the next prompt. The
card now reports only the session's own tool calls.
v0.20.3
Added
- The theme skill writes a theme's
syntaxandpair. It ports a palette's
code colors into the optionalsyntaxsection, which colors the code in
lich native's review, diff and file views, and pairs the light and dark
variants of a palette so the native window follows the desktop between them.
validate.mjschecks both the way lich does: an unknown highlighting tag or
modifier, a style with no color and no font style, a theme that is its own
pair, or a pair of its own scheme.
v0.20.2
Fixed
- A Claude Code card no longer shows its session running after it compacts
while idle. Claude Code 2.1.300 compacts an idle conversation before its
prompt cache expires, and reports it as an automatic compaction, the kind
that runs inside a turn. The compacting mod closed it withbusy, and the
card sat on the spinner until the next prompt. It now closes with the turn's
own state:busywhile a turn is open,donewhen none is.
v0.20.1
Fixed
- A subagent card opens only once Claude Code allowed the Agent call. The
mod answered the call above Claude Code's permission check, so a deny or ask
rule, the permission mode and the user's "no" at the dialog never applied,
and a refused call could still open a lich session that ran the task. It now
passes the call on to that check and opens the worker atagent.spawn,
which only an allowed call reaches (#74).
v0.20.0
Added
-
The agent-facing mod text also comes in Simplified Chinese and Spanish.
LICH_PROMPT_LANGvalueszh-CNandesselect the new catalogs in
hooks/prompt-text.js, translated from the English source; literals such as
[lich]and tool and command names stay as they are. -
The text the mods add for the agent follows lich's prompt language. The
side-question preamble, the subagent card notes and denies, the edit guard's
note and the self-command notes now come in English or Brazilian Portuguese,
chosen byLICH_PROMPT_LANG, which lich exports into every session; an
empty or unknown value is English.[lich], tool and command names and
status values stay literal, andSuccessfully stopped taskkeeps Claude
Code's own wording. The texts live inhooks/prompt-text.js. -
A lich subagent worker whose turn ends blank now says so. A final turn
whose message is blank, with nothing left running in the background, posts
unanswered: "blank"to/mod/answer, so the caller hears the errand ended
instead of waiting on it. The plugin reports blank turns only: Claude Code
ends a refused turn and one an API error ended throughStopFailure, with
noStopand nobackground_tasks, so the mod cannot tell they left nothing
running and does not report them. Needs a lich that acceptsunanswered. -
Every state report names the conversation it comes from, in
provider_session_id, so lich can drop one from an agent CLI the session
runs as a tool (claude -p,cursor-agent -p), which inherits the session's
LICH_*variables and used to report as the card. The scripts, opencode, omp
and the compacting mod all send it; one the harness did not hand over is left
out.report-state.shnow reads stdin for every state, with a one-second
bound so a pipe nobody writes to cannot hold the turn.
v0.19.2
Fixed
- A session asked to run /compact on itself through
control_sessionnow
does. Asked "run /compact", models mostly reached for lich's
control_session, which refuses a session's own, and either gave up or asked
another session to run it on them. The self-command mod now takes that
refusal for actioncommandand queues the built-in the way it does for the
Skill tool,/modeland/effortrefused alike. The tool's description says
so and names the session by itsLICH_SESSION_ID. A session named by its
label is told apart bylich whoami --json(lich 0.64), not by the words of
lich's refusal.
v0.19.1
Added
- A Claude Code session runs a built-in slash command when asked to. Told
"run /compact", the model used to answer that it could not. A new mod,
hooks/self-command.js, takes the Skill tool's refusal of a built-in command
and queues the command with$.command.run, so it runs on the session itself
once the turn that asked ends; the Skill tool's description says so. Nothing
goes through lich, whosecontrolrefuses a session's own./modeland
/effortare refused, since run this way Claude Code saves them as the
default for every new session.