Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
76061b5
Bump version to 3.4.5.dev0 and add release process docs
cdnsteve Jan 10, 2026
be07e41
Merge pull request #51 from roboticforce/chore/bump-version-3.4.5.dev0
cdnsteve Jan 10, 2026
e203fe6
Fix task priority ordering - urgent tasks now processed first
cdnsteve Jan 11, 2026
ff1a489
Merge pull request #53 from roboticforce/bugfix/priority-ordering
cdnsteve Jan 11, 2026
f38b1ce
Bump version to 3.4.5.dev1
cdnsteve Jan 11, 2026
5bd20a3
Bump version to 3.4.5.dev2 for development
cdnsteve Jan 11, 2026
97c557d
Update AGENTS.md to require venv for testing
cdnsteve Jan 11, 2026
e98e630
Merge pull request #54 from roboticforce/chore/bump-version-3.4.5.dev2
cdnsteve Jan 11, 2026
bf5ac73
Fix documentation URL to sugar.roboticforce.io
cdnsteve Jan 16, 2026
dad6ad0
Add Memory System for persistent semantic memory (v3.5)
cdnsteve Jan 21, 2026
52063fc
style: Apply Black formatting to memory module
cdnsteve Jan 21, 2026
972e75a
style: Reformat code with black 26.1.0 for CI compatibility
cdnsteve Jan 21, 2026
93f367f
fix: Handle Windows file locking in test teardown
cdnsteve Jan 21, 2026
6771d20
fix: Change status emoji to cake, fix flaky Windows timing test
cdnsteve Jan 21, 2026
f2679f3
test: Update test to expect cake emoji in status
cdnsteve Jan 21, 2026
bf640bc
Merge pull request #55 from roboticforce/feature/memory-system
cdnsteve Jan 21, 2026
c2ea630
Bump version to 3.5.0.dev0 for Memory System release
cdnsteve Jan 21, 2026
89e4a2d
docs: Make Memory System more prominent in README
cdnsteve Jan 21, 2026
ad1d078
fix: Improve FTS5 memory search for stemming and multi-word queries
cdnsteve Jan 21, 2026
23fbb1a
style: Sort imports alphabetically across codebase
cdnsteve Jan 21, 2026
b2ec758
docs: Add token savings demo script for memory system
cdnsteve Jan 21, 2026
f9bdf0c
Merge branch 'develop' into bugfix/memory-fts-search
cdnsteve Jan 21, 2026
cb4f806
Merge pull request #56 from roboticforce/bugfix/memory-fts-search
cdnsteve Jan 21, 2026
6e40fae
docs: Add token savings documentation for memory system
cdnsteve Jan 21, 2026
80e0d2f
chore: Release 3.5.0
cdnsteve Jan 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ sugar:

