🗂 Developer Reference · v1.0.6开发者参考 · v1.0.6Entwicklerreferenz · v1.0.6Référence développeur · v1.0.6開発者リファレンス · v1.0.6개발자 참조 · v1.0.6Referencia para desarrolladores · v1.0.6

The .focusflow File Format.focusflow 文件格式Das .focusflow DateiformatLe format .focusflow.focusflow ファイル形式.focusflow 파일 형식El formato .focusflow

Complete reference for FocusFlow's JSON backup and schedule exchange format — every field, every color code, focusMode mechanics, UTC time handling, and system-protected packages. Build integrations, automate schedules, or migrate across devices.

FocusFlow JSON 备份和日程交换格式的完整参考——每个字段、每个颜色代码、focusMode 机制、UTC 时间处理以及系统保护的软件包。构建集成、自动化日程或跨设备迁移。

Vollständige Referenz für FocusFlows JSON-Backup- und Zeitplanformat — jedes Feld, jeder Farbcode, focusMode-Mechanik, UTC-Zeitverarbeitung und systemgeschützte Pakete.

Référence complète du format JSON de sauvegarde et d'échange de plannings — chaque champ, code couleur, mécanismes focusMode, gestion UTC et packages protégés.

FocusFlowのJSONバックアップおよびスケジュール交換形式の完全なリファレンス — すべてのフィールド、カラーコード、focusModeのしくみ、UTC時刻処理、システム保護パッケージ。

FocusFlow의 JSON 백업 및 일정 교환 형식에 대한 완전한 참조 — 모든 필드, 색상 코드, focusMode 메커니즘, UTC 시간 처리 및 시스템 보호 패키지.

Referencia completa del formato JSON de copia de seguridad e intercambio de horarios — cada campo, código de color, mecánicas focusMode, manejo UTC y paquetes protegidos.

What is it

概述

Was ist es

Présentation

概要

개요

¿Qué es?

What is a .focusflow file?什么是 .focusflow 文件?Was ist eine .focusflow-Datei?Qu'est-ce qu'un fichier .focusflow ?.focusflow ファイルとは?.focusflow 파일이란?¿Qué es un archivo .focusflow?

A .focusflow file is a plain UTF-8 JSON document with a .focusflow extension. It is FocusFlow's native backup and schedule exchange format — the app can export its entire state (all tasks, settings, blocking config, and user profile) into one file and reimport it on any device running FocusFlow.

.focusflow 文件是一个具有 .focusflow 扩展名的纯 UTF-8 JSON 文档。它是 FocusFlow 的原生备份和日程交换格式——该应用可以将其全部状态(所有任务、设置、屏蔽配置和用户资料)导出到一个文件中,并在任何运行 FocusFlow 的设备上重新导入。

Eine .focusflow-Datei ist ein einfaches UTF-8-JSON-Dokument mit der Erweiterung .focusflow. Es ist das native Backup- und Zeitplanformat von FocusFlow — die App kann ihren gesamten Zustand in eine Datei exportieren und auf jedem Gerät mit FocusFlow reimportieren.

Un fichier .focusflow est un document JSON UTF-8 brut avec l'extension .focusflow. C'est le format natif de sauvegarde et d'échange de plannings de FocusFlow — l'application peut exporter l'intégralité de son état dans un seul fichier et le réimporter sur n'importe quel appareil FocusFlow.

.focusflowファイルは、.focusflow拡張子を持つプレーンなUTF-8 JSONドキュメントです。FocusFlowのネイティブなバックアップおよびスケジュール交換形式で、アプリはすべての状態を1つのファイルにエクスポートし、任意のデバイスにインポートできます。

.focusflow 파일은 .focusflow 확장자를 가진 일반 UTF-8 JSON 문서입니다. FocusFlow의 기본 백업 및 일정 교환 형식으로, 앱은 전체 상태를 하나의 파일로 내보내고 모든 기기에서 다시 가져올 수 있습니다.

Un archivo .focusflow es un documento JSON UTF-8 plano con extensión .focusflow. Es el formato nativo de copia de seguridad e intercambio de horarios de FocusFlow — la aplicación puede exportar su estado completo a un archivo e importarlo en cualquier dispositivo.

Primary use cases主要使用场景HauptanwendungsfälleCas d'utilisation principaux主な使用例주요 사용 사례Casos de uso principales

