feat: implement new feature for enhanced user experience

This commit is contained in:
2026-05-11 16:56:57 +00:00
parent 0be4852f74
commit 106efb5d6e
94 changed files with 639 additions and 595 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+13 -13
View File
@@ -23,13 +23,13 @@ services:
- online.testversion.code.subdomain=${PROJECT_NAME}
# Create two routers: one without auth for MCP/curl, one with auth for others
# Router 1: MCP/curl access (based on host + user-agent header)
- traefik.http.routers.${PROJECT_NAME}-yarnstart-mcp.rule=Host(`${PROJECT_NAME}.code.testversion.online`) && HeadersRegexp(`User-Agent`, `.*(Playwright|puppeteer|Headless|curl).*`)
- traefik.http.routers.${PROJECT_NAME}-yarnstart-mcp.priority=100
- traefik.http.routers.${PROJECT_NAME}-yarnstart-mcp.service=${PROJECT_NAME}-yarnstart
# - traefik.http.routers.${PROJECT_NAME}-yarnstart-mcp.rule=Host(`${PROJECT_NAME}.code.testversion.online`) && HeadersRegexp(`User-Agent`, `.*(Playwright|puppeteer|Headless|curl).*`)
# - traefik.http.routers.${PROJECT_NAME}-yarnstart-mcp.priority=100
# - traefik.http.routers.${PROJECT_NAME}-yarnstart-mcp.service=${PROJECT_NAME}-yarnstart
# Router 2: Regular access with basic auth
- traefik.http.routers.${PROJECT_NAME}-yarnstart.priority=50
- traefik.http.routers.${PROJECT_NAME}-yarnstart.middlewares=${PROJECT_NAME}-yarnstart-auth
- traefik.http.middlewares.${PROJECT_NAME}-yarnstart-auth.basicauth.usersfile=${PWD}/.basic-auth-web
# - traefik.http.routers.${PROJECT_NAME}-yarnstart.priority=50
# - traefik.http.routers.${PROJECT_NAME}-yarnstart.middlewares=${PROJECT_NAME}-yarnstart-auth
# - traefik.http.middlewares.${PROJECT_NAME}-yarnstart-auth.basicauth.usersfile=${PWD}/.basic-auth-web
# Service definition
- traefik.http.services.${PROJECT_NAME}-yarnstart.loadbalancer.server.port=3000
user: ${CODER_UID}:${CODER_GID}
@@ -89,7 +89,7 @@ services:
tibiadmin:
profiles:
- tibi
image: gitbase.de/cms/tibi-admin
image: gitbase.de/cms/tibi-admin-nova:dev
environment:
INDEX: spa.html
WEBROOT: /data
@@ -102,8 +102,8 @@ services:
labels:
- traefik.enable=true
- online.testversion.code.subdomain=${PROJECT_NAME}-tibiadmin
- traefik.http.routers.${PROJECT_NAME}-tibiadmin.middlewares=${PROJECT_NAME}-tibiadmin
- traefik.http.middlewares.${PROJECT_NAME}-tibiadmin.basicauth.usersfile=${PWD}/.basic-auth-code
# - traefik.http.routers.${PROJECT_NAME}-tibiadmin.middlewares=${PROJECT_NAME}-tibiadmin
# - traefik.http.middlewares.${PROJECT_NAME}-tibiadmin.basicauth.usersfile=${PWD}/.basic-auth-code
tibiadmin-dev:
profiles:
@@ -118,8 +118,8 @@ services:
labels:
- traefik.enable=true
- online.testversion.code.subdomain=${PROJECT_NAME}-tibiadmin-dev
- traefik.http.routers.${PROJECT_NAME}-tibiadmin-dev.middlewares=${PROJECT_NAME}-tibiadmin-dev
- traefik.http.middlewares.${PROJECT_NAME}-tibiadmin-dev.basicauth.usersfile=${PWD}/.basic-auth-code
# - traefik.http.routers.${PROJECT_NAME}-tibiadmin-dev.middlewares=${PROJECT_NAME}-tibiadmin-dev
# - traefik.http.middlewares.${PROJECT_NAME}-tibiadmin-dev.basicauth.usersfile=${PWD}/.basic-auth-code
user: ${CODER_UID}:${CODER_GID}
mongo:
@@ -143,8 +143,8 @@ services:
- traefik.enable=true
- online.testversion.code.subdomain=${PROJECT_NAME}-maildev
- traefik.http.services.${PROJECT_NAME}-maildev.loadbalancer.server.port=1080
- traefik.http.routers.${PROJECT_NAME}-maildev.middlewares=${PROJECT_NAME}-maildev
- traefik.http.middlewares.${PROJECT_NAME}-maildev.basicauth.usersfile=${PWD}/.basic-auth-code
# - traefik.http.routers.${PROJECT_NAME}-maildev.middlewares=${PROJECT_NAME}-maildev
# - traefik.http.middlewares.${PROJECT_NAME}-maildev.basicauth.usersfile=${PWD}/.basic-auth-code
chisel:
profiles:
+1 -1
View File
@@ -2,7 +2,7 @@ export function debounce<T extends (...args: never[]) => void>(
func: T,
wait: number
): (...args: Parameters<T>) => void {
let timeout: NodeJS.Timeout | null = null
let timeout: ReturnType<typeof setTimeout> | null = null
return (...args: Parameters<T>) => {
if (timeout) {
+17 -17
View File
@@ -6,7 +6,7 @@
"author": "Sebastian Frank <sebastian@webmakers.de>",
"license": "MIT",
"scripts": {
"validate": "svelte-check && tsc --noEmit",
"validate": "svelte-check --tsconfig ./tsconfig.validate.json && tsc --noEmit -p ./tsconfig.validate.json",
"dev": "node scripts/esbuild-wrapper.js watch",
"start": "node scripts/esbuild-wrapper.js start",
"start:mock": "MOCK=1 node scripts/esbuild-wrapper.js start",
@@ -26,36 +26,36 @@
"devDependencies": {
"@babel/cli": "^7.28.6",
"@babel/core": "^7.29.0",
"@babel/preset-env": "^7.29.0",
"@playwright/test": "^1.58.2",
"@tailwindcss/postcss": "^4.2.1",
"@babel/preset-env": "^7.29.5",
"@playwright/test": "^1.59.1",
"@tailwindcss/postcss": "^4.3.0",
"@tsconfig/svelte": "^5.0.8",
"browser-sync": "^3.0.4",
"chokidar": "^5.0.0",
"connect-history-api-fallback": "^2.0.0",
"esbuild": "^0.27.3",
"esbuild": "^0.28.0",
"esbuild-postcss": "^0.0.4",
"esbuild-svelte": "^0.9.4",
"esbuild-svelte": "^0.9.5",
"http-proxy-middleware": "^3.0.5",
"less": "^4.5.1",
"less": "^4.6.4",
"morgan": "^1.10.1",
"node-fetch": "^3.3.2",
"postcss": "^8.5.6",
"prettier": "^3.8.1",
"prettier-plugin-svelte": "^3.5.0",
"svelte": "^5.53.5",
"svelte-check": "^4.4.3",
"postcss": "^8.5.14",
"prettier": "^3.8.3",
"prettier-plugin-svelte": "^3.5.2",
"svelte": "^5.55.5",
"svelte-check": "^4.4.8",
"svelte-preprocess": "^6.0.3",
"svelte-preprocess-esbuild": "^3.0.1",
"tailwindcss": "^4.2.1",
"tailwindcss": "^4.3.0",
"tslib": "^2.8.1",
"typescript": "^5.9.3"
"typescript": "^6.0.3"
},
"dependencies": {
"@sentry/cli": "^3.2.2",
"@sentry/svelte": "^10.40.0",
"@sentry/cli": "^3.4.2",
"@sentry/svelte": "^10.52.0",
"cryptcha": "ssh://git@gitbase.de:2222/cms/cryptcha.git",
"svelte-i18n": "^4.0.1"
},
"packageManager": "yarn@4.7.0"
}
}
+1 -1
View File
@@ -8,7 +8,7 @@
"typeRoots": ["./node_modules/@types", "./types"],
"target": "esnext",
"moduleResolution": "node",
"moduleResolution": "bundler",
"jsx": "preserve",
"noEmit": true,
"skipLibCheck": true,
+11
View File
@@ -0,0 +1,11 @@
{
"extends": "./tsconfig.json",
"include": ["frontend/src/**/*", "types/**/*", "api/**/*", "./../../cms/tibi-types/index.d.ts"],
"exclude": [
"_temp/**",
"api/hooks/lib/app.server.js",
"api/hooks/lib/buildInfo.js",
"api/hooks/lib/ssr-server.js",
"**/*.map"
]
}
+2
View File
@@ -5,6 +5,8 @@ interface Ssr {
// validUntil: any // go Time
}
declare module "*.css"
/** MongoDB-style filter, e.g. { _id: "abc" } or { $or: [...] } */
type MongoFilter = Record<string, unknown>
+462 -437
View File
File diff suppressed because it is too large Load Diff