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?
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.
| Use case使用场景AnwendungsfallCas d'utilisation使用例사용 사례Caso de uso | Description描述BeschreibungDescription説明설명Descripción | ||||||
|---|---|---|---|---|---|---|---|
| Device migration设备迁移GerätmigrationMigration d'appareilデバイス移行기기 마이그레이션Migración de dispositivo | Export 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 IA | Ask 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ática | Generate 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 horario | Share 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
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 } }
Core data
核心数据
Kerndaten
Données principales
コアデータ
핵심 데이터
Datos principales
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 | |||||||
|---|---|---|---|---|---|---|---|---|---|
| id | string | REQ | Nanoid-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. |
| title | string | REQ | Display 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. |
| description | string | REQ | Task 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 "". |
| startTime | string | REQ | ISO 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. |
| endTime | string | REQ | ISO 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. |
| durationMinutes | integer | REQ | Whole 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. |
| status | string | REQ | One 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". |
| priority | string | REQ | One 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". |
| tags | string[] | REQ | Array 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 []. |
| reminders | array | REQ | Reminder 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. |
| color | string | REQ | Hex 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. |
| focusMode | boolean | REQ | true = 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. |
| focusAllowedPackages | string[] | OPT | Per-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 []. |
| createdAt | string | REQ | ISO 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. |
| updatedAt | string | REQ | ISO 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
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.
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. |
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
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.
| Hex | Swatch色样MusterÉchantillon見本견본Muestra | Typical priority典型优先级PrioritätPriorité優先度우선순위Prioridad |
|---|---|---|
| #22c55e | medium | |
| #86efac | low | |
| #3b82f6 | critical | |
| #a855f7 | critical / high | |
| #f59e0b | high | |
| #ec4899 | critical / high |
Time handling
时间处理
Zeitverarbeitung
Gestion du temps
時刻処理
시간 처리
Manejo del tiempo
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 AM | 00:30 UTC |
| 7:00 AM | 01:30 UTC |
| 10:00 AM | 04:30 UTC |
| 1:00 PM | 07:30 UTC |
| 7:50 PM | 14:20 UTC |
| 8:30 PM | 15:00 UTC |
| 11:30 PM | 18:00 UTC |
Always exempt
始终豁免
Immer ausgenommen
Toujours exempt
常時除外
항상 제외
Siempre exento
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.
Getting it in
导入方法
Importieren
Importation
インポート
가져오기
Importar
.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).Code
代码
Code
Code
コード
코드
Código
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 } }
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.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.