Об этом проекте
Tic — это бесплатное macOS-приложение с открытым исходным кодом, которое выносит ваши списки дел из строки меню на рабочий стол в виде плавающих стикеров. Каждый стикер — это независимый чек-лист, который можно перетаскивать, изменять в размере и настраивать, что позволяет держать задачи на виду во время работы.
## Ключевые возможности
- **Плавающие стикеры** — панели без рамок, которые можно перетаскивать и изменять в размере. При желании стикер можно закрепить поверх других окон или показывать на всех Spaces. Позиции и состояния сохраняются между запусками.
- **Несколько списков** — создавайте новые списки из строки меню, сочетанием ⌘N, кнопкой + внутри стикера или через меню в Dock. Новые списки автоматически получают имена List 1, List 2 и т. д.
- **Расширенные задачи** — поддержка подзадач до 3 уровней вложенности (завершение родительской задачи завершает дочерние), многострочных заметок (Shift-Return) и встроенного форматирования Markdown (жирный, курсив, код, зачёркивание, ссылки). Нажмите для редактирования, перетащите для изменения порядка или перетащите вправо для вложения.
- **Сплошные или Liquid-Glass стикеры** — выбирайте цветовые темы для каждого стикера отдельно или полупрозрачный материал, сквозь который виден рабочий стол.
- **Сворачивание** — двойной щелчок по заголовку стикера сворачивает его до одной шапки.
- **Палитра поиска в стиле Raycast** — плавающая центрированная командная палитра для поиска, открытия или удаления любого списка с полной навигацией с клавиатуры.
- **Запуск при входе** — опциональный автозапуск, а также настраиваемая иконка в строке меню и нативная идентичность в Dock.
## Требования
- macOS 14 (Sonoma) или новее.
## Установка
1. Скачайте последний `Tic-vX.Y.Z.zip` со [страницы релизов](https://github.com/kasvith/tic/releases), распакуйте его и переместите `Tic.app` в `/Applications`.
2. Tic подписан ad-hoc (без нотаризации), поэтому Gatekeeper может заблокировать его при первом запуске. Снимите флаг карантина командой:
```sh
xattr -c /Applications/Tic.app
```
Затем откройте его обычным способом. Либо щёлкните правой кнопкой по `Tic.app` → Открыть → Открыть.
3. Чтобы Tic запускался автоматически, включите **Launch at Login** в меню строки меню.
## Сборка из исходного кода
Tic — это Swift Package, поэтому `.xcodeproj` не нужен.
```sh
swift run # сборка + запуск (dev)
swift build -c release # релизная сборка
swift test # запуск набора тестов (Swift Testing)
./scripts/package.sh # собрать dist/Tic.app (добавьте --open для запуска)
open Package.swift # редактировать в Xcode
```
## Использование
- Иконка в строке меню показывает недавние списки (с подменю **More Lists** для остальных) и даёт быстрый доступ к **Search Lists…**, **New List** (⌘N) и **Launch at Login**.
- Наведите курсор на стикер, чтобы показать его элементы управления: цвет, сплошной/стекло, поверх всех окон, сворачивание, **+** новый список и закрытие. Щёлкните по заголовку, чтобы переименовать; нижнее поле добавляет задачи (Return сохраняет фокус).
- Наведите курсор на задачу, чтобы показать **✕** (удалить) и строку **+** под ней — щёлкните по ней, чтобы добавить подзадачу, вложенную под эту строку. Пустые задачи исчезают, когда вы щёлкаете в другом месте.
## Сочетания клавиш
| Сочетание | Действие |
| --- | --- |
| **Return** | Завершить редактирование задачи / добавить введённую задачу |
| **Shift-Return** (или **⌥ Return**) | Новая строка внутри той же задачи |
| **Shift-Tab** | Сделать задачу подзадачей (вложить на один уровень глубже) |
| **⌃ Shift-Tab** | Вынести подзадачу из вложенности (переместить обратно) |
| **⌘N** | Новый список |
| **Двойной щелчок** по заголовку | Свернуть / развернуть стикер |
Вы также можете перетаскивать задачу для изменения порядка или перетащить её вправо для вложения — индикатор сброса показывает, куда (и на какой уровень) она попадёт. Во время редактирования в поле появляется небольшая подсказка с клавишами (⇧⏎ строка, ⇧⇥ вложить), чтобы не запоминать таблицу.
## Архитектура
Tic использует представления SwiftUI, размещённые внутри AppKit `NSPanel` (единственный способ добиться настоящего поведения настольного стикера), с хранением в SQLite через GRDB. Координатор `AppModel` связывает строку меню с оконным слоем. Полный разбор см. в `CLAUDE.md`.
**Стек:** Swift 6 · SwiftUI + AppKit · GRDB (SQLite) · `SMAppService` (элемент входа).
## Разработка и релизы
- **CI** (`.github/workflows/ci.yml`) собирает, тестирует и линтит при каждом push/PR.
- **Changelog** генерируется из [Conventional Commits](https://www.conventionalcommits.org) с помощью [git-cliff](https://git-cliff.org) (`cliff.toml`) и хранится в `CHANGELOG.md`.
- **Релизы основаны на тегах:** отправьте тег `v*`, и рабочий процесс релиза соберёт `Tic.app`, сгенерирует примечания к релизу и опубликует GitHub Release с заархивированным приложением.
```sh
git tag v0.1.0 && git push origin v0.1.0
```
Исходные изображения иконок находятся в `Assets/` (AppIcon / Flat / MenuBar).
## Лицензия
Выпущено под [лицензией MIT](LICENSE). © 2026 Kasun Vithanage.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.