Display the source file path in the session info section of the right panel for sessions loaded via local discovery.
This only applies to the local/CLI use case (capsule serve). When users upload files through the public website, the browser security model prevents access to the full filesystem path, so this field won't be available there. The path is only known when the session is discovered from the filesystem by the CLI. Do not show this property on the web version.
Implementation details
Data
DiscoveredSession already has filePath, but it's lost when storing to SessionMeta. Persist it through storeSessionFromContent() by extending the local SessionSource type:
| { type: 'local'; filePath?: string }
UI (SessionInfo.svelte)
- Gate behind
isLocal.
- Place as the last item in the
// session_info section.
- Two-line layout — label on one line, path value below it:
file
~/.claude/projects/.../session.jsonl [copy]
- Add a copy button next to the path (
navigator.clipboard.writeText()), with brief visual feedback (icon swap to checkmark for ~1.5s).
Relevant files
packages/web/src/lib/components/viewer/panel/SessionInfo.svelte — add the new field
packages/web/src/lib/types.ts — extend SessionSource
packages/web/src/lib/services/storage.svelte.ts — persist filePath in storeSessionFromContent()
packages/shared/src/types/discovery.ts — DiscoveredSession (already has filePath)
packages/web/src/lib/features.ts — isLocal flag
Display the source file path in the session info section of the right panel for sessions loaded via local discovery.
This only applies to the local/CLI use case (
capsule serve). When users upload files through the public website, the browser security model prevents access to the full filesystem path, so this field won't be available there. The path is only known when the session is discovered from the filesystem by the CLI. Do not show this property on the web version.Implementation details
Data
DiscoveredSessionalready hasfilePath, but it's lost when storing toSessionMeta. Persist it throughstoreSessionFromContent()by extending the localSessionSourcetype:UI (
SessionInfo.svelte)isLocal.// session_infosection.navigator.clipboard.writeText()), with brief visual feedback (icon swap to checkmark for ~1.5s).Relevant files
packages/web/src/lib/components/viewer/panel/SessionInfo.svelte— add the new fieldpackages/web/src/lib/types.ts— extendSessionSourcepackages/web/src/lib/services/storage.svelte.ts— persistfilePathinstoreSessionFromContent()packages/shared/src/types/discovery.ts—DiscoveredSession(already hasfilePath)packages/web/src/lib/features.ts—isLocalflag