diff --git a/backend/app/services/detailing.py b/backend/app/services/detailing.py
index 245d023..cf3d4d7 100644
--- a/backend/app/services/detailing.py
+++ b/backend/app/services/detailing.py
@@ -11,6 +11,7 @@
import json
import logging
+import re
from typing import Any
import httpx
@@ -52,7 +53,10 @@
text = value.strip()
if not text or text.lower() in PLACEHOLDERS:
return None
- return text[:max_len]
+ # LLM вместо markdown приносит HTML (
, , ) — при утверждении он
+ # попадал в описание и вылезал тегами при редактировании; просили markdown
+ text = re.sub(r"?[a-z][^>]*>", " ", text, flags=re.IGNORECASE)
+ return re.sub(r"[ \t]{2,}", " ", text)[:max_len]
def build_prompt(
diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index 4c430e4..c34c202 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -150,6 +150,14 @@
.nav-topbar-current .new-task-label {
display: none;
}
+ /* кнопка-иконка: .btn кита width:100% и несимметричные паддинги — на мобильном
+ она растягивается с пустым хвостом после скрытия лейбла */
+ .nav-topbar-current .btn {
+ width: auto;
+ min-height: 38px;
+ padding: 8px 10px;
+ justify-content: center;
+ }
}
/* У кита .card имеет intrinsic max-width: 340px / width: max-content — в наших видах
карточки должны заполнять колонку контента целиком (иначе обрезаются действия).
@@ -222,6 +230,14 @@
.badge .ph {
margin-right: 0.35em;
}
+/* Тосты: у .toast-progress-bar кита анимация без duration — мгновенно доходит
+ до scaleX(0) (forwards) и перекрывает inline transform, которым полоской
+ таймера управляет Vue-адаптер. Отключаем — полоска снова видна.
+ Селектор повторяет специфичность кита (.toast .toast-progress .toast-progress-bar),
+ иначе переопределение проигрывает независимо от порядка. */
+.toast .toast-progress .toast-progress-bar {
+ animation: none;
+}
/* конфетти за закрытую задачу (gamification.ts рисует слой частиц) */
.confetti-layer {
position: fixed;
diff --git a/frontend/src/views/TaskView.vue b/frontend/src/views/TaskView.vue
index 52c1bfd..1403409 100644
--- a/frontend/src/views/TaskView.vue
+++ b/frontend/src/views/TaskView.vue
@@ -1024,6 +1024,9 @@
/* чипы-переходы в шапке (родитель, проект) */
.meta-link {
text-decoration: none;
+ /* инлайн- внутри flex-меты даёт бейджу на 1px другой базлайн —
+ делаем сам flex-элементом */
+ display: inline-flex;
}
.meta-link:hover .badge {
color: var(--accent, #7aa2f7);
@@ -1197,6 +1200,10 @@
flex-direction: column;
gap: 0.5rem;
}
+/* у .form-group кита max-width: 600px — редактор описания на весь контейнер */
+.inline-desc :deep(.form-group) {
+ max-width: 100%;
+}
.inline-desc .inline-actions {
display: flex;
gap: 0.25rem;