Skip to content

Latest commit

 

History

History
560 lines (431 loc) · 23.6 KB

File metadata and controls

560 lines (431 loc) · 23.6 KB

Pomodorust: Комплексный план улучшений

Документ сформирован на основе анализа кодовой базы v0.1.0 Цель: Open Source сообщество, расширяемость, кросс-платформенность


Оглавление

  1. Незавершённые функции (Quick Wins)
  2. Функциональность
  3. UI/UX и дизайн
  4. Статистика и аналитика
  5. Кросс-платформенность
  6. Интеграции
  7. Архитектура и код
  8. Open Source инфраструктура
  9. Производительность
  10. Приоритезация

1. Незавершённые функции (Quick Wins)

Эти функции уже частично реализованы в коде, но не подключены к UI:

Функция Статус Файл Сложность
Window opacity DONE config.rs:appearance, settings.rs Низкая
Compact mode Toggle есть, логика нет config.rs:appearance Средняя
Show in taskbar Опция есть, не работает config.rs:system Низкая
Tick sound toggle DONE config.rs:sound, settings.rs Низкая
Custom sounds selection DONE (6 звуков) audio.rs, settings.rs Средняя

Рекомендации:

  • Подключить window opacity к slider в настройках ✅ DONE
  • Реализовать compact mode (уменьшенный UI без статистики)
  • Связать tick sound toggle с логикой воспроизведения ✅ DONE
  • Добавить выбор звуков из файлов пользователя ✅ DONE (6 встроенных)

2. Функциональность

2.1 Управление задачами

Текущее: Только таймер, без привязки к задачам

Предложения:

Фича Описание Сложность Приоритет
Task list Список задач на сессию Средняя Высокий
Session notes Заметки к каждой сессии Низкая Средний
Task estimation Оценка в помидорах Низкая Средний
Task tags/categories Теги для группировки Средняя Низкий
Task templates Шаблоны повторяющихся задач Средняя Низкий

Схема данных (расширение SQLite):

CREATE TABLE tasks (
    id INTEGER PRIMARY KEY,
    title TEXT NOT NULL,
    estimated_pomodoros INTEGER,
    completed_pomodoros INTEGER DEFAULT 0,
    tags TEXT, -- JSON array
    created_at TEXT,
    completed_at TEXT
);

CREATE TABLE session_notes (
    session_id INTEGER REFERENCES sessions(id),
    note TEXT,
    task_id INTEGER REFERENCES tasks(id)
);

2.2 Расширенные режимы таймера

Режим Описание Сложность
Focus mode Блокировка уведомлений ОС Средняя
Strict mode Нельзя пропустить/остановить до конца Низкая
Flexible breaks Автоматическая подстройка перерывов Средняя
Multiple timers Несколько таймеров для разных проектов Высокая
Timer presets per project Разные настройки для разных проектов Средняя

2.3 Перерывы

Фича Описание Сложность
Break suggestions Предложения активностей на перерыв Низкая
Stretch reminders Напоминания о разминке Низкая
Break extension Продлить перерыв на N минут Низкая
Ambient sounds Фоновые звуки во время работы Средняя

2.4 История и управление сессиями

Фича Описание Сложность
Session history view Просмотр всех прошлых сессий Средняя
Undo last session Отменить последнюю сессию Низкая
Edit past sessions Редактирование истории Средняя
Session recovery Восстановление после краша Средняя

3. UI/UX и дизайн

3.1 Темы и кастомизация

Текущее: 9 акцентных цветов + 3 ретро-режима

Улучшение Описание Сложность
Light mode Светлая тема Средняя
Custom theme editor Редактор своих тем Высокая
Theme import/export JSON экспорт тем Низкая
Font selection Выбор шрифта Средняя
Icon packs Альтернативные наборы иконок Средняя

3.2 Анимации и визуальные эффекты

Текущее: Pulse, glow, breathing animations

Улучшение Описание Сложность
Particle effects Частицы при завершении Средняя
Confetti celebration Конфетти при достижении цели Низкая
Smooth view transitions Плавные переходы между view Средняя
Progress shake Тряска при последних секундах Низкая
Sound visualization Визуализация звука Высокая

3.3 Layouts и режимы отображения

