-
Notifications
You must be signed in to change notification settings - Fork 322
Permalink
Choose a base ref
{{ refName }}
default
Choose a head ref
{{ refName }}
default
Comparing changes
Choose two branches to see what’s changed or to start a new pull request.
If you need to, you can also or
learn more about diff comparisons.
Open a pull request
Create a new pull request by comparing changes across two branches. If you need to, you can also .
Learn more about diff comparisons here.
base repository: PowerShell/PSReadLine
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 26c25ae
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
...
head repository: PowerShell/PSReadLine
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: b5aac30
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
- 9 commits
- 26 files changed
- 2 contributors
Commits on Jul 23, 2025
-
Configuration menu - View commit details
-
Copy full SHA for ceaad10 - Browse repository at this point
Copy the full SHA ceaad10View commit details
Commits on Aug 27, 2025
-
Fix ellipsis / continuation character encoding issue in tests
This character was always meant to be an ellipsis. I'm unsure exactly why Visual Studio interprets it so, but VS Code and GitHub do not. This commit replaces it with the actual Unicode character which ensures the tests continue to pass when these files are edited and saved in VS Code.
Configuration menu - View commit details
-
Copy full SHA for 4907116 - Browse repository at this point
Copy the full SHA 4907116View commit details -
Improve
IsScreenReaderActive()This supports checking for the built-in screen readers VoiceOver on macOS and Windows Narrator, as well as the popular open-source option, NVDA. The VoiceOver check spawns a quick `defaults` process since in .NET using the macOS events is difficult, but this is quick and easy. The Windows Narrator check inspects a system mutex. Notably though this screen reader handles re-rendering better than others. The check for NVDA et. al. inspects the system parameter information. While this approach is known to be buggy, the preferable and commonly used algorithm (as implemented by Electron) which checks for loaded libraries was tested and found to be unsupported for a non-windowed program like PowerShell. It's unknown if the SPI check will detect JAWS, Window-Eyes, or ZoomText, so a command-line option for the upcoming screen reader mode should also be provided. Linux is not yet supported.
Configuration menu - View commit details
-
Copy full SHA for 5e72587 - Browse repository at this point
Copy the full SHA 5e72587View commit details -
Fix hard-coded continuation prompt in tests
These tests were using a hard-coded continuation prompt (and its length) which blocks tests for the upcoming screen reader mode. This is also simply a reasonable refactor, thanks Claude (for trying).
Configuration menu - View commit details
-
Copy full SHA for 7a5826b - Browse repository at this point
Copy the full SHA 7a5826bView commit details
Commits on Aug 28, 2025
-
Add accessible screen reader mode
This adds the `EnableScreenReaderMode` command-line switch which defaults to true if an active screen reader is detected. In screen reader mode, the existing `ForceRender()` function is replaced by `RenderForScreenReader()` which uses a differential rendering approach to minimize extraneous output to the terminal, allowing the use of screen readers better than ever before. The differential rendering relies on calculating the common prefix of the `buffer` and `previousRender` strings. Nearly all necessary changes are consolidated in the new rendering function. Features known not to be supported: * Colors: as this necessitates redrawing to insert color sequences after the input is received and the AST parsed. * Inline predictions: as this by definition changes the suffix and thus requires endless redrawing. * List view predictions: since the render implementation never calls into the prediction engine, this is not available either. * Menu completion: well, it "works" since it's not disabled and does its own rendering, but no effort has been made to improve `DrawMenu()`, so it's not accessible (and I'm not sure it could be given our current constraints). Features known to be partially supported: * Text selection: mark and select commands work as intended, but provide no visual indication. * Multiple lines: as in newlines work fine, but there is no continuation prompt. * Visually wrapped lines: editing above a wrapped line redraws all subsequent lines and hence is noisy. * Status prompt based commands: what-is-key, digit-argument, and most notably, forward/backward incremental history search all render a "status prompt" on the line below the user's input buffer. This _is_ supported; however, it can be noisy since it necessarily has to render the whole buffer when the input buffer changes, including the status prompt (and search text). But what it's reading is almost always going to be relevant. Everything else should generally work, even Vi mode, and the tests pass. That said, this isn't perfect, and moreover the approach specifically doesn't attempt to enable things from the ground up. There may be features that are available but turn out not to be accessible (like `MenuComplete`) and I believe they should be left as-is. Specifically tested with NVDA on Windows and VoiceOver on macOS within VS Code's integrated terminal, with shell integration loaded, and Code's screen reader optimizations enabled.
Configuration menu - View commit details
-
Copy full SHA for 7b6f602 - Browse repository at this point
Copy the full SHA 7b6f602View commit details -
Add fixture to enable existing tests for screen reader mode
Tests that depend on supported features such as menu completions, list view, inline predictions, continuation prompt, and colors are skipped. The "helper" module for running tests from the command-line and in AppVeyor is minimally updated to not skip the new fixture. A `BlankRestOfBuffer()` function implements the semantics of the `0J` control sequence in the mock console.
Configuration menu - View commit details
-
Copy full SHA for 06e3b4b - Browse repository at this point
Copy the full SHA 06e3b4bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4e2cb60 - Browse repository at this point
Copy the full SHA 4e2cb60View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1cdbf46 - Browse repository at this point
Copy the full SHA 1cdbf46View commit details -
Configuration menu - View commit details
-
Copy full SHA for b5aac30 - Browse repository at this point
Copy the full SHA b5aac30View commit details
Loading
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff 26c25ae...b5aac30