mirror of
https://github.com/Crosstalk-Solutions/project-nomad.git
synced 2026-10-15 05:30:01 +08:00
Review changes from looking at the feature running on NOMAD3. The icon picker offered every Tabler icon *and* every Font Awesome icon via namespace imports: 160 pages, whose first page included the Amazon and Amazon Pay logos, an "Ad" badge and text-alignment glyphs. It also took the maps chunk from 864 kB to 5,774 kB. Replaced with a hand-written set of 36 map-relevant icons in a 6x6 grid -- water, shelter, medical, power, comms, transport, terrain, hazards -- with no search box or paging, because 36 fit on screen. Maps chunk is back to 904 kB, +40 kB over dev rather than +4,910 kB, and the react-icons dependency is gone entirely since Tabler was already present. Icon resolution moved into marker_icons.ts so the panel and the pin share one definition, with a caller-supplied fallback (the pin's inner glyph defaults to a filled circle, the list to a map pin). An icon later removed from the set still renders as the fallback rather than blanking the marker. Dropped the tree view and the List/Tree band: grouping pins by hue or by icon organises them by an attribute the user picked arbitrarily, and grouping by first letter is worse than sorting. Search and sort cover the real need. "Hide all" lived inside the tree view, so it moved up into the header where it applies to whatever the list shows -- it is the one bulk control worth keeping. The title bar now closes the panel, matching the "Pins" button that opens it; clicking a title to open but having to hit a small X to close is an asymmetry that makes the panel feel fiddly. The list also reclaims the height the removed band was using. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F8Mgg1vd2eKSs8StZiuyMV
155 lines
4.9 KiB
JSON
155 lines
4.9 KiB
JSON
{
|
|
"name": "project-nomad-admin",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"license": "Apache-2.0",
|
|
"author": "Crosstalk Solutions, LLC",
|
|
"scripts": {
|
|
"start": "node bin/server.js",
|
|
"build": "node ace build",
|
|
"dev": "node ace serve --hmr",
|
|
"test": "node ace test",
|
|
"test:unit": "node --import ts-node-maintained/register/esm --test \"tests/unit/**/*.spec.ts\"",
|
|
"test:eval": "node --import ts-node-maintained/register/esm --test \"tests/unit/eval_*.spec.ts\" \"tests/unit/rag_pipeline_*.spec.ts\"",
|
|
"lint": "eslint .",
|
|
"format": "prettier --write .",
|
|
"gen:curated-data": "node --experimental-strip-types scripts/generate_curated_data.ts && prettier --write app/data/conditions.ts app/data/natural_remedies.ts app/data/home_remedies.ts",
|
|
"typecheck": "tsc --noEmit",
|
|
"work:downloads": "node ace queue:work --queue=downloads",
|
|
"work:model-downloads": "node ace queue:work --queue=model-downloads",
|
|
"work:benchmarks": "node ace queue:work --queue=benchmarks",
|
|
"work:all": "node ace queue:work --all"
|
|
},
|
|
"imports": {
|
|
"#controllers/*": "./app/controllers/*.js",
|
|
"#exceptions/*": "./app/exceptions/*.js",
|
|
"#models/*": "./app/models/*.js",
|
|
"#mails/*": "./app/mails/*.js",
|
|
"#services/*": "./app/services/*.js",
|
|
"#listeners/*": "./app/listeners/*.js",
|
|
"#events/*": "./app/events/*.js",
|
|
"#middleware/*": "./app/middleware/*.js",
|
|
"#validators/*": "./app/validators/*.js",
|
|
"#providers/*": "./providers/*.js",
|
|
"#policies/*": "./app/policies/*.js",
|
|
"#abilities/*": "./app/abilities/*.js",
|
|
"#database/*": "./database/*.js",
|
|
"#tests/*": "./tests/*.js",
|
|
"#start/*": "./start/*.js",
|
|
"#config/*": "./config/*.js",
|
|
"#jobs/*": "./app/jobs/*.js"
|
|
},
|
|
"devDependencies": {
|
|
"@adonisjs/assembler": "7.8.2",
|
|
"@adonisjs/eslint-config": "2.1.2",
|
|
"@adonisjs/prettier-config": "1.4.5",
|
|
"@adonisjs/tsconfig": "1.4.1",
|
|
"@japa/assert": "4.2.0",
|
|
"@japa/plugin-adonisjs": "4.0.0",
|
|
"@japa/runner": "4.5.0",
|
|
"@swc/core": "1.11.24",
|
|
"@tanstack/eslint-plugin-query": "5.91.4",
|
|
"@types/compression": "1.8.1",
|
|
"@types/dockerode": "4.0.1",
|
|
"@types/luxon": "3.7.1",
|
|
"@types/node": "22.19.7",
|
|
"@types/react": "19.2.10",
|
|
"@types/react-dom": "19.2.3",
|
|
"@types/stopword": "2.0.3",
|
|
"@types/stream-json": "1.7.7",
|
|
"@types/yauzl": "2.10.3",
|
|
"eslint": "9.39.2",
|
|
"hot-hook": "0.4.0",
|
|
"prettier": "3.8.1",
|
|
"ts-node-maintained": "10.9.6",
|
|
"typescript": "5.8.3",
|
|
"vite": "6.4.3"
|
|
},
|
|
"dependencies": {
|
|
"@adonisjs/auth": "9.6.0",
|
|
"@adonisjs/core": "6.19.3",
|
|
"@adonisjs/cors": "2.2.1",
|
|
"@adonisjs/inertia": "3.1.1",
|
|
"@adonisjs/lucid": "21.8.2",
|
|
"@adonisjs/session": "7.7.1",
|
|
"@adonisjs/shield": "8.2.0",
|
|
"@adonisjs/static": "1.1.1",
|
|
"@adonisjs/transmit": "2.0.2",
|
|
"@adonisjs/transmit-client": "1.1.0",
|
|
"@adonisjs/vite": "4.0.0",
|
|
"@chonkiejs/core": "0.0.7",
|
|
"@codemirror/lang-markdown": "6.5.0",
|
|
"@codemirror/state": "6.7.1",
|
|
"@codemirror/theme-one-dark": "6.1.3",
|
|
"@codemirror/view": "6.43.6",
|
|
"@headlessui/react": "2.2.9",
|
|
"@inertiajs/react": "2.3.13",
|
|
"@markdoc/markdoc": "0.5.4",
|
|
"@openzim/libzim": "4.0.0",
|
|
"@protomaps/basemaps": "5.7.0",
|
|
"@qdrant/js-client-rest": "1.16.2",
|
|
"@scalar/api-reference": "1.62.4",
|
|
"@tabler/icons-react": "3.36.1",
|
|
"@tailwindcss/vite": "4.3.0",
|
|
"@tanstack/react-query": "5.90.20",
|
|
"@tanstack/react-query-devtools": "5.91.3",
|
|
"@tanstack/react-virtual": "3.13.18",
|
|
"@uppy/core": "5.2.0",
|
|
"@uppy/dashboard": "5.1.0",
|
|
"@uppy/react": "5.1.1",
|
|
"@uppy/xhr-upload": "5.2.0",
|
|
"@vinejs/vine": "4.4.0",
|
|
"@vitejs/plugin-react": "4.7.0",
|
|
"autoprefixer": "10.5.0",
|
|
"axios": "1.18.1",
|
|
"better-sqlite3": "12.6.2",
|
|
"bullmq": "5.77.6",
|
|
"cheerio": "1.2.0",
|
|
"codemirror": "6.0.2",
|
|
"compression": "1.8.1",
|
|
"dockerode": "5.0.0",
|
|
"edge.js": "6.4.0",
|
|
"fast-xml-parser": "5.7.0",
|
|
"fuse.js": "7.1.0",
|
|
"ioredis": "5.10.1",
|
|
"ipaddr.js": "2.4.0",
|
|
"jszip": "3.10.1",
|
|
"luxon": "3.7.2",
|
|
"mammoth": "1.12.0",
|
|
"maplibre-gl": "4.7.1",
|
|
"mysql2": "3.22.5",
|
|
"ollama": "0.6.3",
|
|
"openai": "6.38.0",
|
|
"pdf-parse": "2.4.5",
|
|
"pdf2pic": "3.2.0",
|
|
"pino-pretty": "13.1.3",
|
|
"pmtiles": "4.4.0",
|
|
"postcss": "8.5.15",
|
|
"react": "19.2.7",
|
|
"react-adonis-transmit": "1.0.1",
|
|
"react-dom": "19.2.7",
|
|
"react-map-gl": "8.1.0",
|
|
"react-markdown": "10.1.0",
|
|
"reflect-metadata": "0.2.2",
|
|
"remark-gfm": "4.0.1",
|
|
"sharp": "0.34.5",
|
|
"stopword": "3.1.5",
|
|
"stream-json": "1.9.1",
|
|
"systeminformation": "5.31.7",
|
|
"tailwindcss": "4.2.2",
|
|
"tar": "7.5.16",
|
|
"tesseract.js": "7.0.0",
|
|
"url-join": "5.0.0",
|
|
"yaml": "2.8.3",
|
|
"yauzl": "3.2.0"
|
|
},
|
|
"hotHook": {
|
|
"boundaries": [
|
|
"./app/controllers/**/*.ts",
|
|
"./app/middleware/*.ts"
|
|
]
|
|
},
|
|
"prettier": "@adonisjs/prettier-config"
|
|
}
|