Initial commit: Claude Code session viewer (Flutter macOS)
A desktop app that parses Claude Code .jsonl session logs and provides a rich UI for exploring conversations, tool usage, subagents, and token consumption. Features include project browser with auto-discovery of ~/.claude/projects, conversation timeline with inline subagent expansion, agents overview, toolbelt chart, and token usage dashboard. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import '../../providers/session_provider.dart';
|
||||
import '../../screens/agents/agents_screen.dart';
|
||||
import '../../screens/home/home_screen.dart';
|
||||
import '../../screens/timeline/timeline_screen.dart';
|
||||
import '../../screens/tokens/tokens_screen.dart';
|
||||
import '../../screens/toolbelt/toolbelt_screen.dart';
|
||||
import 'sidebar.dart';
|
||||
|
||||
class AppShell extends StatefulWidget {
|
||||
const AppShell({super.key});
|
||||
|
||||
@override
|
||||
State<AppShell> createState() => _AppShellState();
|
||||
}
|
||||
|
||||
class _AppShellState extends State<AppShell> {
|
||||
SidebarScreen _screen = SidebarScreen.home;
|
||||
|
||||
void _onScreenSelected(SidebarScreen screen) {
|
||||
setState(() => _screen = screen);
|
||||
}
|
||||
|
||||
void _onSessionLoaded() {
|
||||
setState(() => _screen = SidebarScreen.timeline);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final provider = context.watch<SessionProvider>();
|
||||
final hasSession = provider.session != null;
|
||||
|
||||
return Row(
|
||||
children: [
|
||||
Sidebar(
|
||||
selected: _screen,
|
||||
onSelect: _onScreenSelected,
|
||||
hasSession: hasSession,
|
||||
),
|
||||
Expanded(
|
||||
child: _buildScreen(),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildScreen() {
|
||||
switch (_screen) {
|
||||
case SidebarScreen.home:
|
||||
return HomeScreen(onSessionLoaded: _onSessionLoaded);
|
||||
case SidebarScreen.timeline:
|
||||
return const TimelineScreen();
|
||||
case SidebarScreen.agents:
|
||||
return const AgentsScreen();
|
||||
case SidebarScreen.toolbelt:
|
||||
return const ToolbeltScreen();
|
||||
case SidebarScreen.tokens:
|
||||
return const TokensScreen();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user