Murasaki
コアコンセプト

プラットフォームと機能の対応状況

macOS、Windows、LinuxにおけるMurasaki機能の、検証根拠に基づく正式な対応状況です。

Murasakiは1.0以前のソフトウェアです。現在利用できる部分、重要なplatform差が 残る部分、まだ設計段階の部分があります。このページはrepository内の正式な capability manifestである packages/murasaki/capabilities.json から生成しています。

「計画中」は「利用可能」という意味ではありません。 dependency、Rust module、型、roadmapが存在するだけではshipping featureとしません。Murasakiが 正式な利用経路を公開し、その制限をここへ記録した時点で初めて対応扱いにします。

状態の定義

  • Stable — 現在のrelease lineでcompatibilityを維持するshipping public API。
  • 実験的 — 実装と検証はありますが、1.0までにAPIやwire contractが変わる可能性があります。
  • 部分対応 — 現在利用できますが、表に記載した重要なAPIまたはplatform差があります。
  • 計画中 — 正式に利用できる実装はありません。

機能の成熟度とplatform対応は別々に表示します。開発のみは、そのplatformで development runtimeを利用できてもproduction packagingを保証しないことを示します。 未対応は、そのplatformに実装がない、またはその機能が適用されないことを示します。

Murasaki 0.52.0 · manifest schema 1

Murasakiの機能とplatform対応状況
機能状態macOSWindowsLinux現在の制限
ファイルルーティングWebフレームワーク部分対応対応対応開発のみ
  • page、layout、loading、error、not-found、route group、単一dynamic segmentは利用できますが、catch-allページsegmentは未実装です。
  • ルーターはクライアント側で動作し、Next.js App RouterやReact Server Componentsの全機能を提供するものではありません。
APIと検証根拠
API: AppRouter, Link, useRouter, usePathname, useParams
検証根拠:自動検証なし(未実装)
Server ActionsWebフレームワーク実験的対応対応開発のみ
  • Actionは同梱されたローカルNode runtimeで実行されます。Next.js Server Actionsそのものでも、リモート公開RPCサービスでもありません。
  • version付きwire formatには値とpayloadの上限があり、Murasaki 1.0までは変更される可能性があります。
APIと検証根拠
API: defineAction, callAction, useAction, ActionState
検証根拠:packages/murasaki/test/server-actions-wire.test.mjs, packages/murasaki/test/wire.test.mjs
API RoutesWebフレームワーク実験的対応対応開発のみ
  • ルートはアプリ内のローカルNode processから提供され、公開ネットワークサービスとしての利用は想定していません。
  • Web Request / Response primitiveに沿いますが、Next.js Route Handler runtimeの完全な実装ではありません。
APIと検証根拠
API: RouteHandler
検証根拠:packages/murasaki/test/api-routes.test.mjs, packages/murasaki/test/prod-server-http.test.mjs
ナビゲーションMiddlewareWebフレームワーク部分対応対応対応開発のみ
  • Middlewareはrenderer内でclient navigationの前に実行され、pathnameだけを受け取ります。
  • request/response header、cookie、edge実行、matcher設定は利用できません。
APIと検証根拠
API: Middleware, MiddlewareContext, MiddlewareResult
検証根拠:自動検証なし(未実装)
ルートMetadataWebフレームワーク部分対応対応対応開発のみ
  • document title、description、favicon、一部のOpen Graph metadataをrendererへ反映します。
  • metadata shapeはNext.js完全互換ではなく、document metadataからnative window titleは更新されません。
APIと検証根拠
API: Metadata, GenerateMetadata, applyMetadata
検証根拠:自動検証なし(未実装)
Nodeメインライフサイクルアプリケーションモデル実験的対応対応開発のみ
  • src/main.ts lifecycleはready、cancel可能なbeforeQuit、時間制限付きshutdown、second-launch配送、app path、AbortSignal、renderer向けtyped live eventを提供します。
  • window管理はrenderer向けで、src/main.tsからは利用できません。crash-restart policyとprocess supervision APIも未実装です。
APIと検証根拠
API: murasaki/main, defineMain, emitMainEvent, murasaki/main-client.subscribeMainEvent, MainContext, MainDefinition
検証根拠:packages/murasaki/test/main-runtime.test.mjs, packages/murasaki/test/main-events.test.mjs, packages/murasaki/test/prod-server-http.test.mjs
ネイティブウィンドウネイティブ統合部分対応対応対応開発のみ
  • primary / secondary windowを宣言し、識別、表示、非表示、focus、一覧、open、明示的closeを行えます。runtimeでの任意作成とwindow別lifecycle subscriptionは未実装です。
  • window vibrancyは現在も宣言のみのno-opです。
