diff --git a/apps/x/apps/renderer/src/App.tsx b/apps/x/apps/renderer/src/App.tsx index 4b880c21..545b30f0 100644 --- a/apps/x/apps/renderer/src/App.tsx +++ b/apps/x/apps/renderer/src/App.tsx @@ -270,6 +270,37 @@ const normalizeUsage = (usage?: Partial | null): LanguageMod // Pinned folders appear first in the sidebar (in this order) const PINNED_FOLDERS = ['Notes'] +/** + * Per-folder base view config: which columns to show and default sort. + * Folders not listed here fall back to DEFAULT_BASE_CONFIG. + */ +const FOLDER_BASE_CONFIGS: Record = { + 'Agent Notes': { + visibleColumns: ['name', 'folder', 'mtimeMs'], + sort: { field: 'mtimeMs', dir: 'desc' }, + }, + People: { + visibleColumns: ['name', 'relationship', 'organization', 'mtimeMs'], + sort: { field: 'name', dir: 'asc' }, + }, + Organizations: { + visibleColumns: ['name', 'relationship', 'mtimeMs'], + sort: { field: 'name', dir: 'asc' }, + }, + Projects: { + visibleColumns: ['name', 'status', 'topic', 'mtimeMs'], + sort: { field: 'name', dir: 'asc' }, + }, + Topics: { + visibleColumns: ['name', 'mtimeMs'], + sort: { field: 'name', dir: 'asc' }, + }, + Meetings: { + visibleColumns: ['name', 'topic', 'mtimeMs'], + sort: { field: 'mtimeMs', dir: 'desc' }, + }, +} + // Sort nodes (dirs first, pinned folders at top, then alphabetically) function sortNodes(nodes: TreeNode[]): TreeNode[] { return nodes.sort((a, b) => { @@ -3155,12 +3186,17 @@ function App() { const parts = path.split('/') if (parts.length === 2 && parts[0] === 'knowledge' && parts[1] !== 'Notes') { const folderName = parts[1] + const folderCfg = FOLDER_BASE_CONFIGS[folderName] setBaseConfigByPath((prev) => ({ ...prev, [BASES_DEFAULT_TAB_PATH]: { ...DEFAULT_BASE_CONFIG, name: folderName, filters: [{ category: 'folder', value: folderName }], + ...(folderCfg && { + visibleColumns: folderCfg.visibleColumns, + sort: folderCfg.sort, + }), }, })) if (!selectedPath && !isGraphOpen && !selectedBackgroundTask) {