diff --git a/Tools/check-metadata.rb b/Tools/check-metadata.rb index 23a0abe0..e4990887 100755 --- a/Tools/check-metadata.rb +++ b/Tools/check-metadata.rb @@ -71,13 +71,14 @@ def read_text(path) # Control characters and unvetted glyphs. Tabs are included: they survive into # the listing as literal whitespace nobody sees in the editor. -def check_characters(path, body) +# `locale` widens the allowlist to that locale's scripts (MetadataLimits:: +# SCRIPT_RANGES); the TestFlight changelog and en-US stay glyph-strict. +def check_characters(path, body, locale = nil) body.each_char.with_index do |char, index| next if char == "\n" - ord = char.ord - next if ord >= 0x20 && ord < 0x7F - next if MetadataLimits::ALLOWED_GLYPHS.key?(char) + next if MetadataLimits.allowed_character?(char, locale) + ord = char.ord line = body[0, index].count("\n") + 1 name = ord < 0x20 || ord == 0x7F ? "control character" : "character #{char}" error( @@ -96,7 +97,7 @@ def check_length(path, body, limit) error(path, "is #{length} characters; App Store Connect allows #{limit}") end -def check_file(path, limit) +def check_file(path, limit, locale = nil) body = read_text(path) return if body.nil? @@ -104,7 +105,7 @@ def check_file(path, limit) error(path, "is empty") return end - check_characters(path, body) + check_characters(path, body, locale) check_length(path, body, limit) if limit body end @@ -137,7 +138,7 @@ def check_whats_new def locale_directories Dir.children(METADATA) .select { |name| File.directory?(File.join(METADATA, name)) } - .grep(/\A[a-z]{2}(-[A-Z]{2})?\z/) + .grep(/\A[a-z]{2}(-[A-Z][a-z]{3})?(-[A-Z]{2})?\z/) # en-US, ja, zh-Hant .sort end @@ -166,7 +167,7 @@ def check_locales next end - body = check_file(path, MetadataLimits::LOCALIZED[field_for(basename)]) + body = check_file(path, MetadataLimits::LOCALIZED[field_for(basename)], locale) check_url(path, body) if URL_FILES.include?(basename) check_keywords(path, body) if basename == "keywords" end diff --git a/Tools/metadata_limits.rb b/Tools/metadata_limits.rb index 0960b6e6..203a6ef5 100644 --- a/Tools/metadata_limits.rb +++ b/Tools/metadata_limits.rb @@ -50,4 +50,35 @@ module MetadataLimits "▸" => "forward glyph (File Viewer history)", "◂" => "back glyph (File Viewer history)", }.freeze + + # Localized listings need whole scripts, not glyphs: a Traditional Chinese + # or Japanese description is thousands of distinct characters no allowlist + # could name. Each locale gets the Unicode blocks its copy is written in — + # the ideographs, kana, the CJK punctuation block (、。「」…) and the + # full-width forms (,:?!()) — on top of ASCII and ALLOWED_GLYPHS. A + # character outside those blocks (an emoji, a stray Cyrillic look-alike) + # is still refused, and en-US stays glyph-strict. + CJK_RANGES = [ + 0x3000..0x303F, # CJK Symbols and Punctuation + 0x3040..0x309F, # Hiragana + 0x30A0..0x30FF, # Katakana + 0x3400..0x4DBF, # CJK Unified Ideographs Extension A + 0x4E00..0x9FFF, # CJK Unified Ideographs + 0xF900..0xFAFF, # CJK Compatibility Ideographs + 0xFF00..0xFFEF, # Halfwidth and Fullwidth Forms + ].freeze + + SCRIPT_RANGES = { + "zh-Hant" => CJK_RANGES + [0x3100..0x312F], # + Bopomofo + "ja" => CJK_RANGES, + }.freeze + + # The single character test both the Fastfile and the checker apply. + def self.allowed_character?(char, locale) + ord = char.ord + return true if ord >= 0x20 && ord < 0x7F + return true if ALLOWED_GLYPHS.key?(char) + + SCRIPT_RANGES.fetch(locale, []).any? { |range| range.cover?(ord) } + end end diff --git a/docs/agents/release-and-metadata.md b/docs/agents/release-and-metadata.md index 7312b23b..d4cef8df 100644 --- a/docs/agents/release-and-metadata.md +++ b/docs/agents/release-and-metadata.md @@ -14,7 +14,13 @@ changelog looked right in every editor and App Store Connect refused the character. The caps live in that one file, required by `fastlane/Fastfile` too, so the lane that fails an archive and the job that fails a pull request can never disagree. Add a glyph to the allowlist only after an upload has -actually accepted it. +actually accepted it. Localized listings (`fastlane/metadata/zh-Hant`, `ja` +— every en-US file mirrored, same caps) are allowed their whole scripts by +Unicode block (`MetadataLimits::SCRIPT_RANGES`: ideographs, kana, bopomofo, +CJK punctuation, full-width forms) instead of glyph-by-glyph; en-US and +the TestFlight changelog stay glyph-strict, and the changelog stays +English. When en-US copy changes, change the two mirrors in the same PR +(glossary in `i18n.md`; run `zhtw-mcp lint` over the zh-Hant files). - **App icon is a hand-authored Icon Composer package** (`AppIcon.icon`; spec + bake-off in `DESIGN.md`); icon.json lists groups diff --git a/fastlane/metadata/ja/beta_app_description.txt b/fastlane/metadata/ja/beta_app_description.txt new file mode 100644 index 00000000..b09c0812 --- /dev/null +++ b/fastlane/metadata/ja/beta_app_description.txt @@ -0,0 +1,28 @@ +Multiplexはリモートのtmuxを中心に作られた空間SSHターミナルで、ホストごとにherdrも選べます — Apple Vision Pro、iPad、iPhoneのネイティブAppです。 + +Deckはライブのウォールです。すべてのホストが同時にプローブされ、各セッションはそのセッションの実際の最後の画面行を示すタイルとして描かれます。タイルをタップするとアタッチし、セッションは独自のウインドウで開きます — Vision Proでは空間ウインドウ、iPadではステージマネージャのシーン、iPhoneではフルスクリーンのペイン。ウインドウはタブにまとめたり分割し直したりでき、シェルは落ちません。HERDRモードでは1タイルが1つのherdrセッションで、そのワークスペースがタイルのスパインになり、エージェントの状態はherdr自身から得ます。 + +Multiplexはペインで動いているClaude Code、Codex、Pi、Grok Buildも見つけ出し、ターミナルの下にコマンドストリップを置きます。Multiplex Proは、見ていないエージェントがターンを終えたり質問したりしたときの通知、どのメッセージにもワンタップでジャンプできるClaude Codeのプロンプト履歴、mosh、無制限のホスト、カスタムターミナルテーマのエディタを追加します。 + +必要なもの +- SSHで到達できるホスト(パスワード、またはOpenSSHのed25519/RSA鍵)。 +- ウォールと永続セッションのために、そのホスト上のtmux 1.8以降またはherdr 0.7.5以降。通常のSSHシェルはどちらもなくても動きますが、タイルは出ません。 +- moshトランスポート(Pro)を試すなら、ホスト上のmosh-server。 + +どこに何があるか +- Deckの + HOSTでホストを追加。プローブはすぐに始まります。 +- 設定 → 外観でシャーシをライブに切り替え。Vision ProにはSYSTEM、LIGHT、DARKに加えてGLASSがあります。 +- ホスト設定 → BACKENDでホストをTMUXとHERDRの間で切り替え。→ MONITORINGには「バックグラウンドで接続を維持」もあり、デフォルトはオフです。 +- + NEW SESSIONで永続セッションを開始するか、任意のセットアップスクリプト、モデル、最初のプロンプト付きでエージェントを起動。ウィジェットとショートカットからの起動はどちらのバックエンドでも動き、既存のセッションの中にも入れます。 +- TMUX(Vision Proでは下部バー、iPad/iPhoneではキーバー、幅の狭いiPhoneでは右上)で日常のtmuxコマンドを送信。herdrタブではこのキーはHRDRと表示され、herdr自身のコマンドを送ります。 +- ターミナルを長押し、ダブルタップ、または副ボタンクリックすると、どちらのバックエンドでもSELECT/SELECT ALL/PASTE。選択はそのペインの中に留まります。herdrタブにはMENUも加わり、そのセルでherdr自身のペインメニューを開きます。 +- FILEは写真、ファイル、カメラからアクティブなペインの作業ディレクトリへアップロードし、Returnを押さずにリモートのパスを入力します。ファイルをドラッグしても同じです。 +- + TAB → ファイルビューアでホストのファイルとgitの差分を閲覧。ターミナル出力のパスを長押しすると、そのファイルがセッションの横に開きます。レンダリングされたMarkdownのWebリンクは、ドックされたビューポートかシステムのブラウザで開けます。 +- ターミナルのGUIDEチップは、そのタブのジェスチャを図解したフィールドマニュアルです。 +- DETACHでウインドウを閉じます。リモートのセッションは動き続け、タイルはウォールに残ります。 +- ホーム画面ウィジェットは、ホストで最後に開いたセッション — または選んだセッション — とSHELL/AGENTのキーを表示。ショートカットとSiriでシェルを開く、リモートファイルを行または行範囲で表示する、エージェントを起動することができます。 + +ホスト、エージェントコマンドの設定、シークレットはiCloudキーチェーンを通じてデバイス間で同期され、エンドツーエンドで暗号化されます。Multiplexのサーバはなく、アカウントも分析もありません。 + +報告してほしいこと +接続が切れる、キーボードのフォーカスが失われる、ウインドウの位置やサイズがおかしくなる、ターミナルの描画が乱れる — こうしたことがあれば、デバイス、OSのバージョン、そのとき何をしていたかを添えてお知らせください。TestFlight内のスクリーンショットによるフィードバックは開発者に直接届きます。 diff --git a/fastlane/metadata/ja/description_ios.txt b/fastlane/metadata/ja/description_ios.txt new file mode 100644 index 00000000..67d71862 --- /dev/null +++ b/fastlane/metadata/ja/description_ios.txt @@ -0,0 +1,28 @@ +Multiplexは、リモートの永続セッションの中で暮らす人のためのターミナルです — iPhoneとiPadのためにネイティブで作られました。 + +ウォール +ホストは同時にプローブされます。どのセッションもライブモニタ:実際の最後の画面行、ウインドウごとのスパイン、アタッチ中は赤いLIVE。アタッチする前にフリート全体を見渡せます。NO SIGNALはワンタップで再接続。tmuxを動かすか、ホストをherdrに切り替えるか — セッションごとに1タイル、ワークスペースはスパインに、エージェントの状態はherdr自身から読み取ります。 + +セッションを、必要な場所に +iPadでは、アタッチすると各セッションがステージマネージャ、Split View、外部ディスプレイのための本物のシーンで開きます。ウインドウをタブにまとめ、また分割できます — SSH接続、バッファ、スクロールバックはタブと一緒に移動するので、シェルが落ちることはありません。iPhoneでは、ウォールとターミナルがひとつの可変フルスクリーンシェルを共有します。 + +AIエージェントセッションのために +Claude Code、Codex、Pi、Grok Buildを、任意のセットアップスクリプト、モデル、最初のプロンプト付きで1ステップで起動。Multiplexは4つすべてをどのペインでも見つけ出し、ヘルパーチップは前面のエージェントに追従するので、コマンドはあなたのキー入力を受け取っているプロセスに届きます — 並べ替え、自分のチップを追加でき、各ホストがその設定をすべてのデバイスで覚えています。Proは1日のチップ上限を取り払い、見ていないターンが終わったり入力を必要としたりすると通知し(tmux上のClaude Code、Codex、Grok Build。herdr上ではherdr自身が追跡するすべてのエージェント)、Claude Codeのプロンプト履歴をワンタップのトランスクリプトジャンプ付きで開きます。tmuxとherdrのタブにファイルを添付またはドロップ:Multiplexはペインの作業ディレクトリへアップロードし、リモートのパスを入力します。 + +ウィジェットとショートカット +ホストをホーム画面に置けます — 最後に確認したセッションのフレームと正直なSEENスタンプ、そして接続へ直行するSHELLとAGENTのキー — または全ホストをひと目で見渡すフリートウィジェット。ショートカットとSiriでシェルを開く、リモートファイルを任意の行または行範囲で表示する、選んだディレクトリでエージェントを起動する(新しいセッションとして、または既存のセッションの中で)ことができます。multiplex://URLスキームで独自の自動化も。 + +mosh内蔵 +Proならホストをmoshに切り替えるだけで、セッションはスリープ、ローミング、IPの変更を越えて生き残ります — ネイティブSwiftのmoshクライアントで、コンパニオンAppは不要です。 + +本物のターミナル +完全なxterm-256colorエミュレーション、多言語のシステムキーボード入力、マウス対応TUIのためのタッチとポインタによるクリック、ハードウェアキーボード、ライブのPTYリサイズ、日常のtmuxコマンドを集めた内蔵メニュー — herdrタブにはherdr自身のセットを。CTRLを押し続けるとキーコマンド:ソフトウェアキーボードでは押せない保存済みのコード(Shift+Enter、Ctrl-Cを2回、単語を削除するOption+Backspace)と1行のテキストマクロを、独自の繰り返し回数と開いたままにするルール付きで、デバイス間で同期。長押し、ダブルタップ、または副ボタンクリックで、どちらのバックエンドでもペイン内に収まるテキスト選択。システム、ライト、ダークがシャーシ全体を切り替え、それぞれ独自のターミナルテーマを保持します — 10を内蔵し、Proは背景、テキスト、カーソル、16のANSIカラーすべてのエディタを追加します。 + +設計からプライベート +ホスト、エージェントコマンドの設定、シークレットはiCloudキーチェーンを通じてデバイス間で同期され、エンドツーエンドで暗号化されます。私たちのサーバに触れるものはありません — サーバ自体が存在しないからです。アカウントなし、分析なし、トラッキングなし。 + +MULTIPLEX PRO +1回の購入、サブスクリプションなし:無制限のホスト、mosh、エージェント通知、上限のないコマンドストリップ、カスタムテーマ、そしてすべてのデバイスで12のキーコマンド。無料版には2台のホスト、完全なターミナル、5つのキーコマンド、1日10回のエージェントコマンドチップタップが含まれます。 + +必要なもの +SSHで到達できるリモートホスト(パスワード、またはOpenSSHのed25519/RSA鍵)。ライブウォールと永続セッションにはtmux 1.8以降またはherdr 0.7.5以降が必要です。通常のSSHシェルはどちらもなくても動作します。moshにはホスト上のmosh-serverが必要です。 diff --git a/fastlane/metadata/ja/description_visionos.txt b/fastlane/metadata/ja/description_visionos.txt new file mode 100644 index 00000000..8779fbb7 --- /dev/null +++ b/fastlane/metadata/ja/description_visionos.txt @@ -0,0 +1,28 @@ +Multiplexは、リモートの永続セッションの中で暮らす人のためのターミナルです — Apple Vision Proのためにネイティブで作られました。 + +ウォール +ホストは同時にプローブされます。どのセッションもライブモニタ:実際の最後の画面行、ウインドウごとのスパイン、アタッチ中は赤いLIVE。アタッチする前にフリート全体を見渡せます。NO SIGNALはワンタップで再接続。tmuxを動かすか、ホストをherdrに切り替えるか — セッションごとに1タイル、ワークスペースはスパインに、エージェントの状態はherdr自身から読み取ります。 + +セッションごとにウインドウ +アタッチするとセッションが独自の空間ウインドウで開きます — ビルドログはエディタの上に、サーバのダッシュボードは部屋の向こうに。ウインドウをタブにまとめ、また分割できます。SSH接続、バッファ、スクロールバックはタブと一緒に移動するので、シェルが落ちることはありません。 + +AIエージェントセッションのために +Claude Code、Codex、Pi、Grok Buildを、任意のセットアップスクリプト、モデル、最初のプロンプト付きで1ステップで起動。Multiplexは4つすべてをどのペインでも見つけ出し、ヘルパーチップは前面のエージェントに追従するので、コマンドはあなたのキー入力を受け取っているプロセスに届きます — 並べ替え、自分のチップを追加でき、各ホストがその設定をすべてのデバイスで覚えています。Proは1日のチップ上限を取り払い、見ていないターンが終わったり入力を必要としたりすると通知し(tmux上のClaude Code、Codex、Grok Build。herdr上ではherdr自身が追跡するすべてのエージェント)、Claude Codeのプロンプト履歴をワンタップのトランスクリプトジャンプ付きで開きます。tmuxとherdrのタブにファイルを添付またはドロップ:Multiplexはペインの作業ディレクトリへアップロードし、リモートのパスを入力します。 + +ウィジェットとショートカット +visionOS 26以降では、ホストを空間にピン留めできます — 最後に確認したセッションのフレームと正直なSEENスタンプ、そして接続へ直行するSHELLとAGENTのキー — または全ホストをひと目で見渡すフリートウィジェット。ショートカットとSiriでシェルを開く、リモートファイルを任意の行または行範囲で表示する、選んだディレクトリでエージェントを起動する(新しいセッションとして、または既存のセッションの中で)ことができます。multiplex://URLスキームで独自の自動化も。 + +mosh内蔵 +Proならホストをmoshに切り替えるだけで、セッションはスリープ、ローミング、IPの変更を越えて生き残ります — ネイティブSwiftのmoshクライアントで、コンパニオンAppは不要です。 + +本物のターミナル +完全なxterm-256colorエミュレーション、多言語のシステムキーボード入力、マウス対応TUIのための視線とピンチによるクリック、ハードウェアキーボード、ライブのPTYリサイズ、日常のtmuxコマンドを集めた内蔵メニュー — herdrタブにはherdr自身のセットを。CTRLを押し続けるとキーコマンド:ソフトウェアキーボードでは押せない保存済みのコード(Shift+Enter、Ctrl-Cを2回、単語を削除するOption+Backspace)と1行のテキストマクロを、独自の繰り返し回数と開いたままにするルール付きで、デバイス間で同期。長押しまたはダブルピンチで、どちらのバックエンドでもペイン内に収まるテキスト選択。システム、ライト、ダーク、スモークガラスがシャーシ全体を切り替えます。ガラスは部屋を透かし、ダークのターミナルテーマを共有します。10のテーマを内蔵し、Proは背景、テキスト、カーソル、16のANSIカラーすべてのエディタを追加します。 + +設計からプライベート +ホスト、エージェントコマンドの設定、シークレットはiCloudキーチェーンを通じてデバイス間で同期され、エンドツーエンドで暗号化されます。私たちのサーバに触れるものはありません — サーバ自体が存在しないからです。アカウントなし、分析なし、トラッキングなし。 + +MULTIPLEX PRO +1回の購入、サブスクリプションなし:無制限のホスト、mosh、エージェント通知、上限のないコマンドストリップ、カスタムテーマ、そしてすべてのデバイスで12のキーコマンド。無料版には2台のホスト、完全な空間体験、5つのキーコマンド、1日10回のエージェントコマンドチップタップが含まれます。 + +必要なもの +SSHで到達できるリモートホスト(パスワード、またはOpenSSHのed25519/RSA鍵)。ライブウォールと永続セッションにはtmux 1.8以降またはherdr 0.7.5以降が必要です。通常のSSHシェルはどちらもなくても動作します。moshにはホスト上のmosh-serverが必要です。 diff --git a/fastlane/metadata/ja/keywords.txt b/fastlane/metadata/ja/keywords.txt new file mode 100644 index 00000000..1b17cd2b --- /dev/null +++ b/fastlane/metadata/ja/keywords.txt @@ -0,0 +1 @@ +mosh,shell,ターミナル,リモート,サーバ,devops,homelab,vps,linux,claude,codex,agent,cli,sysadmin,unix \ No newline at end of file diff --git a/fastlane/metadata/ja/marketing_url.txt b/fastlane/metadata/ja/marketing_url.txt new file mode 100644 index 00000000..f313d64c --- /dev/null +++ b/fastlane/metadata/ja/marketing_url.txt @@ -0,0 +1 @@ +https://multiplexterm.dev \ No newline at end of file diff --git a/fastlane/metadata/ja/name.txt b/fastlane/metadata/ja/name.txt new file mode 100644 index 00000000..d81ee589 --- /dev/null +++ b/fastlane/metadata/ja/name.txt @@ -0,0 +1 @@ +Multiplex — SSH tmuxターミナル \ No newline at end of file diff --git a/fastlane/metadata/ja/privacy_url.txt b/fastlane/metadata/ja/privacy_url.txt new file mode 100644 index 00000000..dc4951b0 --- /dev/null +++ b/fastlane/metadata/ja/privacy_url.txt @@ -0,0 +1 @@ +https://multiplexterm.dev/privacy \ No newline at end of file diff --git a/fastlane/metadata/ja/promotional_text.txt b/fastlane/metadata/ja/promotional_text.txt new file mode 100644 index 00000000..183aff75 --- /dev/null +++ b/fastlane/metadata/ja/promotional_text.txt @@ -0,0 +1 @@ +tmux(またはherdr)セッションのライブ監視ウォール、エージェントがあなたを必要とするときの通知、スリープやローミングを越えて生き残るmosh。 \ No newline at end of file diff --git a/fastlane/metadata/ja/release_notes_ios.txt b/fastlane/metadata/ja/release_notes_ios.txt new file mode 100644 index 00000000..45a19c6b --- /dev/null +++ b/fastlane/metadata/ja/release_notes_ios.txt @@ -0,0 +1,12 @@ +Multiplex 1.3.1 — READMEの中の画像、分割ペインでも動作するファイルパス、そして選択・スクロール・moshの整理。 + +• レンダリングされたREADMEでは「image: …」のプレースホルダがリンクになりました。押すと画像が本文の幅に合わせてその場に表示され、キャプションを押すと隠れ、タップで全画面ズーム。Web上の画像はリンク確認の後ろに留まり、確認画面ではブラウザに加えてドックされた ⌗ ビューポートも選べます。押すまで何も取得しません。 +• ファイルパスが分割ペインでも動作します。ペインの境界で折り返されたパスはつなぎ直され、隣のペインのテキストを拾うことはなく、相対パスは押したペインを基準に解決されます。 +• ショートカットに「ファイルを開く」が加わりました:ホスト、リモートのパス、任意の行 — Sources/App.swift:10-15が ▤ ファイルビューアのタブで読み取り専用で開き、範囲がハイライトされます。ターミナルで押したパスも同じように行範囲を運びます。 +• iPadではキーバーがホームインジケータの帯の上に浮かぶのではなく、ウインドウの下端まで伸びます — キーの下がすっきりし、iPhoneの横向きでも同様です。 +• 選択は押した場所に留まります。SELECTブロックとSELECT TEXTバーは、moshタブやスクロールバックしたターミナルで上にずれなくなり、2つ目のクライアントがアタッチしているときは共有ジオメトリが落ち着くのを待ちます。 +• moshタブは1画面だけを保ちます — 古いレイアウトをライブ画面の上に積み上げていた不要なスクロール領域はなくなりました。 +• tmuxの分割ショートカットがiPadで余分な % を入力しなくなり、ファイルビューアはtmuxでもherdrでも押したペインの作業ディレクトリで開きます。 +• すべての接続で、サーバのSSHホスト鍵をそのホストに記録された指紋と照合するようになりました — Bind Hostから、「ホストを追加 → ホスト鍵」に貼り付けた鍵、または初回接続時にピン留めした鍵。「ホスト設定 → ホスト鍵」に記録内容が一覧されます。 +•「設定 → ターミナルレンダラー」でMetalを使いGPU上にターミナルのテキストを描画できます — デフォルトはオフで、新しく開いたターミナルウインドウに適用されます。 +•「購入を復元」はApp Storeの復元同期が失敗しても回復し、エラーは対処できる内容を示すようになりました。 diff --git a/fastlane/metadata/ja/release_notes_visionos.txt b/fastlane/metadata/ja/release_notes_visionos.txt new file mode 100644 index 00000000..e0adbb22 --- /dev/null +++ b/fastlane/metadata/ja/release_notes_visionos.txt @@ -0,0 +1,14 @@ +Multiplex 1.3.1 — READMEの中の画像、ウインドウの下に浮かぶバー、そして選択・スクロール・moshの整理。 + +• ▤ ファイルビューアと ⌗ ビューポートのタブの下部バーは、ウインドウの外に浮かんでリサイズの角を避け、ウインドウのサイズが変わっても大きさを保ちます。 +• レンダリングされたREADMEでは「image: …」のプレースホルダがリンクになりました。押すと画像が本文の幅に合わせてその場に表示され、キャプションを押すと隠れ、タップで全画面ズーム。Web上の画像はリンク確認の後ろに留まり、確認画面ではブラウザに加えてドックされた ⌗ ビューポートも選べます。押すまで何も取得しません。 +• ファイルパスが分割ペインでも動作します。ペインの境界で折り返されたパスはつなぎ直され、隣のペインのテキストを拾うことはなく、相対パスは押したペインを基準に解決されます。 +• ショートカットに「ファイルを開く」が加わりました:ホスト、リモートのパス、任意の行 — Sources/App.swift:10-15が ▤ ファイルビューアのタブで読み取り専用で開き、範囲がハイライトされます。ターミナルで押したパスも同じように行範囲を運びます。 +• 選択は押した場所に留まります。SELECTブロックとSELECT TEXTバーは、スクロールバックしたターミナルやmoshタブでずれなくなり、2つ目のクライアントがアタッチしているときは共有ジオメトリが落ち着くのを待ちます。 +• moshタブは1画面だけを保ちます — 古いレイアウトをライブ画面の上に積み上げていた不要なスクロール領域はなくなりました。 +• ストリーミング出力がより滑らかに:再描画が60 Hzのクロックではなく90 Hzのディスプレイに揃い、高速でスクロールするテキストが均等に進みます。 +• 長いスクロールは、パンを始めた位置に固定され、herdrのタブバーやtmuxのステータス行へ流れていきません。 +• ファイルビューアは、tmuxでもherdrでも押したペインの作業ディレクトリで開きます。 +• すべての接続で、サーバのSSHホスト鍵をそのホストに記録された指紋と照合するようになりました — Bind Hostから、「ホストを追加 → ホスト鍵」に貼り付けた鍵、または初回接続時にピン留めした鍵。「ホスト設定 → ホスト鍵」に記録内容が一覧されます。 +•「設定 → ターミナルレンダラー」でMetalを使いGPU上にターミナルのテキストを描画できます — デフォルトはオフで、新しく開いたターミナルウインドウに適用されます。 +•「購入を復元」はApp Storeの復元同期が失敗しても回復し、エラーは対処できる内容を示すようになりました。 diff --git a/fastlane/metadata/ja/subtitle.txt b/fastlane/metadata/ja/subtitle.txt new file mode 100644 index 00000000..e11c12db --- /dev/null +++ b/fastlane/metadata/ja/subtitle.txt @@ -0,0 +1 @@ +セッションごとに、ひとつのウインドウ \ No newline at end of file diff --git a/fastlane/metadata/ja/support_url.txt b/fastlane/metadata/ja/support_url.txt new file mode 100644 index 00000000..f313d64c --- /dev/null +++ b/fastlane/metadata/ja/support_url.txt @@ -0,0 +1 @@ +https://multiplexterm.dev \ No newline at end of file diff --git a/fastlane/metadata/zh-Hant/beta_app_description.txt b/fastlane/metadata/zh-Hant/beta_app_description.txt new file mode 100644 index 00000000..31d0d942 --- /dev/null +++ b/fastlane/metadata/zh-Hant/beta_app_description.txt @@ -0,0 +1,28 @@ +Multiplex 是圍繞遠端 tmux 打造的空間 SSH 終端機,herdr 可作為每台主機的替代後端 — 原生支援 Apple Vision Pro、iPad 與 iPhone。 + +Deck 是一面即時監控牆:每台主機同時探測,每個工作階段都算繪成方塊,顯示該工作階段真正的最後幾行畫面。點方塊即可連接,工作階段會在自己的視窗中開啟 — Vision Pro 上是空間視窗、iPad 上是幕前調度場景、iPhone 上是全螢幕窗格。視窗可合併成標籤頁再拆回去,Shell 不會斷。在 HERDR 模式下,一個方塊就是一個 herdr 工作階段,其工作區成為方塊的脊線,Agent 狀態來自 herdr 本身。 + +Multiplex 也會認出窗格中執行的 Claude Code、Codex、Pi 與 Grok Build,並在終端機下方放上指令列。Multiplex Pro 加上:沒盯著的 Agent 完成回合或提問時的提醒、可一按跳到任一則訊息的 Claude Code 提示歷史、mosh、無限主機,以及自訂終端機主題編輯器。 + +你需要什麼 +- 一台可透過 SSH 連上的主機(密碼,或 OpenSSH ed25519/RSA 金鑰)。 +- 該主機上有 tmux 1.8+ 或 herdr 0.7.5+,才有監控牆與持久工作階段。一般 SSH Shell 兩者皆不需要,但沒有方塊。 +- 想試 mosh 傳輸(Pro)的話,主機上要有 mosh-server。 + +東西在哪裡 +- Deck 上的 + HOST 新增主機;探測立即開始。 +- 設定 → 外觀可即時切換外框;Vision Pro 在 SYSTEM、LIGHT、DARK 之外多了 GLASS。 +- 主機設定 → BACKEND 在 TMUX 與 HERDR 之間切換主機。→ MONITORING 也放著「背景保持連線」,預設關閉。 +- + NEW SESSION 建立持久工作階段,或以選填的設定指令碼、模型與第一個提示啟動 Agent。小工具與捷徑的啟動在兩種後端上都可用,也能進入既有的工作階段。 +- TMUX(Vision Pro 的底部列、iPad/iPhone 的按鍵列、窄 iPhone 的右上角)送出日常 tmux 指令。在 herdr 標籤頁上這個鍵顯示為 HRDR,送出 herdr 自己的指令。 +- 在終端機長按、點兩下或按右鍵,可在任一後端使用 SELECT / SELECT ALL / PASTE;選取會留在該窗格內。herdr 標籤頁另有 MENU,在該格開啟 herdr 自己的窗格選單。 +- FILE 從照片、檔案或相機上傳到目前窗格的工作目錄,並輸入遠端路徑但不按 Return。把檔案拖進來也一樣。 +- + TAB → 檔案檢視器可瀏覽主機檔案與 git 差異;長按終端機輸出裡的路徑,就在工作階段旁開啟該檔案。已算繪 Markdown 中的網頁連結可在停靠的檢視區或系統瀏覽器中開啟。 +- 終端機的 GUIDE 按鈕是該標籤頁手勢的圖解指南。 +- DETACH 關閉視窗;遠端工作階段繼續執行,方塊留在牆上。 +- 主畫面小工具顯示你在主機上最後開啟的工作階段 — 或你挑選的那個 — 加上 SHELL 與 AGENT 鍵;捷徑與 Siri 可開啟 Shell、以指定行或行範圍顯示遠端檔案,或啟動 Agent。 + +主機、Agent 指令設定與密碼會透過 iCloud 鑰匙圈在你的裝置間同步,端對端加密。沒有 Multiplex 伺服器、沒有帳號、沒有分析。 + +值得回報的問題 +任何導致連線中斷、鍵盤焦點遺失、視窗位置或大小錯亂,或終端機畫面亂碼的情況 — 請附上你的裝置、OS 版本與當時的操作。TestFlight 內的螢幕快照回饋會直接送達開發者。 diff --git a/fastlane/metadata/zh-Hant/description_ios.txt b/fastlane/metadata/zh-Hant/description_ios.txt new file mode 100644 index 00000000..3515d47b --- /dev/null +++ b/fastlane/metadata/zh-Hant/description_ios.txt @@ -0,0 +1,28 @@ +Multiplex 是為長期活在遠端持久工作階段裡的人打造的終端機 — 專為 iPhone 與 iPad 原生打造。 + +監控牆 +所有主機同時探測。每個工作階段都是一面即時監視器:顯示它真正的最後幾行畫面、每個視窗一段脊線、連接中時亮起紅色 LIVE。連接前先看清整支艦隊;NO SIGNAL 一按即重新連線。跑 tmux,或把主機切到 herdr — 每個工作階段一個方塊、工作區排在脊線上、Agent 狀態直接來自 herdr。 + +工作階段就在你需要的地方 +在 iPad 上,連接會把每個工作階段開在真正的場景中,可用於幕前調度、分割顯示與外接顯示器。把視窗合併成標籤頁,再拆回去 — SSH 連線、緩衝區與捲動記錄都跟著標籤頁走,Shell 永遠不會斷。在 iPhone 上,監控牆與終端機共用一個自適應的全螢幕 Shell。 + +為 AI Agent 工作階段而生 +一步就能啟動 Claude Code、Codex、Pi 或 Grok Build,可選擇設定指令碼、模型與第一個提示。Multiplex 能在每個窗格中認出這四種 Agent,輔助按鈕會跟著前景的 Agent 走,指令因此送到真正接收你按鍵的程序 — 重新排列、加入自己的按鈕,每台主機都會在你所有裝置上記住這組設定。Pro 取消每日按鈕次數上限、在你沒盯著的回合結束或需要輸入時提醒你(tmux 上的 Claude Code、Codex 與 Grok Build;herdr 上則是 herdr 自己追蹤的每一個 Agent),並開啟 Claude Code 的提示歷史,一按就跳到對話記錄。在 tmux 與 herdr 標籤頁附加或拖放檔案:Multiplex 會上傳到窗格的工作目錄,並替你輸入遠端路徑。 + +小工具與捷徑 +把主機放到主畫面 — 最後已知的工作階段畫面、誠實的 SEEN 時間戳,加上直通連線的 SHELL 與 AGENT 鍵 — 或用艦隊小工具一眼看盡所有主機。捷徑與 Siri 可以開啟 Shell、以指定行或行範圍顯示遠端檔案,或在選定目錄啟動 Agent — 開新的工作階段,或進入既有的那個。multiplex:// URL scheme 可驅動你自己的自動化。 + +內建 mosh +有了 Pro,把主機切到 mosh,工作階段就能在睡眠、漫遊與 IP 變更後存活 — 原生 Swift mosh 用戶端,不需要配套 App。 + +真正的終端機 +完整的 xterm-256color 模擬、多語系系統鍵盤輸入、供滑鼠感知 TUI 使用的觸控與指標點擊、硬體鍵盤、即時 PTY 調整大小,以及內建的日常 tmux 指令選單 — herdr 標籤頁則有 herdr 自己的一組。按住 CTRL 開啟按鍵指令:軟體鍵盤按不出來的已儲存組合鍵(Shift+Enter、連按兩次 Ctrl-C、Option+Backspace 刪除一個字)與單行文字巨集,可自訂重複次數與保持開啟規則,並在你的裝置間同步。長按、點兩下或按右鍵,在任一後端進行限定於窗格內的文字選取。系統、淺色與深色會一起切換整個外框,各自保有自己的終端機主題 — 內建十個,Pro 再加上背景、文字、游標與全部 16 個 ANSI 顏色的編輯器。 + +隱私即設計 +主機、Agent 指令設定與密碼會透過 iCloud 鑰匙圈在你的裝置間同步,端對端加密。沒有任何東西會經過我們的伺服器 — 因為根本沒有伺服器。不需帳號、沒有分析、沒有追蹤。 + +MULTIPLEX PRO +一次購買、不需訂閱:無限主機、mosh、Agent 通知、不計次的指令列、自訂主題,以及你所有裝置上的十二個按鍵指令。免費版包含兩台主機、完整的終端機、五個按鍵指令,以及每天 10 次 Agent 指令按鈕。 + +你需要什麼 +一台可透過 SSH 連上的遠端主機(密碼或 OpenSSH ed25519/RSA 金鑰)。即時監控牆與持久工作階段需要 tmux 1.8+ 或 herdr 0.7.5+;一般 SSH Shell 兩者皆不需要。mosh 需要主機上有 mosh-server。 diff --git a/fastlane/metadata/zh-Hant/description_visionos.txt b/fastlane/metadata/zh-Hant/description_visionos.txt new file mode 100644 index 00000000..d9928657 --- /dev/null +++ b/fastlane/metadata/zh-Hant/description_visionos.txt @@ -0,0 +1,28 @@ +Multiplex 是為長期活在遠端持久工作階段裡的人打造的終端機 — 專為 Apple Vision Pro 原生打造。 + +監控牆 +所有主機同時探測。每個工作階段都是一面即時監視器:顯示它真正的最後幾行畫面、每個視窗一段脊線、連接中時亮起紅色 LIVE。連接前先看清整支艦隊;NO SIGNAL 一按即重新連線。跑 tmux,或把主機切到 herdr — 每個工作階段一個方塊、工作區排在脊線上、Agent 狀態直接來自 herdr。 + +每個工作階段一個視窗 +連接會把工作階段開在它自己的空間視窗裡 — 建置記錄放在編輯器上方,伺服器儀表板放到房間另一頭。把視窗合併成標籤頁,再拆回去;SSH 連線、緩衝區與捲動記錄都跟著標籤頁走,Shell 永遠不會斷。 + +為 AI Agent 工作階段而生 +一步就能啟動 Claude Code、Codex、Pi 或 Grok Build,可選擇設定指令碼、模型與第一個提示。Multiplex 能在每個窗格中認出這四種 Agent,輔助按鈕會跟著前景的 Agent 走,指令因此送到真正接收你按鍵的程序 — 重新排列、加入自己的按鈕,每台主機都會在你所有裝置上記住這組設定。Pro 取消每日按鈕次數上限、在你沒盯著的回合結束或需要輸入時提醒你(tmux 上的 Claude Code、Codex 與 Grok Build;herdr 上則是 herdr 自己追蹤的每一個 Agent),並開啟 Claude Code 的提示歷史,一按就跳到對話記錄。在 tmux 與 herdr 標籤頁附加或拖放檔案:Multiplex 會上傳到窗格的工作目錄,並替你輸入遠端路徑。 + +小工具與捷徑 +在 visionOS 26 或之後版本,把主機釘在你的空間裡 — 最後已知的工作階段畫面、誠實的 SEEN 時間戳,加上直通連線的 SHELL 與 AGENT 鍵 — 或用艦隊小工具一眼看盡所有主機。捷徑與 Siri 可以開啟 Shell、以指定行或行範圍顯示遠端檔案,或在選定目錄啟動 Agent — 開新的工作階段,或進入既有的那個。multiplex:// URL scheme 可驅動你自己的自動化。 + +內建 mosh +有了 Pro,把主機切到 mosh,工作階段就能在睡眠、漫遊與 IP 變更後存活 — 原生 Swift mosh 用戶端,不需要配套 App。 + +真正的終端機 +完整的 xterm-256color 模擬、多語系系統鍵盤輸入、供滑鼠感知 TUI 使用的注視加捏合點擊、硬體鍵盤、即時 PTY 調整大小,以及內建的日常 tmux 指令選單 — herdr 標籤頁則有 herdr 自己的一組。按住 CTRL 開啟按鍵指令:軟體鍵盤按不出來的已儲存組合鍵(Shift+Enter、連按兩次 Ctrl-C、Option+Backspace 刪除一個字)與單行文字巨集,可自訂重複次數與保持開啟規則,並在你的裝置間同步。長按或雙擊捏合,在任一後端進行限定於窗格內的文字選取。系統、淺色、深色與煙燻玻璃會一起切換整個外框;玻璃讓房間透進來,並與深色共用終端機主題。內建十個主題,Pro 再加上背景、文字、游標與全部 16 個 ANSI 顏色的編輯器。 + +隱私即設計 +主機、Agent 指令設定與密碼會透過 iCloud 鑰匙圈在你的裝置間同步,端對端加密。沒有任何東西會經過我們的伺服器 — 因為根本沒有伺服器。不需帳號、沒有分析、沒有追蹤。 + +MULTIPLEX PRO +一次購買、不需訂閱:無限主機、mosh、Agent 通知、不計次的指令列、自訂主題,以及你所有裝置上的十二個按鍵指令。免費版包含兩台主機、完整的空間體驗、五個按鍵指令,以及每天 10 次 Agent 指令按鈕。 + +你需要什麼 +一台可透過 SSH 連上的遠端主機(密碼或 OpenSSH ed25519/RSA 金鑰)。即時監控牆與持久工作階段需要 tmux 1.8+ 或 herdr 0.7.5+;一般 SSH Shell 兩者皆不需要。mosh 需要主機上有 mosh-server。 diff --git a/fastlane/metadata/zh-Hant/keywords.txt b/fastlane/metadata/zh-Hant/keywords.txt new file mode 100644 index 00000000..7ce11ba8 --- /dev/null +++ b/fastlane/metadata/zh-Hant/keywords.txt @@ -0,0 +1 @@ +mosh,shell,終端機,遠端,伺服器,devops,homelab,vps,linux,claude,codex,agent,cli,sysadmin,unix \ No newline at end of file diff --git a/fastlane/metadata/zh-Hant/marketing_url.txt b/fastlane/metadata/zh-Hant/marketing_url.txt new file mode 100644 index 00000000..f313d64c --- /dev/null +++ b/fastlane/metadata/zh-Hant/marketing_url.txt @@ -0,0 +1 @@ +https://multiplexterm.dev \ No newline at end of file diff --git a/fastlane/metadata/zh-Hant/name.txt b/fastlane/metadata/zh-Hant/name.txt new file mode 100644 index 00000000..d777cfe3 --- /dev/null +++ b/fastlane/metadata/zh-Hant/name.txt @@ -0,0 +1 @@ +Multiplex — SSH tmux 終端機 \ No newline at end of file diff --git a/fastlane/metadata/zh-Hant/privacy_url.txt b/fastlane/metadata/zh-Hant/privacy_url.txt new file mode 100644 index 00000000..dc4951b0 --- /dev/null +++ b/fastlane/metadata/zh-Hant/privacy_url.txt @@ -0,0 +1 @@ +https://multiplexterm.dev/privacy \ No newline at end of file diff --git a/fastlane/metadata/zh-Hant/promotional_text.txt b/fastlane/metadata/zh-Hant/promotional_text.txt new file mode 100644 index 00000000..ef0da948 --- /dev/null +++ b/fastlane/metadata/zh-Hant/promotional_text.txt @@ -0,0 +1 @@ +tmux(或 herdr)工作階段的即時監控牆、Agent 需要你時的提醒,以及在睡眠與漫遊後仍存活的 mosh。 \ No newline at end of file diff --git a/fastlane/metadata/zh-Hant/release_notes_ios.txt b/fastlane/metadata/zh-Hant/release_notes_ios.txt new file mode 100644 index 00000000..a890e83f --- /dev/null +++ b/fastlane/metadata/zh-Hant/release_notes_ios.txt @@ -0,0 +1,12 @@ +Multiplex 1.3.1 — README 裡的圖片、在分割窗格中也管用的檔案路徑,以及選取、捲動與 mosh 的整理。 + +• 在已算繪的 README 中,「image: …」預留位置現在是連結:按一下,圖片就直接顯示在文件裡,寬度配合文字欄 — 按圖說可隱藏,輕點可全螢幕縮放。網路圖片仍在連結確認之後,確認頁現在除了瀏覽器也提供停靠的 ⌗ 檢視區,按下前不會抓取任何東西。 +• 檔案路徑在分割窗格中也能用。折在窗格邊界的路徑會重新接合,比對不會拾取鄰近窗格的文字,相對路徑則以你按下的窗格為基準解析。 +• 捷徑新增「開啟檔案」:主機、遠端路徑,加上選填的行號 — Sources/App.swift:10-15 會在 ▤ 檔案檢視器標籤頁中唯讀開啟並標示範圍。終端機中按下的路徑也同樣帶著行範圍。 +• 在 iPad 上按鍵列會延伸到視窗底部,而不是浮在主畫面指示器上方 — 按鍵下方更清爽,iPhone 橫向也一樣。 +• 選取會留在你按下的位置。SELECT 區塊與 SELECT TEXT 列在 mosh 標籤頁或已向上捲動的終端機中不再向上飄移,有第二個用戶端連接時,選取會等待共用的幾何狀態穩定。 +• mosh 標籤頁只保留一個畫面 — 把過時版面堆在即時畫面上方的多餘捲動區已經移除。 +• tmux 分割快速鍵在 iPad 上不再多打一個 %,檔案檢視器在 tmux 與 herdr 上都會於按下的窗格工作目錄開啟。 +• 每次連線都會用該主機記錄的指紋驗證伺服器的 SSH 主機金鑰 — 來自 Bind Host、貼進「新增主機 → 主機金鑰」的金鑰,或第一次連線時釘選的金鑰。「主機設定 → 主機金鑰」列出已記錄的內容。 +• 「設定 → 終端機繪製器」可用 Metal 在 GPU 上繪製終端機文字 — 預設關閉,套用到新開啟的終端機視窗。 +• 「回復購買項目」在 App Store 回復同步失敗時能夠復原,錯誤訊息現在會指出你能採取的行動。 diff --git a/fastlane/metadata/zh-Hant/release_notes_visionos.txt b/fastlane/metadata/zh-Hant/release_notes_visionos.txt new file mode 100644 index 00000000..039c7314 --- /dev/null +++ b/fastlane/metadata/zh-Hant/release_notes_visionos.txt @@ -0,0 +1,14 @@ +Multiplex 1.3.1 — README 裡的圖片、浮在視窗下方的工具列,以及選取、捲動與 mosh 的整理。 + +• ▤ 檔案檢視器與 ⌗ 檢視區標籤頁的底部工具列現在浮在視窗外、避開縮放邊角,視窗調整大小時也保持尺寸。 +• 在已算繪的 README 中,「image: …」預留位置現在是連結:按一下,圖片就直接顯示在文件裡,寬度配合文字欄 — 按圖說可隱藏,輕點可全螢幕縮放。網路圖片仍在連結確認之後,確認頁現在除了瀏覽器也提供停靠的 ⌗ 檢視區,按下前不會抓取任何東西。 +• 檔案路徑在分割窗格中也能用。折在窗格邊界的路徑會重新接合,比對不會拾取鄰近窗格的文字,相對路徑則以你按下的窗格為基準解析。 +• 捷徑新增「開啟檔案」:主機、遠端路徑,加上選填的行號 — Sources/App.swift:10-15 會在 ▤ 檔案檢視器標籤頁中唯讀開啟並標示範圍。終端機中按下的路徑也同樣帶著行範圍。 +• 選取會留在你按下的位置。SELECT 區塊與 SELECT TEXT 列在已向上捲動的終端機或 mosh 標籤頁上不再飄移,有第二個用戶端連接時,選取會等待共用的幾何狀態穩定。 +• mosh 標籤頁只保留一個畫面 — 把過時版面堆在即時畫面上方的多餘捲動區已經移除。 +• 串流輸出更順暢:重繪對齊 90 Hz 顯示器而不是 60 Hz 時脈,快速捲動的文字前進更均勻。 +• 長距離捲動不再偏移,會固定在平移開始的位置,不會漂到 herdr 的標籤列或 tmux 狀態列上。 +• 檔案檢視器在 tmux 與 herdr 上都會於按下的窗格工作目錄開啟。 +• 每次連線都會用該主機記錄的指紋驗證伺服器的 SSH 主機金鑰 — 來自 Bind Host、貼進「新增主機 → 主機金鑰」的金鑰,或第一次連線時釘選的金鑰。「主機設定 → 主機金鑰」列出已記錄的內容。 +• 「設定 → 終端機繪製器」可用 Metal 在 GPU 上繪製終端機文字 — 預設關閉,套用到新開啟的終端機視窗。 +• 「回復購買項目」在 App Store 回復同步失敗時能夠復原,錯誤訊息現在會指出你能採取的行動。 diff --git a/fastlane/metadata/zh-Hant/subtitle.txt b/fastlane/metadata/zh-Hant/subtitle.txt new file mode 100644 index 00000000..f6fb715d --- /dev/null +++ b/fastlane/metadata/zh-Hant/subtitle.txt @@ -0,0 +1 @@ +每個工作階段,一個視窗 \ No newline at end of file diff --git a/fastlane/metadata/zh-Hant/support_url.txt b/fastlane/metadata/zh-Hant/support_url.txt new file mode 100644 index 00000000..f313d64c --- /dev/null +++ b/fastlane/metadata/zh-Hant/support_url.txt @@ -0,0 +1 @@ +https://multiplexterm.dev \ No newline at end of file