@multiplatform.one/core 7.2.0 → 7.2.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplatform.one/core",
3
- "version": "7.2.0",
3
+ "version": "7.2.2",
4
4
  "description": "Core framework shell, provider composition, and layout factories for multiplatform.one",
5
5
  "keywords": [
6
6
  "app",
@@ -47,11 +47,11 @@
47
47
  "@tanstack/react-devtools": "^0.10.2",
48
48
  "@tanstack/react-form-devtools": "0.2.22",
49
49
  "react-cookie": "^8.1.2",
50
- "@multiplatform.one/platform": "7.2.0",
51
- "@multiplatform.one/logger": "7.2.0",
52
- "@multiplatform.one/i18n": "7.2.0",
53
- "@multiplatform.one/theme": "7.2.0",
54
- "@multiplatform.one/store": "7.2.0"
50
+ "@multiplatform.one/i18n": "7.2.2",
51
+ "@multiplatform.one/logger": "7.2.2",
52
+ "@multiplatform.one/platform": "7.2.2",
53
+ "@multiplatform.one/store": "7.2.2",
54
+ "@multiplatform.one/theme": "7.2.2"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@sentry/react": "^10.51.0",
@@ -69,8 +69,8 @@
69
69
  "tamagui": "2.7.6",
70
70
  "typescript": "~5.9.3",
71
71
  "vitest": "^4.1.5",
72
- "@multiplatform.one/web3": "7.2.0",
73
- "@multiplatform.one/frappe": "7.2.0"
72
+ "@multiplatform.one/frappe": "7.2.2",
73
+ "@multiplatform.one/web3": "7.2.2"
74
74
  },
75
75
  "peerDependencies": {
76
76
  "@sentry/react": "^9.0.0",
@@ -86,10 +86,10 @@
86
86
  "react-native-gesture-handler": ">=2.0.0",
87
87
  "react-native-safe-area-context": ">=4.0.0",
88
88
  "tamagui": "^2.0.0-rc",
89
- "@multiplatform.one/frappe": "^7.2.0",
90
- "@multiplatform.one/frappe-ui": "^7.2.0",
91
- "@multiplatform.one/keycloak": "^7.2.0",
92
- "@multiplatform.one/web3": "^7.2.0"
89
+ "@multiplatform.one/frappe": "^7.2.2",
90
+ "@multiplatform.one/frappe-ui": "^7.2.2",
91
+ "@multiplatform.one/keycloak": "^7.2.2",
92
+ "@multiplatform.one/web3": "^7.2.2"
93
93
  },
