Opair change log
0.7.0
New features
Bug fixes
- cmd: reliable detection of git root path
- tools: honour
project-ignorein findInProject - cmd: commit conversation entries in smaller chunks
- cmd: sane newline handling on navigator mode messages
- tools: delete gitAdd, gitCommit, gitReset
Other changes
- docs: mention document role
- docs: philosophy, tools
- docs: tweak example config
- prompts: clearer document prompt
- docs: config
- docs: minor fixes
- docs: commands
- release: linux packages
- docs: remove content links from philosophy doc
- docs: installation
0.6.0
New features
Bug fixes
- cmd: get builds working on linux
- loops: missing wiring for gitShow
- cmd: stop bricking session when context window is exhausted
Refactorings
Other changes
- repo: add .env.auth to .gitignore
- tools: delete findInProjectWithDotfiles
- docs: tweak readme
- ci: lint and run tests
- docs: fix bad link
- ci: use make targets
- ci: add make to shellcheck image
- tests: speculatively fix flaky tests in ci
- tests: speculatively fix flaky test
- tests: speculatively fix flaky test
- tools: better (hopefully) descriptions
- release: add missing configs
0.5.0
New features
Other changes
- docs: add
brew trustto readme - docs: tweak homebrew instructions
- config: enable reasoning in enablers driver and navigator loops
- build: add llamacpp postinstall instructions
- build: mention authentication env vars in postinstall notes
0.4.3
Other changes
0.4.2
Bug fixes
Other changes
0.4.1
Other changes
- prompts: more system guidance
- build: copy example configs in release packages
- build: add post-install instructions for homebrew
0.4.0
Security fixes
New features
- cmd: add cache hit rate to status area
- tools: convert, ffmpeg, ffprobe, identify, magickConvert, svgo
Bug fixes
- loops: give driver mode access to replaceInProject
- providers: hide cache status for enablers provider
- cmd: only reject tool calls once
- cmd: cache status is per session not per message
- cmd: tolerate empty git branch in system prompt
- cmd: reliable git branch in welcome message
- tools: clearer descriptions for the review tools
Other changes
- cmd: delete nonsense cache nudge
- cmd: tweak nudge messages
- build: goreleaser scaffolding
- cmd: undo annoying wordsmithery
- tests: fix flaky filesystem watcher test
- build: source correct secrets in publish script
- docs: clean up some inaccuracies in the readme
- build: force gitlab token
- repo: ignore plans dir
- docs: reclassify old commit in change log
- build: stop building universal binaries
0.3.1
Bug fixes
- tools: sane fix handling for linters/formatters
- tools: fallback to stdout for error output if stderr is empty
- install: correct arg for deepseek install script
Other changes
- prompts: better tool descriptions
- prompts: try to reduce the mansplaining a little bit
- build: add shellcheck target
- providers: use luna for session title in openai setups
0.3.0
New features
Bug fixes
- cmd: separate nested loop messages during streaming
- tools: better summaries
- tools: add missing tools to driver/navigator loops
- cmd: retain completed tool invocations on interruption
- cmd: stop bricking session when context window is exhausted
Refactorings
Other changes
- prompts: tweak the review diff prompt
- prompts: tweak the plan prompt
- scripts: tweak install script output
- config: increase enablers plan/review reasoning effort to "high"
- install: openai installer
- install: anthropic installer
- install: delete blank echo output
- install: deepseek installer
0.2.0
Security fixes
New features
- tools: shellcheck
- tools: chmodProjectFile and chmodProjectDotfile
- loops: ditch the automatic loop
- cmd: welcome message
- cmd: allow j/k as well as up/down when selecting answers
- cmd: nested loop status area
- cmd: watch project in navigator mode
- cmd: /resume
- tools: reviewCommit
- tools: gh
- tools: reviewPR
- providers: anthropic and openai
Bug fixes
- tools: stop exposing non-functional tools to the agent
- cmd: stop inserting spurious blank lines
- cmd: nicer welcome message formatting
- cmd: sane message appending
- cmd: sane message merging
- cmd: dedupe tools in welcome message
- tools: correct gitStatus summary
- cmd: proper keyboard input for the question area
- cmd: stop clipping tall areas
- cmd: failover race condition
Refactorings
- tools: use full answer text in askQuestion
- tools: push more tool declarations into json schema
- llm: extract openai/common protocol
Other changes
- tests: fix env var parsing
- docs: remove blank lines
- docs: tell the agent to stop editing HISTORY.md
- cmd: clear screen at startup
- tests: fix flaky commands test
- cmd: tweak welcome message
- cmd: move the status
- llm: set include_usage:true on all providers
- prompts: tweak the system and plan prompts
- install: target default dirs with algolia installer
- cmd: --version
0.1.0
New features
- tools: elixir tooling
- tools: php tooling
- tools: .NET and Ruby tooling
- tools: python tooling
- tools: clang, cmake, conan
- tools: pnpm
- tools: go fmt, go mod, gofumpt
- tools: rust tooling
- tools: limit and offset params for read tools
- tools: allow pre-approval of remaining project writes
- cmd: slash commands autocomplete
- loops: automatic
- loops: plan
- tools: askQuestion
- cmd: make up/down arrow keys work in input area
- config: reasoning effort config
- tools: yarn
- tools: npm and npx
- tools: mise
- loops: match status to loop activity
- tools: fine-grained read permissions, including dotfiles
- llm: read context length from /v1/models
- cmd: /review-diff
- llm: support algolia enablers provider
- tools: replaceInProject
- tools: fine-grained write permissions and approval
- tools: gitShow
- cmd: token counting
- config: role-based model assignment
- llm: support kimi k3
- cmd: response streaming
- cmd: use Esc to cancel in-flight requests first, clear input second
- cmd: compaction slash command
- tools: golangciLintRun
- tools: make
- tools: goBuild, goTest, goVet
- tools: reviewDiff
- tools: grepProject
- tools: gitGrep
- tools: gitCommit
- tools: gitReset
- tools: gitAdd
- tools: deleteProjectFile
- tools: createProjectFile
- cmd: shift+tab to toggle mode
- tools: editProjectFile
- cmd: nicer output formatting
- cmd: model switching
- cmd: Ctrl+D to quit
- cmd: :q to quit
- cmd: quit commands
- tools: gitLog
- tools: gitDiff
- tools: gitStatus
- tools: listExternalDirectory
- tools: listProjectDirectory
- tools: readExternalFile
- cmd: session log
- cmd: render cursor
- cmd: sidebar
- cmd: status bar
- cmd: wire in readfile tool
- tool: readfile
Bug fixes
- cmd: move errors to conversation area
- cmd: stop stacking mode-switch messages
- cmd: fix wrapping of long lines in question area
- cmd: speculatively fix colliding stream content
- deepseek: map reasoningEffort to thinking
- cmd: block input after approval response
- cmd: wire in approvals to /review-diff slash command
- cmd: propagate compaction errors
- cmd: increase compaction timeout to 5 minutes
- tools: correct summary for git diff --stat
- cmd: wire in slash command streaming
- llm: use none instead of off for enablers effort
- tools: correct summary for git log --oneline
- cmd: sane pasting of multi-line input
- cmd: wrap agent-invoked tool output
- cmd: sane Esc key handling
- cmd: replace "..." with "…"
- cmd: stop dumping errors in the status area
- cmd: better window resize handling (but still not perfect)
- llm: add reasoning content to enablers provider
- cmd: wrap tool output
- cmd: accept ~/ paths for all env vars
- cmd: fail when api keys are missing
- llm: enablers provider must fail if vault read fails
- prompts: strictly one system prompt as message 0
- cmd: sanely report cache usage
- tools: stop counting nested loop tokens
- cmd: reset token count on compact
- cmd: clear tool approval prompt as soon as input is received
- tools: correct summary on gitGrep
- cmd: append AGENTS.md to system prompt
- session: protect configBaseDir with a mutex
- cmd: give cancelled tools a decline response
- cmd: make compaction cache-friendly by default
- tools: stop summarising reviewDiff output
- cmd: fix tool output indentation
- cmd: fix weird
(s))artifact in edit summary - cmd: sane Esc-to-interrupt semantics
- cmd: stream tool summaries and nested loop messages
- cmd: stop repainting entire history on every refresh
- kimi: reasoning_effort:high is too much reasoning
- kimi: reasoning_effort:max is too much reasoning
- cmd: restrict height of tool preview output
- cmd: replace tabs with spaces in output
- cmd: stop long preview lines from wrapping
- cmd: stop input area from painting over conversation area
- loops: add make and go tools to both modes
- cmd: bottom-anchored height bug
- cmd: summarise tool output in ui
- cmd: sane rendering at bottom of viewport
- cmd: constrain output line width
- prompts: better driver and navigator prompt separation
- cmd: better keyboard input
- tools: force failure on git editor invocations
- tools: per-tool preview logic
- cmd: handle n response to write tool prompt
- cmd: unify conversation history
- cmd: scrollback rendering bugs
- llm: ensure reasoning content is propagated
- cmd: correct rune length for emojis
- deepseek: disable thinking on flash for tool calling
- cmd: clear input before quitting with Ctrl+C
- cmd: clear input on Esc keypress
- cmd: stop using Ctrl for input
- cmd: wrap input before it hits the sidebar region
- llm: allow empty content in tool calls
- cmd: retain failed messages
- cmd: saner agent loop
- cmd: better error reporting
- tools: separate internal tools from session tools
- cmd: accept shift+backspace
- cmd: preserve last shell prompt in scrollback
- cmd: keep session history in terminal scrollback
- cmd: stop llm looping after first tool response with content
- prompt: fail if template vars are missing
- tool: prevent symlinks escaping from local project structure
- cmd: add 60 second timeout to llm requests
- docs: correct prompt/tool directory layouts
- cmd: use ctrl+d and ctrl+n for mode switching
Refactorings
- loops: swap driver/navigator semantics
- loops: move reasoningEffort config from models to loops
- tools: migrate some tools to json-only definitions
- repo: enable gofumpt linting
- cmd: rename LoopConfig to Loop and Provider to ProviderConfig
- tools: rename grepProject to findInProject
- cmd: make scrollback a dumb line renderer
- cmd: separate scrollback from visible conversation area
- cmd: encapsulate message representations inside conversation entry type
- cmd: ditch bubbletea
- cmd: render function
- cmd: input area type
- cmd: status area type
- cmd: keyboard type
- cmd: terminal type
- tools: rename readfile to readProjectFile
- cmd: extract conversation from viewport
- cmd: extract keymap from model
- cmd: extract viewport type from model
- cmd: upgrade to bubbletea v2
- cmd: break the tui code apart a little
Other changes
- install: script for algolia enablers local installation
- project: missing agpl header comments
- prompts: tweak system prompt
- prompts: tweak plan instructions
- docs: tidy up the readme a bit
- tools: nudge the agent about premature reviews
- prompts: clearer driver/navigator instructions
- docs: add
approveReadssetting to readme - docs: add enablers provider to readme
- llm: set User-Agent header on llm api requests
- llm: set reasoning_effort to low on enablers large model
- loops: increase reviewDiff max iterations to 128
- cmd: better labels for bytes sent/received
- llm: add xlarge model to enablers provider
- cmd: report separate bytes sent and received
- cmd: change order of status items
- loops: increase max iterations limit
- repo: stricter linting
- repo: go fmt
- docs: agent instructions
- build: add race target
- llm: add kimi-k2.6 to moonshot provider
- loops: extend loop timeout to 10 minutes
- tests: integration tests
- cmd: delete dead condition from tool loop
- docs: tweak readme
- llm: use small model for session naming
- llm: model categorisation
- cmd: blank line between messages
- tests: stop gpg signing test commits
- tool: camel case to snake case helper
- tests: missing command tests
- cmd: cap llm tool loops at 10 iterations
- prompts: add current directory to driver prompt
- repo: update ignore file
- tool: skeleton tool wiring
- mode: mode selector
- repo: source
.env - docs: flesh out local dev details
- prompts: strawman system prompts
- llm: deepseek provider
- cmd: bubbletea skeleton
- docs: initial readme
0.0.0
The dawn of time.