diff --git a/docs/TZ.md b/docs/TZ.md index e218094..9abc394 100644 --- a/docs/TZ.md +++ b/docs/TZ.md @@ -4,7 +4,7 @@ | | | |---|---| -| Версия ТЗ | 0.89 | +| Версия ТЗ | 0.90 | | Дата | 2026-10-10 | | Статус | На обсуждении | @@ -102,6 +102,17 @@ поля тоже показываются («— не указано») и редактируются кликом. То же — на странице проекта (название, заметка, актуальность, приоритет). Полный режим правки (вся форма целиком) сохраняется наряду с инлайном. + Открытие редактора ставит фокус в первое поле (клик по значению = «начать + печатать»), а Esc отменяет правку независимо от того, где сейчас фокус (0.90): + без этого Esc работал, только пока фокус оставался внутри редактора, — после + клика по соседней строке он молча перестаёт действовать. +- **Длительность — часами и минутами** (0.90): оценка и факт вводятся двумя полями + («ч» и «мин»), а не переводом в минуты. Пока в полях печатают, они источник + истины: пришедшее от страницы значение применяется, только если не совпадает с + уже набранным (иначе очищенное поле мгновенно наполнялось прежним числом, и + переписать значение было нельзя). Границы — как у API (`1…1440` мин): выход из + полей сворачивает минуты в часы («0 ч 90 мин» → «1 ч 30 мин») и зажимает + значение, а не сервер отвечает 422 после нажатия ✓. - **README вместо описания-ссылки** (0.41): если **описание задачи** состоит из одной ссылки на git-репозиторий, вместо неё показывается `README.md` из репозитория (с подписью-ссылкой на источник). Хост не обязан быть @@ -841,6 +852,16 @@ - **Манифест**: standalone, тёмная палитра кита (`#16161e` — фон и theme-color, чтобы не мигало белым при запуске и не зеленела шапка окна), иконки 192/512 + maskable-512, `id`/`start_url` = `/`, язык ru. +- **Иконки** (0.90): растрируются из лого скриптом `tools/rasterize_icons.sh` — + единственный источник, поэтому знак в шапке, иконка вкладки и иконка приложения + не разъезжаются. У скругления холста логотипа (`rx` 10 = 15% стороны) в иконках + «any» **углы прозрачные**: с впечатанным фоном скругление сливается с заливкой + холста, и иконка читается квадратом с острыми углами — в том числе в шторке + системных уведомлений (3.21), где она и была замечена владельцем. Эти же 192/512 + отдаются уведомлению как `icon` (0.90). Где прозрачность недопустима, фон + впечатан: `apple-touch-icon.png` (180, iOS рисует прозрачность чёрным и обрезает + иконку своей маской — отдельный файл, а не 192 из «any») и `maskable-512.png` + (Android обрезает по кругу, холст в safe zone 80%). - **Service Worker** (vite-plugin-pwa, `autoUpdate`; с 0.88 — свой воркер `src/sw.ts`, стратегия `injectManifest`): precache оболочки — собранные ассеты, шрифты/иконки кита (~6 МБ лимит), `/api/*`, `/auth/*`, `/mcp/*` никогда не кэшируются и не получают diff --git a/frontend/index.html b/frontend/index.html index 6d7fb99..11e6fee 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -10,7 +10,10 @@ - + + GNexus Tasks diff --git a/frontend/public/icons/apple-touch-icon.png b/frontend/public/icons/apple-touch-icon.png new file mode 100644 index 0000000..cc6af26 --- /dev/null +++ b/frontend/public/icons/apple-touch-icon.png Binary files differ diff --git a/frontend/public/icons/icon-192.png b/frontend/public/icons/icon-192.png index 22cc9fe..3ed7578 100644 --- a/frontend/public/icons/icon-192.png +++ b/frontend/public/icons/icon-192.png Binary files differ diff --git a/frontend/public/icons/icon-512.png b/frontend/public/icons/icon-512.png index 36370a4..dc4419c 100644 --- a/frontend/public/icons/icon-512.png +++ b/frontend/public/icons/icon-512.png Binary files differ diff --git a/frontend/src/components/DurationInput.vue b/frontend/src/components/DurationInput.vue index 9aa69e7..53fb778 100644 --- a/frontend/src/components/DurationInput.vue +++ b/frontend/src/components/DurationInput.vue @@ -1,24 +1,42 @@