From 09247949333771abe3afd0e5ed238b38457a0f45 Mon Sep 17 00:00:00 2001 From: MONKE2525E <221282747+MONKE2525E@users.noreply.github.com> Date: Thu, 15 Oct 2026 17:33:14 -0700 Subject: [PATCH 1/4] fix(web): Antigravity download progress uses the app's progress bar style Replace the browser-default with the rounded track and fill used by the context window meter, keeping its accessible name and values. Co-Authored-By: Claude Opus 5.5 --- .../settings/ProviderSetupSection.tsx | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/apps/web/src/components/settings/ProviderSetupSection.tsx b/apps/web/src/components/settings/ProviderSetupSection.tsx index 04423cee21ac..c879c8ba7914 100644 --- a/apps/web/src/components/settings/ProviderSetupSection.tsx +++ b/apps/web/src/components/settings/ProviderSetupSection.tsx @@ -214,12 +214,21 @@ function ProviderSetupActions({ {installation?.phase === "downloading" && installation.totalBytes !== null && installation.totalBytes > 0 ? ( - + aria-valuemin={0} + aria-valuemax={installation.totalBytes} + aria-valuenow={Math.min(installation.downloadedBytes, installation.totalBytes)} + className="h-1 w-full overflow-hidden rounded-full bg-muted" + > +
+
) : null} {!installActive && From 803ab123307c4248f3500534b67f0fcf60611795 Mon Sep 17 00:00:00 2001 From: MONKE2525E <221282747+MONKE2525E@users.noreply.github.com> Date: Thu, 15 Oct 2026 17:40:01 -0700 Subject: [PATCH 2/4] fix(web): keep the download bar visible in forced-colors mode Co-Authored-By: Claude Opus 5.5 --- apps/web/src/components/settings/ProviderSetupSection.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/web/src/components/settings/ProviderSetupSection.tsx b/apps/web/src/components/settings/ProviderSetupSection.tsx index c879c8ba7914..e470a7848be5 100644 --- a/apps/web/src/components/settings/ProviderSetupSection.tsx +++ b/apps/web/src/components/settings/ProviderSetupSection.tsx @@ -220,10 +220,10 @@ function ProviderSetupActions({ aria-valuemin={0} aria-valuemax={installation.totalBytes} aria-valuenow={Math.min(installation.downloadedBytes, installation.totalBytes)} - className="h-1 w-full overflow-hidden rounded-full bg-muted" + className="h-1 w-full overflow-hidden rounded-full bg-muted forced-colors:border" >
Date: Mon, 19 Oct 2026 10:56:47 -0700 Subject: [PATCH 3/4] fix(web): the Antigravity download bar uses the app's track and fill The native progress element rendered with browser-default colors that did not match the rest of Settings. Style it the same way the relay client install dialog styles its progress element, keeping the native element so the accessible name, value, bounds, clamping and the unknown-total guard stay as they were. In forced-colors mode every background is painted Canvas, so the element reverts to the native widget there, which draws with system colors. Adds a browser test that reads the bar through its progressbar role and value only: bounded while the total is known, clamped to the total, and absent when the total is unknown. Co-Authored-By: Claude Fable 5.1 --- .../ProviderSetupSection.browser.test.tsx | 25 ++++++++++++++++++- .../settings/ProviderSetupSection.tsx | 22 ++++++---------- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/apps/web/src/components/settings/ProviderSetupSection.browser.test.tsx b/apps/web/src/components/settings/ProviderSetupSection.browser.test.tsx index d65046fd2b9c..e6d5ae1c01f4 100644 --- a/apps/web/src/components/settings/ProviderSetupSection.browser.test.tsx +++ b/apps/web/src/components/settings/ProviderSetupSection.browser.test.tsx @@ -8,7 +8,7 @@ import { } from "@t3tools/contracts"; import { act } from "react"; import { createRoot, type Root } from "react-dom/client"; -import { userEvent } from "vite-plus/test/browser"; +import { page, userEvent } from "vite-plus/test/browser"; import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test"; const setup = vi.hoisted(() => ({ @@ -293,6 +293,29 @@ describe("Antigravity setup", () => { expect(occurrences("Checking the downloaded runtime.")).toBe(1); }); + it("exposes download progress as a bounded progressbar only while the total is known", async () => { + const downloading = (downloadedBytes: number, totalBytes: number | null) => { + setup.installation = { + ...setup.installation!, + operationId: "install-1", + phase: "downloading", + downloadedBytes, + totalBytes, + }; + return publish(); + }; + const progressbar = page.getByRole("progressbar", { name: "Antigravity download" }); + await renderSetup(); + + await downloading(40_000_000, 100_000_000); + await expect.element(progressbar).toHaveValue(40_000_000); + // The wire contract does not cap downloaded bytes at the advertised total. + await downloading(110_000_000, 100_000_000); + await expect.element(progressbar).toHaveValue(100_000_000); + await downloading(40_000_000, null); + expect(progressbar.query()).toBeNull(); + }); + it("removes an owned damaged runtime only after confirmation", async () => { setup.auth = authState({ phase: "idle", flowId: null, authorizationUrl: null }); setup.installation = { diff --git a/apps/web/src/components/settings/ProviderSetupSection.tsx b/apps/web/src/components/settings/ProviderSetupSection.tsx index 5d12c0faa62e..e8eb5480f254 100644 --- a/apps/web/src/components/settings/ProviderSetupSection.tsx +++ b/apps/web/src/components/settings/ProviderSetupSection.tsx @@ -216,21 +216,15 @@ function ProviderSetupActions({ {installation?.phase === "downloading" && installation.totalBytes !== null && installation.totalBytes > 0 ? ( -
-
-
+ // Forced-colors mode paints every background Canvas, so the + // native widget (which uses system colors) is the only fill + // that stays visible there. + className="block h-1 w-full appearance-none overflow-hidden rounded-full bg-muted forced-colors:appearance-auto [&::-moz-progress-bar]:rounded-full [&::-moz-progress-bar]:bg-primary [&::-webkit-progress-bar]:rounded-full [&::-webkit-progress-bar]:bg-muted [&::-webkit-progress-value]:rounded-full [&::-webkit-progress-value]:bg-primary" + value={installation.downloadedBytes} + max={installation.totalBytes} + /> ) : null}
{!installActive && From 16f13d76c65a28e8e1e31da0de2dc8af9ae9670a Mon Sep 17 00:00:00 2001 From: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> Date: Mon, 19 Oct 2026 11:42:14 -0700 Subject: [PATCH 4/4] fix(web): the Antigravity download bar stays visible in forced-colors mode Forced-colors mode repaints the author track and fill as Canvas, and the appearance:auto fallback never reaches the native widget: Tailwind's preflight border reset marks every as author-styled, so Chromium keeps its fallback paint, and at this height the native widget shows no fill anyway. Paint the fill with the Highlight system color and give the track a border (forced to CanvasText) so both stay visible. Normal appearance is unchanged. Co-Authored-By: Claude Fable 5.1 --- .../web/src/components/settings/ProviderSetupSection.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/web/src/components/settings/ProviderSetupSection.tsx b/apps/web/src/components/settings/ProviderSetupSection.tsx index e8eb5480f254..7c405502a8c1 100644 --- a/apps/web/src/components/settings/ProviderSetupSection.tsx +++ b/apps/web/src/components/settings/ProviderSetupSection.tsx @@ -218,10 +218,11 @@ function ProviderSetupActions({ installation.totalBytes > 0 ? ( as author-styled, + // so Chromium keeps its fallback paint. Use system colors instead. + className="block h-1 w-full appearance-none overflow-hidden rounded-full bg-muted forced-colors:border [&::-moz-progress-bar]:rounded-full [&::-moz-progress-bar]:bg-primary forced-colors:[&::-moz-progress-bar]:bg-[Highlight] [&::-webkit-progress-bar]:rounded-full [&::-webkit-progress-bar]:bg-muted [&::-webkit-progress-value]:rounded-full [&::-webkit-progress-value]:bg-primary forced-colors:[&::-webkit-progress-value]:bg-[Highlight]" value={installation.downloadedBytes} max={installation.totalBytes} />