threadwell 0.0.5 → 0.0.7
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/CHANGELOG.md +25 -0
- package/README.md +4 -8
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +5 -7
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +4 -2
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/core/settings-manager.d.ts +3 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +5 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +7 -1
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +12 -4
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts +2 -0
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +43 -4
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts +4 -3
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +31 -8
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +4 -3
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +32 -8
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +1 -9
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts +3 -0
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +33 -20
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/diff.d.ts.map +1 -1
- package/dist/modes/interactive/components/diff.js +70 -0
- package/dist/modes/interactive/components/diff.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +61 -49
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/framed-message.d.ts +17 -0
- package/dist/modes/interactive/components/framed-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/framed-message.js +39 -0
- package/dist/modes/interactive/components/framed-message.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +0 -4
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +0 -20
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +4 -3
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +31 -9
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/split-info-card.d.ts.map +1 -1
- package/dist/modes/interactive/components/split-info-card.js +24 -17
- package/dist/modes/interactive/components/split-info-card.js.map +1 -1
- package/dist/modes/interactive/components/thinking-card.d.ts +6 -0
- package/dist/modes/interactive/components/thinking-card.d.ts.map +1 -0
- package/dist/modes/interactive/components/thinking-card.js +17 -0
- package/dist/modes/interactive/components/thinking-card.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +5 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +72 -2
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +16 -0
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +86 -73
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/visual-profile.d.ts +69 -0
- package/dist/modes/interactive/theme/visual-profile.d.ts.map +1 -0
- package/dist/modes/interactive/theme/visual-profile.js +131 -0
- package/dist/modes/interactive/theme/visual-profile.js.map +1 -0
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +1 -1
- package/dist/package-manager-cli.js.map +1 -1
- package/docs/docs.json +1 -5
- package/docs/extensions.md +7 -16
- package/docs/index.md +6 -5
- package/docs/packages.md +8 -30
- package/docs/quickstart.md +1 -1
- package/docs/sdk.md +2 -3
- package/docs/settings.md +24 -7
- package/docs/themes.md +5 -295
- package/docs/usage.md +14 -17
- package/package.json +4 -4
|
@@ -62,7 +62,8 @@ import { ToolExecutionComponent } from "./components/tool-execution.js";
|
|
|
62
62
|
import { TreeSelectorComponent } from "./components/tree-selector.js";
|
|
63
63
|
import { UserMessageComponent } from "./components/user-message.js";
|
|
64
64
|
import { UserMessageSelectorComponent } from "./components/user-message-selector.js";
|
|
65
|
-
import {
|
|
65
|
+
import { getAvailableThemesWithPaths, getEditorTheme, getMarkdownTheme, getThemeByName, initTheme, onThemeChange, setRegisteredThemes, setTheme, setThemeInstance, stopThemeWatcher, Theme, theme, } from "./theme/theme.js";
|
|
66
|
+
import { configureVisualProfile, getVisualTokens } from "./theme/visual-profile.js";
|
|
66
67
|
function isExpandable(obj) {
|
|
67
68
|
return typeof obj === "object" && obj !== null && "setExpanded" in obj && typeof obj.setExpanded === "function";
|
|
68
69
|
}
|
|
@@ -241,9 +242,10 @@ export class InteractiveMode {
|
|
|
241
242
|
this.footer.setAutoCompactEnabled(this.session.autoCompactionEnabled);
|
|
242
243
|
// Load hide thinking block setting
|
|
243
244
|
this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
245
|
+
configureVisualProfile(this.settingsManager.getVisualProfileSetting());
|
|
246
|
+
// Theme customization is frozen; keep the built-in dark theme active for stable rendering.
|
|
247
|
+
setRegisteredThemes([]);
|
|
248
|
+
initTheme("dark", false);
|
|
247
249
|
}
|
|
248
250
|
getAutocompleteSourceTag(sourceInfo) {
|
|
249
251
|
if (!sourceInfo) {
|
|
@@ -364,7 +366,13 @@ export class InteractiveMode {
|
|
|
364
366
|
return await checkForNewThreadwellVersion(this.version, { timeoutMs: 1500 });
|
|
365
367
|
}
|
|
366
368
|
getStartupWhatsNewLines() {
|
|
367
|
-
const
|
|
369
|
+
const visual = getVisualTokens();
|
|
370
|
+
const bullet = visual.glyphs.bullet;
|
|
371
|
+
const whatsNewLines = [
|
|
372
|
+
`${bullet} context usage bar`,
|
|
373
|
+
`${bullet} startup interface toggles`,
|
|
374
|
+
`${bullet} cleaner visual cards`,
|
|
375
|
+
];
|
|
368
376
|
if (!this.changelogMarkdown)
|
|
369
377
|
return [theme.fg("muted", `v${this.version}`), ...whatsNewLines];
|
|
370
378
|
const versionMatch = this.changelogMarkdown.match(/##\s+\[?(\d+\.\d+\.\d+)\]?/);
|
|
@@ -373,7 +381,7 @@ export class InteractiveMode {
|
|
|
373
381
|
.split("\n")
|
|
374
382
|
.map((line) => line.trim())
|
|
375
383
|
.filter((line) => /^[-*•]\s+/.test(line))
|
|
376
|
-
.map((line) => line.replace(/^[-*•]\s+/,
|
|
384
|
+
.map((line) => line.replace(/^[-*•]\s+/, `${bullet} `))
|
|
377
385
|
.slice(0, 2);
|
|
378
386
|
return [
|
|
379
387
|
...whatsNewLines,
|
|
@@ -386,10 +394,12 @@ export class InteractiveMode {
|
|
|
386
394
|
getStartupUpdateLines() {
|
|
387
395
|
if (!this.startupUpdateVersion)
|
|
388
396
|
return [""];
|
|
397
|
+
const visual = getVisualTokens();
|
|
398
|
+
const warning = visual.glyphs.warning;
|
|
389
399
|
return [
|
|
390
|
-
`${theme.fg("warning",
|
|
391
|
-
`${theme.fg("dim", "run")}
|
|
392
|
-
`${theme.fg("dim", "
|
|
400
|
+
`${theme.fg("warning", warning)} ${theme.fg("warning", `v${this.startupUpdateVersion} available`)}`,
|
|
401
|
+
`${theme.fg("dim", "run")} ${theme.fg("accent", `${APP_NAME} update`)}`,
|
|
402
|
+
`${theme.fg("dim", "or")} ${theme.fg("accent", "/update")} for details`,
|
|
393
403
|
"",
|
|
394
404
|
];
|
|
395
405
|
}
|
|
@@ -439,11 +449,41 @@ export class InteractiveMode {
|
|
|
439
449
|
this.ui.addChild(this.headerContainer);
|
|
440
450
|
// Add header with keybindings from config (unless silenced)
|
|
441
451
|
if (this.options.verbose || !this.settingsManager.getQuietStartup()) {
|
|
442
|
-
const
|
|
452
|
+
const visual = getVisualTokens();
|
|
453
|
+
const glyphs = visual.glyphs;
|
|
454
|
+
const title = theme.bold(theme.fg("accent", `${visual.enhanced ? `${glyphs.threadwell} ` : ""}${DISTRO_IDENTITY.name}`)) +
|
|
455
|
+
theme.fg("dim", ` v${this.version}`);
|
|
443
456
|
const cwd = this.sessionManager.getCwd();
|
|
457
|
+
const cwdLabel = path.basename(cwd) || cwd;
|
|
444
458
|
const model = this.session.state.model;
|
|
445
459
|
const modelText = model ? `${model.provider}/${model.id}` : "no model selected";
|
|
446
|
-
const
|
|
460
|
+
const continuityEnabled = this.settingsManager.getContinuityEnabled();
|
|
461
|
+
const continuityText = continuityEnabled ? "active" : "disabled";
|
|
462
|
+
const memorySettings = this.settingsManager.getMemorySettings();
|
|
463
|
+
const memoryText = memorySettings.enabled ? (memorySettings.inject ? "injecting" : "enabled") : "off";
|
|
464
|
+
const statusPill = (label, value, active = true) => {
|
|
465
|
+
const valueColor = active ? "accent" : "dim";
|
|
466
|
+
return `${theme.fg("dim", label)} ${theme.fg(valueColor, value)}`;
|
|
467
|
+
};
|
|
468
|
+
const gitStatus = this.footerDataProvider.getGitStatus();
|
|
469
|
+
const formatEnhancedGitStatus = () => {
|
|
470
|
+
if (!gitStatus)
|
|
471
|
+
return undefined;
|
|
472
|
+
const parts = [`${theme.fg("dim", "git")} ${theme.fg("accent", gitStatus.branch)}`];
|
|
473
|
+
if (gitStatus.staged > 0)
|
|
474
|
+
parts.push(theme.fg("success", `+${gitStatus.staged}`));
|
|
475
|
+
if (gitStatus.unstaged > 0)
|
|
476
|
+
parts.push(theme.fg("error", `-${gitStatus.unstaged}`));
|
|
477
|
+
if (gitStatus.untracked > 0)
|
|
478
|
+
parts.push(theme.fg("warning", `?${gitStatus.untracked}`));
|
|
479
|
+
if (gitStatus.conflicts > 0)
|
|
480
|
+
parts.push(theme.fg("error", `!${gitStatus.conflicts}`));
|
|
481
|
+
if (gitStatus.ahead > 0)
|
|
482
|
+
parts.push(theme.fg("accent", `↑${gitStatus.ahead}`));
|
|
483
|
+
if (gitStatus.behind > 0)
|
|
484
|
+
parts.push(theme.fg("warning", `↓${gitStatus.behind}`));
|
|
485
|
+
return parts.join(theme.fg("muted", " "));
|
|
486
|
+
};
|
|
447
487
|
const startupSummary = [
|
|
448
488
|
`${title} ${theme.fg("dim", `(${APP_NAME})`)}`,
|
|
449
489
|
theme.fg("muted", DISTRO_IDENTITY.tagline),
|
|
@@ -451,6 +491,7 @@ export class InteractiveMode {
|
|
|
451
491
|
`${theme.fg("dim", "cwd")} ${cwd}`,
|
|
452
492
|
`${theme.fg("dim", "model")} ${modelText}`,
|
|
453
493
|
`${theme.fg("dim", "continuity")} ${continuityText}`,
|
|
494
|
+
`${theme.fg("dim", "memory")} ${memoryText}`,
|
|
454
495
|
].join("\n");
|
|
455
496
|
// Build startup instructions using keybinding hint helpers
|
|
456
497
|
const hint = (keybinding, description) => keyHint(keybinding, description);
|
|
@@ -481,20 +522,40 @@ export class InteractiveMode {
|
|
|
481
522
|
rawKeyHint("/", "commands"),
|
|
482
523
|
rawKeyHint("!", "bash"),
|
|
483
524
|
hint("app.tools.expand", "more"),
|
|
484
|
-
].join(theme.fg("muted",
|
|
525
|
+
].join(theme.fg("muted", ` ${glyphs.separator} `));
|
|
485
526
|
const compactOnboarding = theme.fg("dim", `Press ${keyText("app.tools.expand")} to show full startup help and loaded resources.`);
|
|
486
527
|
const onboarding = theme.fg("dim", `${DISTRO_IDENTITY.name} keeps project continuity in context. Ask it what remains or where you left off.`);
|
|
528
|
+
const enhancedPrimaryStatusLine = [
|
|
529
|
+
statusPill(glyphs.folder, cwdLabel),
|
|
530
|
+
statusPill(glyphs.model, modelText),
|
|
531
|
+
].join(theme.fg("muted", ` ${glyphs.separator} `));
|
|
532
|
+
const enhancedRuntimeStatusLine = [
|
|
533
|
+
statusPill("continuity", continuityText, continuityEnabled),
|
|
534
|
+
statusPill("memory", memoryText, memorySettings.enabled),
|
|
535
|
+
].join(theme.fg("muted", ` ${glyphs.separator} `));
|
|
536
|
+
const enhancedGitStatusLine = formatEnhancedGitStatus();
|
|
537
|
+
const leftLines = visual.enhanced
|
|
538
|
+
? [
|
|
539
|
+
theme.fg("muted", DISTRO_IDENTITY.tagline),
|
|
540
|
+
enhancedPrimaryStatusLine,
|
|
541
|
+
enhancedRuntimeStatusLine,
|
|
542
|
+
...(enhancedGitStatusLine ? [enhancedGitStatusLine] : []),
|
|
543
|
+
...this.getStartupUpdateLines(),
|
|
544
|
+
]
|
|
545
|
+
: [
|
|
546
|
+
theme.fg("muted", DISTRO_IDENTITY.tagline),
|
|
547
|
+
`${theme.fg("dim", "cwd")} ${cwd}`,
|
|
548
|
+
`${theme.fg("dim", "model")} ${modelText}`,
|
|
549
|
+
`${theme.fg("dim", "continuity")} ${continuityText}`,
|
|
550
|
+
...this.getStartupUpdateLines(),
|
|
551
|
+
];
|
|
487
552
|
this.builtInHeader = interfaceSettings.showStartupCard
|
|
488
553
|
? new SplitInfoCard({
|
|
489
|
-
leftTitle:
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
`${theme.fg("dim", "model")} ${modelText}`,
|
|
495
|
-
`${theme.fg("dim", "continuity")} ${continuityText}`,
|
|
496
|
-
...this.getStartupUpdateLines(),
|
|
497
|
-
],
|
|
554
|
+
leftTitle: visual.enhanced
|
|
555
|
+
? `${glyphs.threadwell} ${DISTRO_IDENTITY.name} ${this.version}`
|
|
556
|
+
: `${DISTRO_IDENTITY.name} ${this.version}`,
|
|
557
|
+
rightTitle: visual.enhanced ? `${glyphs.info} What's new` : "What's new",
|
|
558
|
+
leftLines,
|
|
498
559
|
rightLines: this.getStartupWhatsNewLines(),
|
|
499
560
|
footerLines: [
|
|
500
561
|
compactInstructions,
|
|
@@ -1035,7 +1096,6 @@ export class InteractiveMode {
|
|
|
1035
1096
|
};
|
|
1036
1097
|
const skillsResult = this.session.resourceLoader.getSkills();
|
|
1037
1098
|
const promptsResult = this.session.resourceLoader.getPrompts();
|
|
1038
|
-
const themesResult = this.session.resourceLoader.getThemes();
|
|
1039
1099
|
const extensions = options?.extensions ??
|
|
1040
1100
|
this.session.resourceLoader.getExtensions().extensions.map((extension) => ({
|
|
1041
1101
|
path: extension.path,
|
|
@@ -1057,11 +1117,6 @@ export class InteractiveMode {
|
|
|
1057
1117
|
sourceInfos.set(prompt.filePath, prompt.sourceInfo);
|
|
1058
1118
|
}
|
|
1059
1119
|
}
|
|
1060
|
-
for (const loadedTheme of themesResult.themes) {
|
|
1061
|
-
if (loadedTheme.sourcePath && loadedTheme.sourceInfo) {
|
|
1062
|
-
sourceInfos.set(loadedTheme.sourcePath, loadedTheme.sourceInfo);
|
|
1063
|
-
}
|
|
1064
|
-
}
|
|
1065
1120
|
if (showListing) {
|
|
1066
1121
|
const interfaceSettings = this.settingsManager.getInterfaceSettings();
|
|
1067
1122
|
const contextFiles = this.session.resourceLoader.getAgentsFiles().agentsFiles;
|
|
@@ -1109,21 +1164,6 @@ export class InteractiveMode {
|
|
|
1109
1164
|
const extensionCompactList = formatCompactList(this.getCompactExtensionLabels(extensions));
|
|
1110
1165
|
addLoadedSection("Extensions", extensionCompactList, extList, "mdHeading");
|
|
1111
1166
|
}
|
|
1112
|
-
// Show loaded themes (excluding built-in)
|
|
1113
|
-
const loadedThemes = themesResult.themes;
|
|
1114
|
-
const customThemes = loadedThemes.filter((t) => t.sourcePath);
|
|
1115
|
-
if (customThemes.length > 0) {
|
|
1116
|
-
const groups = this.buildScopeGroups(customThemes.map((loadedTheme) => ({
|
|
1117
|
-
path: loadedTheme.sourcePath,
|
|
1118
|
-
sourceInfo: loadedTheme.sourceInfo,
|
|
1119
|
-
})));
|
|
1120
|
-
const themeList = this.formatScopeGroups(groups, {
|
|
1121
|
-
formatPath: (item) => this.formatDisplayPath(item.path),
|
|
1122
|
-
formatPackagePath: (item) => this.getShortPath(item.path, item.sourceInfo),
|
|
1123
|
-
});
|
|
1124
|
-
const themeCompactList = formatCompactList(customThemes.map((loadedTheme) => loadedTheme.name ?? this.getCompactPathLabel(loadedTheme.sourcePath, loadedTheme.sourceInfo)));
|
|
1125
|
-
addLoadedSection("Themes", themeCompactList, themeList);
|
|
1126
|
-
}
|
|
1127
1167
|
}
|
|
1128
1168
|
if (showDiagnostics) {
|
|
1129
1169
|
const skillDiagnostics = skillsResult.diagnostics;
|
|
@@ -1155,12 +1195,6 @@ export class InteractiveMode {
|
|
|
1155
1195
|
this.chatContainer.addChild(new Text(`${theme.fg("warning", "[Extension issues]")}\n${warningLines}`, 0, 0));
|
|
1156
1196
|
this.chatContainer.addChild(new Spacer(1));
|
|
1157
1197
|
}
|
|
1158
|
-
const themeDiagnostics = themesResult.diagnostics;
|
|
1159
|
-
if (themeDiagnostics.length > 0) {
|
|
1160
|
-
const warningLines = this.formatDiagnostics(themeDiagnostics, sourceInfos);
|
|
1161
|
-
this.chatContainer.addChild(new Text(`${theme.fg("warning", "[Theme conflicts]")}\n${warningLines}`, 0, 0));
|
|
1162
|
-
this.chatContainer.addChild(new Spacer(1));
|
|
1163
|
-
}
|
|
1164
1198
|
}
|
|
1165
1199
|
}
|
|
1166
1200
|
/**
|
|
@@ -3423,8 +3457,6 @@ export class InteractiveMode {
|
|
|
3423
3457
|
transport: this.settingsManager.getTransport(),
|
|
3424
3458
|
thinkingLevel: this.session.thinkingLevel,
|
|
3425
3459
|
availableThinkingLevels: this.session.getAvailableThinkingLevels(),
|
|
3426
|
-
currentTheme: this.settingsManager.getTheme() || "dark",
|
|
3427
|
-
availableThemes: getAvailableThemes(),
|
|
3428
3460
|
hideThinkingBlock: this.hideThinkingBlock,
|
|
3429
3461
|
collapseChangelog: this.settingsManager.getCollapseChangelog(),
|
|
3430
3462
|
enableInstallTelemetry: this.settingsManager.getEnableInstallTelemetry(),
|
|
@@ -3492,21 +3524,6 @@ export class InteractiveMode {
|
|
|
3492
3524
|
this.footer.invalidate();
|
|
3493
3525
|
this.updateEditorBorderColor();
|
|
3494
3526
|
},
|
|
3495
|
-
onThemeChange: (themeName) => {
|
|
3496
|
-
const result = setTheme(themeName, true);
|
|
3497
|
-
this.settingsManager.setTheme(themeName);
|
|
3498
|
-
this.ui.invalidate();
|
|
3499
|
-
if (!result.success) {
|
|
3500
|
-
this.showError(`Failed to load theme "${themeName}": ${result.error}\nFell back to dark theme.`);
|
|
3501
|
-
}
|
|
3502
|
-
},
|
|
3503
|
-
onThemePreview: (themeName) => {
|
|
3504
|
-
const result = setTheme(themeName, true);
|
|
3505
|
-
if (result.success) {
|
|
3506
|
-
this.ui.invalidate();
|
|
3507
|
-
this.ui.requestRender();
|
|
3508
|
-
}
|
|
3509
|
-
},
|
|
3510
3527
|
onHideThinkingBlockChange: (hidden) => {
|
|
3511
3528
|
this.hideThinkingBlock = hidden;
|
|
3512
3529
|
this.settingsManager.setHideThinkingBlock(hidden);
|
|
@@ -4290,7 +4307,7 @@ export class InteractiveMode {
|
|
|
4290
4307
|
const borderColor = (s) => theme.fg("border", s);
|
|
4291
4308
|
reloadBox.addChild(new DynamicBorder(borderColor));
|
|
4292
4309
|
reloadBox.addChild(new Spacer(1));
|
|
4293
|
-
reloadBox.addChild(new Text(theme.fg("muted", "Reloading keybindings, extensions, skills, prompts
|
|
4310
|
+
reloadBox.addChild(new Text(theme.fg("muted", "Reloading keybindings, extensions, skills, prompts..."), 1, 0));
|
|
4294
4311
|
reloadBox.addChild(new Spacer(1));
|
|
4295
4312
|
reloadBox.addChild(new DynamicBorder(borderColor));
|
|
4296
4313
|
const previousEditor = this.editor;
|
|
@@ -4312,13 +4329,9 @@ export class InteractiveMode {
|
|
|
4312
4329
|
if (isExpandable(activeHeader)) {
|
|
4313
4330
|
activeHeader.setExpanded(this.toolOutputExpanded);
|
|
4314
4331
|
}
|
|
4315
|
-
setRegisteredThemes(
|
|
4332
|
+
setRegisteredThemes([]);
|
|
4316
4333
|
this.hideThinkingBlock = this.settingsManager.getHideThinkingBlock();
|
|
4317
|
-
|
|
4318
|
-
const themeResult = themeName ? setTheme(themeName, true) : { success: true };
|
|
4319
|
-
if (!themeResult.success) {
|
|
4320
|
-
this.showError(`Failed to load theme "${themeName}": ${themeResult.error}\nFell back to dark theme.`);
|
|
4321
|
-
}
|
|
4334
|
+
setTheme("dark", false);
|
|
4322
4335
|
const editorPaddingX = this.settingsManager.getEditorPaddingX();
|
|
4323
4336
|
const autocompleteMaxVisible = this.settingsManager.getAutocompleteMaxVisible();
|
|
4324
4337
|
this.defaultEditor.setPaddingX(editorPaddingX);
|
|
@@ -4342,7 +4355,7 @@ export class InteractiveMode {
|
|
|
4342
4355
|
if (modelsJsonError) {
|
|
4343
4356
|
this.showError(`models.json error: ${modelsJsonError}`);
|
|
4344
4357
|
}
|
|
4345
|
-
this.showStatus("Reloaded keybindings, extensions, skills, prompts
|
|
4358
|
+
this.showStatus("Reloaded keybindings, extensions, skills, prompts");
|
|
4346
4359
|
}
|
|
4347
4360
|
catch (error) {
|
|
4348
4361
|
dismissReloadBox(previousEditor);
|