Use case使用场景AnwendungsfallCas d'utilisation使用例사용 사례Caso de uso Description描述BeschreibungDescription説明설명Descripción
Device migration设备迁移GerätmigrationMigration d'appareilデバイス移行기기 마이그레이션Migración de dispositivoExport from old device, import on new — all tasks, settings and blocking config restored instantly.从旧设备导出,在新设备上导入——所有任务、设置和屏蔽配置立即恢复。Von altem Gerät exportieren, auf neuem importieren — alle Daten sofort wiederhergestellt.Exporter depuis l'ancien appareil, importer sur le nouveau — tout restauré instantanément.古いデバイスからエクスポートし、新しいデバイスにインポート。すべてが即座に復元。이전 기기에서 내보내고 새 기기로 가져오기 — 모든 데이터가 즉시 복원됩니다.Exportar desde el dispositivo antiguo, importar en el nuevo — todo restaurado instantáneamente.
AI-assisted schedulingAI 辅助排程KI-gestützte PlanungPlanification par IAAI支援スケジュール作成AI 지원 일정 관리Programación asistida por IAAsk an AI to generate a .focusflow file from your requirements (weekly plan, work sprint, habit plan) and import it directly.让 AI 根据您的需求生成 .focusflow 文件(每周计划、工作冲刺、习惯计划)并直接导入。Eine KI bittet, eine .focusflow-Datei aus Ihren Anforderungen zu generieren und direkt zu importieren.Demandez à une IA de générer un fichier .focusflow depuis vos besoins et importez-le directement.AIにあなたの要件から.focusflowファイルを生成させ、直接インポート。AI에게 요구 사항에서 .focusflow 파일을 생성하도록 요청하고 직접 가져오기.Pide a una IA que genere un archivo .focusflow desde tus requisitos e impórtalo directamente.
Programmatic scheduling程序化排程Programmgesteuerte PlanungPlanification programmatiqueプログラムによるスケジュール作成프로그래밍 방식 일정 관리Programación programáticaGenerate via Python/Node script — build 30-day plans, work schedules, or recurring routines and import them.通过 Python/Node 脚本生成——构建 30 天计划、工作日程或循环日程并导入。Per Python/Node-Skript generieren — 30-Tage-Pläne, Arbeitspläne oder Routinen erstellen und importieren.Générer via script Python/Node — créer des plans de 30 jours, des plannings de travail et les importer.Python/Nodeスクリプトで生成 — 30日間の計画、作業スケジュールを構築してインポート。Python/Node 스크립트로 생성 — 30일 계획, 작업 일정을 빌드하고 가져오기.Generar via Python/Node — crear planes de 30 días, horarios de trabajo e importarlos.
Schedule sharing日程共享ZeitplanfreigabePartage de planningスケジュール共有일정 공유Compartir horarioShare a .focusflow file with another user — they import it and get the same task structure, colors, and focus config.与其他用户共享 .focusflow 文件——他们导入后将获得相同的任务结构、颜色和专注配置。Eine .focusflow-Datei mit einem anderen Benutzer teilen — er importiert sie und erhält dieselbe Konfiguration.Partager un fichier .focusflow — l'autre utilisateur obtient la même structure de tâches et config.他のユーザーと.focusflowファイルを共有 — 同じタスク構造、色、フォーカス設定を取得。다른 사용자와 .focusflow 파일 공유 — 동일한 작업 구조, 색상, 포커스 구성을 얻음.Compartir con otro usuario — obtiene la misma estructura de tareas, colores y configuración de enfoque.

Structure

结构

Struktur

Structure

構造

구조

Estructura

Top-level schema顶层 JSON 结构HauptstrukturStructure principaleトップレベル構造최상위 스키마Esquema principal

Every .focusflow file must contain exactly these top-level keys. The file is standard UTF-8 JSON.

每个 .focusflow 文件必须包含这些顶层键。该文件是标准 UTF-8 JSON。

Jede .focusflow-Datei muss genau diese Top-Level-Schlüssel enthalten. Standardmäßiges UTF-8-JSON.

Chaque fichier .focusflow doit contenir exactement ces clés de niveau supérieur. JSON UTF-8 standard.

すべての.focusflowファイルには、これらのトップレベルキーが正確に含まれている必要があります。

모든 .focusflow 파일에는 정확히 이러한 최상위 키가 포함되어야 합니다.

Cada archivo .focusflow debe contener exactamente estas claves de nivel superior.

JSON{
  "kind":            "FocusFlowBackupV1",  // must be exactly this string
  "version":         1,                     // always 1
  "exportedAt":      "2026-08-31T04:30:00.000Z",  // ISO 8601 UTC
  "exportedAtHuman": "31/08/2026, 10:00:00",       // "DD/MM/YYYY, HH:MM:SS"
  "appVersion":      "1.0.6",
  "platform":        { "os": "android" },
  "settings":        { /* AppSettings object */ },
  "tasks":           [ /* Task objects array */ ],
  "presetSections":  [ /* configured preset inventory */ ],
  "summary": {
    "taskCount":          46,   // MUST match tasks.length
    "blockedWordCount":    0,
    "greyoutWindowCount": 0,
    "dailyAllowanceCount":0
  }
}
⚠️ summary.taskCount must equal the length of the tasks array.summary.taskCount 必须等于 tasks 数组的长度。summary.taskCount muss der Länge des tasks-Arrays entsprechen.summary.taskCount doit être égal à la longueur du tableau tasks.summary.taskCountはtasks配列の長さと等しくなければなりません。summary.taskCount는 tasks 배열의 길이와 같아야 합니다.summary.taskCount debe ser igual a la longitud del array tasks. A mismatch may cause import to fail.不匹配可能导致导入失败。Eine Abweichung kann zum Importfehler führen.Une discordance peut faire échouer l'importation.不一致はインポートの失敗を引き起こす可能性があります。불일치는 가져오기 실패를 유발할 수 있습니다.Una discrepancia puede causar que la importación falle.

Core data

核心数据

Kerndaten

Données principales

コアデータ

핵심 데이터

Datos principales

Task object — complete field reference任务对象 — 完整字段参考Task-Objekt — vollständige FeldreferenzObjet tâche — référence complète des champsタスクオブジェクト — 完全フィールドリファレンス작업 객체 — 완전한 필드 참조Objeto tarea — referencia completa de campos

Each element of the tasks array must be a valid Task object. All fields are required unless marked OPT.

tasks 数组的每个元素必须是有效的任务对象。除非标记为 OPT,否则所有字段均为必填。

Jedes Element des tasks-Arrays muss ein gültiges Task-Objekt sein. Alle Felder sind erforderlich, sofern nicht mit OPT markiert.

Chaque élément du tableau tasks doit être un objet tâche valide. Tous les champs sont requis sauf OPT.

tasks配列の各要素は有効なタスクオブジェクトである必要があります。OPTとマークされていない限り必須。

tasks 배열의 각 요소는 유효한 작업 객체여야 합니다. OPT로 표시되지 않은 한 모든 필드가 필수입니다.

Cada elemento del array tasks debe ser un objeto tarea válido. Todos los campos son obligatorios salvo OPT.

