pingdotgg / pingdotgg/t3code

[Bug]: Saving a keybinding discards other unsaved keybinding edits

Open
#11,108 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
23k
Forks
5.9k
Avg merge
11h 14m
Merged PRs (30d)
357

Description

Before submitting

  • I searched existing issues and did not find a duplicate standalone issue.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/web

Steps to reproduce

  1. Open Settings → Keybindings.
  2. Edit the shortcuts or When conditions of several existing bindings without saving.
  3. Save one edited binding.
  4. Observe that other unsaved edits revert to their saved values.

Which edits disappear depends on the bindings' order in the saved configuration. No particular shortcuts or search filter are required.

Expected behavior

Saving one binding preserves every other binding's unsaved edits. The order in which bindings are saved should not matter.

Actual behavior

Other edited rows revert to their saved values, discarding their unsaved changes. Users must re-enter those edits when configuring several bindings together.

Impact

Minor bug or occasional failure

Version or commit

Reproduced against d29c56a5c.

Environment

Reproduced in Chrome using the web client from vp run dev with an isolated checkout and disposable settings. This editor is shared by web and desktop.

The recording host currently reports macOS 26.5.2 and Chrome 153.0.8010.36; versions were checked during this draft review.

Supporting evidence

Saving replaces a binding by removing its old entry and appending the new one. Settings row IDs include each binding's array index, so unchanged siblings receive new IDs when their positions shift. React recreates those rows and their local draft state.

https://github.com/user-attachments/assets/9473e0db-0c90-4825-a7a9-4113704d99f2

Related: https://github.com/pingdotgg/t3code/pull/4366 describes the same behavior. It was closed without merging.

Workaround

Edit and save one binding at a time.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in the apps/web keybindings settings UI and reproduce the issue with vp run dev in Chrome, editing several rows before saving one. Inspect the React row identity and draft-state behavior described in the report; done means saving one binding preserves every other unsaved shortcut or When-condition edit regardless of row order.

Written by the indexing model from the issue text.

Assessment

Tech stack
react, typescript
Domain
frontend, web-dev
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.