Режим Описание Сложность
Mini mode Только таймер, минимальный размер Средняя
Widget mode Полупрозрачный оверлей поверх окон Высокая
Fullscreen mode На весь экран для фокуса Низкая
PiP (Picture-in-Picture) Маленькое окно поверх всех Средняя

3.4 Accessibility (A11y)

Фича Описание Сложность
Screen reader support Поддержка NVDA/VoiceOver Высокая
High contrast mode Высококонтрастная тема Низкая
Keyboard navigation Полная навигация с клавиатуры Средняя
Font scaling Масштабирование шрифтов Низкая
Reduced motion Отключение анимаций Низкая

4. Статистика и аналитика

4.1 Расширенные графики

Текущее: Недельный график, базовая статистика

График Описание Сложность
Monthly view Месячный календарь с heatmap Средняя
Yearly heatmap GitHub-style календарь за год Средняя
Hourly distribution В какое время суток продуктивнее Низкая
Day of week analysis Какие дни недели продуктивнее Низкая
Trend lines Линии тренда продуктивности Средняя
Comparison charts Сравнение периодов Средняя

4.2 Цели и прогресс

Фича Описание Сложность
Daily goals Цель помидоров на день Низкая
Weekly goals Недельные цели Низкая
Goal streaks Серии выполнения целей Низкая
Progress milestones Вехи (100, 500, 1000 помидоров) Низкая
Custom goals Пользовательские цели Средняя

4.3 Геймификация

Уровень Фичи Сложность
Минимальная Стрики, простые цели Уже есть частично
Средняя Достижения, бейджи, уровни Средняя
Полная Лидерборды, челленджи Высокая (требует бэкенд)

Примеры достижений:

  • 🍅 First Tomato — Первый помидор
  • 🔥 Week Warrior — 7 дней подряд
  • 🌙 Night Owl — 10 сессий после 22:00
  • ☀️ Early Bird — 10 сессий до 9:00
  • 💯 Century — 100 помидоров всего
  • 🏆 Focused Master — 4 часа без перерыва в один день

4.4 Отчёты

Отчёт Описание Сложность
Weekly summary Еженедельный отчёт Низкая
Monthly report Месячный PDF отчёт Средняя
Productivity insights AI-анализ продуктивности Высокая
Export to PDF Экспорт статистики в PDF Средняя

5. Кросс-платформенность

5.1 Текущее состояние

Платформа Статус Ограничения
Windows ✅ Полная поддержка DWM effects, registry autostart
macOS ⚠️ Базовая Нет autostart, fallback notifications
Linux Полная поддержка D-Bus notifications, XDG autostart, global hotkeys

5.2 Улучшения по платформам

macOS:

  • LaunchAgent для автозапуска
  • Native notifications через objc crate
  • Menu bar app mode
  • Touch Bar support
  • Handoff support (связь с iOS)

Linux:РЕАЛИЗОВАНО (v0.2.1)

  • XDG Desktop Entry для автозапуска ✅ DONE (~/.config/autostart/)
  • D-Bus notifications через notify-rust ✅ DONE
  • Global hotkeys (X11/Wayland) ✅ DONE (через global-hotkey crate)
  • Wayland native support (частично, через xdg-desktop-portal)
  • Tray icon через StatusNotifierItem

Общее:

  • Единый API для platform-specific функций ✅ DONE (src/platform/mod.rs)
  • Feature flags для platform capabilities
  • CI/CD для всех платформ ✅ DONE (GitHub Actions)

5.3 Мобильные платформы

Платформа Подход Сложность
iOS Swift UI native app Очень высокая
Android Kotlin native app Очень высокая
Cross-platform mobile Flutter/React Native Высокая
PWA Web версия как PWA Средняя

5.4 Web версия

Подход Плюсы Минусы Сложность
WASM (egui) Переиспользование кода Большой bundle Средняя
Tauri Native-like, маленький размер Отдельная кодовая база Высокая
Отдельный веб-клиент Оптимальный UX Дублирование логики Высокая

6. Интеграции

6.1 CLI интерфейс ✅ РЕАЛИЗОВАН

# Примеры команд (все работают!)
pomodorust start [--session work|short|long]  # Запустить таймер
pomodorust pause                               # Пауза
pomodorust resume                              # Продолжить
pomodorust toggle                              # Start/Pause
pomodorust stop                                # Остановить и сбросить
pomodorust skip                                # Пропустить сессию
pomodorust status                              # Текущий статус
pomodorust stats [--period today|week|all]     # Статистика
pomodorust ping                                # Проверить работу GUI

