Skip to content

Commit 6585ae8

Browse files
committed
chore: Add polish items and fix license mismatch
Priority fixes: - Fix license: pyproject.toml now correctly shows Apache-2.0 - Fix classifier to use Apache Software License New files: - .editorconfig for consistent formatting - CHANGELOG.md following Keep a Changelog format - .pre-commit-config.yaml for automated checks - .github/ISSUE_TEMPLATE/bug_report.md - .github/ISSUE_TEMPLATE/feature_request.md - .github/PULL_REQUEST_TEMPLATE.md Updated .gitignore: - Add Python coverage/cache directories - Add IDE directories (.idea, .vscode) - Add secrets patterns (.env, .secrets.baseline) - Allow GitHub template markdown files Updated pyproject.toml: - Add [tool.mypy] configuration - Add [tool.coverage.run] and [tool.coverage.report] - Add pytest markers for integration tests
1 parent 17c4189 commit 6585ae8

8 files changed

Lines changed: 265 additions & 5 deletions

File tree

.editorconfig

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# EditorConfig - https://editorconfig.org
2+
3+
root = true
4+
5+
[*]
6+
indent_style = space
7+
indent_size = 4
8+
end_of_line = lf
9+
charset = utf-8
10+
trim_trailing_whitespace = true
11+
insert_final_newline = true
12+
13+
[*.{js,ts,tsx,jsx,json,yaml,yml}]
14+
indent_size = 2
15+
16+
[*.md]
17+
trim_trailing_whitespace = false
18+
19+
[*.py]
20+
indent_size = 4
21+
22+
[Makefile]
23+
indent_style = tab
24+
25+
[*.sh]
26+
indent_size = 4
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
name: Bug Report
3+
about: Report a bug to help us improve
4+
title: '[BUG] '
5+
labels: bug
6+
assignees: ''
7+
---
8+
9+
## Description
10+
A clear description of what the bug is.
11+
12+
## Steps to Reproduce
13+
1. Go to '...'
14+
2. Run '...'
15+
3. See error
16+
17+
## Expected Behavior
18+
What you expected to happen.
19+
20+
## Actual Behavior
21+
What actually happened.
22+
23+
## Environment
24+
- OS: [e.g., macOS 14.0, Ubuntu 22.04]
25+
- Python version: [e.g., 3.11]
26+
- Claude Code++ version: [e.g., 1.0.0]
27+
- Installation profile: [minimal/standard/full/enterprise]
28+
29+
## Logs
30+
```
31+
Paste relevant logs here
32+
```
33+
34+
## Additional Context
35+
Any other context about the problem.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
name: Feature Request
3+
about: Suggest an idea for Claude Code++
4+
title: '[FEATURE] '
5+
labels: enhancement
6+
assignees: ''
7+
---
8+
9+
## Problem Statement
10+
A clear description of the problem you're trying to solve.
11+
12+
## Proposed Solution
13+
Your idea for how to solve it.
14+
15+
## Alternatives Considered
16+
Other solutions you've thought about.
17+
18+
## Additional Context
19+
Any other context, mockups, or examples.
20+
21+
## Would you be willing to contribute this?
22+
- [ ] Yes, I'd like to implement this
23+
- [ ] I can help test/review
24+
- [ ] No, just suggesting

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
## Summary
2+
Brief description of changes.
3+
4+
## Changes
5+
- Change 1
6+
- Change 2
7+
8+
## Type of Change
9+
- [ ] Bug fix (non-breaking change fixing an issue)
10+
- [ ] New feature (non-breaking change adding functionality)
11+
- [ ] Breaking change (fix or feature causing existing functionality to change)
12+
- [ ] Documentation update
13+
- [ ] Refactoring (no functional changes)
14+
15+
## Testing
16+
- [ ] Tests pass locally (`pytest --cov=memory_mcp`)
17+
- [ ] New tests added for new functionality
18+
- [ ] Manual testing performed
19+
20+
## Checklist
21+
- [ ] Code follows project style guidelines
22+
- [ ] Self-reviewed my code
23+
- [ ] Documentation updated if needed
24+
- [ ] No hardcoded secrets or paths
25+
26+
## Related Issues
27+
Fixes #(issue number)

.gitignore

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,14 @@ __pycache__/
1515
*.pyc
1616
.venv/
1717
*.egg-info/
18-
python/=0.21
18+
.coverage
19+
htmlcov/
20+
.pytest_cache/
21+
.mypy_cache/
22+
.ruff_cache/
23+
.hypothesis/
24+
dist/
25+
build/
1926

2027
# Docker
2128
docker/.env
@@ -34,6 +41,7 @@ config/*.local.yaml
3441
!SECURITY.md
3542
!CONTRIBUTING.md
3643
!CODE_OF_CONDUCT.md
44+
!.github/**/*.md
3745
# Keep plugin/subproject READMEs
3846
!plugins/**/README.md
3947
!python/README.md
@@ -55,5 +63,13 @@ Archive.zip
5563
.claude/skills/
5664
.claude/hooks.json
5765

58-
# Reference repositories (not tracked)
59-
openclaw/
66+
# IDE
67+
.idea/
68+
.vscode/
69+
*.swp
70+
*.swo
71+
72+
# Secrets
73+
.env
74+
.env.local
75+
.secrets.baseline

