Skip to content

Commit 5a41848

Browse files
joei4cmcursoragent
authored andcommitted
Merge upstream/dev into feat/tailscale for PR #2270
Re-apply Tailscale outbound nodes and bypass on upstream/dev (5f659cd). Resolve conflicts in setup/task injection, ARB strings, and tools entry. Adapt tailscale view to upstream dialog and delay-test APIs. Co-authored-by: MichaelZ <joei4cm@users.noreply.github.com>
1 parent 5f659cd commit 5a41848

28 files changed

Lines changed: 3868 additions & 68 deletions

arb/intl_en.arb

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -586,5 +586,65 @@
586586
"clearSearch": "Clear search",
587587
"addWidget": "Add widget",
588588
"showPassword": "Show password",
589-
"hidePassword": "Hide password"
590-
}
589+
"hidePassword": "Hide password",
590+
"features": "Features",
591+
"hideAdvanced": "Hide advanced",
592+
"showAdvanced": "Show advanced",
593+
"tailscale": "Tailscale",
594+
"tailscaleDesc": "Manage Tailscale outbound nodes",
595+
"tailscaleEnable": "Enable Tailscale",
596+
"tailscaleEnableDesc": "Inject Tailscale nodes as outbounds. Turning this off stops Tailscale from handling traffic; normal traffic is unaffected.",
597+
"tailscaleEmptyTip": "No Tailscale nodes yet. Add one to route traffic through your tailnet.",
598+
"addTailscaleNode": "Add Tailscale node",
599+
"editTailscaleNode": "Edit Tailscale node",
600+
"tailscaleAuthKey": "Auth key",
601+
"tailscaleHostname": "Hostname",
602+
"tailscaleControlUrl": "Control URL",
603+
"tailscaleStateDir": "State directory",
604+
"tailscaleEphemeral": "Ephemeral",
605+
"tailscaleUdp": "UDP relay",
606+
"tailscaleAcceptRoutes": "Accept routes",
607+
"tailscaleExitNode": "Exit node",
608+
"tailscaleExitNodeAllowLanAccess": "Allow LAN access via exit node",
609+
"tailscaleNameExistsTip": "A node with this name already exists",
610+
"tailscaleGuideTitle": "How Tailscale works",
611+
"tailscaleAuthKeyHint": "From the Tailscale admin console → Settings → Keys. Required to authenticate the node.",
612+
"tailscaleHostnameHint": "Optional. Device name shown in your tailnet.",
613+
"tailscaleControlUrlHint": "Optional. Only for self-hosted control servers such as Headscale.",
614+
"tailscaleStateDirHint": "Optional. Directory used to persist Tailscale state.",
615+
"tailscaleExitNodeHint": "Optional. IP or name of a tailnet exit node to route all traffic through.",
616+
"tailscaleBypass": "Keep Tailscale traffic direct",
617+
"tailscaleRoutes": "Route destinations",
618+
"tailscaleRoutesHint": "Domains or IPs sent through this node, one per line (e.g. your home PC's Tailscale IP or MagicDNS name).",
619+
"tailscaleScenarioAndroidTitle": "Android client setup",
620+
"tailscaleScenarioAndroidBody": "Keep FlClash as the only VPN. Do not run the Tailscale app VPN at the same time (Android allows only one). Use an embedded Tailscale node below, then add your home device to Route destinations.",
621+
"tailscaleScenarioDesktopTitle": "Desktop / host setup",
622+
"tailscaleScenarioDesktopBody": "You can run FlClash and the real Tailscale app together. Turn on \"Keep Tailscale traffic direct\" so FlClash does not hijack Tailscale's control plane or fake-IP DNS.",
623+
"tailscaleAndroidStep1": "Get an auth key from the Tailscale admin console (Settings → Keys).",
624+
"tailscaleAndroidStep2": "Add a node, paste the auth key, and put your home device IP or MagicDNS name in Route destinations.",
625+
"tailscaleAndroidStep3": "Turn on Enable Tailscale. Leave \"Keep Tailscale traffic direct\" off unless the Tailscale app is also installed.",
626+
"tailscaleAndroidStep4": "Start FlClash VPN, then tap the ping button on a node to verify the connection.",
627+
"tailscaleDesktopStep1": "If this PC also runs the Tailscale app/service, turn on \"Keep Tailscale traffic direct\".",
628+
"tailscaleDesktopStep2": "Optional: add an embedded Tailscale node with an auth key to route selected traffic through the tailnet from FlClash.",
629+
"tailscaleDesktopStep3": "Put destinations (home IPs / MagicDNS) in Route destinations, then turn on Enable Tailscale.",
630+
"tailscaleDesktopStep4": "Start FlClash, then tap the ping button on a node to verify the connection is solid.",
631+
"tailscaleBypassRecommended": "Recommended on desktop when the Tailscale app/service is installed. Auto-manages DIRECT rules and Fake IP Filter.",
632+
"tailscaleBypassAndroidHint": "Usually leave this off on Android. Turn on only if the Tailscale app is also installed on this phone.",
633+
"tailscaleStatusDisabled": "Tailscale is off — nodes are not injected into the running profile.",
634+
"tailscaleStatusNoNodes": "Enabled, but no nodes yet. Add a node to get started.",
635+
"tailscaleStatusNeedStart": "Nodes are ready. Start FlClash VPN, then tap ping to test.",
636+
"tailscaleStatusReady": "{count} node(s) active. Tap ping on a node to test connectivity.",
637+
"tailscaleStatusNeedRoutes": "Nodes are added, but no route destinations yet — traffic will not match until you add routes (or pick the node manually).",
638+
"tailscaleBypassNudge": "This device likely runs Tailscale already — turn on “Keep Tailscale traffic direct” to avoid fake-IP / control-plane breakage.",
639+
"tailscaleShowSetupGuide": "Setup guide",
640+
"tailscaleEnableBypassAction": "Enable",
641+
"tailscaleNameHelper": "Outbound name used in Proxies. Renaming changes how selections and delay tests key this node.",
642+
"tailscaleTestNeedEnable": "Turn on Enable Tailscale before testing.",
643+
"tailscaleTestNeedStart": "Start FlClash VPN before testing the connection.",
644+
"tailscaleTestNode": "Test connection",
645+
"tailscaleNotTested": "Not tested",
646+
"tailscaleNoRoutes": "No route destinations",
647+
"tailscaleRoutesCount": "{count} route(s)",
648+
"tailscaleNodesTitle": "Nodes",
649+
"tailscaleTestTip": "Use the ping button next to a node to check whether the Tailscale outbound can dial out. A latency value means the connection is working; Timeout means check the auth key, Enable switch, and that FlClash VPN is started."
650+
}

