Searchlight: Historical Session Viewer — a modern .NET 10 / WinUI 3 Windows app that shows a read-only GUI of your recent AI coding-agent sessions and lets you resume any of them with one click.
Today it reads GitHub Copilot sessions from ~/.copilot/. The data layer is agent-neutral
by design — support for other agents (e.g. Claude Code) is a planned extension.
Status: feature-complete and running. A WinUI host + a platform-neutral Core library + an xUnit test project (36 tests green).
Captured using the Demo build config (synthetic data) so no proprietary session content is shown.
- Frequency-sorted session list with recency group headers (Last 2h / 4h / 8h / 16h / 32h, then grouped by day).
- Lazy section tabs — Details displays all parsed native session/workspace/event metadata and first/last prompt previews; Agent tasks and Checkpoints load only when opened.
- Native Copilot sources only — no custom journaling extension or status-snapshot hook required. Missing optional metadata is shown explicitly.
- One-click Resume — hands off to
copilot --resume=<id>in Windows Terminal. - System tray — lives in the tray like ScriptTray; hides on close, exits from the tray menu.
- Read-only by design — never writes to
~/.copilot.
# Build the whole solution
dotnet build Searchlight.slnx -c Debug
# Run the unit tests (platform-neutral, no WinUI needed)
dotnet test src/Searchlight.Core.Tests/Searchlight.Core.Tests.csproj
# Run against your real sessions
dotnet run --project src/Searchlight -c Debug
# Run against synthetic data (safe for screenshots)
dotnet run --project src/Searchlight -c DemoRequires the .NET 10 SDK (pinned via global.json) on Windows.
| Mode | How | Data source |
|---|---|---|
| Tray (default) | dotnet run --project src/Searchlight |
Live ~/.copilot |
| No tray | append --no-tray |
Live ~/.copilot |
| Demo / mock | Demo build config, or --demo flag |
Synthetic (15 sessions) |
Build and sideload Searchlight Dev alongside the production package. The channels
have separate app identities and share settings and notes in %USERPROFILE%\.searchlight.
See MSIX builds and signing for certificate setup and the complete workflow.
$build = .\tools\Build-Msix.ps1 -CertificateThumbprint '<your-development-certificate-thumbprint>'
.\tools\Install-DevMsix.ps1 -Path $build.PathTo run Searchlight without dotnet run — from the Start Menu, a desktop icon, or automatically at
login — use the installer script. It publishes a self-contained build (no .NET runtime required
on the target) to %LOCALAPPDATA%\Searchlight\app and creates shortcuts:
# Install: publish + Start Menu + desktop + run-at-login shortcuts
pwsh -File tools/install.ps1
# Uninstall: remove all shortcuts and the install folder
pwsh -File tools/install.ps1 -Action UninstallAfter installing:
- Launch on demand — press the Win key and type
Searchlight, or use the desktop icon. - At login — it starts automatically and sits in the system tray (a Startup shortcut is created on first installation). Production's Settings can turn this off; updates retain your choice. Dev has no auto-start option.
- Single instance — launching again (e.g. clicking the icon while it's already running at login) just surfaces the existing window instead of adding a second tray icon.
Installer switches:
| Switch | Effect |
|---|---|
-NoDesktop |
Skip the desktop shortcut |
-NoStartup |
Skip the run-at-login (Startup) shortcut |
-SkipPublish |
Reuse the last published output (faster re-install) |
-Configuration Debug |
Publish a Debug build instead of Release |
Full knowledge base in docs/:
- architecture.md — layered architecture, DI composition root, data flow
- engineering.md — build configs, compile flags, run modes, commands
- data-model.md —
~/.copilotsources and the in-memory domain model - msix.md — package identities, shared data, signing, and Dev sideloads
