@mushi-mushi/react-native 0.21.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -1
- package/dist/index.cjs +997 -214
- package/dist/index.d.cts +116 -4
- package/dist/index.d.ts +116 -4
- package/dist/index.js +967 -182
- package/package.json +9 -17
- package/CHANGELOG.md +0 -1062
- package/CODE_OF_CONDUCT.md +0 -51
- package/CONTRIBUTING.md +0 -226
- package/SECURITY.md +0 -310
package/CHANGELOG.md
DELETED
|
@@ -1,1062 +0,0 @@
|
|
|
1
|
-
# @mushi-mushi/react-native
|
|
2
|
-
|
|
3
|
-
## 0.21.0
|
|
4
|
-
|
|
5
|
-
### Minor Changes
|
|
6
|
-
|
|
7
|
-
- 26e038f: SDK polish from the UI/UX audit pass:
|
|
8
|
-
|
|
9
|
-
- **web**: the widget now live-restyles when the OS `prefers-color-scheme`
|
|
10
|
-
changes under `theme: 'auto' | 'inherit'`, and mount is hardened so a host
|
|
11
|
-
page whose `matchMedia` lacks the modern `addEventListener` can never throw.
|
|
12
|
-
Richer banner layout (pill + message + flat actions), `hideOnSelector`
|
|
13
|
-
suppression, submit failure-kind surfacing, and expanded i18n copy
|
|
14
|
-
(en/es/ja/th).
|
|
15
|
-
- **react-native**: banner, bottom-sheet, and floating-button polish;
|
|
16
|
-
`submitReport()` now resolves to a typed failure result instead of
|
|
17
|
-
`undefined` when called before the provider finishes initializing.
|
|
18
|
-
- **core**: additional shared design tokens consumed by the surfaces above.
|
|
19
|
-
|
|
20
|
-
### Patch Changes
|
|
21
|
-
|
|
22
|
-
- Updated dependencies [26e038f]
|
|
23
|
-
- @mushi-mushi/web@1.26.0
|
|
24
|
-
- @mushi-mushi/core@1.26.0
|
|
25
|
-
|
|
26
|
-
## 0.20.1
|
|
27
|
-
|
|
28
|
-
### Patch Changes
|
|
29
|
-
|
|
30
|
-
- 5feac27: # v0.20.1 — Post-release SDK reliability fixes
|
|
31
|
-
|
|
32
|
-
- **React Native types resolve after publish**: removed the `web-i18n.d.ts` ambient shim that re-exported `MushiLocale` from a monorepo-relative source path (`../../web/src/i18n/types`) that does not exist in a published install. `@mushi-mushi/web` already ships proper `./i18n` types via its `exports` map, which `moduleResolution: "bundler"`/`nodenext` resolves directly.
|
|
33
|
-
|
|
34
|
-
- Updated dependencies [5feac27]
|
|
35
|
-
- @mushi-mushi/web@1.21.1
|
|
36
|
-
|
|
37
|
-
## 0.20.0
|
|
38
|
-
|
|
39
|
-
### Minor Changes
|
|
40
|
-
|
|
41
|
-
- 90bc9d5: Add the `MushiBanner` lime neon banner launcher to the React Native SDK, mirroring the web widget's banner entry point:
|
|
42
|
-
|
|
43
|
-
- New `MushiBanner` component with `MushiBannerProps` and the `MUSHI_BANNER_DEFAULT_HEIGHT` constant.
|
|
44
|
-
- New `'banner'` value for `widget.trigger` so hosts can render the banner as the passive entry point.
|
|
45
|
-
- Reporter-status surface (`reporter-status.ts`) for the My Reports affordance.
|
|
46
|
-
|
|
47
|
-
All additions are Hermes-safe (no Node built-ins / browser globals).
|
|
48
|
-
|
|
49
|
-
### Patch Changes
|
|
50
|
-
|
|
51
|
-
- Updated dependencies [90bc9d5]
|
|
52
|
-
- Updated dependencies [90bc9d5]
|
|
53
|
-
- @mushi-mushi/core@1.21.0
|
|
54
|
-
- @mushi-mushi/web@1.21.0
|
|
55
|
-
|
|
56
|
-
## 0.19.2
|
|
57
|
-
|
|
58
|
-
### Patch Changes
|
|
59
|
-
|
|
60
|
-
- 7b44c97: SDK fixes from automated code review.
|
|
61
|
-
|
|
62
|
-
- **Favicon trust boundary** (`@mushi-mushi/core`): `readPageFaviconHref` now returns only http(s) URLs, so a host page can't get a `data:` / `blob:` / `javascript:` favicon rendered into the widget's `<img src>`; anything else falls back to the default mark.
|
|
63
|
-
- **Self-hosted credential message** (`@mushi-mushi/core`, `@mushi-mushi/react-native`): the one-time 401/403 "credentials rejected" warning only links to the hosted console when the client is actually using the Cloud endpoint; self-hosted deployments get a console-agnostic message instead of a wrong domain.
|
|
64
|
-
- **Offline-queue data loss** (`@mushi-mushi/react-native`): `decryptQueueBlob` now decrypts any blob carrying the encrypted prefix regardless of the current `secureStorage` flag. Previously, toggling `secureStorage` from `true` to `false` returned the still-encrypted string, which failed `JSON.parse` and silently cleared the offline report queue.
|
|
65
|
-
|
|
66
|
-
- Updated dependencies [7b44c97]
|
|
67
|
-
- @mushi-mushi/core@1.19.2
|
|
68
|
-
|
|
69
|
-
## 0.19.1
|
|
70
|
-
|
|
71
|
-
### Patch Changes
|
|
72
|
-
|
|
73
|
-
- 08108e6: Setup UX overhaul: zero-paste `mushi login` browser device-auth, credential error visibility, and docs fixes.
|
|
74
|
-
|
|
75
|
-
- **CLI**: `mushi login` now implements RFC 8628 browser device-auth (zero copy-paste). Opens the console in the browser, user clicks Approve, CLI receives a session token automatically, then lists/creates a project and saves the API key. `--api-key` flag remains as the CI/non-interactive fallback.
|
|
76
|
-
- **Core SDK**: 401/403 responses now emit a one-time `console.error` with a clear credential-failure message and the console URL, instead of silently entering the offline retry queue.
|
|
77
|
-
- **React Native**: Same 401/403 credential-failure detection in `MushiProvider.submitReport` — skips enqueue and surfaces the error immediately.
|
|
78
|
-
|
|
79
|
-
- Updated dependencies [08108e6]
|
|
80
|
-
- @mushi-mushi/core@1.19.1
|
|
81
|
-
|
|
82
|
-
## 0.19.0
|
|
83
|
-
|
|
84
|
-
### Minor Changes
|
|
85
|
-
|
|
86
|
-
- a8f183e: Show the captured screenshot as a visible preview with a configurable
|
|
87
|
-
"remove anything sensitive" privacy caption, so reporters can see and consent to
|
|
88
|
-
exactly what gets sent.
|
|
89
|
-
|
|
90
|
-
- **core/types**: new `widget.screenshotSensitiveHint?: boolean | string` config.
|
|
91
|
-
`true` (default) shows the localized caption, a string overrides it verbatim,
|
|
92
|
-
`false` hides the caption (the preview + remove control always remain). Travels
|
|
93
|
-
in the `widget` block of `GET /v1/sdk/config`, so it's settable per-host via the
|
|
94
|
-
SDK and remotely via the Mushi console runtime config.
|
|
95
|
-
- **web/widget**: the details step now renders the attached screenshot as an
|
|
96
|
-
`<img>` preview (previously only a "Screenshot attached ✓" label) with an
|
|
97
|
-
optional privacy caption beneath it. The preview stays in sync through the
|
|
98
|
-
annotate/markup flow and clears when the screenshot is removed. Image `src` and
|
|
99
|
-
caption are HTML-escaped. New `en`/`es`/`ja`/`th` strings.
|
|
100
|
-
- **react-native**: the bottom sheet's existing screenshot thumbnail gains the
|
|
101
|
-
same configurable privacy caption, resolved by the provider from
|
|
102
|
-
`widget.screenshotSensitiveHint`.
|
|
103
|
-
|
|
104
|
-
This lets privacy-sensitive hosts (e.g. finance apps) enable screenshot capture
|
|
105
|
-
with an explicit user-facing review-and-remove step instead of disabling it
|
|
106
|
-
outright.
|
|
107
|
-
|
|
108
|
-
### Patch Changes
|
|
109
|
-
|
|
110
|
-
- Updated dependencies [a8f183e]
|
|
111
|
-
- Updated dependencies [a8f183e]
|
|
112
|
-
- @mushi-mushi/core@1.19.0
|
|
113
|
-
|
|
114
|
-
## 0.18.1
|
|
115
|
-
|
|
116
|
-
### Patch Changes
|
|
117
|
-
|
|
118
|
-
- 8516682: Dependency housekeeping — runtime major-version bumps.
|
|
119
|
-
|
|
120
|
-
- **inventory-schema**: migrate to **Zod 4** (`zod@^4.4.3`), aligning with `@mushi-mushi/mcp` and `@mushi-mushi/agents`, which were already on v4. The public API is unchanged; the validation-issue path formatter now handles Zod 4's widened `PropertyKey[]` issue paths.
|
|
121
|
-
- **cli**: bump `commander` to **v15** (ESM-only; the CLI is already pure ESM, so the change is transparent to consumers).
|
|
122
|
-
- **mcp-ci**: bump `@actions/core` to **v3** (ESM-only, Node 24-ready; bundled via tsup).
|
|
123
|
-
- **react-native**: build and test against **react-native 0.86**. `StyleSheet.absoluteFillObject` was dropped from RN 0.86's TypeScript types, so the backdrop style now inlines the equivalent absolute-fill literal — runtime behavior is identical and it compiles against all supported `react-native >= 0.72`.
|
|
124
|
-
|
|
125
|
-
## 0.18.0
|
|
126
|
-
|
|
127
|
-
### Minor Changes
|
|
128
|
-
|
|
129
|
-
- 679b158: Report payload + identity parity with the web SDK, and a web-parity bottom sheet.
|
|
130
|
-
|
|
131
|
-
- **Reporter identity (fixes anonymous-token reporter):** `submitReport` now emits nested `metadata.user = { id, email, name, provider }` — the shape the server's `resolveEndUser()` reads — while keeping the flat `userId/userEmail/userName` keys for back-compat. Adds a `setUser()` alias next to `identify()`.
|
|
132
|
-
- **Sentry-level payload:** every report now carries a per-launch `sessionId`, `sdkPackage`/`sdkVersion`/`appVersion`, a device `fingerprintHash`, and a 50-entry breadcrumb ring buffer that is also sent as a derived repro `timeline` (so the admin "Repro timeline" renders instead of nudging "Upgrade the SDK"). New `addBreadcrumb()` method; `setScreen()` auto-adds a navigation breadcrumb.
|
|
133
|
-
- **Screenshots:** new `capture.screenshot` config flag (default on) gating the optional `react-native-view-shot` capture; documented masking guidance for sensitive screens.
|
|
134
|
-
- **Design parity:** `MushiBottomSheet` restyled to mirror the web widget — neon-lime (`#0FFF50`) branded header and accent, dark-ink text on accent surfaces, and clearer "Your reports" / "Community" tabs.
|
|
135
|
-
|
|
136
|
-
### Patch Changes
|
|
137
|
-
|
|
138
|
-
- Dependency housekeeping — runtime major-version bumps.
|
|
139
|
-
|
|
140
|
-
- **inventory-schema**: migrate to **Zod 4** (`zod@^4.4.3`), aligning with `@mushi-mushi/mcp` and `@mushi-mushi/agents`, which were already on v4. The public API is unchanged; the validation-issue path formatter now handles Zod 4's widened `PropertyKey[]` issue paths.
|
|
141
|
-
- **cli**: bump `commander` to **v15** (now ESM-only; the CLI is already pure ESM, so the change is transparent to consumers).
|
|
142
|
-
- **mcp-ci**: bump `@actions/core` to **v3** (ESM-only, Node 24-ready; bundled via tsup).
|
|
143
|
-
- **react-native**: build and test against **react-native 0.86**. `StyleSheet.absoluteFillObject` was dropped from RN 0.86's TypeScript types, so the backdrop style now inlines the equivalent absolute-fill literal — runtime behavior is identical and it compiles against all supported `react-native >= 0.72`.
|
|
144
|
-
|
|
145
|
-
- Updated dependencies [679b158]
|
|
146
|
-
- @mushi-mushi/core@1.17.0
|
|
147
|
-
|
|
148
|
-
## 0.16.0
|
|
149
|
-
|
|
150
|
-
### Minor Changes
|
|
151
|
-
|
|
152
|
-
- 499b716: **Mushi SDK Uplift — Draggable FAB, Themed Popup, Keyboard-Safe Form, Cross-App Community**
|
|
153
|
-
|
|
154
|
-
### Draggable / repositionable FAB
|
|
155
|
-
- **Web**: Pointer Events drag with tap-vs-drag threshold (6 px), safe-area clamping, optional edge-snap on release, per-project `localStorage` persistence, arrow-key nudge for keyboard accessibility. New `draggable?: boolean | { persist?, snapToEdge?, axis? }` config type in `@mushi-mushi/core`.
|
|
156
|
-
- **React Native**: `PanResponder`-based drag + `AsyncStorage` persistence + safe-area clamping.
|
|
157
|
-
- **Flutter**: Long-press-to-drag via `GestureDetector` + `SharedPreferences` persistence + edge-snap.
|
|
158
|
-
- **iOS**: `UIPanGestureRecognizer` via `MushiFabDragController` + `UserDefaults` persistence + animated edge-snap.
|
|
159
|
-
- **Android**: `OnTouchListener` tap-vs-drag + `SharedPreferences` persistence + optional edge-snap. New `DraggableConfig` data class.
|
|
160
|
-
|
|
161
|
-
### Theme inherit + accent + contrast fixes
|
|
162
|
-
- **All platforms**: New `theme: 'inherit'` resolves the host app's dark mode at runtime (`prefers-color-scheme` / `color-scheme` on web, `traitCollection.userInterfaceStyle` on iOS, `UiModeManager` on Android, `Brightness` on Flutter). New `accent` + `accentText` config tokens for brand-color override.
|
|
163
|
-
- **Web**: Parameterized `getWidgetStyles(theme, accent)` with `widgetAccent` / `widgetAccentWash` / `widgetAccentInk` tokens; fixed undefined `var(--mushi-text-dim)` references; WCAG AA re-verified in both themes.
|
|
164
|
-
- **React Native / Android**: Explicit disabled-state colors (no more white-on-white disabled buttons).
|
|
165
|
-
|
|
166
|
-
### Keyboard-safe "tell us more" form
|
|
167
|
-
- **Web**: `visualViewport` manager on `open()`; lifts panel above mobile keyboard; scrolls focused `textarea` / `input` into view; `100dvh` bottom-sheet layout on narrow viewports; torn down on `close()` / `destroy()`.
|
|
168
|
-
- **React Native**: `KeyboardAvoidingView` `behavior="height"` (Android) + `ScrollView(keyboardShouldPersistTaps)`.
|
|
169
|
-
- **Flutter**: `SingleChildScrollView` + `MediaQuery.viewInsets.bottom` inset.
|
|
170
|
-
- **iOS**: `keyboardWillShow` / `keyboardWillHide` observers + `CGAffineTransform` lift.
|
|
171
|
-
- **Android**: `SOFT_INPUT_ADJUST_RESIZE` + `ScrollView` wrapper.
|
|
172
|
-
|
|
173
|
-
### Cross-app community layer
|
|
174
|
-
- New **in-widget Mushi sign-in** (magic link / OTP) — no password required.
|
|
175
|
-
- **Account step**: sign-in form → signed-in profile card with global rank + cross-app navigation.
|
|
176
|
-
- **Cross-app reports step**: all reports filed by this tester across every app, grouped by app.
|
|
177
|
-
- **Global leaderboard**: top-N ranking from `tester_leaderboard_30d_public`, with my rank highlighted.
|
|
178
|
-
- **Server** (Supabase, mushi-mushi project): three new SECURITY DEFINER RPCs — `mushi_link_reporter_token`, `mushi_get_my_cross_app_reports`, `mushi_get_my_reputation`; magic-link route; public leaderboard route. Deployed + verified on remote.
|
|
179
|
-
- **Community footer** added to the category-select step: "Join community" entry-point + leaderboard shortcut.
|
|
180
|
-
- Cross-domain identity unifies server-side via `tester_id`; per-domain magic-link re-auth is required for different origins (localStorage is per-origin by browser design).
|
|
181
|
-
|
|
182
|
-
### Size budget
|
|
183
|
-
|
|
184
|
-
Bundle budget raised from 63 KB → 70 KB gzip (with 3.5 KB headroom) to accommodate the community layer. Community CSS compacted to single-line rules.
|
|
185
|
-
|
|
186
|
-
### Patch Changes
|
|
187
|
-
|
|
188
|
-
- Updated dependencies [499b716]
|
|
189
|
-
- Updated dependencies [499b716]
|
|
190
|
-
- @mushi-mushi/core@1.14.0
|
|
191
|
-
|
|
192
|
-
## 0.15.2
|
|
193
|
-
|
|
194
|
-
### Patch Changes
|
|
195
|
-
|
|
196
|
-
- e422d40: Polish the MCP and Cursor integration path with a shared MCP tool catalog, subpath exports for catalog/server consumers, publish-readiness checks, Cursor plugin bundle validation, and marketplace documentation.
|
|
197
|
-
|
|
198
|
-
Fix the web SDK export map so TypeScript consumers consistently resolve generated declarations through package exports, and refine the React Native bottom-sheet reporter experience.
|
|
199
|
-
|
|
200
|
-
## 0.15.1
|
|
201
|
-
|
|
202
|
-
### Patch Changes
|
|
203
|
-
|
|
204
|
-
- 03fabb9: Session replay + screenshot annotation capture, client-side payload guarding, and a full-stack audit-hardening pass across the SDK, CLI, and MCP.
|
|
205
|
-
|
|
206
|
-
## @mushi-mushi/core
|
|
207
|
-
- **New:** `checkReportPayloadSize`, `estimateJsonBytes`, `formatBytes`, and `MAX_REPORT_PAYLOAD_BYTES` payload-guard helpers. `checkReportPayloadSize` serializes once and reports a distinct `serializeFailed` outcome (e.g. circular references in metadata) instead of a generic "too large".
|
|
208
|
-
- `submitReport` now surfaces a `SERIALIZE_FAILED` error code (separate from `PAYLOAD_TOO_LARGE`) so callers can tell an oversized report apart from one that could not be serialized.
|
|
209
|
-
- **Hardening:** the offline retry queue now treats `PAYLOAD_TOO_LARGE` and `SERIALIZE_FAILED` as permanent failures, so a single oversized report can no longer poison-pill the queue and block every later report.
|
|
210
|
-
|
|
211
|
-
## @mushi-mushi/web
|
|
212
|
-
- **New — session replay:** opt-in `capture.replay: 'rrweb' | 'lite' | 'sentry' | 'off'` records a rolling buffer that attaches to the report on submit. rrweb recording masks all text and inputs by default (`maskAllText` + `maskAllInputs`), records continuously from init, and trims the buffer while preserving the most recent full snapshot so replays stay playable. `'off'` is the default.
|
|
213
|
-
- **New — screenshot annotation:** the report panel's "Mark up" button opens an interactive overlay (highlight / blur / arrow) so reporters can circle the problem and redact sensitive regions before submitting. The annotation session stays open until the reporter confirms with "Done"; touch strokes now resolve correctly on lift (`touchend`).
|
|
214
|
-
- **New — screenshot compression** before upload to keep payloads small.
|
|
215
|
-
- **Hardening:** oversized reports are progressively degraded — drop the replay buffer, then the screenshot — before being dropped entirely with a `report:failed` event, so the offline queue is never wedged. The replay capture is now torn down on `Mushi.destroy()` (no observer/listener leak) and guarded against an init/`updateConfig` race that could install a stale capture.
|
|
216
|
-
|
|
217
|
-
## @mushi-mushi/react-native
|
|
218
|
-
- Fix `onReportQueued` / `onReportSynced` callback timing: `onReportQueued` now fires after the report is persisted to the offline queue, and `onReportSynced` fires only when a queued report is actually delivered (wired to the async-storage queue drain) rather than misleadingly firing on direct submission.
|
|
219
|
-
|
|
220
|
-
## @mushi-mushi/mcp
|
|
221
|
-
- Fix `get_reporter_thread`: it now calls the existing `GET /v1/admin/reports/:id/timeline` endpoint (which includes the reporter/admin comment lane plus fix, QA, and status lanes) instead of a non-existent `/comments` route that returned 404.
|
|
222
|
-
|
|
223
|
-
## @mushi-mushi/cli
|
|
224
|
-
- `mushi feedback board` now reads the feature board via `GET /v1/admin/feature-board` with an operator API key (`mcp:read`), fixing the previous 401, and renders real vote counts.
|
|
225
|
-
- `mushi doctor --fix` re-runs its checks after applying fixes, so the printed result and exit code reflect the post-fix state.
|
|
226
|
-
- Endpoints are normalized consistently (trailing slashes stripped on sub-paths) to prevent double-slash request URLs.
|
|
227
|
-
|
|
228
|
-
- Updated dependencies [03fabb9]
|
|
229
|
-
- @mushi-mushi/core@1.12.0
|
|
230
|
-
|
|
231
|
-
## 0.15.0
|
|
232
|
-
|
|
233
|
-
### Minor Changes
|
|
234
|
-
|
|
235
|
-
- 59d6fce: Reporter two-way loop + fix-merge surface across the SDKs.
|
|
236
|
-
|
|
237
|
-
## @mushi-mushi/core
|
|
238
|
-
- Add reporter verify/reopen API client methods and the `not_fixed` feedback signal to the public types.
|
|
239
|
-
|
|
240
|
-
## @mushi-mushi/web
|
|
241
|
-
- Reporter widget can confirm a fix (verify) or flag a regression (reopen), and opt into email delivery for status updates.
|
|
242
|
-
|
|
243
|
-
## @mushi-mushi/cli
|
|
244
|
-
- New fix-merge lifecycle commands wired to the console merge endpoints.
|
|
245
|
-
|
|
246
|
-
## @mushi-mushi/mcp
|
|
247
|
-
- New MCP tools: `merge_fix`, `refresh_ci`, and `reopen_report`; `transition_status` now covers the `verified` / `reopened` states.
|
|
248
|
-
|
|
249
|
-
## @mushi-mushi/mcp-ci
|
|
250
|
-
- CLI surface updated for the new fix-merge and CI-refresh tools.
|
|
251
|
-
|
|
252
|
-
## @mushi-mushi/react-native
|
|
253
|
-
- Bottom-sheet widget gains reporter verify/reopen actions and notification opt-in.
|
|
254
|
-
|
|
255
|
-
## @mushi-mushi/capacitor
|
|
256
|
-
- Plugin definitions and web bridge updated for the reporter verify/reopen flow.
|
|
257
|
-
|
|
258
|
-
### Patch Changes
|
|
259
|
-
|
|
260
|
-
- Updated dependencies [59d6fce]
|
|
261
|
-
- @mushi-mushi/core@1.11.0
|
|
262
|
-
|
|
263
|
-
## 0.14.0
|
|
264
|
-
|
|
265
|
-
### Minor Changes
|
|
266
|
-
|
|
267
|
-
- c0eb84b: Add a cross-platform Reporter API, contributor hall-of-fame, and a headless fix-merge CLI.
|
|
268
|
-
|
|
269
|
-
## @mushi-mushi/core
|
|
270
|
-
- Add the Reporter API to `MushiSDKInstance`: `listMyReports()`, `listMyComments(reportId)`, and `replyToReport(reportId, body)` let an anonymous reporter view and follow up on their own submissions, keyed to the persistent reporter token.
|
|
271
|
-
- Add `getHallOfFame(limit?)` plus the matching `MushiApiClient.getHallOfFame()` and the new `MushiHallOfFameEntry` type for the public contributor leaderboard.
|
|
272
|
-
|
|
273
|
-
## @mushi-mushi/web
|
|
274
|
-
- Implement the Reporter API and `getHallOfFame()` on the web SDK instance. All methods fail soft (return `[]` / `null` instead of throwing) when offline or before a reporter token exists, so they are safe to call on first render.
|
|
275
|
-
|
|
276
|
-
## @mushi-mushi/react
|
|
277
|
-
- Expose the Reporter API on the `useMushi()` hook (`listMyReports`, `listMyComments`, `replyToReport`, `getHallOfFame`, `getReputation`, `getTier`) as memoised, render-stable callbacks with no-op fallbacks before the SDK is ready.
|
|
278
|
-
- Re-export `MushiReporterReport`, `MushiReporterComment`, `MushiHallOfFameEntry`, `MushiReputationResult`, and `MushiTierResult` for host-app typing.
|
|
279
|
-
|
|
280
|
-
## @mushi-mushi/react-native
|
|
281
|
-
- Add optional in-app screenshot capture via `react-native-view-shot` (declared as an optional peer dependency — no-ops gracefully when not installed).
|
|
282
|
-
- Re-export `MushiReporterReport`, `MushiReporterComment`, and `MushiHallOfFameEntry` so React Native host apps can type the Reporter API.
|
|
283
|
-
|
|
284
|
-
## @mushi-mushi/cli
|
|
285
|
-
- Add `mushi fixes merge <fixId> [--method squash|merge|rebase]` to squash-merge a fix PR and mark the linked report Fixed without leaving the terminal (auto-readies draft PRs first).
|
|
286
|
-
- Add `mushi fixes refresh-ci <fixId>` to pull the latest GitHub Actions check-run status on demand. Both commands accept `--json` for scripting and require an admin API key with `mcp:write` scope.
|
|
287
|
-
|
|
288
|
-
### Patch Changes
|
|
289
|
-
|
|
290
|
-
- Updated dependencies [c0eb84b]
|
|
291
|
-
- @mushi-mushi/core@1.10.0
|
|
292
|
-
|
|
293
|
-
## 0.13.1
|
|
294
|
-
|
|
295
|
-
### Patch Changes
|
|
296
|
-
|
|
297
|
-
- a7d6ae8: Release tester marketplace, rewards program, dispatch preflight, proactive triggers, and SDK improvements.
|
|
298
|
-
|
|
299
|
-
## @mushi-mushi/core
|
|
300
|
-
- Add `MushiReputationResult`, `MushiTierResult`, `MushiActivityEvent` types for the rewards subsystem.
|
|
301
|
-
- Add `pulseTrigger()` method to `MushiSDKInstance` interface — briefly animates the bug-report trigger to invite feedback without opening the widget.
|
|
302
|
-
- Add `inpAttribution` field to `MushiPerformanceMetrics` for detailed INP breakdown (eventType, targetSelector, inputDelay, processingDuration, presentationDelay).
|
|
303
|
-
- Add `minDescriptionLength` to `MushiWidgetConfig` — enforces a minimum character count before the submit button enables.
|
|
304
|
-
- Add `beforeSendFeedback` hook to `MushiConfig` — called before a report is dispatched; return `null` to cancel.
|
|
305
|
-
- Add `onCrashedLastRun` hook to `MushiConfig` — called on init if the previous session ended in a crash.
|
|
306
|
-
- Add `'report:dispatched'` to `MushiEventType`.
|
|
307
|
-
|
|
308
|
-
## @mushi-mushi/web
|
|
309
|
-
- **Rewards subsystem** (`src/rewards.ts`): full tester-rewards API — `initRewards`, `updateRewardsUser`, `getTier`, `enqueueActivity`. Connects to `/v1/rewards/*` backend endpoints.
|
|
310
|
-
- **Proactive triggers** (`src/proactive-triggers.ts`): schedule-based and event-based triggers that surface the widget at the right moment without developer code.
|
|
311
|
-
- **`pulseTrigger()`**: widget-level pulse animation accessible from `Mushi.pulseTrigger()`.
|
|
312
|
-
- **Screenshot simplification**: `screenshot.take()` now returns `Promise<string | null>` — callers no longer need to check an `{ ok, dataUrl }` result object.
|
|
313
|
-
- **`beforeSendFeedback` + `onCrashedLastRun`**: lifecycle hooks wired into the init flow.
|
|
314
|
-
|
|
315
|
-
## @mushi-mushi/mcp
|
|
316
|
-
- Refactored all tool registrations from the `registerScopedTool` wrapper to the canonical `server.tool()` API — removes a layer of indirection and aligns with the latest `@modelcontextprotocol/sdk` surface.
|
|
317
|
-
- Added rewards management tools: `list_top_contributors`, `award_bonus_points`, `set_tier`, `promote_champion`.
|
|
318
|
-
|
|
319
|
-
## @mushi-mushi/cli
|
|
320
|
-
- **`mushi project create`** command: provisions a new Mushi project, mints an API key with `mcp:read+write` scope, and writes `.env.local` + `.cursor/mcp.json`.
|
|
321
|
-
- **`mushi doctor`**: pre-flight checks — verifies CLI config, endpoint reachability, SDK install, and optional server preflight.
|
|
322
|
-
- **`mushi nudge`**: generates a paste-ready `Mushi.init()` snippet tuned for alpha / beta / ga release phases.
|
|
323
|
-
- Improved `mushi init` prompts: clearer placeholders and error messages for Project ID and API key fields.
|
|
324
|
-
|
|
325
|
-
## @mushi-mushi/node
|
|
326
|
-
- Remove stale `warnedOnce` variable and fix `buildNodeEnvironment` JSDoc comment separation that caused a syntax error on combined branches.
|
|
327
|
-
|
|
328
|
-
## @mushi-mushi/react
|
|
329
|
-
|
|
330
|
-
**Breaking change**: `useMushi()` now returns `UseMushiResult` (`{ report, pulseTrigger, isReady }`) instead of the raw `MushiSDKInstance | null`. The raw instance accessor is now `useMushiSdk()`.
|
|
331
|
-
|
|
332
|
-
**Migration**: replace `const sdk = useMushi(); sdk?.report()` with `const { report } = useMushi(); report()`.
|
|
333
|
-
- New primary hook `useMushi()` returns a stable, destructurable `{ report, pulseTrigger, isReady }` — covers 90% of use cases without the optional-chain dance.
|
|
334
|
-
- New `useMushiSdk()` replaces the old `useMushi()` for callers that need direct SDK access.
|
|
335
|
-
- Re-export new core types (`MushiReputationResult`, `MushiTierResult`, `MushiActivityEvent`).
|
|
336
|
-
- Export new `UseMushiResult` interface.
|
|
337
|
-
|
|
338
|
-
## @mushi-mushi/react-native
|
|
339
|
-
- Updated peer dependency range for latest Expo SDK compatibility.
|
|
340
|
-
|
|
341
|
-
- Updated dependencies [a7d6ae8]
|
|
342
|
-
- @mushi-mushi/core@1.6.0
|
|
343
|
-
|
|
344
|
-
## 0.13.0
|
|
345
|
-
|
|
346
|
-
### Minor Changes
|
|
347
|
-
|
|
348
|
-
- ## Mushi Mushi End-to-End Uplift (v1.5.0 / v0.13.0 / v0.8.0)
|
|
349
|
-
|
|
350
|
-
Single coordinated release shipping six user feedback items, RN widget UX
|
|
351
|
-
hardening, MCP server compliance, CLI ergonomics, and admin console improvements
|
|
352
|
-
in one coordinated bump.
|
|
353
|
-
|
|
354
|
-
### Phase 1 — Six glot.it feedback items
|
|
355
|
-
|
|
356
|
-
**1.1 `MushiRN.getInstance()` global singleton** (`react-native`)
|
|
357
|
-
- Add `packages/react-native/src/instance.ts` with `MushiRN.getInstance()`.
|
|
358
|
-
Eliminates the `MushiInstancePublisher` bridge component consumers were
|
|
359
|
-
building. `MushiProvider` writes/clears the singleton on mount/unmount via
|
|
360
|
-
`setRNInstance` / `clearRNInstance`.
|
|
361
|
-
- Export `MushiRN` from `@mushi-mushi/react-native`.
|
|
362
|
-
|
|
363
|
-
**1.2 Functional `widget.inset`** (`react-native`)
|
|
364
|
-
- `MushiRNConfig.widget.inset` now accepts a function form:
|
|
365
|
-
`(ctx: MushiRNInsetCtx) => MushiRNInsetSpec` evaluated live as safe-area
|
|
366
|
-
insets or screen dimensions change.
|
|
367
|
-
- New `widget.respectSafeArea` option (default `true`) replaces the hardcoded
|
|
368
|
-
`Platform.OS === 'ios' ? 50 : 28` bottom offset.
|
|
369
|
-
- Shared types `MushiRNInsetSpec` + `MushiRNInsetCtx` added to `@mushi-mushi/core`.
|
|
370
|
-
|
|
371
|
-
**1.3 Trigger vocabulary parity** (`react-native`, `core`)
|
|
372
|
-
- `MushiRNConfig.widget.trigger` now uses the shared `MushiRNTrigger` type
|
|
373
|
-
(superset of `MushiWebTrigger`).
|
|
374
|
-
- `'notification-only'` trigger added to both web and RN (see Phase 1.6).
|
|
375
|
-
- RN README trigger table updated to list all 8 values with consistent
|
|
376
|
-
definitions.
|
|
377
|
-
|
|
378
|
-
**1.4 `identify()` dual-call-shape overload** (`core`, `web`, `react-native`)
|
|
379
|
-
- Both call shapes now type-check and produce identical output:
|
|
380
|
-
```ts
|
|
381
|
-
mushi.identify('usr_42', { email, segment }); // string form (original)
|
|
382
|
-
mushi.identify({ id: 'usr_42', email, segment }); // object form (new)
|
|
383
|
-
```
|
|
384
|
-
- Runtime fork in web + RN detects `typeof userId === 'object'` and normalises.
|
|
385
|
-
- TypeScript overload added to `MushiSDKInstance` in `@mushi-mushi/core`.
|
|
386
|
-
|
|
387
|
-
**1.5 `ENOTEMPTY` install doctor** (`cli`)
|
|
388
|
-
- New `mushi doctor install` command scans `node_modules/@mushi-mushi/.*-tmp*`
|
|
389
|
-
and removes stale npm temp directories that cause ENOTEMPTY on Windows/OneDrive.
|
|
390
|
-
- `scripts/mushi-install-doctor.mjs` added for direct invocation.
|
|
391
|
-
- Troubleshooting sections added to web + RN READMEs.
|
|
392
|
-
|
|
393
|
-
**1.6 Bell-only / `'notification-only'` trigger** (`core`, `web`, `react-native`)
|
|
394
|
-
- New `widget.trigger: 'notification-only'` — renders only the unread-reply
|
|
395
|
-
badge bubble, not the full trigger button. Tapping opens the reporter panel
|
|
396
|
-
("Your reports") directly.
|
|
397
|
-
- New `widget.hideOnRoutesMode: 'all' | 'trigger-only'` (default `'all'`).
|
|
398
|
-
When `'trigger-only'`, the SDK auto-switches to `'notification-only'` on
|
|
399
|
-
matching routes, preserving reply badge visibility.
|
|
400
|
-
- Styles for `.mushi-notification-badge` added to web widget.
|
|
401
|
-
- Same option wired in RN.
|
|
402
|
-
|
|
403
|
-
### Phase 2 — RN widget UX hardening
|
|
404
|
-
|
|
405
|
-
**2.1–2.5 Five-state phase machine** (`react-native`)
|
|
406
|
-
- `MushiBottomSheet` replaced `'form' | 'sending' | 'sent'` with
|
|
407
|
-
`'form' | 'sending' | 'sent' | 'queued' | 'error'`.
|
|
408
|
-
- `'sending'` blocks backdrop/swipe dismiss and shows a spinner.
|
|
409
|
-
- After 4 s a "Taking longer than usual" cancel/save escape hatch appears.
|
|
410
|
-
- `'queued'` state shows the offline-save confirmation (Wifi-Off icon).
|
|
411
|
-
- `'error'` state preserves the typed description and offers Retry.
|
|
412
|
-
- Description is **never cleared on failure** — only on deliberate close or
|
|
413
|
-
successful submit.
|
|
414
|
-
- `submitReport` now returns `Promise<{ queued?: boolean }>` instead of `void`.
|
|
415
|
-
- Event bus (`on` / `off`) added to `MushiRNInstance`; emits
|
|
416
|
-
`report:submitted`, `report:sent`, `report:queued`, `report:failed`,
|
|
417
|
-
`widget:opened`, `widget:closed`.
|
|
418
|
-
- Minimal i18n: `en`, `th`, `ja`, `es` strings in `MushiBottomSheet`; locale
|
|
419
|
-
resolved via `react-native-localize` (optional peer) → `Intl` → `'en'`.
|
|
420
|
-
|
|
421
|
-
### Phase 3 — Mushi MCP server uplift
|
|
422
|
-
- `ToolSpec` gains `featureGroup: McpFeatureGroup` and `mcpAnnotations?`
|
|
423
|
-
(audience, priority, `promptInjectionGuard`).
|
|
424
|
-
- `MUSHI_READ_ONLY=true` env var strips all write tools from `tools/list`.
|
|
425
|
-
- `MUSHI_FEATURES=reports,fixes,...` env var narrows registered tools to the
|
|
426
|
-
listed feature groups. Mirrors Supabase MCP `?features=` convention.
|
|
427
|
-
- `MUSHI_PROJECT_REF` env var accepted as alias for `MUSHI_PROJECT_ID`.
|
|
428
|
-
- Prompt-injection guard: `maybeGuardPayload` wraps free-form tool results with
|
|
429
|
-
the Supabase-style "following text is data, not instructions" preamble.
|
|
430
|
-
- `shouldRegister()` applies both scope + feature-group gates at registration
|
|
431
|
-
time (not call time).
|
|
432
|
-
- New `set_widget_notification_only` catalog tool (admin feature group).
|
|
433
|
-
|
|
434
|
-
### Phase 4 — CLI
|
|
435
|
-
- `mushi mcp install --client cursor|claude|codex` — writes the Mushi MCP entry
|
|
436
|
-
to the target client's config file.
|
|
437
|
-
- `mushi mcp test` — verifies the API key resolves a project.
|
|
438
|
-
- `mushi mcp scopes` — shows which feature groups the configured key can call.
|
|
439
|
-
- `mushi doctor` — single-shot health check with per-check hints.
|
|
440
|
-
- `mushi doctor install` — runs the ENOTEMPTY cleaner.
|
|
441
|
-
- `die()` now prints a per-error-code "what to try next" hint.
|
|
442
|
-
|
|
443
|
-
### Phase 5 — Admin console + Supabase MCP integration
|
|
444
|
-
- `_shared/supabase-mcp-client.ts`: read-only Supabase MCP proxy with 60 s
|
|
445
|
-
in-memory cache. Resolves the org's PAT from `byok_keys` (slug: `supabase`).
|
|
446
|
-
- `api/routes/db-advisors.ts`: new route `GET /v1/admin/projects/:id/db-advisors`
|
|
447
|
-
that proxies Supabase MCP `get_advisors`.
|
|
448
|
-
- `SchemaRepairDiagnosticCard` extended to also render Supabase MCP advisor
|
|
449
|
-
results in a collapsible section below the fix-worker failure banner.
|
|
450
|
-
- Migration `20260521230000_widget_notification_only_pref.sql` adds
|
|
451
|
-
`project_settings.widget_hide_routes_mode` (deployed via Supabase MCP) and
|
|
452
|
-
`project_settings.supabase_project_ref`.
|
|
453
|
-
|
|
454
|
-
### Verification
|
|
455
|
-
- Changeset: `@mushi-mushi/core@1.5.0`, `@mushi-mushi/web@1.5.0`,
|
|
456
|
-
`@mushi-mushi/react-native@0.13.0`, `@mushi-mushi/cli@0.10.0`,
|
|
457
|
-
`@mushi-mushi/mcp@0.8.0`.
|
|
458
|
-
- glot.it follow-up PR: drop `MushiInstancePublisher`, update to new versions,
|
|
459
|
-
wire `report:queued` toast to the RN event bus.
|
|
460
|
-
|
|
461
|
-
### Patch Changes
|
|
462
|
-
|
|
463
|
-
- Updated dependencies
|
|
464
|
-
- @mushi-mushi/core@1.5.0
|
|
465
|
-
|
|
466
|
-
## 0.12.0
|
|
467
|
-
|
|
468
|
-
### Minor Changes
|
|
469
|
-
|
|
470
|
-
- 506df78: Release the full SDK + closed-loop evolution backlog since v0.5.0
|
|
471
|
-
(`cf27d81`, 2026-05-10). Covers headless SDK, QA Coverage Suite,
|
|
472
|
-
rewards program, native 0.4.0 parity, closed-loop Phases 0–6, and
|
|
473
|
-
operator UX hardening for beta users.
|
|
474
|
-
|
|
475
|
-
### Headless SDK (minor — core / web / react / react-native)
|
|
476
|
-
|
|
477
|
-
`MushiTrigger` (React + React Native) and `MushiAttach` (React) — wrap
|
|
478
|
-
any element or DOM selector to trigger the Mushi widget without the
|
|
479
|
-
floating button. The matching `SdkInstallCard` in the console now
|
|
480
|
-
generates copy/paste snippets for both patterns.
|
|
481
|
-
|
|
482
|
-
### QA Coverage Suite (minor — core / web)
|
|
483
|
-
|
|
484
|
-
Automated user-story tests run on cron through Playwright, Browserbase,
|
|
485
|
-
or Firecrawl. Ships with `qa_stories` / `qa_story_runs` /
|
|
486
|
-
`qa_story_evidence` schema, the `qa-story-runner` edge function, a
|
|
487
|
-
pluggable browser-provider abstraction, and the full admin UI
|
|
488
|
-
(`QaCoveragePage` + `QaCoverageTile`).
|
|
489
|
-
|
|
490
|
-
### Rewards program (minor — core / web / react / react-native)
|
|
491
|
-
|
|
492
|
-
End-user rewards across all layers: configurable point rules,
|
|
493
|
-
GDPR export, Stripe Connect payouts (Enterprise-gated), multi-step
|
|
494
|
-
quests, SDK activity batching + tier badges, MCP catalog tools
|
|
495
|
-
(`list_top_contributors`, `award_bonus_points`, `set_tier`).
|
|
496
|
-
|
|
497
|
-
### Closed-loop evolution — CLI + MCP (minor)
|
|
498
|
-
- **`mushi sync-lessons`** — pulls promoted lessons from
|
|
499
|
-
`/v1/admin/lessons` and writes `.mushi/lessons.json` into the
|
|
500
|
-
connected repo (supports `--dry-run` and `--json`). Designed for
|
|
501
|
-
CI and scheduled refresh PRs.
|
|
502
|
-
- **MCP** — `lessons.query(diff_text, max_tokens)` tool for
|
|
503
|
-
token-budget-ranked lesson injection into agent / PR-review flows;
|
|
504
|
-
expanded catalog surface for Migration Hub and closed-loop resources.
|
|
505
|
-
|
|
506
|
-
### Native parity (Capacitor minor; iOS/Android via Cocoapods/Maven)
|
|
507
|
-
|
|
508
|
-
Capacitor re-exports `addBreadcrumb` / `getBreadcrumbs` and the 0.4.0
|
|
509
|
-
native parity modules (BreadcrumbCollector, ProactiveDetector,
|
|
510
|
-
PIIScrubber, ExceptionNormaliser). iOS/Android SDKs ship at 0.4.0 via
|
|
511
|
-
native package managers — not npm.
|
|
512
|
-
|
|
513
|
-
### Plugin packaging (patch)
|
|
514
|
-
|
|
515
|
-
PR #98 fixed six plugin packages that shipped with `workspace:*`
|
|
516
|
-
instead of `workspace:^`, which broke `npm install` for end users.
|
|
517
|
-
|
|
518
|
-
### Patch surfaces
|
|
519
|
-
- `@mushi-mushi/{vue,svelte,angular}` — re-export headless trigger helpers.
|
|
520
|
-
- `@mushi-mushi/plugin-sentry` — expanded inbound adapter surface.
|
|
521
|
-
- `@mushi-mushi/plugin-sdk` — event schema extensions for rewards +
|
|
522
|
-
experiment hooks.
|
|
523
|
-
|
|
524
|
-
### Server + admin (not in this npm release)
|
|
525
|
-
|
|
526
|
-
The following ship via Supabase Edge Functions + admin deploy, not npm:
|
|
527
|
-
- Closed-loop Phases 1–6: mistake clustering, releases + credits, PDCA
|
|
528
|
-
iterate loop, contract drift walker, A/B experiments, anomaly detection,
|
|
529
|
-
`/cost` panel.
|
|
530
|
-
- Beta banner + structured project-create error UX + personal-org
|
|
531
|
-
bootstrap on signup.
|
|
532
|
-
- Seven new admin tabs: `/lessons`, `/releases`, `/iterate`, `/drift`,
|
|
533
|
-
`/experiments`, `/anomalies`, `/cost`.
|
|
534
|
-
- Docs: `closed-loop.mdx`, `EvolutionDiagram`, `LoopComparison`.
|
|
535
|
-
- `SELF_HOSTED.md` updated with `mushi.edge_function_post()` cron
|
|
536
|
-
patterns (replaces broken `current_setting('app.settings.*')` GUCs).
|
|
537
|
-
|
|
538
|
-
### Patch Changes
|
|
539
|
-
|
|
540
|
-
- Updated dependencies [506df78]
|
|
541
|
-
- @mushi-mushi/core@1.2.0
|
|
542
|
-
|
|
543
|
-
## 0.11.0
|
|
544
|
-
|
|
545
|
-
### Minor Changes
|
|
546
|
-
|
|
547
|
-
- 59627e2: Release the full SDK + closed-loop evolution backlog since v0.5.0
|
|
548
|
-
(`cf27d81`, 2026-05-10). Covers headless SDK, QA Coverage Suite,
|
|
549
|
-
rewards program, native 0.4.0 parity, closed-loop Phases 0–6, and
|
|
550
|
-
operator UX hardening for beta users.
|
|
551
|
-
|
|
552
|
-
### Headless SDK (minor — core / web / react / react-native)
|
|
553
|
-
|
|
554
|
-
`MushiTrigger` (React + React Native) and `MushiAttach` (React) — wrap
|
|
555
|
-
any element or DOM selector to trigger the Mushi widget without the
|
|
556
|
-
floating button. The matching `SdkInstallCard` in the console now
|
|
557
|
-
generates copy/paste snippets for both patterns.
|
|
558
|
-
|
|
559
|
-
### QA Coverage Suite (minor — core / web)
|
|
560
|
-
|
|
561
|
-
Automated user-story tests run on cron through Playwright, Browserbase,
|
|
562
|
-
or Firecrawl. Ships with `qa_stories` / `qa_story_runs` /
|
|
563
|
-
`qa_story_evidence` schema, the `qa-story-runner` edge function, a
|
|
564
|
-
pluggable browser-provider abstraction, and the full admin UI
|
|
565
|
-
(`QaCoveragePage` + `QaCoverageTile`).
|
|
566
|
-
|
|
567
|
-
### Rewards program (minor — core / web / react / react-native)
|
|
568
|
-
|
|
569
|
-
End-user rewards across all layers: configurable point rules,
|
|
570
|
-
GDPR export, Stripe Connect payouts (Enterprise-gated), multi-step
|
|
571
|
-
quests, SDK activity batching + tier badges, MCP catalog tools
|
|
572
|
-
(`list_top_contributors`, `award_bonus_points`, `set_tier`).
|
|
573
|
-
|
|
574
|
-
### Closed-loop evolution — CLI + MCP (minor)
|
|
575
|
-
- **`mushi sync-lessons`** — pulls promoted lessons from
|
|
576
|
-
`/v1/admin/lessons` and writes `.mushi/lessons.json` into the
|
|
577
|
-
connected repo (supports `--dry-run` and `--json`). Designed for
|
|
578
|
-
CI and scheduled refresh PRs.
|
|
579
|
-
- **MCP** — `lessons.query(diff_text, max_tokens)` tool for
|
|
580
|
-
token-budget-ranked lesson injection into agent / PR-review flows;
|
|
581
|
-
expanded catalog surface for Migration Hub and closed-loop resources.
|
|
582
|
-
|
|
583
|
-
### Native parity (Capacitor minor; iOS/Android via Cocoapods/Maven)
|
|
584
|
-
|
|
585
|
-
Capacitor re-exports `addBreadcrumb` / `getBreadcrumbs` and the 0.4.0
|
|
586
|
-
native parity modules (BreadcrumbCollector, ProactiveDetector,
|
|
587
|
-
PIIScrubber, ExceptionNormaliser). iOS/Android SDKs ship at 0.4.0 via
|
|
588
|
-
native package managers — not npm.
|
|
589
|
-
|
|
590
|
-
### Hermes compatibility fix (react-native — patch within minor)
|
|
591
|
-
|
|
592
|
-
`packages/react-native/src/provider.tsx` — replaced `new Function()` with
|
|
593
|
-
dynamic `import()` (which Hermes 0.84 rejects with `SyntaxError`) with
|
|
594
|
-
`require()` wrapped in `try/catch` for both `@react-native-community/netinfo`
|
|
595
|
-
and `expo-sensors`. The `shake` and `network` auto-triggers now work correctly
|
|
596
|
-
on all Hermes-based RN apps. Companion admin-console improvements:
|
|
597
|
-
- `apps/admin/src/lib/frameworkDetect.ts` (new) — paste-your-`package.json`
|
|
598
|
-
framework + monorepo detector (React, Vue, Svelte, RN/Expo/Capacitor,
|
|
599
|
-
Angular, Vanilla; npm/yarn/pnpm workspaces, Turborepo, Nx, Lerna, Rush)
|
|
600
|
-
with confidence scoring, ELI5 guidance, and Hermes version warnings.
|
|
601
|
-
- `SdkInstallCard.tsx` — integrates the detector: framework tab is auto-
|
|
602
|
-
selected and monorepo install guidance is surfaced on paste.
|
|
603
|
-
- `McpPage.tsx` — collapsible monorepo detector panel for workspace-scoped
|
|
604
|
-
`mushi-mcp` install guidance.
|
|
605
|
-
- `ProjectsPage.tsx` — copyable `MUSHI_PROJECT_ID` chip under each project
|
|
606
|
-
card (answers the #1 "where do I find my project ID?" support question).
|
|
607
|
-
- `packages/mcp/src/index.ts` — actionable warning when `MUSHI_PROJECT_ID`
|
|
608
|
-
is not set, with direct link to the console.
|
|
609
|
-
|
|
610
|
-
### Plugin packaging (patch)
|
|
611
|
-
|
|
612
|
-
PR #98 fixed six plugin packages that shipped with `workspace:*`
|
|
613
|
-
instead of `workspace:^`, which broke `npm install` for end users.
|
|
614
|
-
|
|
615
|
-
### Patch surfaces
|
|
616
|
-
- `@mushi-mushi/{vue,svelte,angular}` — re-export headless trigger helpers.
|
|
617
|
-
- `@mushi-mushi/plugin-sentry` — expanded inbound adapter surface.
|
|
618
|
-
- `@mushi-mushi/plugin-sdk` — event schema extensions for rewards +
|
|
619
|
-
experiment hooks.
|
|
620
|
-
|
|
621
|
-
### Server + admin (not in this npm release)
|
|
622
|
-
|
|
623
|
-
The following ship via Supabase Edge Functions + admin deploy, not npm:
|
|
624
|
-
- Closed-loop Phases 1–6: mistake clustering, releases + credits, PDCA
|
|
625
|
-
iterate loop, contract drift walker, A/B experiments, anomaly detection,
|
|
626
|
-
`/cost` panel.
|
|
627
|
-
- Beta banner + structured project-create error UX + personal-org
|
|
628
|
-
bootstrap on signup.
|
|
629
|
-
- Seven new admin tabs: `/lessons`, `/releases`, `/iterate`, `/drift`,
|
|
630
|
-
`/experiments`, `/anomalies`, `/cost`.
|
|
631
|
-
- Docs: `closed-loop.mdx`, `EvolutionDiagram`, `LoopComparison`.
|
|
632
|
-
- `SELF_HOSTED.md` updated with `mushi.edge_function_post()` cron
|
|
633
|
-
patterns (replaces broken `current_setting('app.settings.*')` GUCs).
|
|
634
|
-
|
|
635
|
-
### Patch Changes
|
|
636
|
-
|
|
637
|
-
- Updated dependencies [59627e2]
|
|
638
|
-
- @mushi-mushi/core@1.1.0
|
|
639
|
-
|
|
640
|
-
## 0.8.2
|
|
641
|
-
|
|
642
|
-
### Patch Changes
|
|
643
|
-
|
|
644
|
-
- Updated dependencies [84118af]
|
|
645
|
-
- @mushi-mushi/core@1.0.0
|
|
646
|
-
|
|
647
|
-
## 0.8.1
|
|
648
|
-
|
|
649
|
-
### Patch Changes
|
|
650
|
-
|
|
651
|
-
- Updated dependencies [5e04203]
|
|
652
|
-
- @mushi-mushi/core@0.9.0
|
|
653
|
-
|
|
654
|
-
## 0.8.0
|
|
655
|
-
|
|
656
|
-
### Minor Changes
|
|
657
|
-
|
|
658
|
-
- ef0036d: Ship SDK dogfood hardening and a two-way reporter channel.
|
|
659
|
-
- Ignore Mushi's own config/report/notification requests in network capture and proactive API cascade detection.
|
|
660
|
-
- Add `Mushi.diagnose()` for endpoint, CSP, widget, capture, runtime-config, and SDK-version health checks.
|
|
661
|
-
- Send `sdkPackage` and `sdkVersion` with reports, expose `/v1/sdk/latest-version`, and surface outdated SDK state in the widget.
|
|
662
|
-
- Add `widget.anchor`, deployment presets, privacy screenshot masks/blocks, screenshot removal, `setScreen()`, and normalized repro timelines.
|
|
663
|
-
- Add reporter history/reply APIs so the widget can show report status, developer replies, and reporter responses.
|
|
664
|
-
- Add Capacitor bottom-dock trigger inset presets.
|
|
665
|
-
|
|
666
|
-
### Patch Changes
|
|
667
|
-
|
|
668
|
-
- Updated dependencies [ef0036d]
|
|
669
|
-
- @mushi-mushi/core@0.8.0
|
|
670
|
-
|
|
671
|
-
## 0.7.0
|
|
672
|
-
|
|
673
|
-
### Minor Changes
|
|
674
|
-
|
|
675
|
-
- 15462c8: Add production-grade trigger controls for embedded apps: manual and attach modes, runtime show/hide APIs, edge-tab and smart-hide behavior, configurable insets, and React Native custom launcher/shake support.
|
|
676
|
-
|
|
677
|
-
### Patch Changes
|
|
678
|
-
|
|
679
|
-
- Updated dependencies [15462c8]
|
|
680
|
-
- @mushi-mushi/core@0.7.0
|
|
681
|
-
|
|
682
|
-
## 0.3.2
|
|
683
|
-
|
|
684
|
-
### Patch Changes
|
|
685
|
-
|
|
686
|
-
- Updated dependencies [48858bb]
|
|
687
|
-
- @mushi-mushi/core@0.5.0
|
|
688
|
-
|
|
689
|
-
## 0.3.1
|
|
690
|
-
|
|
691
|
-
### Patch Changes
|
|
692
|
-
|
|
693
|
-
- d4d6933: Growth plan — storefronts pass (2026-04-24)
|
|
694
|
-
|
|
695
|
-
Phase 0 of the zero-budget 90-day growth plan: polishing the npm pages and
|
|
696
|
-
README so they convert attention into stars and installs. No behaviour changes;
|
|
697
|
-
metadata only.
|
|
698
|
-
- **npm keyword arrays expanded across all 14 publishable packages.** Added
|
|
699
|
-
discoverability terms developers actually type into npm search:
|
|
700
|
-
`user-report`, `feedback-widget`, `sentry-alternative`, `auto-fix`,
|
|
701
|
-
`llm-ops`, `ai-agent`, plus framework-appropriate specifics (e.g.
|
|
702
|
-
`claude-code`, `codex`, `copilot` on `@mushi-mushi/mcp`). Keyword counts
|
|
703
|
-
after the pass: 14–32 per package.
|
|
704
|
-
- **README star CTA footer.** Added the bilingual _"もしMushi-chanのお役に立てたら、
|
|
705
|
-
⭐ をひとつ"_ line with links to the stargazers page, issue tracker, and
|
|
706
|
-
Bluesky handle. Research says a single explicit star ask converts 2–5% of
|
|
707
|
-
lurkers.
|
|
708
|
-
- **New `docs/marketing/` folder** with the full growth kit: `VOICE.md`,
|
|
709
|
-
`STOREFRONTS.md`, `snippets.md` (drafted hooks, Show HN, Reddit, LinkedIn,
|
|
710
|
-
dev.to, Product Hunt, YouTube Short), `launch-week.md`, `content-plan.md`
|
|
711
|
-
(8 compounding blog post outlines), `drip-channels.md` (11 awesome-lists,
|
|
712
|
-
9 newsletter targets, Discord / Slack etiquette), `social-cadence.md`
|
|
713
|
-
(Bluesky / X weekly rhythm), and `measurement.md` (the 5 numbers to watch
|
|
714
|
-
each Friday).
|
|
715
|
-
|
|
716
|
-
No SDK surface or runtime changes — safe to land before any launch week.
|
|
717
|
-
|
|
718
|
-
- Updated dependencies [d4d6933]
|
|
719
|
-
- @mushi-mushi/core@0.4.1
|
|
720
|
-
|
|
721
|
-
## 0.3.0
|
|
722
|
-
|
|
723
|
-
### Minor Changes
|
|
724
|
-
|
|
725
|
-
- 71b2fe8: Full-PDCA dogfood hardening wave (2026-04-22).
|
|
726
|
-
|
|
727
|
-
Web SDK:
|
|
728
|
-
- New `@mushi-mushi/web/test-utils` entry-point exposing `triggerBug()`,
|
|
729
|
-
`openReport()`, and `waitForQueueDrain()` for deterministic Playwright
|
|
730
|
-
round-trips. Import from `@mushi-mushi/web/test-utils` — zero cost at
|
|
731
|
-
runtime for production bundles.
|
|
732
|
-
- Tightened size-limit budget to 15 KB gzipped (previously 30 KB
|
|
733
|
-
uncompressed). No API changes.
|
|
734
|
-
|
|
735
|
-
Core SDK:
|
|
736
|
-
- No code changes; bumped for consistency with the `web` SDK so
|
|
737
|
-
downstream frameworks pick up the new test-utils exports transitively.
|
|
738
|
-
|
|
739
|
-
Framework SDKs (react / vue / svelte / angular / react-native /
|
|
740
|
-
capacitor / node):
|
|
741
|
-
- No code changes. Coupled minor bump so the workspace stays on a single
|
|
742
|
-
MAJOR.MINOR track; patch-only drift across adapters has historically
|
|
743
|
-
caused dependency-resolution confusion for customers.
|
|
744
|
-
|
|
745
|
-
Launcher:
|
|
746
|
-
- Rewired the Claude Code agent adapter behind the new
|
|
747
|
-
`MUSHI_ENABLE_CLAUDE_CODE_AGENT=1` flag and wired it up to the local
|
|
748
|
-
`claude` CLI (binary path overridable via `MUSHI_CLAUDE_CODE_BIN`).
|
|
749
|
-
The README "Status" column now reflects "working — opt-in".
|
|
750
|
-
|
|
751
|
-
### Patch Changes
|
|
752
|
-
|
|
753
|
-
- Updated dependencies [71b2fe8]
|
|
754
|
-
- @mushi-mushi/core@0.4.0
|
|
755
|
-
|
|
756
|
-
## 0.2.3
|
|
757
|
-
|
|
758
|
-
### Patch Changes
|
|
759
|
-
|
|
760
|
-
- 6e01dc7: Ship `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, and `SECURITY.md` inside every published tarball, and enable npm provenance (sigstore-signed build attestation) for every publishable package. Both changes target package-health signals surfaced by Snyk (`security.snyk.io/package/npm/<name>`) and Socket (`socket.dev/npm/package/<name>`):
|
|
761
|
-
- **Community files in-tarball.** Snyk and Socket only credit community signals when the files are shipped inside the npm tarball, not when they live at the monorepo root. A pre-commit guard (`scripts/sync-community-files.mjs --check`) and the `pnpm release` script now auto-sync from the canonical root copies to prevent drift.
|
|
762
|
-
- **`publishConfig.provenance: true` everywhere.** The Release workflow already set `NPM_CONFIG_PROVENANCE=true` at the job level, but per-package `publishConfig` is the explicit signal Socket reads for its Supply Chain score. `@mushi-mushi/cli`, `create-mushi-mushi`, and `mushi-mushi` already had it; the remaining 20 publishable packages now match.
|
|
763
|
-
- **`.github/FUNDING.yml`** points at GitHub Sponsors so the repo exposes a funding signal to scanners and the GitHub UI.
|
|
764
|
-
|
|
765
|
-
No runtime behaviour changes. No breaking changes for consumers.
|
|
766
|
-
|
|
767
|
-
- Updated dependencies [6e01dc7]
|
|
768
|
-
- @mushi-mushi/core@0.3.1
|
|
769
|
-
|
|
770
|
-
## 0.2.2
|
|
771
|
-
|
|
772
|
-
### Patch Changes
|
|
773
|
-
|
|
774
|
-
- Updated dependencies [81336e9]
|
|
775
|
-
- @mushi-mushi/core@0.3.0
|
|
776
|
-
|
|
777
|
-
## 0.2.1
|
|
778
|
-
|
|
779
|
-
### Patch Changes
|
|
780
|
-
|
|
781
|
-
- fc5c58e: **One-command setup wizard + npm discoverability sweep.**
|
|
782
|
-
- **`@mushi-mushi/cli` `0.3.0`**: New `mushi init` command — interactive wizard built on `@clack/prompts` that auto-detects framework (Next, Nuxt, SvelteKit, Angular, Expo, Capacitor, plain React/Vue/Svelte, vanilla), package manager (npm/pnpm/yarn/bun), installs the right SDK, writes env vars with the right prefix (`NEXT_PUBLIC_`, `NUXT_PUBLIC_`, `VITE_`), warns when `.env.local` isn't gitignored, and prints the framework-specific snippet. Idempotent: never overwrites existing `MUSHI_*` env vars. Exposes new `./init` and `./detect` subpath exports for downstream packages.
|
|
783
|
-
- **`mushi-mushi` `0.3.0` (NEW, unscoped)**: One-command launcher — `npx mushi-mushi` runs the wizard. Gives the SDK a single brand entry point on npm so users don't have to know to look under `@mushi-mushi/*` first.
|
|
784
|
-
- **`create-mushi-mushi` `0.3.0` (NEW)**: `npm create mushi-mushi` — same wizard via the standard npm-create convention.
|
|
785
|
-
- **All 16 published packages**: keyword sweep — every package now ships `mushi-mushi` plus its framework-specific terms (`react`, `next.js`, `vue`, `nuxt`, `svelte`, `sveltekit`, `angular`, `react-native`, `expo`, `capacitor`, `ionic`, etc.) plus product terms (`session-replay`, `screenshot`, `shake-to-report`, `sentry-companion`, `error-tracking`, `ai-triage`) for npm search ranking.
|
|
786
|
-
- **All SDK READMEs**: discoverability cross-link header at the top — points users to the wizard and to every other framework SDK so people who land on `@mushi-mushi/react` can find `@mushi-mushi/vue` and vice-versa.
|
|
787
|
-
- **Root README**: quick-start now leads with `npx mushi-mushi`, with the manual install path documented as the fallback. Packages table gains a row for the launcher.
|
|
788
|
-
|
|
789
|
-
- Updated dependencies [fc5c58e]
|
|
790
|
-
- Updated dependencies [41b6aa7]
|
|
791
|
-
- @mushi-mushi/core@0.2.1
|
|
792
|
-
|
|
793
|
-
## 0.2.0
|
|
794
|
-
|
|
795
|
-
### Minor Changes
|
|
796
|
-
|
|
797
|
-
- 7567cee: # v0.6.0 — hardening + agentic-fix orchestration
|
|
798
|
-
|
|
799
|
-
This release closes the highest-priority gaps between the V5 whitepaper and the
|
|
800
|
-
running code. It is the first of four releases on the [V5.3 roadmap](../MushiMushi_Whitepaper_V5.md#appendix-c-implementation-roadmap)
|
|
801
|
-
and the breaking-change surface is **zero** for SDK consumers.
|
|
802
|
-
|
|
803
|
-
## Highlights
|
|
804
|
-
- **Vision air-gap**: Stage-2 vision analysis now sees the screenshot only with
|
|
805
|
-
trusted metadata; visible text in the image is captured separately and
|
|
806
|
-
flagged so prompt-injection attempts (e.g. an attacker writing "ignore all
|
|
807
|
-
previous instructions" inside their screenshot) cannot influence
|
|
808
|
-
classification. (V5.3 §2.3.2)
|
|
809
|
-
- **Judge OpenAI fallback**: `judge-batch` now falls back to OpenAI
|
|
810
|
-
(`gpt-4.1` by default) when Anthropic is unavailable, restoring the
|
|
811
|
-
self-improvement loop during outages. Configure via
|
|
812
|
-
`project_settings.judge_fallback_provider`. (V5.3 §2.7)
|
|
813
|
-
- **Blast-radius MV refresh**: `blast_radius_cache` is now refreshed every
|
|
814
|
-
15 minutes via `pg_cron` with a `REFRESH MATERIALIZED VIEW CONCURRENTLY`
|
|
815
|
-
guarded by an advisory lock. Per-project graph-edge pruning runs nightly.
|
|
816
|
-
(V5.3 §2.4)
|
|
817
|
-
- **RAG codebase indexer**: GitHub App webhook + `mushi index <path>` CLI
|
|
818
|
-
fallback for non-GitHub git hosts. Symbol-aware chunking (TS/TSX, JS/JSX,
|
|
819
|
-
Python, Go, Rust). (V5.3 §2.3.4)
|
|
820
|
-
- **Fix dispatch end-to-end**: Admin can dispatch fixes from the report detail
|
|
821
|
-
page; status streams over Hono `streamSSE` with Bearer auth and
|
|
822
|
-
CVE-2026-29085-safe sanitization. (V5.3 §2.10, §2.16)
|
|
823
|
-
- **Sandbox provider abstraction**: `local-noop` (tests) and `e2b` (managed
|
|
824
|
-
sandbox) implementations behind a `SandboxProvider` interface; per-event
|
|
825
|
-
audit log in `fix_sandbox_events`. The orchestrator refuses `local-noop` in
|
|
826
|
-
production. (V5.3 §2.10)
|
|
827
|
-
- **True MCP adapter**: `McpFixAgent` speaks JSON-RPC 2.0 with `tools/call`
|
|
828
|
-
and supports SEP-1686 long-running Tasks. The misnamed `generic_mcp` agent
|
|
829
|
-
is renamed to `rest_fix_worker`; the old export is kept as a deprecated
|
|
830
|
-
alias for one more minor. (V5.3 §2.10)
|
|
831
|
-
- **BYOK schema**: `byok_anthropic_key_ref` / `byok_openai_key_ref` columns
|
|
832
|
-
with audit log; resolver helper falls back to env when no BYOK is set.
|
|
833
|
-
End-to-end wiring lands in v0.8.0. (V5.3 §2.18)
|
|
834
|
-
|
|
835
|
-
## Cross-cutting fixes
|
|
836
|
-
- Widget min description length raised from 5 to 20 chars (server zod schema
|
|
837
|
-
matched). Empirically removes ~30% of unactionable reports.
|
|
838
|
-
- `recordPromptResult` now scopes by `(project_id, stage, version)` so two
|
|
839
|
-
projects sharing a version label cannot corrupt each other's running
|
|
840
|
-
averages. New unique index enforces this.
|
|
841
|
-
- Cloud URL: SDK default endpoint now points at the live Supabase Cloud
|
|
842
|
-
function URL instead of the unbound `api.mushimushi.dev` placeholder.
|
|
843
|
-
Self-hosted users MUST override `apiEndpoint` (no behaviour change).
|
|
844
|
-
- README updated to honestly reflect what's shipped vs. scaffolded.
|
|
845
|
-
|
|
846
|
-
## Migrations included
|
|
847
|
-
|
|
848
|
-
`20260418000000_vision_air_gap`, `20260418000100_judge_fallback`,
|
|
849
|
-
`20260418000200_blast_radius_mv_refresh`, `20260418000300_codebase_indexer`,
|
|
850
|
-
`20260418000400_fix_dispatch_jobs`, `20260418000500_sandbox_audit`,
|
|
851
|
-
`20260418000600_mcp_agent_enum`, `20260418000700_prompt_versions_unique`,
|
|
852
|
-
`20260418000800_byok_keys`.
|
|
853
|
-
|
|
854
|
-
## Breaking changes
|
|
855
|
-
|
|
856
|
-
None for SDK consumers. Operators with custom `autofix_agent = 'generic_mcp'`
|
|
857
|
-
should migrate to `'rest_fix_worker'` (deprecated alias still works through v0.7).
|
|
858
|
-
|
|
859
|
-
- 7567cee: # v0.7.0 — on-device classification, real-time triage, AG-UI, fine-tune pipeline, intelligence reports, AGE phase 1
|
|
860
|
-
|
|
861
|
-
focuses on intelligence and operator UX: cheaper inference (move junk
|
|
862
|
-
filtering on-device), live collaboration on the report queue, a typed
|
|
863
|
-
agent↔frontend streaming protocol, and a real fine-tune lifecycle.
|
|
864
|
-
|
|
865
|
-
This release is **non-breaking** for SDK consumers. New surface only.
|
|
866
|
-
|
|
867
|
-
## Highlights
|
|
868
|
-
- **On-device pre-classifier** (`@mushi-mushi/wasm-classifier`, public 0.1.0):
|
|
869
|
-
ships both a zero-dependency heuristic mode and an ONNX mode (lazy-loads
|
|
870
|
-
`onnxruntime-web` only when wired up). Plugs into `submitReport` via
|
|
871
|
-
`preFilter.wasmClassifier`. Cuts LLM cost by ~25-40% on noisy widgets and
|
|
872
|
-
keeps obvious junk on-device. (V5.3 §2.13)
|
|
873
|
-
- **Real-time collaboration on reports**: `report_comments` (threaded,
|
|
874
|
-
optionally visible to the reporter) and `report_presence` (15-second TTL,
|
|
875
|
-
pruned via `pg_cron`). Admin `ReportDetailPage` now shows presence badges
|
|
876
|
-
and a comments panel powered by Supabase Realtime. (V5.3 §2.14)
|
|
877
|
-
- **AG-UI streaming protocol** (v0.4): the fix-dispatch SSE stream now emits
|
|
878
|
-
typed envelopes (`run.started`, `run.status`, `run.tool_call`,
|
|
879
|
-
`run.completed`, `run.failed`, `run.heartbeat`) alongside the legacy
|
|
880
|
-
`event: status` frames. Backwards compatible. CVE-2026-29085 sanitization
|
|
881
|
-
re-validated for the structured envelope. (V5.3 §2.15)
|
|
882
|
-
- **Fine-tune pipeline**: extended `fine_tuning_jobs` with
|
|
883
|
-
`export_format`, `validation_report`, `promote_to_stage` and friends.
|
|
884
|
-
New helpers `gatherTrainingSamples`, `renderJsonl`, `validateTrainedModel`,
|
|
885
|
-
`promoteFineTunedModel`. New REST endpoints
|
|
886
|
-
`POST /v1/admin/fine-tuning/:id/{export,validate,promote,reject}`.
|
|
887
|
-
Admin UI surfaces the full pipeline stepper with PII-leakage and accuracy
|
|
888
|
-
gates before promote is allowed. (V5.3 §2.15 self-improvement loop)
|
|
889
|
-
- **Bug intelligence reports**: weekly digests are now persisted to
|
|
890
|
-
`intelligence_reports`, listable via `GET /v1/admin/intelligence`, and
|
|
891
|
-
exportable as PDF via the browser's native print pipeline (zero new
|
|
892
|
-
npm dependencies). New admin page surfaces history + a printable HTML
|
|
893
|
-
preview per week. (V5.3 §2.16)
|
|
894
|
-
- **Opt-in cross-customer benchmarking**: `intelligence_benchmarks_mv`
|
|
895
|
-
enforces k-anonymity ≥ 5 contributing projects per bucket. Per-project
|
|
896
|
-
opt-in toggle in Settings; off by default. No project IDs, names, or PII
|
|
897
|
-
leak across tenants. Refreshed nightly via `pg_cron`. (V5.3 §2.16)
|
|
898
|
-
- **Apache AGE parallel-write graph backend (Phase 1)**: opt-in
|
|
899
|
-
`graph_backend = 'sql_age_parallel'` setting mirrors every node/edge into
|
|
900
|
-
AGE through SECURITY DEFINER helpers. AGE failures are logged, never
|
|
901
|
-
fatal. New `mushi_age_snapshot_drift()` and admin
|
|
902
|
-
`GET /v1/admin/graph-backend/status` for drift visibility. SQL stays
|
|
903
|
-
authoritative; cutover is reserved for Phase 3 in V5.5. (V5.3 §2.17)
|
|
904
|
-
|
|
905
|
-
## Migrations included
|
|
906
|
-
|
|
907
|
-
`20260418000900_realtime_collab`, `20260418001000_finetune_pipeline`,
|
|
908
|
-
`20260418001100_intelligence_reports`, `20260418001200_age_parallel_write`.
|
|
909
|
-
|
|
910
|
-
## New dependencies
|
|
911
|
-
- `@mushi-mushi/wasm-classifier@0.1.0` — published as a separate package so
|
|
912
|
-
consumers who don't want the ONNX runtime in their bundle can stay on the
|
|
913
|
-
heuristic mode.
|
|
914
|
-
|
|
915
|
-
## Breaking changes
|
|
916
|
-
|
|
917
|
-
None.
|
|
918
|
-
|
|
919
|
-
## Operator notes
|
|
920
|
-
- AGE parallel-write is **disabled by default** and requires the AGE
|
|
921
|
-
extension to be installed in your Postgres. Managed Supabase Postgres
|
|
922
|
-
does not currently ship AGE; the helpers degrade to graceful no-ops.
|
|
923
|
-
See `packages/server/supabase/functions/_shared/age-graph.README.md`
|
|
924
|
-
for the rollout phases and acceptance criteria for Phase 2 / Phase 3.
|
|
925
|
-
- Cross-customer benchmarking opt-in writes a timestamp + the user id who
|
|
926
|
-
flipped the switch to `project_settings.benchmarking_optin_*`. There is
|
|
927
|
-
no automatic opt-in based on contract type — it is always explicit owner
|
|
928
|
-
action.
|
|
929
|
-
- The fine-tune validation gate refuses promotion if any of the following
|
|
930
|
-
hold on the latest validation report: `accuracy < 0.85`, `driftScore > 0.25`,
|
|
931
|
-
or `piiLeakageDetected = true`. Override requires re-running validation
|
|
932
|
-
against a corrected eval set; there is intentionally no force-promote.
|
|
933
|
-
|
|
934
|
-
- 7567cee: # v0.8.0 — mobile parity, A2A discovery, SOC 2 readiness, residency, BYO storage, BYOK
|
|
935
|
-
|
|
936
|
-
closes the platform-parity gap with the V5.3 whitepaper. Mobile gets
|
|
937
|
-
first-class native SDKs, the public agent surface becomes A2A-discoverable,
|
|
938
|
-
and customers gain the operational levers (residency, storage, keys, audit
|
|
939
|
-
evidence) needed to run Mushi in regulated environments.
|
|
940
|
-
|
|
941
|
-
This release is **non-breaking** for existing SDK consumers. New surface only.
|
|
942
|
-
|
|
943
|
-
## Highlights
|
|
944
|
-
- **Native iOS SDK** (`MushiMushi`, SwiftPM + CocoaPods): shake-to-report
|
|
945
|
-
widget, offline queue with SQLite-backed retry, automatic device context
|
|
946
|
-
capture, screenshot capture via `UIGraphicsImageRenderer`, optional Sentry
|
|
947
|
-
bridge for unified breadcrumbs, and a macOS GitHub Actions matrix.
|
|
948
|
-
(V5.3 §2.18)
|
|
949
|
-
- **Native Android SDK** (`dev.mushimushi:sdk`, Maven Central + AAR):
|
|
950
|
-
feature-equivalent to the iOS SDK — shake detection via `SensorManager`,
|
|
951
|
-
bottom-sheet capture UI, `OfflineQueue` with `WorkManager`-style retry,
|
|
952
|
-
Sentry breadcrumb bridge, and Android CI. (V5.3 §2.18)
|
|
953
|
-
- **Flutter SDK** (`mushi_mushi` on pub.dev): pure-Dart with platform
|
|
954
|
-
channel bridges, `RepaintBoundary`-driven screenshot capture, shake
|
|
955
|
-
detection via `sensors_plus`, and reuses the same offline-queue
|
|
956
|
-
contract as the JS Core SDK. (V5.3 §2.18)
|
|
957
|
-
- **Capacitor plugin** (`@mushi-mushi/capacitor`): web fallback delegates
|
|
958
|
-
to `@mushi-mushi/core`; native iOS/Android delegate to the standalone
|
|
959
|
-
native SDKs so a hybrid app gets the same shake/screenshot UX as a
|
|
960
|
-
native app. (V5.3 §2.18)
|
|
961
|
-
- **A2A Agent Card discovery**: public endpoints
|
|
962
|
-
`GET /.well-known/agent-card` and `GET /v1/agent-card` advertise the
|
|
963
|
-
Mushi agent's identity, skills, supported A2A versions, MCP transport
|
|
964
|
-
details and auth requirements per the A2A protocol. Other agents can
|
|
965
|
-
now negotiate with the Mushi platform without out-of-band config.
|
|
966
|
-
(V5.3 §2.19)
|
|
967
|
-
- **SOC 2 Type 1 readiness module**: new tables
|
|
968
|
-
`project_retention_policies`, `data_subject_requests`, `soc2_evidence`,
|
|
969
|
-
the `mushi_apply_retention()` and `mushi_rls_coverage_snapshot()`
|
|
970
|
-
SECURITY DEFINER helpers, a nightly `soc2-evidence` Edge Function, and
|
|
971
|
-
a new admin **Compliance** page that surfaces the latest control
|
|
972
|
-
evidence (CC6.1, CC6.7, CC7.2, CC8.1, A1.2), DSAR queue, and per-table
|
|
973
|
-
retention policies. (V5.3 §2.20)
|
|
974
|
-
- **Data residency regions (US / EU / JP)**: opt-in pinning per project,
|
|
975
|
-
cluster-aware `regionRouter` middleware that 307-redirects cross-region
|
|
976
|
-
calls, an SDK-side `resolveRegionEndpoint` that primes a localStorage
|
|
977
|
-
cache so subsequent calls go straight to the right cluster, and a
|
|
978
|
-
public `region_routing` lookup table. The US cluster remains the
|
|
979
|
-
catalog of record for project metadata. (V5.3 §2.21)
|
|
980
|
-
- **BYO Storage abstraction** (`s3` / `r2` / `gcs` / `minio` / `supabase`):
|
|
981
|
-
per-project `project_storage_settings`, a vault-backed credential model
|
|
982
|
-
(no raw keys in DB), a zero-dependency `StorageAdapter` with inline
|
|
983
|
-
SigV4 and GCS JWT signing, a healthcheck endpoint, and a new admin
|
|
984
|
-
**Storage** page. Screenshots are now uploaded through the adapter
|
|
985
|
-
end-to-end. (V5.3 §2.22)
|
|
986
|
-
- **BYOK Anthropic / OpenAI keys end-to-end**: `resolveLlmKey` now
|
|
987
|
-
flows through `fast-filter`, `classify-report` (text + vision), and
|
|
988
|
-
`judge-batch`. Every LLM invocation records `key_source` (`byok`
|
|
989
|
-
vs `env`) for billing reconciliation and SOC 2 evidence. New admin
|
|
990
|
-
endpoints `GET / PUT / DELETE /v1/admin/byok/:provider` write keys
|
|
991
|
-
to Supabase Vault via SECURITY DEFINER `vault_store_secret`, never
|
|
992
|
-
to plain DB columns. New **Settings → LLM Keys** panel exposes
|
|
993
|
-
rotation, clearing, and last-used timestamps with `…<last4>` hints.
|
|
994
|
-
(V5.3 §2.23)
|
|
995
|
-
|
|
996
|
-
## Migrations included
|
|
997
|
-
|
|
998
|
-
`20260418001300_soc2_readiness`, `20260418001400_data_residency`,
|
|
999
|
-
`20260418001500_byo_storage`, `20260418001600_byok_key_source`.
|
|
1000
|
-
|
|
1001
|
-
## New packages
|
|
1002
|
-
- `@mushi-mushi/capacitor@0.2.0` — Capacitor plugin published to npm.
|
|
1003
|
-
- `MushiMushi` (iOS) — published to CocoaPods + SwiftPM.
|
|
1004
|
-
- `dev.mushimushi:sdk` (Android) — published to Maven Central.
|
|
1005
|
-
- `mushi_mushi` (Flutter) — published to pub.dev.
|
|
1006
|
-
|
|
1007
|
-
## Breaking changes
|
|
1008
|
-
|
|
1009
|
-
None.
|
|
1010
|
-
|
|
1011
|
-
## Operator notes
|
|
1012
|
-
- **Region rollout**: a single-region deploy continues to work unchanged.
|
|
1013
|
-
To enable EU/JP, deploy a sibling Supabase project per region, set
|
|
1014
|
-
`MUSHI_REGION` on each Edge Function deployment, and CNAME
|
|
1015
|
-
`eu.api.mushimushi.dev` / `jp.api.mushimushi.dev` to the corresponding
|
|
1016
|
-
cluster. SDKs auto-discover via `/v1/region/resolve` — no SDK upgrade
|
|
1017
|
-
required for old clients (they just won't get the redirect optimization).
|
|
1018
|
-
- **BYO Storage**: secrets MUST be loaded into Supabase Vault before being
|
|
1019
|
-
referenced from `project_storage_settings`. The settings table only
|
|
1020
|
-
stores the _vault entry name_; misconfiguration falls back to the
|
|
1021
|
-
cluster default Supabase bucket and surfaces in the storage healthcheck
|
|
1022
|
-
as `degraded` rather than failing reports.
|
|
1023
|
-
- **BYOK**: rotating a key is non-destructive — the old vault entry is
|
|
1024
|
-
overwritten and the next LLM call picks up the new value within one
|
|
1025
|
-
second (settings cache TTL). To force every node to drop its cached
|
|
1026
|
-
resolution, the admin UI's **Clear** button issues a Vault delete plus
|
|
1027
|
-
a settings upsert that nulls the ref column.
|
|
1028
|
-
- **SOC 2**: the nightly evidence sweep and retention sweep are scheduled
|
|
1029
|
-
via `pg_cron`. Verify both jobs are active with
|
|
1030
|
-
`SELECT jobname, schedule FROM cron.job WHERE jobname LIKE 'soc2-%' OR jobname LIKE 'mushi-%';`.
|
|
1031
|
-
- **A2A Agent Card** is intentionally public (no auth) so peer agents can
|
|
1032
|
-
discover Mushi. It advertises auth requirements but never the keys
|
|
1033
|
-
themselves.
|
|
1034
|
-
|
|
1035
|
-
### Patch Changes
|
|
1036
|
-
|
|
1037
|
-
- 7567cee: Republish all SDK packages with resolved dependency specifiers.
|
|
1038
|
-
|
|
1039
|
-
The 0.1.0 tarballs were published with `"@mushi-mushi/core": "workspace:*"` (and similar) baked into `dependencies` because `changeset publish` ran without `changeset version` having rewritten the workspace protocol. Every external `npm install` failed with `EUNSUPPORTEDPROTOCOL`.
|
|
1040
|
-
|
|
1041
|
-
This patch republishes every SDK package with real semver ranges in its dependencies. A new pre-publish guard (`scripts/check-workspace-protocol.mjs`) and post-publish verifier (`scripts/verify-published-tarballs.mjs`) prevent recurrence.
|
|
1042
|
-
|
|
1043
|
-
- Updated dependencies [7567cee]
|
|
1044
|
-
- Updated dependencies [7567cee]
|
|
1045
|
-
- Updated dependencies [7567cee]
|
|
1046
|
-
- Updated dependencies [7567cee]
|
|
1047
|
-
- @mushi-mushi/core@0.2.0
|
|
1048
|
-
|
|
1049
|
-
## 0.1.0
|
|
1050
|
-
|
|
1051
|
-
### Minor Changes
|
|
1052
|
-
|
|
1053
|
-
- Initial public release of the Mushi Mushi SDK platform.
|
|
1054
|
-
- `@mushi-mushi/core` — universal bug-report engine with structured logging, PII scrubbing, offline queue
|
|
1055
|
-
- `@mushi-mushi/web` — browser SDK with session replay, console/network/click capture, proactive detection
|
|
1056
|
-
- `@mushi-mushi/react` — React hooks and provider (`MushiProvider`, `useMushi`, `useMushiReport`)
|
|
1057
|
-
- `@mushi-mushi/react-native` — React Native SDK with shake-to-report and bottom sheet widget
|
|
1058
|
-
- `@mushi-mushi/vue` — Vue 3 composables (`useMushi`) and plugin
|
|
1059
|
-
- `@mushi-mushi/svelte` — Svelte stores and context integration
|
|
1060
|
-
- `@mushi-mushi/angular` — Angular service and module
|
|
1061
|
-
- `@mushi-mushi/mcp` — Model Context Protocol server for AI-assisted triage
|
|
1062
|
-
- `@mushi-mushi/cli` — CLI for project setup and report management
|