@1agh/maude 0.60.7 → 1.0.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/acp/index.ts +1 -0
- package/apps/studio/ai-banner.tsx +1 -0
- package/apps/studio/annotations-context-toolbar.tsx +3 -1
- package/apps/studio/annotations-layer.tsx +33 -16
- package/apps/studio/api.ts +108 -18
- package/apps/studio/artboard-guides-overlay.tsx +5 -1
- package/apps/studio/assets-s3.ts +6 -1
- package/apps/studio/bin/_import-figma.mjs +8 -3
- package/apps/studio/build.ts +1 -1
- package/apps/studio/canvas-artifacts.ts +21 -0
- package/apps/studio/canvas-build.ts +14 -9
- package/apps/studio/canvas-comment-mount.tsx +27 -30
- package/apps/studio/canvas-icons.tsx +1 -1
- package/apps/studio/canvas-lib.tsx +94 -5
- package/apps/studio/canvas-list-watch.ts +14 -1
- package/apps/studio/canvas-shell.tsx +8 -0
- package/apps/studio/client/app.jsx +224 -45
- package/apps/studio/client/panels/GitPanel.jsx +121 -13
- package/apps/studio/client/panels/SettingsPanel.jsx +1 -1
- package/apps/studio/client/panels/SyncConsentDialog.jsx +182 -0
- package/apps/studio/client/panels/SyncPanel.jsx +595 -1
- package/apps/studio/client/styles/3-shell-maude.css +38 -0
- package/apps/studio/clip-ops.ts +8 -1
- package/apps/studio/cloud/endpoints.ts +265 -3
- package/apps/studio/collab/origins.ts +3 -1
- package/apps/studio/comments-overlay.tsx +5 -0
- package/apps/studio/config.schema.json +24 -0
- package/apps/studio/context-menu.tsx +40 -27
- package/apps/studio/context.ts +57 -8
- package/apps/studio/cursors-overlay.tsx +25 -13
- package/apps/studio/dist/client.bundle.js +686 -686
- package/apps/studio/dist/comment-mount.js +2 -2
- package/apps/studio/dist/styles.css +1 -1
- package/apps/studio/exporters/jobs.ts +77 -15
- package/apps/studio/exporters/remote.ts +201 -0
- package/apps/studio/exporters/video-encode-lib.ts +10 -4
- package/apps/studio/figma/to-strokes.ts +11 -9
- package/apps/studio/gifenc.d.ts +51 -0
- package/apps/studio/git/log-format.ts +88 -0
- package/apps/studio/git/safe-rel.ts +96 -0
- package/apps/studio/git/service.ts +46 -27
- package/apps/studio/hmr-broadcast.ts +10 -0
- package/apps/studio/http.ts +384 -6
- package/apps/studio/participants-chrome.tsx +1 -0
- package/apps/studio/photo-store.ts +7 -0
- package/apps/studio/react-augment.d.ts +17 -0
- package/apps/studio/runtime-bundle.ts +6 -1
- package/apps/studio/server.ts +43 -8
- package/apps/studio/sync/agent.ts +70 -82
- package/apps/studio/sync/asset-push.ts +28 -71
- package/apps/studio/sync/autocommit.ts +106 -5
- package/apps/studio/sync/cell-file-events.ts +117 -0
- package/apps/studio/sync/cell-pairing.ts +20 -5
- package/apps/studio/sync/cell-write-nudge.ts +244 -0
- package/apps/studio/sync/codec.ts +155 -3
- package/apps/studio/sync/cold-start-apply.ts +211 -0
- package/apps/studio/sync/ctl-heal.ts +253 -0
- package/apps/studio/sync/ctl-provider.ts +217 -0
- package/apps/studio/sync/decide-file.ts +335 -0
- package/apps/studio/sync/file-ledger.ts +581 -0
- package/apps/studio/sync/file-membership.ts +32 -0
- package/apps/studio/sync/file-plane.ts +1400 -0
- package/apps/studio/sync/file-pull.ts +41 -4
- package/apps/studio/sync/hub-link.ts +16 -1
- package/apps/studio/sync/hub-listing.ts +46 -0
- package/apps/studio/sync/hubs-config.ts +16 -0
- package/apps/studio/sync/index.ts +915 -308
- package/apps/studio/sync/journal-client.ts +200 -0
- package/apps/studio/sync/migrate-seed.ts +99 -67
- package/apps/studio/sync/poke.ts +50 -0
- package/apps/studio/sync/projection.ts +13 -0
- package/apps/studio/sync/pull-budget.ts +86 -0
- package/apps/studio/sync/settings.ts +110 -0
- package/apps/studio/sync/status.ts +68 -0
- package/apps/studio/sync/trash.ts +243 -0
- package/apps/studio/sync/untrusted.ts +30 -10
- package/apps/studio/test/_helpers.ts +8 -0
- package/apps/studio/test/canvas-build.test.ts +63 -0
- package/apps/studio/test/canvas-list-watch.test.ts +17 -0
- package/apps/studio/test/canvas-move-api.test.ts +31 -0
- package/apps/studio/test/canvas-origin-gate.test.ts +12 -0
- package/apps/studio/test/canvas-shell-build-error.test.ts +49 -0
- package/apps/studio/test/cloud-history-hardening.test.ts +165 -0
- package/apps/studio/test/cloud-history-posture.test.ts +230 -0
- package/apps/studio/test/cloud-session-role.test.ts +30 -0
- package/apps/studio/test/cloud-shell-surfaces.test.ts +39 -0
- package/apps/studio/test/cold-start-apply.test.ts +303 -0
- package/apps/studio/test/collab-stress.test.ts +9 -1
- package/apps/studio/test/export-lane.test.ts +245 -0
- package/apps/studio/test/fixtures/video-comp-fixture.tsx +1 -1
- package/apps/studio/test/git-log-format.test.ts +95 -0
- package/apps/studio/test/git-safe-rel.test.ts +132 -0
- package/apps/studio/test/hmr-broadcast.test.ts +26 -0
- package/apps/studio/test/peer-selection-follows-camera.test.tsx +131 -0
- package/apps/studio/test/shared-doc-cell-pairing.test.ts +5 -2
- package/apps/studio/test/sync-agent.test.ts +78 -0
- package/apps/studio/test/sync-asset-push.test.ts +71 -108
- package/apps/studio/test/sync-autocommit.test.ts +80 -0
- package/apps/studio/test/sync-cell-write-nudge.test.ts +346 -0
- package/apps/studio/test/sync-ctl-channel.test.ts +508 -0
- package/apps/studio/test/sync-decide-file.test.ts +420 -0
- package/apps/studio/test/sync-file-ledger.test.ts +334 -0
- package/apps/studio/test/sync-file-membership.test.ts +17 -1
- package/apps/studio/test/sync-file-plane.test.ts +976 -0
- package/apps/studio/test/sync-hub-listing.test.ts +46 -0
- package/apps/studio/test/sync-meta-codec.test.ts +76 -0
- package/apps/studio/test/sync-move-retirement.test.ts +231 -0
- package/apps/studio/test/sync-panel-surface.test.ts +20 -0
- package/apps/studio/test/sync-path-pull.test.ts +67 -1
- package/apps/studio/test/sync-pull-budget.test.ts +169 -0
- package/apps/studio/test/sync-seed-defers-to-hub.test.ts +83 -0
- package/apps/studio/test/sync-settings-routes.test.ts +195 -0
- package/apps/studio/test/sync-settings.test.ts +151 -0
- package/apps/studio/test/sync-status.test.ts +69 -0
- package/apps/studio/test/sync-trash.test.ts +132 -0
- package/apps/studio/test/workspace-containment.test.ts +45 -9
- package/apps/studio/tsconfig.json +9 -10
- package/apps/studio/use-annotation-resize.tsx +14 -3
- package/apps/studio/use-collab.tsx +3 -1
- package/apps/studio/whats-new.json +90 -0
- package/apps/studio/workspace-mode.ts +110 -62
- package/apps/studio/ws.ts +22 -1
- package/cli/bin/claude-design-server.mjs +19 -0
- package/cli/commands/design.mjs +25 -6
- package/cli/commands/hub-workspace.mjs +243 -22
- package/cli/commands/hub-workspace.test.mjs +171 -0
- package/cli/commands/hub.mjs +71 -1
- package/cli/lib/design-link.mjs +186 -1
- package/cli/lib/design-ownership.mjs +330 -0
- package/cli/lib/design-ownership.test.mjs +329 -0
- package/cli/lib/hubs-config.mjs +21 -0
- package/cli/lib/hubs-config.test.mjs +47 -1
- package/cli/lib/workspace-plan.mjs +298 -5
- package/cli/lib/workspace-plan.test.mjs +215 -1
- package/package.json +10 -10
- package/plugins/design/templates/_shell.html +43 -2
- package/plugins/design/templates/design-system-inspiration/SUB-AGENT-PROMPTS.md +1 -1
- package/plugins/design/templates/design-system-inspiration/core/preview/_motion-readme.md.tpl +1 -1
- package/apps/studio/server.mjs +0 -1312
- package/apps/studio/sync/asset-pull.ts +0 -210
- package/apps/studio/sync/asset-push-worker.ts +0 -84
- package/apps/studio/sync/asset-sweep.ts +0 -262
- package/apps/studio/test/sync-asset-pull.test.ts +0 -161
- package/apps/studio/test/sync-asset-push-worker.test.ts +0 -183
- package/apps/studio/test/sync-asset-sweep.test.ts +0 -243
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@1agh/maude",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Marketplace of Claude Code plugins by Michal Dovrtěl: `design` (canvas-first design iteration) + `flow` (generic agentic workflow loop with .ai second brain). Ships the `maude` CLI (with `mdcc` legacy alias) to scaffold workspace, run the design dev server, and manage configs.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"mdcc": "cli/bin/mdcc.mjs",
|
|
15
15
|
"maude-safe": "cli/cli-wrapper.cjs",
|
|
16
16
|
"mdcc-safe": "cli/cli-wrapper.cjs",
|
|
17
|
-
"claude-design-server": "
|
|
17
|
+
"claude-design-server": "cli/bin/claude-design-server.mjs"
|
|
18
18
|
},
|
|
19
19
|
"scripts": {
|
|
20
20
|
"start": "bun run apps/studio/server.ts",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"build": "pnpm -r --if-present --filter '!@maude/desktop' '!@maude/desktop-e2e' run build",
|
|
31
31
|
"build:binary": "bun run apps/studio/build.ts --release",
|
|
32
32
|
"test": "node --test --test-reporter=spec cli/**/*.test.mjs && pnpm --filter @maude/hub test",
|
|
33
|
-
"test:dev-server": "cd apps/studio && bun test",
|
|
33
|
+
"test:dev-server": "cd apps/studio && bun test --timeout 20000",
|
|
34
34
|
"lint": "biome check .",
|
|
35
35
|
"format": "biome format --write .",
|
|
36
36
|
"changeset": "changeset",
|
|
@@ -54,13 +54,13 @@
|
|
|
54
54
|
"test:e2e:desktop:parity:cloud": "pnpm --filter @maude/desktop-e2e e2e:parity:cloud"
|
|
55
55
|
},
|
|
56
56
|
"optionalDependencies": {
|
|
57
|
-
"@1agh/maude-darwin-arm64": "0.
|
|
58
|
-
"@1agh/maude-darwin-x64": "0.
|
|
59
|
-
"@1agh/maude-linux-arm64": "0.
|
|
60
|
-
"@1agh/maude-linux-arm64-musl": "0.
|
|
61
|
-
"@1agh/maude-linux-x64": "0.
|
|
62
|
-
"@1agh/maude-linux-x64-musl": "0.
|
|
63
|
-
"@1agh/maude-win32-x64": "0.
|
|
57
|
+
"@1agh/maude-darwin-arm64": "1.0.3",
|
|
58
|
+
"@1agh/maude-darwin-x64": "1.0.3",
|
|
59
|
+
"@1agh/maude-linux-arm64": "1.0.3",
|
|
60
|
+
"@1agh/maude-linux-arm64-musl": "1.0.3",
|
|
61
|
+
"@1agh/maude-linux-x64": "1.0.3",
|
|
62
|
+
"@1agh/maude-linux-x64-musl": "1.0.3",
|
|
63
|
+
"@1agh/maude-win32-x64": "1.0.3"
|
|
64
64
|
},
|
|
65
65
|
"files": [
|
|
66
66
|
"cli",
|
|
@@ -274,7 +274,11 @@
|
|
|
274
274
|
.catch((err) => {
|
|
275
275
|
// Build/transpile/import error → keep the current render, surface a
|
|
276
276
|
// non-destructive "holding" toast. Next good build swaps it in.
|
|
277
|
-
|
|
277
|
+
// Same M8 diagnosis as the mount path: the 422 body names the
|
|
278
|
+
// culprit, the TypeError never does.
|
|
279
|
+
diagnoseImportFailure(canvasUrl, err).then((msg) => {
|
|
280
|
+
if (rt.setHolding) rt.setHolding(true, msg || 'build error');
|
|
281
|
+
});
|
|
278
282
|
console.warn('[canvas-shell] soft-reload held last good (build error):', err);
|
|
279
283
|
});
|
|
280
284
|
}
|
|
@@ -296,6 +300,30 @@
|
|
|
296
300
|
console.error('[canvas-shell]', msg);
|
|
297
301
|
}
|
|
298
302
|
|
|
303
|
+
// Spike finding M8 — a failed dynamic import throws a bare
|
|
304
|
+
// "TypeError: Failed to fetch dynamically imported module", and the
|
|
305
|
+
// browser DISCARDS the response body, which for a 422 is the one thing
|
|
306
|
+
// worth reading ("Canvas build error: this canvas imports …"). The spike
|
|
307
|
+
// burned several rounds on token/cookie hypotheses when the server had
|
|
308
|
+
// already written the answer into the body; it took a manual curl to see
|
|
309
|
+
// it. So: when the import fails, fetch the same URL once more and, if the
|
|
310
|
+
// server answered with a legible non-2xx body, show THAT.
|
|
311
|
+
function diagnoseImportFailure(url, err) {
|
|
312
|
+
const fallback = (err && (err.stack || err.message)) || String(err);
|
|
313
|
+
if (!url) return Promise.resolve(fallback);
|
|
314
|
+
return fetch(url, { headers: { 'Cache-Control': 'no-store' } })
|
|
315
|
+
.then((r) => {
|
|
316
|
+
if (r.ok) return fallback; // import failed but the fetch is fine → the error was in the module itself
|
|
317
|
+
return r.text().then((body) => {
|
|
318
|
+
const text = (body || '').trim();
|
|
319
|
+
if (!text) return 'HTTP ' + r.status + ' for ' + url + '\n\n' + fallback;
|
|
320
|
+
// Cap it — a build error is a paragraph, not a payload.
|
|
321
|
+
return 'HTTP ' + r.status + ' — ' + text.slice(0, 4000);
|
|
322
|
+
});
|
|
323
|
+
})
|
|
324
|
+
.catch(() => fallback);
|
|
325
|
+
}
|
|
326
|
+
|
|
299
327
|
// ---------------------------------------------------------------------
|
|
300
328
|
// HMR client — listens for `canvas-hmr` messages on /_ws. Three modes:
|
|
301
329
|
// - css: swap <link> href with ?v=<version> cache bust.
|
|
@@ -475,6 +503,17 @@
|
|
|
475
503
|
// now), so both URLs converge on the good bytes.
|
|
476
504
|
const assetName = (msg.file || '').split('/').pop();
|
|
477
505
|
if (!assetName) return;
|
|
506
|
+
// A PhotoEdit sidecar (`<sha8>.photo.json`) — nothing on the
|
|
507
|
+
// page references the sidecar itself, so re-pointing <img> would
|
|
508
|
+
// be a no-op. Hand the fact to the canvas instead: canvas-lib's
|
|
509
|
+
// PhotoPreviewBridge re-fetches the edit and re-bakes the photo.
|
|
510
|
+
if (/\.photo\.json$/i.test(assetName)) {
|
|
511
|
+
const sha8 = assetName.replace(/\.photo\.json$/i, '');
|
|
512
|
+
document.dispatchEvent(
|
|
513
|
+
new CustomEvent('maude:photo-edit-refreshed', { detail: { sha8: sha8 } })
|
|
514
|
+
);
|
|
515
|
+
return;
|
|
516
|
+
}
|
|
478
517
|
const v = msg.version || Date.now();
|
|
479
518
|
const nameMatches = function (u) {
|
|
480
519
|
if (!u) return false;
|
|
@@ -578,7 +617,9 @@
|
|
|
578
617
|
} catch (e) { /* parent gone */ }
|
|
579
618
|
}, 800);
|
|
580
619
|
} catch (err) {
|
|
581
|
-
|
|
620
|
+
// The canvas module is the import worth diagnosing — comment-mount is
|
|
621
|
+
// ours and does not 422 on tenant content.
|
|
622
|
+
diagnoseImportFailure(canvasUrl, err).then(showError);
|
|
582
623
|
}
|
|
583
624
|
}
|
|
584
625
|
</script>
|
|
@@ -262,7 +262,7 @@ No slice-specific addenda — the base template covers them.
|
|
|
262
262
|
|
|
263
263
|
- Owner skill: `plugins/design/skills/design-system/SKILL.md` (BOOTSTRAP flow → "Batches B + C — parallel fan-out via sub-agents" section loads this file)
|
|
264
264
|
- Discovery probe templates (sibling): `plugins/design/skills/design-system/_pastier-probe-templates.md`
|
|
265
|
-
- Motion library decision: `.ai/decisions/DDR-049-motion-one-as-canonical-motion-library.md`
|
|
265
|
+
- Motion library decision: `.ai/archive/decisions/DDR-049-motion-one-as-canonical-motion-library.md`
|
|
266
266
|
- Imprint-bootstrap retro (source of D-1 … D-5): `.ai/logs/system-reviews/imprint-bootstrap-review-2026-05-26.md`
|
|
267
267
|
- Asset sweep helper: `maude design asset-sweep` (on-PATH `maude` dispatches to the bundled helper — DDR-062)
|
|
268
268
|
- Visual sanity helper: `maude design visual-sanity` (on-PATH `maude` dispatches to the bundled helper — DDR-062)
|
package/plugins/design/templates/design-system-inspiration/core/preview/_motion-readme.md.tpl
CHANGED
|
@@ -57,7 +57,7 @@ Per DDR-049: a canvas that imports `<MotionDemo>` or any sibling motion helper f
|
|
|
57
57
|
## Cross-links
|
|
58
58
|
|
|
59
59
|
- Library source: `apps/studio/canvas-lib.tsx` (`MotionDemo`, `MotionTrack`, `TokenPlayback`, `ReducedMotionToggle`, `useMotionTokens`, `easingFromToken`)
|
|
60
|
-
- Library decision: `.ai/decisions/DDR-049-motion-one-as-canonical-motion-library.md`
|
|
60
|
+
- Library decision: `.ai/archive/decisions/DDR-049-motion-one-as-canonical-motion-library.md`
|
|
61
61
|
- Sub-agent safety block: `plugins/design/templates/design-system-inspiration/SUB-AGENT-PROMPTS.md` → ANIMATION SAFETY
|
|
62
62
|
- Tokens: `colors_and_type.css.tpl` (lines around `--dur-*` + `--ease-*`)
|
|
63
63
|
- CSS escape hatch: `_components.css.tpl` (`.motion-flip`, `.motion-panel`, ... `.motion-presence`)
|