Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions desktop/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Reasonix Desktop (Wails shell)

Model/provider setup: [English guide](../docs/MODEL_SETTINGS.md) · [中文指南](../docs/MODEL_SETTINGS.zh-CN.md).

A native desktop window around the Reasonix Go kernel. The same
transport-agnostic `control.Controller` that backs the chat TUI and the HTTP/SSE
server is bound **directly** to a React webview — Go methods in, typed events
Expand Down
10 changes: 6 additions & 4 deletions desktop/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -9272,10 +9272,12 @@ func removeServerOrder(order []string, name string) []string {
// ModelInfo is one (provider, model) the bottom switcher can pick. Ref ("provider/
// model") is what SetModel takes; Provider/Model are for display.
type ModelInfo struct {
Ref string `json:"ref"`
Provider string `json:"provider"`
Model string `json:"model"`
Current bool `json:"current"`
Ref string `json:"ref"`
Provider string `json:"provider"`
Model string `json:"model"`
Current bool `json:"current"`
ContextWindow int `json:"contextWindow,omitempty"`
Vision bool `json:"vision,omitempty"`
}

type EffortInfo struct {
Expand Down
17 changes: 7 additions & 10 deletions desktop/frontend/scripts/check-bundle-budget.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -193,11 +193,10 @@ console.log("\nbundle budgets");
// The subagent outcome envelope, partial-state card, and history hydration add
// 0.5 KiB gzip on the initial path. The model-capability resolver and its
// read-only provider badges add a measured 0.2 KiB including gzip/toolchain
// rounding. Direct topic-bar actions replace the overflow trigger; together
// with per-model image guidance, shared model matching, and Automation's page
// projection, the merged path measures 464.590 KiB. Export formats and the
// provider editor remain lazy; retain only the next one-decimal ceiling.
const initialJSBudgetKiB = 464.7;
// rounding. The integrated management shell plus upstream image capability
// identity measures 465.3 KiB versus 464.6 KiB on the same-toolchain base.
// Feature editors remain lazy; retain only the next decimal ceiling.
const initialJSBudgetKiB = 465.3;
assertBudget("initial JavaScript gzip", initialJSGzip, initialJSBudgetKiB * 1024);
assertBudget("largest initial JavaScript chunk gzip", largestInitialJS, 280 * 1024);
// Render-blocking CSS is intentionally absent: styles.css loads deferred via
Expand Down Expand Up @@ -270,7 +269,7 @@ for (const path of localeChunks) {
// dropping the unknown-state explanation.
// Image input mode, provenance and unknown-state guidance measure 60.724 KiB
// zh and 61.570 KiB zh-TW. Keep the next decimal ceiling per locale.
const budget = name.startsWith("zh-TW-") ? 61.6 * 1024 : 60.8 * 1024;
const budget = name.startsWith("zh-TW-") ? 61.7 * 1024 : 60.8 * 1024;
assertBudget(`${name} gzip`, gzipBytes(path), budget);
}

Expand Down Expand Up @@ -366,10 +365,8 @@ const rawInitialBytes = [...initialJS, ...initialCSS, ...appShellCSS]
// On the current main-v2 base, the combined measured path is 2474.6 KiB;
// the model-capability helper and localized status copy add 0.9 KiB; retain
// the smallest bounded cross-platform ceiling.
// Direct topic-bar actions, the macOS single-row dock tabs, responsive model
// configuration, and Automation's shell projection measure 2481.132 KiB raw
// together. Retain only the next decimal ceiling without relaxing independent
// chunk gates.
// The latest base measures 2481.1 KiB; the integrated management pages measure
// 2480.3 KiB. Retain the upstream ceiling and independent chunk gates.
const rawInitialBudgetKiB = 2_481.2;
assertBudget("initial raw JavaScript and CSS", rawInitialBytes, rawInitialBudgetKiB * 1024);
assertBudget("largest initial JavaScript chunk raw", largestInitialJSRaw, 1_000 * 1024);
2 changes: 1 addition & 1 deletion desktop/frontend/scripts/run-tests.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ for (const [name, owner] of OWNED_ELSEWHERE) {

// Suites that statically import CSS (e.g. HeartbeatPanel's heartbeat.css) need
// the css-stub loader hook so tsx resolves the import under node.
const CSS_STUB_SUITES = new Set(["heartbeat-editor.test.tsx", "heartbeat-next-run.test.ts"]);
const CSS_STUB_SUITES = new Set(["provider-image-input.test.tsx", "heartbeat-editor.test.tsx", "heartbeat-next-run.test.ts", "settings-page-navigation.test.tsx", "automation-management.test.tsx", "trash-management.test.tsx", "capabilities-panel-actions.test.ts", "provider-access-card.test.tsx", "provider-editor-model-picker.test.tsx", "provider-name-readonly.test.tsx", "settings-refresh-snapshot.test.tsx", "shell-support-install.test.tsx", "shortcuts-recorder-focus.test.tsx"]);

const suites = files.filter((name) => !OWNED_ELSEWHERE.has(name));
console.log(`run-tests: ${suites.length} discovered suites (${OWNED_ELSEWHERE.size} owned by dedicated scripts)`);
Expand Down
Loading
Loading