Реализация:

  • IPC через TCP (localhost:47373)
  • Единый бинарник: GUI + CLI в одном exe
  • Для использования CLI добавить в PATH (кнопка в настройках)

6.2 Статус в мессенджерах

Платформа Метод Сложность
Discord Rich Presence API Средняя
Slack Status API (OAuth) Средняя
Telegram Bot API для статуса Средняя
Microsoft Teams Graph API Высокая

6.3 Webhooks и автоматизация

// События для webhooks
enum WebhookEvent {
    SessionStarted { session_type: SessionType },
    SessionCompleted { session_type: SessionType, duration: u32 },
    SessionSkipped { session_type: SessionType },
    GoalReached { goal_type: String },
    StreakBroken { streak_length: u32 },
}

Интеграции:

  • Zapier / Make / n8n
  • IFTTT
  • Home Assistant (умный дом)
  • Custom HTTP endpoints

6.4 Синхронизация данных

Метод Описание Сложность
File sync Через Dropbox/iCloud/etc Низкая
Own backend Свой сервер синхронизации Высокая
Supabase/Firebase BaaS решение Средняя
P2P sync Без центрального сервера Очень высокая

6.5 Интеграции с инструментами разработчика

Интеграция Описание Сложность
VS Code extension Статус в статус-баре Средняя
JetBrains plugin Плагин для IDE Средняя
GitHub integration Связь сессий с коммитами Средняя
Jira/Linear Связь с тикетами Средняя
Toggl/Clockify Экспорт в time trackers Низкая

7. Архитектура и код

7.1 Рефакторинг

Область Проблема Решение Сложность
Database Синхронные запросы Async с tokio Высокая
Platform Код дублируется Trait-based abstraction Средняя
UI components Большие файлы Дальнейшая декомпозиция Низкая
Error handling Inconsistent thiserror везде Низкая

7.2 Тестирование

Текущее покрытие: Timer, Error, Layout, Animation (unit tests)

Тип тестов Статус Приоритет
Unit tests Частичные Расширить
Integration tests Нет Добавить
UI tests Нет egui testing
E2E tests Нет Опционально
Benchmarks Нет Для критичных путей

7.3 Plugin система

// Концепт plugin API
pub trait PomodoPlugin {
    fn name(&self) -> &str;
    fn on_session_start(&mut self, session: &Session);
    fn on_session_complete(&mut self, session: &Session);
    fn render_ui(&self, ui: &mut egui::Ui);
}

Возможности:

  • Кастомные интеграции
  • Дополнительные звуки/темы
  • Расширения статистики
  • Community plugins

7.4 Конфигурация

Улучшение Описание Сложность
Config validation Валидация при загрузке Низкая
Config migration Миграция между версиями Средняя
Config profiles Несколько профилей настроек Средняя
Environment variables Настройка через ENV Низкая

8. Open Source инфраструктура

8.1 Документация

Документ Статус Приоритет
README.md ✅ Есть Поддерживать
CONTRIBUTING.md ✅ Есть Расширить
CHANGELOG.md ✅ Есть Автоматизировать
Architecture docs ❌ Нет Высокий
API documentation ❌ Нет Средний
User guide ❌ Нет Средний

8.2 CI/CD ✅ РЕАЛИЗОВАНО

Pipeline Описание Статус
Build (all platforms) Windows, Linux DONE
Tests cargo test DONE
Linting clippy, rustfmt DONE
Security audit cargo audit ❌ Pending
Release automation GitHub Releases DONE
Changelog generation Автоматический CHANGELOG ❌ Pending

GitHub Actions Workflows:

  • .github/workflows/build.yml — Build для Linux и Windows
  • .github/workflows/ci.yml — Clippy + Rustfmt + Tests
  • .github/workflows/release.yml — Автоматические релизы

8.3 Community

Инициатива Описание Приоритет
Issue templates Bug report, Feature request Высокий
PR template Чеклист для PR Высокий
Good first issues Метки для новичков Высокий
Discussions GitHub Discussions Средний
Discord server Сообщество Низкий

8.4 Распространение

