fix: корректные пути для favicon в html-ошибок и собранный под проект TailWind
HYPN0 Build and Push Docker Image / build-and-push (push) Successful in 28s

This commit is contained in:
erjemin committed 2026-09-16 00:48:04 +03:00
1 parent 978e5116f2
commit abd4678e4a
13 files changed
+24 -23

No files matched your search

+1
View File
@@ -583,6 +583,7 @@ CLI больше не нужен.
| `.env.sample` | Env template |
| `Dockerfile` | Сборка |
| `docker-compose.local.yml` | Dev |
| `docker-compose.prod-test.yml` | Тестовый Prod |
| `docker-compose.prod.yml` | Prod |
| `config/nginx/hypn0-app--external-nginx.conf` | Nginx |
| `.gitea/workflows/docker-publish.yaml` | CI/CD |
+2 -2
View File
@@ -6,8 +6,8 @@
<title>400 — Сбой ментального протокола | HypnoSVG</title>
<meta name="description" content="Ошибка 400: Некорректный запрос к матрице HypnoSVG. Сервер не распознал структуру переданного сигнала." />
<meta name="robots" content="noindex, follow" />
<link rel="icon" type="image/svg+xml" href="/static/img/favicon.svg" />
<link rel="shortcut icon" href="/static/img/favicon.ico" />
<link rel="icon" type="image/svg+xml" href="/media/_error/favicon.svg" />
<link rel="shortcut icon" href="/media/_error/favicon.ico" />
<script>
(function() {
var saved = localStorage.getItem('darkMode');
+2 -2
View File
@@ -6,8 +6,8 @@
<title>401 — Требуется ментальная идентификация | HypnoSVG</title>
<meta name="description" content="Ошибка 401: Доступ к закрытому узлу HypnoSVG требует прохождения авторизации." />
<meta name="robots" content="noindex, follow" />
<link rel="icon" type="image/svg+xml" href="/static/img/favicon.svg" />
<link rel="shortcut icon" href="/static/img/favicon.ico" />
<link rel="icon" type="image/svg+xml" href="/media/_error/favicon.svg" />
<link rel="shortcut icon" href="/media/_error/favicon.ico" />
<script>
(function() {
var saved = localStorage.getItem('darkMode');
+2 -2
View File
@@ -6,8 +6,8 @@
<title>403 — Отказано бюрократом 24-го уровня | HypnoSVG</title>
<meta name="description" content="Ошибка 403: Доступ к ресурсу категорически запрещен протоколами безопасности HypnoSVG." />
<meta name="robots" content="noindex, follow" />
<link rel="icon" type="image/svg+xml" href="/static/img/favicon.svg" />
<link rel="shortcut icon" href="/static/img/favicon.ico" />
<link rel="icon" type="image/svg+xml" href="/media/_error/favicon.svg" />
<link rel="shortcut icon" href="/media/_error/favicon.ico" />
<script>
(function() {
var saved = localStorage.getItem('darkMode');
+2 -2
View File
@@ -6,8 +6,8 @@
<title>404 — Векторная реальность не найдена | HypnoSVG</title>
<meta name="description" content="Ошибка 404: Запрашиваемая страница HypnoSVG не существует или стёрта волей Гипножабы." />
<meta name="robots" content="noindex, follow" />
<link rel="icon" type="image/svg+xml" href="/static/img/favicon.svg" />
<link rel="shortcut icon" href="/static/img/favicon.ico" />
<link rel="icon" type="image/svg+xml" href="/media/_error/favicon.svg" />
<link rel="shortcut icon" href="/media/_error/favicon.ico" />
<script>
(function() {
var saved = localStorage.getItem('darkMode');
+2 -2
View File
@@ -6,8 +6,8 @@
<title>413 — Перегрузка сенсорных каналов | HypnoSVG</title>
<meta name="description" content="Ошибка 413: Загружаемый файл превышает допустимый размер ментального буфера HypnoSVG." />
<meta name="robots" content="noindex, follow" />
<link rel="icon" type="image/svg+xml" href="/static/img/favicon.svg" />
<link rel="shortcut icon" href="/static/img/favicon.ico" />
<link rel="icon" type="image/svg+xml" href="/media/_error/favicon.svg" />
<link rel="shortcut icon" href="/media/_error/favicon.ico" />
<script>
(function() {
var saved = localStorage.getItem('darkMode');
+2 -2
View File
@@ -6,8 +6,8 @@
<title>429 — Слишком много мыслей в секунду | HypnoSVG</title>
<meta name="description" content="Ошибка 429: Превышен лимит запросов к генератору HypnoSVG. Сделайте ментальную паузу." />
<meta name="robots" content="noindex, follow" />
<link rel="icon" type="image/svg+xml" href="/static/img/favicon.svg" />
<link rel="shortcut icon" href="/static/img/favicon.ico" />
<link rel="icon" type="image/svg+xml" href="/media/_error/favicon.svg" />
<link rel="shortcut icon" href="/media/_error/favicon.ico" />
<script>
(function() {
var saved = localStorage.getItem('darkMode');
+2 -2
View File
@@ -6,8 +6,8 @@
<title>500 — Критический перегрев неокортекса | HypnoSVG</title>
<meta name="description" content="Ошибка 500: Внутренний сбой сервера HypnoSVG. Ведутся ментальные восстановительные работы." />
<meta name="robots" content="noindex, follow" />
<link rel="icon" type="image/svg+xml" href="/static/img/favicon.svg" />
<link rel="shortcut icon" href="/static/img/favicon.ico" />
<link rel="icon" type="image/svg+xml" href="/media/_error/favicon.svg" />
<link rel="shortcut icon" href="/media/_error/favicon.ico" />
<script>
(function() {
var saved = localStorage.getItem('darkMode');
+2 -2
View File
@@ -6,8 +6,8 @@
<title>502 — Контейнер потерял сознание | HypnoSVG</title>
<meta name="description" content="Ошибка 502: Прокси-сервер не получил ответа от бэкенда HypnoSVG." />
<meta name="robots" content="noindex, follow" />
<link rel="icon" type="image/svg+xml" href="/static/img/favicon.svg" />
<link rel="shortcut icon" href="/static/img/favicon.ico" />
<link rel="icon" type="image/svg+xml" href="/media/_error/favicon.svg" />
<link rel="shortcut icon" href="/media/_error/favicon.ico" />
<script>
(function() {
var saved = localStorage.getItem('darkMode');
+2 -2
View File
@@ -6,8 +6,8 @@
<title>503 — Плановый сеанс гипнотерапии | HypnoSVG</title>
<meta name="description" content="Ошибка 503: Сервис HypnoSVG временно недоступен из-за технического обслуживания или пиковой нагрузки." />
<meta name="robots" content="noindex, follow" />
<link rel="icon" type="image/svg+xml" href="/static/img/favicon.svg" />
<link rel="shortcut icon" href="/static/img/favicon.ico" />
<link rel="icon" type="image/svg+xml" href="/media/_error/favicon.svg" />
<link rel="shortcut icon" href="/media/_error/favicon.ico" />
<script>
(function() {
var saved = localStorage.getItem('darkMode');
+2 -2
View File
@@ -6,8 +6,8 @@
<title>504 — Разрыв астральной связи | HypnoSVG</title>
<meta name="description" content="Ошибка 504: Превышено время ожидания ответа от вышестоящего сервера HypnoSVG." />
<meta name="robots" content="noindex, follow" />
<link rel="icon" type="image/svg+xml" href="/static/img/favicon.svg" />
<link rel="shortcut icon" href="/static/img/favicon.ico" />
<link rel="icon" type="image/svg+xml" href="/media/_error/favicon.svg" />
<link rel="shortcut icon" href="/media/_error/favicon.ico" />
<script>
(function() {
var saved = localStorage.getItem('darkMode');
@@ -6,8 +6,8 @@
<title>Реконструкция матрицы | HypnoSVG</title>
<meta name="description" content="Сектор временно закрыт на квантовую реконструкцию и модернизацию алгоритмов HypnoSVG." />
<meta name="robots" content="noindex, follow" />
<link rel="icon" type="image/svg+xml" href="/static/img/favicon.svg" />
<link rel="shortcut icon" href="/static/img/favicon.ico" />
<link rel="icon" type="image/svg+xml" href="/media/_error/favicon.svg" />
<link rel="shortcut icon" href="/media/_error/favicon.ico" />
<script>
(function() {
var saved = localStorage.getItem('darkMode');
+1 -1
View File
@@ -1,2 +1,2 @@
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.static{position:static}.mx-auto{margin-left:auto;margin-right:auto}.block{display:block}.min-h-screen{min-height:100vh}.max-w-7xl{max-width:80rem}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.px-4{padding-left:1rem;padding-right:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}@media (prefers-color-scheme:dark){.dark\:bg-slate-950{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity,1))}.dark\:text-slate-100{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity,1))}}
/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.collapse{visibility:collapse}.static{position:static}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-bottom-10{bottom:-2.5rem}.-right-8{right:-2rem}.bottom-0{bottom:0}.bottom-2{bottom:.5rem}.bottom-6{bottom:1.5rem}.left-2{left:.5rem}.left-3{left:.75rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-6{right:1.5rem}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:.5rem}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-full{grid-column:1/-1}.mx-auto{margin-left:auto;margin-right:auto}.my-2\.5{margin-top:.625rem;margin-bottom:.625rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.-mb-24{margin-bottom:-6rem}.-ml-0\.5{margin-left:-.125rem}.-ml-1{margin-left:-.25rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-4{margin-top:1rem}.line-clamp-2{-webkit-line-clamp:2}.line-clamp-2,.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical}.line-clamp-3{-webkit-line-clamp:3}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-\[16\/9\]{aspect-ratio:16/9}.aspect-square{aspect-ratio:1/1}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-\[744px\]{height:744px}.h-full{height:100%}.max-h-72{max-height:18rem}.max-h-full{max-height:100%}.min-h-\[460px\]{min-height:460px}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{wLine truncated