Performance: - Move JSON parsing to background isolate via Isolate.run() (eliminates 2-4s UI freeze) - Cache filteredEntries with key-based invalidation (eliminates O(n) recomputation) - Debounce search queries at 300ms (prevents cascade rebuilds on keystroke) - Flatten timeline from 2-level turn×response Column to single virtualized ListView.builder - Add RepaintBoundary per timeline item (isolates repaints during scroll) - Use context.select for granular rebuilds instead of top-level context.watch - Lazy ExpandableCard: child not built until first expand (replaces AnimatedCrossFade) - Use IndexedStack in AppShell (preserves screen state across tab switches) Fixes: - Collect parse errors instead of silently swallowing them - Show parse error count in timeline filter bar - Fix overflow in tokens screen pie chart legend Build: - Configure Developer ID signing with hardened runtime for production distribution - Enable secure timestamps for notarization - Update app name to Claude Session Viewer - Signed, notarized, stapled DMG distribution
15 lines
623 B
Plaintext
15 lines
623 B
Plaintext
// Application-level settings for the Runner target.
|
|
//
|
|
// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the
|
|
// future. If not, the values below would default to using the project name when this becomes a
|
|
// 'flutter create' template.
|
|
|
|
// The application's name. By default this is also the title of the Flutter window.
|
|
PRODUCT_NAME = Claude Session Viewer
|
|
|
|
// The application's bundle identifier
|
|
PRODUCT_BUNDLE_IDENTIFIER = com.svrnty.claude-session-viewer
|
|
|
|
// The copyright displayed in application information
|
|
PRODUCT_COPYRIGHT = Copyright © 2026 Svrnty. All rights reserved.
|