- Introduced `TabLRUManager` to manage tab hibernation based on usage patterns, enhancing memory efficiency.
- Added `isDormant` and `savedState` properties to the `Tab` interface for tracking tab states during hibernation.
- Updated `useTabs` hook to include methods for hibernating and waking tabs, along with pinning functionality to exempt tabs from LRU management.
- Enhanced `AppShell` to only render non-dormant tabs, improving user experience by focusing on active content.
- Implemented logging for tab state changes to facilitate debugging and monitoring of tab behavior.
These changes significantly improve the application's performance and user experience by optimizing tab management and memory usage.
- Moved Tab and TabsState type definitions from cacheSchemas.ts to cacheValueTypes.ts for better organization and clarity.
- Updated imports in related components to reflect the new location of these types.
- Removed the now redundant tab type definitions from cacheSchemas.ts.
These changes enhance the structure of type definitions, promoting a clearer separation of concerns within the codebase.
- Added new cache schema keys for agent management and chat active view in `cacheSchemas.ts`.
- Replaced deprecated `useRuntime` hook with `useCache` in various components to streamline state management.
- Updated components such as `useActiveAgent`, `useActiveSession`, and `useAgentSessionInitializer` to utilize the new caching strategy.
- Removed the `useRuntime` hook entirely from the codebase, enhancing performance and reducing complexity.
- Ensured consistent access to cached data across the application.
- Introduced casual methods (`getCasual`, `setCasual`, `deleteCasual`, etc.) in `CacheService` for dynamic key handling.
- Updated various components to utilize the new casual methods for improved flexibility in cache management.
- Added new cache schema keys for file and resource paths in `cacheSchemas.ts`.
- Refactored `UserPopup`, `useAppInit`, and other components to align with the new caching strategy, ensuring consistent access to cached data.
- Introduced a new TabRouter component to manage routing for each tab independently, enhancing the tab management system.
- Updated the AppShell component to utilize the new TabRouter, allowing for true KeepAlive behavior with isolated history.
- Refactored the Sidebar component for improved navigation and tab creation, now supporting internal app routes.
- Enhanced the useTabs hook to ensure at least one default tab exists, improving user experience on initial load.
- Updated cacheSchemas to reflect changes in tab types and metadata structure.
These changes significantly improve the architecture and functionality of the tab system, providing a more robust user experience.
- Remove redundant 'ui.activeTabId' from UseCacheSchema (already in TabsState)
- Rename 'tabs_state' to 'ui.tab.state' to follow ESLint naming rule
- Update useTabs hook to use new cache key
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Introduced a new ESLint rule to enforce a specific naming convention for schema keys: `namespace.sub.key_name`.
- Updated cache and preference schema files to include documentation on the naming convention and examples of valid/invalid keys.
- Modified existing keys in cache schemas to comply with the new convention.
- Remove /app/state/:key API endpoint from apiSchemas
- Remove appStateService handler from API handlers
- Add Tab/TabsState types to persist cache schema
- Refactor useTabs to use usePersistCache instead of useQuery/useMutation
- Delete unused routeTree.gen.ts
This change improves performance by avoiding unnecessary IPC + DB roundtrips
for UI state that can be safely stored in localStorage with 200ms debounce.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added AppStateService for managing application state in the database, including methods for getting, setting, and deleting state.
- Introduced new API endpoint for app state storage with GET and PUT methods.
- Integrated TanStack Router for routing, enabling a tabbed interface with dynamic routing and state synchronization.
- Created AppShell component to manage layout and routing, including a sidebar and tab management.
- Developed useTabs hook for handling tab state, including adding, closing, and switching tabs.
- Updated package.json and yarn.lock to include necessary dependencies for routing and state management.
This commit enhances the application's architecture by providing a robust state management system and a flexible routing mechanism, improving user experience and maintainability.
- Deleted the DataRefactorMigrateService and associated HTML files, as they are no longer needed.
- Removed test components and files related to data refactor migration, streamlining the codebase.
- Updated configuration files to reflect the removal of the data refactor migration functionality.
- Updated package.json to version 2.0.0-alpha, reflecting significant changes.
- Refactored cache management by integrating useCache hooks across various components, enhancing state management and performance.
- Replaced useRuntime references with useMinapps in multiple components to streamline minapp state handling.
- Improved type safety in cache schemas and updated related components to utilize new types.
- Removed deprecated runtime actions and streamlined the codebase for better maintainability.