@mindstudio-ai/remy 0.1.75 → 0.1.76
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/dist/headless.js +107 -67
- package/dist/index.js +125 -75
- package/dist/subagents/designExpert/data/sources/ui_inspiration.json +49 -1
- package/dist/subagents/designExpert/data/sources/ui_inspiration_compiled.json +192 -0
- package/dist/subagents/designExpert/prompts/images.md +4 -2
- package/dist/subagents/designExpert/tools/images/enhance-image-prompt.md +4 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1249,9 +1249,9 @@ var init_setProjectMetadata = __esm({
|
|
|
1249
1249
|
// src/tools/code/readFile.ts
|
|
1250
1250
|
import fs6 from "fs/promises";
|
|
1251
1251
|
function isBinary(buffer) {
|
|
1252
|
-
const
|
|
1253
|
-
for (let i = 0; i <
|
|
1254
|
-
if (
|
|
1252
|
+
const sample = buffer.subarray(0, 8192);
|
|
1253
|
+
for (let i = 0; i < sample.length; i++) {
|
|
1254
|
+
if (sample[i] === 0) {
|
|
1255
1255
|
return true;
|
|
1256
1256
|
}
|
|
1257
1257
|
}
|
|
@@ -3747,21 +3747,76 @@ var init_context = __esm({
|
|
|
3747
3747
|
}
|
|
3748
3748
|
});
|
|
3749
3749
|
|
|
3750
|
-
// src/subagents/designExpert/data/
|
|
3751
|
-
|
|
3752
|
-
|
|
3753
|
-
|
|
3754
|
-
}
|
|
3755
|
-
|
|
3756
|
-
for (let i = copy.length - 1; i > 0; i--) {
|
|
3750
|
+
// src/subagents/designExpert/data/sampleCache.ts
|
|
3751
|
+
import fs13 from "fs";
|
|
3752
|
+
function generateIndices(poolSize, sampleSize) {
|
|
3753
|
+
const n = Math.min(sampleSize, poolSize);
|
|
3754
|
+
const indices = Array.from({ length: poolSize }, (_, i) => i);
|
|
3755
|
+
for (let i = indices.length - 1; i > 0; i--) {
|
|
3757
3756
|
const j = Math.floor(Math.random() * (i + 1));
|
|
3758
|
-
[
|
|
3757
|
+
[indices[i], indices[j]] = [indices[j], indices[i]];
|
|
3758
|
+
}
|
|
3759
|
+
return indices.slice(0, n);
|
|
3760
|
+
}
|
|
3761
|
+
function load() {
|
|
3762
|
+
try {
|
|
3763
|
+
return JSON.parse(fs13.readFileSync(SAMPLE_FILE, "utf-8"));
|
|
3764
|
+
} catch {
|
|
3765
|
+
return null;
|
|
3766
|
+
}
|
|
3767
|
+
}
|
|
3768
|
+
function save(indices) {
|
|
3769
|
+
try {
|
|
3770
|
+
fs13.writeFileSync(SAMPLE_FILE, JSON.stringify(indices));
|
|
3771
|
+
} catch {
|
|
3759
3772
|
}
|
|
3760
|
-
return copy.slice(0, n);
|
|
3761
3773
|
}
|
|
3762
|
-
function
|
|
3763
|
-
|
|
3764
|
-
|
|
3774
|
+
function getSampleIndices(pools, sizes) {
|
|
3775
|
+
if (cached) {
|
|
3776
|
+
return cached;
|
|
3777
|
+
}
|
|
3778
|
+
const loaded = load();
|
|
3779
|
+
if (loaded) {
|
|
3780
|
+
let dirty = false;
|
|
3781
|
+
for (const key of ["uiInspiration", "designReferences", "fonts"]) {
|
|
3782
|
+
const before = loaded[key].length;
|
|
3783
|
+
loaded[key] = loaded[key].filter((i) => i < pools[key]);
|
|
3784
|
+
if (loaded[key].length < before) {
|
|
3785
|
+
dirty = true;
|
|
3786
|
+
}
|
|
3787
|
+
}
|
|
3788
|
+
if (dirty) {
|
|
3789
|
+
save(loaded);
|
|
3790
|
+
}
|
|
3791
|
+
cached = loaded;
|
|
3792
|
+
return cached;
|
|
3793
|
+
}
|
|
3794
|
+
cached = {
|
|
3795
|
+
uiInspiration: generateIndices(pools.uiInspiration, sizes.uiInspiration),
|
|
3796
|
+
designReferences: generateIndices(
|
|
3797
|
+
pools.designReferences,
|
|
3798
|
+
sizes.designReferences
|
|
3799
|
+
),
|
|
3800
|
+
fonts: generateIndices(pools.fonts, sizes.fonts)
|
|
3801
|
+
};
|
|
3802
|
+
save(cached);
|
|
3803
|
+
return cached;
|
|
3804
|
+
}
|
|
3805
|
+
function pickByIndices(arr, indices) {
|
|
3806
|
+
return indices.filter((i) => i < arr.length).map((i) => arr[i]);
|
|
3807
|
+
}
|
|
3808
|
+
var SAMPLE_FILE, cached;
|
|
3809
|
+
var init_sampleCache = __esm({
|
|
3810
|
+
"src/subagents/designExpert/data/sampleCache.ts"() {
|
|
3811
|
+
"use strict";
|
|
3812
|
+
SAMPLE_FILE = ".remy-design-sample.json";
|
|
3813
|
+
cached = null;
|
|
3814
|
+
}
|
|
3815
|
+
});
|
|
3816
|
+
|
|
3817
|
+
// src/subagents/designExpert/data/getFontLibrarySample.ts
|
|
3818
|
+
function getFontLibrarySample(fontIndices) {
|
|
3819
|
+
const fonts = pickByIndices(fontData.fonts, fontIndices);
|
|
3765
3820
|
if (!fonts.length) {
|
|
3766
3821
|
return "";
|
|
3767
3822
|
}
|
|
@@ -3777,16 +3832,11 @@ function getFontLibrarySample() {
|
|
|
3777
3832
|
const desc = f.description ? ` ${f.description}` : "";
|
|
3778
3833
|
return `- **${f.name}** \u2014 ${f.category}. Weights: ${f.weights.join(", ")}.${f.variable ? " Variable." : ""}${f.italics ? " Has italics." : ""}${cssInfo}${desc}`;
|
|
3779
3834
|
}).join("\n");
|
|
3780
|
-
const pairingList = pairings.map(
|
|
3781
|
-
(p) => `- **${p.heading.font}** (${p.heading.weight}) heading + **${p.body.font}** (${p.body.weight}) body`
|
|
3782
|
-
).join("\n");
|
|
3783
3835
|
return `
|
|
3784
3836
|
## Font Library
|
|
3785
3837
|
|
|
3786
3838
|
This is your personal library of fonts you love. Use it as a starting point when thinking about anything related to typography.
|
|
3787
3839
|
|
|
3788
|
-
### Fonts
|
|
3789
|
-
|
|
3790
3840
|
${fontList}`.trim();
|
|
3791
3841
|
}
|
|
3792
3842
|
var fontData;
|
|
@@ -3794,27 +3844,17 @@ var init_getFontLibrarySample = __esm({
|
|
|
3794
3844
|
"src/subagents/designExpert/data/getFontLibrarySample.ts"() {
|
|
3795
3845
|
"use strict";
|
|
3796
3846
|
init_assets();
|
|
3847
|
+
init_sampleCache();
|
|
3797
3848
|
fontData = readJsonAsset(
|
|
3798
|
-
{ cssUrlPattern: "", fonts: []
|
|
3849
|
+
{ cssUrlPattern: "", fonts: [] },
|
|
3799
3850
|
"subagents/designExpert/data/sources/fonts.json"
|
|
3800
3851
|
);
|
|
3801
3852
|
}
|
|
3802
3853
|
});
|
|
3803
3854
|
|
|
3804
3855
|
// src/subagents/designExpert/data/getDesignReferencesSample.ts
|
|
3805
|
-
function
|
|
3806
|
-
|
|
3807
|
-
return [...arr];
|
|
3808
|
-
}
|
|
3809
|
-
const copy = [...arr];
|
|
3810
|
-
for (let i = copy.length - 1; i > 0; i--) {
|
|
3811
|
-
const j = Math.floor(Math.random() * (i + 1));
|
|
3812
|
-
[copy[i], copy[j]] = [copy[j], copy[i]];
|
|
3813
|
-
}
|
|
3814
|
-
return copy.slice(0, n);
|
|
3815
|
-
}
|
|
3816
|
-
function getDesignReferencesSample() {
|
|
3817
|
-
const images = sample2(inspirationImages, 25);
|
|
3856
|
+
function getDesignReferencesSample(indices) {
|
|
3857
|
+
const images = pickByIndices(inspirationImages, indices);
|
|
3818
3858
|
if (!images.length) {
|
|
3819
3859
|
return "";
|
|
3820
3860
|
}
|
|
@@ -3832,6 +3872,7 @@ var init_getDesignReferencesSample = __esm({
|
|
|
3832
3872
|
"src/subagents/designExpert/data/getDesignReferencesSample.ts"() {
|
|
3833
3873
|
"use strict";
|
|
3834
3874
|
init_assets();
|
|
3875
|
+
init_sampleCache();
|
|
3835
3876
|
inspirationImages = readJsonAsset(
|
|
3836
3877
|
{ images: [] },
|
|
3837
3878
|
"subagents/designExpert/data/sources/inspiration.json"
|
|
@@ -3840,19 +3881,8 @@ var init_getDesignReferencesSample = __esm({
|
|
|
3840
3881
|
});
|
|
3841
3882
|
|
|
3842
3883
|
// src/subagents/designExpert/data/getUiInspirationSample.ts
|
|
3843
|
-
function
|
|
3844
|
-
|
|
3845
|
-
return [...arr];
|
|
3846
|
-
}
|
|
3847
|
-
const copy = [...arr];
|
|
3848
|
-
for (let i = copy.length - 1; i > 0; i--) {
|
|
3849
|
-
const j = Math.floor(Math.random() * (i + 1));
|
|
3850
|
-
[copy[i], copy[j]] = [copy[j], copy[i]];
|
|
3851
|
-
}
|
|
3852
|
-
return copy.slice(0, n);
|
|
3853
|
-
}
|
|
3854
|
-
function getUiInspirationSample() {
|
|
3855
|
-
const screens = sample3(uiScreens, 25);
|
|
3884
|
+
function getUiInspirationSample(indices) {
|
|
3885
|
+
const screens = pickByIndices(uiScreens, indices);
|
|
3856
3886
|
if (!screens.length) {
|
|
3857
3887
|
return "";
|
|
3858
3888
|
}
|
|
@@ -3870,6 +3900,7 @@ var init_getUiInspirationSample = __esm({
|
|
|
3870
3900
|
"src/subagents/designExpert/data/getUiInspirationSample.ts"() {
|
|
3871
3901
|
"use strict";
|
|
3872
3902
|
init_assets();
|
|
3903
|
+
init_sampleCache();
|
|
3873
3904
|
uiScreens = readJsonAsset(
|
|
3874
3905
|
{ screens: [] },
|
|
3875
3906
|
"subagents/designExpert/data/sources/ui_inspiration_compiled.json"
|
|
@@ -3878,13 +3909,31 @@ var init_getUiInspirationSample = __esm({
|
|
|
3878
3909
|
});
|
|
3879
3910
|
|
|
3880
3911
|
// src/subagents/designExpert/prompt.ts
|
|
3881
|
-
import
|
|
3912
|
+
import fs14 from "fs";
|
|
3882
3913
|
function getDesignExpertPrompt() {
|
|
3883
3914
|
const specContext = loadSpecContext();
|
|
3915
|
+
const indices = getSampleIndices(
|
|
3916
|
+
{
|
|
3917
|
+
uiInspiration: uiScreens.length,
|
|
3918
|
+
designReferences: inspirationImages.length,
|
|
3919
|
+
fonts: fontData.fonts.length
|
|
3920
|
+
},
|
|
3921
|
+
{
|
|
3922
|
+
uiInspiration: 50,
|
|
3923
|
+
designReferences: 50,
|
|
3924
|
+
fonts: 50
|
|
3925
|
+
}
|
|
3926
|
+
);
|
|
3884
3927
|
let prompt = PROMPT_TEMPLATE.replace(
|
|
3885
3928
|
"{{font_library}}",
|
|
3886
|
-
getFontLibrarySample()
|
|
3887
|
-
).replace(
|
|
3929
|
+
getFontLibrarySample(indices.fonts)
|
|
3930
|
+
).replace(
|
|
3931
|
+
"{{visual_design_references}}",
|
|
3932
|
+
getDesignReferencesSample(indices.designReferences)
|
|
3933
|
+
).replace(
|
|
3934
|
+
"{{ui_case_studies}}",
|
|
3935
|
+
getUiInspirationSample(indices.uiInspiration)
|
|
3936
|
+
);
|
|
3888
3937
|
prompt += "\n\n<!-- cache_breakpoint -->";
|
|
3889
3938
|
if (specContext) {
|
|
3890
3939
|
prompt += `
|
|
@@ -3892,7 +3941,7 @@ function getDesignExpertPrompt() {
|
|
|
3892
3941
|
${specContext}`;
|
|
3893
3942
|
}
|
|
3894
3943
|
try {
|
|
3895
|
-
|
|
3944
|
+
fs14.writeFileSync(`.design-prompt.md`, prompt);
|
|
3896
3945
|
} catch {
|
|
3897
3946
|
}
|
|
3898
3947
|
return prompt;
|
|
@@ -3903,6 +3952,7 @@ var init_prompt2 = __esm({
|
|
|
3903
3952
|
"use strict";
|
|
3904
3953
|
init_assets();
|
|
3905
3954
|
init_context();
|
|
3955
|
+
init_sampleCache();
|
|
3906
3956
|
init_getFontLibrarySample();
|
|
3907
3957
|
init_getDesignReferencesSample();
|
|
3908
3958
|
init_getUiInspirationSample();
|
|
@@ -4143,7 +4193,7 @@ var init_tools3 = __esm({
|
|
|
4143
4193
|
});
|
|
4144
4194
|
|
|
4145
4195
|
// src/subagents/productVision/executor.ts
|
|
4146
|
-
import
|
|
4196
|
+
import fs15 from "fs";
|
|
4147
4197
|
import path6 from "path";
|
|
4148
4198
|
function formatRequires(requires) {
|
|
4149
4199
|
return requires.length === 0 ? "[]" : `[${requires.map((r) => `"${r}"`).join(", ")}]`;
|
|
@@ -4161,8 +4211,8 @@ async function executeVisionTool(name, input) {
|
|
|
4161
4211
|
} = input;
|
|
4162
4212
|
const filePath = path6.join(ROADMAP_DIR, `${slug}.md`);
|
|
4163
4213
|
try {
|
|
4164
|
-
|
|
4165
|
-
const oldContent =
|
|
4214
|
+
fs15.mkdirSync(ROADMAP_DIR, { recursive: true });
|
|
4215
|
+
const oldContent = fs15.existsSync(filePath) ? fs15.readFileSync(filePath, "utf-8") : "";
|
|
4166
4216
|
const content = `---
|
|
4167
4217
|
name: ${itemName}
|
|
4168
4218
|
type: roadmap
|
|
@@ -4174,7 +4224,7 @@ requires: ${formatRequires(requires)}
|
|
|
4174
4224
|
|
|
4175
4225
|
${body}
|
|
4176
4226
|
`;
|
|
4177
|
-
|
|
4227
|
+
fs15.writeFileSync(filePath, content, "utf-8");
|
|
4178
4228
|
const lineCount = content.split("\n").length;
|
|
4179
4229
|
const label = oldContent ? "Updated" : "Wrote";
|
|
4180
4230
|
return `${label} ${filePath} (${lineCount} lines)
|
|
@@ -4187,10 +4237,10 @@ ${unifiedDiff(filePath, oldContent, content)}`;
|
|
|
4187
4237
|
const { slug } = input;
|
|
4188
4238
|
const filePath = path6.join(ROADMAP_DIR, `${slug}.md`);
|
|
4189
4239
|
try {
|
|
4190
|
-
if (!
|
|
4240
|
+
if (!fs15.existsSync(filePath)) {
|
|
4191
4241
|
return `Error: ${filePath} does not exist`;
|
|
4192
4242
|
}
|
|
4193
|
-
const oldContent =
|
|
4243
|
+
const oldContent = fs15.readFileSync(filePath, "utf-8");
|
|
4194
4244
|
let content = oldContent;
|
|
4195
4245
|
if (input.status) {
|
|
4196
4246
|
content = content.replace(
|
|
@@ -4243,7 +4293,7 @@ ${input.appendHistory}
|
|
|
4243
4293
|
`;
|
|
4244
4294
|
}
|
|
4245
4295
|
}
|
|
4246
|
-
|
|
4296
|
+
fs15.writeFileSync(filePath, content, "utf-8");
|
|
4247
4297
|
const lineCount = content.split("\n").length;
|
|
4248
4298
|
return `Updated ${filePath} (${lineCount} lines)
|
|
4249
4299
|
${unifiedDiff(filePath, oldContent, content)}`;
|
|
@@ -4255,11 +4305,11 @@ ${unifiedDiff(filePath, oldContent, content)}`;
|
|
|
4255
4305
|
const { slug } = input;
|
|
4256
4306
|
const filePath = path6.join(ROADMAP_DIR, `${slug}.md`);
|
|
4257
4307
|
try {
|
|
4258
|
-
if (!
|
|
4308
|
+
if (!fs15.existsSync(filePath)) {
|
|
4259
4309
|
return `Error: ${filePath} does not exist`;
|
|
4260
4310
|
}
|
|
4261
|
-
const oldContent =
|
|
4262
|
-
|
|
4311
|
+
const oldContent = fs15.readFileSync(filePath, "utf-8");
|
|
4312
|
+
fs15.unlinkSync(filePath);
|
|
4263
4313
|
return `Deleted ${filePath}
|
|
4264
4314
|
${unifiedDiff(filePath, oldContent, "")}`;
|
|
4265
4315
|
} catch (err) {
|
|
@@ -4671,10 +4721,10 @@ var init_tools5 = __esm({
|
|
|
4671
4721
|
});
|
|
4672
4722
|
|
|
4673
4723
|
// src/session.ts
|
|
4674
|
-
import
|
|
4724
|
+
import fs16 from "fs";
|
|
4675
4725
|
function loadSession(state) {
|
|
4676
4726
|
try {
|
|
4677
|
-
const raw =
|
|
4727
|
+
const raw = fs16.readFileSync(SESSION_FILE, "utf-8");
|
|
4678
4728
|
const data = JSON.parse(raw);
|
|
4679
4729
|
if (Array.isArray(data.messages) && data.messages.length > 0) {
|
|
4680
4730
|
state.messages = sanitizeMessages(data.messages);
|
|
@@ -4723,7 +4773,7 @@ function sanitizeMessages(messages) {
|
|
|
4723
4773
|
}
|
|
4724
4774
|
function saveSession(state) {
|
|
4725
4775
|
try {
|
|
4726
|
-
|
|
4776
|
+
fs16.writeFileSync(
|
|
4727
4777
|
SESSION_FILE,
|
|
4728
4778
|
JSON.stringify({ messages: state.messages }, null, 2),
|
|
4729
4779
|
"utf-8"
|
|
@@ -4736,7 +4786,7 @@ function saveSession(state) {
|
|
|
4736
4786
|
function clearSession(state) {
|
|
4737
4787
|
state.messages = [];
|
|
4738
4788
|
try {
|
|
4739
|
-
|
|
4789
|
+
fs16.unlinkSync(SESSION_FILE);
|
|
4740
4790
|
} catch {
|
|
4741
4791
|
}
|
|
4742
4792
|
}
|
|
@@ -5465,12 +5515,12 @@ var init_agent = __esm({
|
|
|
5465
5515
|
});
|
|
5466
5516
|
|
|
5467
5517
|
// src/prompt/static/projectContext.ts
|
|
5468
|
-
import
|
|
5518
|
+
import fs17 from "fs";
|
|
5469
5519
|
import path7 from "path";
|
|
5470
5520
|
function loadProjectInstructions() {
|
|
5471
5521
|
for (const file of AGENT_INSTRUCTION_FILES) {
|
|
5472
5522
|
try {
|
|
5473
|
-
const content =
|
|
5523
|
+
const content = fs17.readFileSync(file, "utf-8").trim();
|
|
5474
5524
|
if (content) {
|
|
5475
5525
|
return `
|
|
5476
5526
|
## Project Instructions (${file})
|
|
@@ -5483,7 +5533,7 @@ ${content}`;
|
|
|
5483
5533
|
}
|
|
5484
5534
|
function loadProjectManifest() {
|
|
5485
5535
|
try {
|
|
5486
|
-
const manifest =
|
|
5536
|
+
const manifest = fs17.readFileSync("mindstudio.json", "utf-8");
|
|
5487
5537
|
return `
|
|
5488
5538
|
## Project Manifest (mindstudio.json)
|
|
5489
5539
|
\`\`\`json
|
|
@@ -5524,7 +5574,7 @@ ${entries.join("\n")}`;
|
|
|
5524
5574
|
function walkMdFiles2(dir) {
|
|
5525
5575
|
const results = [];
|
|
5526
5576
|
try {
|
|
5527
|
-
const entries =
|
|
5577
|
+
const entries = fs17.readdirSync(dir, { withFileTypes: true });
|
|
5528
5578
|
for (const entry of entries) {
|
|
5529
5579
|
const full = path7.join(dir, entry.name);
|
|
5530
5580
|
if (entry.isDirectory()) {
|
|
@@ -5539,7 +5589,7 @@ function walkMdFiles2(dir) {
|
|
|
5539
5589
|
}
|
|
5540
5590
|
function parseFrontmatter(filePath) {
|
|
5541
5591
|
try {
|
|
5542
|
-
const content =
|
|
5592
|
+
const content = fs17.readFileSync(filePath, "utf-8");
|
|
5543
5593
|
const match = content.match(/^---\n([\s\S]*?)\n---/);
|
|
5544
5594
|
if (!match) {
|
|
5545
5595
|
return { name: "", description: "", type: "" };
|
|
@@ -5555,7 +5605,7 @@ function parseFrontmatter(filePath) {
|
|
|
5555
5605
|
}
|
|
5556
5606
|
function loadProjectFileListing() {
|
|
5557
5607
|
try {
|
|
5558
|
-
const entries =
|
|
5608
|
+
const entries = fs17.readdirSync(".", { withFileTypes: true });
|
|
5559
5609
|
const listing = entries.filter((e) => e.name !== ".git" && e.name !== "node_modules").sort((a, b) => {
|
|
5560
5610
|
if (a.isDirectory() && !b.isDirectory()) {
|
|
5561
5611
|
return -1;
|
|
@@ -5735,12 +5785,12 @@ var init_prompt4 = __esm({
|
|
|
5735
5785
|
});
|
|
5736
5786
|
|
|
5737
5787
|
// src/config.ts
|
|
5738
|
-
import
|
|
5788
|
+
import fs18 from "fs";
|
|
5739
5789
|
import path8 from "path";
|
|
5740
5790
|
import os from "os";
|
|
5741
5791
|
function loadConfigFile() {
|
|
5742
5792
|
try {
|
|
5743
|
-
const raw =
|
|
5793
|
+
const raw = fs18.readFileSync(CONFIG_PATH, "utf-8");
|
|
5744
5794
|
log7.debug("Loaded config file", { path: CONFIG_PATH });
|
|
5745
5795
|
return JSON.parse(raw);
|
|
5746
5796
|
} catch (err) {
|
|
@@ -6689,7 +6739,7 @@ var init_headless = __esm({
|
|
|
6689
6739
|
// src/index.tsx
|
|
6690
6740
|
import { render } from "ink";
|
|
6691
6741
|
import os2 from "os";
|
|
6692
|
-
import
|
|
6742
|
+
import fs19 from "fs";
|
|
6693
6743
|
import path9 from "path";
|
|
6694
6744
|
|
|
6695
6745
|
// src/tui/App.tsx
|
|
@@ -7008,7 +7058,7 @@ for (let i = 0; i < args.length; i++) {
|
|
|
7008
7058
|
var startupLog = createLogger("startup");
|
|
7009
7059
|
function printDebugInfo(config) {
|
|
7010
7060
|
const pkg = JSON.parse(
|
|
7011
|
-
|
|
7061
|
+
fs19.readFileSync(
|
|
7012
7062
|
path9.join(import.meta.dirname, "..", "package.json"),
|
|
7013
7063
|
"utf-8"
|
|
7014
7064
|
)
|
|
@@ -79,5 +79,53 @@
|
|
|
79
79
|
"https://i.mscdn.ai/remy-ui-inspo/v2/78.png",
|
|
80
80
|
"https://i.mscdn.ai/remy-ui-inspo/v2/79.png",
|
|
81
81
|
"https://i.mscdn.ai/remy-ui-inspo/v2/80.png",
|
|
82
|
-
"https://i.mscdn.ai/remy-ui-inspo/v2/81.png"
|
|
82
|
+
"https://i.mscdn.ai/remy-ui-inspo/v2/81.png",
|
|
83
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+08.56.51.png",
|
|
84
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+08.56.56.png",
|
|
85
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+08.57.03.png",
|
|
86
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+08.57.27.png",
|
|
87
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.00.26.png",
|
|
88
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.00.35.png",
|
|
89
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.01.33.png",
|
|
90
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.01.39.png",
|
|
91
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.01.50.png",
|
|
92
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.02.09.png",
|
|
93
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.03.39.png",
|
|
94
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.03.47.png",
|
|
95
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.04.29.png",
|
|
96
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.04.57.png",
|
|
97
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.05.12.png",
|
|
98
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.05.16.png",
|
|
99
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.05.29.png",
|
|
100
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.06.22.png",
|
|
101
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.06.47.png",
|
|
102
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.07.04.png",
|
|
103
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.07.23.png",
|
|
104
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.08.01.png",
|
|
105
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.08.15.png",
|
|
106
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.08.28.png",
|
|
107
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.08.33.png",
|
|
108
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.08.55.png",
|
|
109
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.09.04.png",
|
|
110
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.09.22.png",
|
|
111
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.09.27.png",
|
|
112
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.09.34.png",
|
|
113
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.10.49.png",
|
|
114
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.11.04.png",
|
|
115
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.11.19.png",
|
|
116
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.11.32.png",
|
|
117
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.11.44.png",
|
|
118
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.12.00.png",
|
|
119
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.12.10.png",
|
|
120
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.12.23.png",
|
|
121
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.12.54.png",
|
|
122
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.13.06.png",
|
|
123
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.13.33.png",
|
|
124
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.13.36.png",
|
|
125
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.13.46.png",
|
|
126
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.14.19.png",
|
|
127
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.14.45.png",
|
|
128
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.15.16.png",
|
|
129
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.15.20.png",
|
|
130
|
+
"https://i.mscdn.ai/ui-inspo-2/Screenshot+2026-04-02+at+09.15.35.png"
|
|
83
131
|
]
|