Skip to content

[2 of 4] tui: route app and skill enablement through app server#22914

Merged
etraut-openai merged 5 commits into
mainfrom
etraut/tui-config-app-server-2-catalog-state
May 19, 2026
Merged

[2 of 4] tui: route app and skill enablement through app server#22914
etraut-openai merged 5 commits into
mainfrom
etraut/tui-config-app-server-2-catalog-state

Conversation

@etraut-openai
Copy link
Copy Markdown
Collaborator

@etraut-openai etraut-openai commented May 15, 2026

Why

App and skill toggles are user config mutations too. When the TUI is attached to a remote app server, writing those toggles into the local config.toml makes the UI report success without updating the server that actually owns the session.

This is [2 of 4] in a stacked series that moves TUI-owned config mutations onto app-server APIs.

What changed

  • Routed app enable/disable persistence through app-server config batch writes.
  • Routed skill enable/disable persistence through skills/config/write.
  • Avoided refreshing local config from disk after these writes when the TUI is connected to a remote app server.

Config keys affected

  • apps.<app_id>.enabled
  • apps.<app_id>.disabled_reason
  • [[skills.config]] entries keyed by path, with enabled = false used for persisted disables

Suggested manual validation

  • Connect the TUI to a remote app server, disable an app, reconnect, and confirm the app remains disabled from remote config rather than local disk state.
  • Re-enable the same app and confirm both apps.<app_id>.enabled and apps.<app_id>.disabled_reason are cleared remotely.
  • Disable a skill in the manage-skills UI and confirm a remote [[skills.config]] disable entry appears.
  • Re-enable that skill and confirm the disable entry is removed and the effective enabled state updates without relying on local config reloads.

Stack

  1. #22913 [1 of 4] primary settings writes
  2. #22914 [2 of 4] app and skill enablement
  3. #22915 [3 of 4] feature and memory toggles
  4. #22916 [4 of 4] startup and onboarding bookkeeping

@etraut-openai etraut-openai marked this pull request as ready for review May 15, 2026 22:40
etraut-openai added a commit that referenced this pull request May 15, 2026
etraut-openai added a commit that referenced this pull request May 15, 2026
@etraut-openai etraut-openai force-pushed the etraut/tui-config-app-server-2-catalog-state branch from ff17872 to 6a181fa Compare May 15, 2026 22:48
etraut-openai added a commit that referenced this pull request May 16, 2026
## Why
The TUI can run against a remote app server, but several high-traffic
settings still persisted by editing the local config file. That sends
remote sessions' preference writes to the wrong machine and lets local
disk state drift from the app-server-owned config.

This is **[1 of 4]** in a stacked series that moves TUI-owned config
mutations onto app-server APIs.

## What changed
- Added a small TUI helper for typed app-server config writes.
- Routed primary interactive preference writes through
`config/batchWrite`.
- Preserved existing profile scoping for settings that already support
`profiles.<profile>.*` overrides.

## Config keys affected
- `model`
- `model_reasoning_effort`
- `personality`
- `service_tier`
- `plan_mode_reasoning_effort`
- `approvals_reviewer`
- `notice.fast_default_opt_out`
- Profile-scoped equivalents under `profiles.<profile>.*`

## Suggested manual validation
- Connect the TUI to a remote app server, change `model` and
`model_reasoning_effort`, reconnect, and confirm the remote config
retained both values while the local `config.toml` did not change.
- Change `personality`, `plan_mode_reasoning_effort`, and the explicit
auto-review selection, then reconnect and confirm those choices persist
through the app server.
- Clear the service tier back to default and confirm `service_tier` is
cleared while `notice.fast_default_opt_out = true` is persisted
remotely.
- Repeat one setting change with an active profile and confirm the write
lands under `profiles.<profile>.*`.

## Stack
1. [#22913](#22913) `[1 of 4]`
primary settings writes
2. [#22914](#22914) `[2 of 4]` app
and skill enablement
3. [#22915](#22915) `[3 of 4]`
feature and memory toggles
4. [#22916](#22916) `[4 of 4]`
startup and onboarding bookkeeping
Base automatically changed from etraut/tui-config-app-server-1-settings to main May 16, 2026 21:27
@etraut-openai etraut-openai force-pushed the etraut/tui-config-app-server-2-catalog-state branch from df4e122 to fd994c7 Compare May 16, 2026 21:31
Copy link
Copy Markdown
Contributor

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fd994c7a16

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread codex-rs/tui/src/app/event_dispatch.rs Outdated
Copy link
Copy Markdown
Contributor

@fcoury-oai fcoury-oai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had an issue where I start an app-server, connect to it using a different $CODEX_HOME, disable GitHub then restart the client TUI and GitHub is re-enabled.

Disabled GitHub:

Image

Stopped only the client TUI, leaving the app-server running.

Then when I re-start and run /apps and go to GitHub and it shows as enabled:

Image

Copy link
Copy Markdown
Contributor

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 00c31b8f54

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread codex-rs/tui/src/app/background_requests.rs
Comment thread codex-rs/tui/src/app/background_requests.rs Outdated
Comment thread codex-rs/tui/src/app/event_dispatch.rs Outdated
Comment thread codex-rs/tui/src/app/background_requests.rs Outdated
Comment thread codex-rs/tui/src/app/background_requests.rs Outdated
Copy link
Copy Markdown
Contributor

@fcoury-oai fcoury-oai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-tested and everything works as expected now. Approved 👍

@etraut-openai etraut-openai merged commit ae10708 into main May 19, 2026
31 checks passed
@etraut-openai etraut-openai deleted the etraut/tui-config-app-server-2-catalog-state branch May 19, 2026 17:21
@github-actions github-actions Bot locked and limited conversation to collaborators May 19, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants