authorgravatar for maria@kuuro.netmaria <maria@kuuro.net> 2026-09-06 19:54:32-03:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-06 19:54:32-03:00
log2d6a3799978659e349faf8ff4297098ffb782ebb
treeee3fcb67186ab0b0bb34d1ba3589fcc1ad26952c
parente15ffb9c0f73425dd9a1965070f01a07c9065761
signature Signed by PGP key B5690EEEBB952194

fix(web): only show auto balance errors after failed checks (#10407)


3 files changed, 16 insertions(+), 9 deletions(-)

apps/web/src/components/ChatView.tsx+3-1
......@@ -3331,7 +3331,9 @@ export default function ChatView(props: ChatViewProps) {
33313331 ? "Auto balance"
33323332 : loadBalancing.pending
33333333 ? "Checking machines…"
3334 : "Auto balance unavailable"
3334 : loadBalancing.failed
3335 ? "Auto balance unavailable"
3336 : "Auto balance"
33353337 : undefined;
33363338
33373339 // Handle environment change for draft threads. When the user picks a
apps/web/src/hooks/useLoadBalancedEnvironment.ts+12-8
......@@ -30,21 +30,25 @@ export function useLoadBalancedEnvironment(
3030 resources: result._tag === "Success" ? result.value : null,
3131 receivedAt: result._tag === "Success" ? result.timestamp : 0,
3232 pending: result._tag === "Initial" || result.waiting,
33 failed: result._tag === "Failure",
3334 };
3435 }),
3536 ),
3637 [environmentIds],
3738 );
3839 const resources = useAtomValue(resourcesAtom);
40 const pending = resources.some((resource) => resource.pending);
41 const environmentId = chooseLoadBalancedEnvironment(
42 resources.map((resource) => ({
43 ...resource,
44 weight: weights[resource.environmentId] ?? 50,
45 })),
46 Date.now(),
47 ) as EnvironmentId | null;
3948 return {
4049 refresh,
41 pending: resources.some((resource) => resource.pending),
42 environmentId: chooseLoadBalancedEnvironment(
43 resources.map((resource) => ({
44 ...resource,
45 weight: weights[resource.environmentId] ?? 50,
46 })),
47 Date.now(),
48 ) as EnvironmentId | null,
50 pending,
51 environmentId,
52 failed: !pending && environmentId === null && resources.some((resource) => resource.failed),
4953 };
5054}
packages/client-runtime/src/state/server.ts+1
......@@ -1021,6 +1021,7 @@ export function createServerEnvironmentAtoms<R, E>(
10211021 }),
10221022 hostResources: createEnvironmentQueryAtomFamily(runtime, {
10231023 label: "environment-data:server:host-resources",
1024 idleTtlMs: 0,
10241025 staleTimeMs: 5_000,
10251026 execute: (input: EnvironmentRpcInput<typeof WS_METHODS.serverGetHostResources>) =>
10261027 request(WS_METHODS.serverGetHostResources, input).pipe(Effect.timeout("5 seconds")),