Reported issues for crosspad-mcp
Pod holds 16 of 20 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.
Back to crosspad-mcp.
Most discussed
test: add E2E tests with mock simulator and git repos
Summary
Unit tests cover parsing logic, but no E2E tests for full tool dispatch. Need mock TCP server + fake git repos for roundtrip testing.
Scope
- Mock TCP server mimicking simulator protocol
- Fake git repos with controlled state
- E2E tests for each tool/action combination
- CI integration (vitest)
🤖 Generated with Claude Code
Read the thread · 2026-04-09 · closed · 3 comments
crosspad_input click takes window coordinates while crosspad_screenshot returns LCD space
crosspad_screenshot returns LCD-space images, crosspad_input action=click takes window-space coordinates, and nothing in either tool says so. There is no way to convert between the two without reverse-engineering the window geometry, so any click derived from a screenshot is a guess.
What happens
crosspad_screenshot region=lcdreturns a 320x240 image — the coordinate space the UI code,ENC_GROUPlabels and LVGL itself use.crosspad_input action=click x=<lcd_x> y=<lcd_y>clic
Read the thread · 2026-08-29 · closed · 1 comment
feat: return MCP image content from screenshot tool
Summary
Screenshot tool returns JSON with file path or base64 string. Should return proper MCP `image` content type so Claude can visually inspect the UI.
Status: Implemented — returns `{ type: "image", data: base64, mimeType: "image/png" }` alongside text metadata. Works for both save-to-file and inline modes.
🤖 Generated with Claude Code
Read the thread · 2026-04-09 · closed · 1 comment
perf: cache app registry with TTL
Summary
Each `crosspad_apps list` call re-reads and parses registry JSON from disk. Add in-memory cache with 5-minute TTL.
Status: Implemented — `loadRegistryJsonFrom` caches by file path with 5min TTL.
🤖 Generated with Claude Code
Read the thread · 2026-04-09 · closed · 1 comment
fix: add retry logic for simulator TCP connections
Summary
`sendRemoteCommand` fails immediately on timeout. Should retry 2-3x with backoff — simulator may be in the middle of loading/rendering.
Status: Implemented — retries up to 3x with incremental backoff (500ms, 1s, 1.5s). Skips retry on ECONNREFUSED (simulator not running).
🤖 Generated with Claude Code
Read the thread · 2026-04-09 · closed · 1 comment
fix: validate Python availability before app_manager delegation
Summary
`crosspadAppInstall/Remove/Update/Sync` delegate to Python subprocess without checking if `python3` or `app_manager.py` exist. Should fail-fast with a clear error message.
Status: Implemented — checks python3 availability (cached) and script existence before spawning subprocess.
🤖 Generated with Claude Code
Read the thread · 2026-04-09 · closed · 1 comment
feat: parse build progress percentage from CMake/Ninja
Summary
CMake/Ninja outputs `[45/120]` progress markers. Parse these into structured progress data for potential UI progress bars.
Scope
- Parse `[N/M]` from build output lines
- Emit structured progress via MCP logging (percentage, current/total)
- Don't break existing raw line streaming
Priority
Low — nice UX improvement for long builds.
🤖 Generated with Claude Code
Read the thread · 2026-04-09 · closed · 1 comment
feat: scaffold auto-install option
Summary
`crosspad_code scaffold` generates boilerplate files but doesn't write them, register the app, or trigger a build. Add optional auto-install flow.
Scope
- Add `auto_install` boolean param (default false)
- When true: write files → fullclean → build → verify
- Return build result alongside scaffold output
Priority
Low — quality of life for app creation workflow.
🤖 Generated with Claude Code
Read the thread · 2026-04-09 · closed · 1 comment
Most recent
fix: read server version from package.json instead of hardcoding
Summary
`index.ts` hardcodes `version: "5.0.0"` while package.json has `"5.1.0"`. Version should be read dynamically from package.json.
Status: Implemented — using `createRequire` to read package.json at startup.
🤖 Generated with Claude Code
Read the thread · 2026-04-09 · closed · 0 comments
feat: add CI-like pipeline action to crosspad_build
Summary
Add a pipeline action that runs build → test → report in one invocation instead of 3 separate tool calls.
Scope
- New action
pipelinein crosspad_build - Sequential: build PC → run tests → collect results
- Return structured report: per-stage pass/fail, timing, error summary
- Optional: include IDF build as stage
🤖 Generated with Claude Code
Read the thread · 2026-04-09 · closed · 1 comment
feat: add MCP Resources for static project context
Summary
The server exposes only Tools, no MCP Resources. Resources would provide static context without tool invocations:
- `crosspad://architecture` — CLAUDE.md + architecture overview
- `crosspad://registry` — current app-registry.json
- `crosspad://interfaces` — crosspad-core interface list
- `crosspad://hardware` — hardware quick reference
Scope
- Register resources via MCP SDK `server.resource()`
- Read from filesystem on demand (CLAUDE.md files, registry.json)
- Consider
Read the thread · 2026-04-09 · closed · 1 comment
feat: add context_lines option to crosspad_code search
Summary
Symbol search returns single matching lines via git grep. Add context_lines parameter (like grep -C) to show surrounding code.
Scope
- Add optional
context_linesparam (default 0, max ~10) - Pass
-C Nto git grep - Adjust result parsing to handle context blocks
🤖 Generated with Claude Code
Read the thread · 2026-04-09 · closed · 1 comment
feat: add platform param to crosspad_test for future IDF tests
Summary
Tests are PC-only (Catch2). Prepare for IDF unit tests (Unity framework) by adding platform parameter.
Scope
- Add optional
platformenum (pc/idf) defaulting to pc - Current behavior unchanged for pc
- Stub for idf: return "not yet supported" or detect unity test runner
Priority
Low — future-proofing for when IDF tests exist.
🤖 Generated with Claude Code
Read the thread · 2026-04-09 · closed · 1 comment
feat: detect unregistered apps in pc build-check
Summary
idf-build.ts detects new app directories requiring fullclean, but build-check.ts (PC) doesn't. Should check src/app/*/ for new directories vs last build.
Scope
- In
build-check.ts, scan for app directories not present in last CMake configure - Flag in health check result:
newApps: ["app_name"] - Suggest
reconfiguremode when detected
🤖 Generated with Claude Code
Read the thread · 2026-04-09 · closed · 1 comment
feat: integrate crosspad-docs context generation
Summary
Add docs action to crosspad_code for accessing aggregated documentation from crosspad-docs repo.
Scope
- Read/generate CROSSPAD_CONTEXT.md from crosspad-docs
- Optionally trigger sync/aggregate/build pipeline
- Return documentation sections on demand
Priority
Low — useful for giving Claude full project context without reading each repo.
🤖 Generated with Claude Code
Read the thread · 2026-04-09 · closed · 1 comment
feat: add submodule_update action to crosspad_repo
Summary
Updating submodules (crosspad-core, crosspad-gui) across repos requires manual git commands. Add submodule_update action.
Scope
crosspad_repo action=submodule_update submodule=crosspad-core repo=idf- Runs:
cd <submodule_path> && git fetch origin && git checkout origin/main - Then:
cd <parent_repo> && git add <submodule_path> - Report: old SHA → new SHA, files changed
Acceptance
- Updates pinned submodule ref to latest main
- Works across all platform repos (idf, pc,
Read the thread · 2026-04-09 · closed · 1 comment
The remaining reports are on the project's issue tracker.