APIと検証根拠
API: App, WindowConfig, SecondaryWindowConfig, murasaki/native.appWindow, murasaki/native.windows
検証根拠:packages/murasaki/test/native-api.test.mjs, packages/murasaki/test/windows.test.mjs, crates/native/src/window.rs
アプリケーションメニューネイティブ統合部分対応対応対応未対応
  • macOSとWindowsではnative application menuを利用できますが、roleの挙動にはplatform差があります。
  • Linuxにはdefault/custom application menuの実装がありません。
APIと検証根拠
API: useAppMenu, AppMenu, AppMenuItemSpec
検証根拠:crates/native/src/webview.rs, crates/native/src/menu.rs
コンテキストメニューネイティブ統合部分対応対応対応未対応
  • macOSとWindowsではwindow全体およびscope付きのnative context menuを利用できます。
  • LinuxのIPC経路ではnative context menu未実装としてエラーになります。
APIと検証根拠
API: useContextMenu, ContextMenuTrigger, Action, createActions
検証根拠:crates/native/src/webview.rs, crates/native/src/menu.rs
ネイティブユーティリティネイティブ統合部分対応部分対応部分対応部分対応
  • dialog、clipboard、notification、shell helper、window操作はsame-origin native bridgeとwindow別allowlistを通してtrusted rendererへ公開されます。
  • capabilityはcommand単位でargument / path scopeを持たず、renderer native APIはsrc/main.tsから直接利用できません。
APIと検証根拠
API: murasaki/native.dialog, murasaki/native.clipboard, murasaki/native.notification, murasaki/native.shell, murasaki/native.appWindow, murasaki/native.app, murasaki/native.windows
検証根拠:packages/murasaki/test/native-api.test.mjs, .github/workflows/native-release.yml
自動アップデート配布部分対応対応部分対応未対応
  • 署名付きmanifest、上限付きdownload、SHA-256 payload検証、staging handoff、relaunchをpackaged app向けに実装しています。
  • Linux packaging/updateは未対応です。現在のartifact名とmanifest scanではWindows arm64 updateを公開できません。
APIと検証根拠
API: useUpdate, UpdateButton, UpdaterConfig, UpdateState
検証根拠:packages/murasaki/test/updater-hardening.test.mjs, .github/workflows/app-package-win.yml
アプリケーションパッケージング配布部分対応対応対応計画中
  • macOSの.app/.dmgと、Windowsのportable .zip、NSIS .exe、WiX .msiを生成できます。
  • Linux launcher packaging/installerは未実装です。MSIにはWiXが必要で、WiXはWindows上でのみ動作します。
APIと検証根拠
API: murasaki bundle, murasaki installer
検証根拠:.github/workflows/app-package-win.yml
コード署名配布部分対応対応対応計画中
  • 開発者がcredentialを用意した場合、macOSのDeveloper ID署名とApple notarizationを利用できます。
  • Windows AuthenticodeとLinux package署名は未実装です。macOSのad-hoc署名は利用者からの信頼を確立しません。
APIと検証根拠
API: MurasakiConfig.sign, WindowsSigningConfig, murasaki bundle --sign, murasaki installer --sign, murasaki installer --notarize
検証根拠:packages/murasaki/test/windows-signing.test.mjs
ループバックエンドポイント保護セキュリティ部分対応対応対応開発のみ
  • 開発時のprivileged endpointはHttpOnly SameSite runtime sessionを要求し、loopback Host、Origin、Fetch Metadataを検証します。
  • renderer native commandにはdeny-by-defaultのwindow別allowlistがありますが、argument / path / URL scopeとmulti-origin policyは未実装です。
APIと検証根拠
API: 正式なpublic APIなし
検証根拠:自動検証なし(未実装)
content-security-policyセキュリティ部分対応対応対応開発のみ
  • Murasakiは環境別の既定CSPをframework / user-owned HTMLへ注入し、完全なsecurity.csp override、明示的opt-out、user-owned CSP tagのhead先頭への移動に対応します。
  • policyはmeta tag配信のためframe-ancestors、sandbox、reportingなどheader専用directiveを強制できません。CSPはHTMLのsanitizeやNode関数の認可を行わず、互換性のためinline styleを許可します。