Field字段FeldChampフィールド필드Campo Type Description & valid values描述和有效值Beschreibung und gültige WerteDescription et valeurs valides説明と有効な値설명 및 유효한 값Descripción y valores válidos
idstringREQNanoid-style UID, ~21 chars, chars: [a-zA-Z0-9_-]. Example: "MPzb6gCgQWmRJH3RuhTPE". Must be unique across all tasks in the file.Nanoid 样式 UID,约 21 个字符,字符集:[a-zA-Z0-9_-]。示例:"MPzb6gCgQWmRJH3RuhTPE"。在文件中必须唯一。Nanoid-ähnliche UID, ~21 Zeichen aus [a-zA-Z0-9_-]. Muss in der Datei eindeutig sein.UID style Nanoid, ~21 caractères de [a-zA-Z0-9_-]. Doit être unique dans le fichier.Nanoidスタイルのuid、~21文字([a-zA-Z0-9_-])。ファイル内で一意である必要あり。Nanoid 스타일 UID, ~21자, [a-zA-Z0-9_-]. 파일 내에서 고유해야 합니다.UID estilo Nanoid, ~21 caracteres de [a-zA-Z0-9_-]. Debe ser único en el archivo.
titlestringREQDisplay name shown in app lists and notifications. Keep concise.在应用列表和通知中显示的名称。保持简洁。Anzeigename in App-Listen und Benachrichtigungen. Kurz halten.Nom affiché dans les listes et notifications. Rester concis.リストと通知に表示される名前。簡潔に。앱 목록 및 알림에 표시되는 이름. 간결하게 유지.Nombre mostrado en listas y notificaciones. Mantener conciso.
descriptionstringREQTask detail notes. Shown in detail view. Can be empty string "" but must be present.任务详细说明。在详情视图中显示。可以是空字符串 "",但必须存在。Aufgabennotizen. In Detailansicht angezeigt. Kann leer sein "".Notes de la tâche. Affichées dans la vue détail. Peut être vide "".タスクの詳細ノート。詳細ビューに表示。空文字列""でも可。작업 세부 메모. 상세 보기에 표시. 빈 문자열 "" 가능.Notas de la tarea. Se muestra en la vista detallada. Puede estar vacío "".
startTimestringREQISO 8601 UTC. Format: "YYYY-MM-DDTHH:MM:SS.000Z". All times are UTC — see the UTC / IST section.ISO 8601 UTC。格式:"YYYY-MM-DDTHH:MM:SS.000Z"。所有时间均为 UTC——请参阅UTC / IST 部分。ISO 8601 UTC, Format: "YYYY-MM-DDTHH:MM:SS.000Z". Alle Zeiten UTC.ISO 8601 UTC, format : "YYYY-MM-DDTHH:MM:SS.000Z". Toutes les heures en UTC.ISO 8601 UTC、形式:"YYYY-MM-DDTHH:MM:SS.000Z"。すべてUTC。ISO 8601 UTC, 형식: "YYYY-MM-DDTHH:MM:SS.000Z". 모든 시간은 UTC.ISO 8601 UTC, formato: "YYYY-MM-DDTHH:MM:SS.000Z". Todos los horarios en UTC.
endTimestringREQISO 8601 UTC. Must be after startTime. Difference must equal durationMinutes × 60000 ms.ISO 8601 UTC。必须在 startTime 之后。差值必须等于 durationMinutes × 60000 ms。ISO 8601 UTC. Nach startTime. Differenz = durationMinutes × 60000 ms.ISO 8601 UTC. Après startTime. Différence = durationMinutes × 60000 ms.ISO 8601 UTC。startTimeの後。差 = durationMinutes × 60000 ms。ISO 8601 UTC. startTime 이후. 차이 = durationMinutes × 60000 ms.ISO 8601 UTC. Después de startTime. Diferencia = durationMinutes × 60000 ms.
durationMinutesintegerREQWhole minutes. Must match endTime − startTime in minutes. Min: 1.整分钟数。必须与 endTime − startTime 的分钟数匹配。最小值:1。Ganzzahl Minuten. Muss mit endTime − startTime übereinstimmen. Min: 1.Minutes entières. Doit correspondre à endTime − startTime. Min : 1.整数分。endTime − startTimeと一致する必要あり。最小:1。정수 분. endTime − startTime과 일치해야 합니다. 최소: 1.Minutos enteros. Debe coincidir con endTime − startTime. Mín: 1.
statusstringREQOne of: "scheduled" · "completed" · "active" · "skipped" · "overdue". Use "scheduled" for all generated tasks.以下之一:"scheduled" · "completed" · "active" · "skipped" · "overdue"。对所有生成的任务使用 "scheduled"。Eines von: "scheduled" · "completed" · "active" · "skipped" · "overdue". Generierte Tasks: "scheduled".L'un de : "scheduled" · "completed" · "active" · "skipped" · "overdue". Tâches générées : "scheduled".次のいずれか:"scheduled" · "completed" · "active" · "skipped" · "overdue"。生成タスクは"scheduled"。다음 중 하나: "scheduled" · "completed" · "active" · "skipped" · "overdue". 생성된 작업: "scheduled".Uno de: "scheduled" · "completed" · "active" · "skipped" · "overdue". Tareas generadas: "scheduled".
prioritystringREQOne of: "critical" · "high" · "medium" · "low".以下之一:"critical" · "high" · "medium" · "low"。Eines von: "critical" · "high" · "medium" · "low".L'un de : "critical" · "high" · "medium" · "low".次のいずれか:"critical" · "high" · "medium" · "low"。다음 중 하나: "critical" · "high" · "medium" · "low".Uno de: "critical" · "high" · "medium" · "low".
tagsstring[]REQArray of tag strings. Recommended: ["bio"], ["phys"], ["chem"], ["rev"]. Can be [].标签字符串数组。推荐:["bio"]、["phys"]、["chem"]、["rev"]。可以为 []。Tag-Array. Empfohlen: ["bio"], ["phys"], ["chem"], ["rev"]. Kann [] sein.Tableau de tags. Recommandé : ["bio"], ["phys"], ["chem"], ["rev"]. Peut être [].タグ配列。推奨:["bio"]、["phys"]、["chem"]、["rev"]。[]でも可。태그 배열. 권장: ["bio"], ["phys"], ["chem"], ["rev"]. [] 가능.Array de etiquetas. Recomendado: ["bio"], ["phys"], ["chem"], ["rev"]. Puede ser [].
remindersarrayREQReminder offset integers (minutes before start). Example: [-10,-5,0] = alerts at 10 min, 5 min, and start. [] = no reminders.提醒偏移整数(开始前分钟数)。示例:[-10,-5,0] = 提前 10 分钟、5 分钟和准时提醒。[] = 无提醒。Erinnerungsoffsets. Beispiel: [-10,-5,0] = 10 Min., 5 Min. und pünktlich. [] = keine.Décalages de rappel. Exemple : [-10,-5,0] = 10 min, 5 min et à l'heure. [] = aucun.リマインダーオフセット。例:[-10,-5,0] = 10分前、5分前、開始時。[] = なし。알림 오프셋. 예: [-10,-5,0] = 10분, 5분, 시작 시 알림. [] = 없음.Desplazamientos de recordatorio. Ejemplo: [-10,-5,0] = 10 min, 5 min y al inicio. [] = ninguno.
colorstringREQHex color string. Controls task card color in app. See the Color reference for semantic conventions.十六进制颜色字符串。控制应用中任务卡片的颜色。有关语义约定,请参阅颜色参考。Hex-Farbstring. Steuert Kartenfarbe. Siehe Farbreferenz.Chaîne hex. Contrôle la couleur de la carte. Voir la référence couleurs.Hexカラー文字列。カードの色を制御。カラーリファレンス参照。16진수 색상 문자열. 카드 색상 제어. 색상 참조 보기.Cadena hex. Controla el color de la tarjeta. Ver referencia de colores.
focusModebooleanREQtrue = app blocking activates when this task starts. false = no blocking. See Focus Mode.true = 此任务开始时激活应用屏蔽。false = 不屏蔽。参见专注模式。true = Blocking startet mit der Aufgabe. false = kein Blocking. Siehe Focus Mode.true = blocage activé au démarrage de la tâche. false = pas de blocage. Voir Focus Mode.true = タスク開始時にブロッキング有効。false = なし。フォーカスモード参照。true = 작업 시작 시 차단 활성화. false = 차단 없음. 포커스 모드 참조.true = bloqueo activo al iniciar la tarea. false = sin bloqueo. Ver Focus Mode.
focusAllowedPackagesstring[]OPTPer-task allowed list. Omit (undefined) = use settings.allowedInFocus. Set to a list = only those packages allowed. Never set to [] — triggers block-all sentinel.每个任务的允许列表。省略(undefined)= 使用 settings.allowedInFocus。设置为列表 = 只允许这些软件包。切勿设置为 []——会触发全部屏蔽的哨兵。Aufgabenspezifische Erlaubnisliste. Weglassen = globale Einstellung. Niemals [].Liste par tâche. Omis = paramètre global. Ne jamais mettre [].タスクごとの許可リスト。省略 = グローバル設定使用。[]は禁止。작업별 허용 목록. 생략 = 전역 설정 사용. [] 사용 금지.Lista por tarea. Omitir = configuración global. Nunca [].
createdAtstringREQISO 8601 UTC creation timestamp. For generated files, use the generation time for all tasks.ISO 8601 UTC 创建时间戳。对于生成的文件,所有任务使用生成时间。ISO 8601 UTC Erstellungszeitstempel. Bei generierten Dateien Generierungszeit verwenden.Horodatage UTC de création. Pour les fichiers générés, utiliser l'heure de génération.作成時のISO 8601 UTCタイムスタンプ。生成ファイルでは生成時間を使用。생성 ISO 8601 UTC 타임스탬프. 생성된 파일에는 생성 시간 사용.Marca de tiempo UTC de creación ISO 8601. Para archivos generados, usar el tiempo de generación.
updatedAtstringREQISO 8601 UTC last-updated timestamp. For generated files, same as createdAt.ISO 8601 UTC 最后更新时间戳。对于生成的文件,与 createdAt 相同。ISO 8601 UTC Aktualisierungszeitstempel. Bei generierten Dateien wie createdAt.Horodatage UTC de mise à jour. Pour les fichiers générés, identique à createdAt.最終更新のISO 8601 UTCタイムスタンプ。生成ファイルではcreatedAtと同じ。마지막 업데이트 ISO 8601 UTC 타임스탬프. 생성된 파일은 createdAt과 동일.Marca de tiempo UTC de última actualización ISO 8601. Para generados, igual que createdAt.

