scanAllSessions function
Scan all project directories using filesystem metadata only. Returns a list of session file info sorted by mtime descending.
Implementation
Future<List<LiteSessionInfo>> scanAllSessions() async {
final projectsDir = Directory(getProjectsDir());
if (!await projectsDir.exists()) return [];
final allSessions = <LiteSessionInfo>[];
await for (final entity in projectsDir.list()) {
if (entity is! Directory) continue;
try {
await for (final file in entity.list()) {
if (file is! File || !file.path.endsWith('.jsonl')) continue;
final stat = await file.stat();
final sessionId = p.basenameWithoutExtension(file.path);
allSessions.add(
LiteSessionInfo(
sessionId: sessionId,
path: file.path,
mtimeMs: stat.modified.millisecondsSinceEpoch,
size: stat.size,
),
);
}
} catch (_) {
// Skip inaccessible project directories.
}
}
// Sort by mtime descending (most recent first).
allSessions.sort((a, b) => b.mtimeMs.compareTo(a.mtimeMs));
return allSessions;
}