diff --git a/CHANGELOG.md b/CHANGELOG.md index a79961d..2d1d956 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,79 @@ ## [Unreleased] +## [0.5.7] — 2026-05-22 + +Сквозное ревью UX: пройдено 12 сценариев глазами пользователя, найдено +13 проблем (3 настоящих бага P0 + 4 UX-просадки P1 + 6 мелочей P2), +все починены. + +### Fixed (P0 — функциональные баги) + +- **Match-челленджи теперь пишутся в историю.** Раньше клик ✓ в окне + Match Summary обновлял только локальный `Set` — челленджи + не доходили до store, и стрик / today_done / достижения игнорировали + игровые тренировки (самую главную фишку приложения). Сейчас IPC + `markChallengeDone` пишет entry с `source='match'`, + `exerciseId='challenge:'`, `actualReps`, `reps` (snapshot). +- **Tray-пауза синхронизирована с Dashboard.** Раньше «Пауза напоминаний» + из tray использовала scheduler-local `paused` boolean, который не + отражался в `settings.globalEnabled` — Dashboard показывал «running» + с тикающим таймером, хотя fires не приходили. Сейчас единый + source of truth — `settings.globalEnabled`. `setPaused/isPaused` + удалены, IPC `pauseAll/resumeAll` переписаны на updateSettings. +- **WhatsNew покажется обновляющимся пользователям.** В v0.5.6 логика + была: `lastSeenVersion === undefined` → silent save (не показывать). + Это означало что **никто** из текущих пользователей при апгрейде с + v0.5.5 не увидит описание новых фич. Сейчас: если есть Exercise + с `lastDoneAt` — пользователь существующий, показываем заметки + текущей версии. Иначе (новичок) — silent. + +### Fixed (P1 — UX просадки) + +- **Удаление упражнения теперь спрашивает подтверждение.** Раньше + один клик в menu «Удалить» сразу удалял. Сейчас iOS-style ConfirmModal + с destructive-кнопкой. +- **Daily goal закрыт — больше не «25 часов 13 минут».** Когда дневная + цель достигнута, ExerciseCard показывает «Цель закрыта · 100/100» + с success-зелёным цветом, а не запутанный обратный отсчёт до завтра. +- **Авто-пауза на ВКС видна в Dashboard.** Раньше fires пропускались + молча — пользователь не понимал почему через 12 мин ничего не пришло. + Сейчас info-баннер «Не дёргаем — ты на встрече» с указанием закрыть + Zoom/Teams/etc. +- **Native `window.confirm()` → iOS-style ConfirmModal** в restore-операции. + Раньше всплывал серый системный диалог. + +### Fixed (P2 — полировка) + +- **Achievement unlock celebration.** Когда впервые открылся новый + badge — pulse + accent-glow анимация 2.8 сек. Список celebrated + хранится в localStorage, при следующем заходе анимации нет. +- **Match Summary close confirm.** При закрытии окна с незакрытыми + челленджами спрашиваем подтверждение с указанием остатка. +- **TTS задержка 800мс.** Дикторский голос даёт пользователю шанс + decrement'нуть stepper — иначе TTS произносил планируемые reps в тот + момент когда юзер уже изменил цифру. +- **Tracking badge точность.** Раньше зелёный показывался даже при + `queued` launch option. Сейчас 3 состояния: `live` (success, всё + работает), `setup` (warning «закрой Steam и снова открой» если launch + option ещё не применён), `off` (muted, не подключено). +- **HistoryEntry хранит snapshot `reps`+`name`+`source`.** Heatmap и + achievements больше не теряют данные после удаления упражнения. +- **Adaptive-badge на ExerciseCard.** Маленькая Brain-иконка показывает, + что упражнение в адаптивном режиме — пользователь понимает почему + Next не строго равен intervalMinutes. + +### Added + +- `src/renderer/src/components/ui/ConfirmModal.tsx` — переиспользуемый + iOS-style confirm с focus-trap'ом через Modal. +- IPC `markChallengeDone(challengeId, reps)` — handler в main, метод в + preload (раньше канал был в IPC enum, handler не зарегистрирован). +- IPC `getMeetingActive` + event `evtMeetingChanged` — meeting-detect + broadcast'ит при переходе on/off. +- Helper `repsDoneTodayForExercise(history, exercise)` — + per-exercise daily count для UI индикатора goal. + ## [0.5.6] — 2026-05-22 Большой релиз с 7 новыми фичами + экран «Что нового», который покажется @@ -343,7 +416,8 @@ иконки), системный трей, автозапуск с Windows, native-уведомления, NSIS-инсталлятор, auto-update через electron-updater. -[Unreleased]: https://xn--90adajar8af4h.xn--p1ai/git/AnRil/laude/compare/v0.5.6...HEAD +[Unreleased]: https://xn--90adajar8af4h.xn--p1ai/git/AnRil/laude/compare/v0.5.7...HEAD +[0.5.7]: https://xn--90adajar8af4h.xn--p1ai/git/AnRil/laude/releases/tag/v0.5.7 [0.5.6]: https://xn--90adajar8af4h.xn--p1ai/git/AnRil/laude/releases/tag/v0.5.6 [0.5.5]: https://xn--90adajar8af4h.xn--p1ai/git/AnRil/laude/releases/tag/v0.5.5 [0.5.4]: https://xn--90adajar8af4h.xn--p1ai/git/AnRil/laude/releases/tag/v0.5.4 diff --git a/CLAUDE.md b/CLAUDE.md index ad42513..eea3be1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,7 +4,7 @@ ## TL;DR -**Laude / Exercise Reminder** — Windows desktop приложение на Electron 33, которое напоминает делать упражнения и опционально парсит статистику матчей Dota 2 (через GSI) в количество повторений. Текущая версия — **0.5.6**. Один разработчик (AnRil), один remote — self-hosted Gitea. +**Laude / Exercise Reminder** — Windows desktop приложение на Electron 33, которое напоминает делать упражнения и опционально парсит статистику матчей Dota 2 (через GSI) в количество повторений. Текущая версия — **0.5.7**. Один разработчик (AnRil), один remote — self-hosted Gitea. ## Стек diff --git a/README.md b/README.md index 9577139..3d319d2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Windows desktop приложение, которое напоминает делать упражнения во время работы за компьютером. Опционально подключается к Dota 2 и после каждого матча превращает статистику (смерти, убийства, ассисты) в количество повторений. -[![release](https://img.shields.io/badge/release-v0.5.6-orange)](https://xn--90adajar8af4h.xn--p1ai/git/AnRil/laude/releases/latest) +[![release](https://img.shields.io/badge/release-v0.5.7-orange)](https://xn--90adajar8af4h.xn--p1ai/git/AnRil/laude/releases/latest) [![tests](https://img.shields.io/badge/tests-135%20passing-green)]() [![platform](https://img.shields.io/badge/platform-Windows%2010%2F11-blue)]() diff --git a/src/shared/release-notes.ts b/src/shared/release-notes.ts index 23b9beb..b035c94 100644 --- a/src/shared/release-notes.ts +++ b/src/shared/release-notes.ts @@ -21,6 +21,86 @@ export type ReleaseNoteItem = { export type ReleaseNotes = Record export const RELEASE_NOTES: Record = { + '0.5.7': { + ru: [ + { + title: 'Челленджи из матчей идут в историю', + detail: + 'Раньше ✓ в Match Summary не считался — стрик и достижения игнорировали игровые тренировки. Исправлено.', + tag: 'fix' + }, + { + title: 'Пауза из трея и из Dashboard теперь синхронизированы', + detail: 'Раньше Dashboard показывал «running» когда tray был на паузе.', + tag: 'fix' + }, + { + title: 'Удаление упражнения спрашивает подтверждение', + tag: 'fix' + }, + { + title: 'Daily goal: «Цель закрыта · 100/100»', + detail: + 'Когда дневная цель достигнута — больше не показываем обратный отсчёт «25ч 13м».', + tag: 'fix' + }, + { + title: 'Видно когда мы молчим из-за ВКС', + detail: + 'Запущен Zoom/Teams — на Dashboard баннер «Не дёргаем — ты на встрече».', + tag: 'new' + }, + { + title: 'Celebration анимация на новых достижениях', + tag: 'new' + }, + { + title: 'Tracking-badge точнее', + detail: + 'Live / Setup (закрой Steam) / Off — раньше зелёный показывался даже когда launch option не применён.', + tag: 'fix' + } + ], + en: [ + { + title: 'Match challenges now write to history', + detail: + 'Previously ✓ in Match Summary did not count — streak and achievements ignored game training. Fixed.', + tag: 'fix' + }, + { + title: 'Tray pause and Dashboard pause are now synced', + detail: "Previously Dashboard showed 'running' while tray was paused.", + tag: 'fix' + }, + { + title: 'Exercise deletion asks for confirmation', + tag: 'fix' + }, + { + title: 'Daily goal: "Goal hit · 100/100"', + detail: + 'When the daily goal is met — no more confusing 25h countdown to tomorrow.', + tag: 'fix' + }, + { + title: "Visible when we're quiet because of a meeting", + detail: + "Zoom/Teams running — Dashboard shows a banner: 'You're in a meeting'.", + tag: 'new' + }, + { + title: 'Celebration animation on newly unlocked achievements', + tag: 'new' + }, + { + title: 'Tracking badge more accurate', + detail: + 'Live / Setup (close Steam) / Off — previously green even when launch option was not applied.', + tag: 'fix' + } + ] + }, '0.5.6': { ru: [ {