Blocking

屏蔽

Blockierung

Blocage

ブロッキング

차단

Bloqueo

Focus Mode & focusAllowedPackages

When a task with focusMode: true starts, FocusFlow's Accessibility Service writes the allowed-package list to SharedPreferences and blocks every foreground app not on it. The blocking is active for the exact duration of the task and released when it ends or is marked complete.

当具有 focusMode: true 的任务开始时,FocusFlow 的无障碍服务将允许的软件包列表写入 SharedPreferences,并屏蔽所有不在列表中的前台应用。屏蔽在任务的确切持续时间内有效,任务结束或标记为完成时释放。

Wenn eine Aufgabe mit focusMode: true startet, schreibt FocusFlows Accessibility Service die erlaubte Paketliste in SharedPreferences und blockiert alle Vordergrund-Apps, die nicht darauf stehen.

Quand une tâche avec focusMode: true démarre, l'Accessibility Service de FocusFlow écrit la liste des packages autorisés dans SharedPreferences et bloque toutes les applications en premier plan non répertoriées.

focusMode: trueのタスクが開始すると、FocusFlowのアクセシビリティサービスが許可パッケージリストをSharedPreferencesに書き込み、リストにないすべてのフォアグラウンドアプリをブロックします。

focusMode: true인 작업이 시작되면 FocusFlow의 접근성 서비스가 허용 패키지 목록을 SharedPreferences에 쓰고 목록에 없는 모든 포그라운드 앱을 차단합니다.

