Skip to content

F4 実装: tmux / ttyd を .app に同梱 #185

@shomatan

Description

@shomatan

Epic: #184

背景

PR #178 (macOS .app) で F4 (tmux / ttyd 同梱) は skeleton 状態 で deferred。`build-bin.yml` は `workflow_dispatch` 限定で artifact 生成しない。`packages/desktop/scripts/build-bin/{build-tmux,build-ttyd}.sh` も skeleton。

現状 .app 起動時に PATH の tmux / ttyd を見つけている (`packages/server/src/lib/tmux-manager.ts:resolveTmuxPath` / `ttyd-manager.ts`)。非エンジニア向け配布では `brew install tmux ttyd` の前提を消したい

やること

1. build-bin.yml の実装

  • `packages/desktop/scripts/build-bin/build-tmux.sh` を実装
    • tmux source tarball fetch + SHA256 verify (manifest.json の placeholder を埋める)
    • macos-14 runner で arm64 native configure / make
    • 依存 dylib (libevent, ncurses 等) を `build-assets/Frameworks/` に配置
    • `install_name_tool -add_rpath @loader_path/../../Frameworks` で rpath 調整
  • `build-ttyd.sh` 同様 (libwebsockets, libssl, libcrypto 依存)
  • `collect-licenses.sh` で OSS LICENSE / NOTICE を `build-assets/licenses/` に集約
  • `build-bin.yml` を `workflow_call` 化して manifest.json hash で actions/cache 共有

2. release.yml への組み込み

  • `build-bin.yml` を `uses:` で呼んで artifact (`ark-bin-macos-arm64`) を取得
  • `actions/download-artifact@v4` で `packages/desktop/build-assets/` に展開
  • 既存の `electron-builder.yml` `extraResources` (bin / Frameworks / licenses 行) はすでに skeleton で書かれているのでパス変更不要

3. server 側の解決ロジック確認

  • `packages/server/src/lib/system.ts:resolveTmuxPath` の `getBundledBinDir()` 経路が `process.resourcesPath/bin/tmux` を見ているはずなので、同梱版が配置されれば自動的に優先される。動作確認のみ。

4. release smoke 拡張

スコープ外

  • Linux desktop 版の tmux 同梱 (今は server mode で OS 標準 tmux を使う前提)
  • Windows: そもそも tmux が ない、別 Epic

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions