@mutmutco/codex-plugin 4.5.180 → 4.5.182
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/cli/dist/main.cjs
CHANGED
|
@@ -19192,10 +19192,10 @@ var rollout_plan_default = {
|
|
|
19192
19192
|
note: "The v4.0.0 stamp happens at cut time (D6e #4463); until then the candidate is the origin/development head artifacts (built cli/dist + npm pack), identity proven by dist content hash (D6a)."
|
|
19193
19193
|
},
|
|
19194
19194
|
baseline: {
|
|
19195
|
-
version: "4.5.
|
|
19196
|
-
tag: "v4.5.
|
|
19197
|
-
commit: "
|
|
19198
|
-
npm: "@mutmutco/cli@4.5.
|
|
19195
|
+
version: "4.5.182",
|
|
19196
|
+
tag: "v4.5.182",
|
|
19197
|
+
commit: "5d20b6ef9b5e",
|
|
19198
|
+
npm: "@mutmutco/cli@4.5.182"
|
|
19199
19199
|
},
|
|
19200
19200
|
exitCriterion: "fleet-n-of-n",
|
|
19201
19201
|
hubOnlyShortcut: "forbidden",
|
|
@@ -19212,14 +19212,14 @@ var rollout_plan_default = {
|
|
|
19212
19212
|
repo: "mutmutco/mmi-hub",
|
|
19213
19213
|
role: "canary",
|
|
19214
19214
|
schedule: "train",
|
|
19215
|
-
v3Target: "v4.5.
|
|
19215
|
+
v3Target: "v4.5.182"
|
|
19216
19216
|
}
|
|
19217
19217
|
],
|
|
19218
19218
|
rollbackTrigger: "Any red inside the post-contract soak window: `devops train gate` FAIL attributable to the v4 doors, Hub endpoint health probe failure, a pre-v4 client admitted instead of receiving actionable HTTP 426, or npm consumer install/doctor failure on the v4-only dist.",
|
|
19219
19219
|
rollback: {
|
|
19220
19220
|
independent: true,
|
|
19221
|
-
mechanism: "npm dist-tag latest -> 4.5.
|
|
19222
|
-
v3Target: "v4.5.
|
|
19221
|
+
mechanism: "npm dist-tag latest -> 4.5.182 and redeploy the Hub Lambda from tag v4.5.182 (5d20b6ef9b5e); installed clients repair via `mmi-cli doctor`. No other cohort is touched.",
|
|
19222
|
+
v3Target: "v4.5.182 (@mutmutco/cli@4.5.182, tag commit 5d20b6ef9b5e \u2014 last known-good release carrying the repo-index v4-only contract)"
|
|
19223
19223
|
}
|
|
19224
19224
|
},
|
|
19225
19225
|
{
|
package/cli/package.json
CHANGED
package/package.json
CHANGED
|
@@ -2,7 +2,22 @@
|
|
|
2
2
|
// It is built with mmworkModule() (vite.config.mjs), uses only the shared design system, and reaches Drive
|
|
3
3
|
// through MM-Work's surface actions, never its own Google access.
|
|
4
4
|
import { useEffect, useState } from 'react';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
Button,
|
|
7
|
+
Card,
|
|
8
|
+
Cluster,
|
|
9
|
+
Dashboard,
|
|
10
|
+
DashboardSection,
|
|
11
|
+
DataList,
|
|
12
|
+
DetailPage,
|
|
13
|
+
FormPage,
|
|
14
|
+
List,
|
|
15
|
+
ListPage,
|
|
16
|
+
ListRow,
|
|
17
|
+
SettingRow,
|
|
18
|
+
Stack,
|
|
19
|
+
Text,
|
|
20
|
+
} from '@mutmutco/mmwork-ds';
|
|
6
21
|
|
|
7
22
|
export const manifest = { id: '{{REPO_SLUG}}', name: '{{REPO_NAME}}' };
|
|
8
23
|
|
|
@@ -11,7 +26,7 @@ export const manifest = { id: '{{REPO_SLUG}}', name: '{{REPO_NAME}}' };
|
|
|
11
26
|
// { key: 'welcome', label: 'Welcome message', type: 'text', default: 'Hello', admin: true }
|
|
12
27
|
// ] }] }`. MM-Work draws those choices; ctx.settings.get('compact') reads the effective value.
|
|
13
28
|
// Declare `search: { title: 'Example module' }` and `sections: [{ label: 'Home', path: '/' },
|
|
14
|
-
// { label: 'Details', path: '/details' }]` in the registry. Results are data, not rendered rows.
|
|
29
|
+
// { label: 'Items', path: '/items' }, { label: 'Details', path: '/details' }, { label: 'Settings', path: '/settings' }]` in the registry. Results are data, not rendered rows.
|
|
15
30
|
export const search = {
|
|
16
31
|
find: async (query, ctx, signal) => {
|
|
17
32
|
if (signal.aborted) return { results: [] };
|
|
@@ -56,26 +71,95 @@ export default function ExampleModule({ ctx }) {
|
|
|
56
71
|
.catch(() => setFailed(true));
|
|
57
72
|
}, [ctx]);
|
|
58
73
|
|
|
74
|
+
const rows = [
|
|
75
|
+
{ label: 'Workspace', value: ctx.workspace.name },
|
|
76
|
+
{ label: 'Address in MM-Work', value: `${ctx.base}${ctx.path === '/' ? '' : ctx.path}` },
|
|
77
|
+
{ label: 'Recent files (files.list)', value: failed ? 'Drive is not connected' : files === null ? 'Loading…' : String(files.length) },
|
|
78
|
+
{ label: 'Review files job', value: ctx.can('files.review') ? 'Held' : 'Not held' },
|
|
79
|
+
];
|
|
80
|
+
|
|
81
|
+
if (ctx.path === '/items') {
|
|
82
|
+
return (
|
|
83
|
+
<ListPage
|
|
84
|
+
title="Items"
|
|
85
|
+
description="Recent files from your connected Google Drive."
|
|
86
|
+
primary={{ label: 'Open details', onClick: () => ctx.navigate(`${ctx.base}/details`) }}
|
|
87
|
+
busy={!failed && files === null}
|
|
88
|
+
>
|
|
89
|
+
<List label="Items">
|
|
90
|
+
{(files ?? []).map((file, i) => (
|
|
91
|
+
<ListRow
|
|
92
|
+
key={file.id ?? i}
|
|
93
|
+
title={file.name}
|
|
94
|
+
meta="Recent files"
|
|
95
|
+
onClick={() => ctx.navigate(`${ctx.base}/details`)}
|
|
96
|
+
/>
|
|
97
|
+
))}
|
|
98
|
+
</List>
|
|
99
|
+
</ListPage>
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (ctx.path === '/details') {
|
|
104
|
+
return (
|
|
105
|
+
<DetailPage
|
|
106
|
+
title="Details"
|
|
107
|
+
description="One item inside the module."
|
|
108
|
+
back={{ label: 'Home', onClick: () => ctx.navigate(ctx.base) }}
|
|
109
|
+
aside={<DataList rows={rows} />}
|
|
110
|
+
asideLabel="About this item"
|
|
111
|
+
>
|
|
112
|
+
<Text as="p" variant="body" measure="body">
|
|
113
|
+
This detail view uses DetailPage with the module facts in its hideable aside column.
|
|
114
|
+
</Text>
|
|
115
|
+
</DetailPage>
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (ctx.path === '/settings') {
|
|
120
|
+
return (
|
|
121
|
+
<FormPage
|
|
122
|
+
title="Settings"
|
|
123
|
+
description="Display preferences for this module."
|
|
124
|
+
back={{ label: 'Home', onClick: () => ctx.navigate(ctx.base) }}
|
|
125
|
+
>
|
|
126
|
+
<DashboardSection title="Display" card>
|
|
127
|
+
<SettingRow
|
|
128
|
+
label="Compact view"
|
|
129
|
+
description="Show denser rows in this module."
|
|
130
|
+
value={ctx.settings?.get?.('compact') ? 'On' : 'Off'}
|
|
131
|
+
/>
|
|
132
|
+
<SettingRow
|
|
133
|
+
label="Welcome message"
|
|
134
|
+
description="Greeting shown on the module home screen."
|
|
135
|
+
value={ctx.settings?.get?.('welcome') ?? 'Hello'}
|
|
136
|
+
/>
|
|
137
|
+
</DashboardSection>
|
|
138
|
+
</FormPage>
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
|
|
59
142
|
return (
|
|
60
|
-
<
|
|
143
|
+
<Dashboard
|
|
144
|
+
title={`Hello, ${ctx.person.name ?? ctx.person.email}`}
|
|
145
|
+
description="Module overview and workspace connection."
|
|
146
|
+
primary={{ label: 'Open details', onClick: () => ctx.navigate(`${ctx.base}/details`) }}
|
|
147
|
+
>
|
|
61
148
|
<Stack gap="groups">
|
|
62
149
|
<Text as="p" variant="lead" data-tour="example-intro">
|
|
63
150
|
This screen comes from a module's own bundle. It uses MM-Work's React and design system, and reads Drive through MM-Work.
|
|
64
151
|
</Text>
|
|
65
152
|
<Card data-tour="example-overview" title="What the module sees" icon="info">
|
|
66
|
-
<DataList rows={
|
|
67
|
-
{ label: 'Workspace', value: ctx.workspace.name },
|
|
68
|
-
{ label: 'Address in MM-Work', value: `${ctx.base}${ctx.path === '/' ? '' : ctx.path}` },
|
|
69
|
-
{ label: 'Recent files (files.list)', value: failed ? 'Drive is not connected' : files === null ? 'Loading…' : String(files.length) },
|
|
70
|
-
{ label: 'Review files job', value: ctx.can('files.review') ? 'Held' : 'Not held' },
|
|
71
|
-
]} />
|
|
153
|
+
<DataList rows={rows} />
|
|
72
154
|
</Card>
|
|
73
155
|
<Cluster data-tour="example-actions">
|
|
156
|
+
<Button variant="secondary" onClick={() => ctx.navigate(`${ctx.base}/items`)}>Browse items</Button>
|
|
74
157
|
<Button variant="secondary" onClick={() => ctx.navigate(`${ctx.base}/details`)}>Open a page inside the module</Button>
|
|
158
|
+
<Button variant="secondary" onClick={() => ctx.navigate(`${ctx.base}/settings`)}>Settings</Button>
|
|
75
159
|
<Button variant="ghost" onClick={() => ctx.navigate('/files')}>Go to Files</Button>
|
|
76
160
|
</Cluster>
|
|
77
161
|
</Stack>
|
|
78
|
-
</
|
|
162
|
+
</Dashboard>
|
|
79
163
|
);
|
|
80
164
|
}
|
|
81
165
|
|