くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

Pencil v1.1.37 が macOS 26 で灰色画面になる問題と対処法

## 症状

Pencil Desktop v1.1.37 を macOS 26 (26.3.1 / Apple Silicon / Metal 4) で起動すると、ウィンドウが灰色のまま何も表示されない。ウェルカム画面もログイン画面も描画されず、操作できない。

バックエンド(MCP サーバー、IPC 通信)は正常に動作しており、ログ上もエラーは出ない。

原因

v1.1.37 でウィンドウの描画方式が変更された。macOS の「すりガラス(vibrancy)」効果に対応するため、ウィンドウとフロントエンド両方に透過処理が追加されたが、macOS 26 / Metal 4 環境では Electron 39 の Chromium コンポジターがこの組み合わせで正しくレンダリングできない。

変更箇所 1: ウィンドウ設定 (desktop-resource-device.js)

// v1.1.34(動作する)
  new BrowserWindow({
-   backgroundColor: "#00000000",
    titleBarStyle: "hiddenInset",
    ...
  })

// v1.1.37(灰色になる)
  new BrowserWindow({
+   transparent: isMac,
+   vibrancy: "under-window",
    titleBarStyle: "hiddenInset",
    ...
  })

変更箇所 2: フロントエンド CSS (editor/assets/index.css)

// v1.1.34
  body { background-color: #18181b; }

// v1.1.37
+ body { background-color: #0000; }  /* 透過 */

フロントエンドの JS バンドル (index.js) にも vibrancy 前提の変更が含まれており、CSS の修正だけでは不十分。

対処法: v1.1.34 のフロントエンドで差し替える

WASM エンジン (pencil.wasm) は v1.1.34 と v1.1.37 で同一のため、フロントエンドアセットだけ v1.1.34 に戻せば v1.1.37 のバックエンド機能を維持したまま動作する。

手順

# 1. Pencil を終了
pkill -f Pencil

# 2. v1.1.34 をダウンロードして展開
mkdir -p /tmp/pencil-1.1.34
gh release download v1.1.34 \
  --repo highagency/pencil-desktop-releases \
  --pattern "Pencil-1.1.34-mac-arm64.zip" \
  --dir /tmp/pencil-1.1.34/
cd /tmp/pencil-1.1.34 && unzip -q Pencil-1.1.34-mac-arm64.zip

# 3. 両バージョンの app.asar を展開
npx asar extract /Applications/Pencil.app/Contents/Resources/app.asar /tmp/pencil-new
npx asar extract /tmp/pencil-1.1.34/Pencil.app/Contents/Resources/app.asar /tmp/pencil-old

# 4. ウィンドウ設定を修正(transparent/vibrancy を除去、backgroundColor を復元)
#    desktop-resource-device.js の BrowserWindow 生成部分を v1.1.34 相当に書き換える:
#
#    - transparent: isMac          → 削除
#    - vibrancy: "under-window"    → 削除
#    - backgroundColor: "#00000000" を追加
#
#    具体的には以下を:
#      Object.assign(Object.assign(Object.assign({ ..., transparent: isMac }, (isMac ? {
#          titleBarStyle: "hiddenInset",
#          vibrancy: "under-window",
#          trafficLightPosition: { x: 14, y: 14 },
#      } : {})), ...
#
#    以下に置き換え:
#      {
#          ...,
#          titleBarStyle: "hiddenInset",
#          frame: !isMac,
#          backgroundColor: "#00000000",
#          trafficLightPosition: { x: 12, y: 12 },
#          ...(isWin ? { backgroundMaterial: "mica" } : {}),
#          webPreferences: { ... },
#      }

# 5. フロントエンドアセットを v1.1.34 に差し替え
cp /tmp/pencil-old/out/editor/assets/index.js   /tmp/pencil-new/out/editor/assets/index.js
cp /tmp/pencil-old/out/editor/assets/index.css   /tmp/pencil-new/out/editor/assets/index.css
cp /tmp/pencil-old/out/editor/assets/browserAll.js    /tmp/pencil-new/out/editor/assets/browserAll.js
cp /tmp/pencil-old/out/editor/assets/browserAll2.js   /tmp/pencil-new/out/editor/assets/browserAll2.js
cp /tmp/pencil-old/out/editor/assets/webworkerAll.js  /tmp/pencil-new/out/editor/assets/webworkerAll.js
cp /tmp/pencil-old/out/editor/assets/webworkerAll2.js /tmp/pencil-new/out/editor/assets/webworkerAll2.js

# 6. asar を再パックして置き換え
cp /Applications/Pencil.app/Contents/Resources/app.asar \
   /Applications/Pencil.app/Contents/Resources/app.asar.bak
npx asar pack /tmp/pencil-new /Applications/Pencil.app/Contents/Resources/app.asar

# 7. ad-hoc 署名(Gatekeeper 対応)
codesign -f -s - --deep /Applications/Pencil.app

# 8. 起動
open -a Pencil

注意事項

  • 自動更新で上書きされる可能性がある。更新通知が来た場合は再度パッチを当てるか、公式の修正版を待つ。
  • ad-hoc 署名のため、初回起動時に macOS のセキュリティ警告が出る場合がある。「システム設定 → プライバシーとセキュリティ → このまま開く」で許可できる。
  • Intel Mac の場合は Pencil-1.1.34-mac-x64.zip をダウンロードする。

環境情報

項目 値
Pencil v1.1.37
macOS 26.3.1 (Darwin 25.3.0)
チップ Apple M2
GPU Metal 4
Electron 39.1.1

関連リンク