Editor Activity Recorder

A powerful VS Code extension that records editor activity including file opens, cursor movements, and function scope changes for meeting analysis, productivity insights, and development workflow optimization.
🚀 Motivation
Why did we create this extension?
As developers, we often find ourselves in situations where we need to:
- Document coding sessions during pair programming or mentoring
- Analyze productivity patterns to understand where time is spent
- Prepare meeting summaries with detailed activity logs
- Track project development timeline and file interaction patterns
- Create learning materials by capturing coding workflows
- Generate reports for project managers or stakeholders
Traditional screen recording tools are heavy, lack context about code structure, and don't provide exportable data. Existing productivity trackers don't capture the granular editor interactions that matter for development analysis.
Editor Activity Recorder bridges this gap by providing:
- ✅ Lightweight tracking without performance impact
- ✅ Structured data export in multiple formats (JSON, CSV, Markdown)
- ✅ Code-aware insights including function/class scope tracking
- ✅ Privacy-focused - all data stays local to your machine
- ✅ Flexible analysis - export data for custom reporting tools
- ✅ Meeting-ready reports - automatic markdown summaries
Whether you're a solo developer tracking your productivity, a team lead preparing sprint reviews, or an educator creating coding tutorials, this extension provides the insights you need without the overhead.
✨ Features
- Real-time Activity Tracking: Records cursor movements, file operations, and code navigation
- Multiple Export Formats: Export sessions as JSON, CSV, or Markdown
- Smart Storage Management: Configurable storage location with automatic file rotation
- Compression Support: Automatic compression for large session files
- Session Statistics: Detailed analytics of your coding sessions
- Auto-export: Automatically export sessions when recording stops
- Recording Panel: Visual interface to manage recordings and view session data
Installation
From VS Code Marketplace
- Open VS Code
- Go to Extensions view (
Ctrl+Shift+X
or Cmd+Shift+X
)
- Search for "Editor Activity Recorder"
- Click Install
Manual Installation
- Download the
.vsix
file from the releases page
- Open VS Code
- Run
Extensions: Install from VSIX...
from Command Palette
- Select the downloaded
.vsix
file
Quick Start
- Start Recording: Press
Ctrl+Shift+S
(Cmd+Shift+S
on Mac) or use Command Palette → "Start Recording"
- Work Normally: The extension will silently track your editor activity
- Stop Recording: Press
Ctrl+Shift+E
(Cmd+Shift+E
on Mac) or use Command Palette → "Stop Recording"
- View Results: Recordings are automatically exported to
.vscode-recordings
folder in your workspace
Configuration
The extension comes pre-configured with sensible defaults but can be customized to fit your workflow.
Default Settings
{
"editorRecord.storageLocation": ".vscode-recordings",
"editorRecord.debounceDelay": 500,
"editorRecord.defaultExportFormat": "json",
"editorRecord.autoExportOnStop": true
}
Key Configuration Options
Setting |
Default |
Description |
editorRecord.storageLocation |
.vscode-recordings |
Storage location relative to workspace root |
editorRecord.debounceDelay |
500 |
Debounce delay in milliseconds for cursor movement events |
editorRecord.defaultExportFormat |
json |
Default export format (json, csv, markdown) |
editorRecord.autoExportOnStop |
true |
Automatically export session when recording stops |
editorRecord.maxEventsPerSession |
10000 |
Maximum number of events per recording session |
editorRecord.maxFileSizeMB |
50 |
Maximum file size in MB before rotation |
Commands
Command |
Keybinding |
Description |
Start Recording |
Ctrl+Shift+S (Cmd+Shift+S ) |
Begin recording editor activity |
Stop Recording |
Ctrl+Shift+E (Cmd+Shift+E ) |
End recording and export session |
Toggle Recording |
Ctrl+Shift+R (Cmd+Shift+R ) |
Toggle recording state |
Show Recording Panel |
- |
Open the recording management panel |
Export Session |
- |
Manually export current session |
View Session Statistics |
- |
Display detailed session analytics |
Open Recording Folder |
- |
Open the recordings folder in file explorer |
{
"sessionId": "session-20250117-134813",
"metadata": {
"startTime": "2025-01-17T13:48:13.000Z",
"endTime": "2025-01-17T14:15:30.000Z",
"duration": 1637000,
"workspace": "/path/to/workspace"
},
"events": [
{
"timestamp": "2025-01-17T13:48:15.123Z",
"type": "fileOpen",
"file": "src/main.ts",
"line": 1,
"column": 1
}
],
"statistics": {
"totalEvents": 542,
"filesOpened": 8,
"linesChanged": 127
}
}
Tabular format suitable for spreadsheet analysis:
timestamp,type,file,line,column,details
2025-01-17T13:48:15.123Z,fileOpen,src/main.ts,1,1,
2025-01-17T13:48:16.456Z,cursorMove,src/main.ts,5,12,
Human-readable format with session summary and event timeline.
Storage and File Management
Storage Structure
.vscode-recordings/
├── sessions/
│ ├── session-20250117-134813.json
│ └── session-20250117-140230.csv
├── archives/
│ └── archived-sessions-2025-01.zip
└── exports/
├── custom-export-1.json
└── meeting-analysis.md
File Rotation
- Automatic rotation when files exceed size limits
- Configurable rotation strategies (size, time, event count)
- Automatic cleanup of old files
- Compression for archived sessions
Advanced Features
Compression
- Automatic compression for files larger than 10MB
- Configurable compression levels (1-9)
- Transparent decompression when accessing archived data
Session Recovery
- Automatic recovery from unexpected shutdowns
- Session data persistence across VS Code restarts
- Export validation and error recovery
Batch Processing
- Efficient handling of large recording sessions
- Configurable batch sizes for export operations
- Concurrent export support for multiple formats
Use Cases
- Meeting Documentation: Record coding activities during pair programming or code reviews
- Productivity Analysis: Analyze coding patterns and time spent in different files
- Learning and Teaching: Capture coding sessions for educational purposes
- Project Timeline: Track development progress and file interaction patterns
- Code Review Preparation: Generate activity summaries for code review discussions
Troubleshooting
Common Issues
Recording not starting
- Check that you're in a workspace (not a single file)
- Verify the storage location is writable
- Check VS Code developer console for errors
Large file sizes
- Enable compression in settings
- Adjust
maxEventsPerSession
limit
- Configure file rotation settings
Export failures
- Check available disk space
- Verify export timeout settings
- Enable auto-recovery in configuration
- Increase
debounceDelay
for high-activity sessions
- Use file rotation for long recording sessions
- Enable compression for storage efficiency
- Adjust
batchSize
for better export performance
Privacy and Security
- All data is stored locally in your workspace
- No data is transmitted to external servers
- Configurable data retention policies
- Optional automatic cleanup of old recordings
Project Structure
├── src/ # TypeScript source code
│ ├── controller/ # Recording control logic
│ ├── parsing/ # Symbol and code analysis
│ ├── storage/ # Data storage and export
│ ├── test/ # Unit tests
│ ├── tracking/ # Activity tracking
│ ├── types/ # TypeScript type definitions
│ └── ui/ # User interface components
├── test-scripts/ # Standalone test scripts
├── media/ # Web view assets (CSS, JS)
├── out/ # Compiled JavaScript (build output)
└── .vscode-recordings/ # Default recording storage location
Test Scripts
The test-scripts/
directory contains standalone testing utilities that can be run independently:
- CSV export validation tests
- Multi-format export tests
- Performance and edge case testing
- Diagnostic scripts for troubleshooting
These are separate from the main test suite and useful for debugging specific functionality.
🤝 Contributing
We welcome contributions from the community! This is an open source project and we believe in collaborative development.
Ways to Contribute
- 🐛 Report bugs - Found an issue? Please let us know!
- 💡 Request features - Have an idea for improvement? We'd love to hear it!
- 📝 Improve documentation - Help make our docs clearer and more comprehensive
- 🧪 Add tests - Help us maintain code quality and reliability
- 🔧 Submit pull requests - Fix bugs or implement new features
Getting Started
- Fork the repository on GitHub
- Clone your fork locally
- Create a branch for your changes:
git checkout -b feature/your-feature-name
- Make your changes and add tests if applicable
- Run the test suite to ensure everything works:
npm test
- Commit your changes with a clear commit message
- Push to your fork and submit a pull request
Development Setup
# Clone the repository
git clone https://github.com/YOUR_USERNAME/editor-activity-recorder.git
cd editor-activity-recorder
# Install dependencies
npm install
# Start the TypeScript compiler in watch mode
npm run watch
# Run tests
npm test
# Package the extension for testing
npm run package
Code Style and Standards
- Follow the existing TypeScript/ESLint configuration
- Write meaningful commit messages
- Add tests for new functionality
- Update documentation as needed
- Keep pull requests focused and atomic
Reporting Issues
When reporting bugs, please include:
- VS Code version
- Extension version
- Steps to reproduce
- Expected vs actual behavior
- Any error messages or logs
Feature Requests
For feature requests, please describe:
- The use case or problem you're trying to solve
- Your proposed solution
- Any alternative solutions you've considered
- Additional context that might be helpful
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
What this means:
- ✅ You can use this software for any purpose, including commercial use
- ✅ You can modify and distribute the software
- ✅ You can include it in your own projects
- ❗ You must include the original license and copyright notice
- ❗ The software is provided "as is" without warranty
🙏 Acknowledgments
- Thanks to the VS Code team for providing excellent extension APIs
- Community contributors who help improve this extension
- All users who provide feedback and feature requests
📞 Support and Community
Star ⭐ this repository if you find it useful!
Made with ❤️ for the developer community