* feat: add Web Push API support and PWA integration Add web Push API with subscribe/unsubscribe and visibility endpoints Introduce usePushVisibilityBeacon and useSessionDeepLink hooks Integrate PWA with service worker, registerSW, and VAPID key persistence * feat: add heartbeat visibility beacon for web runtime Add a 10s heartbeat to ping visibility while visible Subscribe to visibilitychange, focus, blur, pageshow, and pagehide events to report state Clear heartbeat interval on unmount to avoid leaks
99 lines
2.8 KiB
JSON
99 lines
2.8 KiB
JSON
{
|
|
"name": "@openchamber/web",
|
|
"version": "1.5.3",
|
|
"private": false,
|
|
"type": "module",
|
|
"main": "./server/index.js",
|
|
"types": "./server/index.d.ts",
|
|
"bin": {
|
|
"openchamber": "./bin/cli.js"
|
|
},
|
|
"publishConfig": {
|
|
"access": "public"
|
|
},
|
|
"scripts": {
|
|
"dev": "bun run build:watch",
|
|
"dev:server": "node server/index.js --port 3001",
|
|
"dev:server:watch": "nodemon --watch server --ext js --exec \"node server/index.js --port 3001\"",
|
|
"build": "vite build",
|
|
"build:watch": "vite build --watch",
|
|
"type-check": "tsc --noEmit",
|
|
"lint": "eslint \"./src/**/*.{ts,tsx}\" --config ../../eslint.config.js",
|
|
"start": "node bin/cli.js serve"
|
|
},
|
|
"dependencies": {
|
|
"@fontsource/ibm-plex-mono": "^5.2.7",
|
|
"@fontsource/ibm-plex-sans": "^5.1.1",
|
|
"@ibm/plex": "^6.4.1",
|
|
"@opencode-ai/sdk": "^1.1.19",
|
|
"@radix-ui/react-collapsible": "^1.1.12",
|
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
"@radix-ui/react-scroll-area": "^1.2.10",
|
|
"@radix-ui/react-select": "^2.2.6",
|
|
"@radix-ui/react-separator": "^1.1.7",
|
|
"@radix-ui/react-slot": "^1.2.3",
|
|
"@radix-ui/react-toggle": "^1.1.10",
|
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
"@remixicon/react": "^4.7.0",
|
|
"@types/react-syntax-highlighter": "^15.5.13",
|
|
"adm-zip": "^0.5.16",
|
|
"bun-pty": "^0.4.5",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"cmdk": "^1.1.1",
|
|
"express": "^5.1.0",
|
|
"ghostty-web": "0.3.0",
|
|
"http-proxy-middleware": "^3.0.5",
|
|
"jsonc-parser": "^3.3.1",
|
|
"next-themes": "^0.4.6",
|
|
"node-pty": "^1.1.0",
|
|
"qrcode-terminal": "^0.12.0",
|
|
"react": "^19.1.1",
|
|
"react-dom": "^19.1.1",
|
|
"react-markdown": "^10.1.0",
|
|
"react-syntax-highlighter": "^15.6.6",
|
|
"remark-gfm": "^4.0.1",
|
|
"simple-git": "^3.28.0",
|
|
"sonner": "^2.0.7",
|
|
"strip-json-comments": "^5.0.3",
|
|
"tailwind-merge": "^3.3.1",
|
|
"web-push": "^3.6.7",
|
|
"yaml": "^2.8.1",
|
|
"zustand": "^5.0.8"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.33.0",
|
|
"@tailwindcss/postcss": "^4.0.0",
|
|
"@types/adm-zip": "^0.5.7",
|
|
"@types/node": "^24.3.1",
|
|
"@types/react": "^19.1.10",
|
|
"@types/react-dom": "^19.1.7",
|
|
"@vitejs/plugin-react": "^5.0.0",
|
|
"autoprefixer": "^10.4.21",
|
|
"concurrently": "^9.2.1",
|
|
"cors": "^2.8.5",
|
|
"cross-env": "^7.0.3",
|
|
"eslint": "^9.33.0",
|
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
"eslint-plugin-react-refresh": "^0.4.20",
|
|
"globals": "^16.3.0",
|
|
"nodemon": "^3.1.7",
|
|
"tailwindcss": "^4.0.0",
|
|
"tsx": "^4.20.6",
|
|
"tw-animate-css": "^1.3.8",
|
|
"typescript": "~5.8.3",
|
|
"typescript-eslint": "^8.39.1",
|
|
"vite": "^7.1.2",
|
|
"vite-plugin-pwa": "^1.0.3"
|
|
},
|
|
"files": [
|
|
"dist",
|
|
"server",
|
|
"bin",
|
|
"public",
|
|
"package.json",
|
|
"README.md"
|
|
]
|
|
}
|