94
94
  "peerDependenciesMeta": {
95
95
  "@multiplatform.one/web3": {
@@ -57,7 +57,7 @@ export interface TanstackConfig {
57
57
  * `debug`). Defaults to true whenever the devtools mount. On iOS 13+
58
58
  * WebKit the motion permission is requested once from the user's first
59
59
  * tap; Android and desktop need no permission (desktop simply never
60
- * fires devicemotion — use the Ctrl/Cmd+` shortcut there). Set false to
60
+ * fires devicemotion — use Cmd/Ctrl+Shift+` there). Set false to
61
61
  * keep the keyboard shortcut as the only trigger.
62
62
  */
63
63
  shakeToOpen?: boolean;
@@ -14,7 +14,7 @@ import { ThemeDevtoolsPanel } from "@multiplatform.one/theme";
14
14
  import { storage } from "@multiplatform.one/store";
15
15
  import { useEffect, useState } from "react";
16
16
  import type { TanstackConfig } from "./CreateApp";
17
- import { devtoolsOpenHotkey, useShakeToOpen } from "./devtoolsTrigger";
17
+ import { devtoolsOpenHotkey, useDevtoolsKeyboardTrigger, useShakeToOpen } from "./devtoolsTrigger";
18
18
 
19
19
  const devtoolsSettingsKey = "tanstack_devtools_settings";
20
20
 
@@ -133,6 +133,9 @@ export default function TanstackDevtoolsWrapper({
133
133
  // keyboard shortcut. Ships whenever the devtools mount unless the app
134
134
  // opts out with `tanstack: { shakeToOpen: false }`.
135
135
  useShakeToOpen(tanstackConfig.shakeToOpen !== false);
136
+ // Cmd/Ctrl+Shift+` — capture-phase so apps cannot swallow it. TanStack
137
+ // still receives openHotkey (US-layout e.key sequence) as a fallback.
138
+ useDevtoolsKeyboardTrigger(true);
136
139
 
137
140
  const plugins = [
138
141
  {
@@ -16,6 +16,7 @@ import {
16
16
  devtoolsOpenHotkey,
17
17
  devtoolsShellPluginId,
18
18
  devtoolsTriggerToggledEvent,
19
+ isDevtoolsOpenHotkeyEvent,
19
20
  isMotionPermissionRequired,
20
21
  motionMagnitude,
21
22
  openDevtoolsShell,
@@ -30,6 +31,70 @@ function sample(magnitude: number) {
30
31
  return { acceleration: { x: magnitude, y: 0, z: 0 } };
31
32
  }
32
33
 
34
+ function keyEvent(init: {
35
+ metaKey?: boolean;
36
+ ctrlKey?: boolean;
37
+ shiftKey?: boolean;
38
+ altKey?: boolean;
39
+ key?: string;
40
+ code?: string;
41
+ }): KeyboardEvent {
42
+ return {
43
+ metaKey: false,
44
+ ctrlKey: false,
45
+ shiftKey: false,
46
+ altKey: false,
47
+ key: "",
48
+ code: "",
49
+ ...init,
50
+ } as KeyboardEvent;
51
+ }
52
+
53
+ describe("isDevtoolsOpenHotkeyEvent", () => {
54
+ it("matches Cmd+Shift+Backquote and Ctrl+Shift+Backquote", () => {
55
+ expect(
56
+ isDevtoolsOpenHotkeyEvent(
57
+ keyEvent({ metaKey: true, shiftKey: true, code: "Backquote", key: "~" }),
58
+ ),
59
+ ).toBe(true);
60
+ expect(
61
+ isDevtoolsOpenHotkeyEvent(
62
+ keyEvent({ ctrlKey: true, shiftKey: true, code: "Backquote", key: "~" }),
63
+ ),
64
+ ).toBe(true);
65
+ });
66
+
67
+ it("matches by physical Backquote even when e.key is not tilde", () => {
68
+ // UK / ISO layouts produce ¬ or ` for Shift+Backquote; the physical key
69
+ // is still the one left of 1.
70
+ expect(
71
+ isDevtoolsOpenHotkeyEvent(
72
+ keyEvent({ metaKey: true, shiftKey: true, code: "Backquote", key: "¬" }),
73
+ ),
74
+ ).toBe(true);
75
+ });
76
+
77
+ it("rejects the unshifted Cmd/Ctrl+` combo macOS steals for window cycle", () => {
78
+ expect(
79
+ isDevtoolsOpenHotkeyEvent(keyEvent({ metaKey: true, code: "Backquote", key: "`" })),
80
+ ).toBe(false);
81
+ expect(
82
+ isDevtoolsOpenHotkeyEvent(keyEvent({ ctrlKey: true, code: "Backquote", key: "`" })),
83
+ ).toBe(false);
84
+ });
85
+
86
+ it("rejects Shift+Backquote without Ctrl/Cmd and other keys with the modifiers", () => {
87
+ expect(
88
+ isDevtoolsOpenHotkeyEvent(keyEvent({ shiftKey: true, code: "Backquote", key: "~" })),
89
+ ).toBe(false);
90
+ expect(
91
+ isDevtoolsOpenHotkeyEvent(
92
+ keyEvent({ metaKey: true, shiftKey: true, code: "KeyK", key: "K" }),
93
+ ),
94
+ ).toBe(false);
95
+ });
96
+ });
97
+
33
98
  describe("motionMagnitude", () => {
34
99
  it("prefers the gravity-excluded acceleration reading", () => {
35
100
  expect(
@@ -424,10 +489,17 @@ describe("devtools shell wiring", () => {
424
489
  expect(shellSource).toContain("useShakeToOpen(tanstackConfig.shakeToOpen !== false)");
425
490
  });
426
491
 
427
- it("keeps the existing Ctrl/Cmd+` shortcut", () => {
428
- expect(devtoolsOpenHotkey).toEqual(["CtrlOrMeta", "`"]);
429
- // The shell config must spread the pinned constant, not restate it.
492
+ it("binds Cmd/Ctrl+Shift+` (TanStack e.key for Shift+Backquote is ~)", () => {
493
+ // Unshifted Ctrl/Cmd+` is the macOS "cycle windows" shortcut — the
494
+ // page never sees it. Shift+Backquote produces e.key "~", and
495
+ // @solid-primitives/keyboard matches an exact e.key sequence, so the
496
+ // TanStack combo must include both Shift and "~". The capture-phase
497
+ // physical-key listener (e.code === "Backquote") is the source of
498
+ // truth across layouts; this constant is what TanStack's own matcher
499
+ // gets so it agrees on US keyboards.
500
+ expect(devtoolsOpenHotkey).toEqual(["CtrlOrMeta", "Shift", "~"]);
430
501
  expect(shellSource).toContain("openHotkey: [...devtoolsOpenHotkey]");
502
+ expect(shellSource).toContain("useDevtoolsKeyboardTrigger(");
431
503
  });
432
504
 
433
505
  it("mounts shake-to-open with the config opt-out", () => {
@@ -6,12 +6,56 @@ import { useEffect } from "react";
6
6
  // ---------------------------------------------------------------------------
7
7
 
8
8
  /**
9
- * Keyboard shortcut that toggles the devtools shell (Ctrl+` / Cmd+`).
10
- * Handled inside `@tanstack/react-devtools`, which skips editable targets
11
- * (inputs, textareas, contentEditable), so it cannot collide with app
12
- * typing. Exported so tests pin the binding.
9
+ * Keyboard shortcut that opens the devtools shell: Cmd+Shift+` on Mac,
10
+ * Ctrl+Shift+` elsewhere.
11
+ *
12
+ * Why this combo, and why `~`: unshifted Ctrl/Cmd+` is macOS "cycle
13
+ * windows" and never reaches the page. Shift+Backquote is the physical
14
+ * key the ticket names. `@tanstack/react-devtools` matches an exact
15
+ * `e.key` sequence via `@solid-primitives/keyboard`, and Shift+Backquote
16
+ * produces `e.key === "~"` on US layouts — so the TanStack config must
17
+ * be Shift + "~", not unshifted "`". The capture-phase listener in
18
+ * `useDevtoolsKeyboardTrigger` matches `e.code === "Backquote"` so
19
+ * non-US layouts (where Shift+Backquote is ¬ or `) still fire.
20
+ *
21
+ * Exported so tests pin the binding.
22
+ */
23
+ export const devtoolsOpenHotkey = ["CtrlOrMeta", "Shift", "~"] as const;
24
+
25
+ /**
26
+ * True when the event is the documented debugger shortcut. Prefers the
27
+ * physical Backquote key so it does not depend on keyboard layout;
28
+ * `e.key` of "`" or "~" is accepted as a fallback when `code` is absent
29
+ * (jsdom / synthetic events).
30
+ */
31
+ export function isDevtoolsOpenHotkeyEvent(event: KeyboardEvent): boolean {
32
+ if (!(event.metaKey || event.ctrlKey) || !event.shiftKey || event.altKey) {
33
+ return false;
34
+ }
35
+ if (event.code === "Backquote") return true;
36
+ return event.key === "`" || event.key === "~";
37
+ }
38
+
39
+ /**
40
+ * Capture-phase window listener that opens the shell on the documented
41
+ * shortcut. Capture runs before app-level keydown handlers, so a page
42
+ * that stopPropagation's cannot swallow it. preventDefault +
43
+ * stopImmediatePropagation keep TanStack's own createShortcut from
44
+ * also firing (which would toggle the panel shut again).
13
45
  */
14
- export const devtoolsOpenHotkey = ["CtrlOrMeta", "`"] as const;
46
+ export function useDevtoolsKeyboardTrigger(enabled: boolean) {
47
+ useEffect(() => {
48
+ if (!enabled || typeof window === "undefined") return;
49
+ const onKeyDown = (event: KeyboardEvent) => {
50
+ if (!isDevtoolsOpenHotkeyEvent(event)) return;
51
+ event.preventDefault();
52
+ event.stopImmediatePropagation();
53
+ openDevtoolsShell();
54
+ };
55
+ window.addEventListener("keydown", onKeyDown, { capture: true });
56
+ return () => window.removeEventListener("keydown", onKeyDown, { capture: true });
57
+ }, [enabled]);
58
+ }
15
59
 
16
60
  // ---------------------------------------------------------------------------
17
61
  // Programmatic open — the same event the devtools shell's own trigger emits
@@ -20,7 +20,7 @@ export interface TanstackConfig {
20
20
  * `debug`). Defaults to true whenever the devtools mount. On iOS 13+
21
21
  * WebKit the motion permission is requested once from the user's first
22
22
  * tap; Android and desktop need no permission (desktop simply never
23
- * fires devicemotion — use the Ctrl/Cmd+` shortcut there). Set false to
23
+ * fires devicemotion — use Cmd/Ctrl+Shift+` there). Set false to
24
24
  * keep the keyboard shortcut as the only trigger.
25
25
  */
26
26
  shakeToOpen?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"TanstackDevtools.d.ts","sourceRoot":"","sources":["../../src/app/TanstackDevtools.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAoClD,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;CAChC;AAkED,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,cAAc,EACd,cAAc,GACf,EAAE,qBAAqB,2CAiEvB"}
1
+ {"version":3,"file":"TanstackDevtools.d.ts","sourceRoot":"","sources":["../../src/app/TanstackDevtools.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAoClD,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;CAChC;AAkED,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,cAAc,EACd,cAAc,GACf,EAAE,qBAAqB,2CAoEvB"}
@@ -1,10 +1,34 @@
1
1
  /**
2
- * Keyboard shortcut that toggles the devtools shell (Ctrl+` / Cmd+`).
3
- * Handled inside `@tanstack/react-devtools`, which skips editable targets
4
- * (inputs, textareas, contentEditable), so it cannot collide with app
5
- * typing. Exported so tests pin the binding.
2
+ * Keyboard shortcut that opens the devtools shell: Cmd+Shift+` on Mac,
3
+ * Ctrl+Shift+` elsewhere.
4
+ *
5
+ * Why this combo, and why `~`: unshifted Ctrl/Cmd+` is macOS "cycle
6
+ * windows" and never reaches the page. Shift+Backquote is the physical
7
+ * key the ticket names. `@tanstack/react-devtools` matches an exact
8
+ * `e.key` sequence via `@solid-primitives/keyboard`, and Shift+Backquote
9
+ * produces `e.key === "~"` on US layouts — so the TanStack config must
10
+ * be Shift + "~", not unshifted "`". The capture-phase listener in
11
+ * `useDevtoolsKeyboardTrigger` matches `e.code === "Backquote"` so
12
+ * non-US layouts (where Shift+Backquote is ¬ or `) still fire.
13
+ *
14
+ * Exported so tests pin the binding.
15
+ */
16
+ export declare const devtoolsOpenHotkey: readonly ["CtrlOrMeta", "Shift", "~"];
17
+ /**
18
+ * True when the event is the documented debugger shortcut. Prefers the
19
+ * physical Backquote key so it does not depend on keyboard layout;
20
+ * `e.key` of "`" or "~" is accepted as a fallback when `code` is absent
21
+ * (jsdom / synthetic events).
22
+ */
23
+ export declare function isDevtoolsOpenHotkeyEvent(event: KeyboardEvent): boolean;
24
+ /**
25
+ * Capture-phase window listener that opens the shell on the documented
26
+ * shortcut. Capture runs before app-level keydown handlers, so a page
27
+ * that stopPropagation's cannot swallow it. preventDefault +
28
+ * stopImmediatePropagation keep TanStack's own createShortcut from
29
+ * also firing (which would toggle the panel shut again).
6
30
  */
7
- export declare const devtoolsOpenHotkey: readonly ["CtrlOrMeta", "`"];
31
+ export declare function useDevtoolsKeyboardTrigger(enabled: boolean): void;
8
32
  /**
9
33
  * Plugin id of the TanStack Devtools shell's internal event client
10
34
  * (`devtoolsEventClient` in `@tanstack/devtools-client`). The shell
@@ -1 +1 @@
1
- {"version":3,"file":"devtoolsTrigger.d.ts","sourceRoot":"","sources":["../../src/app/devtoolsTrigger.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,8BAA+B,CAAC;AAM/D;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,2BAA2B,CAAC;AAE9D,sEAAsE;AACtE,eAAO,MAAM,2BAA2B,oBAAoB,CAAC;AAQ7D;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,SAKhC;AAQD,gFAAgF;AAChF,eAAO,MAAM,aAAa;IACxB,0DAA0D;;IAE1D,iFAAiF;;IAEjF,wDAAwD;;IAExD,kDAAkD;;IAElD,+DAA+D;;CAEvD,CAAC;AAEX,UAAU,UAAU;IAClB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnB;AAED,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACjC,4BAA4B,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAClD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAUrE;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,YAAY,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,yCAAyC;IACzC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,SAAmC,EACnC,YAAyC,EACzC,SAAmC,EACnC,QAAiC,EACjC,UAAqC,GACtC,EAAE,oBAAoB,GAAG,aAAa,CA2BtC;AAMD,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,kBAAkB,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE7F,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC;;;OAGG;IACH,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,iBAAiB,EACjB,SAAS,EACT,QAAQ,GACT,EAAE;IACD,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,GAAG,oBAAoB,CA8BvB;AAcD;;;;;GAKG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,4BAA4B,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AA4BpE,oEAAoE;AACpE,wBAAgB,mBAAmB,SAGlC;AAED;;;;;;GAMG;AACH,wBAAsB,kCAAkC,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAqBzF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,MAAM,IAAwB,QA+BvF"}
1
+ {"version":3,"file":"devtoolsTrigger.d.ts","sourceRoot":"","sources":["../../src/app/devtoolsTrigger.ts"],"names":[],"mappings":"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"}