feat: rename to Vibe; relax password policy
This commit is contained in:
@@ -49,8 +49,8 @@ func (h *apiHandler) register(w http.ResponseWriter, r *http.Request) {
|
|||||||
writeError(w, http.StatusBadRequest, "display_name must be 1-64 chars")
|
writeError(w, http.StatusBadRequest, "display_name must be 1-64 chars")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if len(req.Password) < 8 || len(req.Password) > 128 {
|
if len(req.Password) == 0 || len(req.Password) > 128 {
|
||||||
writeError(w, http.StatusBadRequest, "password must be 8-128 chars")
|
writeError(w, http.StatusBadRequest, "password must be 1-128 chars")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -5,8 +5,8 @@
|
|||||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
||||||
<meta name="theme-color" content="#008080" />
|
<meta name="theme-color" content="#008080" />
|
||||||
<meta name="description" content="Пульс — лёгкий self-hosted мессенджер для близких" />
|
<meta name="description" content="Vibe — лёгкий self-hosted мессенджер для близких" />
|
||||||
<title>Пульс — мессенджер</title>
|
<title>Vibe — мессенджер</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
|
|||||||
+2
-2
@@ -6,7 +6,7 @@ function Splash() {
|
|||||||
return (
|
return (
|
||||||
<div className="flex min-h-full items-center justify-center p-4">
|
<div className="flex min-h-full items-center justify-center p-4">
|
||||||
<div className="bevel w-full max-w-xs bg-panel">
|
<div className="bevel w-full max-w-xs bg-panel">
|
||||||
<div className="win-title px-1.5 py-1 text-xs font-bold tracking-wide">Пульс — Загрузка</div>
|
<div className="win-title px-1.5 py-1 text-xs font-bold tracking-wide">Vibe — Загрузка</div>
|
||||||
<div className="flex items-center gap-3 p-3">
|
<div className="flex items-center gap-3 p-3">
|
||||||
<span className="bevel flex h-10 w-10 shrink-0 items-center justify-center bg-accent text-white">
|
<span className="bevel flex h-10 w-10 shrink-0 items-center justify-center bg-accent text-white">
|
||||||
<svg viewBox="0 0 24 24" className="h-5 w-5" fill="none" shapeRendering="crispEdges" aria-hidden="true">
|
<svg viewBox="0 0 24 24" className="h-5 w-5" fill="none" shapeRendering="crispEdges" aria-hidden="true">
|
||||||
@@ -20,7 +20,7 @@ function Splash() {
|
|||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
<div className="min-w-0">
|
<div className="min-w-0">
|
||||||
<p className="text-sm font-bold text-fg">Пульс</p>
|
<p className="text-sm font-bold text-fg">Vibe</p>
|
||||||
<p className="text-[11px] text-muted">
|
<p className="text-[11px] text-muted">
|
||||||
Подключаемся<span className="blink">_</span>
|
Подключаемся<span className="blink">_</span>
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ export default function Sidebar({
|
|||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
<span className="truncate text-sm font-bold text-fg">Пульс</span>
|
<span className="truncate text-sm font-bold text-fg">Vibe</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex shrink-0 items-center gap-1">
|
<div className="flex shrink-0 items-center gap-1">
|
||||||
<button
|
<button
|
||||||
|
|||||||
@@ -52,8 +52,8 @@ export default function AuthScreen() {
|
|||||||
if (mode === 'register' && displayName.trim().length === 0) {
|
if (mode === 'register' && displayName.trim().length === 0) {
|
||||||
next.displayName = 'Укажите, как вас показывать'
|
next.displayName = 'Укажите, как вас показывать'
|
||||||
}
|
}
|
||||||
if (password.length < 8) {
|
if (password.length === 0) {
|
||||||
next.password = 'Минимум 8 символов'
|
next.password = 'Введите пароль'
|
||||||
}
|
}
|
||||||
return next
|
return next
|
||||||
}, [username, displayName, password, mode])
|
}, [username, displayName, password, mode])
|
||||||
@@ -88,7 +88,7 @@ export default function AuthScreen() {
|
|||||||
<PulseMark className="h-3 w-3" />
|
<PulseMark className="h-3 w-3" />
|
||||||
</span>
|
</span>
|
||||||
<span className="flex-1 truncate text-xs font-bold tracking-wide">
|
<span className="flex-1 truncate text-xs font-bold tracking-wide">
|
||||||
Пульс — {mode === 'login' ? 'Вход в систему' : 'Регистрация'}
|
Vibe — {mode === 'login' ? 'Вход в систему' : 'Регистрация'}
|
||||||
</span>
|
</span>
|
||||||
<span className="win-btn" aria-hidden="true">
|
<span className="win-btn" aria-hidden="true">
|
||||||
_
|
_
|
||||||
@@ -107,7 +107,7 @@ export default function AuthScreen() {
|
|||||||
<PulseMark className="h-5 w-5" />
|
<PulseMark className="h-5 w-5" />
|
||||||
</span>
|
</span>
|
||||||
<div className="min-w-0">
|
<div className="min-w-0">
|
||||||
<p className="text-sm font-bold text-fg">Пульс</p>
|
<p className="text-sm font-bold text-fg">Vibe</p>
|
||||||
<p className="text-[11px] text-muted">Тёплый мессенджер для своих</p>
|
<p className="text-[11px] text-muted">Тёплый мессенджер для своих</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -207,7 +207,7 @@ export default function AuthScreen() {
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<p id="password-hint" className={`mt-1 text-[11px] ${errors.password ? 'text-danger' : 'text-muted'}`}>
|
<p id="password-hint" className={`mt-1 text-[11px] ${errors.password ? 'text-danger' : 'text-muted'}`}>
|
||||||
{errors.password ?? 'Минимум 8 символов'}
|
{errors.password ?? 'Без строгих требований'}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -238,7 +238,7 @@ export default function AuthScreen() {
|
|||||||
<div className="bevel mt-3 bg-panel px-3 py-2">
|
<div className="bevel mt-3 bg-panel px-3 py-2">
|
||||||
<div className="marquee text-[11px] text-accent">
|
<div className="marquee text-[11px] text-accent">
|
||||||
<span>
|
<span>
|
||||||
★ Добро пожаловать на Пульс ★ Ваш домашний сервер ★ Без слежки и лишнего шума ★ Заходите чаще ★
|
★ Добро пожаловать на Vibe ★ Ваш домашний сервер ★ Без слежки и лишнего шума ★ Заходите чаще ★
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="mt-1 flex items-center justify-between border-t border-surface-3 pt-1.5">
|
<div className="mt-1 flex items-center justify-between border-t border-surface-3 pt-1.5">
|
||||||
|
|||||||
@@ -354,7 +354,7 @@ export default function ChatApp({ user }: ChatAppProps) {
|
|||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
<span className="flex-1 truncate text-xs font-bold tracking-wide">Пульс — Мессенджер</span>
|
<span className="flex-1 truncate text-xs font-bold tracking-wide">Vibe — Мессенджер</span>
|
||||||
<span className="win-btn" aria-hidden="true">
|
<span className="win-btn" aria-hidden="true">
|
||||||
_
|
_
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ self.addEventListener('push', (event) => {
|
|||||||
} catch {
|
} catch {
|
||||||
payload = { body: event.data.text() }
|
payload = { body: event.data.text() }
|
||||||
}
|
}
|
||||||
const title = payload.title ?? 'Пульс'
|
const title = payload.title ?? 'Vibe'
|
||||||
const body = payload.body ?? 'Новое сообщение'
|
const body = payload.body ?? 'Новое сообщение'
|
||||||
event.waitUntil(
|
event.waitUntil(
|
||||||
self.registration.showNotification(title, {
|
self.registration.showNotification(title, {
|
||||||
|
|||||||
+2
-2
@@ -14,8 +14,8 @@ export default defineConfig({
|
|||||||
filename: 'sw.ts',
|
filename: 'sw.ts',
|
||||||
registerType: 'autoUpdate',
|
registerType: 'autoUpdate',
|
||||||
manifest: {
|
manifest: {
|
||||||
name: 'Messenger',
|
name: 'Vibe',
|
||||||
short_name: 'Messenger',
|
short_name: 'Vibe',
|
||||||
theme_color: '#008080',
|
theme_color: '#008080',
|
||||||
background_color: '#c0c0c0',
|
background_color: '#c0c0c0',
|
||||||
display: 'standalone',
|
display: 'standalone',
|
||||||
|
|||||||
Reference in New Issue
Block a user