Cuando una tarea con focusMode: true comienza, el Servicio de Accesibilidad de FocusFlow escribe la lista de paquetes permitidos en SharedPreferences y bloquea todas las aplicaciones en primer plano que no estén en ella.

How the allowed list resolves允许列表如何解析Auflösung der erlaubten ListeRésolution de la liste autorisée許可リストの解決方法허용 목록 해결 방법Cómo se resuelve la lista permitida

focusAllowedPackages Result结果ErgebnisRésultat結果결과Resultado
undefined (key absent)(键缺失)(Schlüssel fehlt)(clé absente)(キーなし)(키 없음)(clave ausente)Uses settings.allowedInFocus. Recommended default for generated files — change the global list once to update all tasks.使用 settings.allowedInFocus。生成文件的推荐默认值——只需更改全局列表即可更新所有任务。Verwendet settings.allowedInFocus. Empfohlener Standard.Utilise settings.allowedInFocus. Valeur par défaut recommandée.settings.allowedInFocusを使用。生成ファイルの推奨デフォルト。settings.allowedInFocus 사용. 생성된 파일의 권장 기본값.Usa settings.allowedInFocus. Valor predeterminado recomendado para archivos generados.
["com.pkg.a", "com.pkg.b"]Only those packages are allowed for this specific task. All others blocked (except SYSTEM_NEVER_BLOCK).仅允许这些软件包用于此特定任务。其他所有软件包均被屏蔽(SYSTEM_NEVER_BLOCK 除外)。Nur diese Pakete für diese Aufgabe erlaubt.Seuls ces packages autorisés pour cette tâche spécifique.この特定のタスクのみこれらのパッケージを許可。이 특정 작업에 대해서만 해당 패키지 허용.Solo esos paquetes permitidos para esta tarea específica.
[] (empty — avoid!)(空——避免使用!)(leer — vermeiden!)(vide — à éviter !)(空 — 避けること!)(비어 있음 — 피하세요!)(vacío — ¡evitar!)⚠️ Triggers sentinel com.focusflow.internal.blockall — blocks ALL apps including system apps, except SYSTEM_NEVER_BLOCK. Usually unintentional.⚠️ 触发哨兵 com.focusflow.internal.blockall——屏蔽所有应用,包括系统应用(SYSTEM_NEVER_BLOCK 除外)。通常是非预期的。⚠️ Löst Sentinel aus — blockiert ALLE Apps außer SYSTEM_NEVER_BLOCK.⚠️ Déclenche le sentinel — bloque TOUTES les apps sauf SYSTEM_NEVER_BLOCK.⚠️ センチネルをトリガー — SYSTEM_NEVER_BLOCKを除くすべてをブロック。⚠️ 센티넬 트리거 — SYSTEM_NEVER_BLOCK 제외 모든 앱 차단.⚠️ Activa el centinela — bloquea TODAS las apps excepto SYSTEM_NEVER_BLOCK.

Recommended settings snippet推荐的设置代码片段Empfohlener Settings-SnippetExtrait de paramètres recommandé推奨設定スニペット권장 설정 스니펫Fragmento de configuración recomendado

SETTINGS// Global allowed list in settings — applies to all tasks with no per-task override
"allowedInFocus": [
  "com.android.phone",       // calls — also system-protected, can never be blocked anyway
  "com.android.contacts",    // contacts
  "com.oppo.camera",         // camera on OPPO/ColorOS devices
  "com.android.camera",      // camera on stock Android
  "com.whatsapp",            // WhatsApp
  "com.openai.chatgpt",      // ChatGPT
  "com.adobe.reader"         // Adobe Acrobat
],

// In each task — omit focusAllowedPackages to use the global list above
{ "focusMode": true /* focusAllowedPackages absent → uses settings.allowedInFocus */ }

Visual reference

视觉参考

Visuelle Referenz

Référence visuelle

ビジュアルリファレンス

시각적 참조

Referencia visual

Color codes reference颜色代码参考Farbcode-ReferenzRéférence des couleursカラーコードリファレンス색상 코드 참조Referencia de colores

Any valid hex code is accepted. Choose colors that work for your own schedule and keep them consistent across related tasks.

接受任何有效的十六进制代码。请选择适合您日程的颜色,并在相关任务中保持一致。

Jeder gültige Hex-Code wird akzeptiert. Wählen Sie Farben für Ihren eigenen Zeitplan und verwenden Sie sie konsistent.

Tout code hexadécimal valide est accepté. Choisissez des couleurs adaptées à votre planning et utilisez-les de manière cohérente.

有効な16進コードはすべて使用できます。自分のスケジュールに合う色を選び、関連するタスクで一貫して使ってください。

유효한 16진수 코드는 모두 사용할 수 있습니다. 자신의 일정에 맞는 색상을 선택하고 관련 작업에 일관되게 사용하세요.

Se acepta cualquier código hex válido. Elige colores que funcionen para tu propio horario y úsalos de forma coherente.

HexSwatch色样MusterÉchantillon見本견본Muestra Typical priority典型优先级PrioritätPriorité優先度우선순위Prioridad
#22c55emedium
#86efaclow
#3b82f6critical
#a855f7critical / high
#f59e0bhigh
#ec4899critical / high

