@mindexec/cli 0.2.457 → 0.2.459
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/desktop-workspace-state.cjs +120 -0
- package/electron/main.cjs +17 -6
- package/electron/source-smoke.mjs +21 -0
- package/electron/windows-package-smoke.mjs +8 -2
- package/package.json +6 -5
- package/remote-fast/osx-arm64/mindexec-remote-fast.dll +0 -0
- package/remote-fast/osx-x64/mindexec-remote-fast.dll +0 -0
- package/remote-fast/win-x64/mindexec-remote-fast.dll +0 -0
- package/scripts/desktop-workspace-state-smoke.mjs +81 -0
- package/scripts/remote-fleet-render-smoke.mjs +29 -186
- package/server.js +36 -16
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-animated-image-preview.js +270 -0
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +57 -53
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +51 -346
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-interactions.js +30 -26
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +94 -124
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-menu-manager.js +43 -21
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-nodes.js +45 -13
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-render-plan.js +117 -1
- package/wwwroot/_content/MindExecution.Shared/js/mind-map-texture-factory.js +4 -1
- package/wwwroot/_framework/{MindExecution.Core.speado072l.dll → MindExecution.Core.b973f5f64y.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Kernel.mjy31ssdac.dll → MindExecution.Kernel.k4h9fvi9wb.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Admin.vbjjmdaao2.dll → MindExecution.Plugins.Admin.u2emae8cb5.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Business.0cr5jc6wqe.dll → MindExecution.Plugins.Business.cysw4qtyke.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Concept.m7p666e0jd.dll → MindExecution.Plugins.Concept.8iehgvzjio.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.Directory.kmdtirnljl.dll → MindExecution.Plugins.Directory.t621fsxq2i.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.PlanMaster.m1pfeozacj.dll → MindExecution.Plugins.PlanMaster.ft631uc7ki.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Plugins.YouTube.nvsc9q4s6b.dll → MindExecution.Plugins.YouTube.arivgu92h1.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Shared.9jaznballd.dll → MindExecution.Shared.wm997st9eb.dll} +0 -0
- package/wwwroot/_framework/{MindExecution.Web.k5jxwawryl.dll → MindExecution.Web.osdbdrue4h.dll} +0 -0
- package/wwwroot/_framework/blazor.boot.json +21 -21
- package/wwwroot/app-icon-1024.png +0 -0
- package/wwwroot/apple-touch-icon.png +0 -0
- package/wwwroot/appsettings.json +81 -81
- package/wwwroot/favicon-32x32.png +0 -0
- package/wwwroot/favicon.ico +0 -0
- package/wwwroot/icon-192.png +0 -0
- package/wwwroot/icon-512.png +0 -0
- package/wwwroot/index.html +750 -726
- package/wwwroot/manifest.webmanifest +4 -4
- package/wwwroot/mindexec-favicon-v3.png +0 -0
- package/wwwroot/service-worker-assets.js +888 -880
- package/wwwroot/service-worker.js +1 -1
|
@@ -6,10 +6,13 @@
|
|
|
6
6
|
const INITIAL_LINE_TEXTURE_ROWS = 1024;
|
|
7
7
|
const GPU_WARM_RETRY_DELAY_MS = 120;
|
|
8
8
|
const IMAGE_ATLAS_TILE_SIZE = 128;
|
|
9
|
+
const IMAGE_ATLAS_UPLOAD_SETTLE_MS = 1000;
|
|
10
|
+
const IMAGE_ATLAS_UPLOAD_MAX_WAIT_MS = 3500;
|
|
9
11
|
const frameSampleStates = new WeakMap();
|
|
10
12
|
const residentLinePrewarmStates = new WeakMap();
|
|
11
13
|
const residentTransitionStates = new WeakMap();
|
|
12
14
|
const cssMediaFrameDomStates = new WeakMap();
|
|
15
|
+
const imageAtlasUploadStates = new WeakMap();
|
|
13
16
|
let cssMediaFrameDomReuseCount = 0;
|
|
14
17
|
let cssMediaFrameDomApplyCount = 0;
|
|
15
18
|
const RESIDENT_CSS_CACHE_TEXT_TYPES = new Set(['text', 'note', 'memo', 'markdown', 'code', 'csv-table']);
|
|
@@ -447,6 +450,108 @@
|
|
|
447
450
|
return true;
|
|
448
451
|
}
|
|
449
452
|
|
|
453
|
+
function prepareImageAtlasForEntries(renderer, entries) {
|
|
454
|
+
let imageCount = 0;
|
|
455
|
+
for (const entry of entries || []) {
|
|
456
|
+
const model = entry?.model || null;
|
|
457
|
+
const contentType = String(model?.contentType ?? model?.ContentType ?? '').toLowerCase();
|
|
458
|
+
if (contentType === 'video') {
|
|
459
|
+
imageCount++;
|
|
460
|
+
continue;
|
|
461
|
+
}
|
|
462
|
+
if (contentType === 'image') {
|
|
463
|
+
if (globalThis.MindMapNodes?.isAnimatedGifImageNodeModel?.(model) !== true) imageCount++;
|
|
464
|
+
continue;
|
|
465
|
+
}
|
|
466
|
+
if (contentType === 'embed') {
|
|
467
|
+
const urls = globalThis.MindMapNodes?.getNodeImageAssetUrls?.(model) || null;
|
|
468
|
+
if (urls?.thumbnailUrl || urls?.snapshotUrl || urls?.previewImageUrl) imageCount++;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
return prepareImageAtlasCapacity(renderer, imageCount);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
function uploadImageAtlasTile(renderer, slot, canvas) {
|
|
475
|
+
const webglRenderer = renderer?.renderer || null;
|
|
476
|
+
const gl = renderer?.gl || webglRenderer?.getContext?.() || null;
|
|
477
|
+
const texture = renderer?.imageAtlasTexture || null;
|
|
478
|
+
if (!webglRenderer?.initTexture || !gl || !texture || !canvas || !(slot?.slotIndex >= 0)) return false;
|
|
479
|
+
|
|
480
|
+
let savedTexture = null;
|
|
481
|
+
let savedFlipY = null;
|
|
482
|
+
let savedPremultiply = null;
|
|
483
|
+
let savedColorspace = null;
|
|
484
|
+
try {
|
|
485
|
+
webglRenderer.initTexture(texture);
|
|
486
|
+
const handle = webglRenderer.properties?.get?.(texture)?.__webglTexture || null;
|
|
487
|
+
if (!handle) return false;
|
|
488
|
+
savedTexture = gl.getParameter(gl.TEXTURE_BINDING_2D);
|
|
489
|
+
savedFlipY = gl.getParameter(gl.UNPACK_FLIP_Y_WEBGL);
|
|
490
|
+
savedPremultiply = gl.getParameter(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL);
|
|
491
|
+
savedColorspace = gl.getParameter(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL);
|
|
492
|
+
const columns = Math.max(1, Number(renderer.imageAtlasColumns || 1));
|
|
493
|
+
const x = (slot.slotIndex % columns) * IMAGE_ATLAS_TILE_SIZE;
|
|
494
|
+
const y = Math.floor(slot.slotIndex / columns) * IMAGE_ATLAS_TILE_SIZE;
|
|
495
|
+
gl.bindTexture(gl.TEXTURE_2D, handle);
|
|
496
|
+
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
|
|
497
|
+
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false);
|
|
498
|
+
gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, gl.NONE);
|
|
499
|
+
gl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, gl.RGBA, gl.UNSIGNED_BYTE, canvas);
|
|
500
|
+
renderer._imageAtlasTileUploadCount = Number(renderer._imageAtlasTileUploadCount || 0) + 1;
|
|
501
|
+
renderer._residentGpuWarmKey = '';
|
|
502
|
+
renderer._residentImageAtlasWarmVersion = -1;
|
|
503
|
+
return true;
|
|
504
|
+
} catch {
|
|
505
|
+
return false;
|
|
506
|
+
} finally {
|
|
507
|
+
if (savedFlipY !== null) gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, savedFlipY);
|
|
508
|
+
if (savedPremultiply !== null) gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, savedPremultiply);
|
|
509
|
+
if (savedColorspace !== null) gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, savedColorspace);
|
|
510
|
+
if (savedTexture !== null) gl.bindTexture(gl.TEXTURE_2D, savedTexture);
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
function scheduleImageAtlasUpload(renderer, module = renderer?._module) {
|
|
515
|
+
if (!renderer?.imageAtlasTexture || renderer?._disposed === true) return false;
|
|
516
|
+
const now = typeof performance !== 'undefined' ? performance.now() : Date.now();
|
|
517
|
+
let state = imageAtlasUploadStates.get(renderer);
|
|
518
|
+
if (!state) {
|
|
519
|
+
state = { timer: 0, startedAt: now, pending: false, epoch: 0 };
|
|
520
|
+
imageAtlasUploadStates.set(renderer, state);
|
|
521
|
+
}
|
|
522
|
+
state.pending = true;
|
|
523
|
+
state.epoch = Number(renderer._residentStaticPreviewEpoch || 0);
|
|
524
|
+
if (!(state.startedAt > 0)) state.startedAt = now;
|
|
525
|
+
if (state.timer) clearTimeout(state.timer);
|
|
526
|
+
const elapsedMs = Math.max(0, now - state.startedAt);
|
|
527
|
+
const delayMs = Math.max(0, Math.min(
|
|
528
|
+
IMAGE_ATLAS_UPLOAD_SETTLE_MS,
|
|
529
|
+
IMAGE_ATLAS_UPLOAD_MAX_WAIT_MS - elapsedMs
|
|
530
|
+
));
|
|
531
|
+
state.timer = setTimeout(() => {
|
|
532
|
+
state.timer = 0;
|
|
533
|
+
if (!state.pending || renderer._disposed === true ||
|
|
534
|
+
state.epoch !== Number(renderer._residentStaticPreviewEpoch || 0)) return;
|
|
535
|
+
state.pending = false;
|
|
536
|
+
state.startedAt = 0;
|
|
537
|
+
if (!renderer.imageAtlasTexture) return;
|
|
538
|
+
renderer.imageAtlasTexture.needsUpdate = true;
|
|
539
|
+
renderer._imageAtlasTextureUploadCount = Number(renderer._imageAtlasTextureUploadCount || 0) + 1;
|
|
540
|
+
const activeModule = renderer._module || module;
|
|
541
|
+
if (activeModule) {
|
|
542
|
+
activeModule._forceUpdateFrames = Math.max(Number(activeModule._forceUpdateFrames || 0), 1);
|
|
543
|
+
activeModule.requestAnimationWake?.('image-atlas-texture-upload');
|
|
544
|
+
}
|
|
545
|
+
}, delayMs);
|
|
546
|
+
return true;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
function clearScheduledImageAtlasUpload(renderer) {
|
|
550
|
+
const state = imageAtlasUploadStates.get(renderer);
|
|
551
|
+
if (state?.timer) clearTimeout(state.timer);
|
|
552
|
+
imageAtlasUploadStates.delete(renderer);
|
|
553
|
+
}
|
|
554
|
+
|
|
450
555
|
function fallbackBatch(renderer, fallbackIds, limit = 12) {
|
|
451
556
|
const ids = Array.from(fallbackIds || []);
|
|
452
557
|
const safeLimit = Math.max(1, Number(limit || 1));
|
|
@@ -698,6 +803,12 @@
|
|
|
698
803
|
return result === true;
|
|
699
804
|
}
|
|
700
805
|
|
|
806
|
+
function hasActionableResidentLineDetails(renderer, module, lodBand) {
|
|
807
|
+
const nodeIds = renderer?.instanceData?.nodeIds || [];
|
|
808
|
+
return nodeIds.length > 0 && renderer?._hasPendingLineDetailRestore?.(lodBand) === true &&
|
|
809
|
+
areResidentLinesPrepared(renderer, module?.nodeObjectsById, nodeIds);
|
|
810
|
+
}
|
|
811
|
+
|
|
701
812
|
function hasResidentDirtyWork(renderer, camera, module, resolveLodBand, buildSelectionKey, isAnimatedGifModel) {
|
|
702
813
|
if (!renderer) return false;
|
|
703
814
|
const lodBand = camera && typeof resolveLodBand === 'function'
|
|
@@ -710,7 +821,7 @@
|
|
|
710
821
|
renderer._imageAtlasRebuildPending === true || Number(renderer._imageAtlasQueuedIds?.size || 0) > 0 ||
|
|
711
822
|
Number(renderer._imageAtlasLoadingIds?.size || 0) > 0 || Number(renderer._imageAtlasBatchReadyIds?.size || 0) > 0 ||
|
|
712
823
|
renderer._imageAtlasBatchActive === true || renderer._lodCleanupPending === true ||
|
|
713
|
-
renderer._deferLineRestorePending === true || renderer
|
|
824
|
+
renderer._deferLineRestorePending === true || hasActionableResidentLineDetails(renderer, module, lodBand) ||
|
|
714
825
|
Number(renderer._pendingLodVisibilityVersion ?? -1) >= 0 || renderer._fullResHandoffActive === true ||
|
|
715
826
|
renderer.isLoading === true || module?.isLoading === true || renderer._hasResidentLodInstances?.() !== true;
|
|
716
827
|
if (hasTypedResidentDirtyWork) {
|
|
@@ -1797,6 +1908,10 @@
|
|
|
1797
1908
|
ensureLineTextureCapacity,
|
|
1798
1909
|
renderResidentWarmScene,
|
|
1799
1910
|
prepareImageAtlasCapacity,
|
|
1911
|
+
prepareImageAtlasForEntries,
|
|
1912
|
+
uploadImageAtlasTile,
|
|
1913
|
+
scheduleImageAtlasUpload,
|
|
1914
|
+
clearScheduledImageAtlasUpload,
|
|
1800
1915
|
fallbackBatch,
|
|
1801
1916
|
reuseCssMediaFrameDom,
|
|
1802
1917
|
reuseStableVisibleCss,
|
|
@@ -1807,6 +1922,7 @@
|
|
|
1807
1922
|
invalidateActiveCssMediaFallbackCountCache,
|
|
1808
1923
|
markLodImageCssFallbacksChanged,
|
|
1809
1924
|
createTrackedLodImageCssFallbackSet,
|
|
1925
|
+
hasActionableResidentLineDetails,
|
|
1810
1926
|
hasResidentDirtyWork,
|
|
1811
1927
|
hasPendingNearCssWarmup,
|
|
1812
1928
|
reusePreparedImageInstances,
|
|
@@ -593,8 +593,11 @@
|
|
|
593
593
|
preferOriginal !== true &&
|
|
594
594
|
existingSourceKind === 'original' &&
|
|
595
595
|
(matchesOriginalUrl || isThumbnailAssetUrl(normalizedRequestedUrl));
|
|
596
|
+
const canUseMatchingOriginal =
|
|
597
|
+
matchesOriginalUrl &&
|
|
598
|
+
(preferOriginal === true || options.allowOriginalReuseForPreview !== false);
|
|
596
599
|
|
|
597
|
-
if (!(matchesRequestedUrl ||
|
|
600
|
+
if (!(matchesRequestedUrl || canUseMatchingOriginal || canUseOriginalForPreview)) {
|
|
598
601
|
return false;
|
|
599
602
|
}
|
|
600
603
|
|
package/wwwroot/_framework/{MindExecution.Core.speado072l.dll → MindExecution.Core.b973f5f64y.dll}
RENAMED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/wwwroot/_framework/{MindExecution.Web.k5jxwawryl.dll → MindExecution.Web.osdbdrue4h.dll}
RENAMED
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"mainAssemblyName": "MindExecution.Web",
|
|
3
3
|
"resources": {
|
|
4
|
-
"hash": "sha256-
|
|
4
|
+
"hash": "sha256-k2itmZGSZI4/oLV1PZkSvmP5G7hZ+KnYz6N+kaFBt1I=",
|
|
5
5
|
"fingerprinting": {
|
|
6
6
|
"Google.Protobuf.9h59ukbel7.dll": "Google.Protobuf.dll",
|
|
7
7
|
"Markdig.d1j7v41cl1.dll": "Markdig.dll",
|
|
@@ -122,16 +122,16 @@
|
|
|
122
122
|
"System.brmz7yk5qh.dll": "System.dll",
|
|
123
123
|
"netstandard.b50t77veor.dll": "netstandard.dll",
|
|
124
124
|
"System.Private.CoreLib.g6ztz7cmo2.dll": "System.Private.CoreLib.dll",
|
|
125
|
-
"MindExecution.Core.
|
|
126
|
-
"MindExecution.Kernel.
|
|
127
|
-
"MindExecution.Plugins.Admin.
|
|
128
|
-
"MindExecution.Plugins.Business.
|
|
129
|
-
"MindExecution.Plugins.Concept.
|
|
130
|
-
"MindExecution.Plugins.Directory.
|
|
131
|
-
"MindExecution.Plugins.PlanMaster.
|
|
132
|
-
"MindExecution.Plugins.YouTube.
|
|
133
|
-
"MindExecution.Shared.
|
|
134
|
-
"MindExecution.Web.
|
|
125
|
+
"MindExecution.Core.b973f5f64y.dll": "MindExecution.Core.dll",
|
|
126
|
+
"MindExecution.Kernel.k4h9fvi9wb.dll": "MindExecution.Kernel.dll",
|
|
127
|
+
"MindExecution.Plugins.Admin.u2emae8cb5.dll": "MindExecution.Plugins.Admin.dll",
|
|
128
|
+
"MindExecution.Plugins.Business.cysw4qtyke.dll": "MindExecution.Plugins.Business.dll",
|
|
129
|
+
"MindExecution.Plugins.Concept.8iehgvzjio.dll": "MindExecution.Plugins.Concept.dll",
|
|
130
|
+
"MindExecution.Plugins.Directory.t621fsxq2i.dll": "MindExecution.Plugins.Directory.dll",
|
|
131
|
+
"MindExecution.Plugins.PlanMaster.ft631uc7ki.dll": "MindExecution.Plugins.PlanMaster.dll",
|
|
132
|
+
"MindExecution.Plugins.YouTube.arivgu92h1.dll": "MindExecution.Plugins.YouTube.dll",
|
|
133
|
+
"MindExecution.Shared.wm997st9eb.dll": "MindExecution.Shared.dll",
|
|
134
|
+
"MindExecution.Web.osdbdrue4h.dll": "MindExecution.Web.dll",
|
|
135
135
|
"dotnet.native.566r55w3xu.js": "dotnet.native.js",
|
|
136
136
|
"dotnet.native.x6q5aixc38.wasm": "dotnet.native.wasm",
|
|
137
137
|
"dotnet.js": "dotnet.js",
|
|
@@ -276,18 +276,18 @@
|
|
|
276
276
|
"System.Xml.XDocument.sn51jas17n.dll": "sha256-GNI2kFgFmPTwzuzwUn8gxK+AzGLUWRJFdg9JzIbrybQ=",
|
|
277
277
|
"System.brmz7yk5qh.dll": "sha256-CfM2miyj1KHApFmqMdLYWio3S/jrdON2pW9Xr2nTwlo=",
|
|
278
278
|
"netstandard.b50t77veor.dll": "sha256-//jQGOXjb8ET8WtXgOJrAxLx6E7zDJ5RjRRutwkvmxo=",
|
|
279
|
-
"MindExecution.Core.
|
|
280
|
-
"MindExecution.Kernel.
|
|
281
|
-
"MindExecution.Plugins.Business.
|
|
282
|
-
"MindExecution.Plugins.Concept.
|
|
283
|
-
"MindExecution.Plugins.PlanMaster.
|
|
284
|
-
"MindExecution.Shared.
|
|
285
|
-
"MindExecution.Web.
|
|
279
|
+
"MindExecution.Core.b973f5f64y.dll": "sha256-gaWEYZie3oGBsJ7KNcinPxikQw7nSHgJSBllq4YEZ38=",
|
|
280
|
+
"MindExecution.Kernel.k4h9fvi9wb.dll": "sha256-DJajefF5YNuFQ7hh7Y8750yzg5kXpdE91GuofhBtiIg=",
|
|
281
|
+
"MindExecution.Plugins.Business.cysw4qtyke.dll": "sha256-bCkYY5nsWdSGvLFYVjeMGh/SLIrhErscom7vq4WW1e8=",
|
|
282
|
+
"MindExecution.Plugins.Concept.8iehgvzjio.dll": "sha256-sD9g99bCcgFnUnIivPfe19mEYg7scZKgwdHuh5fT3wM=",
|
|
283
|
+
"MindExecution.Plugins.PlanMaster.ft631uc7ki.dll": "sha256-Q54/SRbdbUoRNPbJrN9ngcsNdAN2uqHK0Or2GVU7Vx8=",
|
|
284
|
+
"MindExecution.Shared.wm997st9eb.dll": "sha256-CABTI+PIZ9ZrDZ2VoLANJ5qvthYPX32AoKv2/qdpp0E=",
|
|
285
|
+
"MindExecution.Web.osdbdrue4h.dll": "sha256-mPMX7zmQgrN1cg8qclbhRZlRm5N45je5DzrRQrunlCw="
|
|
286
286
|
},
|
|
287
287
|
"lazyAssembly": {
|
|
288
|
-
"MindExecution.Plugins.Admin.
|
|
289
|
-
"MindExecution.Plugins.Directory.
|
|
290
|
-
"MindExecution.Plugins.YouTube.
|
|
288
|
+
"MindExecution.Plugins.Admin.u2emae8cb5.dll": "sha256-xrK3EFbor2pEuhuKt/MXQSBJmTt22JYH68udxQLbEi4=",
|
|
289
|
+
"MindExecution.Plugins.Directory.t621fsxq2i.dll": "sha256-q0/3D7+gLKCW1xhY+wgOFGWCSh6AhKWfyZ0GwzanC14=",
|
|
290
|
+
"MindExecution.Plugins.YouTube.arivgu92h1.dll": "sha256-Sje33rNG7OWB8dP5QngdiqI2qWjCIfhQx7b+v8Y7AIU="
|
|
291
291
|
}
|
|
292
292
|
},
|
|
293
293
|
"cacheBootResources": true,
|
|
Binary file
|
|
Binary file
|
package/wwwroot/appsettings.json
CHANGED
|
@@ -1,83 +1,83 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
2
|
+
"OpenRouter": {
|
|
3
|
+
"ApiKey": ""
|
|
4
|
+
},
|
|
5
|
+
"Execution": {
|
|
6
|
+
"Mode": "Concept",
|
|
7
|
+
"Model": "openai/gpt-4o-mini"
|
|
8
|
+
},
|
|
9
|
+
"Supabase": {
|
|
10
|
+
"Url": "https://otbyfkjxrkngvjziawki.supabase.co",
|
|
11
|
+
"Key": "sb_publishable_NpUs0RDJH2YnllsqTKO6TQ_1jTdSsNQ"
|
|
12
|
+
},
|
|
13
|
+
"Bridge": {
|
|
14
|
+
"Url": "app-origin",
|
|
15
|
+
"FallbackPort": 5148,
|
|
16
|
+
"AllowHostedLocalFallback": false
|
|
17
|
+
},
|
|
18
|
+
"ProjectStorage": {
|
|
19
|
+
"Mode": "LocalOnly",
|
|
20
|
+
"CloudProjectsEnabled": false
|
|
21
|
+
},
|
|
22
|
+
"CloudflareR2": {
|
|
23
|
+
"ProxyUrl": "https://r2-auth-proxy.lovecrdm.workers.dev",
|
|
24
|
+
"PublicBaseUrl": "https://r2-auth-proxy.lovecrdm.workers.dev/public",
|
|
25
|
+
"PrivateSignUrl": "https://r2-auth-proxy.lovecrdm.workers.dev/sign",
|
|
26
|
+
"PrivateBatchSignUrl": "https://r2-auth-proxy.lovecrdm.workers.dev/sign-batch",
|
|
27
|
+
"PrivateUrlTtlSeconds": 900
|
|
28
|
+
},
|
|
29
|
+
"CloudflareWebCapture": {
|
|
30
|
+
"EndpointUrl": "https://web-capture-worker.lovecrdm.workers.dev/capture",
|
|
31
|
+
"RequestTimeoutMs": 45000
|
|
32
|
+
},
|
|
33
|
+
"Payments": {
|
|
34
|
+
"Provider": "dodo"
|
|
35
|
+
},
|
|
36
|
+
"DodoPayments": {
|
|
37
|
+
"DefaultProductId": "",
|
|
38
|
+
"StandardPriceId": "dodo_pro_monthly_v1",
|
|
39
|
+
"EarlyPriceId": "dodo_pro_monthly_v1",
|
|
40
|
+
"LtdPriceId": "dodo_ltd_launch_v1",
|
|
41
|
+
"ReturnUrl": "https://mindexec.pages.dev/pricing",
|
|
42
|
+
"Environment": "test_mode"
|
|
43
|
+
},
|
|
44
|
+
"Paddle": {
|
|
45
|
+
"ClientToken": "",
|
|
46
|
+
"ProMonthlyPriceId": ""
|
|
47
|
+
},
|
|
48
|
+
"ProductProfile": {
|
|
49
|
+
"VariantKey": "platform",
|
|
50
|
+
"Slug": "mindexec",
|
|
51
|
+
"BrandName": "MindExec",
|
|
52
|
+
"ProductName": "MindCanvas",
|
|
53
|
+
"AppTitle": "MindExec",
|
|
54
|
+
"WorkspaceNounSingular": "canvas",
|
|
55
|
+
"WorkspaceNounPlural": "canvases",
|
|
56
|
+
"SignInTitle": "Welcome Back",
|
|
57
|
+
"SignUpTitle": "Create Account",
|
|
58
|
+
"SignInSubtitle": "Sign in to access your MindCanvas workspace.",
|
|
59
|
+
"SignUpSubtitle": "Sign up to start organizing your ideas on a visual canvas.",
|
|
60
|
+
"PrimaryCheckoutProvider": "dodo",
|
|
61
|
+
"CanonicalHost": "localhost",
|
|
62
|
+
"DodoCatalog": {
|
|
63
|
+
"StandardPriceId": "dodo_pro_monthly_v1",
|
|
64
|
+
"EarlyPriceId": "dodo_pro_monthly_v1",
|
|
65
|
+
"LtdPriceId": "dodo_ltd_launch_v1"
|
|
66
|
+
},
|
|
67
|
+
"MarketingTool": {
|
|
68
|
+
"Enabled": false,
|
|
69
|
+
"HideAppChrome": true,
|
|
70
|
+
"AllowMindCanvasRoute": false,
|
|
71
|
+
"HomeRoute": "/",
|
|
72
|
+
"ToolKey": "",
|
|
73
|
+
"HeroEyebrow": "Free local tool",
|
|
74
|
+
"HeroTitle": "",
|
|
75
|
+
"HeroSubtitle": "",
|
|
76
|
+
"PrimaryCtaText": "Open MindCanvas",
|
|
77
|
+
"PrimaryCtaHref": "/mindcanvas",
|
|
78
|
+
"SecondaryCtaText": "",
|
|
79
|
+
"SecondaryCtaHref": "",
|
|
80
|
+
"PrivacyNote": "Runs locally in your browser. No login. No database storage."
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
83
|
}
|
|
Binary file
|
package/wwwroot/favicon.ico
CHANGED
|
Binary file
|
package/wwwroot/icon-192.png
CHANGED
|
Binary file
|
package/wwwroot/icon-512.png
CHANGED
|
Binary file
|