Awake는 macOS에서 사용자가 선택한 실행 중인 작업이 끝날 때까지 Mac이 잠자기에 들어가지 않도록 돕는 메뉴바 앱이다. 사용자는 앱 실행, 단축키, 메뉴바 액션으로 현재 열려 있는 앱/윈도우를 보고, 유지할 대상을 선택한 뒤 바로 보호 세션을 시작한다.
핵심 유스케이스는 터미널, tmux, Codex, 빌드, 업로드, 렌더링처럼 시간이 걸리는 작업을 MacBook 화면 꺼짐이나 일반 유휴 잠자기 때문에 중단하지 않는 것이다. MacBook 덮개 닫힘은 macOS와 하드웨어 정책의 영향을 크게 받으므로, 제품은 공개 전원 assertion의 실제 범위를 검증하고 환경별 동작과 대안을 명확히 안내한다.
제품 문서는 docs/에 있고, 개발 문서는 docs/development/에 있다. 구현 전에는 반드시 관련 문서를 먼저 읽고, 문서와 충돌하는 결정을 임의로 넣지 않는다.
- 제품 흐름은
docs/product-spec.md를 기준으로 한다. - 개발 구조는
docs/development/architecture.md를 기준으로 한다. - macOS 전원 제어 정책은
docs/development/power-management.md를 기준으로 한다. - 윈도우/프로세스 선택 동작은
docs/development/window-selection.md를 기준으로 한다. - 작업을 시작하기 전에 관련 파일을 읽고 기존 문서와 구현 패턴을 따른다.
- 기능 구현은 작고 검증 가능한 단위로 나눈다.
- 사용자 요청과 무관한 리팩터링은 하지 않는다.
- 구현 중 제품 문서와 기술 문서가 어긋나면 코드만 바꾸지 말고 문서도 함께 갱신한다.
- macOS 권한, 전원 assertion, 실행 중 앱 감지, 메뉴바 상태 표시는 사용자 신뢰에 직접 영향을 주므로 실패 상태를 반드시 고려한다.
- 덮개 닫힘, 배터리 절약 모드, 회사 관리 장비 정책, 외부 전원/디스플레이 조건은 환경별 차이가 있으므로 하드코딩된 보장을 문구로 넣지 않는다.
- Language: Swift
- UI: SwiftUI + AppKit
- App shell: macOS menu bar app
- Power management: IOKit power assertions
- App/window discovery: AppKit, CoreGraphics Window Services, Accessibility where needed
- Persistence: UserDefaults first, JSON session log later if needed
- Tests: XCTest
- 앱 셸과 메뉴바 상태 표시
- 보호 세션 상태 모델
- 전원 assertion 생성/해제
- 현재 실행 중인 앱 목록 표시
- 선택 대상 기반 보호 세션 시작/종료
- 종료 감지와 자동 assertion 해제
- 권한 요청 및 실패 상태 안내
- 단축키
- 최근 세션 기록과 안정화
- private API로 덮개 닫힘 잠자기를 우회
- 커널 확장 또는 시스템 확장 설치
- 원격 제어 기능
- 작업 내용 감시나 터미널 출력 파싱
- 프로세스 강제 재시작
- 클라우드 동기화
- 팀 관리 기능
README.md: 프로젝트 진입점docs/product-idea.md: 제품 아이디어docs/product-spec.md: 제품 명세docs/mvp-spec.md: 이전 MVP 명세서docs/roadmap.md: 제품 로드맵docs/development/tech-stack.md: 기술 스택docs/development/architecture.md: 앱 아키텍처docs/development/feature-specs.md: 기능별 개발 명세docs/development/window-selection.md: 앱/윈도우 선택 정책docs/development/power-management.md: macOS 전원 관리 정책docs/development/permissions.md: macOS 권한 정책docs/development/data-and-storage.md: 데이터와 저장 구조docs/development/implementation-plan.md: 구현 순서docs/development/codex-workflow.md: Codex 작업 방식docs/development/testing.md: 테스트 전략