feat: rename to Vibe; relax password policy
CI / Go (build + vet + test) (push) Canceled after 0s
CI / Web (build + lint) (push) Canceled after 0s

This commit is contained in:
vantablackTea
2026-09-28 13:11:34 +03:00
parent 61183d3f89
commit e709ae11f8
8 changed files with 17 additions and 17 deletions
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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>
+1 -1
View File
@@ -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
+6 -6
View File
@@ -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">
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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
View File
@@ -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',