Release Notes
Changelog and release notes for CodeWiki MCP.
Latest Releases
v1.3.0 — 2026-02-17
- 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.
- 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.
v1.2.0 — 2026-02-17
- Bare keyword resolution —
resolver.py:
- All tools now accept bare keywords (e.g.
"vue", "react") in addition to full URLs and owner/repo shorthand.
- Resolution pipeline: CodeWiki search scraping → GitHub API fallback → MCP Elicitation for disambiguation → heuristic top-pick.
- New module
codewiki_mcp/resolver.py encapsulates the entire resolution flow.
- MCP Elicitation protocol:
- When multiple repositories match a keyword, the server uses the MCP Elicitation protocol to interactively ask the user to pick the right one.
- Requires an MCP client that supports elicitation (e.g. Claude Desktop, VS Code Copilot with MCP support).
- Resolution notes in responses:
- When a bare keyword is resolved, every response is prefixed with a note like:
> Resolved: keyword "vue" → vuejs/vue (209.9k★)
ctx parameter on all tools:
- All 5 tools now accept an optional
ctx: Context parameter for MCP Elicitation support. Backward-compatible — omitting ctx disables elicitation and uses heuristic resolution.
- SHA-256 content hash:
- Content hash algorithm upgraded from MD5 to SHA-256 (16-char hex prefix) for stronger deduplication fingerprints.
- Testing:
- New
test_resolver.py with full coverage of the resolution pipeline. Total: 193 tests passing.
v1.1.0 — 2026-02-16
- New tool —
codewiki_request_indexing:
- Submit unindexed repositories to Google CodeWiki for indexing directly from the MCP server.
- Full Playwright automation — navigates to the CodeWiki search page, clicks "Request repository", fills the URL dialog, and submits.
- Automatic
NOT_INDEXED detection — all tools now detect unindexed repos and return a structured NOT_INDEXED error code with guidance to call codewiki_request_indexing.
- Tool renaming —
codewiki_verb_noun pattern:
- All tools renamed for better LLM/agent distinguishability:
codewiki_list_topics, codewiki_read_structure, codewiki_read_contents, codewiki_search_wiki, codewiki_request_indexing.
- Updated all agent instructions, skill definitions, README, and documentation.
- Version management:
__init__.py now reads version from importlib.metadata at runtime — no more 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 now prints a branded ASCII banner with version and year to stderr on startup.
- Testing:
- 10 new tests for NOT_INDEXED detection and request indexing tool. Total: 161 tests passing.
v1.0.4 — 2026-02-16
- 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 60 s deadlock per attempt (~123 s total). Fixed by using await _get_or_create() / await _release() directly.
- Double-submit timeout — after pressing Enter the send button becomes disabled; the old
_click_submit() then waited 30 s 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 navigator.webdriver, chrome.runtime, plugins, languages, WebGL vendor, permissions, and window dimensions.
- Human-like input helpers:
human_type() (per-character jitter 35–120 ms), human_click() (mouse-move + click), random_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.
- Testing & diagnostics:
- 22 new stealth tests; 151 total tests passing.
- Added
tests/diagnose_search.py — standalone diagnostic script for headless chat debugging.
v1.0.3 — 2026-02-16
- Anti-loop / agent-safety optimizations:
- In-flight deduplication — concurrent identical tool calls are collapsed into one, preventing duplicate work.
- Rate limiting — max 10 calls per 60 s per repository URL; returns a clear
RATE_LIMITED error when exceeded.
- Content hash — every response includes a short hash so agents can detect duplicate content without re-reading.
- Topic cache —
codewiki_list_topics results are cached for 5 min with a size_hint field to guide agents.
- Idempotency key —
repo_url::content_hash key in every response for agent-level dedup.
- Testing:
- 28 new tests for dedup, rate limiting, content hash, topic cache, and idempotency. Total: 129 tests passing.
v1.0.2 — 2026-02-16
- Token efficiency optimizations:
codewiki_list_topics now returns titles + 200-char previews instead of dumping the full page (~80% fewer tokens).
codewiki_read_contents supports pagination via offset and limit parameters — read only what you need.
- Search responses are cached for 2 minutes — repeated identical queries return instantly.
- Parsed
WikiPage objects are cached in memory — avoids re-parsing the same HTML on repeated tool calls.
- Word-boundary-aware truncation prevents mid-word content cuts.
- Code quality improvements:
- New shared
tools/_helpers.py module eliminates duplicated error handling and URL construction across all tools.
- Added
ContentsInput Pydantic model with pagination parameters.
- Updated tool descriptions to guide agents toward the most efficient workflow.
- Documentation:
- Updated Agentic AI Guide with token-efficient workflow recommendations.
- Added model selection & GitHub Copilot credit optimization guide.
- Updated Tools Reference with new pagination parameters and caching behavior.
- Testing:
- Added tests for parsed cache, search cache, and pagination. Total: 101 tests passing.
v1.0.1 — 2026-02-15
- Documentation updates and site polish:
- Added Agentic AI Guide and `Skills & Client Setup` guide.
- Added GitHub Copilot CLI installation and MCP integration section.
- Added favicon (SVG + PNG + ICO) and updated docs head metadata.
- Fixed Mermaid diagram syntax in architecture and tools pages.
- Published site to GitHub Pages and updated README link.
- Minor repo cleanup and formatting:
- Removed unused `server.py` and applied code style fixes (Black, Ruff, Pylint).
- Small UI tweak: removed duplicate hero SVG (logo remains in sidebar).
v1.0.0 — 2026-02-14
- Stable release with core features:
- Playwright-based headless rendering for Google CodeWiki pages.
- Diagram extraction (Mermaid, Graphviz, inline SVG parsing).
- Four MCP tools: topics overview, structure JSON TOC, full/section content, interactive chat Q&A.
- Release infra:
- PyPI packaging and a GitHub Actions workflow for trusted publishing.
- Dockerfile updated to install from PyPI and include Playwright dependencies.
v0.3.0 — initial
- Initial development baseline and repository import.