Fix migration connection exhaustion and polish auth pages
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m49s

- apply-migrations.ts: use single shared connection instead of one per operation
- Increase MariaDB max_connections from 151 to 300 in server config
- home-login-form.tsx: replace hardcoded gray colors with theme variables
- register-form.tsx: add password strength meter, spinner, theme-aligned inputs
- login-form.tsx: add Discord/Google SVG icons, spinner, smoother 2FA animation
- page/register/login: apply premium animations (float, stagger, glow, gradient)
This commit is contained in:
openhands committed 2026-07-24 11:30:58 +02:00
1 parent a9f1f4f99d
commit f7f6e09174
7 files changed
+394 -303

No files matched your search

File diff suppressed because it is too large. Load diff
+3 -3
View File
@@ -87,11 +87,11 @@ export default async function LoginPage() {
</div> </div>
</Reveal> </Reveal>
<Reveal> <Reveal>
<div className="flex flex-col lg:flex-row gap-10"> <div className="flex flex-col lg:flex-row gap-10 stagger-children">
{/* Left panel */} {/* Left panel */}
<div className="lg:w-80 shrink-0 space-y-4"> <div className="lg:w-80 shrink-0 space-y-4">
<div <div
className="relative overflow-hidden rounded-2xl border p-6 text-center" className="relative overflow-hidden rounded-2xl border p-6 text-center card-premium"
style={{ style={{
borderColor: "color-mix(in srgb, var(--color-primary) 20%, transparent)", borderColor: "color-mix(in srgb, var(--color-primary) 20%, transparent)",
background: `url(/assets/images/background.png) center/cover no-repeat`, background: `url(/assets/images/background.png) center/cover no-repeat`,
@@ -109,7 +109,7 @@ export default async function LoginPage() {
alt="Frank" alt="Frank"
width={130} width={130}
height={170} height={170}
className="object-contain mx-auto drop-shadow-xl" className="object-contain mx-auto drop-shadow-xl animate-float"
unoptimized unoptimized
priority priority
/> />
+8 -8
View File
@@ -183,7 +183,7 @@ export default async function Home() {
</Link> </Link>
</div> </div>
</div> </div>
<div className="shrink-0 relative"> <div className="shrink-0 relative animate-float">
<div <div
className="absolute -bottom-4 -left-4 w-48 h-48 rounded-full opacity-[0.15] blur-[60px]" className="absolute -bottom-4 -left-4 w-48 h-48 rounded-full opacity-[0.15] blur-[60px]"
style={{ background: "var(--color-primary)" }} style={{ background: "var(--color-primary)" }}
@@ -204,7 +204,7 @@ export default async function Home() {
{/* ── Stats ── */} {/* ── Stats ── */}
<Reveal> <Reveal>
<div className="grid grid-cols-3 gap-4"> <div className="grid grid-cols-3 gap-4 stagger-children">
{[ {[
{ value: online.toLocaleString(), label: tp("statsOnline"), icon: "/assets/images/icons/online-friends.png" }, { value: online.toLocaleString(), label: tp("statsOnline"), icon: "/assets/images/icons/online-friends.png" },
{ value: users.toLocaleString(), label: tp("statsCitizens"), icon: "/assets/images/icons/friends.png" }, { value: users.toLocaleString(), label: tp("statsCitizens"), icon: "/assets/images/icons/friends.png" },
@@ -212,7 +212,7 @@ export default async function Home() {
].map((s) => ( ].map((s) => (
<div <div
key={s.label} key={s.label}
className="relative overflow-hidden rounded-xl border p-5 text-center transition-all duration-300 hover:-translate-y-1 hover:shadow-xl" className="relative overflow-hidden rounded-xl border p-5 text-center transition-all duration-300 hover:-translate-y-1 hover:shadow-xl card-premium"
style={{ style={{
background: "color-mix(in srgb, var(--color-surface) 70%, transparent)", background: "color-mix(in srgb, var(--color-surface) 70%, transparent)",
backdropFilter: "blur(8px)", backdropFilter: "blur(8px)",
@@ -226,7 +226,7 @@ export default async function Home() {
/> />
<div className="relative"> <div className="relative">
<div <div
className="w-10 h-10 rounded-xl flex items-center justify-center mx-auto mb-2.5" className="w-10 h-10 rounded-xl flex items-center justify-center mx-auto mb-2.5 animate-pulse-glow"
style={{ background: "color-mix(in srgb, var(--color-primary) 14%, transparent)" }} style={{ background: "color-mix(in srgb, var(--color-primary) 14%, transparent)" }}
> >
<Image src={s.icon} alt="" width={24} height={24} unoptimized /> <Image src={s.icon} alt="" width={24} height={24} unoptimized />
@@ -435,9 +435,9 @@ export default async function Home() {
{/* ── Client / Play ── */} {/* ── Client / Play ── */}
<Reveal> <Reveal>
<div className="relative overflow-hidden rounded-xl border" style={{ <div className="relative overflow-hidden rounded-xl border animate-gradient" style={{
borderColor: "color-mix(in srgb, var(--color-text-muted) 12%, transparent)", borderColor: "color-mix(in srgb, var(--color-primary) 20%, transparent)",
background: "linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 6%, var(--color-surface)), color-mix(in srgb, var(--color-primary) 1%, var(--color-surface)))", background: "linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 8%, var(--color-surface)), color-mix(in srgb, var(--color-primary) 3%, var(--color-surface)), color-mix(in srgb, var(--color-accent) 4%, var(--color-surface)))",
}}> }}>
<div className="flex flex-col md:flex-row items-center gap-6 px-6 py-7"> <div className="flex flex-col md:flex-row items-center gap-6 px-6 py-7">
<div className="shrink-0"> <div className="shrink-0">
@@ -455,7 +455,7 @@ export default async function Home() {
</div> </div>
<Link <Link
href="/client" href="/client"
className="inline-flex items-center gap-2 font-extrabold text-sm px-6 py-3 rounded-xl transition-all duration-200 hover:scale-[1.03] active:scale-95 shadow-lg shrink-0" className="inline-flex items-center gap-2 font-extrabold text-sm px-6 py-3 rounded-xl transition-all duration-200 hover:scale-[1.03] active:scale-95 shadow-lg shrink-0 animate-pulse-glow"
style={{ style={{
background: "var(--color-primary)", background: "var(--color-primary)",
color: "var(--color-primary-foreground)", color: "var(--color-primary-foreground)",
+3 -3
View File
@@ -87,11 +87,11 @@ export default async function RegisterPage() {
</div> </div>
</Reveal> </Reveal>
<Reveal> <Reveal>
<div className="flex flex-col lg:flex-row gap-10"> <div className="flex flex-col lg:flex-row gap-10 stagger-children">
{/* Left panel */} {/* Left panel */}
<div className="lg:w-80 shrink-0 space-y-4"> <div className="lg:w-80 shrink-0 space-y-4">
<div <div
className="relative overflow-hidden rounded-2xl border p-6 text-center" className="relative overflow-hidden rounded-2xl border p-6 text-center card-premium"
style={{ style={{
borderColor: "color-mix(in srgb, var(--color-primary) 20%, transparent)", borderColor: "color-mix(in srgb, var(--color-primary) 20%, transparent)",
background: `url(/assets/images/background.png) center/cover no-repeat`, background: `url(/assets/images/background.png) center/cover no-repeat`,
@@ -109,7 +109,7 @@ export default async function RegisterPage() {
alt="Frank" alt="Frank"
width={130} width={130}
height={170} height={170}
className="object-contain mx-auto drop-shadow-xl" className="object-contain mx-auto drop-shadow-xl animate-float"
unoptimized unoptimized
priority priority
/> />
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff