Skip to content

v1.2.0 — CI, tone system, session handlers, 108 tests

Latest

Choose a tag to compare

@Kodaxadev Kodaxadev released this 15 May 14:33

What's changed

Bug fixes

  • MCP protocol fixcompletion_celebration in streak.py was writing to stdout (the JSON-RPC channel). All output now routes to stderr.
  • Scope validation fixvalidate_scope() prefix match allowed /project_old/file.py to pass a /project scope. Fixed with os.sep suffix; regression test added.

New

  • GitHub Actions CI — pytest on Python 3.11, 3.12, and 3.13 on every push and PR
  • handlers_session.py — session lifecycle handlers split from handlers.py; _run_git_checkpoint now returns a human-readable status string for all 4 outcomes
  • Startup integrity checkmessages.py raises AssertionError at import time if any message key is missing a tone variant
  • Git status in session_checkpoint — response now shows what happened with the git commit instead of silently passing
  • Expanded stop-word list — reduces gap-penalty false positives on long on-topic messages

Code quality

  • DRIFT_SCORE_CAP imported from models.py instead of hardcoded in handlers.py
  • _STOP frozenset hoisted to module level in drift.py (was rebuilt on every call)
  • _assert_routes_match_tools() validates route/tool parity at server startup
  • Version resolved via importlib.metadata — stays in sync with pyproject.toml
  • [project.urls] added to pyproject.toml

Tests

108 tests (up from 96) across 6 files — new coverage for git checkpoint branches, route/tool parity, scope prefix regression, and flow mode auto-expiry.

Docs

  • CHANGELOG.md and DECISIONS.md added
  • AGENTS.md updated to reflect full 15-module architecture and all 14 tools
  • README.md: CI badge, updated test count, architecture tree