Канал Статус Сложность
GitHub Releases
Cargo publish Низкая
Homebrew (macOS) Средняя
Chocolatey (Windows) Средняя
AUR (Arch Linux) Низкая
Flatpak Средняя
Snap Средняя
Windows Store Высокая

9. Производительность

9.1 Оптимизации

Область Проблема Решение Влияние
Startup time DB init blocking Lazy loading Среднее
Memory Stats loaded upfront Pagination Низкое
CPU Continuous animations Conditional rendering Низкое
Binary size ~15MB Strip debug, optimize deps Низкое

9.2 Мониторинг

Метрика Инструмент
Memory profiling DHAT, heaptrack
CPU profiling perf, Instruments
Binary analysis cargo-bloat
Startup time Benchmarks

10. Приоритезация

Tier 1: Quick Wins (1-2 дня каждый)

  1. Подключить незавершённые функции (opacity, tick sound) ✅ DONE
  2. Daily goals с отображением прогресса ✅ DONE
  3. Undo last session
  4. High contrast mode
  5. Reduced motion option

Tier 2: Core Improvements (3-5 дней каждый)

  1. Task list базовый
  2. Session notes
  3. Monthly heatmap calendar
  4. Light mode theme
  5. CI/CD для всех платформ ✅ DONE (GitHub Actions)
  6. Architecture documentation ✅ DONE (ARCHITECTURE.md)

Tier 3: Major Features (1-2 недели каждый)

  1. CLI interface с IPC ✅ DONE
  2. Plugin system (MVP)
  3. Discord Rich Presence
  4. Achievement system
  5. Linux autostart ✅ DONE (XDG Desktop Entry)
  6. Global Hotkeys ✅ DONE
  7. macOS autostart (LaunchAgent)

Tier 4: Large Initiatives (месяц+)

  1. Web version (WASM)
  2. Cloud sync
  3. Mobile companion app
  4. Full webhook system

Матрица принятия решений

Критерий Вес
Польза для пользователей 40%
Сложность реализации 25%
Привлечение контрибьюторов 20%
Уникальность на рынке 15%

Топ-5 рекомендаций для старта:

  1. Task list — Основная ценность для пользователей
  2. CI/CD pipeline — Фундамент для контрибьюторов
  3. CLI interface — Уникальность для разработчиков ✅ DONE
  4. Achievement system — Вовлечение и retention
  5. Light mode — Расширение аудитории

Уже реализовано (Январь 2026):

  • CLI interface — Полное управление из терминала
  • Global Hotkeys — Ctrl+Alt+Space/S/R
  • Daily Goals — Цели с прогресс-баром
  • Architecture docs — ARCHITECTURE.md
  • Good First Issues — GOOD_FIRST_ISSUES.md
  • Notification Sounds — 6 выбираемых звуков
  • Window Opacity — Слайдер в настройках
  • Linux Platform Support — D-Bus notifications, XDG autostart, global hotkeys
  • CI/CD Pipeline — GitHub Actions для Linux и Windows
  • Window State Persistence — Сохранение позиции и размера окна

Следующие шаги

После выбора направления:

  1. Создать GitHub Issues для выбранных фич
  2. Добавить метки "good first issue" для простых задач
  3. Написать RFC для крупных изменений
  4. Обновить ROADMAP.md

Документ создан: 2026-01-18 Последнее обновление: 2026-01-20 Версия анализа: v0.2.1


Changelog

v0.2.1 (2026-01-20)

  • ✅ Добавлена полная поддержка Linux (notifications, autostart, global hotkeys)
  • ✅ Добавлен CI/CD pipeline (GitHub Actions для Linux и Windows)
  • ✅ Добавлено сохранение состояния окна (позиция, размер, maximized)
  • Обновлена секция 5.1 с новым статусом Linux
  • Обновлена секция 8.2 CI/CD как реализованная
  • Обновлены Tier 2 и Tier 3 приоритезации

v0.2.0 (2026-01-19)

  • Обновлён статус Quick Wins (opacity, tick sound, notification sounds) — ✅ Done
  • Обновлён статус CLI interface — ✅ Done
  • Добавлены Global Hotkeys как реализованная фича
  • Добавлен Daily Goals как реализованная фича
  • Обновлена приоритезация с учётом выполненных задач