src/vs/workbench/contrib/localHistory/browser/localHistoryTimeline.ts/LocalHistoryTimeline/provideTimeline
class LocalHistoryTimeline:	async provideTimeline(uri: URI, options: TimelineOptions, token: CancellationToken, internalOptions?: InternalTimelineOptions): Promise<Timeline> {
		const items: TimelineItem[] = [];

		// Try to convert the provided `uri` into a form that is likely
		// for the provider to find entries for so that we can ensure
		// the timeline is always providing local history entries

		let resource: URI | undefined = undefined;
		if (uri.scheme === LocalHistoryFileSystemProvider.SCHEMA) {
			// `vscode-local-history`: convert back to the associated resource
			resource = LocalHistoryFileSystemProvider.fromLocalHistoryFileSystem(uri).associatedResource;
		} else if (uri.scheme === this.pathService.defaultUriScheme || uri.scheme === Schemas.vscodeUserData) {
			// default-scheme / settings: keep as is
			resource = uri;
		} else if (this.fileService.hasProvider(uri)) {
			// anything that is backed by a file system provider:
			// try best to convert the URI back into a form that is
			// likely to match the workspace URIs. That means:
			// - change to the default URI scheme
			// - change to the remote authority or virtual workspace authority
			// - preserve the path
			resource = URI.from({
				scheme: this.pathService.defaultUriScheme,
				authority: this.environmentService.remoteAuthority ?? getVirtualWorkspaceAuthority(this.contextService.getWorkspace()),
				path: uri.path
			});
		}

		if (resource) {

			// Retrieve from working copy history
			const entries = await this.workingCopyHistoryService.getEntries(resource, token);

			// Convert to timeline items
			for (const entry of entries) {
				items.push(this.toTimelineItem(entry));
			}
		}

		return {
			source: LocalHistoryTimeline.ID,
			items
		};
	}