APIと検証根拠
API: MurasakiConfig.security, security.csp
検証根拠:packages/murasaki/test/csp.test.mjs, packages/murasaki/src/vite-plugin/shell.ts
マルチウィンドウアプリケーションモデル実験的対応対応未対応
  • windowはconfigで宣言して起動時に作成します。runtimeでの任意作成と、明示的に破棄したwindowの再作成は未実装です。
  • secondaryのOS/self closeは再openできるようhideし、親からの明示的closeは再起動まで破棄します。application menuはprocess-globalです。
APIと検証根拠
API: MurasakiConfig.windows, SecondaryWindowConfig, WindowInfo, murasaki/native.appWindow.getLabel, murasaki/native.windows
検証根拠:packages/murasaki/test/windows.test.mjs, packages/murasaki/test/native-api.test.mjs, crates/native/src/window.rs, crates/native/src/launcher.rs, .github/workflows/ci.yml
トレイとグローバルショートカットネイティブ統合部分対応対応対応計画中
  • macOS / Windowsではtooltipとclick eventを持つ1個のtray icon APIを利用できます。
  • tray menu、動的icon差し替え、global shortcut、Linux trayは未実装です。
APIと検証根拠
API: murasaki/native.tray, TrayOptions, TrayMenuItem, TrayClickEvent
検証根拠:packages/murasaki/test/native-api.test.mjs, crates/native/src/webview.rs
system-permissionsネイティブ統合部分対応対応部分対応未対応
  • Packaged macOS apps can declare camera/microphone usage descriptions, request camera, microphone, screen-recording, or accessibility consent at launch, and query/request the same permissions from a capability-gated renderer API.
  • Windows unpackaged desktop privacy consent is usage-driven rather than an app-scoped launch prompt, so these generic calls report unsupported there; Linux is not implemented. Development requests use the terminal/Node host identity and should be tested with a packaged app.
APIと検証根拠
API: MurasakiConfig.systemPermissions, SystemPermissionsConfig, murasaki/native.systemPermission
検証根拠:packages/murasaki/test/system-permissions.test.mjs, crates/native/src/system_permission.rs
シングルインスタンスとディープリンクアプリケーションモデル部分対応対応対応計画中
  • packaged macOS appとinstaller経由のWindows appは、設定したURL schemeとfile associationを登録し、single-instanceを維持したままOpenRequestEventをsrc/main.tsへ渡します。
  • Windows portable .zip/bare executableは自動登録を行いません。protocolとfile associationの登録はNSIS/MSI installerが担い、Linux対応はplannedです。
APIと検証根拠
API: ProtocolConfig, FileAssociationConfig, OpenRequestEvent, OpenTarget, MainDefinition.openRequested, MainDefinition.secondInstance, SecondInstanceEvent
検証根拠:packages/murasaki/test/associations.test.mjs, packages/murasaki/test/main-runtime.test.mjs, packages/murasaki/test/prod-server-http.test.mjs, crates/native/src/launcher.rs
ケイパビリティ権限セキュリティ部分対応対応対応開発のみ
  • renderer native commandはdeny-by-defaultで、typedなwindow別capability allowlistから許可します。Rustはsender originとcommand名を検証します。
  • argument / path scopeと明示的deny overrideは未実装です。secondary windowはtop-level grantを継承しません。
APIと検証根拠
API: MurasakiConfig.capabilities, WindowConfig.capabilities, NativeCapability
検証根拠:crates/native/src/webview.rs, packages/murasaki/test/native-api.test.mjs, packages/murasaki/test/windows.test.mjs
Linux配布配布計画中未対応未対応計画中
  • Linux用prebuilt native binaryと開発対応だけでは、install可能なLinux application releaseにはなりません。
  • AppImage、deb、rpm、repository metadata、署名、update、launcher packagingは未実装です。
APIと検証根拠
API: 正式なpublic APIなし
検証根拠:自動検証なし(未実装)

検証根拠の読み方

各行のAPIと検証根拠を開くと、正式なpublic symbolと、根拠となる自動testまたは workflowを確認できます。build workflowが示すのはそのplatformでcompileできること までです。公開されていないnative helperを正式なframework APIとして扱う根拠には なりません。

実装とmanifestに差がある場合は、より低い対応状況を安全側の前提として扱い、 不一致を報告してください

On this page