AI Changes Timeline
Know exactly which files your AI assistant changed — and which prompt changed them.
A Visual Studio Code extension that records every AI editing session as a timeline entry, so
you can see what Claude Code (or Copilot, Codex, Gemini CLI, Cursor…) touched, review the diff,
and restore a single file or an entire prompt's worth of changes.
v0.1.0 — the full MVP works, including restore. Not yet on the Marketplace; install the
.vsix (below). See CHANGELOG.md for detail.
The problem
AI coding assistants edit many files per conversation. After a few prompts, git status shows
one flat pile:
Modified:
auth.py
user.py
models.py
config.py
tests.py
README.md
Git cannot answer the question you actually have:
Which of these came from my last prompt?
Copilot shows a temporary "Edited Files" list, but it disappears and keeps no history.
The solution
Every AI interaction becomes one entry in an AI Changes timeline:
▼ Today
▼ 4:35 PM · Claude · 3 files · +142 −23
"Implement JWT authentication"
auth.py
middleware.py
routes.py
▼ 4:42 PM · Claude · 2 files · +18 −6
"Fix failing tests"
tests.py
package.json
▼ 4:50 PM · Claude · 1 file · +9 −0
"Improve README"
README.md
Click a session to see its stats. Click a file to diff it against its pre-AI snapshot. Right-click
to restore.
Features
|
Feature |
Description |
| 📋 |
Session timeline |
Each AI interaction is grouped into a single session, bucketed by Today / Yesterday / Last week. |
| 🗂 |
Activity Bar sidebar |
A dedicated AI Changes view alongside Explorer, Search, and Source Control. |
| 🔍 |
Session details |
Prompt text, duration, files edited, lines added/deleted. |
| ⇄ |
File diff |
Open current vs before AI change using VS Code's native diff editor. |
| ↩ |
Restore |
Revert a single file, or every file changed by one prompt. The restore is itself recorded, so you can undo it. |
| 🔎 |
Search |
Find sessions by prompt text or filename. |
| 🎚 |
Filters |
By time range (today, yesterday, last week) and by assistant (Claude, Copilot, Gemini, Cursor). |
| 📊 |
Statistics |
Sessions, files, and lines changed — per day and overall. |
| 📌 |
Status bar |
Live "Claude edited 7 files" indicator; click for the file list. |
| 💾 |
Persistent history |
Survives restarts. Stored locally, never uploaded, no telemetry. |
| 🔌 |
Multi-assistant |
Claude Code detection today; pluggable probes for Copilot, Codex, Gemini, Cursor. |
All of the above works today. See MVP scope for what was in scope
and ROADMAP.md for what comes next.
Installation
From the Marketplace (once published):
- Open the Extensions view (
Cmd/Ctrl+Shift+X).
- Search for AI Changes Timeline.
- Click Install.
From a .vsix — the current path, since it is not published yet:
npm install
npm run package
code --install-extension ai-changes-timeline-0.1.0.vsix
From source — see CONTRIBUTING.md.
Usage
- Open the AI Changes icon in the Activity Bar.
- Use your AI assistant as normal. Bursts of file edits are grouped into sessions automatically.
- Expand a session to see its files.
- Click a file → diff against the pre-change snapshot.
- Right-click a file or session → Restore, Compare, Reveal, Copy Path.
If automatic detection misses a session, start and stop one manually with
AI Changes: Start Session / AI Changes: End Session.
Commands
All commands are available from the Command Palette (Cmd/Ctrl+Shift+P):
| Command |
Description |
AI Changes: Open Timeline |
Focus the AI Changes view. |
AI Changes: Search Sessions |
Search prompts, paths, and notes. Every term must match. |
AI Changes: Filter Sessions |
Filter by time range, then by assistant. |
AI Changes: Clear Search and Filters |
Show everything again. |
AI Changes: Start Session |
Begin a session with a label you type. |
AI Changes: End Session |
Close the open session now. |
AI Changes: Show Statistics |
Open a statistics summary as a Markdown document. |
AI Changes: Export History |
Export as Markdown, JSON, or CSV. |
AI Changes: Delete All History |
Clear every recorded session. |
Available from a session's right-click menu: Set Prompt / Label, Pin / Unpin, Merge with
Previous Session, Restore All Files in Session, Delete Session.
From a file's right-click menu: Compare with Before AI Change, Restore File, Reveal in
Explorer View, Copy Path.
Settings
| Setting |
Default |
Description |
aiChanges.trackOnlyAIChanges |
true |
Ignore edits you typed yourself. Changes that land on disk without matching recent keystrokes — the signature of a CLI assistant — are still tracked. |
aiChanges.trackManualEdits |
false |
Also record hand-typed edits. Requires trackOnlyAIChanges: false as well. |
aiChanges.snapshotBeforeChange |
true |
Capture pre-change content. Required for compare and restore. |
aiChanges.maxHistorySessions |
500 |
Oldest unpinned sessions are pruned beyond this count. |
aiChanges.autoCleanupDays |
30 |
Delete unpinned sessions older than this. 0 disables cleanup. |
aiChanges.sessionIdleTimeoutMs |
45000 |
A quiet gap longer than this ends the current session. Raise it if your sessions get split; lower it if they run together. |
aiChanges.sessionMaxDurationMs |
600000 |
Hard ceiling on session length, so a watch process cannot produce one enormous entry. |
aiChanges.maxSnapshotBytes |
1048576 |
Files larger than this are recorded by path only. |
aiChanges.storePrompts |
true |
Set false to record file changes without prompt text. |
aiChanges.enableStatistics |
true |
Compute lines added and deleted per session. |
aiChanges.showStatusBar |
true |
Show the live indicator while a session is open. |
aiChanges.exclude |
(see settings UI) |
Glob patterns never tracked: node_modules, .git, dist, build, out, target, .venv, __pycache__, .next, coverage, *.log, *.lock, .DS_Store, and more. |
For extension authors
activate() returns a small read-only API, so another extension can observe sessions:
const api = vscode.extensions.getExtension('rajendrac3.ai-changes-timeline')?.exports;
const sessions = await api?.getSessions();
{ version, getSessions, getActiveSession, settled, getSnapshot, restoreSession }. Read-only by
design — no third party gets to rewrite your history.
Privacy
- All history stays on your machine. Nothing is sent anywhere.
- No telemetry.
- Prompt text can be disabled entirely with
aiChanges.storePrompts: false.
- Snapshots live in the workspace storage directory and honour
aiChanges.exclude.
Documentation
Contributing
Issues and pull requests are welcome. Please read CONTRIBUTING.md first.
License
MIT © Rajendra Choudhary