About this project
Tic is a free, open-source macOS application that brings your to-do lists out of the menu bar and onto the desktop as floating sticky notes. Each note is an independent checklist that you can drag, resize, and customize, making it easy to keep tasks visible while you work.
## Key Features
- **Floating sticky notes** – Borderless, draggable, resizable panels. You can optionally keep a note floating on top of other windows or show it on all Spaces. Positions and states are remembered between launches.
- **Multiple lists** – Create new lists from the menu bar, with ⌘N, the in-note + button, or the Dock menu. New lists are automatically named List 1, List 2, etc.
- **Rich tasks** – Support for subtasks up to 3 levels deep (completing a parent completes its children), multiline notes (Shift-Return), and inline Markdown formatting (bold, italic, code, strikethrough, links). Tap to edit, drag to reorder, or drag right to nest.
- **Solid or Liquid-Glass notes** – Choose per-note color themes or a translucent material that lets the desktop show through.
- **Roll-up** – Double-click a note's title bar to collapse it to just the header.
- **Raycast-style search palette** – A floating, centered command palette to search, open, or delete any list, with full keyboard navigation.
- **Launch at Login** – Optional auto-start, plus a custom menu-bar icon and native Dock identity.
## Requirements
- macOS 14 (Sonoma) or later.
## Installation
1. Download the latest `Tic-vX.Y.Z.zip` from the [releases page](https://github.com/kasvith/tic/releases), unzip it, and move `Tic.app` to `/Applications`.
2. Tic is ad-hoc signed (not notarized), so Gatekeeper may block it on first launch. Clear the quarantine flag with:
```sh
xattr -c /Applications/Tic.app
```
Then open it normally. Alternatively, right-click `Tic.app` → Open → Open.
3. To have Tic start automatically, enable **Launch at Login** from the menu-bar menu.
## Building from Source
Tic is a Swift Package, so no `.xcodeproj` is needed.
```sh
swift run # build + launch (dev)
swift build -c release # release build
swift test # run the test suite (Swift Testing)
./scripts/package.sh # assemble dist/Tic.app (add --open to launch it)
open Package.swift # edit in Xcode
```
## Usage
- The menu-bar icon shows your recent lists (with a **More Lists** submenu for the rest) and provides quick access to **Search Lists…**, **New List** (⌘N), and **Launch at Login**.
- Hover over a note to reveal its controls: color, solid/glass, float-on-top, roll-up, **+** new list, and close. Click the title to rename; the bottom field adds tasks (Return keeps focus).
- Hover over a task to reveal a **✕** (delete) and a **+** line below it – click that to add a subtask nested under the row. Empty tasks disappear when you click away.
## Keyboard Shortcuts
| Shortcut | Action |
| --- | --- |
| **Return** | Finish editing a task / add the typed task |
| **Shift-Return** (or **⌥ Return**) | New line within the same task |
| **Shift-Tab** | Make the task a subtask (nest one level deeper) |
| **⌃ Shift-Tab** | Un-nest a subtask (move it back out) |
| **⌘N** | New list |
| **Double-click** the title bar | Roll the note up / down |
You can also drag a task to reorder it, or drag it right to nest it – the drop indicator shows where (and at what level) it will land. While editing, a small keycap hint (⇧⏎ line, ⇧⇥ nest) appears in the field so you don't have to memorize the table.
## Architecture
Tic uses SwiftUI views hosted inside AppKit `NSPanel`s (the only way to achieve true desktop-sticky behavior), backed by SQLite via GRDB. An `AppModel` coordinator bridges the menu bar to the window layer. See `CLAUDE.md` for the full breakdown.
**Stack:** Swift 6 · SwiftUI + AppKit · GRDB (SQLite) · `SMAppService` (login item).
## Development & Releases
- **CI** (`.github/workflows/ci.yml`) builds, tests, and lints on every push/PR.
- **Changelog** is generated from [Conventional Commits](https://www.conventionalcommits.org) with [git-cliff](https://git-cliff.org) (`cliff.toml`) and kept in `CHANGELOG.md`.
- **Releases are tag-based:** push a `v*` tag and the release workflow builds `Tic.app`, generates release notes, and publishes a GitHub Release with the zipped app.
```sh
git tag v0.1.0 && git push origin v0.1.0
```
Icon source art lives in `Assets/` (AppIcon / Flat / MenuBar).
## License
Released under the [MIT License](LICENSE). © 2026 Kasun Vithanage.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.