mirror of
https://github.com/ether/etherpad-lite.git
synced 2026-07-17 16:47:05 +00:00
* docs: spec for admin/settings resolved runtime values (#7803) Side-channel resolved+redacted settings alongside raw file blob. Form view dropdowns and env pill chips reflect actual runtime values instead of falling back to template defaults. Save round-trip is unchanged so ${VAR:default} literals stay intact on disk. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: implementation plan for admin/settings resolved runtime (#7803) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(admin): add redactor for resolved settings payload (#7803) Pure helper that walks the live settings module and replaces known sensitive paths (users.*.password, dbSettings.password, sso.clients[*].client_secret, sessionKey, …) with [REDACTED] sentinel. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(admin): emit redacted runtime settings on /settings socket load (#7803) Existing 'results' raw-file blob is unchanged so the textarea editor and saveSettings round-trip continue to preserve \${VAR:default} literals on disk. New 'resolved' field carries the in-memory settings module run through the redactor — admin SPA can use it to show actual runtime values next to env-var placeholders. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(admin): show resolved runtime value on EnvPill (#7803) Admin SPA now stores the resolved field from the /settings socket payload and exposes useResolvedAt(path) to walk it. EnvPill renders a "→ active value" chip when the path is resolved, or "→ ••••••" with a redacted tooltip when the server returned the [REDACTED] sentinel. Old-server fallback (undefined resolved) keeps current behaviour. The admin test script glob now picks up .test.tsx alongside .test.ts so the new EnvPill tests run under tsx --test. Closes #7803. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
52 lines
1.7 KiB
JSON
52 lines
1.7 KiB
JSON
{
|
|
"name": "admin",
|
|
"private": true,
|
|
"version": "3.1.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "pnpm gen:api && vite",
|
|
"dev:only": "vite",
|
|
"gen:api": "node scripts/gen-api.mjs",
|
|
"build": "pnpm gen:api && tsc && vite build",
|
|
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
|
"build-copy": "pnpm gen:api && tsc && vite build --outDir ../src/templates/admin --emptyOutDir",
|
|
"preview": "vite preview",
|
|
"test": "pnpm gen:api && tsx --test 'src/**/__tests__/*.test.ts' 'src/**/__tests__/*.test.tsx'"
|
|
},
|
|
"dependencies": {
|
|
"@radix-ui/react-switch": "^1.2.6",
|
|
"@tanstack/react-query": "^5.100.10",
|
|
"@tanstack/react-query-devtools": "^5.100.10",
|
|
"jsonc-parser": "^3.3.1",
|
|
"openapi-fetch": "^0.17.0",
|
|
"openapi-react-query": "^0.5.4"
|
|
},
|
|
"devDependencies": {
|
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
"@radix-ui/react-toast": "^1.2.15",
|
|
"@types/react": "^19.2.14",
|
|
"@types/react-dom": "^19.2.3",
|
|
"@typescript-eslint/eslint-plugin": "^8.59.3",
|
|
"@typescript-eslint/parser": "^8.59.3",
|
|
"@vitejs/plugin-react": "^6.0.2",
|
|
"babel-plugin-react-compiler": "19.1.0-rc.3",
|
|
"eslint": "^10.4.0",
|
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
"eslint-plugin-react-refresh": "^0.5.2",
|
|
"i18next": "^26.2.0",
|
|
"i18next-browser-languagedetector": "^8.2.1",
|
|
"lucide-react": "^1.16.0",
|
|
"openapi-typescript": "^7.13.0",
|
|
"react": "^19.2.6",
|
|
"react-dom": "^19.2.6",
|
|
"react-hook-form": "^7.75.0",
|
|
"react-i18next": "^17.0.8",
|
|
"react-router-dom": "^7.15.1",
|
|
"socket.io-client": "^4.8.3",
|
|
"tsx": "^4.22.0",
|
|
"typescript": "^6.0.3",
|
|
"vite": "^8.0.13",
|
|
"vite-plugin-babel": "^1.7.1",
|
|
"zustand": "^5.0.13"
|
|
}
|
|
}
|