Files
plane/apps/web/package.json
T
cb5df34207 feat: pylon chat support integration (#5582)
* feat: implement pylon chat support feature and remove Intercom integration

- Added ChatSupportConfig component for managing chat support settings.
- Integrated chat support functionality in the GeneralConfigurationForm.
- Replaced Intercom references with chat support configurations in the API and instance management.
- Removed Intercom SDK dependency and related components.
- Updated types to reflect changes in configuration keys for chat support.

* feat: add email hash to users/me endpoint for Pylon identity verification

Add HMAC-SHA256 hash of user email to support Pylon chat widget identity
verification. The hash is computed using a secret key from the
PYLON_IDENTITY_SECRET environment variable.

Co-Authored-By: Claude Opus 4.5 <[email protected]>

* refactor: rename env var to CHAT_SUPPORT_IDENTITY_VERIFICATION_SECRET

Use a vendor-agnostic name for the identity verification secret.

Co-Authored-By: Claude Opus 4.5 <[email protected]>

* feat: check IS_CHAT_SUPPORT_ENABLED before generating email hash

Only return the email hash when chat support is enabled via instance
configuration. This avoids unnecessary hash computation when the
feature is disabled.

Co-Authored-By: Claude Opus 4.5 <[email protected]>

* feat: add email_hash for chat support integration

---------

Co-authored-by: sriramveeraghanta <[email protected]>
Co-authored-by: Claude Opus 4.5 <[email protected]>
2026-01-27 20:23:44 +05:30

112 lines
3.8 KiB
JSON

{
"name": "web",
"version": "1.2.0",
"private": true,
"license": "AGPL-3.0",
"type": "module",
"scripts": {
"dev": "react-router dev --port 3000",
"build": "react-router build",
"preview": "react-router build && serve -s build/client -l 3000",
"start": "serve -s build/client -l 3000",
"clean": "rm -rf .turbo && rm -rf .next && rm -rf .react-router && rm -rf node_modules && rm -rf dist && rm -rf build",
"check:lint": "eslint . --cache --cache-location node_modules/.cache/eslint/ --max-warnings=14367",
"check:types": "react-router typegen && tsc --noEmit",
"check:format": "prettier . --cache --check",
"fix:lint": "eslint . --cache --cache-location node_modules/.cache/eslint/ --fix --max-warnings=14367",
"fix:format": "prettier . --cache --write"
},
"dependencies": {
"@atlaskit/pragmatic-drag-and-drop": "catalog:",
"@atlaskit/pragmatic-drag-and-drop-auto-scroll": "catalog:",
"@atlaskit/pragmatic-drag-and-drop-hitbox": "catalog:",
"@blueprintjs/popover2": "^1.13.3",
"@bprogress/core": "catalog:",
"@dotenvx/dotenvx": "^1.47.6",
"@flatfile/api": "^1.12.0",
"@flatfile/hooks": "^1.6.0",
"@flatfile/react": "^7.13.4",
"@fontsource-variable/inter": "5.2.8",
"@fontsource/ibm-plex-mono": "5.2.7",
"@fontsource/material-symbols-rounded": "5.2.30",
"@headlessui/react": "^1.7.19",
"@plane/constants": "workspace:*",
"@plane/editor": "workspace:*",
"@plane/etl": "workspace:*",
"@plane/hooks": "workspace:*",
"@plane/i18n": "workspace:*",
"@plane/propel": "workspace:*",
"@plane/sdk": "workspace:*",
"@plane/services": "workspace:*",
"@plane/shared-state": "workspace:*",
"@plane/types": "workspace:*",
"@plane/ui": "workspace:*",
"@plane/utils": "workspace:*",
"@popperjs/core": "^2.11.8",
"@react-pdf/renderer": "^3.4.5",
"@react-router/node": "catalog:",
"@sentry/react-router": "catalog:",
"@tanstack/react-table": "^8.21.3",
"@todesktop/client-core": "^1.12.4",
"axios": "catalog:",
"clsx": "^2.0.0",
"cmdk": "^1.0.0",
"comlink": "^4.4.1",
"date-fns": "^4.1.0",
"emoji-picker-react": "^4.5.16",
"export-to-csv": "^1.4.0",
"fuse.js": "^7.0.0",
"isbot": "^5.1.31",
"lodash-es": "catalog:",
"lucide-react": "catalog:",
"markdown-to-jsx": "^7.5.0",
"mobx": "catalog:",
"mobx-react": "catalog:",
"mobx-utils": "catalog:",
"next-themes": "0.4.6",
"pako": "^2.1.0",
"papaparse": "^5.4.1",
"posthog-js": "1.290.0",
"react": "catalog:",
"react-color": "^2.19.3",
"react-dom": "catalog:",
"react-dropzone": "^14.2.3",
"react-fast-compare": "^3.2.2",
"react-grid-layout": "^1.5.0",
"react-hook-form": "7.51.5",
"react-is": "^18.2.0",
"react-markdown": "^9.0.0",
"react-masonry-component": "^6.3.0",
"react-pdf-html": "^2.1.2",
"react-popper": "^2.3.0",
"react-resizable": "^3.0.5",
"react-router": "catalog:",
"recharts": "^2.12.7",
"remark-gfm": "^4.0.1",
"serve": "14.2.5",
"smooth-scroll-into-view-if-needed": "^2.0.2",
"socket.io-client": "^4.8.1",
"swr": "catalog:",
"use-font-face-observer": "^1.2.2",
"uuid": "catalog:"
},
"devDependencies": {
"@dotenvx/dotenvx": "catalog:",
"@plane/tailwind-config": "workspace:*",
"@plane/typescript-config": "workspace:*",
"@react-router/dev": "catalog:",
"@tailwindcss/typography": "0.5.19",
"@types/lodash-es": "catalog:",
"@types/node": "catalog:",
"@types/papaparse": "^5.3.14",
"@types/react": "catalog:",
"@types/react-color": "^3.0.6",
"@types/react-dom": "catalog:",
"@types/react-grid-layout": "^1.3.5",
"@vercel/react-router": "^1.2.3",
"typescript": "catalog:",
"vite": "catalog:",
"vite-tsconfig-paths": "^5.1.4"
}
}