Skip to content

fix: prevent double devbox creation when pressing Enter in interactive form#173

Merged
jrvb-rl merged 1 commit intomainfrom
jrvb/fix-double-devbox-create
Mar 17, 2026
Merged

fix: prevent double devbox creation when pressing Enter in interactive form#173
jrvb-rl merged 1 commit intomainfrom
jrvb/fix-double-devbox-create

Conversation

@jrvb-rl
Copy link
Copy Markdown
Contributor

@jrvb-rl jrvb-rl commented Mar 16, 2026

The DevboxCreatePage had two overlapping Enter key handlers that both
called handleCreate(): the FormTextInput's onSubmit prop and a global
catch-all in the parent useInput handler. Since ink doesn't stop event
propagation between useInput hooks, pressing Enter on any text field
fired both handlers, creating two devboxes.

Replaced the global catch-all with a specific handler for the create
button field, and removed onSubmit from text inputs. Now only the
create button and Ctrl+S trigger devbox creation, while each special
field (metadata, gateways, etc.) retains its own Enter handler.

Bonus: Fixed some unrelated build errors.

@jrvb-rl jrvb-rl requested review from james-rl and ross-rl March 16, 2026 20:50
Copy link
Copy Markdown
Contributor

@james-rl james-rl left a comment

Choose a reason for hiding this comment

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

This fix looks ok and it's best to land it. That said, I think it's somewhat atypical to have forms use a global handler instead of their own delegate function.

More detail in comments.

Comment thread src/components/DevboxCreatePage.tsx
@jrvb-rl jrvb-rl force-pushed the jrvb/fix-double-devbox-create branch from c81aa12 to 904c004 Compare March 17, 2026 06:14
…e form

The DevboxCreatePage had two overlapping Enter key handlers that both
called handleCreate(): the FormTextInput's onSubmit prop and a global
catch-all in the parent useInput handler. Since ink doesn't stop event
propagation between useInput hooks, pressing Enter on any text field
fired both handlers, creating two devboxes.

Replaced the global catch-all with a specific handler for the create
button field, and removed onSubmit from text inputs. Now only the
create button and Ctrl+S trigger devbox creation, while each special
field (metadata, gateways, etc.) retains its own Enter handler.

Bonus: Fixed some unrelated build errors.
@jrvb-rl jrvb-rl force-pushed the jrvb/fix-double-devbox-create branch from 904c004 to dda69f0 Compare March 17, 2026 06:27
@jrvb-rl jrvb-rl merged commit 23f8a28 into main Mar 17, 2026
15 checks passed
@jrvb-rl jrvb-rl deleted the jrvb/fix-double-devbox-create branch March 17, 2026 06:29
dines-rl pushed a commit that referenced this pull request Mar 25, 2026
🤖 I have created a release *beep* *boop*
---


##
[1.14.0](v1.13.3...v1.14.0)
(2026-03-25)


### Features

* add 'logs' command to download info from devboxes
([#164](#164))
([d5354be](d5354be))
* use total_count field from Pagination API response
([#175](#175))
([4e84f30](4e84f30))


### Bug Fixes

* **benchmark:** fix benchmark id when creating job with benchmark
([#170](#170))
([2c73cba](2c73cba))
* bmj list now counts finished scenarios from in-progress runs
([#168](#168))
([123f1d4](123f1d4))
* **cli:** show failure reason when benchmark job fails with no outcomes
([#182](#182))
([817b5cd](817b5cd))
* **cli:** use allSettled() instead of all() so one bad download doesn't
spoil the barrel
([#178](#178))
([8f4145a](8f4145a))
* don't reset TUI menu cursor on back
([#181](#181))
([6cc35a7](6cc35a7))
* eliminate flicker in bmj watch and show job elapsed time
([#167](#167))
([9b1deed](9b1deed))
* prevent double devbox creation when pressing Enter in interactive form
([#173](#173))
([23f8a28](23f8a28))
* scenarios sometimes listed as in progress after bmj completes
([#174](#174))
([78f8f55](78f8f55))
* update broken tests
([#169](#169))
([d8b35a2](d8b35a2))


### Performance Improvements

* **cli:** parallelize scenario log downloads with max concurrency of 50
([#176](#176))
([a5828a2](a5828a2))
* **cli:** parallelize scenario run fetching and name resolution in bmj
logs ([#179](#179))
([227d0fd](227d0fd))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants