AnRil d6f94ee1c9 docs+chore: retry upload on TLS/504 + refresh README/RELEASING
Upload script:
- Retry curl on transient network failures (504, schannel TLS abrupt
  close): up to 4 retries with 15s/45s/2m/5m backoff. Before each retry,
  list the release assets server-side — Gitea sometimes commits the
  body but times out the response, so the file may already be there at
  the expected size (skip retry). If present at wrong size (partial),
  delete before re-uploading. ASCII-only (PS5.1 reads files in CP1251
  without BOM).

Docs:
- README: bump release/test badges to v0.5.1 / 51 tests; mention silent
  retry in the auto-update feature line.
- RELEASING: rewrite around the new update-channel architecture, bridge
  tags, and dropped Gitea Actions workflows.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 22:37:33 +07:00
2026-05-16 13:43:29 +07:00
2026-05-18 15:25:17 +07:00
2026-05-16 13:43:29 +07:00
2026-05-16 13:43:29 +07:00
2026-05-16 13:43:29 +07:00
2026-05-16 13:43:29 +07:00

Laude — Exercise Reminder

Windows desktop приложение, которое напоминает делать упражнения во время работы за компьютером. Опционально подключается к Dota 2 и после каждого матча превращает статистику (смерти, убийства, ассисты) в количество повторений.

release tests platform

Что внутри

  • Гибкие напоминания — любое количество упражнений, интервал от минуты до часов, разные иконки.
  • История и стрики — heatmap-календарь активности, ежедневный счётчик, серия дней подряд.
  • Тихие часы — окно времени когда напоминания подавляются (например 22:00 → 08:00), с выбором дней недели.
  • Сделал частично — степпер /+ в окне напоминания: если ты сделал 5 из 10, в историю запишется честное число.
  • Игровая интеграция (Dota 2) — Game State Integration читает статистику матча, после Победа/Поражение показывает экран с «причитающимися» повторениями (например 10 смертей × 3 = 30 приседаний).
  • Apple-style интерфейс — Plus Jakarta Sans + Bricolage Grotesque, iOS-палитра, vibrancy sidebar, spring-анимации, светлая/тёмная/системная тема.
  • Два языка — русский и английский, переключение мгновенное.
  • Auto-update — приложение само скачивает новые версии из фиксированного update-channel (проверка каждый час, силент-ретрай при сетевых сбоях).

Скриншоты

TODO: вставить screenshots Dashboard / Reminder / Match summary (light + dark).

Установка

Скачай последний Exercise-Reminder-Setup-X.Y.Z.exe со страницы релизов и запусти. Установщик:

  • Создаёт ярлык на рабочем столе и в Пуске
  • Сохраняет настройки в %APPDATA%\Exercise Reminder\
  • При запуске поверх существующей инсталляции — обновляет, настройки сохраняются

Windows SmartScreen может предупредить «не доверено» — приложение не подписано code-signing сертификатом. Нажми ПодробнееВыполнить в любом случае.

Разработка

git clone https://xn--90adajar8af4h.xn--p1ai/git/AnRil/laude.git
cd laude
npm install
npm run dev

Полезные команды:

npm run typecheck       # tsc по main + renderer
npm run test            # vitest в watch-режиме
npm run test:run        # vitest один раз (для CI)
npm run build           # сборка без NSIS
npm run dist            # сборка + NSIS-инсталлятор → release/
npm run release -- -Bump patch    # bump версии + tag + push + upload в Gitea

Документ RELEASING.md описывает процесс выпуска новых версий.

Архитектура

  • Electron 33 — multi-process: main (Node/scheduler/GSI) + preload (contextBridge) + renderer (React)
  • Renderer — React 18, TypeScript 5, Vite 5, Tailwind 3, framer-motion, react-router, zustand
  • Persistence — единственный JSON-файл %APPDATA%\Exercise Reminder\app-state.json (debounced writes)
  • IPC — типизированные каналы через src/shared/ipc.ts, обёрнуто preload-ом
  • i18n — самописная микро-система: src/renderer/src/i18n/dict.ts (плоский словарь ~200 ключей × 2 языка) + хук useT()
  • Auto-updateelectron-updater с generic provider, манифест latest.yml лежит в Gitea release attachments
  • GSI Dota 2 — локальный HTTP-сервер слушает GameStateIntegration коллбэки от Steam, парсит match-end events

Тесты

src/shared/types.test.ts                (4)
src/shared/quiet-hours.test.ts          (5)
src/renderer/src/lib/format.test.ts     (8)
src/renderer/src/lib/history.test.ts   (13)
src/main/games/vdf.test.ts             (11)
src/renderer/src/i18n/i18n.test.ts     (10)
─────────────────────────────────────────
                                  51 ✓

Покрытие: чистые helpers (форматирование, история/стрики, тихие часы, парсер VDF для Steam-конфигов), i18n с плюрализацией для RU/EN, дефолты shared-типов.

Лицензия

Пока не указана. По умолчанию все права защищены. Если хочешь форк/использование — открой issue.

Stack

Description
Exercise reminder - Windows desktop app
Readme 1.7 MiB
2026-05-22 23:38:16 +07:00
Languages
TypeScript 93.5%
PowerShell 4.2%
CSS 1.5%
JavaScript 0.6%
HTML 0.2%