Files
Siteforge/package.json
T
nmemmertandClaude Sonnet 5 8496e227b3
Publish Container / build (push) Successful in 14m56s
Stop showing email-derived names in student discussions; v2.2.1
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>
2026-09-24 11:15:54 -04:00

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"
}
}