@mushi-mushi/capacitor
v0.4.6
Published
Capacitor plugin for Mushi Mushi — shake-to-report, screenshot capture, offline queue, and bottom-sheet widget for iOS/Android Capacitor apps.
Maintainers
Readme
@mushi-mushi/capacitor
Capacitor plugin for Mushi Mushi — the open-source, LLM-driven bug intake, classification, and autofix platform.
One-command setup:
npx mushi-mushiauto-detects Capacitor and installs this package.Other frameworks:
@mushi-mushi/react·@mushi-mushi/vue·@mushi-mushi/svelte·@mushi-mushi/angular·@mushi-mushi/react-native·@mushi-mushi/web(vanilla JS)
Status: V0.4.5 Surface stable; minor changes still possible before V1.0.
The npm package vendors the standalone iOS and Android SDK sources for the native side, so Capacitor apps do not need a separate Maven or SwiftPM Mushi dependency at build time.
Install
npm install @mushi-mushi/capacitor
npx cap syncQuickstart
import { Mushi } from '@mushi-mushi/capacitor';
await Mushi.configure({
projectId: 'proj_...',
apiKey: 'mush_pk_...',
triggerMode: 'both',
captureScreenshot: true,
minDescriptionLength: 20,
});
// Programmatic report:
await Mushi.report({
description: 'Profile photo upload spinner never stops on tablets',
category: 'bug',
});
// Listen for successful submissions (e.g. to mirror into Sentry):
const handle = await Mushi.addListener('reportSubmitted', (payload) => {
console.log('Mushi submitted', payload);
});
// Native widget:
await Mushi.showWidget();Web fallback
When the app runs in a browser preview (ionic serve), the plugin falls back
to a pure-TS implementation that calls the same @mushi-mushi/core API
client used by the standalone web SDK. Behaviour matches production exactly.
Permissions
No runtime permissions required. iOS uses motionShake; Android uses the
accelerometer (no permission needed). The widget is rendered via the native
bottom sheet from the standalone SDKs.
Configuration
| Field | Default | Notes |
|------------------------|--------------------------------------|-------|
| projectId | required | Project UUID |
| apiKey | required | Public ingest key (mush_pk_...) |
| endpoint | https://api.mushimushi.dev | Override for self-hosting |
| triggerMode | 'shake' | 'shake' / 'button' / 'both' / 'none' |
| captureScreenshot | true | Disable for HIPAA-sensitive flows |
| minDescriptionLength | 20 | Matches the web/native SDK contracts |
| useNativeWidget | false | When true, uses the bottom-sheet from the native SDK |
| triggerInset | { right: 24, bottom: 32 } | Per-edge offset (in points / dp) forwarded to the iOS MushiConfig.TriggerInset and Android MushiConfig.TriggerInset so the native FAB clears tab bars and primary CTAs |
License
MIT — see LICENSE at the repo root.
