Skip to content

Releases: Cloudmeru/CodeWiki-MCP

v1.3.0

Choose a tag to compare

@albertje8118 albertje8118 released this 17 Feb 15:22

What's New

GitHub API fallback for typos & misspellings

  • When CodeWiki search returns zero results, the resolver now queries api.github.com/search/repositories as a fallback — catches typos like "fecbook/react" → "facebook/react".
  • Fully async with httpx; no API token required for public repos.

Indexing confirmation via MCP Elicitation

  • codewiki_request_indexing now asks the user to confirm before submitting a repository for indexing, using the MCP Elicitation protocol.
  • Users can accept, decline, or cancel — decline and cancel skip the submission gracefully.

Defensive hardening

  • Narrowed all broad except Exception handlers across every module to catch only specific exception types (TimeoutError, PlaywrightError, httpx.HTTPError, etc.).
  • Eliminated bare raise from except-all blocks; replaced with targeted re-raises.

Code quality

  • Full Ruff & Pylint cleanup — zero warnings across the entire codebase.
  • Fixed session pool test infinite loop and gc.collect RuntimeWarnings.

Documentation

  • Updated all 10 docs HTML pages with v1.3.0 content.
  • Added sample conversation GIF to README.
  • Fixed PyPI logo display (absolute raw GitHub URLs).
  • New agent fallback guidance for non-interactive clients.
  • New v1.3.0 live scenario test file (13 scenarios).

Testing

  • 53 new tests covering keyword resolution, helpers, request-indexing elicitation, tool-level keyword integration, SHA-256 hashing, and bare keyword input validation.
  • New test files: test_helpers.py (27 tests), test_request_indexing.py (14 tests), test_keyword_integration.py (7 tests), plus additions to test_types.py (5 tests).
  • Total: 246 tests passing, 0 warnings.

Full Changelog: v1.1.0...v1.3.0

v1.1.0 — Request Indexing Tool & Tool Renaming

Choose a tag to compare

@albertje8118 albertje8118 released this 16 Feb 09:03

What's New

New Tool — codewiki_request_indexing

  • Submit unindexed repositories to Google CodeWiki for indexing directly from the MCP server.
  • Full Playwright automation — navigates to CodeWiki, clicks "Request repository", fills the URL dialog, and submits.
  • Automatic NOT_INDEXED detection — all tools now detect unindexed repos and return a structured error code with guidance.

Tool Renaming — codewiki_verb_noun Pattern

All tools renamed for better LLM/agent distinguishability:

Old Name New Name
list_code_wiki_topics codewiki_list_topics
read_wiki_structure codewiki_read_structure
read_wiki_contents codewiki_read_contents
search_code_wiki codewiki_search_wiki
(new) codewiki_request_indexing

Version Management

  • __init__.py now reads version from importlib.metadata at runtime (no hardcoded duplicate).
  • New scripts/bump_version.py — single command bumps pyproject.toml, all docs version badges, and the server banner year.

ASCII Startup Banner

Server prints a branded ASCII banner with version and year to stderr on startup.

Testing

  • 10 new tests for NOT_INDEXED detection and request indexing.
  • 161 total tests passing.

Full Changelog: v1.0.4...v1.1.0

v1.0.4 — Stealth layer, deadlock fix, docs overhaul

Choose a tag to compare

@albertje8118 albertje8118 released this 15 Feb 17:46

Critical Bug Fixes

  • Event-loop deadlock — _search_impl\ runs on the browser event loop; calling the sync \get_or_create_session()\ wrapper tried to submit a coroutine to the same loop and blocked, causing a 60s deadlock per attempt (~123s total). Fixed by using \�wait _get_or_create()\ / \�wait _release()\ directly.
  • Double-submit timeout — after pressing Enter the send button becomes disabled; the old _click_submit()\ then waited 30s trying to click the disabled button. New _submit_query()\ checks the button state first and only clicks as a fallback.

Browser Stealth Layer

  • New \stealth.py\ module — patches
    avigator.webdriver, \chrome.runtime, plugins, languages, WebGL vendor, permissions, and window dimensions.
  • Human-like input helpers: \human_type()\ (per-char jitter 35–120ms), \human_click()\ (mouse-move + click),
    andom_delay().
  • Stealth context options: viewport jitter, locale, timezone, Sec-CH-UA client hints, device scale factor.
  • Launch args: --disable-blink-features=AutomationControlled, --disable-infobars.
  • User-Agent updated to Chrome/132.

Documentation

  • README.md rewritten: concise, version-agnostic (overview, quick start, client setup, tools table, link to full docs).
  • Release Notes page added to nav across all 9 doc pages.
  • Architecture updated: session pool, stealth layer, anti-loop safety sections; updated diagram and project structure.
  • Configuration updated: 9 new env vars (search/parsed/topic cache, rate limiting, session pool, topic preview).

Testing

  • 22 new stealth tests; 151 total tests passing.
  • Added \ ests/diagnose_search.py\ — standalone diagnostic script for headless chat debugging.

Full Changelog: v1.0.3...v1.0.4

v1.0.3 - Dedup, Rate Limiting & Idempotency

Choose a tag to compare

@albertje8118 albertje8118 released this 15 Feb 14:56

What's Changed

Anti-Loop Protections

  • In-flight request deduplication — concurrent requests for the same repo URL share a single Playwright fetch via threading.Event barrier (dedup.py)
  • Per-repo sliding-window rate limiter — max 10 calls per 60s window per repo URL; returns RATE_LIMITED error when exceeded (rate_limit.py)
  • Topic-list dedicated cache — 30-min TTL (vs 5-min for pages) since structural topic data rarely changes

Response Intelligence

  • Content hash in ResponseMeta — MD5-12 fingerprint lets clients detect unchanged responses
  • Idempotency key in ToolResponserepo_url::content_hash composite key for client-side dedup recognition
  • Response size hints in all 4 tool docstrings — agents can plan token budgets before calling

Code Quality

  • Pylint: 9.93/10
  • Ruff: all checks passed
  • Black: fully formatted
  • Tests: 129 passed (up from 101), 0 failures

Full Changelog: v1.0.2...v1.0.3

v1.0.2 — Token Efficiency Optimizations

Choose a tag to compare

@albertje8118 albertje8118 released this 15 Feb 12:59

What's Changed

Phase 1 — Core Optimizations

  • Shared helpers module (_helpers.py) — eliminates code duplication across tool modules
  • 3-tier caching — HTML page cache + parsed WikiPage cache + search response cache (2-min TTL)
  • Topic previews — \list_code_wiki_topics\ returns titles + 200-char summaries instead of full page dump
  • Pagination
    ead_wiki_contents\ supports \offset/\limit\ parameters (default: 5 sections per call)
  • Input validation — new \ContentsInput\ Pydantic model with \�alidate_contents_input\

Phase 2 — Documentation

  • Updated tool descriptions on docs site reflecting new parameters and behaviors
  • Rewritten Agents page with token-efficient workflow guide and anti-patterns
  • Added Model Selection & Credit Optimization section (GitHub Copilot multiplier table)
  • Added comprehensive v1.0.2 release notes
  • Version badges updated across all documentation pages

Phase 3 — Session Pool

  • LRU-ordered persistent browser context pool for search sessions (avoids opening fresh browser for each query)
  • Search automatically reuses warm sessions with fallback to fresh context on failure
  • Pool cleanup integrated into server shutdown

Code Quality

  • Pylint: 9.93/10
  • Ruff: all checks passed
  • Black: fully formatted
  • Tests: 101 passed, 0 failures

Full Changelog: v1.0.1...v1.0.2

v1.0.1

Choose a tag to compare

@albertje8118 albertje8118 released this 14 Feb 17:07

Code quality: black + ruff + pylint 10/10, removed dead files, refactored parser for cleaner structure.

v1.0.0

Choose a tag to compare

@albertje8118 albertje8118 released this 14 Feb 16:44

First stable release. Playwright-based MCP server for Google CodeWiki with 4 tools, structured Graphviz diagram extraction (entities + relationships), TTL caching, graceful shutdown, 93 tests. Install: pip install codewiki-mcp

v0.3.0

Choose a tag to compare

@albertje8118 albertje8118 released this 14 Feb 16:34

Playwright-based MCP server for Google CodeWiki. 4 tools, structured Graphviz diagram extraction, TTL caching, 93 tests.