mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-19 18:44:53 +00:00
OpenCode syntax-highlights code in the transcript; Pulse rendered fenced blocks as flat text. Assistant answers are full of shell commands, configs, and query output, so add highlight.js with an infra grammar set (bash, json, yaml, ini, sql, dockerfile, nginx): - Lazy-loaded into its own vendor-highlight chunk; the entry chunk stays clean and the chunk only downloads with the rest of the preloaded app shell. - Highlighting runs over the sanitized DOM after the turn settles, so generated spans never pass through DOMPurify, streaming morphs are never fought, and the class allowlist stays closed to the model. The single carve-out is marked's fence-language hint, pattern-pinned to language-x on <code> only. - Token palette maps hljs classes to theme colors readable on the dark prose-pre background both app themes share. Per-block copy is intentionally not added: OpenCode has none, and the answer-level copy already exists.
84 lines
3.1 KiB
JSON
84 lines
3.1 KiB
JSON
{
|
|
"name": "pulse-modern",
|
|
"version": "1.0.0",
|
|
"description": "Modern type-safe frontend for Pulse monitoring",
|
|
"type": "module",
|
|
"author": "rcourtman",
|
|
"license": "MIT",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/rcourtman/Pulse.git"
|
|
},
|
|
"bugs": {
|
|
"url": "https://github.com/rcourtman/Pulse/issues"
|
|
},
|
|
"homepage": "https://github.com/rcourtman/Pulse",
|
|
"scripts": {
|
|
"dev": "npm --prefix .. run dev",
|
|
"dev:logs": "npm --prefix .. run dev:logs",
|
|
"dev:restart": "npm --prefix .. run dev:restart",
|
|
"dev:backend-restart": "npm --prefix .. run dev:backend-restart",
|
|
"dev:status": "npm --prefix .. run dev:status",
|
|
"dev:stop": "npm --prefix .. run dev:stop",
|
|
"dev:verify": "npm --prefix .. run dev:verify",
|
|
"dev:foreground": "npm --prefix .. run dev:foreground",
|
|
"dev:frontend-only": "vite",
|
|
"build": "node scripts/build-embed-assets.mjs",
|
|
"preview": "vite preview",
|
|
"generate-types": "cd ../scripts && go run generate-types.go",
|
|
"test": "vitest run",
|
|
"test:coverage": "vitest run --coverage --coverage.provider=v8 --coverage.include=src/**/*.ts --coverage.include=src/**/*.tsx --coverage.exclude=src/index.tsx",
|
|
"test:coverage:ai": "vitest run --coverage --coverage.provider=v8 --coverage.thresholds.100 --coverage.thresholds.perFile --coverage.include=src/components/AI/aiChatUtils.ts",
|
|
"type-check": "tsc --noEmit",
|
|
"lint": "npm run lint:eslint && npm run lint:theme && npm run lint:canonical-platforms",
|
|
"lint:canonical-platforms": "node scripts/canonical-platform-audit.mjs",
|
|
"lint:eslint": "eslint \"src/**/*.{ts,tsx}\"",
|
|
"lint:theme": "node scripts/theme-audit.mjs",
|
|
"lint:headers": "node scripts/header-audit.mjs",
|
|
"lint:fix": "eslint \"src/**/*.{ts,tsx}\" --fix",
|
|
"lint:cpd": "jscpd",
|
|
"format": "prettier --write \"src/**/*.{ts,tsx,css,json}\"",
|
|
"format:check": "prettier --check \"src/**/*.{ts,tsx,css,json}\"",
|
|
"check:bundlesize": "node scripts/check-bundle-size.mjs"
|
|
},
|
|
"dependencies": {
|
|
"@solidjs/router": "^0.10.10",
|
|
"dompurify": "^3.4.1",
|
|
"highlight.js": "^11.11.1",
|
|
"lucide-solid": "^0.545.0",
|
|
"marked": "^17.0.1",
|
|
"qrcode": "^1.5.4",
|
|
"solid-js": "^1.8.0"
|
|
},
|
|
"overrides": {
|
|
"seroval": "^1.4.1",
|
|
"seroval-plugins": "^1.4.1"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.39.2",
|
|
"@solidjs/testing-library": "^0.8.5",
|
|
"@tailwindcss/typography": "^0.5.19",
|
|
"@testing-library/jest-dom": "^6.5.0",
|
|
"@types/node": "^20.10.0",
|
|
"@types/qrcode": "^1.5.6",
|
|
"@typescript-eslint/eslint-plugin": "^8.24.0",
|
|
"@typescript-eslint/parser": "^8.24.0",
|
|
"@vitest/coverage-v8": "^3.2.4",
|
|
"autoprefixer": "^10.4.0",
|
|
"eslint": "^9.20.0",
|
|
"eslint-config-prettier": "^10.0.0",
|
|
"eslint-plugin-solid": "^0.14.5",
|
|
"globals": "^17.3.0",
|
|
"jscpd": "^4.0.8",
|
|
"jsdom": "^24.1.0",
|
|
"postcss": "^8.5.13",
|
|
"prettier": "^3.3.0",
|
|
"tailwindcss": "^3.4.18",
|
|
"typescript": "^5.3.0",
|
|
"typescript-eslint": "^8.54.0",
|
|
"vite": "^6.4.2",
|
|
"vite-plugin-solid": "^2.8.0",
|
|
"vite-plugin-sri-gen": "^1.3.2",
|
|
"vitest": "^3.2.4"
|
|
}
|
|
}
|