### Summary of Improvements This PR replaces the custom `IntersectionObserver`-based virtualization with the `virtua` library to significantly improve rendering performance and UI responsiveness. ### 🚀 Performance Results Verified using `session-performance.test.ts`: - **Rendering**: 2000 messages rendered in **16.90ms**. - **Huge Conversation**: 10,000 messages processed in **0.80ms**. - **Session Switching**: Average switch time reduced to **0.58ms** (virtually zero lag). ### 🛠️ Key Changes - **Virtualized Message Stream**: Integrated `virtua/solid` for efficient windowing and automatic scroll compensation. - **Floating Scroll Controls**: Applied `position: absolute` and `pointer-events: none` to the list controls to ensure scroll-to-top/bottom buttons float correctly over the message area without blocking interactions. - **Package Synchronization**: Updated `virtua` and SDK dependencies, with a fully synchronized `package-lock.json` for stable builds. ### 🎥 UI Verification https://github.com/user-attachments/assets/24e483a3-8be6-4ac4-a431-d719f2015f4e - **Smooth Scrolling**: Verified that rendering gaps are eliminated during fast scrolls. - **Position Retention**: Scroll positions are preserved when switching between sessions. > [!NOTE] > Detailed performance gains and layout fixes are isolated to the `virtua` implementation and core package updates, following the requested cleanup. --------- Co-authored-by: Shantur Rathore <i@shantur.com>
49 lines
1.5 KiB
JSON
49 lines
1.5 KiB
JSON
{
|
|
"name": "@neuralnomads/codenomad",
|
|
"version": "0.12.3",
|
|
"description": "CodeNomad Server",
|
|
"license": "MIT",
|
|
"author": {
|
|
"name": "Neural Nomads",
|
|
"email": "codenomad@neuralnomads.ai"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/NeuralNomadsAI/CodeNomad.git"
|
|
},
|
|
"type": "module",
|
|
"main": "dist/index.js",
|
|
"bin": {
|
|
"codenomad": "dist/bin.js"
|
|
},
|
|
"scripts": {
|
|
"build": "npm run build:ui && npm run prepare-ui && tsc -p tsconfig.json && node ./scripts/copy-auth-pages.mjs && npm run prepare-config",
|
|
"build:ui": "npm run build --prefix ../ui",
|
|
"prepare-ui": "node ./scripts/copy-ui-dist.mjs",
|
|
"prepare-config": "node ./scripts/copy-opencode-config.mjs",
|
|
"dev": "cross-env CODENOMAD_DEV=1 CODENOMAD_SERVER_PASSWORD=codenomad-dev CLI_UI_DEV_SERVER=http://localhost:3000 CLI_HTTPS=false CLI_HTTP=true tsx src/index.ts",
|
|
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
},
|
|
"dependencies": {
|
|
"@fastify/cors": "^8.5.0",
|
|
"@fastify/reply-from": "^9.8.0",
|
|
"@fastify/static": "^7.0.4",
|
|
"commander": "^12.1.0",
|
|
"fastify": "^4.28.1",
|
|
"fuzzysort": "^2.0.4",
|
|
"node-forge": "^1.3.3",
|
|
"pino": "^9.4.0",
|
|
"undici": "^6.19.8",
|
|
"yaml": "^2.4.2",
|
|
"yauzl": "^2.10.0",
|
|
"zod": "^3.23.8"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node-forge": "^1.3.14",
|
|
"@types/yauzl": "^2.10.0",
|
|
"cross-env": "^7.0.3",
|
|
"ts-node": "^10.9.2",
|
|
"tsx": "^4.20.6",
|
|
"typescript": "^5.6.3"
|
|
}
|
|
} |