@1agh/maude 0.60.1 → 0.60.3
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/apps/studio/client/app.jsx +1 -0
- package/apps/studio/client/panels/SyncPanel.jsx +26 -11
- package/apps/studio/dist/client.bundle.js +393 -393
- package/apps/studio/http.ts +36 -6
- package/apps/studio/server.ts +11 -0
- package/apps/studio/sync/asset-push.ts +30 -0
- package/apps/studio/sync/connection-state.ts +23 -0
- package/apps/studio/sync/discovery.ts +139 -0
- package/apps/studio/sync/index.ts +804 -163
- package/apps/studio/test/sync-asset-push.test.ts +93 -2
- package/apps/studio/test/sync-attach-incremental.test.ts +527 -0
- package/apps/studio/test/sync-panel-surface.test.ts +10 -0
- package/apps/studio/test/sync-resync-routes.test.ts +43 -0
- package/apps/studio/test/sync-supervisor.test.ts +4 -0
- package/apps/studio/test/sync-two-peer-discovery.test.ts +343 -0
- package/apps/studio/whats-new.json +18 -0
- package/cli/commands/doctor.mjs +141 -6
- package/cli/lib/gitignore-drift.mjs +149 -0
- package/cli/lib/gitignore-drift.test.mjs +156 -0
- package/package.json +9 -9
|
@@ -14474,6 +14474,7 @@ function App() {
|
|
|
14474
14474
|
<SyncPanel
|
|
14475
14475
|
status={syncStatus}
|
|
14476
14476
|
project={cfg?.cloud?.projectName || project}
|
|
14477
|
+
cloud={cfg?.cloud ?? null}
|
|
14477
14478
|
groupPaths={(groups || []).map((g) => g.path).filter(Boolean)}
|
|
14478
14479
|
resizing={resizingFor('sync')}
|
|
14479
14480
|
onClose={() => setSyncPanelOpen(false)}
|
|
@@ -93,6 +93,9 @@ export default function SyncPanel({
|
|
|
93
93
|
status, // the live `sync:status` payload (never null while mounted)
|
|
94
94
|
project, // display name for the header sentence (hub-supplied → safeName'd)
|
|
95
95
|
groupPaths = [], // declared canvas-group paths, for row grouping
|
|
96
|
+
// Present exactly when the hub runs this studio (`/_config`'s `cloud` block);
|
|
97
|
+
// null on the desktop. Decides whether Resync is offered at all — see below.
|
|
98
|
+
cloud = null,
|
|
96
99
|
resizing,
|
|
97
100
|
onClose,
|
|
98
101
|
}) {
|
|
@@ -190,17 +193,29 @@ export default function SyncPanel({
|
|
|
190
193
|
<span className="gp-spacer" />
|
|
191
194
|
{/* Resync re-runs the WHOLE sync — every canvas and every asset — so
|
|
192
195
|
it lives in the header, not inside the assets section. It is
|
|
193
|
-
`syncControl.restart()`, the same cycle Connect performs.
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
196
|
+
`syncControl.restart()`, the same cycle Connect performs.
|
|
197
|
+
|
|
198
|
+
NOT IN THE CLOUD. On a cell the sync runtime belongs to the process
|
|
199
|
+
serving the project to EVERYONE, so restarting it is an operator
|
|
200
|
+
action, not a member's — the hub refuses the route there on
|
|
201
|
+
purpose (v0.60.2). Rendering the button anyway meant a cloud member
|
|
202
|
+
could press a control that cannot work by design and be handed an
|
|
203
|
+
error for it; the honest surface is its absence. Discovery is
|
|
204
|
+
continuous now, so nobody needs this button to pick up a new
|
|
205
|
+
canvas — it is a repair tool, and repairing a cell is the hub's
|
|
206
|
+
job. See `.ai/logs/rca/issue-cloud-assets-open-findings.md` §5. */}
|
|
207
|
+
{!cloud && (
|
|
208
|
+
<button
|
|
209
|
+
type="button"
|
|
210
|
+
className="sp-resync"
|
|
211
|
+
data-testid="sync-resync"
|
|
212
|
+
onClick={resync}
|
|
213
|
+
disabled={resyncing || cooling}
|
|
214
|
+
title="Re-check every canvas and asset against the workspace"
|
|
215
|
+
>
|
|
216
|
+
{resyncing ? 'Resyncing…' : 'Resync'}
|
|
217
|
+
</button>
|
|
218
|
+
)}
|
|
204
219
|
<button type="button" className="gp-x" aria-label="Close" onClick={onClose}>
|
|
205
220
|
×
|
|
206
221
|
</button>
|