Add side panels, task selection, graph animation, and project docs

- Foldable left panel (user profile) and right panel (task details)
- Clicking a task in the list or graph node selects it and shows details
- Both views (task list + graph) always mounted via absolute inset-0 for
  correct canvas dimensions; tabs toggle visibility with opacity
- Graph node selection animation: other nodes repel outward (charge -600),
  then selected node smoothly slides to center (500ms cubic ease-out),
  then charge restores to -120 and graph stabilizes
- Graph re-fits on tab switch and panel resize via ResizeObserver
- Fix UUID string IDs throughout (backend returns UUIDs, not integers)
- Add TaskDetailPanel, UserPanel components
- Add CLAUDE.md project documentation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Alvis
2026-04-08 11:23:06 +00:00
parent 5c7edd4bbc
commit f1d51b8cc8
23998 changed files with 3242708 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
import { type FetchServerResponseResult } from './fetch-server-response';
import { PrefetchCacheEntryStatus, type PrefetchCacheEntry, PrefetchKind, type ReadonlyReducerState } from './router-reducer-types';
/**
* Returns a prefetch cache entry if one exists. Otherwise creates a new one and enqueues a fetch request
* to retrieve the prefetch data from the server.
*/
export declare function getOrCreatePrefetchCacheEntry({ url, nextUrl, tree, buildId, prefetchCache, kind, }: Pick<ReadonlyReducerState, 'nextUrl' | 'prefetchCache' | 'tree' | 'buildId'> & {
url: URL;
kind?: PrefetchKind;
}): PrefetchCacheEntry;
/**
* Use to seed the prefetch cache with data that has already been fetched.
*/
export declare function createPrefetchCacheEntryForInitialLoad({ nextUrl, tree, prefetchCache, url, kind, data, }: Pick<ReadonlyReducerState, 'nextUrl' | 'tree' | 'prefetchCache'> & {
url: URL;
kind: PrefetchKind;
data: FetchServerResponseResult;
}): {
treeAtTimeOfPrefetch: import("../../../server/app-render/types").FlightRouterState;
data: Promise<FetchServerResponseResult>;
kind: PrefetchKind;
prefetchTime: number;
lastUsedTime: number;
key: string;
status: PrefetchCacheEntryStatus;
};
export declare function prunePrefetchCache(prefetchCache: ReadonlyReducerState['prefetchCache']): void;