arb/intl_ja.arb

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -586,5 +586,65 @@
586586
"clearSearch": "検索をクリア",
587587
"addWidget": "ウィジェットを追加",
588588
"showPassword": "パスワードを表示",
589-
"hidePassword": "パスワードを非表示"
590-
}
589+
"hidePassword": "パスワードを非表示",
590+
"features": "機能",
591+
"hideAdvanced": "詳細設定を隠す",
592+
"showAdvanced": "詳細設定を表示",
593+
"tailscale": "Tailscale",
594+
"tailscaleDesc": "Tailscale アウトバウンドノードを管理",
595+
"tailscaleEnable": "Tailscale を有効化",
596+
"tailscaleEnableDesc": "Tailscale ノードをアウトバウンドとして注入します。オフにすると Tailscale はトラフィックを処理しなくなりますが、通常のトラフィックには影響しません。",
597+
"tailscaleEmptyTip": "Tailscale ノードがありません。追加すると、トラフィックを tailnet 経由で転送できます。",
598+
"addTailscaleNode": "Tailscale ノードを追加",
599+
"editTailscaleNode": "Tailscale ノードを編集",
600+
"tailscaleAuthKey": "認証キー",
601+
"tailscaleHostname": "ホスト名",
602+
"tailscaleControlUrl": "コントロール URL",
603+
"tailscaleStateDir": "状態ディレクトリ",
604+
"tailscaleEphemeral": "エフェメラル",
605+
"tailscaleUdp": "UDP リレー",
606+
"tailscaleAcceptRoutes": "ルートを受け入れる",
607+
"tailscaleExitNode": "出口ノード",
608+
"tailscaleExitNodeAllowLanAccess": "出口ノード経由の LAN アクセスを許可",
609+
"tailscaleNameExistsTip": "同じ名前のノードが既に存在します",
610+
"tailscaleGuideTitle": "Tailscale の仕組み",
611+
"tailscaleAuthKeyHint": "Tailscale 管理コンソール → 設定 → Keys から取得します。ノードの認証に必要です。",
612+
"tailscaleHostnameHint": "任意。tailnet に表示されるデバイス名です。",
613+
"tailscaleControlUrlHint": "任意。Headscale などの自己ホスト型コントロールサーバー用です。",
614+
"tailscaleStateDirHint": "任意。Tailscale の状態を保存するディレクトリです。",
615+
"tailscaleExitNodeHint": "任意。すべてのトラフィックを転送する tailnet 出口ノードの IP または名前です。",
616+
"tailscaleBypass": "Tailscale のトラフィックを直結に保つ",
617+
"tailscaleRoutes": "ルーティング先",
618+
"tailscaleRoutesHint": "このノード経由で送るドメインまたは IP(1 行に 1 つ、例: 自宅 PC の Tailscale IP や MagicDNS 名)。",
619+
"tailscaleScenarioAndroidTitle": "Android クライアント設定",
620+
"tailscaleScenarioAndroidBody": "VPN は FlClash だけにしてください。Tailscale アプリの VPN と同時には使えません(Android は VPN を 1 つだけ許可)。下で内蔵 Tailscale ノードを追加し、自宅デバイスをルーティング先に入れてください。",
621+
"tailscaleScenarioDesktopTitle": "デスクトップ / ホスト設定",
622+
"tailscaleScenarioDesktopBody": "FlClash と正式な Tailscale アプリを同時に使えます。「Tailscale のトラフィックを直結に保つ」をオンにして、FlClash が制御プレーンや fake-IP DNS を横取りしないようにします。",
623+
"tailscaleAndroidStep1": "Tailscale 管理コンソール(設定 → Keys)で認証キーを取得します。",
624+
"tailscaleAndroidStep2": "ノードを追加し、認証キーを貼り付け、ルーティング先に自宅デバイスの IP または MagicDNS 名を入れます。",
625+
"tailscaleAndroidStep3": "「Tailscale を有効化」をオンにします。Tailscale アプリも入れている場合以外は「直結に保つ」はオフのままで構いません。",
626+
"tailscaleAndroidStep4": "FlClash VPN を開始し、ノード横のピンボタンで接続を確認します。",
627+
"tailscaleDesktopStep1": "この PC で Tailscale アプリ/サービスも動かす場合は「Tailscale のトラフィックを直結に保つ」をオンにします。",
628+
"tailscaleDesktopStep2": "任意: 認証キー付きの内蔵 Tailscale ノードを追加し、選択した通信を FlClash から tailnet 経由にします。",
629+
"tailscaleDesktopStep3": "ルーティング先に宛先(自宅 IP / MagicDNS)を入れ、「Tailscale を有効化」をオンにします。",
630+
"tailscaleDesktopStep4": "FlClash を開始し、ノード横のピンボタンで接続が安定しているか確認します。",
631+
"tailscaleBypassRecommended": "Tailscale アプリ/サービスが入っているデスクトップでは推奨。DIRECT ルールと Fake IP Filter を自動管理します。",
632+
"tailscaleBypassAndroidHint": "Android では通常オフのまま。この端末にも Tailscale アプリがある場合だけオンにしてください。",
633+
"tailscaleStatusDisabled": "Tailscale はオフです — ノードは実行中の設定に注入されません。",
634+
"tailscaleStatusNoNodes": "有効ですが、ノードがありません。まずノードを追加してください。",
635+
"tailscaleStatusNeedStart": "ノードの準備ができました。FlClash VPN を開始してからピンでテストしてください。",
636+
"tailscaleStatusReady": "{count} 個のノードが有効です。ノード横のピンで接続をテストできます。",
637+
"tailscaleStatusNeedRoutes": "ノードは追加済みですがルート先がありません — ルートを追加するまで自動一致しません(または手動でノードを選択)。",
638+
"tailscaleBypassNudge": "この端末では Tailscale も動いている可能性があります — 「Tailscale 通信を直通」をオンにして Fake IP / 制御面の不具合を避けてください。",
639+
"tailscaleShowSetupGuide": "セットアップガイド",
640+
"tailscaleEnableBypassAction": "有効にする",
641+
"tailscaleNameHelper": "プロキシ一覧の出站名です。名前を変えると選択や遅延テストの対応も変わります。",
642+
"tailscaleTestNeedEnable": "テストする前に「Tailscale を有効化」をオンにしてください。",
643+
"tailscaleTestNeedStart": "接続をテストする前に FlClash VPN を開始してください。",
644+
"tailscaleTestNode": "接続をテスト",
645+
"tailscaleNotTested": "未テスト",
646+
"tailscaleNoRoutes": "ルーティング先なし",
647+
"tailscaleRoutesCount": "ルーティング先 {count} 件",
648+
"tailscaleNodesTitle": "ノード",
649+
"tailscaleTestTip": "ノード横のピンボタンで、Tailscale アウトバウンドが発信できるか確認できます。遅延が表示されれば接続は正常です。Timeout の場合は認証キー、「有効化」、FlClash VPN の起動を確認してください。"
650+
}