Time handling

时间处理

Zeitverarbeitung

Gestion du temps

時刻処理

시간 처리

Manejo del tiempo

UTC & time zone conversionUTC 和时区转换UTC & ZeitzonenkonvertierungUTC & conversion de fuseauUTC & タイムゾーン変換UTC & 시간대 변환UTC & conversión de zona horaria

ℹ️ All timestamps in .focusflow files are UTC..focusflow 文件中的所有时间戳均为 UTC。Alle Zeitstempel in .focusflow-Dateien sind UTC.Tous les horodatages dans les fichiers .focusflow sont UTC..focusflowファイルのすべてのタイムスタンプはUTCです。.focusflow 파일의 모든 타임스탬프는 UTC입니다.Todas las marcas de tiempo en archivos .focusflow son UTC. The app converts to device local time for display. There is no timezone field — FocusFlow infers from the device.应用程序会将显示时间转换为设备本地时间。没有时区字段——FocusFlow 从设备推断。Die App konvertiert für die Anzeige in Gerätelokalzeit. Kein Zeitzonenfeld.L'app convertit en heure locale pour l'affichage. Pas de champ fuseau horaire.アプリは表示のためにデバイスのローカル時間に変換します。タイムゾーンフィールドなし。앱은 표시를 위해 기기 현지 시간으로 변환합니다. 시간대 필드 없음.La app convierte a hora local del dispositivo para mostrar. Sin campo de zona horaria.

IST ↔ UTC (UTC+5:30)

PYTHON# Convert IST → UTC for startTime / endTime fields
from datetime import datetime, timedelta

IST = timedelta(hours=5, minutes=30)

def ist_to_utc(date_str, hour, minute):
    dt = datetime(int(date_str[:4]), int(date_str[5:7]), int(date_str[8:]), hour, minute)
    return (dt - IST).strftime("%Y-%m-%dT%H:%M:%S.000Z")

ist_to_utc("2026-09-01",  7,  0)  # 7:00 AM IST  → "2026-09-01T01:30:00.000Z"
ist_to_utc("2026-09-01", 10,  0)  # 10:00 AM IST → "2026-09-01T04:30:00.000Z"
ist_to_utc("2026-09-01", 22, 30)  # 10:30 PM IST → "2026-09-01T17:00:00.000Z"
IST (local)(本地)(lokal)(local)(現地)(현지)(local)UTC (in file)(文件中)(in Datei)(dans fichier)(ファイル内)(파일 내)(en archivo)
6:00 AM00:30 UTC
7:00 AM01:30 UTC
10:00 AM04:30 UTC
1:00 PM07:30 UTC
7:50 PM14:20 UTC
8:30 PM15:00 UTC
11:30 PM18:00 UTC

Always exempt

始终豁免

Immer ausgenommen

Toujours exempt

常時除外

항상 제외

Siempre exento

System-protected packages系统保护的软件包Systemgeschützte PaketePackages protégésシステム保護パッケージ시스템 보호 패키지Paquetes protegidos por el sistema

These packages are hardcoded in FocusFlow's SYSTEM_NEVER_BLOCK list (source: protectedApps.ts) and can never be blocked by any focus configuration. You do not need to include them in your allowed list — they are always accessible regardless.

这些软件包在 FocusFlow 的 SYSTEM_NEVER_BLOCK 列表(来源:protectedApps.ts)中硬编码,任何专注配置都永远不能屏蔽它们。您不需要将它们包含在允许列表中——无论如何它们始终可访问。

Diese Pakete sind in FocusFlows SYSTEM_NEVER_BLOCK-Liste hardcodiert und können durch keine Konfiguration blockiert werden. Sie müssen nicht in der erlaubten Liste stehen.

Ces packages sont codés en dur dans la liste SYSTEM_NEVER_BLOCK de FocusFlow et ne peuvent jamais être bloqués. Inutile de les inclure dans votre liste autorisée.

これらのパッケージはFocusFlowのSYSTEM_NEVER_BLOCKリストにハードコードされており、どの設定でもブロックできません。許可リストに含める必要はありません。

이러한 패키지는 FocusFlow의 SYSTEM_NEVER_BLOCK 목록에 하드코딩되어 있으며 어떤 구성으로도 차단할 수 없습니다. 허용 목록에 포함할 필요가 없습니다.

Estos paquetes están codificados de forma fija en la lista SYSTEM_NEVER_BLOCK de FocusFlow y nunca pueden bloquearse. No necesitas incluirlos en tu lista permitida.

