Skip to content

Latest commit

 

History

History
89 lines (52 loc) · 4.38 KB

File metadata and controls

89 lines (52 loc) · 4.38 KB

Stack-chan MOD定義

対象

Stack-chan MOD定義は、MOD Galleryと各エディタが共有する配布用メタデータです。

Moddableのmanifest.jsonはビルド方法を定義します。

.stackchan-blocks.jsonはブロックエディタで再編集するプロジェクトを保存します。

stackchan-mod.jsonは両者を置き換えず、正本となる編集ソースをsource.pathから参照します。

形式

ルートオブジェクトは次のフィールドを持ちます。

  • formattech.stackchan.modです。
  • schemaVersion:MOD定義形式の互換性を示す整数です。
  • id:Gallery内でMODを識別する逆ドメイン形式の文字列です。
  • version:MOD自身のリリースバージョンです。
  • type:正本となる編集ソースの形式です。textまたはblockを指定します。
  • name:Galleryへ表示する名前です。
  • description:Galleryへ表示する説明です。
  • source.path:MOD定義からの相対パスです。
  • source.entrypoint:任意。テキストMODで、Galleryの「ソースを見る」から開く実装ファイルです。
  • setup.url:任意。Galleryの「セットアップ手順」から開く絶対HTTPS URLです。
  • targets:対応する実行対象のIDです。
  • capabilities:任意。MODが実行時に必要とする公開capabilityです。

typeは実行形式を表しません。

テキストMODとブロックMODは、どちらもビルド後にXSアーカイブとして実行します。

type: "text"では、source.pathがModdableのmanifestを指します。

type: "block"では、source.path.stackchan-blocks.jsonを指します。

type: "text"source.entrypointを指定すると、ビルドの正本であるmanifestを維持したまま、利用者が最初に読むJavaScriptまたはTypeScript実装へ案内できます。

source.entrypointを省略した場合、「ソースを見る」はsource.pathを開きます。

setup.urlは、外部サービスやアプリケーションなど、MOD以外の準備が必要な場合に指定します。

Galleryはセットアップ手順を別タブで開きます。

Host互換性

Galleryは実機へ書き込む前に、capabilitiesを対象機種の能力および接続中hostのAPI世代と照合します。

hostのAPI世代は、ESP app descriptorのファームウェア版へ+stackchan.Nとして埋め込みます。

このsuffixを持たない従来hostはAPI 0として扱います。

API 1では、標準CoreS3 hostへaudio.usbconversation.remoteui.approvalを追加します。

これらを要求するMODはAPI 0のhostへ書き込めず、利用者へhost firmwareの更新を案内します。

実行入口

任意のentrypointsは、XS archiveが公開する実行入口を列挙します。 省略時は従来どおり["mod"]として扱います。

  • mod:ホストrealmで実行するapp behaviorです。
  • miniapp:制限されたCompartmentで定義を読み込み、ホスト所有のviewportへPiu UIを表示します。

二つを同じarchiveへ含める場合は["mod", "miniapp"]を指定します。 ホストは両者を独立して読み込みますが、mod.onLaunch()falseを返した場合はpackage全体の起動を中止し、mini-appも登録しません。

modを含むpackageはホストrealmで任意の処理を実行できるため、mini-app側のcontainmentにかかわらずpackage全体を信頼できる場合だけインストールしてください。

実行成果物

ビルド済みXSアーカイブを配布するMODは、任意のartifactsへ成果物を列挙します。

各成果物はformat: "xsa"、相対パス、対象機種を持ちます。

Galleryは編集ソースと実行成果物を別々に扱い、typeから実行互換性を推測しません。

パス

すべてのパスはstackchan-mod.jsonがあるディレクトリからの相対パスです。

絶対パス、親ディレクトリ参照、バックスラッシュ、制御文字を含むパスは無効です。

この制約により、一つのMODパッケージから別のパッケージにあるファイルを暗黙に参照することを防ぎます。

スキーマ

機械検証にはstackchan-mod.schema.jsonを使用します。