Commit 93f7247

mo khan <mo@mokhan.ca>
2026-02-02 07:05:02
docs: reorder categories to match Common Changelog format
1 parent 3476061
Changed files (1)
CHANGELOG.md
@@ -2,20 +2,8 @@
 
 ## [0.10.0] - 2026-01-27
 
-### Added
-- **Async MCP loading** for faster startup - tools load in background thread
-- **HTTP MCP servers** with SSE support and session management
-- **OAuth authentication** for MCP servers with PKCE, automatic token refresh
-- **Global hooks** - `toolbox.before`/`toolbox.after` without tool name applies to all tools
-- **`/context` improvements**: `/context <n>` to view entry, `/context json` for full dump
-- **ast-grep (`sg`) support** for building repo maps - faster and more accurate than ctags
-- **New tools**: `glob`, `grep`, `list`, `git`, `task`, `/tools` command
-- **Permissions system** (`lib/elelem/permissions.rb`) for tool access control
-- **OpenAI reasoning mode** - enables `Reasoning: high` for o-series models
-- **Test coverage** for OAuth, token storage, HTTP MCP, SSE parsing, global hooks
-
 ### Changed
-- **BREAKING: Plugin API** - plugins now receive `agent` instead of `toolbox`
+- **Breaking: Plugin API** - plugins now receive `agent` instead of `toolbox`
   - Old: `Elelem::Plugins.register(:name) { |toolbox| toolbox.add(...) }`
   - New: `Elelem::Plugins.register(:name) { |agent| agent.toolbox.add(...) }`
   - Plugins can now access `agent.terminal`, `agent.commands`, `agent.conversation`
@@ -29,6 +17,18 @@
 - Uses `Open3.capture2` instead of backticks for thread safety
 - Improved ANSI escape sequence stripping in `/shell` transcripts
 
+### Added
+- **Async MCP loading** for faster startup - tools load in background thread
+- **HTTP MCP servers** with SSE support and session management
+- **OAuth authentication** for MCP servers with PKCE, automatic token refresh
+- **Global hooks** - `toolbox.before`/`toolbox.after` without tool name applies to all tools
+- **`/context` improvements**: `/context <n>` to view entry, `/context json` for full dump
+- **ast-grep (`sg`) support** for building repo maps - faster and more accurate than ctags
+- **New tools**: `glob`, `grep`, `list`, `git`, `task`, `/tools` command
+- **Permissions system** (`lib/elelem/permissions.rb`) for tool access control
+- **OpenAI reasoning mode** - enables `Reasoning: high` for o-series models
+- **Test coverage** for OAuth, token storage, HTTP MCP, SSE parsing, global hooks
+
 ## [0.9.2] - 2026-01-22
 
 ### Fixed
@@ -42,6 +42,30 @@
 
 ## [0.9.0] - 2026-01-21
 
+### Changed
+- **Breaking**: Requires Ruby >= 4.0.0 (was 3.4.0)
+- **Breaking**: Removed `net-llm` dependency - LLM clients now inline in `lib/elelem/net/`
+  - `Elelem::Net::Claude` (Anthropic and Vertex AI)
+  - `Elelem::Net::OpenAI`
+  - `Elelem::Net::Ollama`
+- **Breaking**: Simplified LLM client `fetch` contract
+  - Yields `{content:, thinking:}` deltas
+  - Returns `tool_calls` array directly
+- **Breaking**: Tool schema uses OpenAI format (`{type: "function", function: {...}}`)
+- **Breaking**: Tool definitions use `description:` key (was `desc:`)
+- **Breaking**: Removed modes and permissions system entirely
+- **Breaking**: Removed slash commands (`/mode`, `/env`, `/provider`, `/model`)
+  - Remaining: `/clear`, `/context`, `/init`, `/reload`, `/shell`, `/exit`, `/help`
+- **Breaking**: Removed many dependencies
+  - Removed: `thor`, `cli-ui`, `erb`, `cgi`, `set`, `timeout`, `logger`, `net-llm`, `json-schema`
+  - Added: `json_schemer`, `optparse`, `tempfile`, `stringio`, `uri`
+- Consolidated multiple exe files into single `exe/elelem` entry point
+- Tools are now defined via plugins instead of hardcoded in Toolbox
+- System prompt includes hints for `rg`, `fd`, `sg` (ast-grep), `sed`, `patch`
+- System prompt regenerated on each fetch (includes dynamic repo map)
+- Default tool set: `read`, `write`, `edit`, `execute`, `eval`, `verify`, `task`
+- System prompt encourages using `eval` to create tools for repetitive tasks
+
 ### Added
 - **Plugin system** with support for custom tool definitions
   - Load plugins from `lib/elelem/plugins/`, `~/.elelem/plugins/`, and `.elelem/plugins/`
@@ -69,30 +93,6 @@
 - Tool aliases support (e.g., `bash`, `sh`, `exec` → `execute`)
 - **Dependencies documentation** in README with installation links
 
-### Changed
-- **Breaking**: Requires Ruby >= 4.0.0 (was 3.4.0)
-- **Breaking**: Removed `net-llm` dependency - LLM clients now inline in `lib/elelem/net/`
-  - `Elelem::Net::Claude` (Anthropic and Vertex AI)
-  - `Elelem::Net::OpenAI`
-  - `Elelem::Net::Ollama`
-- **Breaking**: Simplified LLM client `fetch` contract
-  - Yields `{content:, thinking:}` deltas
-  - Returns `tool_calls` array directly
-- **Breaking**: Tool schema uses OpenAI format (`{type: "function", function: {...}}`)
-- **Breaking**: Tool definitions use `description:` key (was `desc:`)
-- **Breaking**: Removed modes and permissions system entirely
-- **Breaking**: Removed slash commands (`/mode`, `/env`, `/provider`, `/model`)
-  - Remaining: `/clear`, `/context`, `/init`, `/reload`, `/shell`, `/exit`, `/help`
-- **Breaking**: Removed many dependencies
-  - Removed: `thor`, `cli-ui`, `erb`, `cgi`, `set`, `timeout`, `logger`, `net-llm`, `json-schema`
-  - Added: `json_schemer`, `optparse`, `tempfile`, `stringio`, `uri`
-- Consolidated multiple exe files into single `exe/elelem` entry point
-- Tools are now defined via plugins instead of hardcoded in Toolbox
-- System prompt includes hints for `rg`, `fd`, `sg` (ast-grep), `sed`, `patch`
-- System prompt regenerated on each fetch (includes dynamic repo map)
-- Default tool set: `read`, `write`, `edit`, `execute`, `eval`, `verify`, `task`
-- System prompt encourages using `eval` to create tools for repetitive tasks
-
 ### Removed
 - `lib/elelem/application.rb` - CLI now in `exe/elelem`
 - `lib/elelem/conversation.rb` - simplified into Agent
@@ -121,16 +121,16 @@
 
 ## [0.7.0] - 2026-01-14
 
+### Changed
+- Renamed internal `mode` concept to `permissions` for clarity (read/write/execute are permissions, plan/build/verify are modes)
+- Refactored `Toolbox#run_tool` to accept `permissions:` parameter
+
 ### Added
 - ASCII spinner animation while waiting for LLM responses
 - `Terminal#waiting` method with automatic cleanup on next output
 - Decision-making principles in system prompt (prefer reversible actions, ask when uncertain)
 - Mode enforcement tests
 
-### Changed
-- Renamed internal `mode` concept to `permissions` for clarity (read/write/execute are permissions, plan/build/verify are modes)
-- Refactored `Toolbox#run_tool` to accept `permissions:` parameter
-
 ### Fixed
 - **Security**: Mode restrictions now enforced at execution time, not just schema time
   - Previously, LLMs could call tools outside their mode by guessing tool names