com.android.phone
com.android.server.telecom
com.android.dialer
com.google.android.dialer
Phone calls — all dialer variants. Emergency calls are legally protected; FocusFlow additionally protects all calls unconditionally.电话通话——所有拨号器变体。紧急电话受法律保护;FocusFlow 额外无条件保护所有通话。Alle Anruf-Apps. Notrufe sind gesetzlich geschützt; FocusFlow schützt zusätzlich alle Anrufe.Tous les dialers. Les appels d'urgence sont légalement protégés ; FocusFlow protège inconditionnellement tous les appels.すべてのダイヤラー。緊急通話は法的に保護されています;FocusFlowはすべての通話を無条件に保護します。모든 다이얼러. 긴급 통화는 법적으로 보호됩니다; FocusFlow는 모든 통화를 무조건적으로 보호합니다.Todos los marcadores. Las llamadas de emergencia están legalmente protegidas; FocusFlow protege incondicionalmente todas las llamadas.
com.tbtechs.focusflowFocusFlow itself — must always be accessible so users can view their schedule, end sessions, and manage tasks during any focus block.FocusFlow 本身——必须始终可访问,以便用户在任何专注块中查看日程、结束会话和管理任务。FocusFlow selbst — immer zugänglich für Zeitplan, Sitzungsende und Aufgabenverwaltung.FocusFlow lui-même — toujours accessible pour voir le planning, terminer des sessions et gérer des tâches.FocusFlow自体 — スケジュール確認、セッション終了、タスク管理のために常にアクセス可能。FocusFlow 자체 — 일정 보기, 세션 종료, 작업 관리를 위해 항상 액세스 가능.El propio FocusFlow — siempre accesible para ver horario, terminar sesiones y gestionar tareas.
com.google.android.gmsGoogle Play Services — system-level dependency required by most Android apps and authentication flows.Google Play 服务——大多数 Android 应用和身份验证流程所需的系统级依赖项。Google Play Services — systemweite Abhängigkeit für die meisten Android-Apps.Google Play Services — dépendance système requise par la plupart des applications Android.Google Playサービス — ほとんどのAndroidアプリに必要なシステムレベルの依存関係。Google Play Services — 대부분의 Android 앱에 필요한 시스템 수준 종속성.Google Play Services — dependencia de nivel de sistema requerida por la mayoría de las apps Android.
com.android.systemui
All common launchers所有常见启动器Alle gängigen LauncherTous les lanceurs courantsすべての一般的なランチャー모든 일반 런처Todos los launchers comunes
System UI and all standard home screen launchers (Pixel, OPPO/ColorOS, MIUI, Samsung One UI, etc.) — home screen always remains accessible.系统 UI 和所有标准主屏幕启动器(Pixel、OPPO/ColorOS、MIUI、Samsung One UI 等)——主屏幕始终保持可访问。System UI und alle Launcher — Startbildschirm immer zugänglich.UI système et tous les lanceurs — écran d'accueil toujours accessible.システムUIとすべてのランチャー — ホーム画面は常にアクセス可能。시스템 UI와 모든 런처 — 홈 화면은 항상 액세스 가능.UI del sistema y todos los launchers — pantalla de inicio siempre accesible.

Getting it in

导入方法

Importieren

Importation

インポート

가져오기

Importar

How to import a .focusflow file如何导入 .focusflow 文件So importieren Sie eine .focusflow-DateiComment importer un fichier .focusflow.focusflow ファイルのインポート方法.focusflow 파일 가져오기 방법Cómo importar un archivo .focusflow

1
Save with .focusflow extension保存为 .focusflow 扩展名Mit .focusflow-Erweiterung speichernEnregistrer avec l'extension .focusflow.focusflow拡張子で保存.focusflow 확장자로 저장Guardar con extensión .focusflow — validate it is UTF-8 JSON (run through jsonlint.com if unsure).验证其为 UTF-8 JSON(如不确定,可通过 jsonlint.com 验证)。Validieren als UTF-8 JSON (jsonlint.com).Valider comme JSON UTF-8 (jsonlint.com).UTF-8 JSONとして検証(不明な場合はjsonlint.com)。UTF-8 JSON으로 검증 (jsonlint.com).Validar como JSON UTF-8 (jsonlint.com).
2
Transfer to your Android device传输到您的 Android 设备Auf Android-Gerät übertragenTransférer sur l'appareil AndroidAndroidデバイスに転送Android 기기로 전송Transferir al dispositivo Android — USB, Google Drive, WhatsApp, email, or any file sharing method. File just needs to be in the device file system.USB、Google Drive、WhatsApp、电子邮件或任何文件共享方式。文件只需在设备文件系统中。USB, Google Drive, WhatsApp, E-Mail oder beliebige Dateifreigabe.USB, Google Drive, WhatsApp, email ou tout partage de fichier.USB、Google Drive、WhatsApp、メールなど任意の方法。USB, Google Drive, WhatsApp, 이메일 또는 모든 파일 공유 방법.USB, Google Drive, WhatsApp, correo o cualquier método de intercambio.
3
Open FocusFlow → menu → Settings打开 FocusFlow → 菜单 → 设置FocusFlow öffnen → Menü → EinstellungenOuvrir FocusFlow → menu → ParamètresFocusFlowを開く → メニュー → 設定FocusFlow 열기 → 메뉴 → 설정Abrir FocusFlow → menú → Configuración
4
Tap "Import Backup"点击「导入备份」„Backup importieren" antippenAppuyer sur « Importer la sauvegarde »「バックアップをインポート」をタップ「백업 가져오기」탭Tocar "Importar copia de seguridad" — select the .focusflow file. The app validates and restores all tasks, settings, and blocking configuration.选择 .focusflow 文件。应用验证并恢复所有任务、设置和屏蔽配置。.focusflow-Datei auswählen. Die App validiert und importiert alles.Sélectionner le fichier .focusflow. L'app valide et importe tout..focusflowファイルを選択。アプリが検証してすべてをインポート。.focusflow 파일 선택. 앱이 검증하고 모든 것을 가져옵니다.Seleccionar el archivo .focusflow. La app valida e importa todo.
⚠️ Importing replaces all existing data.导入将替换所有现有数据。Importieren ersetzt alle vorhandenen Daten.L'importation remplace toutes les données existantes.インポートすると既存のデータがすべて置き換えられます。가져오기는 기존 데이터를 모두 대체합니다.Importar reemplaza todos los datos existentes. Export your current schedule first: Settings → Export Backup.先导出当前日程:设置 → 导出备份。Zuerst aktuellen Zeitplan exportieren: Einstellungen → Backup exportieren.Exportez d'abord votre planning actuel : Paramètres → Exporter la sauvegarde.まず現在のスケジュールをエクスポート:設定 → バックアップをエクスポート。먼저 현재 일정 내보내기: 설정 → 백업 내보내기.Exporta primero tu horario actual: Configuración → Exportar copia de seguridad.

Code

代码

Code

Code

コード

코드

Código

