Route TUI /feedback submission through the app server (#16184)

The TUI’s `/feedback` flow was still uploading directly through the
local feedback crate, which bypassed app-server behavior such as
auth-derived feedback tags like chatgpt_user_id and made TUI feedback
handling diverge from other clients. It also meant that remove TUI
sessions failed to upload the correct feedback logs and session details.

Testing: Manually tested `/feedback` flow and confirmed that it didn't
regress.
This commit is contained in:
Eric Traut
2026-03-31 10:36:47 -06:00
committed by GitHub
Unverified
parent 03b2465591
commit f396454097
6 changed files with 531 additions and 159 deletions
-5
View File
@@ -10,7 +10,6 @@ use crate::app_event::ExitMode;
#[cfg(not(target_os = "linux"))]
use crate::app_event::RealtimeAudioDeviceKind;
use crate::app_event_sender::AppEventSender;
use crate::bottom_pane::FeedbackAudience;
use crate::bottom_pane::LocalImageAttachment;
use crate::bottom_pane::MentionBinding;
use crate::chatwidget::realtime::RealtimeConversationPhase;
@@ -2009,7 +2008,6 @@ async fn helpers_are_available_and_do_not_panic() {
model_catalog: test_model_catalog(&cfg),
feedback: codex_feedback::CodexFeedback::new(),
is_first_run: true,
feedback_audience: FeedbackAudience::External,
status_account_display: None,
initial_plan_type: None,
model: Some(resolved_model),
@@ -2183,7 +2181,6 @@ async fn make_chatwidget_manual(
turn_runtime_metrics: RuntimeMetricsSummary::default(),
last_rendered_width: std::cell::Cell::new(None),
feedback: codex_feedback::CodexFeedback::new(),
feedback_audience: FeedbackAudience::External,
current_rollout_path: None,
current_cwd: None,
session_network_proxy: None,
@@ -6952,7 +6949,6 @@ async fn collaboration_modes_defaults_to_code_on_startup() {
model_catalog: test_model_catalog(&cfg),
feedback: codex_feedback::CodexFeedback::new(),
is_first_run: true,
feedback_audience: FeedbackAudience::External,
status_account_display: None,
initial_plan_type: None,
model: Some(resolved_model.clone()),
@@ -6997,7 +6993,6 @@ async fn experimental_mode_plan_is_ignored_on_startup() {
model_catalog: test_model_catalog(&cfg),
feedback: codex_feedback::CodexFeedback::new(),
is_first_run: true,
feedback_audience: FeedbackAudience::External,
status_account_display: None,
initial_plan_type: None,
model: Some(resolved_model.clone()),