원문 캡처 · github.com
원문 캡처 · github.com

Adaptive Reminders는 Apple Reminders에서 할 일을 완료한 기록을 바탕으로 반복 간격을 다시 계산하는 시스템이다. 반복 주기를 직접 설정하지 않아도 되며, 단발성 할 일도 일정한 패턴으로 세 번 이상 완료하면 반복 항목으로 전환한다.

각 반복 항목의 다음 날짜는 완료일에 최근 완료 간격의 중앙값을 더해 정한다. 늦게 처리한 한 주가 간격을 계속 왜곡하지 않도록 이상치를 걸러내며, 제목에 현재 추정 간격을 Tp~13, Walk Mocha~2처럼 표시한다.

할 일 목록은 앞으로 7일 안에 기한이 오는 항목만 담는다. 항목은 Shopping, Chores, Family, Personal, Work, Events, Bills 등 범주별 목록에서 관리되다가 기한이 일주일 안으로 들어오면 To Do 목록의 해당 범주 아래 하위 항목으로 이동한다. 기한을 일주일보다 더 뒤로 미루면 범주 목록으로 돌아간다. 기한을 미룬 횟수도 메모의 Due Date Changes에 기록한다.

설정에는 iPhone과 무료 앱 Scriptable이 필요하다. 범주별 목록과 To Do 안의 같은 이름을 가진 상위 항목을 만든 다음, 저장소의 scripts/에 있는 스크립트를 Scriptable에 설치한다. 스크립트 이름은 정확히 MaintainAdaptiveReminders와 RecurrenceAnaylsis로 지정해야 한다. 오타가 포함된 RecurrenceAnaylsis는 단축어가 이 이름을 호출하므로 그대로 써야 한다. Due_Date_Analysis.js는 선택 사항이다.

필요한 단축어는 Update To Do List, Update Due Date Counter, RecurranceUpdater, Update Completed Parent다. 개인 자동화는 공유할 수 없어 직접 설정해야 한다. 미리 알림 앱을 열 때는 기한 변경 횟수 갱신과 To Do 목록 업데이트를 실행하고, 앱을 닫을 때는 RecurranceUpdater를 실행하도록 지정한다. 항목은 To Do에서 맞는 범주의 하위 항목으로 추가하고 기한을 설정한다. 실제로 완료한 때 표시해야 완료 기록이 학습 데이터가 된다. 학습이 시작되기까지 몇 주가 걸릴 수 있으며 항목별로 약 세 번의 완료가 필요하다.

범주 이름은 미리 알림 목록과 To Do의 상위 항목, 두 스크립트의 parentLists 배열에서 일치하도록 바꿀 수 있다. 목록 기간은 기본 7일이며, Update To Do List의 날짜 계산과 MaintainAdaptiveReminders.js의 재등록 기준을 함께 수정해 조정한다. 반복 항목으로 승격하는 기준은 최근 1년 이내에 규칙적으로 세 번 완료한 경우다. MaintainAdaptiveReminders.js의 LEARNING_WINDOW_DAYS 기본값은 400일이고, ACTIVE_WINDOW_DAYS는 90일이다.

제작자는 iOS가 스크립트 실행 중 종료될 수 있다고 안내한다. 각 단계는 중복 생성을 확인하도록 설계돼 있어 실행이 빠지더라도 다음 앱 열기나 닫기 때 보완되며, 실행 기록은 iCloud Drive의 Scriptable → Downloads에 저장된다. 학습 기능에는 유지 관리가 드문 Scriptable이 필요하다. 제작자는 마지막 릴리스가 2024년 9월이며 현재 iOS에서 작동한다고 설명한다. 선택 사항인 Due_Date_Analysis.js는 내보낸 ReminderData.txt를 읽어 미루기 패턴과 범주별 통계를 보여주는 수동 보고서지만, 내보내기 도구는 포함되지 않는다. 공유 목록에는 적합하지 않다. 메모와 제목에 저장된 메타데이터 및 ~N 표기가 다른 공유 사용자에게도 보인다.

Todoist의 every!나 Things의 완료 후 반복과 달리, 이 시스템은 반복 간격 자체를 완료 기록에서 다시 계산하고 단발성 항목도 반복 항목으로 승격한다. 제작자는 매일 사용하며 다듬었다고 설명하며, 저장소에는 현재 스크립트와 단축어 링크가 포함돼 있다. 라이선스는 MIT다.