9router-imagefix 0.5.112 → 0.5.113
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/app/.next-cli-build/BUILD_ID +1 -1
- package/app/.next-cli-build/app-path-routes-manifest.json +7 -7
- package/app/.next-cli-build/build-manifest.json +2 -2
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_global-error.html +1 -1
- package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/_not-found.html +1 -1
- package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
- package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
- package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
- package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
- package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next-cli-build/server/app/api/version/route.js +1 -1
- package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/callback.html +1 -1
- package/app/.next-cli-build/server/app/callback.rsc +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
- package/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
- package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
- package/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/dashboard.html +1 -1
- package/app/.next-cli-build/server/app/dashboard.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
- package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/index.html +1 -1
- package/app/.next-cli-build/server/app/index.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/landing.html +1 -1
- package/app/.next-cli-build/server/app/landing.rsc +4 -4
- package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
- package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app/login.html +1 -1
- package/app/.next-cli-build/server/app/login.rsc +5 -5
- package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
- package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +5 -5
- package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next-cli-build/server/app-paths-manifest.json +7 -7
- package/app/.next-cli-build/server/chunks/4037.js +1 -1
- package/app/.next-cli-build/server/chunks/827.js +1 -1
- package/app/.next-cli-build/server/chunks/869.js +1 -1
- package/app/.next-cli-build/server/chunks/8847.js +1 -1
- package/app/.next-cli-build/server/chunks/8908.js +1 -1
- package/app/.next-cli-build/server/chunks/929.js +1 -1
- package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
- package/app/.next-cli-build/server/pages/404.html +1 -1
- package/app/.next-cli-build/server/pages/500.html +1 -1
- package/app/.next-cli-build/static/chunks/{1321-254906094a67861e.js → 1321-001c6b0c5547503f.js} +1 -1
- package/app/cli/.build-home/AppData/Roaming/9router/db/data.sqlite-shm +0 -0
- package/app/cli/.build-home/AppData/Roaming/9router/db/data.sqlite-wal +0 -0
- package/app/package.json +1 -1
- package/cli.js +7 -32
- package/package.json +1 -1
- package/src/cli/utils/interfaceMenu.js +73 -0
- /package/app/.next-cli-build/static/{X2TbUaHtTCXPAbb1Jzltg → fMIuttQ13oA2DWAGzd9Gy}/_buildManifest.js +0 -0
- /package/app/.next-cli-build/static/{X2TbUaHtTCXPAbb1Jzltg → fMIuttQ13oA2DWAGzd9Gy}/_ssgManifest.js +0 -0
|
Binary file
|
|
Binary file
|
package/app/package.json
CHANGED
package/cli.js
CHANGED
|
@@ -571,6 +571,11 @@ if (skipKill) {
|
|
|
571
571
|
.then(() => startServer(updatePromise));
|
|
572
572
|
}
|
|
573
573
|
|
|
574
|
+
// Logika menu tinggal di modul terpisah supaya bisa diuji tanpa menjalankan
|
|
575
|
+
// CLI: cli.js ini mengeksekusi dirinya di module scope (startServer, bahkan
|
|
576
|
+
// process.exit kalau standalone build tidak ada).
|
|
577
|
+
const { buildInterfaceMenuItems, resolveMenuAction } = require("./src/cli/utils/interfaceMenu");
|
|
578
|
+
|
|
574
579
|
// Show interface selection menu
|
|
575
580
|
async function showInterfaceMenu(latestVersion) {
|
|
576
581
|
const { selectMenu } = require("./src/cli/utils/input");
|
|
@@ -592,40 +597,10 @@ async function showInterfaceMenu(latestVersion) {
|
|
|
592
597
|
|
|
593
598
|
const subtitle = `🚀 Server: \x1b[32m${serverUrl}\x1b[0m`;
|
|
594
599
|
|
|
595
|
-
const menuItems =
|
|
596
|
-
|
|
597
|
-
if (latestVersion) {
|
|
598
|
-
menuItems.push({ label: `Update to v${latestVersion} (current: v${pkg.version})`, icon: "⬆" });
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
menuItems.push(
|
|
602
|
-
{ label: "Web UI (Open in Browser)", icon: "🌐" },
|
|
603
|
-
{ label: "Terminal UI (Interactive CLI)", icon: "💻" },
|
|
604
|
-
{ label: "Hide to Tray (Background)", icon: "🔔" },
|
|
605
|
-
{ label: "Exit", icon: "🚪" }
|
|
606
|
-
);
|
|
607
|
-
|
|
600
|
+
const menuItems = buildInterfaceMenuItems(latestVersion, pkg.version);
|
|
608
601
|
const selected = await selectMenu(`Choose Interface (v${pkg.version})`, menuItems, 0, subtitle);
|
|
609
602
|
|
|
610
|
-
|
|
611
|
-
// - ESC ditekan (input.js: resolve(-1))
|
|
612
|
-
// - stdin bukan TTY, mis. CLI dijalankan dari skrip / terminal tanpa TTY
|
|
613
|
-
//
|
|
614
|
-
// Dulu keduanya jatuh ke `return "exit"` di bawah, dan pemanggilnya
|
|
615
|
-
// menjalankan cleanup() yang MEMBUNUH server. Akibatnya menekan ESC sekali
|
|
616
|
-
// saja sudah cukup untuk mematikan gateway — inilah "tiba-tiba berhenti".
|
|
617
|
-
// Sekarang: batalkan saja, jangan sentuh server.
|
|
618
|
-
if (selected === -1) return "back";
|
|
619
|
-
|
|
620
|
-
const offset = latestVersion ? 1 : 0;
|
|
621
|
-
|
|
622
|
-
if (latestVersion && selected === 0) return "update";
|
|
623
|
-
if (selected === offset) return "web";
|
|
624
|
-
if (selected === offset + 1) return "terminal";
|
|
625
|
-
if (selected === offset + 2) return "hide";
|
|
626
|
-
// Indeks tak dikenal: jangan pernah menafsirkannya sebagai perintah mematikan
|
|
627
|
-
// server. Lebih baik tampilkan menu lagi.
|
|
628
|
-
return "back";
|
|
603
|
+
return resolveMenuAction(selected, latestVersion, pkg.version);
|
|
629
604
|
}
|
|
630
605
|
|
|
631
606
|
const MAX_RESTARTS = 2;
|
package/package.json
CHANGED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logika menu "Choose Interface" — dipisah dari cli.js supaya bisa diuji.
|
|
3
|
+
*
|
|
4
|
+
* cli.js menjalankan dirinya di module scope (startServer, bahkan
|
|
5
|
+
* process.exit kalau standalone build tidak ada), jadi mengimpornya dari test
|
|
6
|
+
* akan menjalankan CLI sungguhan. Fungsi-fungsi di sini murni: tidak menyentuh
|
|
7
|
+
* proses, jaringan, atau berkas.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Susun daftar item menu.
|
|
12
|
+
*
|
|
13
|
+
* Setiap item membawa `action`-nya sendiri, dan aksi dibaca dari array ini —
|
|
14
|
+
* bukan dari konstanta offset yang dihitung manual.
|
|
15
|
+
*
|
|
16
|
+
* Bug yang dihilangkan (v0.5.113): dulu pembacaannya memakai `offset + N`
|
|
17
|
+
* hardcoded dan TIDAK ADA cabang yang menangani indeks "Exit". Memilih Exit
|
|
18
|
+
* mengembalikan "back" — menu muncul lagi, server tetap hidup, dan opsi itu
|
|
19
|
+
* tampak tidak berfungsi. Bug yang sama mengintai setiap kali item ditambah
|
|
20
|
+
* atau diurutkan ulang, karena nomornya harus diperbarui manual di dua tempat.
|
|
21
|
+
*
|
|
22
|
+
* @param {string|null} latestVersion
|
|
23
|
+
* @param {string} currentVersion
|
|
24
|
+
* @returns {Array<{label:string, icon:string, action:string}>}
|
|
25
|
+
*/
|
|
26
|
+
function buildInterfaceMenuItems(latestVersion, currentVersion) {
|
|
27
|
+
const items = [];
|
|
28
|
+
|
|
29
|
+
if (latestVersion) {
|
|
30
|
+
items.push({
|
|
31
|
+
label: `Update to v${latestVersion} (current: v${currentVersion})`,
|
|
32
|
+
icon: "⬆",
|
|
33
|
+
action: "update",
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
items.push(
|
|
38
|
+
{ label: "Web UI (Open in Browser)", icon: "🌐", action: "web" },
|
|
39
|
+
{ label: "Terminal UI (Interactive CLI)", icon: "💻", action: "terminal" },
|
|
40
|
+
{ label: "Hide to Tray (Background)", icon: "🔔", action: "hide" },
|
|
41
|
+
{ label: "Exit", icon: "🚪", action: "exit" }
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
return items;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Terjemahkan indeks pilihan menu menjadi aksi.
|
|
49
|
+
*
|
|
50
|
+
* @param {number} selected indeks dari selectMenu; -1 = ESC / bukan TTY
|
|
51
|
+
* @param {string|null} latestVersion
|
|
52
|
+
* @param {string} currentVersion
|
|
53
|
+
* @returns {"update"|"web"|"terminal"|"hide"|"exit"|"back"}
|
|
54
|
+
*/
|
|
55
|
+
function resolveMenuAction(selected, latestVersion, currentVersion) {
|
|
56
|
+
// `selectMenu` mengembalikan -1 untuk dua hal yang SAMA SEKALI BUKAN "exit":
|
|
57
|
+
// - ESC ditekan (input.js: resolve(-1))
|
|
58
|
+
// - stdin bukan TTY, mis. CLI dijalankan dari skrip / terminal tanpa TTY
|
|
59
|
+
//
|
|
60
|
+
// Dulu keduanya jatuh ke `return "exit"`, dan pemanggilnya menjalankan
|
|
61
|
+
// cleanup() yang MEMBUNUH server. Akibatnya menekan ESC sekali saja sudah
|
|
62
|
+
// cukup untuk mematikan gateway — inilah keluhan "tiba-tiba berhenti".
|
|
63
|
+
// Sekarang: batalkan saja, jangan sentuh server.
|
|
64
|
+
if (selected === -1) return "back";
|
|
65
|
+
|
|
66
|
+
const items = buildInterfaceMenuItems(latestVersion, currentVersion);
|
|
67
|
+
const item = items[selected];
|
|
68
|
+
// Indeks tak dikenal: jangan pernah menafsirkannya sebagai perintah mematikan
|
|
69
|
+
// server. Lebih baik tampilkan menu lagi.
|
|
70
|
+
return item?.action || "back";
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
module.exports = { buildInterfaceMenuItems, resolveMenuAction };
|
|
File without changes
|
/package/app/.next-cli-build/static/{X2TbUaHtTCXPAbb1Jzltg → fMIuttQ13oA2DWAGzd9Gy}/_ssgManifest.js
RENAMED
|
File without changes
|