.pre-commit-config.yaml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Pre-commit hooks - https://pre-commit.com
2+
# Install: pip install pre-commit && pre-commit install
3+
4+
repos:
5+
# General
6+
- repo: https://github.com/pre-commit/pre-commit-hooks
7+
rev: v4.5.0
8+
hooks:
9+
- id: trailing-whitespace
10+
- id: end-of-file-fixer
11+
- id: check-yaml
12+
- id: check-json
13+
- id: check-added-large-files
14+
args: ['--maxkb=1000']
15+
- id: check-merge-conflict
16+
- id: detect-private-key
17+
18+
# Python
19+
- repo: https://github.com/astral-sh/ruff-pre-commit
20+
rev: v0.1.9
21+
hooks:
22+
- id: ruff
23+
args: [--fix]
24+
- id: ruff-format
25+
26+
- repo: https://github.com/pre-commit/mirrors-mypy
27+
rev: v1.8.0
28+
hooks:
29+
- id: mypy
30+
additional_dependencies: [pydantic>=2.0]
31+
args: [--ignore-missing-imports]
32+
files: ^python/
33+
34+
# Shell
35+
- repo: https://github.com/shellcheck-py/shellcheck-py
36+
rev: v0.9.0.6
37+
hooks:
38+
- id: shellcheck
39+
args: [--severity=warning]
40+
41+
# Secrets detection
42+
- repo: https://github.com/Yelp/detect-secrets
43+
rev: v1.4.0
44+
hooks:
45+
- id: detect-secrets
46+
args: ['--baseline', '.secrets.baseline']
47+
exclude: package-lock.json|pnpm-lock.yaml

CHANGELOG.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Changelog
2+
3+
All notable changes to Claude Code++ will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [Unreleased]
9+
10+
### Added
11+
- CAIIDE++ VS Code fork absorbed into monorepo
12+
- Onboarding wizard with 6-step setup flow
13+
- Secret generation script (`scripts/generate-env.sh`)
14+
- Resource detection script (`scripts/detect-resources.sh`)
15+
- Remote installation script for curl-based setup
16+
- CI/CD pipeline with GitHub Actions
17+
- CONTRIBUTING.md with development guidelines
18+
- Integration test suite (22 tests)
19+
20+
### Changed
21+
- Updated pyproject.toml: removed FAISS, added Graphiti dependencies
22+
- Fixed container name prefix (`claude-code-pp-*`)
23+
- Enhanced install.sh with secret generation and profile support
24+
25+
### Fixed
26+
- License mismatch (pyproject.toml now correctly shows Apache-2.0)
27+
- Docker compose environment variable handling
28+
- Redis connection verification with password auth
29+
30+
## [1.0.0] - 2025-01-31
31+
32+
### Added
33+
- Initial release of Claude Code++
34+
- Tiered memory system (Redis → Graphiti → SQLite → Vault)
35+
- Memory MCP server with 23 tools
36+
- System Controller for macOS accessibility
37+
- Research environment (VoiceMode + webcam)
38+
- OpenClaw messaging integrations
39+
- Docker infrastructure (Redis, Neo4j, LiteLLM)
40+
41+
### Memory Tiers
42+
- **Hot**: Redis cache for active session data
43+
- **Warm**: Graphiti/Neo4j knowledge graph for entities and relationships
44+
- **Cold**: SQLite with FTS5 for full-text search
45+
- **Archive**: Obsidian-compatible vault for human-readable notes
46+
47+
### MCP Tools
48+
- Core: memory_store, memory_search, memory_recall, memory_delete, memory_list
49+
- Sessions: session_save, session_restore
50+
- Vault: vault_write, vault_read
51+
- Stats: memory_stats
52+
- Research: research_session_*, research_transcript_store, research_capture_store
53+
- Knowledge graph: search_entities, search_facts
54+
- Code search: code_search, search_function, search_class
55+
- Proactive: proactive_status, extract_insights, configure_proactive
56+
57+
[Unreleased]: https://github.com/H4LFdotDEV/Claude-CodePlusPlus/compare/v1.0.0...HEAD
58+
[1.0.0]: https://github.com/H4LFdotDEV/Claude-CodePlusPlus/releases/tag/v1.0.0

python/pyproject.toml

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ name = "memory-mcp"
77
version = "1.0.0"
88
description = "Memory MCP Server for Claude Code++ - Tiered memory system with Redis, Graphiti, SQLite, and Obsidian vault"
99
readme = "README.md"
10-
license = {text = "MIT"}
10+
license = {text = "Apache-2.0"}
1111
authors = [
1212
{name = "Jeremiah Kroesche", email = "jeremiah@halfservers.com"}
1313
]
1414
requires-python = ">=3.10"
1515
classifiers = [
1616
"Development Status :: 4 - Beta",
1717
"Intended Audience :: Developers",
18-
"License :: OSI Approved :: MIT License",
18+
"License :: OSI Approved :: Apache Software License",
1919
"Programming Language :: Python :: 3",
2020
"Programming Language :: Python :: 3.10",
2121
"Programming Language :: Python :: 3.11",
@@ -84,3 +84,30 @@ ignore = ["E501"]
8484
[tool.pytest.ini_options]
8585
asyncio_mode = "auto"
8686
testpaths = ["tests"]
87+
markers = [
88+
"integration: marks tests as integration tests (require services)",
89+
]
90+
91+
[tool.mypy]
92+
python_version = "3.10"
93+
warn_return_any = true
94+
warn_unused_configs = true
95+
ignore_missing_imports = true
96+
exclude = ["tests/", "build/"]
97+
98+
[tool.coverage.run]
99+
source = ["memory_mcp"]
100+
branch = true
101+
omit = ["tests/*", "*/__pycache__/*"]
102+
103+
[tool.coverage.report]
104+
exclude_lines = [
105+
"pragma: no cover",
106+
"def __repr__",
107+
"raise AssertionError",
108+
"raise NotImplementedError",
109+
"if __name__ == .__main__.:",
110+
"if TYPE_CHECKING:",
111+
]
112+
fail_under = 70
113+
show_missing = true

0 commit comments

Comments
 (0)