@mutmutco/pi-plugin 4.5.150 → 4.5.151
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 +1 -1
- package/skills/bootstrap/seeds/suite-guide.template.md +1 -1
- package/skills/bootstrap/seeds/suite-module-package.template.json +1 -1
- package/skills/bootstrap/seeds/suite-files.template.json +0 -1
- package/skills/bootstrap/seeds/suite-screens.template.json +0 -170
- package/skills/bootstrap/seeds/suite-screens.template.yml +0 -63
package/package.json
CHANGED
|
@@ -8,4 +8,4 @@ Before the first CI/deploy, an org admin must grant this repo **Read** on `@mutm
|
|
|
8
8
|
|
|
9
9
|
The server exposes `/health` and `/module.js`. Register the module's bundle URL, id, name and capabilities with MM-Work following the GUIDE. The seed deliberately exposes no authenticated product API yet.
|
|
10
10
|
|
|
11
|
-
`gate` installs and checks the backend and module.
|
|
11
|
+
`gate` installs and checks the backend and module. Product repos carry no screenshot or browser tests (owner ruling 2026-10-15, MM-Work#5388).
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{ "result": { "items": [{ "id": "sample", "name": "Sample brief" }] } }
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"module": {
|
|
3
|
-
"id": "{{REPO_SLUG}}",
|
|
4
|
-
"name": "{{REPO_NAME}}",
|
|
5
|
-
"glyph": "grid",
|
|
6
|
-
"tone": "blue",
|
|
7
|
-
"description": "Offline module screen check",
|
|
8
|
-
"sections": [
|
|
9
|
-
{
|
|
10
|
-
"label": "Home",
|
|
11
|
-
"path": "/"
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
"label": "Details",
|
|
15
|
-
"path": "/details"
|
|
16
|
-
}
|
|
17
|
-
],
|
|
18
|
-
"help": {
|
|
19
|
-
"home": {
|
|
20
|
-
"name": "Example home",
|
|
21
|
-
"howTos": [
|
|
22
|
-
{
|
|
23
|
-
"id": "recent",
|
|
24
|
-
"title": "See recent files",
|
|
25
|
-
"intro": "The module counts the files you opened lately in Google Drive.",
|
|
26
|
-
"steps": [
|
|
27
|
-
{
|
|
28
|
-
"title": "Connect Drive",
|
|
29
|
-
"text": "Connect your Google account in Files to see your recent files.",
|
|
30
|
-
"scene": "connect"
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"title": "Come back here",
|
|
34
|
-
"text": "The overview shows how many recent files MM-Work found."
|
|
35
|
-
}
|
|
36
|
-
]
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"id": "details",
|
|
40
|
-
"title": "Open the details page",
|
|
41
|
-
"steps": [
|
|
42
|
-
{
|
|
43
|
-
"title": "Press Open a page inside the module",
|
|
44
|
-
"text": "It is under the overview. Details is also in the section row.",
|
|
45
|
-
"scene": "screen"
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"title": "Go back",
|
|
49
|
-
"text": "Press Home in the section row."
|
|
50
|
-
}
|
|
51
|
-
]
|
|
52
|
-
}
|
|
53
|
-
],
|
|
54
|
-
"faq": [
|
|
55
|
-
{
|
|
56
|
-
"id": "drive",
|
|
57
|
-
"question": "Where are my files?",
|
|
58
|
-
"answer": "Recent files come from your connected Google Drive."
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
"id": "job",
|
|
62
|
-
"question": "What is the Review files job?",
|
|
63
|
-
"answer": "A job your admin can give you. The overview says whether you hold it."
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
"id": "access",
|
|
67
|
-
"question": "Does this module get my Google password?",
|
|
68
|
-
"answer": "No. It asks MM-Work for your files, and MM-Work uses the access you granted it."
|
|
69
|
-
}
|
|
70
|
-
],
|
|
71
|
-
"tour": [
|
|
72
|
-
{
|
|
73
|
-
"anchor": "example-intro",
|
|
74
|
-
"title": "What this is",
|
|
75
|
-
"text": "A module's own screen, drawn with MM-Work's design system."
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"anchor": "example-overview",
|
|
79
|
-
"title": "Your overview",
|
|
80
|
-
"text": "See your workspace and recent Drive files here."
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
"anchor": "example-actions",
|
|
84
|
-
"title": "Where to go next",
|
|
85
|
-
"text": "Open the details page, or go to Files."
|
|
86
|
-
}
|
|
87
|
-
]
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
"privacy": [
|
|
91
|
-
{
|
|
92
|
-
"class": "company-visible",
|
|
93
|
-
"what": {
|
|
94
|
-
"en": "The example reads recent Google Drive file metadata through MM-Work after the person connects Files.",
|
|
95
|
-
"tr": "Örnek modül, kişi Files bağlantısını kurduktan sonra MM-Work üzerinden son Google Drive dosyalarının meta verilerini okur."
|
|
96
|
-
},
|
|
97
|
-
"who": {
|
|
98
|
-
"en": "The signed-in person sees the count on this example screen; no file content is saved by the example.",
|
|
99
|
-
"tr": "Oturum açmış kişi örnek ekranda sayıyı görür; örnek modül dosya içeriğini kaydetmez."
|
|
100
|
-
},
|
|
101
|
-
"evidence": [
|
|
102
|
-
"repo:MM-Work:examples/example-module/src/module.jsx"
|
|
103
|
-
]
|
|
104
|
-
}
|
|
105
|
-
]
|
|
106
|
-
},
|
|
107
|
-
"screens": [
|
|
108
|
-
{
|
|
109
|
-
"name": "home",
|
|
110
|
-
"path": "/m/example",
|
|
111
|
-
"jobs": [
|
|
112
|
-
"files.review"
|
|
113
|
-
],
|
|
114
|
-
"routes": {
|
|
115
|
-
"POST /api/actions/files.list": "files.json"
|
|
116
|
-
}
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
"name": "open details journey",
|
|
120
|
-
"path": "/m/example",
|
|
121
|
-
"steps": [
|
|
122
|
-
{
|
|
123
|
-
"assert": {
|
|
124
|
-
"selector": "[data-tour=example-actions] button",
|
|
125
|
-
"count": 2
|
|
126
|
-
}
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
"click": "[data-tour=example-actions] button:first-child"
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
"assert": {
|
|
133
|
-
"url": "/m/example/details"
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
],
|
|
137
|
-
"routes": {
|
|
138
|
-
"POST /api/actions/files.list": "files.json"
|
|
139
|
-
}
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
"name": "details",
|
|
143
|
-
"path": "/m/example/details",
|
|
144
|
-
"routes": {
|
|
145
|
-
"POST /api/actions/files.list": "files.json"
|
|
146
|
-
}
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
"name": "loading",
|
|
150
|
-
"path": "/m/example",
|
|
151
|
-
"query": "state=loading",
|
|
152
|
-
"routes": {
|
|
153
|
-
"POST /api/actions/files.list": "pending"
|
|
154
|
-
}
|
|
155
|
-
},
|
|
156
|
-
{
|
|
157
|
-
"name": "error",
|
|
158
|
-
"path": "/m/example",
|
|
159
|
-
"query": "state=error",
|
|
160
|
-
"routes": {
|
|
161
|
-
"POST /api/actions/files.list": {
|
|
162
|
-
"status": 500,
|
|
163
|
-
"body": {
|
|
164
|
-
"error": "offline failure"
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
]
|
|
170
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
name: screens
|
|
2
|
-
# A required check (#250): it runs wherever gate runs, so no PR into development, rc or main and no train tag
|
|
3
|
-
# waits on a context that never reports.
|
|
4
|
-
on:
|
|
5
|
-
pull_request:
|
|
6
|
-
merge_group:
|
|
7
|
-
types: [checks_requested]
|
|
8
|
-
push:
|
|
9
|
-
branches: {{GATE_PUSH_BRANCHES_YAML}}
|
|
10
|
-
tags: ['v*']
|
|
11
|
-
# Cancel superseded runs per PR, or per branch for pushes (MMI-Hub#7515, #3001; as MM-Strategy#415).
|
|
12
|
-
concurrency:
|
|
13
|
-
group: screens-${{ github.event.pull_request.number || (github.event_name == 'push' && github.sha) || github.ref }}
|
|
14
|
-
cancel-in-progress: true
|
|
15
|
-
permissions:
|
|
16
|
-
contents: read
|
|
17
|
-
packages: read
|
|
18
|
-
pull-requests: read
|
|
19
|
-
jobs:
|
|
20
|
-
# Owner ruling (#474, 6 Oct 2026): browser checks block nothing, releases included. Every PR, push and tag
|
|
21
|
-
# reports this required context without a browser audit (run: false); screens-sweep.yml audits nightly and
|
|
22
|
-
# on demand (issue-on-red). A development push still reports
|
|
23
|
-
# the required "screens / screens" on the SHA, which the dev deploy needs (MMI-Hub dev-auto-deploy).
|
|
24
|
-
changes:
|
|
25
|
-
runs-on: [self-hosted, linux, x64, mmi-live]
|
|
26
|
-
outputs:
|
|
27
|
-
run: ${{ steps.pick.outputs.run }}
|
|
28
|
-
full: ${{ steps.pick.outputs.full }}
|
|
29
|
-
steps:
|
|
30
|
-
- id: pick
|
|
31
|
-
env:
|
|
32
|
-
GH_TOKEN: ${{ github.token }}
|
|
33
|
-
EVENT: ${{ github.event_name }}
|
|
34
|
-
BASE: ${{ github.base_ref }}
|
|
35
|
-
REF: ${{ github.ref_name }}
|
|
36
|
-
REF_TYPE: ${{ github.ref_type }}
|
|
37
|
-
PR: ${{ github.event.pull_request.number }}
|
|
38
|
-
REPO: ${{ github.repository }}
|
|
39
|
-
run: |
|
|
40
|
-
set -euo pipefail
|
|
41
|
-
# #474: no browser audit on any PR, push or tag; screens-sweep.yml runs it nightly.
|
|
42
|
-
run=false; full=false
|
|
43
|
-
echo "run=$run full=$full"
|
|
44
|
-
{ echo "run=$run"; echo "full=$full"; } >> "$GITHUB_OUTPUT"
|
|
45
|
-
screens:
|
|
46
|
-
needs: changes
|
|
47
|
-
# Fail closed (MMI-Hub, 6 Oct): a SKIPPED required check counts as passing, so this job runs even when
|
|
48
|
-
# `changes` failed, and a missing answer means the full audit, never a skip.
|
|
49
|
-
if: ${{ !cancelled() }}
|
|
50
|
-
uses: mutmutco/MM-Work/.github/workflows/module-screens.yml@development
|
|
51
|
-
with:
|
|
52
|
-
run: ${{ needs.changes.outputs.run != 'false' }}
|
|
53
|
-
audit-sizes: ${{ needs.changes.outputs.full != 'false' && '["phone","768","1024","1280"]' || '["phone"]' }}
|
|
54
|
-
# Pinned to the shell built from the kit this module ships (ds-v0.71.42): the runner MM-Work
|
|
55
|
-
# published with that kit; bump with the kit.
|
|
56
|
-
# 0.1.55+ checks MM-Work #1575: selectedStyle, pageBackground, noJump (#418).
|
|
57
|
-
screens-version: '0.1.113'
|
|
58
|
-
working-directory: 'module'
|
|
59
|
-
build-command: 'npm run build'
|
|
60
|
-
bundle-path: 'dist/module.js'
|
|
61
|
-
fixtures-path: 'screens/screens.json'
|
|
62
|
-
# Every screen in English and Turkish (#369): Turkish words run longer, so they get their own audit.
|
|
63
|
-
languages: 'en,tr'
|