프로젝트 소개

Tic은 할 일 목록을 메뉴 막대에서 꺼내 데스크톱에 떠 있는 스티커 메모로 표시해 주는 무료 오픈 소스 macOS 애플리케이션입니다. 각 메모는 독립적인 체크리스트로, 드래그하고 크기를 조절하고 사용자화할 수 있어 작업하는 동안 할 일을 계속 눈에 띄게 유지할 수 있습니다. ## 주요 기능 - **떠 있는 스티커 메모** – 테두리 없는 드래그 및 크기 조절 가능 패널. 선택적으로 메모를 다른 창 위에 띄우거나 모든 Spaces에 표시할 수 있습니다. 위치와 상태는 실행 간에 기억됩니다. - **여러 목록** – 메뉴 막대, ⌘N, 메모 내 + 버튼 또는 Dock 메뉴에서 새 목록을 만들 수 있습니다. 새 목록은 자동으로 List 1, List 2 등으로 이름이 지정됩니다. - **풍부한 작업** – 최대 3단계 깊이의 하위 작업(상위 작업을 완료하면 하위 작업도 완료됨), 여러 줄 메모(Shift-Return), 인라인 Markdown 서식(굵게, 기울임, 코드, 취소선, 링크)을 지원합니다. 탭하여 편집하고, 드래그하여 순서를 바꾸고, 오른쪽으로 드래그하여 중첩할 수 있습니다. - **단색 또는 Liquid-Glass 메모** – 메모별 색상 테마 또는 데스크톱이 비쳐 보이는 반투명 소재를 선택할 수 있습니다. - **롤업** – 메모의 제목 표시줄을 두 번 클릭하면 헤더만 남기고 접을 수 있습니다. - **Raycast 스타일 검색 팔레트** – 떠 있는 중앙 명령 팔레트로 모든 목록을 검색, 열기 또는 삭제할 수 있으며 완전한 키보드 탐색을 지원합니다. - **로그인 시 실행** – 선택적 자동 시작과 사용자 지정 메뉴 막대 아이콘 및 네이티브 Dock 아이덴티티를 제공합니다. ## 요구 사항 - macOS 14(Sonoma) 이상. ## 설치 1. [릴리스 페이지](https://github.com/kasvith/tic/releases)에서 최신 `Tic-vX.Y.Z.zip`을 다운로드하여 압축을 풀고 `Tic.app`을 `/Applications`로 이동합니다. 2. Tic은 ad-hoc 서명되어 있어(공증되지 않음) 첫 실행 시 Gatekeeper가 차단할 수 있습니다. 다음 명령으로 격리 플래그를 해제합니다. ```sh xattr -c /Applications/Tic.app ``` 그런 다음 정상적으로 엽니다. 또는 `Tic.app`을 마우스 오른쪽 버튼으로 클릭 → 열기 → 열기를 선택합니다. 3. Tic이 자동으로 시작되게 하려면 메뉴 막대 메뉴에서 **로그인 시 실행**을 활성화합니다. ## 소스에서 빌드 Tic은 Swift Package이므로 `.xcodeproj`가 필요하지 않습니다. ```sh swift run # 빌드 + 실행 (개발) 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은 AppKit `NSPanel` 안에 호스팅된 SwiftUI 뷰를 사용하며(진정한 데스크톱 고정 동작을 구현하는 유일한 방법), GRDB를 통해 SQLite를 백엔드로 사용합니다. `AppModel` 코디네이터가 메뉴 막대와 창 계층을 연결합니다. 전체 분석은 `CLAUDE.md`를 참조하세요. **스택:** Swift 6 · SwiftUI + AppKit · GRDB(SQLite) · `SMAppService`(로그인 항목). ## 개발 및 릴리스 - **CI**(`.github/workflows/ci.yml`)는 모든 푸시/PR에서 빌드, 테스트, 린트를 수행합니다. - **변경 로그**는 [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](LICENSE)에 따라 릴리스되었습니다. © 2026 Kasun Vithanage.