Publish Container / build (push) Successful in 14m56s
Community posts/replies fell back to the local part of the student's email (e.g. "student.test" from student.test@versebyverse.local) whenever they hadn't set a display name. The per-lesson discussion comments were worse — they fell back to the FULL email address, and that endpoint has no auth requirement, so it was publicly readable. Adds getCommunityDisplayName() in study-helpers.js: uses the student's display name when set, otherwise assigns a stable "Student XXXX" handle derived from their account id — never their email. Both the community board and lesson comments now resolve names live from the author's current account at read time (falling back to the stored snapshot only if the account was deleted), so this also fixes any already-posted content without a data migration. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
60 lines
1.6 KiB
JSON
60 lines
1.6 KiB
JSON
{
|
|
"name": "siteforge",
|
|
"private": true,
|
|
"version": "2.2.1",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"api": "node --env-file=.env server.js",
|
|
"dev:full": "concurrently \"npm:api\" \"npm:dev\"",
|
|
"build": "tsc -b && vite build",
|
|
"start": "node --env-file=.env server.js",
|
|
"lint": "eslint .",
|
|
"preview": "vite preview"
|
|
},
|
|
"dependencies": {
|
|
"@aws-sdk/client-s3": "^3.1135.0",
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@tiptap/react": "^3.27.0",
|
|
"@tiptap/starter-kit": "^3.27.0",
|
|
"chart.js": "^4.4.0",
|
|
"docx": "^9.6.1",
|
|
"express": "^5.2.1",
|
|
"express-rate-limit": "^8.4.1",
|
|
"fuse.js": "^7.4.2",
|
|
"mammoth": "^1.12.0",
|
|
"multer": "^2.3.0",
|
|
"otplib": "^13.4.0",
|
|
"prop-types": "^15.8.1",
|
|
"qrcode": "^1.5.4",
|
|
"react": "^19.2.4",
|
|
"react-chartjs-2": "^5.2.0",
|
|
"react-dom": "^19.2.4",
|
|
"react-markdown": "^10.1.0",
|
|
"react-router-dom": "^7.13.1",
|
|
"react-simple-maps": "^3.0.0",
|
|
"remark-gfm": "^4.0.1",
|
|
"resend": "^6.10.0",
|
|
"tar": "^7.5.19"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.39.4",
|
|
"@types/node": "^24.12.0",
|
|
"@types/qrcode": "^1.5.6",
|
|
"@types/react": "^19.2.14",
|
|
"@types/react-dom": "^19.2.3",
|
|
"@vitejs/plugin-react": "^6.0.0",
|
|
"concurrently": "^9.2.1",
|
|
"eslint": "^9.39.4",
|
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
"eslint-plugin-react-refresh": "^0.5.2",
|
|
"globals": "^17.4.0",
|
|
"typescript": "~5.9.3",
|
|
"typescript-eslint": "^8.56.1",
|
|
"vite": "^8.0.0",
|
|
"vite-plugin-pwa": "^1.3.0"
|
|
}
|
|
}
|