- 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>
19 lines
723 B
TypeScript
19 lines
723 B
TypeScript
import { LogContext } from './context';
|
|
interface LogMessage {
|
|
context: LogContext;
|
|
message: string;
|
|
sequence: number;
|
|
time: number;
|
|
}
|
|
declare type LogMessageFormatter = (msg: LogMessage) => string;
|
|
declare type LogMessageTranslator = (msg: LogMessage) => LogMessage;
|
|
interface LogFormattersMap {
|
|
json: LogMessageFormatter;
|
|
simple: LogMessageFormatter;
|
|
[key: string]: LogMessageFormatter;
|
|
}
|
|
declare let LogFormatters: LogFormattersMap;
|
|
declare const resetLogFormatters: () => void;
|
|
declare const registerLogFormatter: (name: string, format: LogMessageFormatter) => void;
|
|
export { LogMessage, LogMessageTranslator, LogMessageFormatter, LogFormatters, resetLogFormatters, registerLogFormatter, };
|