WIP: fixing regression
This commit is contained in:
+17
-45
@@ -1275,7 +1275,8 @@ def render_main_interface(app: App) -> None:
|
||||
app._render_window_if_open("Log Management", lambda: render_log_management(app))
|
||||
app._render_window_if_open("Diagnostics", lambda: render_diagnostics_panel(app))
|
||||
app._render_window_if_open("Context Preview", lambda: render_context_preview_window(app))
|
||||
app._render_window_if_open("Text Viewer", lambda: render_text_viewer_window(app))
|
||||
|
||||
render_text_viewer_window(app)
|
||||
|
||||
app.perf_monitor.end_frame()
|
||||
|
||||
@@ -1498,7 +1499,7 @@ def render_token_budget_panel(app: App) -> None:
|
||||
usage = app.session_usage
|
||||
total = usage["input_tokens"] + usage["output_tokens"]
|
||||
if total == 0 and usage.get("total_tokens", 0) > 0: total = usage["total_tokens"]
|
||||
render_selectable_label(app, "session_telemetry_tokens", f"Tokens: {total:,} (In: {usage['input_tokens']:,} Out: {usage['output_tokens']:,})", width=-1, color=C_RES)
|
||||
ui_shared.render_selectable_label(app, "session_telemetry_tokens", f"Tokens: {total:,} (In: {usage['input_tokens']:,} Out: {usage['output_tokens']:,})", width=-1, color=C_RES)
|
||||
if usage.get("last_latency", 0.0) > 0: imgui.text_colored(C_LBL, f" Last Latency: {usage['last_latency']:.2f}s")
|
||||
if usage["cache_read_input_tokens"]: imgui.text_colored(C_LBL, f" Cache Read: {usage['cache_read_input_tokens']:,} Creation: {usage['cache_creation_input_tokens']:,}")
|
||||
if app._gemini_cache_text: imgui.text_colored(C_SUB, app._gemini_cache_text)
|
||||
@@ -1555,13 +1556,13 @@ def render_token_budget_panel(app: App) -> None:
|
||||
tokens = in_t + out_t
|
||||
cost = cost_tracker.estimate_cost(model, in_t, out_t)
|
||||
imgui.table_next_row()
|
||||
imgui.table_set_column_index(0); render_selectable_label(app, f"tier_{tier}", tier, width=-1)
|
||||
imgui.table_set_column_index(1); render_selectable_label(app, f"model_{tier}", model.split("-")[0], width=-1)
|
||||
imgui.table_set_column_index(2); render_selectable_label(app, f"tokens_{tier}", f"{tokens:,}", width=-1)
|
||||
imgui.table_set_column_index(3); render_selectable_label(app, f"cost_{tier}", f"${cost:.4f}", width=-1, color=imgui.ImVec4(0.2, 0.9, 0.2, 1))
|
||||
imgui.table_set_column_index(0); ui_shared.render_selectable_label(app, f"tier_{tier}", tier, width=-1)
|
||||
imgui.table_set_column_index(1); ui_shared.render_selectable_label(app, f"model_{tier}", model.split("-")[0], width=-1)
|
||||
imgui.table_set_column_index(2); ui_shared.render_selectable_label(app, f"tokens_{tier}", f"{tokens:,}", width=-1)
|
||||
imgui.table_set_column_index(3); ui_shared.render_selectable_label(app, f"cost_{tier}", f"${cost:.4f}", width=-1, color=imgui.ImVec4(0.2, 0.9, 0.2, 1))
|
||||
imgui.end_table()
|
||||
tier_total = sum(cost_tracker.estimate_cost(stats.get('model', ''), stats.get('input', 0), stats.get('output', 0)) for stats in app.mma_tier_usage.values())
|
||||
render_selectable_label(app, "session_total_cost", f"Session Total: ${tier_total:.4f}", width=-1, color=imgui.ImVec4(0, 1, 0, 1))
|
||||
ui_shared.render_selectable_label(app, "session_total_cost", f"Session Total: ${tier_total:.4f}", width=-1, color=imgui.ImVec4(0, 1, 0, 1))
|
||||
else:
|
||||
imgui.text_disabled("No MMA tier usage data")
|
||||
if stats.get("would_trim"):
|
||||
@@ -2003,7 +2004,7 @@ def render_provider_panel(app: App) -> None:
|
||||
imgui.text("Gemini CLI")
|
||||
sid = "None"
|
||||
if hasattr(ai_client, "_gemini_cli_adapter") and ai_client._gemini_cli_adapter: sid = ai_client._gemini_cli_adapter.session_id or "None"
|
||||
imgui.text("Session ID:"); imgui.same_line(); render_selectable_label(app, "gemini_cli_sid", sid, width=200)
|
||||
imgui.text("Session ID:"); imgui.same_line(); ui_shared.render_selectable_label(app, "gemini_cli_sid", sid, width=200)
|
||||
if imgui.button("Reset CLI Session"): ai_client.reset_session()
|
||||
imgui.text("Binary Path")
|
||||
ch, app.ui_gemini_cli_path = imgui.input_text("##gcli_path", app.ui_gemini_cli_path)
|
||||
@@ -3130,7 +3131,7 @@ def render_thinking_trace(app: App, entry: dict, segments: list[dict], entry_ind
|
||||
else:
|
||||
imgui.text(content)
|
||||
else:
|
||||
render_selectable_label(app, f"think_text_{entry_index}_{idx}", content, multiline=True, height=-1)
|
||||
ui_shared.render_selectable_label(app, f"think_text_{entry_index}_{idx}", content, multiline=True, height=-1)
|
||||
imgui.separator()
|
||||
|
||||
def render_discussion_entry(app: App, entry: dict, index: int) -> None:
|
||||
@@ -3581,7 +3582,7 @@ def render_discussion_metadata(app: App) -> None:
|
||||
imgui.separator()
|
||||
|
||||
imgui.text_colored(C_LBL, "commit:"); imgui.same_line()
|
||||
render_selectable_label(app, 'git_commit_val', git_commit[:12] if git_commit else '(none)', width=100, color=(C_IN if git_commit else C_LBL))
|
||||
ui_shared.render_selectable_label(app, 'git_commit_val', git_commit[:12] if git_commit else '(none)', width=100, color=(C_IN if git_commit else C_LBL))
|
||||
imgui.same_line()
|
||||
if imgui.button("Update Commit"):
|
||||
if app.ui_project_git_dir:
|
||||
@@ -3881,12 +3882,12 @@ def render_tool_calls_panel(app: App) -> None:
|
||||
imgui.table_next_column()
|
||||
script_preview = script.replace("\n", " ")[:150]
|
||||
if len(script) > 150: script_preview += "..."
|
||||
render_selectable_label(app, f'tc_script_{i}', script_preview, width=-1)
|
||||
ui_shared.render_selectable_label(app, f'tc_script_{i}', script_preview, width=-1)
|
||||
|
||||
imgui.table_next_column()
|
||||
res_preview = res.replace("\n", " ")[:30]
|
||||
if len(res) > 30: res_preview += "..."
|
||||
render_selectable_label(app, f'tc_res_{i}', res_preview, width=-1)
|
||||
ui_shared.render_selectable_label(app, f'tc_res_{i}', res_preview, width=-1)
|
||||
|
||||
imgui.end_table()
|
||||
|
||||
@@ -4365,24 +4366,16 @@ def render_error_tint(app: App) -> None:
|
||||
imgui.text_colored(imgui.ImVec4(1, 0, 0, 1), "HOT RELOAD ERROR")
|
||||
imgui.text_wrapped(HotReloader.last_error or "Unknown error")
|
||||
|
||||
def render_text_viewer(app: App, label: str, content: str, text_type: str = 'text', force_open: bool = False, id_suffix: str = "") -> None:
|
||||
if imgui.button(f"[+]##{id_suffix or str(id(content))}") or force_open:
|
||||
app.text_viewer_type = text_type
|
||||
app.show_windows["Text Viewer"] = True
|
||||
app.text_viewer_title = label
|
||||
app.text_viewer_content = content
|
||||
app.show_windows["Text Viewer"] = True
|
||||
|
||||
def render_heavy_text(app: App, label: str, content: str, id_suffix: str = "") -> None:
|
||||
if imgui.button(f"[+]##{label}{id_suffix}"):
|
||||
app.show_windows["Text Viewer"] = True
|
||||
app.show_windows["Text Viewer"] = True
|
||||
app.text_viewer_type = 'markdown' if label in ('message', 'text', 'content', 'system') else 'json' if label in ('tool_calls', 'data') else 'powershell' if label == 'script' else 'text'
|
||||
app.text_viewer_title = label
|
||||
app.text_viewer_content = content
|
||||
app.show_windows["Text Viewer"] = True
|
||||
imgui.same_line()
|
||||
imgui.text_colored(C_LBL, f"{label}:"); imgui.same_line()
|
||||
render_selectable_label(app, f"heavy_label_{label}_{id_suffix}", content[:60].replace("\n", " ") + ("..." if len(content)>60 else ""), color=C_VAL)
|
||||
ui_shared.render_selectable_label(app, f"heavy_label_{label}_{id_suffix}", content[:60].replace("\n", " ") + ("..." if len(content)>60 else ""), color=C_VAL)
|
||||
|
||||
if content:
|
||||
ctx_id = f"{label}_{id_suffix}"
|
||||
@@ -4402,27 +4395,6 @@ def render_heavy_text(app: App, label: str, content: str, id_suffix: str = "") -
|
||||
imgui.end_child()
|
||||
|
||||
|
||||
def render_selectable_label(app: App, label: str, value: str, width: float = 0.0, multiline: bool = False, height: float = 0.0, color: Optional[imgui.ImVec4] = None) -> None:
|
||||
with imscope.id(label + str(hash(value))):
|
||||
with imscope.style_color(imgui.Col_.frame_bg, vec4(0, 0, 0, 0)), \
|
||||
imscope.style_color(imgui.Col_.frame_bg_hovered, vec4(0, 0, 0, 0)), \
|
||||
imscope.style_color(imgui.Col_.frame_bg_active, vec4(0, 0, 0, 0)), \
|
||||
imscope.style_color(imgui.Col_.border, vec4(0, 0, 0, 0)):
|
||||
with imscope.style_var(imgui.StyleVar_.frame_border_size, 0.0), \
|
||||
imscope.style_var(imgui.StyleVar_.frame_padding, imgui.ImVec2(0, 0)):
|
||||
if color:
|
||||
with imscope.style_color(imgui.Col_.text, color):
|
||||
if multiline:
|
||||
imgui.input_text_multiline("##" + label, value, imgui.ImVec2(width, height), imgui.InputTextFlags_.read_only)
|
||||
else:
|
||||
if width > 0: imgui.set_next_item_width(width)
|
||||
imgui.input_text("##" + label, value, imgui.InputTextFlags_.read_only)
|
||||
else:
|
||||
if multiline:
|
||||
imgui.input_text_multiline("##" + label, value, imgui.ImVec2(width, height), imgui.InputTextFlags_.read_only)
|
||||
else:
|
||||
if width > 0: imgui.set_next_item_width(width)
|
||||
imgui.input_text("##" + label, value, imgui.InputTextFlags_.read_only)
|
||||
|
||||
#endregion: Misc Tools
|
||||
|
||||
@@ -4741,7 +4713,7 @@ def render_tier_stream_panel(app: App, tier_key: str, stream_key: str | None) ->
|
||||
if stream_key is not None:
|
||||
content = app.mma_streams.get(stream_key, "")
|
||||
imgui.begin_child(f"##stream_content_{tier_key}", imgui.ImVec2(-1, -1))
|
||||
render_selectable_label(app, f'stream_{tier_key}', content, width=-1, multiline=True, height=0)
|
||||
ui_shared.render_selectable_label(app, f'stream_{tier_key}', content, width=-1, multiline=True, height=0)
|
||||
try:
|
||||
if len(content) != app._tier_stream_last_len.get(stream_key, -1):
|
||||
imgui.set_scroll_here_y(1.0)
|
||||
@@ -4768,7 +4740,7 @@ def render_tier_stream_panel(app: App, tier_key: str, stream_key: str | None) ->
|
||||
else:
|
||||
imgui.text(f"{ticket_id} [{status}]")
|
||||
imgui.begin_child(f"##tier3_{ticket_id}_scroll", imgui.ImVec2(-1, 150), True)
|
||||
render_selectable_label(app, f'stream_t3_{ticket_id}', app.mma_streams[key], width=-1, multiline=True, height=0)
|
||||
ui_shared.render_selectable_label(app, f'stream_t3_{ticket_id}', app.mma_streams[key], width=-1, multiline=True, height=0)
|
||||
try:
|
||||
if len(app.mma_streams[key]) != app._tier_stream_last_len.get(key, -1):
|
||||
imgui.set_scroll_here_y(1.0)
|
||||
|
||||
Reference in New Issue
Block a user