Complete minimal example完整最小示例Vollständiges minimales BeispielExemple minimal complet完全な最小例완전한 최소 예시Ejemplo completo mínimo

A valid single-task .focusflow file with all required fields, focusMode enabled, and per-task allowed packages.

一个有效的单任务 .focusflow 文件,包含所有必填字段、启用专注模式以及每个任务的允许软件包。

Eine gültige Einzelaufgaben-.focusflow-Datei mit allen Pflichtfeldern, aktiviertem Focus Mode und aufgabenspezifischer Paketliste.

Un fichier .focusflow valide à une tâche avec tous les champs requis, focus mode activé et liste de packages par tâche.

必須フィールドがすべて含まれ、フォーカスモードが有効で、タスクごとの許可パッケージリストを持つ有効な単一タスク.focusflowファイル。

모든 필수 필드, 포커스 모드 활성화, 작업별 허용 패키지가 있는 유효한 단일 작업 .focusflow 파일.

Un archivo .focusflow válido de una tarea con todos los campos requeridos, modo de enfoque activado y paquetes permitidos por tarea.

focusflow-example.focusflow{
  "kind":            "FocusFlowBackupV1",
  "version":         1,
  "exportedAt":      "2026-09-01T01:30:00.000Z",
  "exportedAtHuman": "01/09/2026, 07:00:00",
  "appVersion":      "1.0.6",
  "platform":        { "os": "android" },
  "settings": {
    "allowedInFocus":          ["com.android.phone", "com.android.contacts", "com.oppo.camera", "com.whatsapp"],
    "focusModeEnabled":        true,
    "defaultDuration":         60,
    "defaultReminderOffsets":  [-10, -5, 0],
    "darkMode":                false,
    "pomodoroEnabled":         false,
    "notificationsEnabled":    true,
    "onboardingComplete":      true,
    "standaloneBlockPackages": [],
    "dailyAllowanceEntries":   [],
    "blockedWords":            [],
    "greyoutSchedule":         [],
    "blockPresets":            [],
    "recurringBlockSchedules": [],
    "userProfile": {
      "name": "Alex", "occupation": "professional", "dailyGoalHours": 3,
      "wakeUpTime": "07:00", "sleepTime": "00:00", "chronotype": "night",
      "focusSessionLength": 60, "breakStyle": "short_frequent"
    }
  },
  "tasks": [{
    "id":               "MPzb6gCgQWmRJH3RuhTPE",
    "title":            "Plan Monday projects",
    "description":     "Set priorities, review notes, and prepare the week.",
    "startTime":       "2026-09-01T08:00:00.000Z",  // 1:30 PM IST
    "endTime":         "2026-09-01T09:00:00.000Z",  // 2:30 PM IST
    "durationMinutes": 60,
    "status":          "scheduled",
    "priority":        "medium",
    "tags":            ["work"],
    "reminders":       [],
    "color":           "#6366f1",
    "focusMode":       true,
    "focusAllowedPackages": [
      "com.android.phone", "com.android.contacts", "com.oppo.camera",
      "com.whatsapp", "com.openai.chatgpt", "com.adobe.reader"
    ],
    "createdAt": "2026-08-31T05:00:00.000Z",
    "updatedAt": "2026-08-31T05:00:00.000Z"
  }],
  "presetSections": [],
  "summary": { "taskCount": 1, "blockedWordCount": 0, "greyoutWindowCount": 0, "dailyAllowanceCount": 0 }
}
💡 Build tip:构建提示:Build-Tipp:Conseil :ビルドのヒント:빌드 팁:Consejo de construcción: Generate IDs using Python's secrets.token_urlsafe(15) (~21 chars) or any nanoid library. Never reuse IDs across tasks in the same file.使用 Python 的 secrets.token_urlsafe(15)(约 21 个字符)或任何 nanoid 库生成 ID。切勿在同一文件中跨任务重用 ID。IDs mit secrets.token_urlsafe(15) oder nanoid-Bibliothek generieren. Nie wiederverwenden.Générez des IDs avec secrets.token_urlsafe(15) ou nanoid. Ne jamais réutiliser.secrets.token_urlsafe(15)またはnanoidライブラリでIDを生成。再利用禁止。secrets.token_urlsafe(15) 또는 nanoid 라이브러리로 ID 생성. 재사용 금지.Genera IDs con secrets.token_urlsafe(15) o nanoid. Nunca reutilizar.

Ready to build?准备好构建了吗?Bereit zu bauen?Prêt à construire ?構築する準備はできましたか?빌드할 준비가 됐나요?¿Listo para construir?

Get FocusFlow free from Huawei AppGallery or Gov.in Appstore, export your first backup, and start building schedules for work, home, or everyday routines.从华为应用市场或 Gov.in Appstore 免费获取 FocusFlow,导出您的第一个备份,然后开始创建适合工作、家庭或日常生活的计划。FocusFlow kostenlos über Huawei AppGallery oder Gov.in Appstore holen, das erste Backup exportieren und Zeitpläne für Arbeit, Zuhause oder Routinen erstellen.Obtenez FocusFlow gratuitement sur Huawei AppGallery ou Gov.in Appstore, exportez votre première sauvegarde et créez des plannings pour le travail, la maison ou vos routines.Huawei AppGalleryまたはGov.in AppstoreからFocusFlowを無料で入手し、最初のバックアップをエクスポートして、仕事や日常のスケジュールを作成しましょう。Huawei AppGallery 또는 Gov.in Appstore에서 FocusFlow를 무료로 받고 첫 백업을 내보내 업무, 가정 또는 일상 루틴을 위한 일정을 만들어 보세요.Obtén FocusFlow gratis desde Huawei AppGallery o Gov.in Appstore, exporta tu primera copia de seguridad y crea horarios para el trabajo, el hogar o tus rutinas.