Skip to content

[CODE-1813] Show TUI settings load failures - #14545

Merged
harryalbert merged 1 commit into
masterfrom
factory/settings-load-failure-hint
Jul 30, 2026
Merged

[CODE-1813] Show TUI settings load failures#14545
harryalbert merged 1 commit into
masterfrom
factory/settings-load-failure-hint

Conversation

@warp-agent-staging

@warp-agent-staging warp-agent-staging Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Description

Surface TUI settings-file load failures in the existing transient footer error slot.

  • Show a concise error when startup settings fail to parse or validate.
  • Show the same transient feedback when settings hot-reload fails.
  • Keep detailed diagnostics in logs and leave the GUI settings banner unchanged.

Originating thread: https://warpdev.slack.com/archives/C0BDQDW8V5E/p1785431633065469
Agent conversation: https://staging.warp.dev/conversation/d663bd68-97e2-4f66-8039-2968eb5862b8
Agent run: https://oz.staging.warp.dev/runs/019fb40d-d546-7444-8b05-0f74a027cb4d

Linked Issue

https://linear.app/warpdotdev/issue/CODE-1813/ui-for-settings-load-failures

  • The linked issue is approved for implementation via triage-done with spec_skipped: true.
  • Rendered TUI view-test coverage is included for both startup and reload failures.

Testing

  • ./script/format — passed.

  • Focused warp_tui regression tests — 2 passed.

  • env -u WARP_API_KEY cargo nextest run -p warp_tui — 868 passed.

  • CARGO_BUILD_JOBS=2 cargo build -p warp_tui --bin warp-tui-oss — passed.

  • ./script/presubmit — formatting, inline-test checks, Clippy, clang-format, and wgslfmt passed; the workspace test compilation then stopped because the remote sandbox exhausted its filesystem quota (No space left on device). A retry hit the same environment limit.

  • Live PTY launch reached the terminal session startup path, but did not produce a stable footer capture before the transient hint expired; the regression tests exercise the rendered footer text and error styling directly.

  • I have manually tested my changes locally with ./script/run

Screenshots / Videos

Not attached: this is a headless TUI surface. The added view tests render the transient footer and assert its text and error tone.

Agent Mode

  • Warp Agent Mode - This PR was created via Warp's AI Agent Mode

CHANGELOG-BUG-FIX: Fixed Warp's terminal UI not reporting settings file load failures.

Co-Authored-By: Warp agent@warp.dev
Co-Authored-By: Oz oz-agent@warp.dev

Co-Authored-By: Warp <agent@warp.dev>
Co-Authored-By: Oz <oz-agent@warp.dev>
@cla-bot cla-bot Bot added the cla-signed label Jul 30, 2026
@warp-agent-staging
warp-agent-staging Bot requested a review from harryalbert July 30, 2026 18:14
@warp-agent-staging
warp-agent-staging Bot marked this pull request as ready for review July 30, 2026 18:15
@harryalbert
harryalbert merged commit 73529d1 into master Jul 30, 2026
49 checks passed
@harryalbert
harryalbert deleted the factory/settings-load-failure-hint branch July 30, 2026 20:02
jwp2987 pushed a commit to jwp2987/phosphor that referenced this pull request Aug 16, 2026
Ports upstream `73529d1d6` ("[CODE-1813] Show TUI settings load failures",
warpdotdev#14545) at the new pin `42effe840`.

A `settings.toml` that fails to parse, or that parses but carries values
the settings types reject, previously produced no TUI-visible signal at
all. Now both the startup failure and a failed hot-reload land in the
existing transient footer error slot, alongside the zero-state ASCII load
failure that already used it:

- `SETTINGS_PARSE_FAILED_HINT` / `SETTINGS_INVALID_VALUES_HINT`, selected
  by `settings_file_error_hint`.
- `TuiTerminalSessionView::new` takes `initial_settings_file_error`, and
  `TuiSessions::create_local_terminal_session_with_env` reads it from
  `GlobalResourceHandlesProvider` for the *first* session only.
- The view subscribes to `WarpConfigUpdateEvent::SettingsErrors` for the
  reload case.
- `GlobalResourceHandlesProvider`, `WarpConfig` and `WarpConfigUpdateEvent`
  are exported through `tui_export`.

Adapted: this fork's `settings::init` had never carried the pin's
settings-failure logging block at all, so the commit's comment-only edit
to it becomes an addition of the block itself, with the new wording. That
keeps the full detail (the parse error, or the list of rejected keys) in
the log while the footer shows only the one-line summary, which is the
split the commit is built around.

`add_test_terminal_session` grows a
`_with_settings_file_error` sibling so the startup-failure test can
construct a session that already knows about the failure; the existing
helper delegates with `None`.

NOTE: nothing in this commit was compile-verified.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VNUMjBVuwvEnRSgaawUCR3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants