https://github.com/qiaolei81/copilot-session-viewer
π Web UI for GitHub Copilot session logs - visualize events, analyze timelines, get AI insights
https://github.com/qiaolei81/copilot-session-viewer
ai-tools copilot developer-tools express github-copilot log-viewer nodejs session-viewer visualization vue
Last synced: 3 months ago
JSON representation
π Web UI for GitHub Copilot session logs - visualize events, analyze timelines, get AI insights
- Host: GitHub
- URL: https://github.com/qiaolei81/copilot-session-viewer
- Owner: qiaolei81
- License: mit
- Created: 2026-02-15T10:04:40.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-03-05T04:45:18.000Z (3 months ago)
- Last Synced: 2026-03-05T06:47:36.098Z (3 months ago)
- Topics: ai-tools, copilot, developer-tools, express, github-copilot, log-viewer, nodejs, session-viewer, visualization, vue
- Language: JavaScript
- Size: 1.42 MB
- Stars: 1
- Watchers: 0
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
- Agents: AGENTS.md
Awesome Lists containing this project
README
# π€ Copilot Session Viewer
[](https://www.npmjs.com/package/@qiaolei81/copilot-session-viewer)
[](https://github.com/qiaolei81/copilot-session-viewer/actions/workflows/ci.yml)
[](https://opensource.org/licenses/MIT)
[](https://nodejs.org/)
**Multi-Tool Session Log Viewer & Analyzer**
View and analyze AI coding assistant sessions from **GitHub Copilot CLI**, **Copilot Chat (VSCode)**, **Claude Code CLI**, and **Pi-Mono** with time analysis, virtual scrolling, and AI-powered insights.
A modern web-based viewer for analyzing AI coding assistant session logs with virtual scrolling, infinite loading, time analysis, and AI-powered insights. Supports **GitHub Copilot CLI**, **Copilot Chat (VSCode)**, **Claude Code CLI**, and **Pi-Mono** sessions.
### Session List

### Session Detail β Event Stream with Virtual Scrolling

### Time Analysis β Gantt Timeline & Sub-Agent Breakdown

---
## β‘ Quick Start
### Try without installing (recommended)
```bash
npx -y @qiaolei81/copilot-session-viewer@latest
```
Then open http://localhost:3838
### Install globally
```bash
npm install -g @qiaolei81/copilot-session-viewer
copilot-session-viewer
```
### Requirements
- Node.js β₯ 18.0.0
- At least one AI coding assistant (optional for generating sessions):
- [GitHub Copilot CLI](https://github.com/cli/cli) (recommended)
- [Claude Code CLI](https://github.com/anthropics/claude-code)
- [Pi-Mono](https://github.com/badlogic/pi-mono)
---
## β¨ Features
### π― **Core Capabilities**
- **π Session Management** - View, export, and import session archives
- **π Event Analysis** - Real-time log parsing with filtering and search
- **β±οΈ Time Analysis** - Execution timelines and performance metrics
- **π Virtual Scrolling** - Handle 1000+ events smoothly
- **βΎοΈ Infinite Scroll** - Progressive session loading for better performance
- **π€ AI Insights** - LLM-powered session analysis
- **π Multi-Format Support** - Copilot CLI, Copilot Chat (VSCode), Claude Code, and Pi-Mono sessions
### π¨ **User Experience**
- **π Dark Theme** - GitHub-inspired interface
- **π± Responsive** - Works on desktop, tablet, and mobile
- **β‘ Fast** - Optimized virtual rendering and lazy loading
- **π Secure** - Local-first with no data sharing, XSS protection, ZIP bomb defense
### π οΈ **Technical Features**
- **Vue 3** - Reactive virtual scrolling
- **Express.js** - Robust backend API
- **ZIP Import/Export** - Session sharing capabilities with security validation
- **Multi-Source Support** - Copilot CLI (`~/.copilot/session-state/`), Copilot Chat (`~/Library/Application Support/Code/User/workspaceStorage/`), Claude (`~/.claude/projects/`), Pi-Mono (`~/.pi/agent/sessions/`)
- **Unified Event Format** - Consistent schema across all sources
- **Memory Pagination** - Efficient handling of large sessions
- **XSS Protection** - DOMPurify-based HTML sanitization
- **ZIP Bomb Defense** - 4-layer protection (compressed size, uncompressed size, file count, depth)
---
## π How It Works
1. **Generate Sessions** - Use GitHub Copilot CLI, Claude Code CLI, or Pi-Mono to create session logs
2. **Auto-Discovery** - Sessions are automatically detected from:
- Copilot CLI: `~/.copilot/session-state/`
- Copilot Chat: `~/Library/Application Support/Code/User/workspaceStorage/`
- Claude: `~/.claude/projects/`
- Pi-Mono: `~/.pi/agent/sessions/`
3. **Browse & Analyze** - View sessions with infinite scroll and detailed event streams
4. **Time Analysis** - Analyze turn durations, tool usage, and sub-agent performance
5. **AI Insights** - Generate comprehensive session analysis with Copilot
```bash
# Example: Generate sessions with different tools
# GitHub Copilot CLI
copilot --model claude-sonnet-4.5 -p "Help me refactor this code"
# Claude Code CLI
claude -p "Implement user authentication"
# Pi-Mono CLI
pi -p "Create a REST API endpoint"
# Start the viewer
npx @qiaolei81/copilot-session-viewer
# Browse all sessions at http://localhost:3838
```
---
## π Documentation
- **[Installation Guide](docs/INSTALLATION.md)** - Detailed setup instructions
- **[API Documentation](docs/API.md)** - REST endpoints and responses
- **[Development Guide](docs/DEVELOPMENT.md)** - Contributing and local development
- **[Troubleshooting](docs/TROUBLESHOOTING.md)** - Common issues and solutions
- **[Changelog](CHANGELOG.md)** - Release history
---
## π§ͺ Testing & Quality
This project includes comprehensive unit and E2E test coverage with CI/CD integration.
### Test Coverage
- **700+ Tests** (622 unit + 80 E2E)
- **Unified Format Tests** - Mock data validation for all sources (Copilot CLI, Copilot Chat, Claude, Pi-Mono)
- **Security Tests** - XSS prevention, ZIP bomb defense
- **Integration Tests** - Session import/export, file operations
- **CI-Friendly** - Mock data generation for reproducible tests
### Running Tests
```bash
# Unit tests only
npm test
# Unit tests with coverage
npm run test:coverage
# E2E tests only
npm run test:e2e
# Lint check
npm run lint:check
# Run all tests (unit + E2E)
npm run test:all
```
### CI/CD Pipeline
GitHub Actions workflow includes:
1. **Linting** - ESLint code quality checks
2. **Unit Tests** - 622 Jest tests with coverage
3. **Mock Data Generation** - Reproducible test session fixtures
4. **E2E Tests** - 80 Playwright tests with Chromium
5. **Artifact Upload** - Test results on failure
**Test Data Strategy:**
- β
CI uses generated mock data (fast, reliable, no external dependencies)
- β
Local development can use real sessions for integration testing
- β
Fixtures cover all event formats (Copilot CLI, Copilot Chat, Claude, Pi-Mono)
---
## ποΈ Architecture
```
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Frontend (Vue 3 + EJS Templates) β
β β’ Virtual Scroller (vue-virtual-scroller) β
β β’ Infinite Scroll (JavaScript) β
β β’ GitHub-inspired Dark Theme β
β β’ XSS Protection (DOMPurify) β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β HTTP/API
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Backend (Node.js + Express) β
β β’ Multi-Source Session Repository β
β β’ Unified Event Format Normalizer β
β β’ JSONL Streaming Parser β
β β’ Paginated API Endpoints β
β β’ ZIP Import/Export with Security Validation β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β File System
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Data Layer (Multi-Source) β
β β’ Copilot CLI: ~/.copilot/session-state/ β
β β’ Copilot Chat: ~/Library/.../workspaceStorage/ β
β β’ Claude: ~/.claude/projects/ β
β β’ Pi-Mono: ~/.pi/agent/sessions/ β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
```
### Unified Event Format
All session sources are normalized to a consistent schema:
```javascript
{
type: 'assistant.message',
timestamp: '2026-02-23T00:00:00.000Z',
data: {
message: 'Response text',
tools: [
{
id: 'tool-001',
name: 'read',
startTime: '2026-02-23T00:00:01.000Z',
endTime: '2026-02-23T00:00:02.000Z',
status: 'completed',
input: { path: 'file.js' },
result: { content: '...' },
error: null,
metadata: {
source: 'copilot', // or 'claude', 'pi-mono'
duration: 1000
}
}
]
}
}
```
**Benefits:**
- β
Consistent UI rendering across all sources
- β
Simplified frontend logic
- β
Easy to add new sources
---
## π Security
### XSS Protection
- **DOMPurify Sanitization** - All user-generated content is sanitized before rendering
- **Whitelist-based** - Only safe HTML tags and attributes are allowed
- **JavaScript URL Protection** - Blocks `javascript:`, `data:`, and `onclick` handlers
- **Tested** - Comprehensive E2E tests for XSS attack vectors
### ZIP Bomb Defense
4-layer protection against malicious archives:
1. **Compressed Size Limit** - 50 MB max upload
2. **Uncompressed Size Limit** - 200 MB max expansion
3. **File Count Limit** - 1000 files max
4. **Directory Depth Limit** - 5 levels max
### Local-First Design
- No external API calls for session data
- All processing happens locally
- Optional AI insights require user action
- No telemetry or tracking
---
## π― Use Cases
### **For Developers**
- Debug GitHub Copilot CLI sessions
- Analyze conversation patterns and tool usage
- Export sessions for team collaboration
- Performance optimization insights
### **For Teams**
- Share interesting Copilot sessions
- Analyze team AI usage patterns
- Document complex problem-solving sessions
- Training and best practice development
### **For Researchers**
- Study human-AI interaction patterns
- Analyze tool usage effectiveness
- Session data mining and analysis
- AI conversation flow research
---
## π€ Contributing
This project welcomes contributions! See our [Development Guide](docs/DEVELOPMENT.md) for:
- Setting up the development environment
- Code style guidelines
- Testing procedures
- Contribution workflow
---
## π License
MIT License - see [LICENSE](LICENSE) file for details
---
## π Acknowledgments
**Built with AI assistance** - This project was developed using GitHub Copilot and Claude AI for code generation, documentation, and architectural decisions.
**Key Dependencies:**
- [Vue 3](https://vuejs.org/) - Reactive frontend framework
- [vue-virtual-scroller](https://github.com/Akryum/vue-virtual-scroller) - High-performance virtual scrolling
- [Express.js](https://expressjs.com/) - Web application framework
- [EJS](https://ejs.co/) - Templating engine
- [DOMPurify](https://github.com/cure53/DOMPurify) - XSS protection
- [Playwright](https://playwright.dev/) - E2E testing
**Recent Updates (v0.3.0):**
- β¨ VSCode Copilot Chat support (4th source)
- π·οΈ Session tagging system
- π Multi-tool branding (Copilot CLI, Copilot Chat, Claude Code, Pi-Mono)
- π XSS protection with DOMPurify
- π‘οΈ ZIP bomb defense (4-layer validation)
- π§ͺ 700+ tests with CI/CD integration
- π Comprehensive documentation
---
**[π Homepage](https://github.com/qiaolei81/copilot-session-viewer)** β’
**[π Docs](docs/)** β’
**[π Issues](https://github.com/qiaolei81/copilot-session-viewer/issues)** β’
**[π¬ Discussions](https://github.com/qiaolei81/copilot-session-viewer/discussions)**
Made with β€οΈ for the GitHub Copilot CLI community