@multiplatform.one/cli 7.34.4 → 7.36.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/lib/bin/multiplatformOne.mjs +3 -3
- package/lib/commands/e2e.mjs +4 -4
- package/lib/commands/merge.mjs +1 -1
- package/lib/commands/scaffold.mjs +1 -1
- package/lib/source.json +2 -2
- package/package.json +2 -2
- package/templates/AGENTS.md +11 -0
- package/templates/pieces/gnome/universal/apps/__NAME__/gnome/shims/components.ts +1 -0
- package/templates/pieces/vscode/universal/apps/__NAME__/vscode/webview/fonts/inter-500.woff2 +0 -0
- package/templates/pieces/vscode/universal/apps/__NAME__/vscode/webview/fonts/inter-600.woff2 +0 -0
- package/templates/pieces/vscode/universal/apps/__NAME__/vscode/webview/fonts/inter-800.woff2 +0 -0
- package/templates/pieces/vscode/universal/apps/__NAME__/vscode/webview/fonts.css +21 -0
- package/templates/pieces/webext/universal/apps/__NAME__/webext/assets/fonts/inter-500.woff2 +0 -0
- package/templates/pieces/webext/universal/apps/__NAME__/webext/assets/fonts/inter-600.woff2 +0 -0
- package/templates/pieces/webext/universal/apps/__NAME__/webext/assets/fonts/inter-800.woff2 +0 -0
- package/templates/pieces/webext/universal/apps/__NAME__/webext/views/popup/index.html +35 -0
|
@@ -9,13 +9,13 @@ import { updateApp } from "../commands/updateApp.mjs";
|
|
|
9
9
|
import fsSync from "node:fs";
|
|
10
10
|
import path from "node:path";
|
|
11
11
|
import { fileURLToPath } from "node:url";
|
|
12
|
+
import spawn from "nano-spawn";
|
|
12
13
|
import fs from "node:fs/promises";
|
|
14
|
+
import yoctoSpinner from "yocto-spinner";
|
|
15
|
+
import YAML from "yaml";
|
|
13
16
|
import { formatServiceList, lookupProjectRoot, waitForFrappe, waitForKeycloak, waitForPostgres, waitServices } from "@multiplatform.one/utils/dev";
|
|
14
17
|
import { Command } from "commander";
|
|
15
18
|
import dotenv from "dotenv";
|
|
16
|
-
import spawn from "nano-spawn";
|
|
17
|
-
import YAML from "yaml";
|
|
18
|
-
import yoctoSpinner from "yocto-spinner";
|
|
19
19
|
|
|
20
20
|
//#region src/bin/multiplatformOne.ts
|
|
21
21
|
const projectRoot = lookupProjectRoot();
|
package/lib/commands/e2e.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import fs from "node:fs/promises";
|
|
3
|
-
import spawn from "nano-spawn";
|
|
4
|
-
import YAML from "yaml";
|
|
5
|
-
import yoctoSpinner from "yocto-spinner";
|
|
6
2
|
import os from "node:os";
|
|
3
|
+
import spawn from "nano-spawn";
|
|
7
4
|
import crypto from "node:crypto";
|
|
5
|
+
import fs from "node:fs/promises";
|
|
6
|
+
import yoctoSpinner from "yocto-spinner";
|
|
7
|
+
import YAML from "yaml";
|
|
8
8
|
|
|
9
9
|
//#region src/commands/e2e.ts
|
|
10
10
|
function sessionFileName(portOffset) {
|
package/lib/commands/merge.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { basename, join } from "node:path";
|
|
3
|
-
import spawn from "nano-spawn";
|
|
4
3
|
import { tmpdir } from "node:os";
|
|
4
|
+
import spawn from "nano-spawn";
|
|
5
5
|
|
|
6
6
|
//#region src/commands/merge.ts
|
|
7
7
|
/**
|
|
@@ -2,8 +2,8 @@ import { cliRoot, readProvenance } from "./provenance.mjs";
|
|
|
2
2
|
import { checkSourceAccess } from "../source.mjs";
|
|
3
3
|
import { mkdtempSync, rmSync } from "node:fs";
|
|
4
4
|
import { join } from "node:path";
|
|
5
|
-
import spawn from "nano-spawn";
|
|
6
5
|
import { tmpdir } from "node:os";
|
|
6
|
+
import spawn from "nano-spawn";
|
|
7
7
|
|
|
8
8
|
//#region src/commands/scaffold.ts
|
|
9
9
|
/** The scaffold itself: POSIX sh, runs standalone. The TS commands only call it. */
|
package/lib/source.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplatform.one/cli",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.36.0",
|
|
4
4
|
"description": "multiplatform.one cli — mpo init clones and prunes the monorepo, mpo update merges it back",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"create-multiplatform-app",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"access": "public"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@multiplatform.one/utils": "^7.
|
|
59
|
+
"@multiplatform.one/utils": "^7.36.0",
|
|
60
60
|
"commander": "^15.0.0",
|
|
61
61
|
"dotenv": "^17.4.2",
|
|
62
62
|
"inquirer": "^14.2.3",
|
package/templates/AGENTS.md
CHANGED
|
@@ -15,6 +15,17 @@ semver range in each `package.json`. There is no copy of them here: a change to
|
|
|
15
15
|
one of them is made upstream, in the monorepo, and arrives with the next
|
|
16
16
|
`mpo update`.
|
|
17
17
|
|
|
18
|
+
## MPO evolution contract (FZ-7572)
|
|
19
|
+
|
|
20
|
+
MPO improves through shared rules, never app-specific patches.
|
|
21
|
+
|
|
22
|
+
- App lanes only consume MPO. Never vendor or patch MPO internals or style MPO components locally. Published `@multiplatform.one/*` packages change upstream. MPO findings belong in a separate platform lane (LC-107).
|
|
23
|
+
- Triage each design gap: wrong scale → change the global token/preset; missing primitive → add a general component/variant; merely different design → snap to the nearest MPO token, leaving MPO unchanged (LC-108).
|
|
24
|
+
- An MPO change needs at least two consumers or a stock Tamagui, iOS or macOS precedent. It must work under every preset, state a numbered LC rule, and receive a cross-app before/after review card (LC-109).
|
|
25
|
+
- Every style Clay approves applies to every MPO app (LC-110).
|
|
26
|
+
|
|
27
|
+
Approved cross-app rules: phone side panels and filters use bottom sheets; desktop uses a hamburger (LC-111). Floating menus open over their trigger, with that trigger as the first row (LC-112). The top bar paints a visible surface through the safe area past the Dynamic Island (LC-113). Number fields and buttons hug content (LC-114). Forms cap at a readable maximum width (LC-115). Card images sit flush to the edge (LC-116). Sliders use stock Tamagui through MPO (LC-117). Show state; don't narrate it (LC-118).
|
|
28
|
+
|
|
18
29
|
## Workspace layout
|
|
19
30
|
|
|
20
31
|
| Path | Role |
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
// is aliased to THIS file, so importing it here would loop.
|
|
16
16
|
|
|
17
17
|
export * from "@multiplatform.one/components/src/layouts/page";
|
|
18
|
+
export * from "@multiplatform.one/components/src/layouts/shellSidebarSlot";
|
|
18
19
|
|
|
19
20
|
// Async list/table chrome — the wrapper real screens put around their
|
|
20
21
|
// fetches. Its skeleton + error icons stay unrendered until used; the
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -12,6 +12,20 @@
|
|
|
12
12
|
font-display: swap;
|
|
13
13
|
src: url("./fonts/inter-400.woff2") format("woff2");
|
|
14
14
|
}
|
|
15
|
+
@font-face {
|
|
16
|
+
font-family: "Inter";
|
|
17
|
+
font-style: normal;
|
|
18
|
+
font-weight: 500;
|
|
19
|
+
font-display: swap;
|
|
20
|
+
src: url("./fonts/inter-500.woff2") format("woff2");
|
|
21
|
+
}
|
|
22
|
+
@font-face {
|
|
23
|
+
font-family: "Inter";
|
|
24
|
+
font-style: normal;
|
|
25
|
+
font-weight: 600;
|
|
26
|
+
font-display: swap;
|
|
27
|
+
src: url("./fonts/inter-600.woff2") format("woff2");
|
|
28
|
+
}
|
|
15
29
|
@font-face {
|
|
16
30
|
font-family: "Inter";
|
|
17
31
|
font-style: normal;
|
|
@@ -19,3 +33,10 @@
|
|
|
19
33
|
font-display: swap;
|
|
20
34
|
src: url("./fonts/inter-700.woff2") format("woff2");
|
|
21
35
|
}
|
|
36
|
+
@font-face {
|
|
37
|
+
font-family: "Inter";
|
|
38
|
+
font-style: normal;
|
|
39
|
+
font-weight: 800;
|
|
40
|
+
font-display: swap;
|
|
41
|
+
src: url("./fonts/inter-800.woff2") format("woff2");
|
|
42
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -46,6 +46,13 @@
|
|
|
46
46
|
type="font/woff2"
|
|
47
47
|
crossorigin
|
|
48
48
|
/>
|
|
49
|
+
<link
|
|
50
|
+
rel="preload"
|
|
51
|
+
href="../../assets/fonts/inter-600.woff2"
|
|
52
|
+
as="font"
|
|
53
|
+
type="font/woff2"
|
|
54
|
+
crossorigin
|
|
55
|
+
/>
|
|
49
56
|
<link
|
|
50
57
|
rel="preload"
|
|
51
58
|
href="../../assets/fonts/inter-700.woff2"
|
|
@@ -53,6 +60,13 @@
|
|
|
53
60
|
type="font/woff2"
|
|
54
61
|
crossorigin
|
|
55
62
|
/>
|
|
63
|
+
<link
|
|
64
|
+
rel="preload"
|
|
65
|
+
href="../../assets/fonts/inter-800.woff2"
|
|
66
|
+
as="font"
|
|
67
|
+
type="font/woff2"
|
|
68
|
+
crossorigin
|
|
69
|
+
/>
|
|
56
70
|
<style data-font-inter>
|
|
57
71
|
@font-face {
|
|
58
72
|
font-family: "Inter";
|
|
@@ -61,6 +75,20 @@
|
|
|
61
75
|
font-display: optional;
|
|
62
76
|
src: url("../../assets/fonts/inter-400.woff2") format("woff2");
|
|
63
77
|
}
|
|
78
|
+
@font-face {
|
|
79
|
+
font-family: "Inter";
|
|
80
|
+
font-style: normal;
|
|
81
|
+
font-weight: 500;
|
|
82
|
+
font-display: optional;
|
|
83
|
+
src: url("../../assets/fonts/inter-500.woff2") format("woff2");
|
|
84
|
+
}
|
|
85
|
+
@font-face {
|
|
86
|
+
font-family: "Inter";
|
|
87
|
+
font-style: normal;
|
|
88
|
+
font-weight: 600;
|
|
89
|
+
font-display: optional;
|
|
90
|
+
src: url("../../assets/fonts/inter-600.woff2") format("woff2");
|
|
91
|
+
}
|
|
64
92
|
@font-face {
|
|
65
93
|
font-family: "Inter";
|
|
66
94
|
font-style: normal;
|
|
@@ -68,6 +96,13 @@
|
|
|
68
96
|
font-display: optional;
|
|
69
97
|
src: url("../../assets/fonts/inter-700.woff2") format("woff2");
|
|
70
98
|
}
|
|
99
|
+
@font-face {
|
|
100
|
+
font-family: "Inter";
|
|
101
|
+
font-style: normal;
|
|
102
|
+
font-weight: 800;
|
|
103
|
+
font-display: optional;
|
|
104
|
+
src: url("../../assets/fonts/inter-800.woff2") format("woff2");
|
|
105
|
+
}
|
|
71
106
|
</style>
|
|
72
107
|
</head>
|
|
73
108
|
<body>
|