workspaces to dashboards, imap email sync, ffmpeg tool, tts fix, file browser refresh, automation sidebar reorder

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-02 20:00:45 +00:00
co-authored by Claude Opus 4.6
parent bd362dc586
commit 927267e041
98 changed files with 1176 additions and 802 deletions
+3 -2
View File
@@ -5,6 +5,7 @@ import { sign, verify } from '@@/jwt';
import argon2 from 'argon2';
import * as errors from '@@/custom-errors';
import { validatePassword } from './validate-password';
import { validateUsername } from './validate-username';
export const bootstrapHandler: Handler = async function (ctx) {
const body = ctx.get('body');
@@ -42,7 +43,7 @@ export const bootstrapHandler: Handler = async function (ctx) {
const confirmPassword = body.confirmPassword as string;
if (!name || !name.trim()) throw errors.BAD_REQUEST('Name is required');
if (!username || !username.trim()) throw errors.BAD_REQUEST('Username is required');
const validUsername = validateUsername(username);
validatePassword(password);
if (password !== confirmPassword) throw errors.BAD_REQUEST('Passwords do not match');
@@ -52,7 +53,7 @@ export const bootstrapHandler: Handler = async function (ctx) {
email: payload.email,
password: passwordHash,
name: name.trim(),
username: username.trim(),
username: validUsername,
role: 'Super Admin',
status: 'Active',
});