Skip to content

Releases: dennis2lee/localcode

v0.161.0

Choose a tag to compare

@dennis2lee dennis2lee released this 15 Oct 05:30

Skills and commands in opencode's own global directory, ~/.config/opencode, are read.

Added

  • ~/.config/opencode/skills and ~/.config/opencode/commands (or command/) as the seventh and lowest skills and commands directories, after ~/.opencode; $XDG_CONFIG_HOME/opencode when that variable is an absolute path, as opencode resolves it
  • Global rules still come from the first of ~/.claude, ~/.opencode, ~/.localcode; ~/.config/opencode/AGENTS.md is not read

v0.160.0

Choose a tag to compare

@dennis2lee dennis2lee released this 15 Oct 01:51

Custom commands are read from every root, in the order skills are, rather than from the first root that exists.

Changed

  • Commands read from six directories, highest first: the project's .localcode, .claude and .opencode, then the home's; a name in a higher one wins. They used to come from the first of .claude, .opencode, .localcode that existed, so an empty .claude hid every other root's commands, and a .localcode command lost to a .claude one of the same name
  • A commands directory that cannot be read skipped with a log line rather than stopping startup, and a command file that does not parse named in the log rather than skipped silently
  • Startup logs the commands directories it reads whenever one is outside .localcode, as it does skills; /reset-skills names all six
  • On Windows, a file where a skills or commands directory should be is named in the log, as elsewhere, rather than skipped without a word
  • Global rules (AGENTS.md, CLAUDE.md in the home roots) still come from the first root that exists

v0.159.0

Choose a tag to compare

@dennis2lee dennis2lee released this 15 Oct 01:07

A tool call whose arguments are not valid JSON no longer stops the conversation.

Fixed

  • A tool call with arguments that are not a JSON object refused by the endpoint on every later request (LiteLLM's "Failed to parse tool call arguments"); it now goes back as {}, through the Anthropic API, Bedrock and OpenAI-compatible endpoints alike, and conversations already stuck this way continue
  • Such a call answered without calling the tool, with a result that tells the model what was wrong and how the arguments ended
  • An endpoint's error reply printed whole into the transcript, including the conversation LiteLLM echoes back after the cause; the echo is now left out and a reply is kept to 16 KB

v0.158.0

Choose a tag to compare

@dennis2lee dennis2lee released this 14 Oct 04:50

A skill in .localcode now wins over a same-named one in .claude or .opencode.

Changed

  • Skill priority inside the project and inside the home directory: .localcode, then .claude, then .opencode (was .claude, .opencode, .localcode). The project still comes before the home directory, and commands and global rules keep their order
  • Skill names that differ only in case treated as one name, so /name and the model's Skill tool reach the same skill
  • USAGE.md lists the six skills directories in priority order

v0.157.0

Choose a tag to compare

@dennis2lee dennis2lee released this 14 Oct 03:15

A first install reaches a first answer, the documentation matches the code again, and the bugs the audit found are fixed.

Fixed

  • A config naming an anthropic provider with no key no longer stops startup; the first request through it says how to add one, and a key saved or changed later is used without a restart
  • localcode login anthropic prints a whole starter config, and saves the key atomically; the no-config error names the next step
  • localcode run on a config with no agents answers as the default agent
  • Pasted images over about 768 KB refused as "request body too large"; the 10 MB limit is reachable
  • An upload over 32 MB truncated and accepted; now refused with 413, and an earlier file of the same name kept
  • Built-in specialists marked as able to view images
  • The Orchestrate tool description claiming every ceiling is checked before the run
  • settings.changed missing model_invocable
  • The auto-delegate panel offering built-in specialists the daemon refuses
  • The TUI's /model default sent as a profile name

Changed

  • README First run section with a minimal config for the Anthropic API, Bedrock and a local server
  • INSTALL.md reordered for a first install: release first, each platform's first run, credentials, updating and uninstalling
  • Every live Markdown document checked against the code and corrected; MODELS.md gains an Ollama section
  • install.sh names ~/.zshrc for zsh
  • Tests for the lines changed since v0.153.0 that no test reached, each shown to fail when its line's comparison or condition is flipped

v0.156.0

Choose a tag to compare

@dennis2lee dennis2lee released this 13 Oct 08:53

Background tasks can be deleted from the Web UI's task panel, one row at a time or all at once.

Added

  • A delete button on each background task row; a running task asks first and is stopped
  • "delete all tasks" under the rows, which asks and says how many are still running
  • DELETE /api/sessions/{id}/tasks/{taskId} and DELETE /api/sessions/{id}/tasks

Fixed

  • A row whose task session was already gone could not be removed
  • A deleted task listed in the TUI's /tasks with status "deleted"
  • A detached sub-agent not counted as running in either client
  • A turn collecting a deleted task told that its own conversation was deleted
  • A write to a path with a .. segment redirected to the route above it (DELETE /api/sessions/{id}/tasks/.. deleted the conversation); now 400
  • Web UI requests whose path a browser would rewrite before sending, now refused

v0.155.1

Choose a tag to compare

@dennis2lee dennis2lee released this 10 Oct 22:22

A conversation moved to a model that cannot see goes on.

Fixed

  • Every request refused after a conversation with images moved to a model that cannot see, by /model or by fallback

Changed

  • Images sent only to a model with vision on (the default for Claude); any other model gets a note in place of each image, and the transcript a notice
    • For a non-Claude model that can see, set "vision": true on its profile.

v0.155.0

Choose a tag to compare

@dennis2lee dennis2lee released this 10 Oct 02:01

Delegation belongs to orchestration, a model that can see opens image files, and a sub-agent no longer hands its task back to itself.

Changed

  • Delegation is orchestration's: the six specialists, Task, TaskBackground, TaskCollect and the delegation prompt come with orchestrate, not smart_agent
    • To keep delegating, set "orchestrate": true. With it off the model delegates to no agent, including agents declared in config.json.
  • Smart Agent gives the model an order of work and delegates nothing

Added

  • view_image tool, offered to models that can see, and the vision profile key (on by default for Claude models)

Fixed

  • A sub-agent handing its task to itself or back up the chain
  • Task dialog showing "cancelling" after the task had ended

v0.154.1

Choose a tag to compare

@dennis2lee dennis2lee released this 09 Oct 22:17

Fixes for a conversation moved to an OpenAI-compatible endpoint, and for a reply cut off in the middle of a tool call.

Fixed

  • LiteLLM proxy no longer refuses a conversation that called tools (AnthropicException - 'content')
  • A reply cut off in the middle of a tool call no longer breaks the session

v0.154.0

Choose a tag to compare

@dennis2lee dennis2lee released this 06 Oct 06:34

localcode reads only its own config files unless a config lists others, and skills are read from every root.

Changed

  • Config files written for opencode or Claude Code read only when listed under the new include key
    • To keep the old behaviour, add "include": ["~/.config/opencode/opencode.jsonc"] to ~/.localcode/config.json.
  • Claude Code's mcpServers spelling accepted, so .mcp.json and ~/.claude.json can be listed
  • Skills from .claude, .opencode and .localcode merged; commands and global rules still come from the first root
  • An unreadable skills directory skipped with a warning instead of stopping startup

Fixed

  • An empty model_commands list now overrides one from a lower config
  • localcode mcp add and mcp remove see servers written under mcp