mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-10-22 02:22:08 +08:00
WebSocket hooks (use-connection-data, use-log-data) - Single-pass merge for connection snapshots; reuse previous row reference when upload/download are unchanged so downstream memos can bail out - Single-allocation cap on closedConnections (no double concat+slice) - Single-allocation clamp in appendLogs - Cache dayjs().format result within each 50ms log flush window Connection table (connection-table.tsx) - Decouple 5s relative-time tick from columnDefs via shared module-level tickStore + memoised RelativeTimeCell so the tick no longer rebuilds the table - RowComponent memo with custom comparator (relies on stable row reference) - Lift sx objects to module scope - Stable onShowDetail via ref App data provider (app-data-provider, app-data-context) - Split monolithic context into six sub-contexts (Proxies/Rules/ClashConfig/ System/Uptime/Refreshers); 3s uptime ticks no longer invalidate unrelated consumers - useAppData adapter aggregates sub-contexts; consumer files unchanged - useStableFn helper stabilises all refresh* callback identities - Extract useCtx helper to remove repeated null-check boilerplate Canvas traffic graph (enhanced-canvas-traffic-graph, use-traffic-monitor) - Lift Y-axis scale (max/min) to drawGraph layer; calculateY allocations per frame: ~600 -> 1 - Document visibility gate stops RAF and the setNow interval when the window is hidden; appendData unaffected - Reuse the existing visibilitychange listener instead of adding a second one; isDocumentVisibleRef guards animate() inside the frame - Convert forEach arrow shorthands to block bodies - Drop unnecessary state-setter deps from a useCallback Proxy groups (proxy-groups, proxy-render, use-render-list) - Narrow proxyColItemsMemo dep: headState -> headState.showType - Per-group fingerprint cache + prevListRef in use-render-list; steady-state refetch ticks become O(0) and the list reference stays stable when nothing changed - useStableCallback wraps handleCheckAll / handleLocation