← すべての拡張機能

開発者向けサンプル · Sprig

Hello Grove

Mango 作

Groveブリッジをテストするための Vue 3 + TypeScript サンプル Sprig。

バージョン
0.1.0
実行形式
チャンネルパネル
Grove API
1
更新済み
2026-07-31

要求するアクセス権限

3件の権限

  • チャンネルメッセージを読む拡張機能が実行されているチャンネルからメッセージを受信します。
  • チャンネルメッセージを送信実行中のチャンネルに属性付きメッセージを投稿できます。
  • ローカルデータを保持拡張機能のデータをこのデバイス上の独自の隔離された領域に保存します。

ネットワークアクセス

インターネット接続なし

そのマニフェストは外部ホストを宣言していません。Groveのサンドボックスはパッケージ外のネットワークリクエストをブロックします。

スクリーンショット

Mangoで確認できます。

Hello Groveのスクリーンショット 1
Hello Groveのチャンネルパネル。

拡張機能から

README · 英語

Hello Grove — sample Sprig (Vue 3 + TypeScript)

A minimal Grove extension (“Sprig”) for testing Mango’s grove-ext:// host and the window.grove bridge. See Docs/Design/grove.md for the platform design.

Build

cd Examples/grove-hello-vue
npm install
npm run build      # → dist/  (index.html + manifest.json + assets/)
npm run package    # → hello-grove.grove, ready to install on iOS or macOS

vite.config.ts sets base: './' so the built asset URLs are relative and resolve under the Sprig’s own origin. public/manifest.json is copied verbatim into dist/.

The repository’s source directory is deliberately not itself an installable Sprig: its manifest lives under public/ and its entry imports TypeScript/Vue source. Install the generated hello-grove.grove, or dev-load the built dist/ directory on macOS.

Node 18 or newer is required by the build toolchain.

Load into Mango

iPhone and iPad

  1. Put hello-grove.grove in Files or iCloud Drive.
  2. In Mango, open Grove Extensions and choose Install .grove….
  3. Select the package, then press Start beside Hello Grove and approve its requested permissions.

macOS (development)

  1. Run Mango.
  2. Open any channel.
  3. Click the puzzle-piece button at the top-right of the transcript.
  4. Choose Load Unpacked (Dev)…, then select Examples/grove-hello-vue/dist.

The Sprig opens in a split-pane bound to that channel.

What it demonstrates

  • Reads window.grove.info.id (the Sprig identity from the bridge).
  • Calls window.grove.send(text) — posts to the bound channel through the native bridge → IRCFeature’s send path (capability-gated on channel.send).
  • Subscribes to window.grove.on('message', …) — the feed shows this channel’s messages live (capability-gated on channel.read).

Manifest

{
  "grove": 1,
  "id": "app.mango.grove.hello",
  "capabilities": ["channel.read", "channel.send"],
  "hostPermissions": []   // no network — pure local UI
}

Bridge type declarations live in src/grove.d.ts — keep them in sync with Mango/Grove/Host/GroveWebView.swift::facadeSource.

manifest.jsonapp.mango.grove.hello
{
  "grove": 1,
  "id": "app.mango.grove.hello",
  "name": "Hello Grove",
  "version": "0.1.0",
  "description": "A Vue 3 + TypeScript sample Sprig for testing the Grove bridge.",
  "author": {
    "name": "Mango",
    "url": "https://mango.app"
  },
  "readme": "README.md",
  "screenshots": [
    {
      "path": "screenshots/hello-grove.png",
      "caption": "Hello Grove's channel-pane interface."
    }
  ],
  "entry": "index.html",
  "presentation": {
    "surfaces": [
      "channelPane"
    ],
    "defaultSurface": "channelPane",
    "defaultSize": {
      "width": 340,
      "height": 460
    }
  },
  "capabilities": [
    "channel.read",
    "channel.send",
    "storage"
  ],
  "hostPermissions": []
}