@@ -138,13 +138,6 @@
 
 ## [0.6.0] - 2026-01-12
 
-### Added
-- `/env` slash command to capture environment variables for provider connections
-- `/shell` slash command
-- `/provider` and `/model` slash commands
-- Tab completion for commands
-- Help output for `/mode` and `/env` commands
-
 ### Changed
 - Renamed `bash` tool to `exec`
 - Tuned system prompt
@@ -153,6 +146,13 @@
 - Use pessimistic constraint on net-llm dependency
 - Extracted Terminal class for IO abstraction (enables E2E testing)
 
+### Added
+- `/env` slash command to capture environment variables for provider connections
+- `/shell` slash command
+- `/provider` and `/model` slash commands
+- Tab completion for commands
+- Help output for `/mode` and `/env` commands
+
 ### Fixed
 - Prevent infinite looping errors
 - Provide function schema when tool is called with invalid arguments
@@ -161,6 +161,10 @@
 
 ## [0.5.0] - 2026-01-07
 
+### Changed
+- Requires net-llm >= 0.5.0 with unified fetch interface
+- Updated gem description to reflect multi-provider support
+
 ### Added
 - Multi-provider support: Ollama, Anthropic, OpenAI, and VertexAI
 - `--provider` CLI option to select LLM provider (default: ollama)
@@ -168,10 +172,6 @@
 - Tool aliases (`bash` also accepts `exec`, `shell`, `command`, `terminal`, `run`)
 - Thinking text output for models that support extended thinking
 
-### Changed
-- Requires net-llm >= 0.5.0 with unified fetch interface
-- Updated gem description to reflect multi-provider support
-
 ## [0.4.2] - 2025-12-01
 
 ### Changed
@@ -181,28 +181,20 @@
 
 ## [0.4.1] - 2025-11-26
 
-### Added
-- `elelem files` subcommand: generates Claude‑compatible XML file listings.
-- Rake task `files:prompt` to output a ready‑to‑copy list of files for prompts.
-
 ### Changed
-- Refactor tool‑call formatting to a more compact JSON payload for better LLM parsing.
-- Updated CI and documentation to use GitHub instead of previous hosting.
-- Runtime validation of command‑line parameters against a JSON schema.
+- Refactor tool-call formatting to a more compact JSON payload for better LLM parsing
+- Updated CI and documentation to use GitHub instead of previous hosting
+- Runtime validation of command-line parameters against a JSON schema
+
+### Added
+- `elelem files` subcommand: generates Claude-compatible XML file listings
+- Rake task `files:prompt` to output a ready-to-copy list of files for prompts
 
 ### Fixed
-- Minor documentation and CI workflow adjustments.
+- Minor documentation and CI workflow adjustments
 
 ## [0.4.0] - 2025-11-10
 
-### Added
-- **Eval Tool**: Meta-programming tool that allows the LLM to dynamically create and register new tools at runtime
-  - Eval tool has access to the toolbox for enhanced capabilities
-- Comprehensive test coverage with RSpec
-  - Agent specs
-  - Conversation specs
-  - Toolbox specs
-
 ### Changed
 - **Architecture Improvements**: Significant refactoring for better separation of concerns
   - Extracted Tool class to separate file (`lib/elelem/tool.rb`)
@@ -212,11 +204,34 @@
   - Tool constants moved to Toolbox for better organization
   - Agent class simplified by delegating to Tool instances
 
+### Added
+- **Eval Tool**: Meta-programming tool that allows the LLM to dynamically create and register new tools at runtime
+  - Eval tool has access to the toolbox for enhanced capabilities
+- Comprehensive test coverage with RSpec
+  - Agent specs
+  - Conversation specs
+  - Toolbox specs
+
 ### Fixed
 - `/context` command now correctly accounts for the current mode
 
 ## [0.3.0] - 2025-11-05
 
