feat: simplify request column editor

This commit is contained in:
2026-07-07 11:43:31 +08:00
parent 16da64bc4c
commit f12f6de523
2 changed files with 296 additions and 157 deletions
+38 -17
View File
@@ -144,18 +144,20 @@ class CodexRetryGatewayTUITests(unittest.TestCase):
"error": "Selected model is at capacity. Please try a different model.",
"finished_at": "2026-06-30T12:25:00Z",
}
compact = mod.request_row_cells(row, {"req_id": 18, "resp_id": 18, "thread": 18, "path": 22, "model": 16, "usage": 24, "note": 22})
wide = mod.request_row_cells(row, {"req_id": 36, "resp_id": 36, "thread": 36, "path": 40, "model": 24, "usage": 72, "note": 48})
self.assertEqual(compact[11], "0B")
self.assertEqual(wide[11], "0B")
compact = mod.request_row_cells(row, {"req_id": 18, "resp_id": 18, "thread": 18, "path": 22, "model": 16, "note": 22})
wide = mod.request_row_cells(row, {"req_id": 36, "resp_id": 36, "thread": 36, "path": 40, "model": 24, "note": 48})
self.assertEqual(compact[13], "0B")
self.assertEqual(wide[13], "0B")
self.assertEqual(compact[8], "-")
self.assertEqual(compact[9], "516")
self.assertEqual(compact[10], "1.1K")
self.assertEqual(compact[11], "340")
self.assertEqual(compact[12], "128")
self.assertLess(len(compact[1]), len(wide[1]))
self.assertLess(len(compact[2]), len(wide[2]))
self.assertLess(len(compact[3]), len(wide[3]))
self.assertLess(len(compact[6]), len(wide[6]))
self.assertLess(len(compact[10]), len(wide[10]))
self.assertLess(len(compact[17]), len(wide[17]))
self.assertLess(len(compact[19]), len(wide[19]))
def test_request_row_cells_show_request_bytes(self) -> None:
mod = load_module()
@@ -190,9 +192,12 @@ class CodexRetryGatewayTUITests(unittest.TestCase):
self.assertEqual(cells[2], "resp_1")
self.assertEqual(cells[8], "xhigh")
self.assertEqual(cells[9], "7")
self.assertEqual(cells[11], "1.5KB")
self.assertEqual(cells[12], "4.1KB")
self.assertEqual(cells[17], "-")
self.assertEqual(cells[10], "15")
self.assertEqual(cells[11], "10")
self.assertEqual(cells[12], "5")
self.assertEqual(cells[13], "1.5KB")
self.assertEqual(cells[14], "4.1KB")
self.assertEqual(cells[19], "-")
def test_request_retry_note_only_shows_retry_reason(self) -> None:
mod = load_module()
@@ -253,12 +258,12 @@ class CodexRetryGatewayTUITests(unittest.TestCase):
self.assertIn("slot 1", mod.request_retry_wave_summary(row))
self.assertIn("retry round 3(2)", mod.render_request_detail(row))
self.assertIn("current wave slot 1 first 1.2s", mod.render_request_detail(row))
self.assertEqual(mod.request_row_cells(row)[18], "3(2)")
self.assertEqual(mod.request_row_cells(row)[20], "3(2)")
def test_request_table_preferences_round_trip(self) -> None:
mod = load_module()
with tempfile.TemporaryDirectory() as tmpdir:
prefs_path = Path(tmpdir) / "request-table.json"
prefs_path = Path(tmpdir) / "request-table-columns.txt"
with mock.patch.dict(
os.environ,
{"CODEX_RETRY_GATEWAY_TUI_REQUEST_TABLE_PREFERENCES_FILE": str(prefs_path)},
@@ -266,16 +271,32 @@ class CodexRetryGatewayTUITests(unittest.TestCase):
):
saved_path = mod.write_request_table_preferences(
{
"visible_columns": ["round", "seq", "status", "unknown"],
"sort_column": "round",
"sort_reverse": False,
"columns": ["round", "seq", "status", "unknown"],
"hidden_columns": ["status", "unknown"],
}
)
self.assertEqual(saved_path, prefs_path)
loaded = mod.load_request_table_preferences()
self.assertEqual(loaded["visible_columns"], ["seq", "status", "round"])
self.assertEqual(loaded["sort_column"], "round")
self.assertFalse(loaded["sort_reverse"])
self.assertEqual(loaded["columns"][:3], ["round", "seq", "status"])
self.assertEqual(loaded["hidden_columns"], ["status"])
def test_request_table_preferences_from_text_hides_and_reorders_columns(self) -> None:
mod = load_module()
prefs = mod.request_table_preferences_from_text(
"\n".join(
[
"# comment",
"thread",
"seq",
"# cache",
"in",
"out",
"",
]
)
)
self.assertEqual(prefs["columns"][:6], ["thread", "seq", "cache", "in", "out", "req_id"])
self.assertIn("cache", prefs["hidden_columns"])
def test_sort_request_rows_supports_custom_column_and_missing_values(self) -> None:
mod = load_module()