Skip to content

v0.6.8

Latest

Choose a tag to compare

@ehsanul ehsanul released this 02 Jan 11:09
· 391 commits to main since this release
b865f18

User-facing enhancements:

  • Support auto-approval of shell commands.
    • A base permission list defaults to allowing common commands that are helpful to allow, such as go test etc, but these can be overridden. Note that this supports extracting inner commands as well for common patterns such as xargs etc, or with complicated shell invocations consisting of many individual commands, eg go build && go test ./... | grep whatever" would extract "go build", "go test ./..." and "grep whatever" as commands that must all be auto-approved. To configure your own auto-approve patterns, see command_permissions` in the README.md
  • Introduced agent_config, which supports setting auto_iterations, i.e. how long to allow LLMs to iterate before waiting for a human in the loop to guide further progress. Newer models are able to iterate for much longer before going off the rails. See agent_config in README.md for how to configure this.
  • When reviewing a git diff to merge, you can now see just the changes since your last review rejection.
  • Git diffs now include a convenient button to open individual files (even in a git worktree) within your IDE. VS Code and IntelliJ are supported.
  • Support side.yml or side.yaml file for repo configuration (toml/json are also supported, but yaml is the new default). Local config (~/.config/sidekick/config.yml) may also be any of the three formats.
  • Small updates to requirements and plans are much faster and cheaper now, due to incremental updating
  • The TUI is slightly more polished in terms of UX, and able to take some user inputs. However, the TUI is still considered experimental, with some types of actions not at all supported (eg reviewing/approving diffs)
  • It's no longer required to have a side.toml file in your project root, nor to have test commands configured in order to run Sidekick in a repo. This simplifies usage of Sidekick for new projects, though our main target is still large, established codebases. We still strongly advise adding tests when you have them!
  • Streaming LLM responses are markdown-rendered now in the web UI as they stream in, rather than only when they finish

Bug fixes and other:

  • Edits now happen immediately, before tool calls. This helps with newer models that are more proactive about testing their changes independently
  • Switch from npm to bun
  • The side init subcommand is more flexible, allowing selection of desired LLM configuration. Note that detection of a local config file (~/.config/sidekick/config.yml) with LLM config means skipping this step during init.
  • Improve LLM cache hit rates by dropping old messages less frequently and better logic around setting Anthropic's cache-control headers on the input content blocks
  • Ensure our continuous compaction doesn't drop in-progress edit feedback
  • Reduce/eliminate errors when editing markdown with embedded code blocks
  • Fix inability to pause or perform user-controlled retries during LLM calls via forced-tool-call paths
  • Migrate all tests from redis to sqlite, other than the redis tests of course
  • Tests now run on linux! Sidekick did already work on linux, but it wasn't friendly to linux-based development. Note that this was only tested via lima, but we did manage to use sidekick to essentially one-shot the test fixes through that setup.
  • Improve CLI flag descriptions
  • Fix error failing to commit before merging when there is nothing new to commit
  • Fixes tracking input/output tokens and cache read/write tokens as well. We don't yet expose these in the UI.
  • Alpha version of some basic OTEL support, intended to investigate source of some uncommon slowdowns, but will be useful more generally as it's padded out
  • Improve speed of running sidekick's own tests with better parallelization
  • Bug caused by token size underestimation when embedding large amount of code (git diffs when addressing code review feedback)
  • Bug: pausing right in-between preparing initial code context and coding etc would result in omitted instructions
  • Bug: edit blocks from newer were getting rejected because they used context from commands rather than the usual read file / search / get symbol definition tools, which tracked metadata for context, unlike generic shell commands. This is now avoided with a fallback path, while retaining the original logic to support targeted edits to code that is non-visibly duplicated within a file.
  • Remove the need for persistent streams for nats jetstream implementation of srv.Streamer, meaning less storage use and no chance of hitting the storage limits - we'll just drop old messages from the ephemeral stream in that case
  • Performance improvements: data on long-running flows, like the subflows, are fetched in batch instead of relying on streamed change events