+### Changed
+- **Breaking**: Removed `llm-ollama` and `llm-openai` standalone executables (use main `elelem chat` command)
+- **Breaking**: Simplified architecture - consolidated all logic into Agent class
+  - Removed Configuration class
+  - Removed Toolbox system
+  - Removed MCP client infrastructure
+  - Removed Tool and Tools classes
+  - Removed TUI abstraction layer (direct puts/Reline usage)
+  - Removed API wrapper class
+  - Removed state machine
+- Improved execute tool description to guide LLM toward direct command execution
+- Extracted tool definitions from long inline strings to readable private methods
+- Updated README with clear philosophy and usage examples
+- Reduced total codebase from 417 to 395 lines (-5%)
+
 ### Added
 - **Mode System**: Control agent capabilities with workflow modes
   - `/mode plan` - Read-only mode (grep, list, read)
@@ -232,26 +247,6 @@
 - Design philosophy documentation in README
 - Mode system documentation
 
-### Changed
-- **BREAKING**: Removed `llm-ollama` and `llm-openai` standalone executables (use main `elelem chat` command)
-- **BREAKING**: Simplified architecture - consolidated all logic into Agent class
-  - Removed Configuration class
-  - Removed Toolbox system
-  - Removed MCP client infrastructure
-  - Removed Tool and Tools classes
-  - Removed TUI abstraction layer (direct puts/Reline usage)
-  - Removed API wrapper class
-  - Removed state machine
-- Improved execute tool description to guide LLM toward direct command execution
-- Extracted tool definitions from long inline strings to readable private methods
-- Updated README with clear philosophy and usage examples
-- Reduced total codebase from 417 to 395 lines (-5%)
-
-### Fixed
-- Working directory handling for execute tool (handles empty string cwd)
-- REPL EOF handling (graceful exit when input stream ends)
-- Tool call formatting now shows clean, readable commands
-
 ### Removed
 - `exe/llm-ollama` (359 lines)
 - `exe/llm-openai` (340 lines)
@@ -264,6 +259,11 @@
 - `lib/elelem/states/*` (state machine infrastructure)
 - Removed ~750 lines of unused/redundant code
 
+### Fixed
+- Working directory handling for execute tool (handles empty string cwd)
+- REPL EOF handling (graceful exit when input stream ends)
+- Tool call formatting now shows clean, readable commands
+
 ## [0.2.1] - 2025-10-15
 
 ### Fixed
@@ -272,16 +272,8 @@
 
 ## [0.2.0] - 2025-10-15
 
-### Added
-- New `llm-ollama` executable - minimal coding agent with streaming support for Ollama
-- New `llm-openai` executable - minimal coding agent for OpenAI/compatible APIs
-- Memory feature for persistent context storage and retrieval
-- Web fetch tool for retrieving and analyzing web content
-- Streaming responses with real-time token display
-- Visual "thinking" progress indicators with dots during reasoning phase
-
 ### Changed
-- **BREAKING**: Migrated from custom Net::HTTP implementation to `net-llm` gem
+- **Breaking**: Migrated from custom Net::HTTP implementation to `net-llm` gem
 - API client now uses `Net::Llm::Ollama` for better reliability and maintainability
 - Removed direct dependencies on `net-http` and `uri` (now transitive through net-llm)
 - Maps Ollama's `thinking` field to internal `reasoning` field
@@ -289,6 +281,14 @@
 - Improved system prompt for better agent behavior
 - Enhanced error handling and logging
 
+### Added
+- New `llm-ollama` executable - minimal coding agent with streaming support for Ollama
+- New `llm-openai` executable - minimal coding agent for OpenAI/compatible APIs
+- Memory feature for persistent context storage and retrieval
+- Web fetch tool for retrieving and analyzing web content
+- Streaming responses with real-time token display
+- Visual "thinking" progress indicators with dots during reasoning phase
+
 ### Fixed
 - Response processing for Ollama's native message format
 - Tool argument parsing to handle both string and object formats