The CLI’s `RequestedVersion::Commit` parser rejected many valid commit hashes and allowed invalid ones due to an erroneous regular expression:
* **Old pattern:** `^[a-e0-f]{40}$`
* Allowed non-hex characters outside the `a–f` range
* Excluded the valid hex digit `f` and any uppercase letters
* **New pattern:** [(?i)^[0-9a-f]{40}$](cci:1://file:///d:/Github/vscode/cli/src/desktop/version_manager.rs:102:1-107:2)
* [(?i)](cci:1://file:///d:/Github/vscode/cli/src/desktop/version_manager.rs:102:1-107:2) enables case-insensitive matching (accepts `A–F`)
* Character class now correctly restricts input to hexadecimal digits `0-9` and `a-f`
* Ensures the string is exactly 40 characters, matching a valid SHA-1
#### Impact
`code version use <commit>` and related commands could silently fail or accept malformed commit IDs, leading to unexpected version resolution behavior.
With this fix, only valid 40-character hexadecimal commit hashes are accepted, restoring reliable version selection and preventing subtle bugs.
#### Notes
No API changes; the fix is a single-line update in [cli/src/desktop/version_manager.rs](cci:7://file:///d:/Github/vscode/cli/src/desktop/version_manager.rs:0:0-0:0).
* Initial plan for issue
* Fix down arrow navigation in last notebook cell to move cursor to end of line
Co-authored-by: Yoyokrazy <12552271+Yoyokrazy@users.noreply.github.com>
* Add test to validate cursor position logic for last cell arrow navigation
Co-authored-by: Yoyokrazy <12552271+Yoyokrazy@users.noreply.github.com>
* Fix notebook down arrow navigation logic to move cursor to end of line
Co-authored-by: Yoyokrazy <12552271+Yoyokrazy@users.noreply.github.com>
* Implement proper down arrow navigation logic based on feedback
- Check NOTEBOOK_EDITOR_CURSOR_LINE_BOUNDARY context key
- Only move to end of line when cursor boundary is 'start' or 'none'
- Use ICellViewModel's setSelections method for cursor positioning
- Apply logic to any cell on last line, not just last cell
- Preserve existing behavior for last cell navigation
Co-authored-by: Yoyokrazy <12552271+Yoyokrazy@users.noreply.github.com>
* holy overthinking copilot
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Yoyokrazy <12552271+Yoyokrazy@users.noreply.github.com>
Co-authored-by: Michael Lively <milively@microsoft.com>
* Refactor ChatEditingDocument and Cell Entries to reuse code
* Updates
* wip
* Updates
* Updates
* Address code review
* make test diffing a little more realistic
* * have one method that sets/resets the content of modified and orginal
* have the method also compute the edit object
* hence, remove `originalToCurrentEdit` from snapshot data
* same naming nit (keep over accept, undo over discard)
* Register disposables
* Avoid computing diff if disposed
* Fix leaks
---------
Co-authored-by: Johannes <johannes.rieken@gmail.com>
* Improve async nature of register/unregister auth providers
I noticed a race-condition or 2 with registering & unregistering auth providers. This change makes sure order is maintained dispite the async nature.
* real passing tests
* Try tracking disposable state
1. only do device code flow if the server supports it
2. fix route in loopback server where error cases were going to `/` which was a typo
3. fix port listening in loopback when default port is taken
4. some servers require registration to have scopes, so passed that through
5. some types clean up