* feat: focus and keyboard navigation improvements [INS-2552]
Make common create/edit flows land the cursor where you'd start typing,
and let the navigation sidebar expand/collapse folders with the arrow keys.
- New request focuses the URL bar
- Adding a query param / header focuses the new row's Name cell
- Opening the KV environment editor focuses the trailing blank row's Name
- Create/rename/settings dialogs focus the Name field
- Sidebar Left/Right arrows collapse/expand the focused folder
- Cmd/Ctrl-N creates the request inside the selected folder
OneLineEditor gains autoFocus/onAutoFocus. The editor focus is deferred a
frame so it wins against React Aria ListBox focus restoration, and the
"new request" signal is module-level (read in render, cleared on focus) to
stay correct under React StrictMode double-mounting.
Adds focus-and-keyboard smoke tests to guard against regressions.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix: make autofocus survive React Aria ListBox focus restoration [INS-2552]
The param/header/environment grids wrap their inputs in a React Aria
ListBox, which restores DOM focus to the row right after the editor focuses
itself. A single deferred focus won this race locally but lost on slower
headless CI, so the grid/env focus smoke tests flaked.
Re-assert focus across a short bounded window (rAF, up to 500ms), re-grabbing
only when focus was bounced to a non-editable element (the row) and never when
the user moved to another field, until the editor holds focus or the window
elapses.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor: key grid autofocus off the new pair id, not a shared flag [INS-2552]
The previous module-level boolean was shared across every KeyValueEditor
instance, so a concurrently mounting/remounting grid could consume it and
focus an unrelated row. Store the specific new pair's id instead (it survives
the async save and the remount) so only the newly added row can autofocus,
and clear it once that exact row focuses.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Fix test
* Fix test
* Fix test
* Fix tests
* Typo
* Fix tests
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat: add native git credential provider and update related components
- Introduced a new NativeGitCredential type to support system git credential manager.
- Updated GitCredentials model to include native provider type.
- Implemented NativeProvider class to handle authentication via OS git credential manager.
- Refactored git service and utils to accommodate new repoPath parameter for native credentials.
- Enhanced UI components to support native credential setup and display.
- Updated migrations to ensure native credential singleton exists on startup.
- Adjusted various components to handle optional chaining for author fields.
* feat: enhance git credential migration and improve native provider path handling
* fixup: address feedback
* fix spawn error pipe on windows
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* refactor: update import path for GitCredentials type in NativeProvider
* feat: update project page to explicitly select custom Git credentials during project creation
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* feat: enhance workspace modal to allow manual file name editing
* feat: populate file name field from workspace meta when gitFilePath is not provided
* Fix after rebase
* fix: improve OneLineEditor initialization and resize handling
* fix: track editor version in OneLineEditor for re-initialization effects
* fix: prevent editor initialization if container width is zero
* feat: add local filtering in organization select
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: empty message if no orgs match filter
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>