arb/intl_ru.arb

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -586,5 +586,65 @@
586586
"clearSearch": "Очистить поиск",
587587
"addWidget": "Добавить виджет",
588588
"showPassword": "Показать пароль",
589-
"hidePassword": "Скрыть пароль"
590-
}
589+
"hidePassword": "Скрыть пароль",
590+
"features": "Функции",
591+
"hideAdvanced": "Скрыть дополнительно",
592+
"showAdvanced": "Показать дополнительно",
593+
"tailscale": "Tailscale",
594+
"tailscaleDesc": "Управление исходящими узлами Tailscale",
595+
"tailscaleEnable": "Включить Tailscale",
596+
"tailscaleEnableDesc": "Добавлять узлы Tailscale как исходящие. При отключении Tailscale перестаёт обрабатывать трафик; обычный трафик не затрагивается.",
597+
"tailscaleEmptyTip": "Узлов Tailscale пока нет. Добавьте узел, чтобы направлять трафик через вашу сеть tailnet.",
598+
"addTailscaleNode": "Добавить узел Tailscale",
599+
"editTailscaleNode": "Изменить узел Tailscale",
600+
"tailscaleAuthKey": "Ключ аутентификации",
601+
"tailscaleHostname": "Имя хоста",
602+
"tailscaleControlUrl": "URL сервера управления",
603+
"tailscaleStateDir": "Каталог состояния",
604+
"tailscaleEphemeral": "Временный узел",
605+
"tailscaleUdp": "Ретрансляция UDP",
606+
"tailscaleAcceptRoutes": "Принимать маршруты",
607+
"tailscaleExitNode": "Выходной узел",
608+
"tailscaleExitNodeAllowLanAccess": "Разрешить доступ к локальной сети через выходной узел",
609+
"tailscaleNameExistsTip": "Узел с таким именем уже существует",
610+
"tailscaleGuideTitle": "Как работает Tailscale",
611+
"tailscaleAuthKeyHint": "Из консоли администратора Tailscale → Settings → Keys. Требуется для аутентификации узла.",
612+
"tailscaleHostnameHint": "Необязательно. Имя устройства, отображаемое в вашей сети tailnet.",
613+
"tailscaleControlUrlHint": "Необязательно. Только для собственных серверов управления, например Headscale.",
614+
"tailscaleStateDirHint": "Необязательно. Каталог для хранения состояния Tailscale.",
615+
"tailscaleExitNodeHint": "Необязательно. IP-адрес или имя выходного узла tailnet для маршрутизации всего трафика.",
616+
"tailscaleBypass": "Оставлять трафик Tailscale напрямую",
617+
"tailscaleRoutes": "Пункты назначения маршрута",
618+
"tailscaleRoutesHint": "Домены или IP, направляемые через этот узел, по одному в строке (например, Tailscale IP или имя MagicDNS вашего домашнего ПК).",
619+
"tailscaleScenarioAndroidTitle": "Настройка клиента Android",
620+
"tailscaleScenarioAndroidBody": "Оставьте FlClash единственным VPN. Не запускайте VPN приложения Tailscale одновременно (Android допускает только один). Добавьте встроенный узел Tailscale ниже и укажите домашнее устройство в пунктах назначения маршрута.",
621+
"tailscaleScenarioDesktopTitle": "Настройка ПК / хоста",
622+
"tailscaleScenarioDesktopBody": "Можно запускать FlClash и настоящее приложение Tailscale вместе. Включите «Оставлять трафик Tailscale напрямую», чтобы FlClash не перехватывал плоскость управления Tailscale и fake-IP DNS.",
623+
"tailscaleAndroidStep1": "Получите ключ аутентификации в консоли администратора Tailscale (Settings → Keys).",
624+
"tailscaleAndroidStep2": "Добавьте узел, вставьте ключ и укажите IP или имя MagicDNS домашнего устройства в пунктах назначения маршрута.",
625+
"tailscaleAndroidStep3": "Включите Tailscale. «Оставлять трафик напрямую» обычно выключайте, если приложение Tailscale на телефоне не установлено.",
626+
"tailscaleAndroidStep4": "Запустите VPN FlClash, затем нажмите кнопку ping у узла, чтобы проверить соединение.",
627+
"tailscaleDesktopStep1": "Если на этом ПК также работает приложение/служба Tailscale, включите «Оставлять трафик Tailscale напрямую».",
628+
"tailscaleDesktopStep2": "Необязательно: добавьте встроенный узел Tailscale с ключом, чтобы направлять выбранный трафик через tailnet из FlClash.",
629+
"tailscaleDesktopStep3": "Укажите назначения (домашние IP / MagicDNS) в пунктах назначения маршрута и включите Tailscale.",
630+
"tailscaleDesktopStep4": "Запустите FlClash и нажмите ping у узла, чтобы убедиться, что соединение стабильно.",
631+
"tailscaleBypassRecommended": "Рекомендуется на ПК, где установлено приложение/служба Tailscale. Автоматически управляет правилами DIRECT и Fake IP Filter.",
632+
"tailscaleBypassAndroidHint": "На Android обычно оставляйте выключенным. Включайте только если на телефоне также установлено приложение Tailscale.",
633+
"tailscaleStatusDisabled": "Tailscale выключен — узлы не добавляются в рабочий профиль.",
634+
"tailscaleStatusNoNodes": "Включено, но узлов ещё нет. Добавьте узел, чтобы начать.",
635+
"tailscaleStatusNeedStart": "Узлы готовы. Запустите VPN FlClash, затем нажмите ping для проверки.",
636+
"tailscaleStatusReady": "Активных узлов: {count}. Нажмите ping у узла, чтобы проверить связь.",
637+
"tailscaleStatusNeedRoutes": "Узлы добавлены, но нет маршрутов — трафик не совпадёт, пока не добавите маршруты (или выберите узел вручную).",
638+
"tailscaleBypassNudge": "На этом устройстве, возможно, уже запущен Tailscale — включите «Прямой трафик Tailscale», чтобы избежать проблем Fake IP / control plane.",
639+
"tailscaleShowSetupGuide": "Инструкция",
640+
"tailscaleEnableBypassAction": "Включить",
641+
"tailscaleNameHelper": "Имя исходящего узла в Proxies. Переименование меняет привязку выбора и тестов задержки.",
642+
"tailscaleTestNeedEnable": "Перед проверкой включите Tailscale.",
643+
"tailscaleTestNeedStart": "Перед проверкой соединения запустите VPN FlClash.",
644+
"tailscaleTestNode": "Проверить соединение",
645+
"tailscaleNotTested": "Не проверено",
646+
"tailscaleNoRoutes": "Нет пунктов назначения",
647+
"tailscaleRoutesCount": "Маршрутов: {count}",
648+
"tailscaleNodesTitle": "Узлы",
649+
"tailscaleTestTip": "Кнопка ping рядом с узлом проверяет, может ли исходящий Tailscale установить соединение. Задержка означает, что связь есть; Timeout — проверьте ключ, переключатель включения и что VPN FlClash запущен."
650+
}

0 commit comments

Comments
 (0)