pain-labs/edo-tensei
v1.9.1MIT
Recover relevant local AI coding sessions and produce a concise cross-IDE handoff on Windows.
Change Log
All notable changes to the "Edo Tensei" extension will be documented in this file.
[1.9.1] - Skill-only Agent Plugin (pre-release) - 2026-08-28
- feat(agent-plugin): add an Agent Plugins 1.0 manifest for Skill-only installation on Windows
- feat(skill): prioritize exact workspace paths and add a read-only Git common-directory fallback for linked worktrees (#94)
- fix(windsurf): document both Windows session locations and require resolved absolute paths for binary handoffs
- docs: add the cross-ecosystem distribution strategy, acceptance matrix, and clean-source installation guide
- test: validate manifest portability, packaged references, deterministic stop rules, linked-worktree guidance, and Windsurf paths
- scope: keep MCP packaging deferred to #92 and #93; this release does not add
mcp.json
[1.9.0] - Robustness Fixes (pre-release) - 2026-08-19
- fix(mcp-server): guard
get_mcp_configagainst missing arguments (#66) - fix(mcp-server): reject non-date strings and normalize single-digit month/day in
searchSessionstime filter (#76) - fix(McpConfigPanel): stop accumulating duplicate webview message listeners (#70)
- fix(extension): dispose
QuickPickinstances on hide to prevent leak (#74) - fix(TimeFilter): parse single-digit month/day date strings (#64)
- fix(I18n): escape
$ingetMessagesubstitutions (#65) - fix(i18n): correct invalid JSON in zh-cn nls file (#62)
- fix(ClaudeExtractor): guard against non-iterable
message.content(#71) - fix(CoworkExtractor): guard against null/undefined entries in content array (#67)
- fix(CursorExtractor): guard against malformed
message.contentshapes (#72) - fix(KiroExtractor): skip null history entries instead of crashing whole parse (#73)
- fix(TraeExtractor): flush trailing printable string run at end of buffer (#75)
- chore(deps): bump
postcss(#61) - ci: gate version-bump check behind
release-readylabel (#63) - test(mcp-server): add unit test infra and cover #66/#76 fixes (#78)
- docs: add current, accurate automated testing reference (#77)
[1.8.0] - Stable Release: Claude Compact Summary, Cowork MSIX Scan Path & Maintenance - 2026-08-19
Promotes the [1.7.0]β[1.7.2] pre-release content to stable unchanged β no new code in this release.
- fix(ClaudeExtractor): handle
message.contentas a plain string (#55, fixes #42) - fix(CoworkExtractor): scan MSIX-packaged Claude Desktop's redirected AppData on Windows (#59)
- chore(deps): bump the
npm_and_yarndependency group across 1 directory with 3 updates (#58)
[1.7.2] - Maintenance (pre-release) - 2026-07-26
π§ Maintenance
- chore(deps): bump the
npm_and_yarndependency group across 1 directory with 3 updates (#58)
[1.7.1] - Cowork MSIX Scan Path Fix (pre-release) - 2026-07-24
π Bug Fix
- fix(CoworkExtractor): scan MSIX-packaged Claude Desktop's redirected AppData on Windows (#59) β Claude Desktop installed via the Microsoft Store runs in an AppContainer, so Windows redirects its
%APPDATA%writes to%LOCALAPPDATA%\Packages\Claude_<publisherId>\LocalCache\Roaming\Claude\...instead of the real%APPDATA%\Claude.CoworkExtractoronly checked the latter, so Cowork sessions were invisible on any MSIX install even with real data present.
[1.7.0] - Claude Compact Summary Fix (pre-release) - 2026-07-23
π Bug Fix
- fix(ClaudeExtractor): handle
message.contentas a plain string (#55, fixes #42) β Claude Code injects the auto-generated post-/compactcontinuation summary as a plain string rather than the usual content-block array, and the extractor's array-iteration loop was silently dropping it. Every session that had gone through/compactlost this bridging summary message.
[1.6.2] - Antigravity Multi-Path & JSONL Support - 2026-06-23
π Feature
- Antigravity Multi-Path Detection: Automatically scans multiple
.gemini/antigravity*data directories under home directory (such asantigravity-ideor backup profiles) dynamically. - Antigravity JSONL Support: Added support for new
transcript.jsonlpreview format alongside legacyoverview.txtlogs.
[1.6.1] - Multi-Workspace Skill Selection - 2026-06-18
π Bug Fix
- Agent Skill workspace picker (closes #44): when multiple workspace folders are open, a QuickPick now lets the user choose which project to generate the skill into, instead of always defaulting to the first one
.gitignorerule insertion now anchors to the selected project root instead of the resolved export workspace folder
[1.5.0] - Session Search & Save Fix - 2026-06-03
π Session Keyword Search (closes #34)
- Added Search Sessions button (
$(search)) to the sidebar toolbar - Opens a QuickPick that filters sessions live by title, workspace path, or IDE as you type
- Powered by the existing
SessionSearchEngine; searches title + workspace by default (message-content search available via MCP) - Shows up to 30 results ranked by relevance; selecting a result opens the parsed session view
π Bug Fix
- Untitled document EPERM on save:
viewParsedSessionnow anchors the untitled preview document to the workspace folder path, so the save dialog defaults to a writable location instead of triggering an EPERM error when VS Code attempted to write to a system path
π Documentation
- Added
npx skills add Pain-Labs/Edo-Tenseiinstall instruction to README Agent Skills section
[1.3.0] - Agent Skill & Session Docs - 2026-05-24
π§ Agent Skill (npx skills add)
- Added
skills/edo-tensei/SKILL.mdas SSOT fornpx skills add Pain-Labs/Edo-Tensei - Skill-first architecture: works in any environment with file system access β no VS Code or MCP required
- MCP tools listed as optional enhancement at the bottom of the skill
π Session Documentation
- Migrated
docs/skills/session-*.mdβskills/edo-tensei/session-*.md(downloadable via npx alongside SKILL.md) - Added
session-trae.mddocumenting SQLite-based Trae storage (currently unsupported, fallback message provided) - Corrected Cursor path:
workspaceStorage/{hash}/agent-transcripts/β~/.cursor/projects/{slug}/agent-transcripts/ - Corrected Codex type names:
session_meta+response_item(previously documented incorrectly asmessage/user_message) - Documented Kiro Format B (
workspace-sessions/{Base64URL(path)}/{uuid}.jsonwithworkspaceDirectoryfield) - Documented Copilot new JSONL format (kind=0 empty header + kind=2 cumulative append mode for requests and responses)
- Documented Antigravity
USER_EXPLICITsource type and<USER_REQUEST>tag extraction
π§ Internal
- Refactored
SkillGenerator.ts: replaced 276-line hardcoded template with a direct read ofskills/edo-tensei/SKILL.md; button-generated skill is now always in sync with the canonical SKILL.md and copies allsession-*.mdfiles alongside it
[1.2.0] - Per-IDE Scanning, Pagination & UX Polish - 2026-05-20
β‘ Per-IDE On-Demand Scanning & Pagination
- Per-IDE on-demand scanning: Each IDE in the sidebar is now scanned independently when you first expand it, instead of triggering a global scan-all. The tree loads instantly and only the IDE you care about performs disk I/O.
- Pagination: Sessions are displayed in pages of up to 300. A "Load More" button appears at the bottom of any IDE that has additional sessions, preventing the tree from becoming unresponsive on machines with thousands of sessions.
- IO concurrency throttle: Extractor scan concurrency is capped at 2 simultaneous IDE scans, preventing file system saturation on machines with slow or network-backed storage.
π¨ Tooltip & Handoff Prompt Improvements
- Richer session tooltips: Hovering over a session now shows a formatted Markdown tooltip including the workspace path, project name, IDE, timestamp, message count, and estimated token count. Counts are updated precisely when messages are lazily loaded on hover.
- Workspace path in transcript header: The readable transcript generated for handoff prompts now includes the workspace path on the second line, giving the receiving AI clearer context about which project the session belongs to.
π§ UX Adjustments
- Export All Sessions per IDE: The "Export All Sessions" button has moved from the panel toolbar to each IDE item's inline action row, so you export only the sessions for that specific IDE instead of all IDEs at once.
π Bug Fixes
- Antigravity session titles: Sessions whose user messages were wrapped in
<USER_REQUEST>XML tags (all sessions since Antigravity's 2026-04-22 format change) now display clean titles instead of showing the raw tag text.
π§ͺ Test Infrastructure
- Added
vscode-extension-testerE2E test infrastructure (npm run test:ui) with a sidebar smoke test that verifies the activity bar button, section name, and all expected IDE tree items. - Added unit tests for
ClaudeExtractor(JSONL parsing, cwd extraction, slug resolution),CursorExtractor(path-to-slug), andKiroExtractor(both legacy.chatand newworkspace-sessionsJSON formats, Base64URL path decoding). - Added regression tests for
SessionHandoffService.buildReadableTranscriptandSessionHandoffProvidertooltip/tree behaviour. - Added
packageJsonconfig tests to guard toolbar and inline button placement against accidental changes. - Added
test:unitandtest:uiscripts topackage.jsonfor targeted test runs.
[1.1.2] - Codex Sanitization & Test Coverage - 2026-05-16
Security
- Hardened Codex session parsing so injected scaffolding such as
<environment_context>,<permissions instructions>,<collaboration_mode>,<skills_instructions>, and AGENTS.md instruction blocks are filtered without using broad multi-character tag-stripping sanitizers. - Preserved real user prompts when Codex-injected scaffolding is followed by actual user content, preventing over-filtering during session handoff.
- Kept angle-bracket title sanitization from reconstructing malformed tag payloads.
Tests and CI
- Added focused Vitest coverage for Codex injected-message filtering, rollout parsing, workspace filtering, fallback extraction behavior, and filesystem discovery edge cases.
- Added core unit tests for
PathInference,SessionSearchEngine, andTimeFilter. - Added
npm run test:coverageusing@vitest/coverage-v8and configured coverage thresholds for the tested core files. - Updated PR validation to run tests with coverage before packaging the extension.
[1.0.6] - Bug Fix & Performance - 2026-05-09
Copilot Chat β Critical Bug Fixes
- Session not found fix: Resolved a parsing bug where Copilot JSONL sessions in the new incremental-patch format were silently skipped. The root cause was the
["requests"]key being stored as a JSON array instead of a plain string β the extractor only matched the string form, so all new-format sessions went undetected in both project scan and scan-all. - JSONC workspace fix: Fixed a crash when resolving
.code-workspacefiles that contain//line comments (standard VS Code JSONC).JSON.parsewould throw; extractor now strips comments before parsing, so multi-root workspaces are correctly resolved. - Incomplete message export fix: Fixed message content being truncated or missing. New-format JSONL uses append-mode β each
["requests"]block adds exactly one request; extractor was incorrectly treating each block as a full replacement. Now correctly accumulates all blocks and applies response patches to reconstruct the full conversation. - Wrong project attribution fix: In multi-root workspaces, sessions were being attributed to the wrong project (last folder wins). Changed merge strategy to first-wins so each session appears under the correct root.
Performance
- Break-early prescan: For new-format JSONL sessions, prescan now stops reading as soon as the session ID and first user message are found (typically within the first 5 lines), avoiding unnecessary I/O on large session files (some exceed 100 MB).
- Bounded scan concurrency:
extractAllnow processes workspace storage entries in batches of 8 instead of all at once, reducing peak concurrent file operations from ~1600 to ~160.
Tests
- Added 12 unit tests for
CopilotExtractorcovering all three JSONL format generations, prescan, full-load, scan-all, and project-scoped filtering (including multi-root.code-workspaceresolution).
[1.0.4] - Feature - 2026-05-08
- Model Context Protocol (MCP) Server (Beta): Introduced a built-in MCP server that enables AI agents (Cursor, Copilot, Claude, Kiro, Antigravity) to programmatically discover, read, and export Edo Tensei sessions.
- MCP Config Panel (Beta): Added a new "Edo Tensei: Show MCP Config" command and UI panel to provide one-click configuration snippets tailored for specific AI clients and workspace settings.
- Core Search Engine Upgrade: Refactored session scanning logic into a standalone
SessionSearchEnginewith advancedTimeFilterandPathInferencecapabilities to support robust MCP queries. - Extractor Enhancements: Improved parsing logic for
AntigravityandKiroto handle edge cases and log anomalies more effectively. - i18n Translations: Updated localizations across five languages to cover the new MCP interface and commands.
[1.0.3] - Enhancement - 2026-05-04
- Multi-Root Workspace Support:
Scan Sessions (Project)now scans and merges sessions across all workspace folders (not just the first root). - Copilot Multi-Root Fix: Improved Copilot
workspaceStoragematching for multi-root workspaces by resolving.code-workspacefolder entries and using them for early filtering. - Kiro Legacy Session Deduplication: Deduplicated legacy Kiro
*.chatsessions byexecutionIdto prevent graph fragments from appearing as separate sessions. - Scan UX Improvements: Tree view now shows per-IDE scan status and found counts (e.g.
scanning/done/error β’ N) during scans, and final results are sorted newest-first.
[1.0.1] - Enhancement - 2026-05-02
- Agent Skill Generator: Added
Generate Agent Skillto emitedo-tenseiskill/rule files for Claude Code, GitHub Copilot, Kiro, Antigravity, Cline, Gemini CLI, and Cursor. - Skill SOP Upgrade: Reworked the generated
edo-tenseiskill/rule content into a clearer SOP with search order, selective-reading rules, and halt/fallback guidance. - Documentation: Added README coverage for generated agent skills so the feature is visible in the product docs.
- Skill-Aware Handoff Prompts: When an
edo-tenseiskill/rule is present, path-mode handoff prompts now include both the skill invocation shortcut and a manual file-read fallback. - Kiro Session Cleanup: Improved legacy Kiro
.chatparsing and title extraction so system wrappers, rule injections, and boilerplate are less likely to pollute visible session titles. - Bug Fixes: Fixed various edge cases in session parsing and title generation across supported IDEs.
- Maintenance: Updated
.vscodeignoreto exclude redundant documentation, design drafts, and internal scripts from the production package.
[1.0.0] - Initial Release - 2026-04-30
- Core Extraction: Extracted the Edo Tensei (Session Handoff) system into a standalone VS Code extension.
- Multi-IDE Support: Added extraction support for Claude Code CLI, Windsurf, Cursor, Copilot Chat, Kiro, and Antigravity.
- Intelligent Title Generation: Automatically parses chat logs to extract meaningful user intent rather than noise/XML tags.
- Hierarchical View: Organizes history by
IDEβProjectβSessionfor better context management. - Resurrect Session: One-click resurrection formatting to seamlessly pass context to a new AI agent session.