- **Issues**: [GitHub Issues](https://github.com/roboticforce/sugar/issues)
- **Discussions**: [GitHub Discussions](https://github.com/roboticforce/sugar/discussions)
- **Documentation**: [docs.roboticforce.io/sugar](https://docs.roboticforce.io/sugar)
- **Documentation**: [sugar.roboticforce.io](https://sugar.roboticforce.io/)

## License

Expand Down
51 changes: 51 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,55 @@ Sugar uses [PEP 440](https://peps.python.org/pep-0440/):

Version is in `pyproject.toml` only. Bump dev number after merging PRs.

## Release Process (IMPORTANT)

Follow these steps exactly when releasing a new version:

### 1. Create Release Branch (from develop)
```bash
git checkout develop
git pull origin develop
git checkout -b release/X.Y.Z
```

### 2. Prepare Release
- Update `pyproject.toml`: change `X.Y.Z.devN` → `X.Y.Z`
- Add CHANGELOG.md entry for the release
- Commit: `git commit -am "Prepare release vX.Y.Z"`

### 3. Create PR to main
```bash
git push -u origin release/X.Y.Z
gh pr create --base main --title "Release vX.Y.Z"
```

### 4. After PR Merge - IMMEDIATELY Tag
```bash
git checkout main
git pull origin main
git tag vX.Y.Z
git push origin vX.Y.Z
```
**The tag triggers the release workflow (GitHub Release + PyPI publish).**

### 5. Sync develop with main
```bash
git checkout develop
git pull origin develop
git merge origin/main -m "Merge main vX.Y.Z into develop"
```

### 6. Bump develop to next dev version (via PR!)
```bash
git checkout -b chore/bump-version-X.Y.Z+1.dev0
# Edit pyproject.toml: X.Y.Z → X.Y.Z+1.dev0
git commit -am "Bump version to X.Y.Z+1.dev0 for development"
git push -u origin chore/bump-version-X.Y.Z+1.dev0
gh pr create --base develop --title "Bump version to X.Y.Z+1.dev0"
```

**NEVER push directly to develop or main - always use PRs!**

## Project Structure

```
Expand Down Expand Up @@ -138,6 +187,8 @@ sugar --version

## Testing

Ensure you have activated the virtual environment (see Development Setup above) before running these commands.

```bash
# Run all tests
pytest
Expand Down
86 changes: 86 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,92 @@ All notable changes to the Sugar autonomous development system will be documente
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [3.5.0] - Unreleased

### 🧠 MINOR RELEASE: Memory System

Sugar now has persistent semantic memory! Remember decisions, preferences, error patterns, and more across sessions. Integrates with Claude Code via MCP server for seamless context sharing.

### Added

#### Memory System (`sugar/memory/`)
- **MemoryStore**: SQLite-backed storage with vector search support
- Semantic search using sentence-transformers embeddings
- FTS5 keyword search fallback when embeddings unavailable
- sqlite-vec integration for fast vector similarity
- **Memory Types**: Six memory categories for different kinds of information
- `decision` - Architectural and implementation decisions
- `preference` - User coding preferences (permanent)
- `file_context` - What files do what
- `error_pattern` - Bug patterns and their fixes
- `research` - API docs, library findings
- `outcome` - Task outcomes and learnings
- **MemoryRetriever**: Context formatting for prompt injection
- **Embedder**: SentenceTransformer embeddings with graceful fallback

#### New CLI Commands
- `sugar remember "content"` - Store a memory with type, tags, TTL, importance
- `sugar recall "query"` - Search memories with semantic/keyword matching
- `sugar memories` - List memories with filtering by type, age
- `sugar forget <id>` - Delete a memory by ID
- `sugar export-context` - Export memories for Claude Code SessionStart hook
- `sugar memory-stats` - Show memory system statistics
- `sugar mcp memory` - Run MCP server for Claude Code integration

#### MCP Server for Claude Code
- **search_memory** - Semantic search over project memories
- **store_learning** - Store new observations/decisions from Claude
- **get_project_context** - Organized project context summary
- **recall** - Formatted markdown context for prompts
- **list_recent_memories** - List with type filtering
- **Resources**: `sugar://project/context`, `sugar://preferences`

#### Claude Code Integration
- **SessionStart Hook**: Auto-inject context via `sugar export-context`
- **MCP Server**: Full memory access via `claude mcp add sugar -- sugar mcp memory`
- **Bidirectional**: Claude can both read and write memories

### Configuration

New optional dependency group:
```bash
pip install 'sugarai[memory]' # Enables semantic search
pip install 'sugarai[all]' # All features
```

Memory works without dependencies (uses FTS5 keyword search), but semantic search requires:
- `sentence-transformers>=2.2.0`
- `sqlite-vec>=0.1.0`

### Usage Examples

```bash
# Store memories
sugar remember "Always use async/await, never callbacks" --type preference
sugar remember "Auth tokens expire after 15 minutes" --type research --ttl 90d
sugar remember "payment_processor.py handles Stripe webhooks" --type file_context

# Search memories
sugar recall "how do we handle authentication"
sugar recall "database errors" --type error_pattern --limit 5

# Claude Code integration
claude mcp add sugar -- sugar mcp memory
```

### Documentation
- New [Memory System Guide](docs/user/memory.md)
- Updated README with memory commands and MCP integration
- Updated CLI reference with all memory commands

### Technical Details
- 24 new tests for memory module
- Full backwards compatibility - memory is opt-in
- Database stored at `.sugar/memory.db` per project
- Embeddings use all-MiniLM-L6-v2 (384 dimensions)

---

## [3.4.4] - 2026-01-10

### 🔄 MINOR RELEASE: Agent-Agnostic Rebranding
Expand Down
96 changes: 93 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ Sugar adds **autonomy and persistence** to your AI coding workflow. Instead of o

- **Continuous execution** - Runs 24/7, working through your task queue
- **Agent-agnostic** - Works with Claude Code, OpenCode, Aider, or any AI CLI
- **Persistent memory** - Remember decisions, preferences, and patterns across sessions
- **Delegate and forget** - Hand off tasks from any session
- **Builds features** - Takes specs, implements, tests, commits working code
- **Fixes bugs** - Reads error logs, investigates, implements fixes
Expand Down Expand Up @@ -54,6 +55,16 @@ uv pip install sugarai
pipx install 'sugarai[github]'
```

**With memory system (semantic search):**
```bash
pipx install 'sugarai[memory]'
```

**All features:**
```bash
pipx install 'sugarai[all]'
```

</details>

## Quick Start
Expand Down Expand Up @@ -89,6 +100,31 @@ Sugar will:

It keeps going until the queue is empty (or you stop it).

## Memory System

Sugar remembers what matters across sessions. No more re-explaining decisions or rediscovering patterns.

**Saves tokens:** Memories are stored as compressed summaries (~90% smaller) and retrieved only when relevant. Real projects see **~89% token reduction per session** - that's ~$32 saved over 500 sessions.

```bash
# Store knowledge
sugar remember "Always use async/await, never callbacks" --type preference
sugar remember "JWT tokens use RS256, expire in 15 min" --type decision

# Search memories
sugar recall "authentication"

# Claude Code integration - give Claude access to your project memory
claude mcp add sugar -- sugar mcp memory

# See your token savings
python examples/token_savings_demo.py
```

**Memory types:** `decision`, `preference`, `file_context`, `error_pattern`, `research`, `outcome`

**Full docs:** [Memory System Guide](docs/user/memory.md)

**Delegate from Claude Code:**
```
/sugar-task "Fix login timeout" --type bug_fix --urgent
Expand Down Expand Up @@ -177,6 +213,12 @@ With pipx, Sugar's dependencies don't conflict with your project's dependencies.

## Features

**Memory System** *(New in 3.5)*
- Persistent semantic memory across sessions
- Remember decisions, preferences, error patterns
- Claude Code integration via MCP server
- Semantic search with `sugar recall`

**Task Management**
- Rich task context with priorities and metadata
- Custom task types for your workflow
Expand All @@ -203,7 +245,7 @@ With pipx, Sugar's dependencies don't conflict with your project's dependencies.
- Self-correcting loops until tests pass
- Prevents single-shot failures

**Full docs:** [docs/ralph-wiggum.md](docs/ralph-wiggum.md)
**Full docs:** [Memory System](docs/user/memory.md) | [Ralph Wiggum](docs/ralph-wiggum.md)

## Configuration

Expand Down Expand Up @@ -254,7 +296,28 @@ Claude: "I'll create a Sugar task for the test fixes."

### MCP Server Integration

Sugar provides an MCP server for Goose, Claude Desktop, and other MCP clients.
Sugar provides MCP servers for Goose, Claude Code, Claude Desktop, and other MCP clients.

**Using with Claude Code (Memory):**
```bash
# Add Sugar memory to Claude Code
claude mcp add sugar -- sugar mcp memory
```

Or add to `~/.claude.json`:
```json
{
"mcpServers": {
"sugar": {
"type": "stdio",
"command": "sugar",
"args": ["mcp", "memory"]
}
}
}
```

This gives Claude Code access to your project's memory - decisions, preferences, error patterns, and more.

**Using with Goose:**
```bash
Expand All @@ -279,6 +342,32 @@ goose configure
}
```

### Memory System

Sugar's memory system provides persistent context across sessions:

```bash
# Store memories
sugar remember "Always use async/await, never callbacks" --type preference
sugar remember "Auth tokens expire after 15 minutes" --type research --ttl 90d

# Search memories
sugar recall "how do we handle authentication"
sugar recall "error patterns" --type error_pattern

# List and manage
sugar memories --type decision --since 7d
sugar forget abc123 --force
sugar memory-stats

# Export for Claude Code SessionStart hook
sugar export-context
```

**Memory types:** `decision`, `preference`, `file_context`, `error_pattern`, `research`, `outcome`

**Full docs:** [Memory System Guide](docs/user/memory.md)

## Advanced Usage

**Task Orchestration**
Expand Down Expand Up @@ -342,6 +431,7 @@ sugar run --once # Test single cycle

- [Quick Start](docs/user/quick-start.md)
- [CLI Reference](docs/user/cli-reference.md)
- [Memory System](docs/user/memory.md) *(New)*
- [Task Orchestration](docs/task_orchestration.md)
- [Ralph Wiggum](docs/ralph-wiggum.md)
- [GitHub Integration](docs/user/github-integration.md)
Expand Down Expand Up @@ -376,6 +466,6 @@ pytest tests/ -v

---

**Sugar v3.4** - The autonomous layer for AI coding agents
**Sugar v3.5** - The autonomous layer for AI coding agents

> ⚠️ Sugar is provided "AS IS" without warranty. Review all AI-generated code before use.
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ Documentation for developers who want to **use** Sugar in their projects:
- **[Quick Start Guide](user/quick-start.md)** - Get up and running in 5 minutes
- **[Execution Context](user/execution-context.md)** - Where and how to run Sugar correctly
- **[CLI Reference](user/cli-reference.md)** - All Sugar commands and options
- **[Memory System](user/memory.md)** - Persistent semantic memory for coding sessions *(New)*
- **[GitHub Integration](user/github-integration.md)** - Connect Sugar to GitHub issues and PRs
- **[Examples](user/examples.md)** - Real-world usage examples
- **[Configuration Best Practices](user/configuration-best-practices.md)** - Essential config patterns and exclusions
Expand Down
Loading