+
{stage.status === "PASS" ? index + 1 : }
diff --git a/apps/studio/src/index.css b/apps/studio/src/index.css
index 21281c5f..2ec38f95 100644
--- a/apps/studio/src/index.css
+++ b/apps/studio/src/index.css
@@ -6006,7 +6006,7 @@ footer span:first-child {
padding-bottom: 0;
}
-.preflight-stage > span {
+.preflight-stage-index {
display: grid;
width: 22px;
height: 22px;
@@ -6018,7 +6018,7 @@ footer span:first-child {
font-size: 12px;
}
-.preflight-stage > span.is-blocked {
+.preflight-stage-index.is-blocked {
border-color: rgba(213, 161, 110, 0.18);
color: #d5a16e;
}
diff --git a/apps/studio/src/lib/preflight-stage-index.test.ts b/apps/studio/src/lib/preflight-stage-index.test.ts
new file mode 100644
index 00000000..94847a64
--- /dev/null
+++ b/apps/studio/src/lib/preflight-stage-index.test.ts
@@ -0,0 +1,21 @@
+import { readFileSync } from "node:fs";
+import { dirname, join } from "node:path";
+import { fileURLToPath } from "node:url";
+import { describe, expect, it } from "vitest";
+
+const studioRoot = join(dirname(fileURLToPath(import.meta.url)), "..");
+
+describe("preflight stage index circle", () => {
+ it("scopes the 22px circle to the step index, not every child span", () => {
+ const css = readFileSync(join(studioRoot, "index.css"), "utf8");
+ expect(css).toContain(".preflight-stage-index {");
+ expect(css).toContain("width: 22px;");
+ expect(css).not.toMatch(/\.preflight-stage\s*>\s*span\s*\{/);
+ });
+
+ it("marks the step index with preflight-stage-index so Badge stays a pill", () => {
+ const app = readFileSync(join(studioRoot, "App.tsx"), "utf8");
+ expect(app).toContain('className={stage.status === "PASS" ? "preflight-stage-index" : "preflight-stage-index is-blocked"}');
+ expect(app).toContain("");
+ });
+});
From 1678d677b6482b94738060e2479d7bf48bdcce33 Mon Sep 17 00:00:00 2001
From: RainMona <316033127+RainMona@users.noreply.github.com>
Date: Thu, 20 Aug 2026 02:24:23 +0000
Subject: [PATCH 3/3] Let Preflight post-fee upper bound show its full name.
Issue #40: the current-snapshot fact labels used nowrap + ellipsis on
three equal columns, so POST-FEE UPPER BOUND became POST-FEE UPPER
BO... next to a 0.0000. Labels wrap; values can still ellipsize.
(cherry picked from commit 3388db82bf17569d2d8cd4f17460d5105ec6a2bf)
---
apps/studio/src/index.css | 8 ++++---
.../lib/preflight-disposition-facts.test.ts | 24 +++++++++++++++++++
2 files changed, 29 insertions(+), 3 deletions(-)
create mode 100644 apps/studio/src/lib/preflight-disposition-facts.test.ts
diff --git a/apps/studio/src/index.css b/apps/studio/src/index.css
index 2ec38f95..837e171f 100644
--- a/apps/studio/src/index.css
+++ b/apps/studio/src/index.css
@@ -5506,22 +5506,24 @@ footer span:first-child {
.preflight-disposition-facts span,
.preflight-disposition-facts strong {
display: block;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
}
.preflight-disposition-facts span {
color: #685c51;
font-size: 12px;
text-transform: uppercase;
+ overflow: visible;
+ white-space: normal;
}
.preflight-disposition-facts strong {
margin-top: 5px;
+ overflow: hidden;
color: #c28f62;
font-family: inherit;
font-size: 12px;
+ text-overflow: ellipsis;
+ white-space: nowrap;
}
.preflight-disposition > code {
diff --git a/apps/studio/src/lib/preflight-disposition-facts.test.ts b/apps/studio/src/lib/preflight-disposition-facts.test.ts
new file mode 100644
index 00000000..50b60f41
--- /dev/null
+++ b/apps/studio/src/lib/preflight-disposition-facts.test.ts
@@ -0,0 +1,24 @@
+import { readFileSync } from "node:fs";
+import { dirname, join } from "node:path";
+import { fileURLToPath } from "node:url";
+import { describe, expect, it } from "vitest";
+
+const studioRoot = join(dirname(fileURLToPath(import.meta.url)), "..");
+
+describe("preflight disposition fact labels", () => {
+ it("does not ellipsize POST-FEE UPPER BOUND", () => {
+ const css = readFileSync(join(studioRoot, "index.css"), "utf8");
+ const start = css.indexOf(".preflight-disposition-facts span {");
+ expect(start).toBeGreaterThan(-1);
+ const block = css.slice(start, css.indexOf("}", start) + 1);
+ expect(block).toContain("white-space: normal");
+ expect(block).not.toContain("ellipsis");
+ expect(block).not.toContain("nowrap");
+ });
+
+ it("keeps the Post-fee upper bound copy on the current-snapshot row", () => {
+ const app = readFileSync(join(studioRoot, "App.tsx"), "utf8");
+ expect(app).toContain("Post-fee upper bound");
+ expect(app).toContain("className=\"preflight-disposition-facts\"");
+ });
+});