Skip to content

Codex/tui panels v1 - #1

Merged
p-changki merged 8 commits into
devfrom
codex/tui-panels-v1
Feb 19, 2026
Merged

p-changki merged 8 commits into
devfrom
codex/tui-panels-v1

Conversation

@p-changki

@p-changki p-changki commented Feb 19, 2026 •

Copy link
Copy Markdown
Owner

Issue for this PR

Closes #

Type of change

  • Bug fix
  • New feature
  • Refactor / code improvement
  • Documentation

What does this PR do?

Please provide a description of the issue, the changes you made to fix it, and why they work. It is expected that you understand why your changes work and if you do not understand why at least say as much so a maintainer knows how much to value the PR.

If you paste a large clearly AI generated description here your PR may be IGNORED or CLOSED!

How did you verify your code works?

Screenshots / recordings

If this is a UI change, please include a screenshot or recording.

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

If you do not follow this template your PR will be automatically rejected.


Note

Medium Risk
Touches core session TUI layout, input handling, and persists new KV state for panel widths/visibility; main risk is UI regressions on narrow/wide terminals and keybinding conflicts rather than data/security issues.

Overview
Adds a new left sidebar to the session TUI showing branch modified files and an inline diff preview, and upgrades the existing sidebar into a resizable right panel with optional progress/observability metrics (tool call status, file reads, agents, warnings).

Introduces panel layout management in Session: independent left/right visibility, persisted widths with min/max clamping, narrow-screen overlay behavior, and a panel resize mode (plus presets) exposed via command palette and new keybinds. Also simplifies todowrite rendering to a single inline status and updates permission prompt UI copy/structure (largely Korean localization).

Written by Cursor Bugbot for commit eda357a. This will update automatically on new commits. Configure here.

@github-actions

Copy link
Copy Markdown

This PR doesn't fully meet our contributing guidelines and PR template.

What needs to be fixed:

  • No "Type of change" checkbox is checked. Please select at least one.
  • No issue referenced. Please add Closes #<number> linking to the relevant issue.
  • "How did you verify your code works?" section is empty. Please explain how you tested.
  • Not all checklist items are checked. Please confirm you have tested locally and have not included unrelated changes.

Please edit this PR description to address the above within 2 hours, or it will be automatically closed.

If you believe this was flagged incorrectly, please let a maintainer know.

@github-actions

Copy link
Copy Markdown

Hey! Your PR title Codex/tui panels v1 doesn't follow conventional commit format.

Please update it to start with one of:

  • feat: or feat(scope): new feature
  • fix: or fix(scope): bug fix
  • docs: or docs(scope): documentation changes
  • chore: or chore(scope): maintenance tasks
  • refactor: or refactor(scope): code refactoring
  • test: or test(scope): adding or updating tests

Where scope is the package name (e.g., app, desktop, opencode).

See CONTRIBUTING.md for details.

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

Copy link
Copy Markdown

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: 2c78df9c91

ℹ️ 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".

</Match>
</Switch>
}
options={{ once: "한 번 허용", always: "항상 허용", reject: "거부" }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Keep permission actions in the configured locale

PermissionPrompt now hardcodes Korean labels for the main allow/reject flow (for example the option text on the permission dialog), but this component still has no locale switch or translation lookup. In environments that currently run the default English UI, users can no longer reliably interpret the security-critical choices (allow once/always/reject), which increases the chance of approving or denying the wrong permission.

Useful? React with 👍 / 👎.

@p-changki
p-changki merged commit 31165ee into dev Feb 19, 2026
6 of 9 checks passed

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

This is the final PR Bugbot will review for you during this billing cycle

Your free Bugbot reviews will reset on March 20

Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

</Match>
</Switch>
}
options={{ once: "한 번 허용", always: "항상 허용", reject: "거부" }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Korean text replaces existing English UI strings

High Severity

All previously English UI strings in permission.tsx and sidebar.tsx have been replaced with Korean text, and new UI elements in index.tsx and left-sidebar.tsx also use Korean. The permission approval buttons — previously "Allow once", "Allow always", "Reject" — are now "한 번 허용", "항상 허용", "거부". This PR is about TUI panels, not localization, so these language changes appear to have been accidentally bundled in, rendering the UI in Korean for all non-Korean-speaking users.

Additional Locations (2)

Fix in Cursor Fix in Web

return () => {
cancelled = true
}
})

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Reactive signal self-cancels async git diff load

Medium Severity

The createEffect at line 104 reads gitDiffLoaded() as a reactive dependency, then immediately calls setGitDiffLoaded(...) inside the same effect body. In SolidJS, writing a tracked signal schedules the effect to re-run after the current body finishes — executing the cleanup (cancelled = true) before the spawned git diff processes can resolve their awaits. Every async load attempt is thus self-cancelled, so gitDiffCache is never populated and the diff preview always falls through to the "표시할 패치 본문이 없습니다" fallback for any file that lacks a toolDiffByFile entry. The fix is to read gitDiffLoaded() via untrack(...), or use a non-reactive (plain) data structure to track which files have been fetched.

Fix in Cursor Fix in Web

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.

1 participant