@xingjisoft/neutrino 0.5.0 → 0.5.2
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/pro/config.js +7 -3
- package/dist/update.js +8 -2
- package/dist/updateWatch.js +76 -0
- package/dist/web/server.js +126 -5
- package/dist/web/service.js +22 -0
- package/package.json +37 -37
- package/web/app.js +126 -13
- package/web/i18n.js +7 -0
- package/web/index.html +455 -442
- package/web/settings.js +31 -1
- package/web/style.css +3535 -3473
package/web/settings.js
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
// are returned to this controller or kept in browser storage.
|
|
3
3
|
import { t, getLanguage } from "./i18n.js";
|
|
4
4
|
|
|
5
|
-
export function createSettingsUI({ apiFetch, applyModel, onLanguageChange, proMode = false, onCatalogChange }) {
|
|
5
|
+
export function createSettingsUI({ apiFetch, applyModel, onLanguageChange, onUpdateFound, proMode = false, onCatalogChange }) {
|
|
6
6
|
const ids = ["model-picker", "model-picker-summary", "model-picker-label", "model-provider", "model-name", "model-intensity",
|
|
7
7
|
"model-intensity-label", "model-intensity-slider", "model-intensity-stops", "model-intensity-ticks", "model-feedback",
|
|
8
8
|
"settings-open", "settings-dialog", "settings-form", "settings-close", "settings-cancel", "settings-save", "settings-feedback",
|
|
9
9
|
"default-provider", "default-model", "default-intensity", "settings-context", "settings-compress-note", "settings-reviewer",
|
|
10
10
|
"settings-extreme", "settings-sound", "settings-password", "settings-password-confirm",
|
|
11
11
|
"settings-language", "settings-plan", "settings-approval", "settings-web-console", "settings-web-lan", "settings-background",
|
|
12
|
+
"settings-check-update", "settings-update-feedback",
|
|
12
13
|
"settings-pro", "settings-pro-preset", "settings-pro-depth"];
|
|
13
14
|
const el = Object.fromEntries(ids.map(id => [id, document.getElementById(id)]));
|
|
14
15
|
let config = null;
|
|
@@ -348,6 +349,33 @@ export function createSettingsUI({ apiFetch, applyModel, onLanguageChange, proMo
|
|
|
348
349
|
}
|
|
349
350
|
});
|
|
350
351
|
|
|
352
|
+
/** Ask the server to compare this install with npm right now. */
|
|
353
|
+
el["settings-check-update"].addEventListener("click", async () => {
|
|
354
|
+
const button = el["settings-check-update"];
|
|
355
|
+
if (button.disabled) return;
|
|
356
|
+
button.disabled = true;
|
|
357
|
+
message(el["settings-update-feedback"], t("Checking for updates…"));
|
|
358
|
+
try {
|
|
359
|
+
const update = await json("/api/update/check", {});
|
|
360
|
+
if (update.error) {
|
|
361
|
+
message(el["settings-update-feedback"], t("Update check failed: {error}", { error: update.error }), true);
|
|
362
|
+
} else if (update.has_update) {
|
|
363
|
+
message(el["settings-update-feedback"], t("Version {latest} is available. This install runs {current}.", {
|
|
364
|
+
current: update.current_version, latest: update.latest_version,
|
|
365
|
+
}));
|
|
366
|
+
// Installing runs npm on this machine, so the offer and its progress
|
|
367
|
+
// belong to the console's dialog, not to this form.
|
|
368
|
+
onUpdateFound?.(update);
|
|
369
|
+
} else {
|
|
370
|
+
message(el["settings-update-feedback"], t("Neutrino {version} is up to date.", { version: update.current_version }));
|
|
371
|
+
}
|
|
372
|
+
} catch (error) {
|
|
373
|
+
message(el["settings-update-feedback"], t("Update check failed: {error}", { error: error.message }), true);
|
|
374
|
+
} finally {
|
|
375
|
+
button.disabled = false;
|
|
376
|
+
}
|
|
377
|
+
});
|
|
378
|
+
|
|
351
379
|
function renderContextWindow() {
|
|
352
380
|
const provider = config.providers.find(entry => entry.name === el["default-provider"].value);
|
|
353
381
|
const model = provider?.models.find(entry => entry.name === el["default-model"].value);
|
|
@@ -392,6 +420,8 @@ export function createSettingsUI({ apiFetch, applyModel, onLanguageChange, proMo
|
|
|
392
420
|
el["settings-open"].addEventListener("click", async () => {
|
|
393
421
|
if (!el["settings-dialog"].open) el["settings-dialog"].showModal();
|
|
394
422
|
el["settings-save"].disabled = true;
|
|
423
|
+
// The last check belongs to an earlier visit; do not present it as current.
|
|
424
|
+
message(el["settings-update-feedback"], "");
|
|
395
425
|
message(el["settings-feedback"], t("Loading…"));
|
|
396
426
|
try {
|
|
397
427
|
await load();
|