Skip to content

[P0][macOS] backendと記録agentを同梱した自己完結.appのlifecycleを実装する #78

Description

@tuzuminami

背景 / 現状

apps/desktop/src-tauri/src/main.rs はUI shellのみ。scripts/package_macos.sh はfrontend/Tauri artifactを作るがPython local APIとSwift recording agentを同梱・起動・停止しない。通常利用はTerminal、Python、Node、Vite、repository checkoutに依存している。

目的

非エンジニアがDMGからApplicationsへdragし、OpsMineFlow.appをdouble clickするだけで安全に起動・終了できる自己完結製品にする。

対象

  • backend/mining/export runtimeのbundle方式
  • Swift agentのnested executable同梱
  • Tauriからの起動、health check、restart、graceful stop
  • single-instanceとorphan cleanup
  • user data directory
  • Python/Node/npm/repository不要のruntime
  • arm64/x86_64 support方針

非対象

  • cloud service
  • runtime download
  • auto updater
  • App Store配布

実装要件

  • sidecarまたは同等のローカルbundleを採用し、全runtimeをcode sign可能にする
  • loopback/IPC以外へbindしない
  • app終了時にbackend/agentを確実に停止
  • crash後のorphanを次回起動で安全に回復
  • logとruntime fileをApp Support配下へ集約
  • dev scriptとpackaged lifecycleの挙動差をdocs/testで明示

受け入れ条件

  • clean macOSでPython/Node/Rust/Terminalなしに起動できる
  • 起動からrecord/import/analyze/export/終了までUIだけで完了
  • app終了後にlisten portとchild processが残らない
  • backend/agent欠損・破損時に安全なerrorと復旧導線が出る

検証

clean VMまたは新規user、double click起動、force quit、sleep/wake、再起動、二重起動、artifact tamperを含むpackaged E2E。

依存関係

前提: #75#77#80。連携: #79#87#90#92#95#107。後続の配布検証: #57#85。#57を前提にしない。

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:macosmacOS packaging, signing, and lifecyclearea:operationsDiagnostics, audit, support, and lifecyclepriority:P0Release blockerrelease:v1.0Targeted for OpsMineFlow v1.0.0

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions