synabun 2.0.5 → 2.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 +40 -0
- package/README.md +2 -1
- package/THIRD-PARTY-LICENSES.md +13 -0
- package/docs/whatsapp.md +151 -16
- package/hooks/claude-code/shared.mjs +6 -3
- package/lib/child-path.js +303 -0
- package/lib/claude-hooks.js +2 -1
- package/lib/data-home-migration.js +2 -0
- package/lib/desktop-app.js +265 -0
- package/lib/external-tools.js +7 -3
- package/lib/log-redact.js +102 -0
- package/lib/packaged-runtime.js +138 -11
- package/mcp-server/dist/http.d.ts +3 -1
- package/mcp-server/dist/http.d.ts.map +1 -1
- package/mcp-server/dist/http.js +15 -4
- package/mcp-server/dist/http.js.map +1 -1
- package/mcp-server/dist/index.d.ts.map +1 -1
- package/mcp-server/dist/index.js +9 -6
- package/mcp-server/dist/index.js.map +1 -1
- package/mcp-server/dist/services/budget-judgments.d.ts +108 -0
- package/mcp-server/dist/services/budget-judgments.d.ts.map +1 -0
- package/mcp-server/dist/services/budget-judgments.js +153 -0
- package/mcp-server/dist/services/budget-judgments.js.map +1 -0
- package/mcp-server/dist/services/codex-config-heal.d.ts +5 -1
- package/mcp-server/dist/services/codex-config-heal.d.ts.map +1 -1
- package/mcp-server/dist/services/codex-config-heal.js +41 -4
- package/mcp-server/dist/services/codex-config-heal.js.map +1 -1
- package/mcp-server/dist/services/identity.d.ts +11 -0
- package/mcp-server/dist/services/identity.d.ts.map +1 -1
- package/mcp-server/dist/services/identity.js +24 -0
- package/mcp-server/dist/services/identity.js.map +1 -1
- package/mcp-server/dist/services/neural-interface.d.ts +13 -0
- package/mcp-server/dist/services/neural-interface.d.ts.map +1 -1
- package/mcp-server/dist/services/neural-interface.js +34 -2
- package/mcp-server/dist/services/neural-interface.js.map +1 -1
- package/mcp-server/dist/services/typesafe-config.d.ts +1 -1
- package/mcp-server/dist/services/typesafe-config.d.ts.map +1 -1
- package/mcp-server/dist/services/typesafe-config.js +4 -1
- package/mcp-server/dist/services/typesafe-config.js.map +1 -1
- package/mcp-server/dist/tools/agents.d.ts +10 -7
- package/mcp-server/dist/tools/agents.d.ts.map +1 -1
- package/mcp-server/dist/tools/agents.js +34 -13
- package/mcp-server/dist/tools/agents.js.map +1 -1
- package/mcp-server/dist/tools/whatsapp-send-file.d.ts +17 -0
- package/mcp-server/dist/tools/whatsapp-send-file.d.ts.map +1 -0
- package/mcp-server/dist/tools/whatsapp-send-file.js +44 -0
- package/mcp-server/dist/tools/whatsapp-send-file.js.map +1 -0
- package/mcp-server/dist/tui.js +2 -1
- package/mcp-server/dist/tui.js.map +1 -1
- package/mcp-server/dist/version.d.ts +5 -0
- package/mcp-server/dist/version.d.ts.map +1 -0
- package/mcp-server/dist/version.js +21 -0
- package/mcp-server/dist/version.js.map +1 -0
- package/mcp-server/package-lock.json +2 -2
- package/mcp-server/package.json +1 -1
- package/mcp-server/run.mjs +15 -9
- package/mcp-server/src/http.ts +18 -3
- package/mcp-server/src/index.ts +9 -6
- package/mcp-server/src/services/budget-judgments.ts +183 -0
- package/mcp-server/src/services/codex-config-heal.ts +35 -4
- package/mcp-server/src/services/identity.ts +27 -0
- package/mcp-server/src/services/neural-interface.ts +34 -2
- package/mcp-server/src/services/typesafe-config.ts +4 -1
- package/mcp-server/src/tools/agents.ts +33 -14
- package/mcp-server/src/tools/whatsapp-send-file.ts +51 -0
- package/mcp-server/src/tui.ts +2 -1
- package/mcp-server/src/version.ts +22 -0
- package/neural-interface/i18n/en.json +627 -57
- package/neural-interface/i18n/pt-BR.json +626 -56
- package/neural-interface/lib/account-usage.js +163 -0
- package/neural-interface/lib/assistant-api.js +255 -52
- package/neural-interface/lib/assistant-brains/claude.js +15 -2
- package/neural-interface/lib/assistant-brains/codex.js +3 -0
- package/neural-interface/lib/assistant-brains/opencode.js +17 -4
- package/neural-interface/lib/assistant-budget-planner.js +390 -0
- package/neural-interface/lib/assistant-budget-split.js +408 -0
- package/neural-interface/lib/assistant-budget.js +94 -95
- package/neural-interface/lib/assistant-config.js +62 -14
- package/neural-interface/lib/assistant-dispatch.js +432 -125
- package/neural-interface/lib/assistant-jev.js +26 -3
- package/neural-interface/lib/assistant-persona.js +68 -11
- package/neural-interface/lib/assistant-plan-permissions.js +8 -1
- package/neural-interface/lib/assistant-route-accounts.js +14 -0
- package/neural-interface/lib/assistant-route-gate.js +19 -3
- package/neural-interface/lib/assistant-router.js +373 -42
- package/neural-interface/lib/assistant-runtime.js +307 -47
- package/neural-interface/lib/assistant-user-writer.js +4 -2
- package/neural-interface/lib/augmented-path.js +317 -53
- package/neural-interface/lib/claude-accounts.js +342 -31
- package/neural-interface/lib/claude-agent-bridge.js +90 -3
- package/neural-interface/lib/claude-executable.js +6 -1
- package/neural-interface/lib/claude-model-catalog.js +3 -3
- package/neural-interface/lib/claude-panel-auth.js +221 -0
- package/neural-interface/lib/claude-profile-api-key.js +62 -0
- package/neural-interface/lib/cli-install-api.js +137 -0
- package/neural-interface/lib/cli-install.js +797 -0
- package/neural-interface/lib/cli-path.js +130 -0
- package/neural-interface/lib/cli-resolver.js +744 -0
- package/neural-interface/lib/cli-update-planner.js +143 -7
- package/neural-interface/lib/codex-account-auth.js +178 -0
- package/neural-interface/lib/codex-accounts.js +489 -0
- package/neural-interface/lib/codex-capabilities.js +2 -1
- package/neural-interface/lib/codex-compat-rpc.js +8 -2
- package/neural-interface/lib/codex-mcp-approvals.js +5 -1
- package/neural-interface/lib/codex-panel-auth.js +62 -0
- package/neural-interface/lib/codex-session-settings.js +1 -1
- package/neural-interface/lib/codex-settings-schema.js +120 -0
- package/neural-interface/lib/desktop/config.js +3 -0
- package/neural-interface/lib/git-bash/bzip2.js +339 -0
- package/neural-interface/lib/git-bash/claude-settings.js +73 -0
- package/neural-interface/lib/git-bash/extract-worker.js +34 -0
- package/neural-interface/lib/git-bash/install.js +529 -0
- package/neural-interface/lib/git-bash/licenses/COPYING +360 -0
- package/neural-interface/lib/git-bash/licenses/LGPL-2.1 +511 -0
- package/neural-interface/lib/git-bash/manager.js +268 -0
- package/neural-interface/lib/git-bash/pins.js +206 -0
- package/neural-interface/lib/git-bash/pins.json +34 -0
- package/neural-interface/lib/git-bash/resolver.js +194 -0
- package/neural-interface/lib/git-read.js +34 -2
- package/neural-interface/lib/install-details.js +145 -0
- package/neural-interface/lib/mcp-installer.js +14 -2
- package/neural-interface/lib/native-loop-providers.js +16 -3
- package/neural-interface/lib/native-loop-runtime.js +9 -4
- package/neural-interface/lib/os-path.js +319 -0
- package/neural-interface/lib/provider-panel-api-key-auth.js +92 -0
- package/neural-interface/lib/provider-panel-terminal-auth.js +95 -0
- package/neural-interface/lib/pty-host/core.js +2 -1
- package/neural-interface/lib/pty-host/manager.js +27 -2
- package/neural-interface/lib/remote-policy.js +20 -11
- package/neural-interface/lib/session-title-generator.js +4 -3
- package/neural-interface/lib/system-about.js +340 -0
- package/neural-interface/lib/system-activity.js +66 -0
- package/neural-interface/lib/terminal-env.js +11 -3
- package/neural-interface/lib/terminal-path.js +55 -0
- package/neural-interface/lib/virtual-socket.js +12 -1
- package/neural-interface/lib/whatsapp/baileys-adapter.js +165 -45
- package/neural-interface/lib/whatsapp/bridge.js +78 -34
- package/neural-interface/lib/whatsapp/commands.js +13 -14
- package/neural-interface/lib/whatsapp/config.js +134 -20
- package/neural-interface/lib/whatsapp/fake-baileys.js +99 -14
- package/neural-interface/lib/whatsapp/host-core.js +168 -35
- package/neural-interface/lib/whatsapp/inbound.js +5 -3
- package/neural-interface/lib/whatsapp/local-file.js +524 -0
- package/neural-interface/lib/whatsapp/manager.js +92 -32
- package/neural-interface/lib/whatsapp/paths.js +11 -1
- package/neural-interface/lib/whatsapp/protocol.js +65 -5
- package/neural-interface/lib/whatsapp/redact.js +63 -0
- package/neural-interface/lib/whatsapp/service.js +343 -91
- package/neural-interface/lib/whatsapp/transcription.js +463 -0
- package/neural-interface/package-lock.json +2 -2
- package/neural-interface/package.json +1 -1
- package/neural-interface/public/index.html +2 -0
- package/neural-interface/public/index2d.html +2 -0
- package/neural-interface/public/offline.html +16 -1
- package/neural-interface/public/onboarding.html +96 -2
- package/neural-interface/public/shared/account-i18n.js +7 -0
- package/neural-interface/public/shared/account-menu.js +539 -0
- package/neural-interface/public/shared/account-usage.js +19 -0
- package/neural-interface/public/shared/account-view.js +335 -0
- package/neural-interface/public/shared/agent-runtime-options.js +28 -8
- package/neural-interface/public/shared/assistant/asst-accounts.js +182 -184
- package/neural-interface/public/shared/assistant/asst-api.js +32 -2
- package/neural-interface/public/shared/assistant/asst-brain-picker.js +124 -25
- package/neural-interface/public/shared/assistant/asst-budget.js +259 -303
- package/neural-interface/public/shared/assistant/asst-mascot.js +126 -7
- package/neural-interface/public/shared/assistant/asst-menu.js +15 -3
- package/neural-interface/public/shared/assistant/asst-panel.js +48 -14
- package/neural-interface/public/shared/assistant/asst-render.js +38 -7
- package/neural-interface/public/shared/assistant/asst-route.js +72 -14
- package/neural-interface/public/shared/assistant/asst-routes-editor.js +45 -6
- package/neural-interface/public/shared/assistant/asst-slash.js +1 -1
- package/neural-interface/public/shared/assistant/asst-state.js +1 -1
- package/neural-interface/public/shared/assistant/asst-styles.js +99 -17
- package/neural-interface/public/shared/cdx/cdx-commands.js +4 -1
- package/neural-interface/public/shared/cdx/cdx-features.js +22 -14
- package/neural-interface/public/shared/cdx/cdx-icons.js +2 -0
- package/neural-interface/public/shared/cdx/cdx-panel.js +48 -107
- package/neural-interface/public/shared/cdx/cdx-settings.js +231 -0
- package/neural-interface/public/shared/cdx/cdx-styles.js +128 -107
- package/neural-interface/public/shared/cdx/cdx-tabs.js +261 -664
- package/neural-interface/public/shared/cdx/cdx-ws.js +2 -0
- package/neural-interface/public/shared/claude-account-view.js +3 -0
- package/neural-interface/public/shared/cli-install-view.js +392 -0
- package/neural-interface/public/shared/cli-status.js +282 -22
- package/neural-interface/public/shared/cp/cp-events.js +2 -1
- package/neural-interface/public/shared/cp/cp-styles.js +46 -0
- package/neural-interface/public/shared/desktop-bridge.js +39 -0
- package/neural-interface/public/shared/desktop-titlebar-page.js +59 -0
- package/neural-interface/public/shared/desktop-titlebar-view.js +122 -0
- package/neural-interface/public/shared/desktop-titlebar.js +153 -0
- package/neural-interface/public/shared/desktop-update-view.js +462 -0
- package/neural-interface/public/shared/editor/editor-panel.js +1 -1
- package/neural-interface/public/shared/explorer/fx-main.js +1 -1
- package/neural-interface/public/shared/git-bash-view.js +145 -0
- package/neural-interface/public/shared/html-shell.js +1 -0
- package/neural-interface/public/shared/i18n.js +19 -1
- package/neural-interface/public/shared/install-details-view.js +86 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +32 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-send.js +17 -0
- package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +118 -0
- package/neural-interface/public/shared/pwa-install-page.js +3 -1
- package/neural-interface/public/shared/settings/settings-about-pane.js +271 -0
- package/neural-interface/public/shared/settings/settings-about.js +254 -0
- package/neural-interface/public/shared/settings/settings-ia.js +15 -0
- package/neural-interface/public/shared/showcase-privacy.js +489 -0
- package/neural-interface/public/shared/storage.js +30 -3
- package/neural-interface/public/shared/styles.css +278 -31
- package/neural-interface/public/shared/synabun-mascot.js +48 -2
- package/neural-interface/public/shared/ui-claude-panel.js +212 -213
- package/neural-interface/public/shared/ui-cli-banner.js +355 -0
- package/neural-interface/public/shared/ui-git-bash.js +124 -0
- package/neural-interface/public/shared/ui-judgments.js +10 -1
- package/neural-interface/public/shared/ui-loading.js +30 -6
- package/neural-interface/public/shared/ui-menubar.js +13 -3
- package/neural-interface/public/shared/ui-navbar.js +3 -1
- package/neural-interface/public/shared/ui-provider-auth.js +104 -0
- package/neural-interface/public/shared/ui-provider-terminal-auth.js +223 -0
- package/neural-interface/public/shared/ui-sessions.js +9 -3
- package/neural-interface/public/shared/ui-settings.js +55 -3
- package/neural-interface/public/shared/ui-sidepanel-sessions.js +3 -1
- package/neural-interface/public/shared/ui-sync.js +6 -0
- package/neural-interface/public/shared/ui-terminal.js +17 -0
- package/neural-interface/public/shared/ui-tool-updates.js +5 -0
- package/neural-interface/public/shared/ui-update.js +594 -5
- package/neural-interface/public/shared/ui-whatsapp.js +21 -6
- package/neural-interface/public/shared/whatsapp/wa-view.js +51 -8
- package/neural-interface/public/shared/worker-end.js +2 -0
- package/neural-interface/public/sw.js +1 -1
- package/neural-interface/public/variant/2d/main.js +10 -1
- package/neural-interface/public/variant/3d/main.js +10 -1
- package/neural-interface/server.js +1219 -608
- package/package.json +4 -1
- package/setup.js +9 -8
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<!-- Inside the SynaBun desktop app this page lays out its own top (shared/desktop-titlebar-page.js). -->
|
|
7
|
+
<meta name="synabun-titlebar" content="page">
|
|
6
8
|
<title>Setup - SynaBun</title>
|
|
7
9
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
|
8
10
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
|
@@ -52,6 +54,15 @@
|
|
|
52
54
|
justify-content: center;
|
|
53
55
|
}
|
|
54
56
|
|
|
57
|
+
/* ── Inside the SynaBun desktop app (shared/desktop-titlebar-page.js): the window has no native title bar, and a
|
|
58
|
+
strip along the top drags it. The logo keeps its click, and on macOS clears the traffic lights. ── */
|
|
59
|
+
.ob-logo { -webkit-app-region: no-drag; }
|
|
60
|
+
html.desktop-titlebar--darwin .ob-logo { left: calc(env(titlebar-area-x, 86px) + 12px) !important; }
|
|
61
|
+
/* The Details areas (desktop app): what the wizard checked and what this copy has, in the build output's box. */
|
|
62
|
+
.ob-details { margin-top: 12px; }
|
|
63
|
+
.ob-details .mcp-other-header:focus-visible { outline: 1px solid var(--accent-border); outline-offset: -1px; }
|
|
64
|
+
.ob-details .terminal { margin: 0; max-height: 200px; word-break: break-word; user-select: text; }
|
|
65
|
+
|
|
55
66
|
/* Background canvas */
|
|
56
67
|
#bgCanvas {
|
|
57
68
|
position: fixed;
|
|
@@ -1068,7 +1079,7 @@
|
|
|
1068
1079
|
|
|
1069
1080
|
<canvas id="bgCanvas"></canvas>
|
|
1070
1081
|
|
|
1071
|
-
<a href="https://synabun.ai" target="_blank" rel="noopener" style="position:fixed;top:24px;left:28px;z-index:10;opacity:0.4;transition:opacity 0.2s;" onmouseenter="this.style.opacity='0.7'" onmouseleave="this.style.opacity='0.4'">
|
|
1082
|
+
<a href="https://synabun.ai" target="_blank" rel="noopener" class="ob-logo" style="position:fixed;top:24px;left:28px;z-index:10;opacity:0.4;transition:opacity 0.2s;" onmouseenter="this.style.opacity='0.7'" onmouseleave="this.style.opacity='0.4'">
|
|
1072
1083
|
<img src="synabun.png?v=2" alt="SynaBun" style="height:34px;width:auto;">
|
|
1073
1084
|
</a>
|
|
1074
1085
|
|
|
@@ -1137,6 +1148,16 @@
|
|
|
1137
1148
|
<h2>Environment Check</h2>
|
|
1138
1149
|
<p class="subtitle">Verifying your system has everything SynaBun needs.</p>
|
|
1139
1150
|
<ul class="dep-list" id="depList"></ul>
|
|
1151
|
+
<!-- Desktop app: the commands the check ran and what they answered (shared/install-details-view.js). -->
|
|
1152
|
+
<div class="mcp-other-section ob-details" id="envDetails" hidden>
|
|
1153
|
+
<div class="mcp-other-header" id="envDetailsHeader" role="button" tabindex="0" aria-expanded="false" aria-controls="envDetailsBody">
|
|
1154
|
+
<span>Details</span>
|
|
1155
|
+
<svg class="mcp-other-chevron" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true"><polyline points="6 9 12 15 18 9" fill="none" stroke="currentColor" stroke-width="2"/></svg>
|
|
1156
|
+
</div>
|
|
1157
|
+
<div class="mcp-other-body" id="envDetailsBody" style="display:none;">
|
|
1158
|
+
<div class="terminal" id="envDetailsLog" role="log"></div>
|
|
1159
|
+
</div>
|
|
1160
|
+
</div>
|
|
1140
1161
|
</div>
|
|
1141
1162
|
|
|
1142
1163
|
<!-- Step 2: Memory Name & Location -->
|
|
@@ -1192,6 +1213,16 @@
|
|
|
1192
1213
|
</div>
|
|
1193
1214
|
<div class="terminal" id="buildOutput" style="display:none"></div>
|
|
1194
1215
|
<button class="action-btn" id="buildBtn">Install & Build</button>
|
|
1216
|
+
<!-- Desktop app: what this copy came with, every dependency with its version (shared/install-details-view.js). -->
|
|
1217
|
+
<div class="mcp-other-section ob-details" id="installDetails" hidden>
|
|
1218
|
+
<div class="mcp-other-header" id="installDetailsHeader" role="button" tabindex="0" aria-expanded="false" aria-controls="installDetailsBody">
|
|
1219
|
+
<span>Details</span>
|
|
1220
|
+
<svg class="mcp-other-chevron" viewBox="0 0 24 24" width="14" height="14" aria-hidden="true"><polyline points="6 9 12 15 18 9" fill="none" stroke="currentColor" stroke-width="2"/></svg>
|
|
1221
|
+
</div>
|
|
1222
|
+
<div class="mcp-other-body" id="installDetailsBody" style="display:none;">
|
|
1223
|
+
<div class="terminal" id="installDetailsLog" role="log"></div>
|
|
1224
|
+
</div>
|
|
1225
|
+
</div>
|
|
1195
1226
|
</div>
|
|
1196
1227
|
|
|
1197
1228
|
<!-- Step 4: Add Projects -->
|
|
@@ -1416,9 +1447,18 @@ import {
|
|
|
1416
1447
|
// Install as an app: the wizard has no step for it. The browser's own dialog opens once, from a click that
|
|
1417
1448
|
// moves the wizard on anyway (the welcome choices, Next), and the wizard never reads the answer. Also import-free.
|
|
1418
1449
|
import { initPwaInstall, isStandalone, offerPwaInstallOnce } from './shared/pwa-install.js';
|
|
1450
|
+
import { isDesktopApp } from './shared/desktop-bridge.js';
|
|
1451
|
+
// The desktop app: no native title bar (a strip along the top drags the window), and Details areas under the
|
|
1452
|
+
// environment check and the install step. Both import-free; neither does anything in a browser.
|
|
1453
|
+
import { initDesktopPageTitleBar } from './shared/desktop-titlebar-page.js';
|
|
1454
|
+
import { environmentLines, installLines } from './shared/install-details-view.js';
|
|
1455
|
+
|
|
1456
|
+
initDesktopPageTitleBar();
|
|
1419
1457
|
|
|
1420
1458
|
// Chrome and Edge hand the page their install event when it can be installed; Safari and Firefox have none.
|
|
1421
|
-
|
|
1459
|
+
// The SynaBun desktop app is its own window: it never asks for the event, so offerPwaInstallOnce() has none
|
|
1460
|
+
// to open there.
|
|
1461
|
+
if (!isStandalone() && !isDesktopApp()) initPwaInstall();
|
|
1422
1462
|
|
|
1423
1463
|
// ═══════════════════════════════════════════
|
|
1424
1464
|
// STATE
|
|
@@ -2152,10 +2192,63 @@ async function onDepsStep() {
|
|
|
2152
2192
|
detail.innerHTML = `${dep.detail} — <a href="${dep.url}" target="_blank" rel="noopener">Download \u2197</a>`;
|
|
2153
2193
|
}
|
|
2154
2194
|
}
|
|
2195
|
+
showDetails('envDetails', environmentLines, 1);
|
|
2155
2196
|
}
|
|
2156
2197
|
|
|
2157
2198
|
function wait(ms) { return new Promise(r => setTimeout(r, ms)); }
|
|
2158
2199
|
|
|
2200
|
+
// ═══════════════════════════════════════════
|
|
2201
|
+
// DETAILS (desktop app): what the wizard checked and what this copy has
|
|
2202
|
+
// ═══════════════════════════════════════════
|
|
2203
|
+
// GET /api/setup/install-details, read once; open by default, collapsible. An npm or Git install shows none.
|
|
2204
|
+
|
|
2205
|
+
const SHOW_DETAILS = isDesktopApp();
|
|
2206
|
+
let installDetailsRequest = null;
|
|
2207
|
+
function loadInstallDetails() {
|
|
2208
|
+
if (!installDetailsRequest) {
|
|
2209
|
+
installDetailsRequest = fetch('/api/setup/install-details')
|
|
2210
|
+
.then(res => (res.ok ? res.json() : Promise.reject(new Error(`the server answered ${res.status}`))))
|
|
2211
|
+
.catch((error) => { installDetailsRequest = null; throw error; });
|
|
2212
|
+
}
|
|
2213
|
+
return installDetailsRequest;
|
|
2214
|
+
}
|
|
2215
|
+
|
|
2216
|
+
function openDetails(prefix, stepIndex, open) {
|
|
2217
|
+
const section = document.getElementById(prefix);
|
|
2218
|
+
section.classList.toggle('open', open);
|
|
2219
|
+
document.getElementById(`${prefix}Body`).style.display = open ? '' : 'none';
|
|
2220
|
+
document.getElementById(`${prefix}Header`).setAttribute('aria-expanded', String(open));
|
|
2221
|
+
requestAnimationFrame(() => resizeViewport(stepIndex));
|
|
2222
|
+
}
|
|
2223
|
+
|
|
2224
|
+
function wireDetails(prefix, stepIndex) {
|
|
2225
|
+
const header = document.getElementById(`${prefix}Header`);
|
|
2226
|
+
const toggle = () => openDetails(prefix, stepIndex, !document.getElementById(prefix).classList.contains('open'));
|
|
2227
|
+
header.addEventListener('click', toggle);
|
|
2228
|
+
header.addEventListener('keydown', (event) => {
|
|
2229
|
+
if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); toggle(); }
|
|
2230
|
+
});
|
|
2231
|
+
}
|
|
2232
|
+
wireDetails('envDetails', 1);
|
|
2233
|
+
wireDetails('installDetails', 3);
|
|
2234
|
+
|
|
2235
|
+
async function showDetails(prefix, linesOf, stepIndex) {
|
|
2236
|
+
if (!SHOW_DETAILS) return;
|
|
2237
|
+
const section = document.getElementById(prefix);
|
|
2238
|
+
const log = document.getElementById(`${prefix}Log`);
|
|
2239
|
+
const first = section.hidden;
|
|
2240
|
+
section.hidden = false;
|
|
2241
|
+
if (first) openDetails(prefix, stepIndex, true);
|
|
2242
|
+
log.textContent = 'Reading what this copy has\u2026';
|
|
2243
|
+
try {
|
|
2244
|
+
const lines = linesOf(await loadInstallDetails());
|
|
2245
|
+
log.textContent = lines.length ? lines.join('\n') : 'Nothing to show.';
|
|
2246
|
+
} catch (err) {
|
|
2247
|
+
log.textContent = `Could not read the details: ${err.message}`;
|
|
2248
|
+
}
|
|
2249
|
+
resizeViewport(stepIndex);
|
|
2250
|
+
}
|
|
2251
|
+
|
|
2159
2252
|
// ═══════════════════════════════════════════
|
|
2160
2253
|
// STEP 3: Install & Build
|
|
2161
2254
|
// ═══════════════════════════════════════════
|
|
@@ -2225,6 +2318,7 @@ async function onBuildStep() {
|
|
|
2225
2318
|
$btn.textContent = 'Already Done';
|
|
2226
2319
|
$btn.classList.add('success');
|
|
2227
2320
|
$btn.disabled = true;
|
|
2321
|
+
showDetails('installDetails', installLines, 3);
|
|
2228
2322
|
return;
|
|
2229
2323
|
}
|
|
2230
2324
|
} catch {}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Hands the page's translator to account-view.js (`accounts.*` in i18n/*.json).
|
|
2
|
+
// Browser-only: i18n.js reads the page's storage, so node tests load
|
|
3
|
+
// account-view.js without it and get the English.
|
|
4
|
+
import { t } from './i18n.js';
|
|
5
|
+
import { setAccountTranslator } from './account-view.js';
|
|
6
|
+
|
|
7
|
+
setAccountTranslator((key, params) => t(`accounts.${key}`, params));
|